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
+7 -7
View File
@@ -124,15 +124,15 @@ describe("disableInContent", () => {
expect(loaderSeesDisabled(content)).toBe(true);
});
it("reports no-frontmatter for a BOM-prefixed file, matching what the loader sees", () => {
// The parser doesn't accept a BOM either — it reports an empty frontmatter
// and treats the whole file as body. So refusing here is agreement with the
// read side, not a gap: inserting the key would have no effect on loading.
it("disables a BOM-prefixed file, matching what the loader sees", () => {
// Pi ≥1.3's parser skips a leading BOM, so the block behind it is real
// frontmatter — refusing here would leave a file the loader reads enabled
// while reporting "nothing to do". The edit keeps the BOM in place.
const src = "---\ndescription: Scout\n---\n\nBody.\n";
expect(parseFrontmatter<Record<string, unknown>>(src).frontmatter).toEqual({});
const { content, outcome } = disableInContent(src);
expect(outcome).toBe("no-frontmatter");
expect(content).toBe(src);
expect(outcome).toBe("disabled");
expect(content.startsWith("")).toBe(true);
expect(loaderSeesDisabled(content)).toBe(true);
});
});