@tea-agent/loop-agent 0.28.9 → 0.28.11
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,26 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.28.11] - 2026-08-06
|
|
6
|
+
|
|
7
|
+
### 重点更新
|
|
8
|
+
|
|
9
|
+
- 修复 Night Scheduler 收尾提交因前导空格处理不当导致变更路径截断、暂存失败的问题
|
|
10
|
+
|
|
11
|
+
### 修复
|
|
12
|
+
|
|
13
|
+
- Night Scheduler 收尾提交改用 trimEnd 替代 trim,保留 git porcelain 格式的前导空格,修复 worktree-only 变更路径被截断(如 src/hello.js 变为 rc/hello.js)导致 git add 失败的问题
|
|
14
|
+
|
|
15
|
+
## [0.28.10] - 2026-08-05
|
|
16
|
+
|
|
17
|
+
### 重点更新
|
|
18
|
+
|
|
19
|
+
- 修复 DAG 变更清单 schema 校验误杀合法执行清单的问题,恢复夜间测试成功路径
|
|
20
|
+
|
|
21
|
+
### 修复
|
|
22
|
+
|
|
23
|
+
- DAG writer change-manifest 的 schema 校验现可正确接受 Pi 执行器写入的 effectiveWriteSet 与 approval 元数据字段,修复 verify-pi project-governance-integrity 因 ownership/schema 不匹配而误拒合法 implement-pi 清单的问题
|
|
24
|
+
|
|
5
25
|
## [0.28.9] - 2026-08-05
|
|
6
26
|
|
|
7
27
|
### 重点更新
|
|
@@ -26,11 +26,14 @@ export async function createNightClosingCommit(input) {
|
|
|
26
26
|
reason: card.ok ? "task card required for closing commit" : card.reason,
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
// Never full String#trim() porcelain: a leading space is the index column for
|
|
30
|
+
// worktree-only changes (` M path`). Trimming turns ` M src/a` into `M src/a`,
|
|
31
|
+
// which parseGitStatusPorcelain then mis-reads as `rc/a`.
|
|
29
32
|
const status = (await runGit(input.workspaceRoot, [
|
|
30
33
|
"status",
|
|
31
34
|
"--porcelain=v1",
|
|
32
35
|
"--untracked-files=all",
|
|
33
|
-
])).
|
|
36
|
+
])).trimEnd();
|
|
34
37
|
if (!status) {
|
|
35
38
|
return { ok: false, reason: "no changes to commit after execution" };
|
|
36
39
|
}
|
|
@@ -292,6 +292,9 @@ const writerChangeManifestSchema = z
|
|
|
292
292
|
.object({
|
|
293
293
|
schemaVersion: z.literal(1),
|
|
294
294
|
writerNodeId: z.string().min(1),
|
|
295
|
+
effectiveWriteSet: z.array(z.string()).optional(),
|
|
296
|
+
approvalSourceNodeId: z.string().min(1).optional(),
|
|
297
|
+
approvalDigest: z.string().min(1).optional(),
|
|
295
298
|
changedFiles: z.array(relativePathSchema),
|
|
296
299
|
beforeStatusSha256: sha256Schema,
|
|
297
300
|
afterStatusSha256: sha256Schema,
|
|
@@ -419,13 +419,19 @@ function parseContext(value) {
|
|
|
419
419
|
throw new DagProjectGovernanceIntegrityError(`project governance context schema validation failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
420
420
|
}
|
|
421
421
|
}
|
|
422
|
-
const writerChangeManifestArtifactSchema = z
|
|
422
|
+
const writerChangeManifestArtifactSchema = z
|
|
423
|
+
.object({
|
|
423
424
|
schemaVersion: z.literal(1),
|
|
424
425
|
writerNodeId: z.string().min(1),
|
|
426
|
+
/** Runtime authorization used by the writer (optional on older manifests). */
|
|
427
|
+
effectiveWriteSet: z.array(z.string()).optional(),
|
|
428
|
+
approvalSourceNodeId: z.string().min(1).optional(),
|
|
429
|
+
approvalDigest: z.string().min(1).optional(),
|
|
425
430
|
changedFiles: z.array(z.string()),
|
|
426
431
|
beforeStatusSha256: z.string().regex(/^[a-f0-9]{64}$/),
|
|
427
432
|
afterStatusSha256: z.string().regex(/^[a-f0-9]{64}$/),
|
|
428
|
-
})
|
|
433
|
+
})
|
|
434
|
+
.strict();
|
|
429
435
|
/**
|
|
430
436
|
* Read run-owned manifests only for Pi nodes that actually finished with the
|
|
431
437
|
* bounded write tool profile. A finished writer without its manifest fails
|