package domains import "error-code-system/errcode" // registerAgent 对齐 agent-native contract.ErrorCode(12)与 pitransport 历史码(7)。 // 副作用与重试语义见 docs/agent-native-mapping.md。 func registerAgent(r *errcode.Registry) { must(r, def(errcode.AgentCanceled, 499, errcode.SeverityInfo, errcode.RetryNever, errcode.SideEffectPossible, "执行已取消", "确认取消已传播到模型、工具与子进程;不要伪报成功", "canceled", "CANCELLED")) must(r, def(errcode.AgentDeadlineExceeded, 408, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectPossible, "超过执行截止时间", "预算与截止时间在同一 ExecutionID 内共享,不要换 ID 无条件重放", "deadline_exceeded")) must(r, def(errcode.AgentBudgetExceeded, 429, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectPossible, "执行预算耗尽", "提高预算或缩小任务后再发起新的执行", "budget_exceeded")) must(r, def(errcode.AgentProviderUnavailable, 503, errcode.SeverityError, errcode.RetryTransient, errcode.SideEffectNone, "模型提供方不可用", "视为传输级瞬时故障,只做有界重试", "provider_unavailable")) must(r, def(errcode.AgentProviderRejected, 502, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone, "模型提供方拒绝请求", "检查模型名、请求体与账号权限,不要当瞬时故障重试", "provider_rejected")) must(r, def(errcode.AgentToolRejected, 403, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone, "工具调用被拒绝", "工具不在允许范围内;不要自行扩大工具策略", "tool_rejected")) must(r, def(errcode.AgentPathOutsideWorkspace, 403, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone, "路径越出授权工作区", "只访问 Workspace.Root 之内的路径", "path_outside_workspace")) must(r, def(errcode.AgentMissingCapability, 400, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone, "后端缺少必需能力", "拒绝执行,不要静默降级到 Stub", "missing_capability")) must(r, def(errcode.AgentMissingDeliverable, 422, errcode.SeverityError, errcode.RetryTransient, errcode.SideEffectPossible, "交付物缺失", "确认目标文件未部分写入后再做一次有界重试", "missing_deliverable", "MISSING_TARGET")) must(r, def(errcode.AgentEmptyOutput, 422, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectNone, "输出为空", "检查提示词与停止原因,不要把空输出当成成功", "empty_output")) must(r, def(errcode.AgentUnknownOutcome, 500, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectPossible, "执行结果不确定", "Unknown 不得降级为成功或失败;由调用方依据副作用决定能否重放", "unknown_outcome")) must(r, def(errcode.AgentInternal, 500, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectUnknown, "执行器内部错误", "保留执行日志与 trace_id,不要对未知副作用无条件重放", "internal")) must(r, def(errcode.AgentPromptEmpty, 400, errcode.SeverityWarn, errcode.RetryNever, errcode.SideEffectNone, "提示词为空", "补齐 prompt 后重新发起;对应 pitransport PROMPT_EMPTY", "PROMPT_EMPTY", "prompt_empty")) must(r, def(errcode.AgentUnauthorized, 401, errcode.SeverityWarn, errcode.RetryNever, errcode.SideEffectNone, "执行器鉴权失败", "检查 runner 凭证;对应 pitransport UNAUTHORIZED", "UNAUTHORIZED")) must(r, def(errcode.AgentTimeout, 504, errcode.SeverityError, errcode.RetryTransient, errcode.SideEffectPossible, "执行超时", "传输级超时可有界重试;对应 pitransport TIMEOUT", "TIMEOUT")) must(r, def(errcode.AgentTransient, 503, errcode.SeverityError, errcode.RetryTransient, errcode.SideEffectPossible, "执行瞬时故障", "仅作有界重试;对应 pitransport TRANSIENT", "TRANSIENT")) must(r, def(errcode.AgentRunFailed, 500, errcode.SeverityError, errcode.RetryNever, errcode.SideEffectPossible, "执行运行失败", "查看 error_code 以外的运行日志;对应 pitransport RUN_FAILED", "RUN_FAILED")) }