@tea-agent/loop-agent 0.35.0-beta.2 → 0.35.0

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
@@ -2,13 +2,34 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
- ## [0.35.0-beta.2] - 2026-08-13
5
+ ## [0.35.0] - 2026-08-13
6
+
7
+ ### 重点更新
8
+
9
+ - 将前端实现契约收敛为单一事实源,消除多个 JSON 生产者导致的输出冲突
10
+ - 严格绑定 Mock 策略与冻结验证命令,在生成与写入阶段前置拦截不一致配置
11
+ - 设计评审节点引入协议感知重试,格式漂移不再直接拖垮整轮运行
12
+ - 改进控制台运行时上下文面板与操作员对话控件
13
+
14
+ ### 新增
15
+
16
+ - 前端设计评审节点声明 `first-line-enum` 输出协议,VERDICT 首行缺失或畸形时在同一节点内有界重试
17
+ - 前端契约物化新增冻结命令校验,`verificationTarget.commandLabel` 必须落在冻结命令集合内,否则 fail-closed 拒绝
18
+ - plan/revision 提示词强化单 JSON 输出与逐条 AC 回显
6
19
 
7
20
  ### 改进
8
21
 
9
- - 前端实现 DAG `frontend-implementation-contract-v1` 收敛为单一事实源:删除重复的 `frontend-contract-json-pi` 与 `frontend-contract-json-validate-shell` 节点,由 `frontend-prewrite-gate-shell` 直接从生效计划(`frontend-plan-pi` 或修订后的 `frontend-plan-revision-pi`)末尾的单个 fenced JSON 物化契约,避免多个 JSON 生产者引发 `invalid-output ... (found N)`
10
- - 修复前端设计评审 verdict 提取:同时检查 `assistantText` `stdout`,避免 `VERDICT: request-revision` 出现在 stdout 时被误判为缺失
11
- - 修复前端 Mock 策略与验证命令不一致:`frontend-prewrite-gate-shell` 在写入授权前校验「非 `not-needed` 策略必须有冻结的 Mock 验证命令」,不再延迟到 verify trace 才失败;auto 模式在无确认 Mock 能力或无确定性验证命令时强制 `not-needed`,required 模式缺少验证命令时生成期即阻塞并输出 `Mock strategy is required, but no authorized Mock verification command was found.`
22
+ - 前端实现 DAG 删除重复的 JSON 生产节点,由 prewrite gate 直接从生效计划末尾物化契约,避免 `invalid-output (found N)` 错误
23
+ - 前端 Mock 策略解析逻辑优化:auto 模式在无确认 Mock 能力或无确定性验证命令时强制 `not-needed`,required 模式缺少验证命令时生成期即阻塞
24
+ - 前端 prewrite gate 对不在允许范围内的 Mock 策略给出可操作错误,明确区分不同失败原因并附修复建议
25
+ - 设计评审 verdict 提取同时检查 `assistantText` 与 `stdout`,避免仅输出到 stdout 的 `request-revision` 被误判为缺失
26
+ - 控制台运行时上下文面板与操作员对话控件体验优化
27
+
28
+ ### 修复
29
+
30
+ - 修复前端 Mock 策略与验证命令不一致仅在 verify trace 才暴露的问题,现已在 prewrite gate 前置安全拦截
31
+ - 修复多个 JSON 生产者导致契约物化失败的问题
32
+ - 修复 `VERDICT: request-revision` 仅输出到 stdout 时被误判为缺失的问题
12
33
 
13
34
  ## [0.34.5] - 2026-08-13
14
35
 
@@ -184,7 +184,15 @@ export async function runFrontendPrewriteGate(input) {
184
184
  const raw = JSON.parse(await readFile(artifact.path, "utf8"));
185
185
  const contract = frontendImplementationContractSchema.parse(raw);
186
186
  if (!input.config.allowedMockStrategies.includes(contract.mockApi.strategy)) {
187
- throw new Error(`frontend prewrite gate blocked mock strategy ${contract.mockApi.strategy}; allowed=${input.config.allowedMockStrategies.join(",")}`);
187
+ const quotedAllowed = input.config.allowedMockStrategies
188
+ .map((strategy) => JSON.stringify(strategy))
189
+ .join(", ");
190
+ const forcedNotNeeded = input.config.allowedMockStrategies.length === 1 &&
191
+ input.config.allowedMockStrategies[0] === "not-needed";
192
+ const reason = forcedNotNeeded
193
+ ? "the task is auto/not-required or lacks authorized deterministic Mock verification commands"
194
+ : `allowed strategies are [${quotedAllowed}]`;
195
+ throw new Error(`frontend contract mock strategy "${contract.mockApi.strategy}" is incompatible with the generated allowed strategies [${quotedAllowed}]; ${reason}. Regenerate the DAG or set frontendMock.policy=required with authorized Mock verification commands.`);
188
196
  }
189
197
  // Fail early instead of at the verification trace: a non-not-needed strategy
190
198
  // can only be proven by executing the DAG's frozen Mock verification
@@ -2562,6 +2562,7 @@ async function buildFrontendHybridDagFromTask(sources) {
2562
2562
  allowedPaths: readOnlyPaths,
2563
2563
  forbiddenPaths,
2564
2564
  skills: FRONTEND_DESIGN_REVIEW_SKILLS,
2565
+ outputProtocol: REVIEW_VERDICT_OUTPUT_PROTOCOL,
2565
2566
  outputContract: "Plain Markdown whose first non-empty line is VERDICT: pass or VERDICT: request-revision, followed by Findings, Required Plan Corrections, and Checked Items. No file writes.",
2566
2567
  subtask_prompt: [
2567
2568
  "Audit the frontend plan before implementation.",
@@ -2618,6 +2619,7 @@ async function buildFrontendHybridDagFromTask(sources) {
2618
2619
  allowedPaths: readOnlyPaths,
2619
2620
  forbiddenPaths,
2620
2621
  skills: FRONTEND_DESIGN_REVIEW_SKILLS,
2622
+ outputProtocol: REVIEW_VERDICT_OUTPUT_PROTOCOL,
2621
2623
  outputContract: "For the effective frontend plan, return plain Markdown whose first non-empty line is VERDICT: pass or VERDICT: request-revision, followed by Findings and Checked Items. No file writes.",
2622
2624
  subtask_prompt: [
2623
2625
  "Audit the revised frontend plan before implementation. This node runs only after request-revision and consumes frontend-plan-revision-pi.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.35.0-beta.2",
3
+ "version": "0.35.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",