




















@@ -39,6 +39,11 @@ import { getCurrentPluginMetadataSnapshot } from "../../../plugins/current-plugi
3939import { buildAgentHookContextChannelFields } from "../../../plugins/hook-agent-context.js";
4040import { resolveBlockMessage } from "../../../plugins/hook-decision-types.js";
4141import { getGlobalHookRunner } from "../../../plugins/hook-runner-global.js";
42+import type { PluginMetadataSnapshot } from "../../../plugins/plugin-metadata-snapshot.types.js";
43+import {
44+resolveProviderRuntimePluginHandle,
45+type ProviderRuntimePluginHandle,
46+} from "../../../plugins/provider-hook-runtime.js";
4247import {
4348extractModelCompat,
4449resolveToolCallArgumentsEncoding,
@@ -779,6 +784,36 @@ export async function runEmbeddedAttempt(
779784}
780785const effectiveCwd = sandbox?.enabled ? effectiveWorkspace : (requestedCwd ?? effectiveWorkspace);
781786await fs.mkdir(effectiveWorkspace, { recursive: true });
787+let currentPluginMetadataSnapshotResolved = false;
788+let currentPluginMetadataSnapshot: PluginMetadataSnapshot | undefined;
789+const getCurrentAttemptPluginMetadataSnapshot = () => {
790+if (!currentPluginMetadataSnapshotResolved) {
791+currentPluginMetadataSnapshot = getCurrentPluginMetadataSnapshot({
792+config: params.config,
793+env: process.env,
794+workspaceDir: effectiveWorkspace,
795+});
796+currentPluginMetadataSnapshotResolved = true;
797+}
798+return currentPluginMetadataSnapshot;
799+};
800+let providerRuntimeHandle: ProviderRuntimePluginHandle | undefined;
801+const getProviderRuntimeHandle = () => {
802+if (providerRuntimeHandle?.plugin) {
803+return providerRuntimeHandle;
804+}
805+const resolvedHandle = resolveProviderRuntimePluginHandle({
806+provider: params.provider,
807+modelId: params.modelId,
808+config: params.config,
809+workspaceDir: effectiveWorkspace,
810+env: process.env,
811+});
812+if (resolvedHandle.plugin) {
813+providerRuntimeHandle = resolvedHandle;
814+}
815+return resolvedHandle;
816+};
782817const { sessionAgentId } = resolveSessionAgentIds({
783818sessionKey: params.sessionKey,
784819config: params.config,
@@ -1316,6 +1351,7 @@ export async function runEmbeddedAttempt(
13161351modelId: params.modelId,
13171352modelApi: params.model.api,
13181353model: params.model,
1354+runtimeHandle: getProviderRuntimeHandle(),
13191355});
13201356const clientTools = toolsEnabled && !isRawModelRun ? params.clientTools : undefined;
13211357const bundleMcpEnabled = shouldCreateBundleMcpRuntimeForAttempt({
@@ -1395,6 +1431,7 @@ export async function runEmbeddedAttempt(
13951431modelId: params.modelId,
13961432modelApi: params.model.api,
13971433model: params.model,
1434+runtimeHandle: getProviderRuntimeHandle(),
13981435})
13991436 : filteredBundledTools;
14001437const projectedUncompactedEffectiveTools = filterLocalModelLeanTools({
@@ -1541,6 +1578,7 @@ export async function runEmbeddedAttempt(
15411578modelId: params.modelId,
15421579modelApi: params.model.api,
15431580model: params.model,
1581+runtimeHandle: getProviderRuntimeHandle(),
15441582});
1545158315461584const machineName = await getMachineDisplayName();
@@ -1577,6 +1615,7 @@ export async function runEmbeddedAttempt(
15771615modelId: params.modelId,
15781616modelApi: params.model.api,
15791617model: params.model,
1618+runtimeHandle: getProviderRuntimeHandle(),
15801619});
15811620// Resolve channel-specific message actions for system prompt
15821621const channelActions = runtimeChannel
@@ -1680,6 +1719,7 @@ export async function runEmbeddedAttempt(
16801719provider: params.provider,
16811720config: params.config,
16821721workspaceDir: effectiveWorkspace,
1722+runtimeHandle: getProviderRuntimeHandle(),
16831723context: promptContributionContext,
16841724});
16851725@@ -1688,7 +1728,11 @@ export async function runEmbeddedAttempt(
16881728);
16891729const attemptSystemPrompt = buildAttemptSystemPrompt({
16901730 isRawModelRun,
1691- transformProviderSystemPrompt,
1731+transformProviderSystemPrompt: (transformParams) =>
1732+transformProviderSystemPrompt({
1733+ ...transformParams,
1734+runtimeHandle: getProviderRuntimeHandle(),
1735+}),
16921736embeddedSystemPrompt: {
16931737config: params.config,
16941738agentId: sessionAgentId,
@@ -1901,11 +1945,7 @@ export async function runEmbeddedAttempt(
19011945cwd: effectiveCwd,
19021946 agentDir,
19031947cfg: params.config,
1904-pluginMetadataSnapshot: getCurrentPluginMetadataSnapshot({
1905-config: params.config,
1906-env: process.env,
1907-workspaceDir: effectiveWorkspace,
1908-}),
1948+pluginMetadataSnapshot: getCurrentAttemptPluginMetadataSnapshot(),
19091949contextTokenBudget: params.contextTokenBudget,
19101950});
19111951const autoCompactionGuardArgs = {
@@ -2412,6 +2452,7 @@ export async function runEmbeddedAttempt(
24122452provider: params.provider,
24132453config: params.config,
24142454workspaceDir: effectiveWorkspace,
2455+runtimeHandle: getProviderRuntimeHandle(),
24152456});
24162457if (providerTextTransforms) {
24172458activeSession.agent.streamFn = wrapStreamFnTextTransforms({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。