@tea-agent/loop-agent 0.43.0 → 0.44.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,17 +4,94 @@
4
4
 
5
5
  ## [0.43.0] - 2026-09-14
6
6
 
7
- ### 新增
7
+ - `dag doctor` 现在显式接受 `--json`(与 `dag report`、顶层 `doctor` 的 flag 家族一致),JSON 优先于 `--markdown`;默认输出不变,`operatorCapabilities` 中既有的 `dag doctor --json` 文档不再是会报错的假契约。
8
+ - 新增统一 `dogfood:backend` 入口:默认执行零业务副作用的控制器身份预检,记录发布渠道或 tarball SHA、package fingerprint、build commit、Console host 与 DAG controller 身份,任何漂移在模型、Goal 和 DAG 启动前 fail-closed;显式 `--execute` 才运行自然语言预约 live campaign,并为每轮创建独立证据目录和清理记录。
9
+ - backend-test Module Index 的 8 列表头、separator、Split Reason、单一 resolved Markdown Path、producer 校验与 consumer parser 收敛到同一协议真源,生成模板通过 drift test 锁定,避免提示词要求 link+path 而执行器只接受单一路径。
8
10
 
9
- - 新增了本发布周期内已经完成并通过验证的功能。
11
+ - 自然语言预约 turn 现在只暴露 typed workflow actions 与本地只读文件工具,移除 Bash、terminal、browser 和扩展 MCP 通道;预约准备不能再通过通用工具提前探测 HTTP 服务,下一轮恢复普通能力。
12
+ - 后端测试计划的 Module Index 现在要求紧邻 8 列 Markdown separator,并拒绝重复 resolved path、箭头或 full-path link;pytest writer 对 writeSet、执行次数、报告存在性等治理型横切绑定只保留 metadata,由 Harness 事实验收,避免业务脚本编造文件路径断言。
13
+ - 后端测试计划中的场景分区格式在计划节点提前校验并有界重试,避免到模块清单节点才中断;预约工具说明要求忠实保留用户目标,禁止自行增加失败用例、mock 或文件名约束。
14
+ - 后端 pytest 生成与唯一集合修复明确要求把 Test Point metadata 放在 primary symbol 的首段 docstring,避免把模块级注释误当成已修复的对应关系。
15
+ - 对话预约 backend-test 时,验收命令禁止再次调用 pytest,确保标准 DAG 的唯一正式业务执行不会被验收阶段重复触发。
16
+
17
+ - 修复后端用例审查已完成有界修改,却因模型漏报状态行而中断 DAG;保留空改动、阻断状态和越界写入校验。
18
+
19
+ - 对话定时任务默认在当前项目目录准备和执行,取消强制创建 worktree 和重复初始化;执行改动直接保留在当前目录,继续校验已确认的干净 Git 基线与写入范围。
20
+
21
+ - Console Chat 新增按需工具灰度模式:预约、执行与恢复工具常驻,其余按领域发现后启用;加载状态随会话和分支恢复,异常回退全量模式,默认保留全量以保护核心流程。 发现入口支持按用户意图选能力,预约请求优先保留未来执行语义。
22
+
23
+ - 自然语言预约自动准备隔离工作区、任务和验收边界,不再要求用户提供内部ID;相同请求复用已有预约,失败保留原因,相对延时从准备完成起算。
24
+ - 预约任务集中到「观测 → 定时任务」:支持状态筛选与执行/验收详情,对话只保留简洁确认卡和跳转入口。
25
+
26
+ - Console Chat 支持确认后预约工作流:冻结执行时间、范围与预算,到点后台执行并回传原对话;保留失败报告和未知运行状态,取消不会抹除历史结果。
27
+ - 前端实现工作台新增多轮冒烟认证:契约冻结的 Mock 策略allowance 现在传入 Plan 决策提示词与 finalize 前置检查——计划选择了运行环境无法验证的 Mock 策略时,会在节点内收到可修复诊断,而不是整轮死在 design-policy shell 且无恢复(冒烟 r51 首测、r52+ 复验)。
28
+ - 修复前端 verify 的测试执行报告在冻结命令为 bash 包装形态(`HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 'bash' '-lc' 'npm test'`)时永远无法生成的问题:JSON reporter 现在注入到包装命令内部,行为验证目标重新可通过 trace 门(冒烟 r54 复验)。
29
+ - 契约声明的 required deliverables 改为“必须存在的文件”义务,不再并入需求的实现归属判定:上游契约把挂载文件登记为交付物时,Plan 不会陷入无论怎么修正 placement 都无法通过的归属死循环(冒烟 r55/r56 定位、r57 复验)。
30
+ - 所有权门禁只判定落在声明实现文件之外的 placement 文件;需求完全由交付物/测试形态文件覆盖时不再误报违规。
31
+ - 实现节点与 plan skill 移除已取消的“测试标题必须携带 VT 编号”强制与逐项自检:需求与验证目标的关联由契约承载,测试文件执行成功仍记录为 test-file-execution、行为覆盖保持 unconfirmed,不自动宣称全部行为已覆盖。
32
+
33
+ - 修复后端标准与前端研发工作流对同一 PRD 编号风格容忍度不一致:验收标准写作 `AC1`(不加连字符)时后端一次通过、前端却在 DAG 生成期硬失败,且只报 `Invalid` 加一个 JSON 指针;需求 id 现统一规范化为 `AC-1` 形式,非法形态的报错也自带期望格式。
34
+ - 前端实现不再对没有构建步骤的合法项目无意义失败:静态验证改为按序取项目**真实拥有**的检查(`build` → 任务声明的静态 `--verify` → 项目自身 `typecheck`/`check`),不再在 writer 已交付正确且测试全过之后才因缺少 `npm run build` 报失败;两者都没有时仍保持原有 `build` 命令,不以 no-op 伪造验证。lint 继续不进入本工作流。
35
+ - 修复契约重复提交同一需求导致前端 Plan 节点确定性失败(`coverage must partition complete execution groups exactly once`):覆盖率归属前对需求 id 做保序去重。
36
+ - 修复前端 Mock 策略提示词自相矛盾(同时要求“只允许 not-needed”与“有项目证据可选安全策略”)导致 Plan 误选策略、被下游门禁拒绝后整轮失败;硬约束生效时不再输出那句许可性指令。
37
+
38
+ - Operator Chat 新增对话驱动的真实浏览器自动化:右侧「浏览器」面板改为工作区级 iframe 视图并同步共享浏览器状态,登录态与下载隔离保存在仓库外应用数据;模型可操作同一浏览器进行地址导航、搜索、AI 结构化快照与元素操作、标签页、弹窗、滚动、等待和截图;面板轮询不再生成截图与结构化树,浏览保持流畅,自动化不读取或修改仓库文件,也不暴露任意页面脚本执行。
39
+ - 模型驱动的共享浏览器默认改为可见外部窗口,并保留右侧 iframe 预览;地址、搜索和元素操作不再默认生成大截图,搜索从首页逐字填写并提交真实表单,浏览器启动降低自动化指纹,侧边栏轻量同步外部标题与地址并可聚焦窗口,拒绝嵌入的页面也提供外部状态与聚焦入口,用户可在同一持久 profile 中完成站点安全验证。
40
+
41
+ - 修复前端实现因测试名称没有 VT 编号而反复失败:按测试命令与文件关联执行结果,保留已有测试名称及测试失败阻断。
42
+
43
+ - 整理设置弹窗布局:当前工作区优先、待处理文件紧凑分组、详情按需展开,全局程序信息收拢;窄屏导航改为横向排列。
44
+
45
+ - 工作区配置按实际能力提供更新按钮,逐文件说明待处理原因与下一步,并支持复制智能体处理说明;只剩合并或确认项时不再显示无效更新按钮。
46
+
47
+ - 前端实现恢复已有测试维护与执行:优先任务声明,否则复用项目测试入口;没有测试时不强制补框架,避免只构建通过却遗漏旧单测回归。
48
+
49
+ - `loop-agent init` 写入目标项目 `.gitignore` 的 managed block 由「四条运行目录」扩展为「完整可重建 init surface」:除 `.harness/`、`.agents/`、`.task-pool/`、`.worktrees/` 外,新增忽略默认 governanceRoot(`ai_workspace/loop-agent/`)、`scripts/` 与 `harness.json`;`AGENTS.md`、`README.md` 保留在共享提交面不被忽略,`.opencode/`、`.pi/`(项目级 client-recovery 产物)是否忽略由用户自行决定。块外用户规则原样保留;`init check-update` / `update --apply-safe` / `init upgrade` 的 `refresh-managed-block` 收敛与只读 `gitignore-migration.json` 评估语义不变。
50
+
51
+ - Pi 模式(自由对话)不再自动注入 `loop-agent init` 投影到项目的治理内容:AGENTS.md 中 `<!-- LOOP_AGENT_INIT_START -->…<!-- LOOP_AGENT_INIT_END -->` 治理块从系统上下文剥离(保留用户手写的其他内容),loop-agent 包内置的 29 个 skills(镜像于 `.agents/skills/`)默认不再进入模型的自动技能列表——用户仍可通过 `/skills:<name>` 手动调用,在 Skills 偏好面板显式开启 auto-invocation 的技能继续自动注入,第三方/自定义技能与用户全局技能不受影响。Workflow 模式行为完全不变;`check-repo` 新增内置技能白名单与包内 `skills/` 目录的漂移断言,防升级失同步。
52
+
53
+ - 侧边栏补齐「当前所在」高亮(对齐 DSH 导航激活态,但配色用 loop 暖纸主题而非 DSH 灰蓝):激活工作区不再透明——以主题橙调浅底 + 左侧主题色 accent 条标识,行内 hover 时保持橙调不被通用灰覆盖;当前会话行同步从近乎不可见的 5% 墨蓝底改为浅橙底 + accent 条 + 橙调标题。新增契约测试锁定该高亮形态。
54
+
55
+ - 工具卡对 `ask_user_question`(模型向用户提问)的展示改为 DSH 风格的可读问答:折叠头部对齐 DSH AskQuestionRow 显示 `N/M 已回答`(等待中显示「等待回答」),不再带首问文本前缀或暴露原始 JSON;展开后按 DSH AskQuestionCard 渲染 `<dl>` 问答对——题干使用 DSH 第三级灰 `#81858c`、答案使用主文本色且每行一个答案(选项与自定义回答组成答案行),未回答显示「未回答」;卡片复用 DSH 的边框、内边距、圆角与 max-height 布局。同步将此前对齐 DSH 样式时滞后的两条契约测试更新为 DSH 真实断言(折叠行箭头 `#81858c`、用户气泡无 `min-width`)。
56
+
57
+ - 对话页用户消息气泡对齐 DSH 的 MessageItem 令牌:背景从冷灰 `#eceef2` 改为 DSH 的浅蓝 `#edf3fe`(对应 `--dsw-specific-bubble` = `--dsw-static-deepseek-50`),内边距从 `11px 16px` 收紧到 DSH 的 `10px 16px`,圆角保持 22px;移除 DSH 不存在的 `min-width`(两字回复气泡不再被撑宽)并将 `word-break` 从 `normal` 改为 `break-word`。用户消息堆叠的纵向间距同步对齐 DSH userStack 的 `gap: 8px`。
58
+
59
+ - 对话页「过程折叠」的折叠行最终对齐 DSH 精确令牌:文字从暖棕 `#777269` 改为 DSH 的次级标签灰 `#61666b`,箭头从暖浅灰 `#a39c90` 改为 DSH 的第三级灰 `#81858c`,分隔线从暖米 `#e8e3dc` 改为 DSH 的半透黑 `rgba(0,0,0,.1)`,并移除 hover 变色(与 DSH 无 hover 行为一致);折叠行与 DSH 的间距、字阶(14px/24px、33px 高、0 0 8px padding)保持不变。
60
+
61
+ - 对齐 DSH 的消息时间线排序规则:事件序号(`seq`)成为唯一权威排序键——两侧都带 `seq` 的条目按 `seq` 排序,其余按时间、再按稳定插入顺序,不再混用多套近似排序器;合并历史时、过程折叠排序、工具卡归属、实时与重连的文本回放均改用同一共享比较器,跨回合与断线重连的时间轴不再乱序。
62
+
63
+ - 工具卡的回合归属改为确定性:服务端回合 `turnId` 直接挂到分组上(组取自用户消息或助手消息),工具卡优先按 `assistantMessageId` / `turnId` 精确归属,不再依赖时间窗近似;时间窗兜底改用「下一组的首个锚点」收口,删除了旧实现的 `POSITIVE_INFINITY` 收口——该收口会让中间没有用户消息的分组(如压缩卡片)把下一回合的工具吸到上一回合。
64
+
65
+ - 待发送(dispatching)的用户提示按 `updatedAt` 时间戳插入历史时间线,不再一律堆在最新回合之后;非「正在派发」的占位行不渲染。时间分隔符按所在锚点归属,插入多个待发送提示时顺序稳定。
66
+
67
+ - 助手消息气泡的 ID 与服务器持久化 ID 对齐:服务端在 `message_end` 落库后随 SSE 下发持久化 `messageId`,前端就地重命名正在渲染的气泡为该持久化 ID(不再出现「已确认消息」与流式气泡并存的孪生气泡),离线重连后的文本回放同样按 `messageId` 对齐;历史数据缺少 `messageId` 时回退到文本 + 时间窗匹配。
68
+
69
+ - 修复前端 Plan 无法提交实现步骤的问题:finalize_plan 支持按 AC 绑定实施动作,缺漏在节点内返回修正,避免空计划反复进入设计审查。
70
+
71
+ - 修复前端最终审查反复猜错范围 ID:明确 checkpoint 参数和补交步骤,收尾正确识别 checkpoint 之后的审批结论。
72
+
73
+ - 前端实现流程简化为需求实现覆盖审查与项目验证命令,不强制独立测试方案;已有测试仍需维护并执行,无测试项目不强制补框架,构建结果不冒充行为验证。
10
74
 
11
75
  ### 改进
12
76
 
13
- - 完善了日常使用体验和运行稳定性。
77
+ - Console 将全局「更新程序」与当前工作区初始化分开:添加或切换工作区后只读检查并提示,设置中展示仓库路径、初始化状态、待处理文件和操作进度;首次初始化显式选择可用模型,安全更新仅作用于当前仓库,冲突保留并提示处理。
78
+
79
+ - Operator Chat 内置内部 provider 瞬态异常恢复:即使目标仓库未执行 `loop-agent init`,也能识别完整或被裁剪的 `UnknownError` / `TypeValidationError` / `LLMRequestError` / 502 / 中文「网络波动、模型处理超时」响应,将其规范化后交给 Pi 原生有界重试;Console 缺省使用 loop-agent 推荐重试参数,项目显式字段优先于用户全局字段,用户配置优先于推荐默认值。共享纯分类器同时生成 OpenCode 插件谓词,overflow、认证、权限、配额、取消和业务错误继续 fail-fast。
80
+
81
+ - Operator Chat 浏览器面板默认以完整权限运行(去掉 iframe 沙箱与「临时解锁」状态条),并放开本机回环地址限制——`localhost` / `127.0.0.1` / `::1` 等本地开发服务器可直接在面板内浏览;地址栏仍仅放行 http/https,`javascript:` / `data:` / `file:` 等危险协议继续拦截,拒绝嵌入站点(X-Frame-Options / frame-ancestors)的解释面板与出口保持不变。
82
+
83
+ - 前端 Plan 普通分片按本批完整需求材料打包,固定提示词、用户消息和工具定义不再挤占 24 KB 分片目标,也不再触发发送前的机械二分,减少小需求逐 AC 会话;实际模型容量检查与超限恢复继续生效。
84
+
85
+ - 前端 Plan 小任务合并规划不再受固定 48 KB 输入门槛限制,避免提示词、用户消息或工具定义变长导致额外分片;完整输入、其余任务规模条件及容量恢复机制保持不变。
86
+ - 节点侧栏修复执行分次下拉菜单被执行记录工具栏遮挡的问题,直接展示所选失败尝试的简要原因,并移除重复的左右切换箭头。
87
+ - Operator Chat 的 Pi Runtime 按职责拆出工具构造、运行态检视和 SDK 适配,并共用创建/恢复/分叉的会话准备流程;对外入口、错误类型和会话行为保持不变。
14
88
 
15
89
  ### 修复
16
90
 
17
- - 修复了影响使用体验或运行稳定性的问题。
91
+ - 对话页修复用户消息在流式回复中漏显示或重复分组、加载历史后的滚动跳动,以及删除会话后旧请求恢复条目的问题;移除工作区后隐藏非选中的空白会话,并正确恢复删除失败的列表状态。
92
+ - 修复 Operator Chat 的跨会话输入污染与快速重复提交:切换会话时立即撤销旧会话发送权,草稿、附件和 ↑ 输入历史按会话独立保存;发送、排队、撤回、编辑、插话、文件建议和图片读取的迟到结果只回写原会话。提交改用带快照的有界 attempt,相同内容的快速双 Enter/双击只产生一次请求,失败恢复或排队响应不再覆盖后来输入;流式更新和会话切换保持同一个 composer DOM,中文 IME 更稳定。同步修复 durable 用户消息确认后时间重排导致闪烁光标跑到用户消息上方的问题。
93
+
94
+ - 前端设计审查的写入门禁只统计已提交的审批终态,避免审查范围、发现记录导致合法审批被误判为缺失或歧义;要求修改时保留具体审查意见,缺失、重复及冲突终态仍阻断写入。
18
95
 
19
96
  ## [0.42.1] - 2026-09-09
20
97
 
@@ -623,3 +700,4 @@
623
700
  ## 历史版本
624
701
 
625
702
  0.35.x 及更早(0.8.0 – 0.35.4-beta.0)的发布说明已归档到 [`CHANGELOG/CHANGELOG-0.35-and-earlier.md`](CHANGELOG/CHANGELOG-0.35-and-earlier.md);版本线维护边界与归档规则见 [`CHANGELOG/README.md`](CHANGELOG/README.md)。
703
+
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "0.43.0",
4
- "gitSha": "0765d0a560eacc5719265999838fc71826f233a0",
5
- "builtAt": "2026-09-14T01:41:52.345Z"
3
+ "version": "0.44.0-next.1",
4
+ "gitSha": "5c5e91b6ac584b0361b78363ee95483cd37564a5",
5
+ "builtAt": "2026-09-14T02:24:23.093Z"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.43.0",
3
+ "version": "0.44.0-next.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",