refactor: consolidate message delivery API

This commit is contained in:
Peter Steinberger
2026-05-09 07:02:33 +01:00
parent 195db88d71
commit a4b17d65a8
74 changed files with 1561 additions and 340 deletions

View File

@@ -758,7 +758,7 @@ export const PLUGIN_COMPAT_RECORDS = [
surfaces: ["api.runtime.config.loadConfig", "api.runtime.config.writeConfigFile"],
diagnostics: [
"plugin runtime compatibility warning",
"deprecated internal config API guard",
"deprecated API usage guard",
"runtime channel config boundary guard",
],
tests: [

View File

@@ -77,6 +77,8 @@ export type PluginHookMessageSendingEvent = {
export type PluginHookMessageSendingResult = {
content?: string;
cancel?: boolean;
cancelReason?: string;
metadata?: Record<string, unknown>;
};
export type PluginHookMessageSentEvent = {

View File

@@ -1045,6 +1045,8 @@ export function createHookRunner(
return {
content: lastDefined(acc?.content, next.content),
cancel: stickyTrue(acc?.cancel, next.cancel),
cancelReason: lastDefined(acc?.cancelReason, next.cancelReason),
metadata: next.metadata ?? acc?.metadata,
};
},
shouldStop: (result) => result.cancel === true,

View File

@@ -47,8 +47,8 @@ describe("message_sending hook runner", () => {
{
name: "runMessageSending can cancel message delivery",
event: { to: "user-123", content: "blocked" },
hookResult: { cancel: true },
expected: { cancel: true },
hookResult: { cancel: true, cancelReason: "policy", metadata: { owner: "agent-2" } },
expected: { cancel: true, cancelReason: "policy", metadata: { owner: "agent-2" } },
},
] as const)("$name", async ({ event, hookResult, expected }) => {
await expectMessageHookCall({