@tea-agent/loop-agent 0.41.0-next.1 → 0.41.0-next.2

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,6 +2,7 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ - backend-test 新增 `backendTest.executeTimeoutMs`,可为 readiness 授权的单次 pytest/HTML 执行节点配置 1 分钟至 2 小时的每命令超时;省略时仍为 5 分钟,不影响其他节点、DAG 外层 wall-clock 或 fail-closed 判定。
5
6
  - 对话中的长时间 DAG 执行现在会保留一条实时状态:持续显示总运行时间、当前阶段、完成步数和最近一次有效进展;重复等待不再堆叠,点击状态可以直接查看对应 DAG。模型仍会在阶段变化、重要发现、失败恢复和结束时,用自然语言说明刚完成什么、下一步做什么。
6
7
 
7
8
  ## [0.40.0] - 2026-08-31
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "0.41.0-next.1",
4
- "gitSha": "082093199826919c9699608265a26e4840207421",
5
- "builtAt": "2026-08-31T02:28:34.598Z"
3
+ "version": "0.41.0-next.2",
4
+ "gitSha": "0e7de8cc6c6055949135d7a7fba05139fe36fc23",
5
+ "builtAt": "2026-08-31T02:58:17.929Z"
6
6
  }
@@ -149,6 +149,8 @@ export const backendTestConfigSchema = z
149
149
  executeScope: z.enum(["affected", "all"]).optional(),
150
150
  /** Backend-test-only workspace mutation control; omitted means Git guard. */
151
151
  workspaceControl: z.enum(["git", "filesystem-only"]).optional(),
152
+ /** Per-command timeout for the readiness-authorized pytest/HTML execution node. */
153
+ executeTimeoutMs: z.number().int().min(60_000).max(7_200_000).optional(),
152
154
  })
153
155
  .strict()
154
156
  .optional();
@@ -4357,7 +4357,7 @@ async function buildBackendTestGapFillDag(sources) {
4357
4357
  commands: [],
4358
4358
  backendTestPipeline: "markdown-execute-html",
4359
4359
  cwd: ".",
4360
- timeoutMs: 300000,
4360
+ timeoutMs: taskConfig.backendTest?.executeTimeoutMs ?? 300000,
4361
4361
  envAllowlist,
4362
4362
  },
4363
4363
  };
@@ -4833,7 +4833,7 @@ async function buildBackendTestHybridDag(sources) {
4833
4833
  'mkdir -p "${HARNESS_DAG_RUN_DIR}/reports"',
4834
4834
  'echo "pytest targets are resolved at runtime from execution-readiness v2 eligibleItemIds"',
4835
4835
  ].join("; ");
4836
- const execute = shellNode("execute-backend-pytest-and-html-report-shell", [manifest.id], "markdown-execute-html", "Read canonical contracts/backend-test-execution-readiness.json v2, verify final asset and eligibility-input hashes, then execute exactly its `eligibleItemIds` pytest node IDs once. Never execute `excludedItems`; retain each exclusion reason as residual TestBug/automation evidence rather than ProductBug. Prefer the deterministic module one-to-one path when a mapped script is missing but the module stem file exists. Generate a native pytest-html self-contained report, then render the primary self-contained Chinese HTML report from the same pytest-html plus final Markdown case metadata without rerun. Keep 测试结论 and quality status; make node 6 Markdown validation + case coverage and node 13 traceability + Markdown-to-pytest correspondence expandable to their full escaped details; show each failure overview item with its original pytest message plus deterministic evidence-based reason analysis; list failure/error case cards before the remaining cases while preserving stable order. Each polished per-case result card includes concise scenario, automation test name, result, duration, and redacted bounded HTTP request parameters/response results for both passed and failed cases. Do not render a technical/execution evidence section in HTML; retain auditable paths and hashes in facts.", "One scoped pytest execution over readiness-authorized eligible pytest items producing a valid pytest-html report with per-case captured output, self-contained reports/backend-test.html, reports/backend-test.md, reports/backend-test-facts.md, a deterministic self-contained reports/backend-test-l5-dashboard.html (machine-computed L-5 metrics, no JSON), and an optional contracts/code-coverage-v1.json when jacocoCoverage is configured (JaCoCo TCP dump → jacoco.xml → parsed; failure-safe); exit 0/1 with valid evidence continues.", [pytestCommand], 300000);
4836
+ const execute = shellNode("execute-backend-pytest-and-html-report-shell", [manifest.id], "markdown-execute-html", "Read canonical contracts/backend-test-execution-readiness.json v2, verify final asset and eligibility-input hashes, then execute exactly its `eligibleItemIds` pytest node IDs once. Never execute `excludedItems`; retain each exclusion reason as residual TestBug/automation evidence rather than ProductBug. Prefer the deterministic module one-to-one path when a mapped script is missing but the module stem file exists. Generate a native pytest-html self-contained report, then render the primary self-contained Chinese HTML report from the same pytest-html plus final Markdown case metadata without rerun. Keep 测试结论 and quality status; make node 6 Markdown validation + case coverage and node 13 traceability + Markdown-to-pytest correspondence expandable to their full escaped details; show each failure overview item with its original pytest message plus deterministic evidence-based reason analysis; list failure/error case cards before the remaining cases while preserving stable order. Each polished per-case result card includes concise scenario, automation test name, result, duration, and redacted bounded HTTP request parameters/response results for both passed and failed cases. Do not render a technical/execution evidence section in HTML; retain auditable paths and hashes in facts.", "One scoped pytest execution over readiness-authorized eligible pytest items producing a valid pytest-html report with per-case captured output, self-contained reports/backend-test.html, reports/backend-test.md, reports/backend-test-facts.md, a deterministic self-contained reports/backend-test-l5-dashboard.html (machine-computed L-5 metrics, no JSON), and an optional contracts/code-coverage-v1.json when jacocoCoverage is configured (JaCoCo TCP dump → jacoco.xml → parsed; failure-safe); exit 0/1 with valid evidence continues.", [pytestCommand], taskConfig.backendTest?.executeTimeoutMs ?? 300000);
4837
4837
  if (execute.shell) {
4838
4838
  execute.shell.envAllowlist = collectBackendTestShellEnvAllowlist(sources);
4839
4839
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.41.0-next.1",
3
+ "version": "0.41.0-next.2",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",