@@ -47,6 +47,7 @@ const mock = vi.hoisted(() => {
4747 detachCloudSandbox : vi . fn ( ) ,
4848 onBrokerEvent : vi . fn ( )
4949 } ,
50+ isCommandAvailableWithAugmentedPath : vi . fn ( ) ,
5051 integrationsManager : {
5152 notifyAgentState : vi . fn ( async ( ) => undefined ) ,
5253 initialSpawnInstructions : vi . fn ( ) ,
@@ -105,7 +106,8 @@ vi.mock('./store', () => ({
105106} ) )
106107
107108vi . mock ( './broker' , ( ) => ( {
108- brokerManager : mock . brokerManager
109+ brokerManager : mock . brokerManager ,
110+ isCommandAvailableWithAugmentedPath : mock . isCommandAvailableWithAugmentedPath
109111} ) )
110112
111113vi . mock ( './git' , ( ) => ( {
@@ -208,10 +210,14 @@ describe('registerIpcHandlers broker:spawn-agent', () => {
208210} )
209211
210212describe ( 'registerIpcHandlers broker:list-personas' , ( ) => {
213+ = === ===
214+ describe ( 'registerIpcHandlers broker:check-cli-available' , ( ) => {
215+ > >>> >>> ed6285c ( chore : apply pr - reviewer fixes for #143 )
211216 beforeEach ( ( ) => {
212217 mock . handlers . clear ( )
213218 mock . ipcMain . handle . mockClear ( )
214219 mock . ipcMain . on . mockClear ( )
220+ << < < < << HEAD
215221 mock . brokerManager . listPersonas . mockReset ( )
216222 vi . mocked ( loadStore ) . mockReset ( )
217223 vi . mocked ( loadStore ) . mockReturnValue ( { projects : [ ] , activeProjectId : null } )
@@ -347,3 +353,34 @@ describe('registerIpcHandlers git:generate-commit-message', () => {
347353 expect ( mock . brokerManager . generateCommitDraft ) . not . toHaveBeenCalled ( )
348354 } )
349355} )
356+
357+ describe ( 'registerIpcHandlers broker:check-cli-available' , ( ) => {
358+ beforeEach ( ( ) => {
359+ mock . handlers . clear ( )
360+ mock . ipcMain . handle . mockClear ( )
361+ mock . ipcMain . on . mockClear ( )
362+ mock . isCommandAvailableWithAugmentedPath . mockReset ( )
363+ registerIpcHandlers ( )
364+ } )
365+
366+ it ( 'returns whether the requested CLI can be resolved' , ( ) => {
367+ const handler = mock . handlers . get ( 'broker:check-cli-available' )
368+ expect ( handler ) . toBeTypeOf ( 'function' )
369+ mock . isCommandAvailableWithAugmentedPath . mockReturnValueOnce ( true )
370+
371+ const result = handler ?.( { } , 'opencode' )
372+
373+ expect ( result ) . toBe ( true )
374+ expect ( mock . isCommandAvailableWithAugmentedPath ) . toHaveBeenCalledWith ( 'opencode' )
375+ } )
376+
377+ it ( 'rejects non-string CLI values' , ( ) => {
378+ const handler = mock . handlers . get ( 'broker:check-cli-available' )
379+ expect ( handler ) . toBeTypeOf ( 'function' )
380+
381+ const result = handler ?.( { } , null )
382+
383+ expect ( result ) . toBe ( false )
384+ expect ( mock . isCommandAvailableWithAugmentedPath ) . not . toHaveBeenCalled ( )
385+ } )
386+ } )
0 commit comments