/**
 * {{titleCase name}} Temporal Worker
 */

import { createTemporalWorker, resolveWorkflows } from "@mesh-tech/app-kit/temporal";
import { createLogger } from "@mesh-tech/logger";
import * as activities from "./activities.js";

// The worker process logs through @mesh-tech/logger (the Mesh app contract,
// gate 0.4). Activities use `log` from @temporalio/activity and workflows `log`
// from @temporalio/workflow — both route to the Runtime logger app-kit installs.
const log = createLogger({ service: "{{name}}-worker" });

async function run() {
  const { worker, cleanup } = await createTemporalWorker({
    activities,
    ...await resolveWorkflows(import.meta.url),
  });

  try {
    await worker.run();
  } finally {
    cleanup();
  }
}

run().catch((err) => {
  log.error({ err }, "Worker failed to start");
  process.exit(1);
});
