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
@@ -21,6 +21,8 @@ import {
agentCall,
agentToolCalls,
agentToolResults,
contextSystemPrompt,
contextToolNames,
conversationText,
invokedToolNames,
type PrintModeRun,
@@ -92,7 +94,7 @@ describe.skipIf(LIVE)("subagents print-mode e2e (scripted faux, real pi-mono)",
// finishes → the child's own model turn actually runs (≥3 calls).
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms));
const respond = async (ctx: Context) => {
const isParent = (ctx.tools ?? []).some((t) => t.name === "Agent");
const isParent = contextToolNames(ctx).includes("Agent");
if (!isParent) {
await sleep(80); // child takes long enough that a non-held parent exits first
return "CHILD_BG_RAN";
@@ -151,7 +153,7 @@ describe.skipIf(LIVE)("subagents print-mode e2e (scripted faux, real pi-mono)",
parentFinal: "Reported.",
// The child reflects whether the frontmatter body reached its own prompt.
subagent: (ctx: Context) =>
`child saw: ${ctx.systemPrompt?.includes(MARKER) ? MARKER : "MISSING"}`,
`child saw: ${contextSystemPrompt(ctx).includes(MARKER) ? MARKER : "MISSING"}`,
}),
});
@@ -185,7 +187,7 @@ describe.skipIf(LIVE)("subagents print-mode e2e (scripted faux, real pi-mono)",
}),
parentFinal: "Reported.",
subagent: (ctx: Context) =>
`child saw: ${ctx.systemPrompt?.includes(MARKER) ? MARKER : "MISSING"}`,
`child saw: ${contextSystemPrompt(ctx).includes(MARKER) ? MARKER : "MISSING"}`,
}),
});