SPB Git

Repository Public

main.ts 2.0 KB 57 lines typescript

1/** Entry point of the Agent OS worker: `node dist/main.js`. */2import { ConfigError, loadConfig, type WorkerConfig } from './config.js';3import { loadEnvFile } from './env-file.js';4import { createLogger, startWorker } from './worker.js';56let cfg: WorkerConfig;7try {8  loadEnvFile(); // the file named by AOS_ENV_FILE (provider keys in production); never overrides the environment9  cfg = loadConfig();10} catch (err) {11  // Plain text on stderr: this is read by a human (or PM2) before any structured log exists.12  process.stderr.write(`${err instanceof ConfigError ? err.message : `Agent OS worker cannot start: ${(err as Error).message}`}\n`);13  process.exit(1);14}1516const log = createLogger(cfg.logLevel);17let stopping = false;1819try {20  const worker = await startWorker(cfg, log);21  const shutdown = (signal: string): void => {22    if (stopping) {23      log.warn({ signal }, 'second signal: exiting immediately; leases will expire and another worker resumes the runs');24      process.exit(1);25    }26    stopping = true;27    log.info({ signal }, 'shutting down: no new claims, releasing in-flight runs');28    worker.stop().then(29      () => {30        log.info('worker stopped');31        process.exit(0);32      },33      (err: Error) => {34        log.error({ err: err.message }, 'shutdown failed');35        process.exit(1);36      },37    );38  };39  process.on('SIGTERM', () => shutdown('SIGTERM'));40  process.on('SIGINT', () => shutdown('SIGINT'));41  process.on('unhandledRejection', (reason) => {42    log.error({ err: reason instanceof Error ? reason.message : String(reason) }, 'unhandled rejection');43  });44  process.on('uncaughtException', (err) => {45    log.fatal({ err: err.message }, 'uncaught exception: exiting; leases will expire and another worker resumes the runs');46    process.exit(1);47  });48  await worker.done;49  if (!stopping) {50    log.error('worker loop ended unexpectedly');51    process.exit(1);52  }53} catch (err) {54  log.fatal({ err: (err as Error).message }, 'worker failed to start');55  process.exit(1);56}57
Files main
Menu

Theme