@@ -31,7 +31,7 @@ import { opencodeServerManager, ConfigReloadError } from '../services/opencode-s
3131import { getOrCreateInternalToken , rotateInternalToken } from '../services/internal-token'
3232import { sseAggregator } from '../services/sse-aggregator'
3333import type { OpenCodeSupervisor } from '../services/opencode-supervisor'
34- import type { OpenCodeRestartCoordinator } from '../services/opencode-restart-coordinator '
34+ import { restartOpenCode , reloadOpenCodeConfig , getOpenCodeRestartCoordinator } from '../services/opencode-restart'
3535import type { GitAuthService } from '../services/git-auth'
3636import { DEFAULT_AGENTS_MD } from '../constants'
3737import { validateSSHPrivateKey } from '../utils/ssh-validation'
@@ -93,59 +93,6 @@ function getOpenCodeConfigContentToWrite(
9393 return JSON . stringify ( appliedConfig , null , 2 )
9494}
9595
96- async function reloadOpenCodeConfig ( openCodeSupervisor ?: OpenCodeSupervisor ) : Promise < void > {
97- if ( openCodeSupervisor ) {
98- await openCodeSupervisor . reloadConfig ( 'settings_reload' )
99- return
100- }
101-
102- await opencodeServerManager . reloadConfig ( )
103- }
104-
105- async function restartOpenCode ( openCodeSupervisor ?: OpenCodeSupervisor ) : Promise < void > {
106- if ( openCodeSupervisor ) {
107- await openCodeSupervisor . restart ( 'settings_restart' )
108- return
109- }
110-
111- opencodeServerManager . clearStartupError ( )
112- await opencodeServerManager . restart ( )
113- }
114-
115- async function restartOpenCodeWithResume (
116- supervisor : OpenCodeSupervisor | undefined ,
117- coordinator : OpenCodeRestartCoordinator | undefined ,
118- ) : Promise < { resumedSessionIDs : string [ ] } | null > {
119- if ( ! coordinator ) {
120- await restartOpenCode ( supervisor )
121- return null
122- }
123- const result = await coordinator . runWithResume ( async ( ) => {
124- if ( supervisor ) return ( await supervisor . restart ( 'settings_restart' ) ) . healthy
125- opencodeServerManager . clearStartupError ( )
126- await opencodeServerManager . restart ( )
127- return opencodeServerManager . checkHealth ( )
128- } )
129- return { resumedSessionIDs : result . resumedSessionIDs }
130- }
131-
132- async function reloadOpenCodeConfigWithResume (
133- supervisor : OpenCodeSupervisor | undefined ,
134- coordinator : OpenCodeRestartCoordinator | undefined ,
135- ) : Promise < { resumedSessionIDs : string [ ] } | null > {
136- if ( ! coordinator ) {
137- await reloadOpenCodeConfig ( supervisor )
138- return null
139- }
140- const result = await coordinator . runWithResume ( async ( ) => {
141- if ( supervisor ) return ( await supervisor . reloadConfig ( 'settings_reload' ) ) . healthy
142- opencodeServerManager . clearStartupError ( )
143- await opencodeServerManager . reloadConfig ( )
144- return opencodeServerManager . checkHealth ( )
145- } )
146- return { resumedSessionIDs : result . resumedSessionIDs }
147- }
148-
14996async function restartOpenCodeSafe ( openCodeSupervisor : OpenCodeSupervisor | undefined , context : string ) : Promise < void > {
15097 try {
15198 await restartOpenCode ( openCodeSupervisor )
@@ -401,7 +348,7 @@ async function extractOpenCodeError(response: Response, defaultError: string): P
401348 : defaultError
402349}
403350
404- export function createSettingsRoutes ( db : Database , gitAuthService : GitAuthService , openCodeClient : OpenCodeClient , openCodeSupervisor ?: OpenCodeSupervisor , openCodeRestartCoordinator ?: OpenCodeRestartCoordinator ) {
351+ export function createSettingsRoutes ( db : Database , gitAuthService : GitAuthService , openCodeClient : OpenCodeClient , openCodeSupervisor ?: OpenCodeSupervisor ) {
405352 const app = new Hono ( )
406353 const settingsService = new SettingsService ( db )
407354
@@ -763,11 +710,11 @@ export function createSettingsRoutes(db: Database, gitAuthService: GitAuthServic
763710 try {
764711 logger . info ( 'Manual OpenCode server restart requested' )
765712 opencodeServerManager . clearStartupError ( )
766- const resume = await restartOpenCodeWithResume ( openCodeSupervisor , openCodeRestartCoordinator )
713+ const { resumedSessionIDs } = await restartOpenCode ( openCodeSupervisor )
767714 return c . json ( {
768715 success : true ,
769716 message : 'OpenCode server restarted successfully' ,
770- resumedSessions : resume ?. resumedSessionIDs ?? [ ] ,
717+ resumedSessions : resumedSessionIDs ,
771718 } )
772719 } catch ( error ) {
773720 logger . error ( 'Failed to restart OpenCode server:' , error )
@@ -857,12 +804,8 @@ export function createSettingsRoutes(db: Database, gitAuthService: GitAuthServic
857804 app . post ( '/opencode-reload' , async ( c ) => {
858805 try {
859806 logger . info ( 'OpenCode configuration reload requested' )
860- const resume = await reloadOpenCodeConfigWithResume ( openCodeSupervisor , openCodeRestartCoordinator )
861- return c . json ( {
862- success : true ,
863- message : 'OpenCode configuration reloaded successfully' ,
864- resumedSessions : resume ?. resumedSessionIDs ?? [ ] ,
865- } )
807+ await reloadOpenCodeConfig ( openCodeSupervisor )
808+ return c . json ( { success : true , message : 'OpenCode configuration reloaded successfully' } )
866809 } catch ( error ) {
867810 logger . error ( 'Failed to reload OpenCode config:' , error )
868811 if ( error instanceof ConfigReloadError ) {
@@ -1923,7 +1866,7 @@ export function createSettingsRoutes(db: Database, gitAuthService: GitAuthServic
19231866 } )
19241867
19251868 app . get ( '/opencode-active-sessions' , ( c ) => {
1926- const sessions = openCodeRestartCoordinator ?. captureResumableSessions ( ) ?? [ ]
1869+ const sessions = getOpenCodeRestartCoordinator ( ) ?. captureResumableSessions ( ) ?? [ ]
19271870 return c . json ( { count : sessions . length , sessions } )
19281871 } )
19291872
0 commit comments