fix(coding-agent): guard clipboard native load
This commit is contained in:
@@ -1,22 +1,8 @@
|
||||
import { spawnSync } from "child_process";
|
||||
import { createRequire } from "module";
|
||||
|
||||
import { clipboard } from "./clipboard-native.js";
|
||||
import { loadPhoton } from "./photon.js";
|
||||
|
||||
type ClipboardModule = {
|
||||
hasImage: () => boolean;
|
||||
getImageBinary: () => Promise<Array<number>>;
|
||||
};
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
let Clipboard: ClipboardModule | null = null;
|
||||
|
||||
try {
|
||||
Clipboard = require("@mariozechner/clipboard") as ClipboardModule;
|
||||
} catch {
|
||||
Clipboard = null;
|
||||
}
|
||||
|
||||
export type ClipboardImage = {
|
||||
bytes: Uint8Array;
|
||||
mimeType: string;
|
||||
@@ -191,11 +177,11 @@ export async function readClipboardImage(options?: {
|
||||
if (platform === "linux" && isWaylandSession(env)) {
|
||||
image = readClipboardImageViaWlPaste() ?? readClipboardImageViaXclip();
|
||||
} else {
|
||||
if (!Clipboard || !Clipboard.hasImage()) {
|
||||
if (!clipboard || !clipboard.hasImage()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const imageData = await Clipboard.getImageBinary();
|
||||
const imageData = await clipboard.getImageBinary();
|
||||
if (!imageData || imageData.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
21
packages/coding-agent/src/utils/clipboard-native.ts
Normal file
21
packages/coding-agent/src/utils/clipboard-native.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { createRequire } from "module";
|
||||
|
||||
export type ClipboardModule = {
|
||||
hasImage: () => boolean;
|
||||
getImageBinary: () => Promise<Array<number>>;
|
||||
};
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
let clipboard: ClipboardModule | null = null;
|
||||
|
||||
const hasDisplay = process.platform !== "linux" || Boolean(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
|
||||
|
||||
if (!process.env.TERMUX_VERSION && hasDisplay) {
|
||||
try {
|
||||
clipboard = require("@mariozechner/clipboard") as ClipboardModule;
|
||||
} catch {
|
||||
clipboard = null;
|
||||
}
|
||||
}
|
||||
|
||||
export { clipboard };
|
||||
Reference in New Issue
Block a user