/**
* Build Tool Handler
* Triggers a build process on Komodo
*/
import type { KomodoClient } from '../../core/KomodoClient';
import { Logger } from '../../utils/logger';
export interface BuildOptions {
skipCache?: boolean;
skipPull?: boolean;
forceBuild?: boolean;
}
export interface BuildRequest {
id: string;
options?: BuildOptions;
}
export interface BuildResponse {
success: boolean;
buildId: string;
jobId?: string;
status: 'queued' | 'building' | 'completed' | 'failed';
message: string;
startedAt?: string;
image?: string;
logs?: string[];
}
/**
* Execute a build
*/
export async function executeBuild(
client: KomodoClient,
request: BuildRequest
): Promise<BuildResponse> {
const logger = Logger.getInstance();
try {
logger.info('Executing build', { buildId: request.id });
const response = await client.post<BuildResponse>(
`/execute/build/${request.id}`,
request.options || {}
);
logger.info('Build execution initiated', {
buildId: request.id,
jobId: response.jobId,
status: response.status
});
return response;
} catch (error) {
logger.error('Failed to execute build', {
buildId: request.id,
error: error instanceof Error ? error.message : String(error)
});
throw error;
}
}