@tea-agent/loop-agent 0.35.1-beta.3 → 0.35.1-beta.4

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
@@ -1,5 +1,9 @@
1
1
  # 更新日志
2
2
 
3
+ ## [0.35.1-beta.4] - 2026-08-15
4
+
5
+ > 观察面板规范证据不再单列 openspec:读取与检索统一为「规范已读取 / 规范检索」,空态文案同步中性化(beta,发布到 `beta` dist-tag)。
6
+
3
7
  ## [0.35.1-beta.3] - 2026-08-14
4
8
 
5
9
  > frontend-implementation DAG 优化 v9 全六阶段 + Console 展示层(beta,发布到 `beta` dist-tag)。
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "0.35.1-beta.3",
4
- "gitSha": "00588c8aa89d6a2df20b60c55af769a0076b3d7f",
5
- "builtAt": "2026-08-14T18:42:37.895Z"
3
+ "version": "0.35.1-beta.4",
4
+ "gitSha": "69b11bb0e8eaced9b52c7554afe7268aef97e75f",
5
+ "builtAt": "2026-08-15T04:54:32.880Z"
6
6
  }
@@ -359,16 +359,11 @@ export async function extractSpecEvidence(repoRoot, dagRunId, nodeId) {
359
359
  if (status === "no-evidence") {
360
360
  summaryLines.push("未观察到任何规范证据:无 skill 注入、无文件读取、无检索操作。");
361
361
  }
362
- // Separate openspec spec directory reads and searches for Dashboard display.
363
- // Knowledge base and openspec are parallel sources.
362
+ // Openspec directory reads/searches remain in the payload for API consumers
363
+ // (tests and downstream projections); the inspector no longer displays them
364
+ // separately from the generic spec reads/searches.
364
365
  const openspecReads = specReads.filter((r) => isOpenspecPath(r.path));
365
366
  const openspecSearches = searches.filter((s) => isOpenspecSearch(s.query, s.path));
366
- if (openspecReads.length > 0) {
367
- summaryLines.push(`openspec 已读取 ${openspecReads.length} 个文件:${openspecReads.map((r) => r.path).join("、")}`);
368
- }
369
- if (openspecSearches.length > 0) {
370
- summaryLines.push(`openspec 检索 ${openspecSearches.length} 次。`);
371
- }
372
367
  return {
373
368
  dagRunId,
374
369
  nodeId,
@@ -360,15 +360,9 @@ async function renderSpecEvidence(content, dagRunId, nodeId, cachedEvidence) {
360
360
  evidence.sourceBinding?.requirementIds,
361
361
  (id) => el("li", null, id),
362
362
  );
363
- const openspecReadPaths = new Set(
364
- (evidence.openspecReads ?? []).map((entry) => entry.path),
365
- );
366
- const otherSpecReads = (evidence.specReads ?? []).filter(
367
- (entry) => !openspecReadPaths.has(entry.path),
368
- );
369
363
  appendListSection(
370
- `其他已读取规范文件(${otherSpecReads.length})`,
371
- otherSpecReads,
364
+ `规范已读取(${evidence.specReads?.length ?? 0})`,
365
+ evidence.specReads,
372
366
  (read) => {
373
367
  const item = el("li", null);
374
368
  const button = document.createElement("button");
@@ -380,7 +374,7 @@ async function renderSpecEvidence(content, dagRunId, nodeId, cachedEvidence) {
380
374
  button.setAttribute("data-read-at", read.timestamp);
381
375
  }
382
376
  button.id = `spec-evidence-btn-read-${read.path}`;
383
- const icon = el("i", "ri-file-text-line");
377
+ const icon = el("i", "ri-book-open-line");
384
378
  icon.setAttribute("aria-hidden", "true");
385
379
  button.append(icon, el("code", null, read.path));
386
380
  if (read.timestamp) {
@@ -405,9 +399,10 @@ async function renderSpecEvidence(content, dagRunId, nodeId, cachedEvidence) {
405
399
  item.appendChild(button);
406
400
  return item;
407
401
  },
402
+ "unavailable:未观察到规范读取。",
408
403
  );
409
404
  appendListSection(
410
- `检索操作(${evidence.specSearches?.length ?? 0})`,
405
+ `规范检索(${evidence.specSearches?.length ?? 0})`,
411
406
  evidence.specSearches,
412
407
  (search) => {
413
408
  const item = el("li", null);
@@ -419,6 +414,7 @@ async function renderSpecEvidence(content, dagRunId, nodeId, cachedEvidence) {
419
414
  );
420
415
  return item;
421
416
  },
417
+ "unavailable:未观察到规范检索。",
422
418
  );
423
419
  appendListSection(
424
420
  `知识库查询(${evidence.knowledgeBaseQueries?.length ?? 0})`,
@@ -433,67 +429,6 @@ async function renderSpecEvidence(content, dagRunId, nodeId, cachedEvidence) {
433
429
  "unavailable:未观察到知识库查询;connector 可能未配置或未调用。",
434
430
  );
435
431
 
436
- // openspec reads are displayed independently from skill/docs reads.
437
- appendListSection(
438
- `openspec 已读取(${evidence.openspecReads?.length ?? 0})`,
439
- evidence.openspecReads,
440
- (read) => {
441
- const item = el("li", null);
442
- const button = document.createElement("button");
443
- button.type = "button";
444
- button.className = "spec-evidence-file-btn";
445
- button.setAttribute("data-source", "read");
446
- button.setAttribute("data-path", read.path);
447
- if (read.timestamp) {
448
- button.setAttribute("data-read-at", read.timestamp);
449
- }
450
- button.id = `spec-evidence-btn-read-${read.path}`;
451
- const icon = el("i", "ri-book-open-line");
452
- icon.setAttribute("aria-hidden", "true");
453
- button.append(icon, el("code", null, read.path));
454
- if (read.timestamp) {
455
- button.appendChild(
456
- el(
457
- "span",
458
- "spec-evidence-time",
459
- formatSessionEventTime({ timestamp: read.timestamp }),
460
- ),
461
- );
462
- }
463
- button.addEventListener("click", () =>
464
- onSpecEvidenceFileClick(
465
- content,
466
- dagRunId,
467
- nodeId,
468
- "read",
469
- read.path,
470
- button,
471
- ),
472
- );
473
- item.appendChild(button);
474
- return item;
475
- },
476
- evidence.openspecSearches?.length
477
- ? "已检索但未观察到 openspec 成功读取;若生成期存在候选,预写门禁会阻断 writer。"
478
- : "unavailable:未观察到 openspec 成功读取。",
479
- );
480
-
481
- appendListSection(
482
- `openspec 检索(${evidence.openspecSearches?.length ?? 0})`,
483
- evidence.openspecSearches,
484
- (search) => {
485
- const item = el("li", null);
486
- const icon = el("i", "ri-search-line");
487
- icon.setAttribute("aria-hidden", "true");
488
- item.append(
489
- icon,
490
- document.createTextNode(` ${search.tool}: ${search.query}`),
491
- );
492
- return item;
493
- },
494
- "unavailable:未观察到 openspec 检索。",
495
- );
496
-
497
432
  if (
498
433
  evidence.status === "source-bound" ||
499
434
  evidence.status === "spec-injected" ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tea-agent/loop-agent",
3
- "version": "0.35.1-beta.3",
3
+ "version": "0.35.1-beta.4",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "loop-agent": "bin/loop-agent.js",