Sign In

@panerelay/setup

Package Overview
Dependencies
Maintainers
2
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@panerelay/setup - npm Package Compare versions

Comparing version
0.7.0
to
0.8.0
+1
-1
dist/cli.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,EACL,yBAAyB,EAEzB,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAA8B,MAAM,gBAAgB,CAAC;AAKhG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,GAAG,EAAE,OAAO,CAAC;CACd;AAOD,UAAU,sBAAsB;IAC9B,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,gBAAgB,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,uBAAuB,GAAG,CAC7B,MAAM,EAAE,sBAAsB,KAC3B,OAAO,CAAC,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;AACtD,KAAK,YAAY,GAAG,CAAC,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAiCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAyF9D;AAsPD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,aAAa,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,eAAe,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACxD,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,cAAc,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,kBAAkB,CAAC;CACvC;AAoID,wBAAsB,IAAI,CACxB,IAAI,GAAE,MAAM,EAA0B,EACtC,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CAoOjB"}
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAmBA,OAAO,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AACjE,OAAO,EAA6C,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,EACL,yBAAyB,EAEzB,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAA8B,MAAM,gBAAgB,CAAC;AAKhG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,cAAc,CAAC;IAC1B,GAAG,EAAE,OAAO,CAAC;CACd;AAmBD,UAAU,sBAAsB;IAC9B,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,gBAAgB,CAAC;KACzB,CAAC,CAAC;CACJ;AAED,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,uBAAuB,GAAG,CAC7B,MAAM,EAAE,sBAAsB,KAC3B,OAAO,CAAC,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC;AACtD,KAAK,YAAY,GAAG,CAAC,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAiCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAyF9D;AAsPD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,aAAa,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,eAAe,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACxD,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;IAC7C,KAAK,CAAC,EAAE,OAAO,cAAc,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,kBAAkB,CAAC;CACvC;AAoID,wBAAsB,IAAI,CACxB,IAAI,GAAE,MAAM,EAA0B,EACtC,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CAwOjB"}

@@ -7,2 +7,3 @@ #!/usr/bin/env node

import { realpathSync } from 'node:fs';
import { readFile } from 'node:fs/promises';
import { resolve } from 'node:path';

@@ -16,2 +17,11 @@ import { stdin, stdout } from 'node:process';

const PANERELAY_CHROME_WEB_STORE_URL = 'https://chromewebstore.google.com/detail/panerelay/panplnkjlkoceaonlmpdekjphgmbggmi';
function versionRequested(argv) {
return argv.includes('--version') || argv.includes('-v');
}
async function packageVersion() {
const manifest = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
if (typeof manifest.version !== 'string')
throw new Error('Setup package version is invalid');
return manifest.version;
}
function languageValue(argv) {

@@ -488,2 +498,6 @@ for (let index = 0; index < argv.length; index += 1) {

export async function main(argv = process.argv.slice(2), dependencies = {}) {
if (versionRequested(argv)) {
console.log(`v${await packageVersion()}`);
return 0;
}
let locale = resolveLocale({

@@ -490,0 +504,0 @@ environment: dependencies.environment,

@@ -1,1 +0,1 @@

{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AASA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAWlF,OAAO,EAKL,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAA8B,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAIhG,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACrD,eAAe,CAAC,EAAE,OAAO,uBAAuB,CAAC;IACjD,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAyHD,wBAAsB,eAAe,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiWxF"}
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAYA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAgB9F,OAAO,EAKL,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAA8B,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAIhG,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACrD,eAAe,CAAC,EAAE,OAAO,uBAAuB,CAAC;IACjD,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAyHD,wBAAsB,eAAe,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsbxF"}

@@ -5,6 +5,6 @@ import { constants } from 'node:fs';

import { join } from 'node:path';
import { readWindowsNativeHostRegistryValue, resolveEffectiveExtensionId, resolveNativeHostInstallationPaths, } from '@panerelay/bridge/install';
import { isExecutableFile } from '@panerelay/bridge/platform';
import { readWindowsNativeHostRegistryValue, nativeHostBundlePath, readNativeHostUpdateLockRecord, readNativeHostVersionPointer, resolveEffectiveExtensionId, resolveNativeHostInstallationPaths, } from '@panerelay/bridge/install';
import { isExecutableFile, runCommand } from '@panerelay/bridge/platform';
import { AGENT_BROWSER_MINIMUM_VERSION, CLAUDE_CODE_MINIMUM_VERSION, isClaudeCodeSupported, } from '@panerelay/bridge/compatibility';
import { PANERELAY_EXTENSION_ID, PANERELAY_NATIVE_HOST_NAME } from '@panerelay/protocol';
import { PANERELAY_EXTENSION_ID, PANERELAY_NATIVE_HOST_NAME, PANERELAY_PROTOCOL_VERSION, isPanerelayReleaseVersion, } from '@panerelay/protocol';
import { listBrowserRegistrations, readLiveLegacyBrowserRegistration, } from '@panerelay/browser-registry';

@@ -250,2 +250,78 @@ import { BROWSER_USE_MINIMUM_VERSION, PANERELAY_BROWSER_USE_GATEWAY_URL, browserUseInstallationStatus, browserUseEnvironmentPath, probeBrowserUseVersions, } from '@panerelay/browser-use';

}
let selectedRelease;
try {
const pointer = await readNativeHostVersionPointer(paths.currentVersionPath, platform);
selectedRelease = pointer.version;
checks.push({
id: 'native-version-pointer',
label: 'Panerelay Native Host version pointer',
status: 'pass',
detail: pointer.version,
});
}
catch (error) {
checks.push({
id: 'native-version-pointer',
label: 'Panerelay Native Host version pointer',
status: 'fail',
detail: error instanceof Error ? error.message : String(error),
hint: `Run: ${SETUP_COMMAND}`,
});
}
if (selectedRelease) {
const selectedBundlePath = nativeHostBundlePath(paths.hostsDirectory, selectedRelease);
checks.push(await executableCheck('native-selected-bundle', 'Selected Panerelay Native Host bundle', selectedBundlePath, `Run: ${SETUP_COMMAND}`, platform));
try {
const result = await (options.commandRunner ?? runCommand)(process.execPath, [selectedBundlePath, '--self-check'], { environment: options.environment, timeoutMs: 5_000 });
const identity = JSON.parse(result.stdout);
const ready = result.code === 0 &&
identity.protocol === PANERELAY_PROTOCOL_VERSION &&
isPanerelayReleaseVersion(identity.release) &&
identity.release === selectedRelease;
checks.push({
id: 'native-embedded-release',
label: 'Embedded Panerelay Native Host release',
status: ready ? 'pass' : 'fail',
detail: ready ? selectedRelease : 'Selected bundle identity does not match its pointer',
...(ready ? {} : { hint: `Run: ${SETUP_COMMAND}` }),
});
}
catch (error) {
checks.push({
id: 'native-embedded-release',
label: 'Embedded Panerelay Native Host release',
status: 'fail',
detail: error instanceof Error ? error.message : String(error),
hint: `Run: ${SETUP_COMMAND}`,
});
}
}
try {
const lock = await readNativeHostUpdateLockRecord(paths.updateLockPath, platform);
checks.push({
id: 'native-update-lock',
label: 'Panerelay Native Host update lock',
status: 'warn',
detail: `PID ${lock.pid} is updating to ${lock.targetVersion}`,
});
}
catch (error) {
if (error.code === 'ENOENT') {
checks.push({
id: 'native-update-lock',
label: 'Panerelay Native Host update lock',
status: 'pass',
detail: 'No active update',
});
}
else {
checks.push({
id: 'native-update-lock',
label: 'Panerelay Native Host update lock',
status: 'fail',
detail: error instanceof Error ? error.message : String(error),
hint: `Run: ${SETUP_COMMAND}`,
});
}
}
checks.push(await nativeManifestCheck(paths.manifestPaths, paths.launchPath, extensionId));

@@ -252,0 +328,0 @@ if (platform === 'win32') {

@@ -70,3 +70,3 @@ export type SupportedLocale = 'en' | 'zh-CN';

readonly integrationSelectPrompt: "Select integrations (checked: install/update; unchecked: remove Panerelay integration)";
readonly help: "Panerelay Setup\n\nUsage:\n npx --yes @panerelay/setup [--agent-browser] [--browser-use] [--playwright] [--global-default] [--extension-id <id>] [--lang <language>]\n npx --yes @panerelay/setup doctor [--agent-browser] [--browser-use] [--playwright] [--global-default] [--extension-id <id>] [--json] [--lang <language>]\n npx --yes @panerelay/setup uninstall [--yes] [--lang <language>]\n\nCommands:\n setup Install the Native Host for the Extension and side panel (default)\n doctor Diagnose the local Panerelay integration\n uninstall Remove Panerelay-managed local integration files\n\nOptions:\n --agent-browser Also install or diagnose the Panerelay agent-browser integration\n --browser-use Also install or diagnose the Panerelay Browser Use integration\n --playwright Also install or diagnose the Panerelay Playwright CLI integration\n --global-default\n Set selected automation integrations as user-level defaults\n --extension-id\n Use a custom 32-character Chrome Extension ID for this installation\n --json Print a machine-readable doctor report\n --lang Use en or zh-CN instead of the system language\n --yes, -y Confirm uninstall without a prompt\n --help, -h Show this help\n\nOptional automation integrations:\n npx --yes @panerelay/setup --agent-browser\n npx --yes @panerelay/setup --browser-use\n npx --yes @panerelay/setup --playwright";
readonly help: "Panerelay Setup\n\nUsage:\n npx --yes @panerelay/setup [--agent-browser] [--browser-use] [--playwright] [--global-default] [--extension-id <id>] [--lang <language>]\n npx --yes @panerelay/setup doctor [--agent-browser] [--browser-use] [--playwright] [--global-default] [--extension-id <id>] [--json] [--lang <language>]\n npx --yes @panerelay/setup uninstall [--yes] [--lang <language>]\n\nCommands:\n setup Install the Native Host for the Extension and side panel (default)\n doctor Diagnose the local Panerelay integration\n uninstall Remove Panerelay-managed local integration files\n\nOptions:\n --agent-browser Also install or diagnose the Panerelay agent-browser integration\n --browser-use Also install or diagnose the Panerelay Browser Use integration\n --playwright Also install or diagnose the Panerelay Playwright CLI integration\n --global-default\n Set selected automation integrations as user-level defaults\n --extension-id\n Use a custom 32-character Chrome Extension ID for this installation\n --json Print a machine-readable doctor report\n --lang Use en or zh-CN instead of the system language\n --yes, -y Confirm uninstall without a prompt\n --version, -v\n Show the version\n --help, -h Show this help\n\nOptional automation integrations:\n npx --yes @panerelay/setup --agent-browser\n npx --yes @panerelay/setup --browser-use\n npx --yes @panerelay/setup --playwright";
readonly nativeHost: "Native Host: {path}";

@@ -73,0 +73,0 @@ readonly nonInteractiveUninstall: "Non-interactive input detected. Re-run with --yes.";

@@ -1,1 +0,1 @@

{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC;AAE7C,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GX,CAAC;AAEX,KAAK,UAAU,GAAG,MAAM,OAAO,eAAe,CAAC;AAiH/C,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAMtF;AAyBD,wBAAgB,aAAa,CAAC,OAAO,GAAE,uBAA4B,GAAG,eAAe,CAWpF;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,UAAU,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,MAAM,CAGR"}
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC;AAE7C,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHX,CAAC;AAEX,KAAK,UAAU,GAAG,MAAM,OAAO,eAAe,CAAC;AAmH/C,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAMtF;AAyBD,wBAAgB,aAAa,CAAC,OAAO,GAAE,uBAA4B,GAAG,eAAe,CAWpF;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,UAAU,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,MAAM,CAGR"}

@@ -93,2 +93,4 @@ import { execFileSync } from 'node:child_process';

--yes, -y Confirm uninstall without a prompt
--version, -v
Show the version
--help, -h Show this help

@@ -199,2 +201,4 @@

--yes, -y 无需确认直接卸载
--version, -v
显示版本
--help, -h 显示帮助

@@ -201,0 +205,0 @@

#!/usr/bin/env node
// ../browser-use/src/index.ts
// ../adapters/browser-use/src/index.ts
import { readFile as readFile3 } from "node:fs/promises";

@@ -82,5 +82,7 @@

// ../protocol/dist/conversation-target.js
var PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX = "panerelay-tab-v1-";
var CANONICAL_UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
var TARGET_SESSION_PATTERN = new RegExp(`^${PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX}(${CANONICAL_UUID_PATTERN.source.slice(1, -1)})-(${CANONICAL_UUID_PATTERN.source.slice(1, -1)})$`);
var PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX = "panerelay-v2-";
var UUID_BYTES = 16;
var TARGET_BYTES = UUID_BYTES * 2;
var TARGET_PAYLOAD_LENGTH = 43;
var TARGET_SESSION_PATTERN = new RegExp(`^${PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX}([A-Za-z0-9_-]{${TARGET_PAYLOAD_LENGTH}})$`);

@@ -98,3 +100,3 @@ // ../protocol/dist/cdp-bootstrap.js

// ../browser-use/src/adapter.ts
// ../adapters/browser-use/src/adapter.ts
import { execFile } from "node:child_process";

@@ -106,3 +108,3 @@ import { constants } from "node:fs";

// ../browser-use/src/environment.ts
// ../adapters/browser-use/src/environment.ts
import { randomBytes } from "node:crypto";

@@ -202,3 +204,3 @@ import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";

// ../browser-use/src/adapter.ts
// ../adapters/browser-use/src/adapter.ts
var BROWSER_USE_ADAPTER_ID = "browser-use";

@@ -410,3 +412,3 @@ var BROWSER_USE_MINIMUM_VERSION = "0.13.7";

// ../browser-use/src/index.ts
// ../adapters/browser-use/src/index.ts
async function adapterVersion() {

@@ -413,0 +415,0 @@ const value = JSON.parse(await readFile3(new URL("../package.json", import.meta.url), "utf8"));

#!/usr/bin/env node
// ../playwright/src/index.ts
// ../adapters/playwright/src/index.ts
import { execFile } from "node:child_process";

@@ -87,5 +87,8 @@ import { realpathSync } from "node:fs";

// ../protocol/dist/conversation-target.js
var PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX = "panerelay-tab-v1-";
var PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX = "panerelay-v2-";
var CANONICAL_UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
var TARGET_SESSION_PATTERN = new RegExp(`^${PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX}(${CANONICAL_UUID_PATTERN.source.slice(1, -1)})-(${CANONICAL_UUID_PATTERN.source.slice(1, -1)})$`);
var UUID_BYTES = 16;
var TARGET_BYTES = UUID_BYTES * 2;
var TARGET_PAYLOAD_LENGTH = 43;
var TARGET_SESSION_PATTERN = new RegExp(`^${PANERELAY_CONVERSATION_TARGET_SESSION_PREFIX}([A-Za-z0-9_-]{${TARGET_PAYLOAD_LENGTH}})$`);
function isCanonicalUuid(value) {

@@ -112,3 +115,3 @@ return typeof value === "string" && CANONICAL_UUID_PATTERN.test(value);

// ../playwright/src/environment.ts
// ../adapters/playwright/src/environment.ts
var PANERELAY_PLAYWRIGHT_GATEWAY_PATH = "/cdp/playwright";

@@ -129,3 +132,3 @@ var PANERELAY_PLAYWRIGHT_GATEWAY_URL = `http://127.0.0.1:43827${PANERELAY_PLAYWRIGHT_GATEWAY_PATH}`;

// ../playwright/src/index.ts
// ../adapters/playwright/src/index.ts
var PLAYWRIGHT_ADAPTER_ID = "playwright";

@@ -132,0 +135,0 @@ var PLAYWRIGHT_MINIMUM_VERSION = "0.1.17";

{
"name": "@panerelay/setup",
"version": "0.7.0",
"version": "0.8.0",
"description": "Install and diagnose Panerelay's local integration and optional automation adapters.",

@@ -39,8 +39,8 @@ "type": "module",

"@clack/prompts": "1.2.0",
"@panerelay/browser-registry": "0.7.0",
"@panerelay/bridge": "0.7.0",
"@panerelay/cli": "0.7.0",
"@panerelay/protocol": "0.7.0",
"@panerelay/browser-use": "0.7.0",
"@panerelay/playwright": "0.7.0"
"@panerelay/browser-registry": "0.8.0",
"@panerelay/browser-use": "0.8.0",
"@panerelay/bridge": "0.8.0",
"@panerelay/cli": "0.8.0",
"@panerelay/playwright": "0.8.0",
"@panerelay/protocol": "0.8.0"
},

@@ -47,0 +47,0 @@ "devDependencies": {

@@ -61,3 +61,3 @@ # @panerelay/setup

Setup verifies a compatible agent-browser executable before registering the Panerelay Provider. It does not install or update agent-browser or manage an Agent Skill. See the [agent-browser integration guide](../agent-browser/README.md) and [compatibility record](../../docs/compatibility/agent-browser-0.33.0.md).
Setup verifies a compatible agent-browser executable before registering the Panerelay Provider. It does not install or update agent-browser or manage an Agent Skill. See the [agent-browser integration guide](../adapters/agent-browser/README.md) and [compatibility record](../../docs/compatibility/agent-browser-0.33.0.md).

@@ -119,3 +119,3 @@ ### Explicit browser-use integration

The independently installed `panerelay-browser` Skill contains the Playwright workflow. See the [Playwright integration guide](../playwright/README.md) and [compatibility record](../../docs/compatibility/playwright-cli-0.1.17.md).
The independently installed `panerelay-browser` Skill contains the Playwright workflow. See the [Playwright integration guide](../adapters/playwright/README.md) and [compatibility record](../../docs/compatibility/playwright-cli-0.1.17.md).

@@ -182,4 +182,15 @@ This connection reuses authorized tabs and does not provide isolated BrowserContexts, launch-time executable or proxy options, or browser-wide close. The fixed endpoint is loopback discovery, not a reusable browser credential.

On the first Native Host registration after an Extension background starts, the Host compares its embedded semantic release with the Extension's manifest `version_name`. Ordinary registration completes first, so a pending or failed update does not block the connection. When the Host is older, it makes one automatic attempt to run the exact base update for that Extension release. Reconnects from the same Extension background do not trigger another attempt, and a newer Host is never automatically downgraded.
The update stages and self-checks a versioned bundle, commits a protected version pointer, then closes the old Host so Chrome or Edge reconnects through the stable launcher. Only verified success restarts the Host. An unavailable exact npm package fails quietly; every failure keeps the existing Host connection usable and leaves optional integration selections and tab authorization unchanged. To replace it manually, run:
```bash
npx --yes @panerelay/setup@<extension-version> update --yes
npx --yes @panerelay/setup doctor
```
`doctor` checks the stable launcher, protected current-version pointer, selected bundle and embedded release, update lock, Native Messaging manifests, and Windows Chrome/Edge registrations without triggering an update. Pre-`panerelay.relay.v2` installations are intentionally not migrated; replace them with a clean setup.
To roll back, run an earlier setup package and reload the matching unpacked Extension. Do not mix Extension and package versions. Native Messaging installation supports Chrome and Edge on macOS, Linux, and current-user Windows without administrator privileges. Windows doctor reports each browser's registration independently. agent-browser 0.33.0 or newer is required only with `--agent-browser`, and its detected version appears only in `doctor --agent-browser`.
Claude Code, Qoder, and OpenCode are optional. Setup discovers `claude`, a compatible `qodercli --acp`, and `opencode acp`, then exposes available providers alongside Codex. A missing optional runtime is reported as a warning and does not make the core installation unhealthy. OpenCode authentication and permission policy remain user-owned; run `opencode auth login` and configure OpenCode actions as `ask` when Side Panel approvals are required.