chore: Pi 开发依赖跟随最新版并去掉测试里的固定版本号

- pi-hermes-memory / pi-notify / pi-permission-system / pi-subagents 的
  @earendil-works/* devDependencies 改为 latest,pi-rtk-optimizer 放开
  peer 范围;各子包锁文件刷新到 Pi 1.3.0,测试改为验证当前宿主 API。
- 新增 scripts/update-pi-devdeps.sh,统一刷新根与子包锁文件中的 Pi 版本。
- pi-subagents 适配 Pi 1.3:mention clone 改走 systemPromptOverride、
  BOM frontmatter、e2e 读取规范化后的 system 消息与工具列表。
- 根测试不再写死 ssh2 / jiti / better-sqlite3 / context-mode 版本号,
  改为精确版本格式与锁文件一致性断言;新增 latest 约束测试。

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
云服务部-叶林立
2026-10-20 19:38:54 -07:00
co-authored by Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent ba164896d2
commit b817d66a11
23 changed files with 4994 additions and 9784 deletions
+22 -1
View File
@@ -1,5 +1,5 @@
import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import { readdir, readFile } from "node:fs/promises";
import { dirname, join, resolve } from "node:path";
import test from "node:test";
import { fileURLToPath } from "node:url";
@@ -115,3 +115,24 @@ test("disposable runtime state stays under the agent-dir my-pi tree", () => {
),
);
});
test("every package-local @earendil-works/* devDependency is pinned to latest", async () => {
for (const entry of await readdir(repositoryRoot, { withFileTypes: true })) {
if (!entry.isDirectory()) continue;
const manifestPath = join(repositoryRoot, entry.name, "package.json");
let manifest: { devDependencies?: Record<string, string> };
try {
manifest = JSON.parse(await readFile(manifestPath, "utf8"));
} catch {
continue; // not a package directory
}
for (const [name, range] of Object.entries(manifest.devDependencies ?? {})) {
if (!name.startsWith("@earendil-works/")) continue;
assert.equal(
range,
"latest",
`${entry.name} devDependency ${name} must track "latest" (refresh locks via scripts/update-pi-devdeps.sh)`,
);
}
}
});