Skip to content

feat(amsg-server): add onBeforeFire defer exit - #92

Merged
Tosd0 merged 1 commit into
mainfrom
feat/before-fire-defer
Oct 3, 2026
Merged

Tosd0 merged 1 commit into
mainfrom
feat/before-fire-defer

Conversation

@Tosd0

@Tosd0 Tosd0 commented Oct 3, 2026

Copy link
Copy Markdown
Owner

改了什么

onBeforeFire 多一种返回值 { defer: { afterMs } }:这次先不生成,过一会儿再来问。

抛错重试 { defer }
retry_count +1 不变
last_error 写 不写
next_send_at 不变 不变
再次触发 2 / 4 / 6 分钟 now + afterMs(粒度是 cron 的一分钟)
  • 任务行只动 retry_after 和租约,循环任务不推进。
  • onFireSettled 收到 status: 'deferred' 和 retryAfter。
  • 推迟的总预算是名义时刻起 staleAfterMs,越线按过期收场。
  • 请求内当场投递的 instant 和没有 claimTask 的适配器不支持,报 AGENTIC_DEFER_UNSUPPORTED。
  • capabilities 新增 before-fire-defer。

测试

包内全量 679 个通过,其中新增 23 个(test/before-fire-defer.test.mjs)。

onBeforeFire 可以返回 { defer: { afterMs } }:这次不生成、不推送,任务行只写 retry_after 并放掉租约,到点后从 onBeforeFire 重新走一遍。不占重试次数、不写 last_error、不动 next_send_at,循环任务不推进。

onFireSettled 的 status 多一种 deferred,带 retryAfter;tick 汇总新增 details.deferredTasks。过期线照常管着被推迟的任务,唤醒时刻越线时当场按过期收场。instant 请求内投递与没实现 claimTask 的适配器返回 defer 时报 AGENTIC_DEFER_UNSUPPORTED。
@Tosd0
Tosd0 merged commit 426f2d5 into main Oct 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant