usage: publish_event.py [-h] (--job JOB | --pick-pending)
                        [--agent-session AGENT_SESSION]
                        [--event {started,permission_required,progress,completed,error,cancelled}]
                        [--detail DETAIL] [--data DATA] [--retained]
                        [--registry-dir REGISTRY_DIR] [--attempts ATTEMPTS]
                        [--finalize-report PATH]
                        [--side-effect KIND=REFERENCE]
                        [--attempt-id ATTEMPT_ID] [-v]

Publish a Job event to MQTT

optional arguments:
  -h, --help            show this help message and exit
  --job JOB             job id to publish for
  --pick-pending        auto-select a pending job for --agent-session
  --agent-session AGENT_SESSION
                        session label used with --pick-pending
  --event {started,permission_required,progress,completed,error,cancelled}
  --detail DETAIL
  --data DATA           optional JSON object string
  --retained            force retain=True (auto for completed/error)
  --registry-dir REGISTRY_DIR
  --attempts ATTEMPTS
  --finalize-report PATH
                        atomically finalize this report and declare its
                        completion manifest before publishing
  --side-effect KIND=REFERENCE
                        evidence for an external side effect this job
                        performed
  --attempt-id ATTEMPT_ID
                        attempt this finalization belongs to (default: the
                        job's current iteration)
  -v, --verbose
