mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-27 17:58:07 +00:00
cron_continuable_surface=in_channel is meant to deliver a cron brief FLAT into a channel (thread_id=None) so a plain channel reply continues the job via the shared-channel session. The scheduler already seeds that flat session (_seed_cron_channel_session) but never cleared the ORIGINAL target/origin thread_id before routing the actual delivery, so a job scheduled from inside a Slack thread still delivered into that origin thread — the seeded continuable session then never matched where the brief actually landed. Clear thread_id once in_channel_surface is finalized, before it is re-read for route_thread_id / the standalone fallback. Scope the clear to EXACTLY the target that gets flat-seeded — the origin-continuable target (mirror_this_target) on a live, in_channel-capable adapter (runtime_adapter is not None): - fan-out / broadcast / explicit-thread targets keep their thread_id — they are not continuable and are never seeded, so flattening them would reroute an explicit thread and could collapse two targets into duplicate flat sends; - the standalone no-live-adapter path keeps the origin thread — it can never seed the flat session, and without an adapter the D6 capability fail-safe can't run, so flattening there would both drop the brief out of any continuable lane and bypass D6. This keeps the clear in lockstep with the seed condition (in_channel_surface and mirror_this_target) and the D6 fail-safe. mirror_this_target / origin_user_id are computed earlier using the original thread_id to match the origin conversation. Regression tests in TestCronContinuableSurfaceInChannel: - a job whose origin carries a thread_id must not forward that thread_id to the live adapter (DeliveryRouter folds target.thread_id into send metadata), and the seeded continuable session stays flat (thread_id=None); - with no live adapter, the standalone send falls back to the origin thread rather than flattening. |
||
|---|---|---|
| .. | ||
| scripts | ||
| __init__.py | ||
| blueprint_catalog.py | ||
| executions.py | ||
| jobs.py | ||
| lifecycle_guard.py | ||
| scheduler.py | ||
| scheduler_provider.py | ||
| suggestion_catalog.py | ||
| suggestions.py | ||