From 931081459e6e47e0d63379632c1f70b4ee6e9f31 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 27 Sep 2026 18:59:37 +0800 Subject: [PATCH] fix(contracts): add release.resolved event consumed across W2-B/W2-C MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plan §5 has W2-B emit and W2-C consume `release.resolved`, but EventType / EVENT_PAYLOADS lacked it, so the two parallel subtasks would each invent a payload. Minimal payload: sourceReleaseId, observationId, mediaEntityId, contentUnitIds, evidenceLevel (contracts EvidenceLevel). Co-Authored-By: Claude Fable 5.1 --- packages/contracts/src/events.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/contracts/src/events.ts b/packages/contracts/src/events.ts index efec3d86..75846732 100644 --- a/packages/contracts/src/events.ts +++ b/packages/contracts/src/events.ts @@ -1,6 +1,7 @@ import { z } from "zod"; import { AgentRunStatus, DecisionKind, DecisionStatus, Severity } from "./agent.ts"; import { Id, NonNegInt, Timestamp } from "./common.ts"; +import { EvidenceLevel } from "./identity.ts"; import { DownloadStatus, PauseReason, TaskKind, TaskStatus } from "./execution.ts"; import { OrganizationStatus } from "./organization.ts"; import { FeedHealth } from "./sources.ts"; @@ -41,6 +42,8 @@ export const EventType = { feedFetched: "feed.fetched", feedHealthChanged: "feed.health_changed", + releaseResolved: "release.resolved", + decisionCreated: "decision.created", decisionUpdated: "decision.updated", } as const; @@ -136,6 +139,15 @@ export const FeedHealthChangedPayload = z.object({ reason: z.string().nullable(), }); +/** 来源发布已识别到本地作品(W2-B 发出,W2-C 的 evaluateAcquisition 消费);歧义/无匹配走 decision.created */ +export const ReleaseResolvedPayload = z.object({ + sourceReleaseId: Id, + observationId: Id.nullable(), + mediaEntityId: Id, + contentUnitIds: z.array(Id), + evidenceLevel: EvidenceLevel, +}); + export const DecisionCreatedPayload = z.object({ decisionId: Id, kind: DecisionKind, @@ -163,6 +175,7 @@ export const EVENT_PAYLOADS = { "agent.tool_call": AgentToolCallPayload, "feed.fetched": FeedFetchedPayload, "feed.health_changed": FeedHealthChangedPayload, + "release.resolved": ReleaseResolvedPayload, "decision.created": DecisionCreatedPayload, "decision.updated": DecisionUpdatedPayload, } as const satisfies Record;