





























@@ -1,16 +1,25 @@
1-export type DraftPreviewFinalizerDraft<TId> = {
2-flush: () => Promise<void>;
3-id: () => TId | undefined;
4-seal?: () => Promise<void>;
5-discardPending?: () => Promise<void>;
6-clear: () => Promise<void>;
7-};
1+import {
2+deliverFinalizableLivePreview,
3+type LivePreviewFinalizerDraft,
4+type LivePreviewFinalizerResultKind,
5+} from "./message/live.js";
869-export type DraftPreviewFinalizerResult =
10- | "normal-delivered"
11- | "normal-skipped"
12- | "preview-finalized";
7+/**
8+ * @deprecated Use `LivePreviewFinalizerDraft` from `openclaw/plugin-sdk/channel-message`.
9+ */
10+export type DraftPreviewFinalizerDraft<TId> = LivePreviewFinalizerDraft<TId>;
131112+/**
13+ * @deprecated Use `LivePreviewFinalizerResult` from `openclaw/plugin-sdk/channel-message`.
14+ */
15+export type DraftPreviewFinalizerResult = Exclude<
16+LivePreviewFinalizerResultKind,
17+"preview-retained"
18+>;
19+20+/**
21+ * @deprecated Use `deliverFinalizableLivePreview` from `openclaw/plugin-sdk/channel-message`.
22+ */
1423export async function deliverFinalizableDraftPreview<TPayload, TId, TEdit>(params: {
1524kind: "tool" | "block" | "final";
1625payload: TPayload;
@@ -22,49 +31,21 @@ export async function deliverFinalizableDraftPreview<TPayload, TId, TEdit>(param
2231onNormalDelivered?: () => Promise<void> | void;
2332logPreviewEditFailure?: (error: unknown) => void;
2433}): Promise<DraftPreviewFinalizerResult> {
25-if (params.kind !== "final" || !params.draft) {
26-const delivered = await params.deliverNormally(params.payload);
27-if (delivered === false) {
28-return "normal-skipped";
29-}
30-await params.onNormalDelivered?.();
31-return "normal-delivered";
32-}
33-34-const edit = params.buildFinalEdit(params.payload);
35-if (edit !== undefined) {
36-await params.draft.flush();
37-const previewId = params.draft.id();
38-if (previewId !== undefined) {
39-await params.draft.seal?.();
40-try {
41-await params.editFinal(previewId, edit);
42-await params.onPreviewFinalized?.(previewId);
43-return "preview-finalized";
44-} catch (err) {
45-params.logPreviewEditFailure?.(err);
46-}
47-}
48-}
49-50-if (params.draft.discardPending) {
51-await params.draft.discardPending();
52-} else {
53-await params.draft.clear();
54-}
55-56-let delivered = false;
57-try {
58-const result = await params.deliverNormally(params.payload);
59-delivered = result !== false;
60-if (delivered) {
61-await params.onNormalDelivered?.();
62-}
63-} finally {
64-if (delivered) {
65-await params.draft.clear();
66-}
67-}
34+const result = await deliverFinalizableLivePreview({
35+kind: params.kind,
36+payload: params.payload,
37+ ...(params.draft ? { draft: params.draft } : {}),
38+buildFinalEdit: params.buildFinalEdit,
39+editFinal: params.editFinal,
40+deliverNormally: params.deliverNormally,
41+onPreviewFinalized: async (id) => {
42+await params.onPreviewFinalized?.(id);
43+},
44+ ...(params.onNormalDelivered ? { onNormalDelivered: params.onNormalDelivered } : {}),
45+ ...(params.logPreviewEditFailure
46+ ? { logPreviewEditFailure: params.logPreviewEditFailure }
47+ : {}),
48+});
684969-return delivered ? "normal-delivered" : "normal-skipped";
50+return result.kind === "preview-retained" ? "normal-skipped" : result.kind;
7051}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。