Files
gnome-jarvis/browser-use/extensions.js
T
snxraven aa06c71fe1
Rolling release / release (push) Failing after 1m46s
obsidian
2026-09-14 11:24:10 -04:00

47 lines
1.5 KiB
JavaScript

/**
* Unpacked extensions for the Jarvis Chromium window.
* Playwright starts with --disable-extensions, so these are loaded explicitly.
*/
import fs from 'node:fs';
import os from 'node:os';
import path from 'node:path';
export const BROWSER_EXTENSIONS = [
{ id: 'ublock-origin-lite', name: 'uBlock Origin Lite' },
{ id: 'dark-reader', name: 'Dark Reader' },
];
export function extensionRoot(env = process.env) {
const override = String(env.JARVIS_BROWSER_EXTENSIONS || '').trim();
if (override) return override;
const state = env.XDG_STATE_HOME || path.join(os.homedir(), '.local/state');
return path.join(state, 'jarvis', 'browser', 'extensions');
}
export function installedExtensionDirs(root = extensionRoot()) {
const dirs = [];
for (const ext of BROWSER_EXTENSIONS) {
const dir = path.join(root, ext.id);
try {
if (fs.existsSync(path.join(dir, 'manifest.json'))) dirs.push(dir);
} catch {
// A missing or unreadable extension is skipped so the browser still starts.
}
}
return dirs;
}
export function extensionLaunch(dirs = installedExtensionDirs()) {
const list = (Array.isArray(dirs) ? dirs : []).filter(Boolean);
if (!list.length) return { args: [], ignoreDefaultArgs: undefined, extensions: [] };
const joined = list.join(',');
return {
args: [
`--disable-extensions-except=${joined}`,
`--load-extension=${joined}`,
],
ignoreDefaultArgs: ['--disable-extensions'],
extensions: list.map((dir) => path.basename(dir)),
};
}