different-ai/openwork · error
projectDir and sourceDir are required
Error message
projectDir and sourceDir are required
What it means
Error "projectDir and sourceDir are required" thrown in different-ai/openwork.
Source
Thrown at apps/desktop/electron/main.mjs:2054
});
if (result.canceled) return null;
return options.multiple ? result.filePaths : (result.filePaths[0] ?? null);
},
"saveFile": async (event, ...args) => {
const options = args[0] ?? {};
const result = await dialog.showSaveDialog(activeWindowFromEvent(event), {
title: options.title,
defaultPath: options.defaultPath,
filters: options.filters,
});
return result.canceled ? null : (result.filePath ?? null);
},
"importSkill": async (event, ...args) => {
const projectDir = String(args[0] ?? "").trim();
const sourceDir = String(args[1] ?? "").trim();
const overwrite = args[2]?.overwrite === true;
if (!projectDir || !sourceDir) {
throw new Error("projectDir and sourceDir are required");
}
const skillRoot = await ensureProjectSkillRoot(projectDir);
const name = validateSkillName(path.basename(sourceDir));
const destination = path.join(skillRoot, name);
if (await pathExists(destination)) {
if (!overwrite) {
return execResult(false, "", `Skill already exists at ${destination}`);
}
await rm(destination, { recursive: true, force: true });
}
await cp(sourceDir, destination, { recursive: true });
return execResult(true, `Imported skill to ${destination}`);
},
"installSkillTemplate": async (event, ...args) => {
const projectDir = String(args[0] ?? "").trim();
const name = validateSkillName(args[1]);
const content = String(args[2] ?? "");
const overwrite = args[3]?.overwrite === true;View on GitHub (pinned to 2b7df46e8a)
When it happens
Trigger: Thrown at apps/desktop/electron/main.mjs:2054 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/95822bb2c400e960.
Report an issue: GitHub.