feat(agent): 运行时从 pi-agent-core 0.99.2 迁到 pi-durable 1.1.0 + pi-ai 1.1.0

- PiAgentRuntime 改用 pi-durable Harness:每个 run 一个 JSONL 存储目录 sessionDir/<runId>/ + root 对话;
  系统提示 / 能力工具 / 白名单与预算钩子装在每次运行自己的扩展里;watchEvents 翻译成 AgentRunEvent
- 挂起(工具内 close)立即封口,调用保持未完成,重开后 resume 重放;replayGate 用调用级 memo
- 旧格式 <runId>.jsonl 打开时抛 LegacySessionError;skills 加载与 <skill> 块格式内置(源自 pi-agent-core,MIT)
- tool_call_end 新增可选 durationMs;用量取 pi.usage 合计(整段会话总量)
- Azure provider 改名 azure,迁移 0093 改存量;移除 pi-agent-core,锁 pi-durable/pi-ai/chord 1.1.0
- 文档:ADR-003、pi-providers、runbook、agent README、CHANGELOG

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-08 13:42:36 +08:00
1 parent dd0f6e2c09
commit 003815591c
24 files changed
+756 -363

No files matched your search

+2
View File
@@ -63,6 +63,8 @@ const ToolCallEnd = z.object({
/** 已脱敏、截断的输出摘要 */
outputSummary: z.string(),
recovery: z.boolean(),
/** 工具执行耗时(毫秒,单调时钟;没真正执行的调用没有) */
durationMs: z.number().int().nonnegative().optional(),
});
const ToolCallRejected = z.object({
type: z.literal("tool_call_rejected"),
+3 -3
View File
@@ -3,14 +3,14 @@ import { Id, Timestamp } from "./common.ts";
// Pi 模型上游(W7-A):一个上游 = 一个 pi-ai provider 的一份凭据(API Key / 订阅登录 token / 环境凭据)。
// 同一 provider 可以建多个上游(例如两个 Codex 账号);Agent 运行按上游 id 取凭据。
// 研究结论与映射见 docs/design/pi-providers.md;provider 列表锁定 pi-ai 0.99.2 的 builtinProviders()。
// 研究结论与映射见 docs/design/pi-providers.md;provider 列表锁定 pi-ai 1.1.0 的 builtinProviders()(1.0.3 起 azure-openai-responses 改名 azure,迁移 0093 已改存量)。
/** pi-ai 0.99.2 内置的 42 个 provider id(含 TypeSafe 分类服务) */
/** pi-ai 1.1.0 内置的 42 个 provider id(含 TypeSafe 分类服务) */
export const PI_BUILTIN_PROVIDER_IDS = [
"amazon-bedrock",
"ant-ling",
"anthropic",
"azure-openai-responses",
"azure",
"baseten",
"cerebras",
"cloudflare-ai-gateway",