





















@@ -2298,36 +2298,45 @@ export function createPluginRegistry(registryParams: PluginRegistryParams) {
22982298});
22992299return;
23002300}
2301+const effectiveHookName = hookName === "deactivate" ? "gateway_stop" : hookName;
2302+if (hookName === "deactivate") {
2303+pushDiagnostic({
2304+level: "warn",
2305+pluginId: record.id,
2306+source: record.source,
2307+message: 'typed hook "deactivate" is a compatibility alias for "gateway_stop"',
2308+});
2309+}
23012310let effectiveHandler = handler;
2302-if (policy?.allowPromptInjection === false && isPromptInjectionHookName(hookName)) {
2303-if (hookName !== "before_agent_start") {
2311+if (policy?.allowPromptInjection === false && isPromptInjectionHookName(effectiveHookName)) {
2312+if (effectiveHookName !== "before_agent_start") {
23042313pushDiagnostic({
23052314level: "warn",
23062315pluginId: record.id,
23072316source: record.source,
2308-message: `typed hook "${hookName}" blocked by plugins.entries.${record.id}.hooks.allowPromptInjection=false`,
2317+message: `typed hook "${effectiveHookName}" blocked by plugins.entries.${record.id}.hooks.allowPromptInjection=false`,
23092318});
23102319return;
23112320}
23122321pushDiagnostic({
23132322level: "warn",
23142323pluginId: record.id,
23152324source: record.source,
2316-message: `typed hook "${hookName}" prompt fields constrained by plugins.entries.${record.id}.hooks.allowPromptInjection=false`,
2325+message: `typed hook "${effectiveHookName}" prompt fields constrained by plugins.entries.${record.id}.hooks.allowPromptInjection=false`,
23172326});
23182327effectiveHandler = constrainLegacyPromptInjectionHook(
23192328handler as PluginHookHandlerMap["before_agent_start"],
23202329) as PluginHookHandlerMap[K];
23212330}
2322-if (isConversationHookName(hookName)) {
2331+if (isConversationHookName(effectiveHookName)) {
23232332const explicitConversationAccess = policy?.allowConversationAccess;
23242333if (record.origin !== "bundled" && explicitConversationAccess !== true) {
23252334pushDiagnostic({
23262335level: "warn",
23272336pluginId: record.id,
23282337source: record.source,
23292338message:
2330-`typed hook "${hookName}" blocked because non-bundled plugins must set ` +
2339+`typed hook "${effectiveHookName}" blocked because non-bundled plugins must set ` +
23312340`plugins.entries.${record.id}.hooks.allowConversationAccess=true`,
23322341});
23332342return;
@@ -2337,16 +2346,16 @@ export function createPluginRegistry(registryParams: PluginRegistryParams) {
23372346level: "warn",
23382347pluginId: record.id,
23392348source: record.source,
2340-message: `typed hook "${hookName}" blocked by plugins.entries.${record.id}.hooks.allowConversationAccess=false`,
2349+message: `typed hook "${effectiveHookName}" blocked by plugins.entries.${record.id}.hooks.allowConversationAccess=false`,
23412350});
23422351return;
23432352}
23442353}
2345-const timeoutMs = resolveTypedHookTimeoutMs({ hookName, opts, policy });
2354+const timeoutMs = resolveTypedHookTimeoutMs({ hookName: effectiveHookName, opts, policy });
23462355record.hookCount += 1;
23472356registry.typedHooks.push({
23482357pluginId: record.id,
2349- hookName,
2358+hookName: effectiveHookName,
23502359handler: effectiveHandler,
23512360priority: opts?.priority,
23522361 ...(timeoutMs !== undefined ? { timeoutMs } : {}),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。