Skip to content

feat(pi): load whitelisted Pi extensions in managed runtime - #1955

Open
tim-korso wants to merge 1 commit into
proma-ai:mainfrom
tim-korso:feat/extensions-whitelist
Open

feat(pi): load whitelisted Pi extensions in managed runtime#1955
tim-korso wants to merge 1 commit into
proma-ai:mainfrom
tim-korso:feat/extensions-whitelist

Conversation

@tim-korso

Copy link
Copy Markdown

动机

Proma 的受管 Pi runtime 目前完全禁止加载 Pi 扩展(noExtensions: true 且从不传 additionalExtensionPaths),用户无法在 Proma 里使用任何 Pi 扩展。

典型案例:pi-v4-anchor-all(DeepSeek trajectory anchor)必须作为 Pi extension 才能 hook before_provider_request / after_provider_response 去改写 wire 载荷、限制工具集。MCP 只能暴露为普通工具,无法表达「请求改写 + 工具集限制」——所以 MCP 不是替代品。

改动(最小)

  • createPromaManagedResourceLoaderOptions(options?):可选 additionalExtensionPaths,只在非空时透传给 Pi DefaultResourceLoader
  • pi-agent-adapter.ts:接收 input.additionalExtensionPaths 并透传。

设计约束(保留原来的「受管 runtime 不被 ambient 污染」)

  • noExtensions: true 保持:既不读 ~/.pi/agent/settings.json 的用户包,也不读项目级 .pi 包。
  • 只加载显式白名单传入的本地扩展路径。Pi resource-loadernoExtensions 下仍加载 additionalExtensionPaths(走 CLI/temporary 通道),所以这个改动不会重新放开 ambient 发现。

验证

  • bun run --filter='*' typecheck 需在依赖安装齐全后跑(本仓库无 node_modules 时无法本地验证,改动仅是字段透传)。
  • 后续可在 Proma workspace 配置中接入白名单路径后实测 extension 生命周期钩子。

Closes #1954

Add optional additionalExtensionPaths passthrough to
createPromaManagedResourceLoaderOptions and the agent adapter.

noExtensions stays true so ambient user/project settings discovery is
still disabled; only explicitly provided local extension paths load
(Pi resource-loader loads CLI/temporary paths even under noExtensions).

Ref proma-ai#1954
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: allow loading Pi extensions (additionalExtensionPaths) in the Proma-managed Pi runtime

1 participant