_resolve_thread_id() falls back to _last_inbound_thread[chat_id] when no explicit thread is present. That fallback exists for interactive DMs, where Google Chat spawns a fresh thread per top-level user message and the adapter drops thread_id to keep the session key stable. It also fired for cron deliveries, which carry job_id in their metadata but no thread: the output landed as a reply inside the last inbound thread instead of starting a new top-level message. Bypass the _last_inbound_thread fallback when metadata has a job_id (i.e. the message is an automated cron delivery), so cron output posts at top level unless an explicit thread is requested. |
||
|---|---|---|
| .. | ||
| browser | ||
| context_engine | ||
| cron_providers | ||
| dashboard_auth | ||
| disk-cleanup | ||
| google_meet | ||
| hermes-achievements | ||
| image_gen | ||
| kanban | ||
| memory | ||
| model-providers | ||
| observability | ||
| platforms | ||
| security-guidance | ||
| spotify | ||
| teams_pipeline | ||
| video_gen | ||
| web | ||
| __init__.py | ||
| plugin_utils.py | ||