🔒 fix(sidecar): Retry-After 退避恢复 + prompt 假抽象拆除 + link/wiki 校验统一 zod - #468
Conversation
289f691 to
da41db0
Compare
parseRetryAfterHeader/computeRetryDelay/120s 硬上限补进 @lume/agent-sdk 导出面;pi-ai-provider 删除本地重复解析,改用共享实现(delta-seconds 与 HTTP-date 双格式行为不变,SDK retry.test.ts 已覆盖验收格式与 clamp)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
composePromptSections/PromptSection/PromptSectionMode 全仓仅自测试引用,连同 context-budget.ts 的 DEFAULT_CONTEXT_BUDGET 一并删除;context-assembler 保留指纹 trace,budget 元数据收敛为真实 tokenBudget 总额。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
da41db0 to
796bb2c
Compare
Review结论:✅ 可合。三个主题逐一实证,无阻塞缺陷;1 条 P2 为验收口径缺口(main 既有、非本 PR 引入),建议随合或 follow-up 表态。 发现[P2] #422 验收口径未闭环:sidecar 实际 clamp 是 30s,非 issue 写明的 120s
[P3] OAUTH_CANCEL / OAUTH_ANSWER 对空串与 null 的行为收紧
[P3]
|
…除双 cap 并存 依据 issue #422 验收口径:clamp 120s,与 sdk withRetry 的 MAX_RETRY_AFTER_DELAY_MS 一致。
|
Retry-After clamp 口径已统一为 120s:sidecar 删除自有 依据 = issue #422 验收口径(clamp 120s,与 sdk withRetry 一致)。 测试同步更新: 六包 typecheck 绿;pi-ai-provider + sdk retry 定向测试绿。 |
三个独立 sidecar issue 的批量修复,互不相干、分主题提交。
🐛 #422 Retry-After 挂载点迁移至 sidecar 传输层
对账发现 issue 前提已部分过时:
err.retryAfterMs生产端其实早已在 pi-ai-provider 落地(onResponse 捕获响应头 → PiAiProviderError.retryAfterMs),但存在两处收尾欠账:parseRetryAfterHeader/computeRetryDelay/MAX_RETRY_AFTER_DELAY_MS(120s 硬上限)此前不在@lume/agent-sdk导出面上,sidecar 无法按 issue 建议直接复用 → 本 PR 补齐导出验收格式覆盖(delta-seconds / HTTP-date / 缺失回退 / clamp 120s)已由
packages/sdk/src/utils/retry.test.ts既有用例钉死,本 PR 全量跑绿。🔥 #294 prompt 组装器假抽象残留
全仓 grep 复核确认零消费后删除:
section-composer.ts的composePromptSections/renderPromptSection与其测试文件(仅自身测试引用)prompt/types.ts的PromptSection/PromptSectionMode(唯一消费者就是上述文件)context-budget.ts的DEFAULT_CONTEXT_BUDGET(0.25/0.15/0.20… 比例只被展开进 trace 元数据)context-assembler 保留指纹 trace;budget 元数据收敛为真实的
{ total: tokenBudget },测试断言面(.budget.total)不变。♻️ #292 RPC 校验双轨制
issue 点名的
link-handlers.ts/wiki-handlers.ts已分别随 Link 与 Wiki 功能整体移除删除,双轨制的原始载体不复存在。复核发现残存的手写校验只剩 channel 家族(同文件内 5 个 handler 用 zod、7 个仍手写 asObject/asString,正是 issue 描述的漂移现场):channelIdParamsSchema/connectionIdParamsSchema/oauthSessionIdParamsSchema/oauthAnswerParamsSchema/oauthCancelParamsSchema(与相邻 channel schema 同款.strict()风格)validateInput,删除手写校验分支OAUTH_ANSWER.value可选、OAUTH_CANCEL缺 sessionId 保持静默 no-op;新增schemas.channel-params.test.ts钉死边界 case验证
bun run typecheck六包全绿Fixes #422
Fixes #294
Fixes #292
🤖 Generated with Claude Code