File size: 1,000 Bytes
4c76b0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { mediaKindFromMime } from "@openclaw/media-core/constants";
import { detectMime } from "@openclaw/media-core/mime";
import { isVoiceMessageCompatibleAudio } from "../../media/audio.js";
import { createLazyRuntimeMethod } from "../../shared/lazy-runtime.js";
import type { PluginRuntime } from "./types.js";

const loadWebMedia = createLazyRuntimeMethod(
  () => import("../../media/web-media.js"),
  (runtime) => runtime.loadWebMedia,
);
const getImageMetadata = createLazyRuntimeMethod(
  () => import("../../media/image-ops.js"),
  (runtime) => runtime.getImageMetadata,
);
const resizeToJpeg = createLazyRuntimeMethod(
  () => import("../../media/image-ops.js"),
  (runtime) => runtime.resizeToJpeg,
);

/** Creates the plugin runtime media facade. */
export function createRuntimeMedia(): PluginRuntime["media"] {
  return {
    loadWebMedia,
    detectMime,
    mediaKindFromMime,
    isVoiceCompatibleAudio: isVoiceMessageCompatibleAudio,
    getImageMetadata,
    resizeToJpeg,
  };
}