Skip to content

Commit 65e2120

Browse files
WarrenJonesWarrenJones
andauthored
fix(hooks): pass media metadata to received hook
Forward canonical inbound media metadata to plugin message_received hooks so plugins can inspect the same mediaPath, mediaUrl, mediaType, mediaPaths, mediaUrls, and mediaTypes fields already available to inbound_claim. Verification: - node scripts/run-vitest.mjs src/hooks/message-hook-mappers.test.ts - /Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode branch --base origin/main Refs: #87297 Co-authored-by: WarrenJones <[email protected]>
1 parent d00e764 commit 65e2120

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

src/hooks/message-hook-mappers.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ function makeInboundCtx(overrides: Partial<FinalizedMsgContext> = {}): Finalized
4141
SenderE164: "+15551234567",
4242
MessageThreadId: 42,
4343
MediaPath: "/tmp/audio.ogg",
44+
MediaUrl: "https://cdn.example.com/audio.ogg",
4445
MediaType: "audio/ogg",
4546
GroupSubject: "ops",
4647
GroupChannel: "ops-room",
@@ -198,7 +199,14 @@ describe("message hook mappers", () => {
198199
parentSpanId: "3333333333333333",
199200
};
200201
const canonical = {
201-
...deriveInboundMessageHookContext(makeInboundCtx({ TopicName: "Deployments" })),
202+
...deriveInboundMessageHookContext(
203+
makeInboundCtx({
204+
TopicName: "Deployments",
205+
MediaPaths: ["/tmp/audio.ogg", "/tmp/photo.jpg"],
206+
MediaUrls: ["https://cdn.example.com/audio.ogg", "https://cdn.example.com/photo.jpg"],
207+
MediaTypes: ["audio/ogg", "image/jpeg"],
208+
}),
209+
),
202210
runId: "run-1",
203211
trace,
204212
callDepth: 2,
@@ -245,6 +253,15 @@ describe("message hook mappers", () => {
245253
expect(receivedMetadata?.senderName).toBe("User One");
246254
expect(receivedMetadata?.threadId).toBe(42);
247255
expect(receivedMetadata?.topicName).toBe("Deployments");
256+
expect(receivedMetadata?.mediaPath).toBe("/tmp/audio.ogg");
257+
expect(receivedMetadata?.mediaUrl).toBe("https://cdn.example.com/audio.ogg");
258+
expect(receivedMetadata?.mediaType).toBe("audio/ogg");
259+
expect(receivedMetadata?.mediaPaths).toEqual(["/tmp/audio.ogg", "/tmp/photo.jpg"]);
260+
expect(receivedMetadata?.mediaUrls).toEqual([
261+
"https://cdn.example.com/audio.ogg",
262+
"https://cdn.example.com/photo.jpg",
263+
]);
264+
expect(receivedMetadata?.mediaTypes).toEqual(["audio/ogg", "image/jpeg"]);
248265
const internalReceived = toInternalMessageReceivedContext(canonical);
249266
const { metadata: internalMetadata, ...internalReceivedBase } = internalReceived;
250267
expect(internalReceivedBase).toEqual({

src/hooks/message-hook-mappers.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,12 @@ export function toPluginMessageReceivedEvent(
381381
senderName: canonical.senderName,
382382
senderUsername: canonical.senderUsername,
383383
senderE164: canonical.senderE164,
384+
mediaPath: canonical.mediaPath,
385+
mediaUrl: canonical.mediaUrl,
386+
mediaType: canonical.mediaType,
387+
mediaPaths: canonical.mediaPaths,
388+
mediaUrls: canonical.mediaUrls,
389+
mediaTypes: canonical.mediaTypes,
384390
guildId: canonical.guildId,
385391
channelName: canonical.channelName,
386392
topicName: canonical.topicName,

0 commit comments

Comments
 (0)