import type { ReActAgentInterceptor, ToolInterceptor } from '@agforge/core'; declare module '@agforge/core' { interface MessageSourceTagHelper { systemPrompt: true; skill: true; environmentInject: true; iterationLimit: true; finishReason: true; errorLimit: true; agentsMd: true; } /** * 消息源标签。 * 附加在 MessagePart 的 extra 上,标识该消息片段由拦截器注入。 * * MessageManager 在 compress() 中收到完整消息列表后, * 可根据 source 的存在与否区分用户原始消息和拦截器注入的上下文, * 并据此做出持久化、压缩、过滤等决策。 */ interface MessageSource { /** * 压缩摘要(可选)。 * 由拦截器开发者提供,告知压缩策略该消息被压缩时应如何处理。 * 压缩策略可以选择采纳或忽略此信息。 * * 默认行为: * - 未提供(undefined):压缩时使用原始内容 * - 空字符串(''):压缩时忽略此内容(完全移除) * - 非空字符串:压缩时使用此字符串作为压缩后的上下文 */ recoverHint?: string; } } /** * 拦截器执行阶段。 * 决定拦截器在洋葱模型中的层级位置:SYSTEM(外层)→ USER(中间层)→ SYSTEM_POST(内层)。 * 同阶段内按 order 升序排列。 */ export declare enum Phase { /** * 框架内置拦截器的前置阶段。 * 在洋葱模型中位于最外层,先于用户拦截器执行。 * 适用于需要包裹整个用户逻辑的框架能力(如 tracing、消息持久化)。 */ SYSTEM = "system", /** * 用户拦截器阶段。 * 所有用户拦截器的默认阶段。 * 在 SYSTEM 之后、SYSTEM_POST 之前执行。 */ USER = "user", /** * 框架内置拦截器的后置阶段。 * 在洋葱模型中位于最内层,后于所有用户拦截器执行。 * 适用于需要观察最终状态的框架能力(如捕获完整消息列表)。 * * ⚠️ 高级用户可以显式使用此阶段,但需自行承担排序后果—— * 框架不保证在 SYSTEM_POST 阶段内的拦截器之后仍能正确捕获上下文。 */ SYSTEM_POST = "system_post" } export declare enum OrderValue { SYSTEM = 100, DEFAULT = 1000 } /** * 排序元数据。 * phase 决定层级(SYSTEM → USER → SYSTEM_POST),同层内按 order 升序排列。 */ export type Order = { /** * 拦截器所属阶段。 * 未指定时默认为 Phase.USER。 */ phase?: Phase; /** * 同阶段内的排序权重。数值越小越先执行(越外层)。 * 未指定时默认为 OrderValue.DEFAULT。 */ order?: number; }; /** * 身份标识元数据。 * DefaultAgent 按 id 去重:用户传入的同 id 拦截器替换内置版本。 * 未提供 id 的拦截器不参与去重(始终保留),但会输出 warning 日志。 */ export type Id = { id?: string; }; /** * 依赖声明元数据。 * 拦截器可声明依赖的其他拦截器 id 列表。 * DefaultAgent 在构建拦截器链时校验依赖是否存在,不存在时输出 warning 日志。 */ export type Dependencies = { /** * 依赖的拦截器 id 列表。 * 未指定时无依赖校验。 */ dependencies?: ReadonlyArray; }; /** * engine 层管理的 ReActAgent 拦截器。 * 组合 Order(排序)+ Id(去重)+ Dependencies(依赖)+ ReActAgentInterceptor(协议)。 */ export type ManagedReActAgentInterceptor = Record, ES extends Record = Record, AP extends Record = Record, AS extends Record = Record> = Order & Id & Dependencies & ReActAgentInterceptor; /** * engine 层管理的 Tool 拦截器。 * 组合 Order(排序)+ Id(去重)+ Dependencies(依赖)+ ToolInterceptor(协议)。 */ export type ManagedToolInterceptor = Order & Id & Dependencies & ToolInterceptor;