@@ -58,13 +58,13 @@ export async function startDaemon(opts: DaemonOptions): Promise<void> {
5858 } ,
5959 } ) ;
6060
61- const machineInfo = getMachineInfo ( availableProviders , rateLimiter ) ;
61+ const machineInfo = await getMachineInfo ( availableProviders , rateLimiter ) ;
6262 const deviceId = generateDeviceId ( ) ;
6363 const machine = await client . registerMachine ( { ...machineInfo , device_id : deviceId } ) ;
6464 const machineId = machine . id ;
6565 logger . info ( `Machine ready: ${ machineId } (device: ${ deviceId } )` ) ;
6666
67- await client . heartbeat ( machineId , { version : machineInfo . version , runtimes : buildRuntimeStates ( availableProviders , rateLimiter ) } ) ;
67+ await client . heartbeat ( machineId , { version : machineInfo . version , runtimes : await buildRuntimeStates ( availableProviders , rateLimiter ) } ) ;
6868 migrateLegacySessions ( ) ;
6969 await cleanupStaleSessions ( client , machineId ) ;
7070 await auditOrphanedTasks ( client , machineId ) ;
@@ -78,7 +78,7 @@ export async function startDaemon(opts: DaemonOptions): Promise<void> {
7878 sendHeartbeat = async ( ) => {
7979 await client . heartbeat ( machineId , {
8080 version : machineInfo . version ,
81- runtimes : buildRuntimeStates ( availableProviders , rateLimiter ) ,
81+ runtimes : await buildRuntimeStates ( availableProviders , rateLimiter ) ,
8282 usage_info : usageCollector . getSnapshot ( ) ,
8383 } ) ;
8484 } ;
@@ -97,9 +97,9 @@ export async function startDaemon(opts: DaemonOptions): Promise<void> {
9797 client ,
9898 { onSlotFreed : ( ) => loop . onSlotFreed ( ) } ,
9999 {
100- onRateLimited : ( runtime , resetAt ) => {
100+ onRateLimited : async ( runtime , resetAt ) => {
101101 rateLimiter . pause ( runtime , resetAt ) ;
102- sendHeartbeat ?.( ) . catch ( ( e ) => logger . warn ( `Heartbeat failed after rate limit: ${ ( e as Error ) . message } ` ) ) ;
102+ await sendHeartbeat ?.( ) . catch ( ( e ) => logger . warn ( `Heartbeat failed after rate limit: ${ ( e as Error ) . message } ` ) ) ;
103103 } ,
104104 onRateLimitResumed : ( runtime ) => rateLimiter . resumeRateLimit ( runtime ) ,
105105 } ,
@@ -165,22 +165,24 @@ function removePidFile(): void {
165165 }
166166}
167167
168- function getMachineInfo ( providers : AgentProvider [ ] , rateLimiter : RateLimiter ) {
168+ async function getMachineInfo ( providers : AgentProvider [ ] , rateLimiter : RateLimiter ) {
169169 const os = `${ platform ( ) } ${ arch ( ) } ${ release ( ) } ` ;
170- const runtimes = buildRuntimeStates ( providers , rateLimiter ) ;
170+ const runtimes = await buildRuntimeStates ( providers , rateLimiter ) ;
171171 return { name : hostname ( ) , os, version : getVersion ( ) , runtimes } ;
172172}
173173
174- function buildRuntimeStates ( providers : AgentProvider [ ] , rateLimiter : RateLimiter ) : MachineRuntime [ ] {
174+ async function buildRuntimeStates ( providers : AgentProvider [ ] , rateLimiter : RateLimiter ) : Promise < MachineRuntime [ ] > {
175175 const checked_at = new Date ( ) . toISOString ( ) ;
176- return providers . map ( ( provider ) => {
177- const reset_at = rateLimiter . pauseResetAt ( provider . name ) ;
178- if ( reset_at ) {
179- return { name : provider . name , status : "limited" , detail : "runtime paused by rate limiter" , reset_at, checked_at } ;
180- }
181- const availability = provider . checkAvailability ?.( ) ?? { status : "ready" } ;
182- return { name : provider . name , ...availability , checked_at } ;
183- } ) ;
176+ return Promise . all (
177+ providers . map ( async ( provider ) => {
178+ const reset_at = rateLimiter . pauseResetAt ( provider . name ) ;
179+ if ( reset_at ) {
180+ return { name : provider . name , status : "limited" , detail : "runtime paused by rate limiter" , reset_at, checked_at } ;
181+ }
182+ const availability = ( await provider . checkAvailability ?.( ) ) ?? { status : "ready" } ;
183+ return { name : provider . name , ...availability , checked_at } ;
184+ } ) ,
185+ ) ;
184186}
185187
186188function formatRuntimeNames ( runtimes : MachineRuntime [ ] ) : string {
0 commit comments