feat: upgrade investigation and presentation runtime
Generic Container CI/CD / test-build-publish (push) Successful in 1m6s
Agent CI/CD / build-test-publish-and-deploy (push) Successful in 1m7s

This commit is contained in:
2026-10-30 17:30:19 +08:00
parent 3b52a0ddab
commit 6336157ff4
104 changed files with 6541 additions and 961 deletions
+10 -2
View File
@@ -1,10 +1,18 @@
import { tool } from "../tool.js";
import { answerUiAnchors } from "../../src/chat/answer-ui-publication.js";
export default tool({
description: "提交本轮完整的最终答复。全部工具结果与需要的业务写回已核实后调用;需要浏览器动作回执时先核实回执,本地回答界面发布不等待浏览器回执;阶段说明留在过程记录。answer 是最后报告的完整文字;ui_block_ids 只列已经用 present_answer 发布且应保留在最终报告中的 block_id,按报告顺序排列。收到最终报告后,其他过程文字、界面与轨迹自动折叠。已发布本地交互界面的聊天会在此工具完成后结束本轮,之后不能继续更新界面;需要补充内容应先更新再提交最终答复。后台任务仍以 Server 的完成/失败接口为准,此工具不代表任务、工单或运行已完成。",
description: "提交本轮完整的最终答复。收尾前按阅读任务检查表达:多对象比较和数值趋势优先已用 present_answer 发布 Table/Chart,简单解释、单个事实或用户要求纯文字可直接回答;不要遗漏报告需要的交互内容。全部工具结果与需要的业务写回已核实后调用;需要浏览器动作回执时先核实回执,本地回答界面发布不等待浏览器回执;阶段说明留在过程记录。answer 保留必要正文、结论和关键边界,不重复整张表;在 answer 中用独立一行 [[ui:block_id]] 指定界面位置,代码块、缩进代码和引用中的标记不生效。ui_block_ids 是允许引用列表,必须与锚点去重后的顺序一致,只列本轮已经用 present_answer phase=final 发布的 block_id;process 界面不得引用。收到最终报告后,其他过程文字、界面与轨迹自动折叠。普通聊天与任务协作在此工具完成、当前工具和追加输入均已处理后结束本轮,之后不能继续更新界面;需要补充内容应先更新再提交最终答复。后台任务仍以 Server 的完成/失败接口为准,此工具不代表任务、工单或运行已完成。",
args: {
answer: tool.schema.string().min(1).max(30000),
ui_block_ids: tool.schema.array(tool.schema.string().regex(/^[a-zA-Z0-9_-]{1,80}$/)).max(48).optional(),
},
async execute({ answer, ui_block_ids }) { return JSON.stringify({ answer, ui_block_ids: ui_block_ids ?? [] }); },
async execute({ answer, ui_block_ids }) {
const refs = ui_block_ids ?? [];
const anchors = [...new Set(answerUiAnchors(answer))];
if (JSON.stringify(anchors) !== JSON.stringify(refs)) {
throw new Error("ui_block_ids 必须与 answer 中独立一行的 [[ui:block_id]] 锚点按去重后顺序一致");
}
return JSON.stringify({ answer, ui_block_ids: refs });
},
});