# Response Guide

SilentCronX returns typed job results and emits typed lifecycle events.

## Job Result

```ts
type JobResult<TResult = unknown> = {
  jobId: string;
  name: string;
  status: JobStatus;
  result?: TResult;
  error?: SerializedError;
  progress?: JobProgress;
  attempt: number;
  durationMs: number;
  startedAt?: string;
  finishedAt?: string;
};
```

## Success Example

```json
{
  "jobId": "now_1720000000000_abcd1234",
  "name": "send-welcome",
  "status": "success",
  "result": {
    "sent": true
  },
  "attempt": 1,
  "durationMs": 12,
  "startedAt": "2026-07-15T10:00:00.000Z",
  "finishedAt": "2026-07-15T10:00:00.012Z"
}
```

## Progress Example

```json
{
  "percent": 45,
  "message": "Collecting report data",
  "at": "2026-07-15T10:00:00.100Z"
}
```

## Failure Example

```json
{
  "jobId": "now_1720000000000_wxyz9876",
  "name": "send-welcome",
  "status": "failed",
  "error": {
    "name": "Error",
    "message": "Provider request failed"
  },
  "attempt": 3,
  "durationMs": 850
}
```

## Health Example

```json
{
  "running": true,
  "scheduledJobs": 3,
  "runningJobs": 1,
  "queuedJobs": 8,
  "workers": {
    "max": 4,
    "busy": 1,
    "idle": 3
  },
  "memory": {
    "storage": "memory"
  }
}
```

## Status Values

- `pending`
- `scheduled`
- `running`
- `success`
- `failed`
- `cancelled`
- `paused`
- `timeout`

## Events

- `scheduler:started`
- `scheduler:stopped`
- `scheduler:shutdown`
- `job:scheduled`
- `job:started`
- `job:progress`
- `job:success`
- `job:failed`
- `job:timeout`
- `job:cancelled`
- `job:paused`
- `job:resumed`
- `job:retry`
- `queue:created`
- `queue:paused`
- `queue:resumed`
- `queue:cleared`
- `queue:drain`
- `queue:stats`
- `error`

## Queue Stats Example

```json
{
  "name": "invoice-queue",
  "pending": 12,
  "running": 3,
  "concurrency": 5,
  "maxSize": 1000,
  "paused": false,
  "rateLimit": {
    "limit": 100,
    "intervalMs": 60000,
    "used": 20,
    "resetsInMs": 43000
  }
}
```

## Event History Example

```json
[
  {
    "eventName": "job:success",
    "event": {
      "jobId": "now_1720000000000_abcd1234",
      "name": "send-welcome",
      "status": "success",
      "attempt": 1,
      "durationMs": 12
    },
    "at": "2026-07-15T10:00:00.020Z"
  }
]
```
