Revert "feat: add --remote-url CLI option to connect to remote OpenCode instances (#161)"
This reverts commit 53f8e1324e.
This commit is contained in:
@@ -1217,8 +1217,7 @@ function parseArgs(argv = process.argv.slice(2)) {
|
||||
process.env.OPENCODE_UI_PASSWORD ||
|
||||
null;
|
||||
const envCfTunnel = process.env.OPENCHAMBER_TRY_CF_TUNNEL === 'true';
|
||||
const envRemoteUrl = process.env.OPENCODE_REMOTE_URL || null;
|
||||
const options = { port: DEFAULT_PORT, uiPassword: envPassword, tryCfTunnel: envCfTunnel, remoteUrl: envRemoteUrl };
|
||||
const options = { port: DEFAULT_PORT, uiPassword: envPassword, tryCfTunnel: envCfTunnel };
|
||||
|
||||
const consumeValue = (currentIndex, inlineValue) => {
|
||||
if (typeof inlineValue === 'string') {
|
||||
@@ -1260,13 +1259,6 @@ function parseArgs(argv = process.argv.slice(2)) {
|
||||
options.tryCfTunnel = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (optionName === 'remote-url') {
|
||||
const { value, nextIndex } = consumeValue(i, inlineValue);
|
||||
i = nextIndex;
|
||||
options.remoteUrl = typeof value === 'string' && value.length > 0 ? value : null;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
@@ -1667,20 +1659,14 @@ function setupProxy(app) {
|
||||
next();
|
||||
});
|
||||
|
||||
const remoteOrigin = process.env.__OPENCODE_REMOTE_ORIGIN || null;
|
||||
const getProxyTarget = () => {
|
||||
if (remoteOrigin) {
|
||||
return remoteOrigin;
|
||||
}
|
||||
if (!openCodePort) {
|
||||
return 'http://127.0.0.1:0';
|
||||
}
|
||||
return `http://localhost:${openCodePort}`;
|
||||
};
|
||||
|
||||
const proxyMiddleware = createProxyMiddleware({
|
||||
target: getProxyTarget(),
|
||||
router: getProxyTarget,
|
||||
target: openCodePort ? `http://localhost:${openCodePort}` : 'http://127.0.0.1:0',
|
||||
router: () => {
|
||||
if (!openCodePort) {
|
||||
return 'http://127.0.0.1:0';
|
||||
}
|
||||
return `http://localhost:${openCodePort}`;
|
||||
},
|
||||
changeOrigin: true,
|
||||
pathRewrite: (path) => {
|
||||
if (!path.startsWith('/api')) {
|
||||
@@ -1813,7 +1799,6 @@ async function main(options = {}) {
|
||||
const tryCfTunnel = options.tryCfTunnel === true;
|
||||
const attachSignals = options.attachSignals !== false;
|
||||
const onTunnelReady = typeof options.onTunnelReady === 'function' ? options.onTunnelReady : null;
|
||||
const remoteUrl = typeof options.remoteUrl === 'string' && options.remoteUrl.length > 0 ? options.remoteUrl : null;
|
||||
if (typeof options.exitOnShutdown === 'boolean') {
|
||||
exitOnShutdown = options.exitOnShutdown;
|
||||
}
|
||||
@@ -4715,58 +4700,34 @@ async function main(options = {}) {
|
||||
|
||||
|
||||
try {
|
||||
if (remoteUrl) {
|
||||
console.log(`Using remote OpenCode instance at: ${remoteUrl}`);
|
||||
try {
|
||||
const parsedUrl = new URL(remoteUrl);
|
||||
const remotePort = parseInt(parsedUrl.port, 10) || (parsedUrl.protocol === 'https:' ? 443 : 80);
|
||||
const remotePrefix = normalizeApiPrefix(parsedUrl.pathname);
|
||||
|
||||
openCodePort = remotePort;
|
||||
syncToHmrState();
|
||||
|
||||
// Remote origin is used by setupProxy to route requests to remote OpenCode
|
||||
process.env.__OPENCODE_REMOTE_ORIGIN = `${parsedUrl.protocol}//${parsedUrl.host}`;
|
||||
|
||||
setDetectedOpenCodeApiPrefix(remotePrefix);
|
||||
isOpenCodeReady = true;
|
||||
lastOpenCodeError = null;
|
||||
openCodeNotReadySince = 0;
|
||||
|
||||
console.log(`Remote OpenCode configured - port: ${remotePort}, prefix: ${remotePrefix || '(root)'}`);
|
||||
} catch (urlError) {
|
||||
throw new Error(`Invalid remote URL "${remoteUrl}": ${urlError.message}`);
|
||||
}
|
||||
// Check if we can reuse an existing OpenCode process from a previous HMR cycle
|
||||
syncFromHmrState();
|
||||
if (await isOpenCodeProcessHealthy()) {
|
||||
console.log(`[HMR] Reusing existing OpenCode process on port ${openCodePort}`);
|
||||
} else {
|
||||
syncFromHmrState();
|
||||
if (await isOpenCodeProcessHealthy()) {
|
||||
console.log(`[HMR] Reusing existing OpenCode process on port ${openCodePort}`);
|
||||
// No healthy process, start fresh
|
||||
if (ENV_CONFIGURED_OPENCODE_PORT) {
|
||||
console.log(`Using OpenCode port from environment: ${ENV_CONFIGURED_OPENCODE_PORT}`);
|
||||
setOpenCodePort(ENV_CONFIGURED_OPENCODE_PORT);
|
||||
} else {
|
||||
if (ENV_CONFIGURED_OPENCODE_PORT) {
|
||||
console.log(`Using OpenCode port from environment: ${ENV_CONFIGURED_OPENCODE_PORT}`);
|
||||
setOpenCodePort(ENV_CONFIGURED_OPENCODE_PORT);
|
||||
} else {
|
||||
openCodePort = null;
|
||||
syncToHmrState();
|
||||
}
|
||||
|
||||
lastOpenCodeError = null;
|
||||
openCodeProcess = await startOpenCode();
|
||||
openCodePort = null;
|
||||
syncToHmrState();
|
||||
}
|
||||
await waitForOpenCodePort();
|
||||
try {
|
||||
await waitForOpenCodeReady();
|
||||
} catch (error) {
|
||||
console.error(`OpenCode readiness check failed: ${error.message}`);
|
||||
scheduleOpenCodeApiDetection();
|
||||
}
|
||||
|
||||
lastOpenCodeError = null;
|
||||
openCodeProcess = await startOpenCode();
|
||||
syncToHmrState();
|
||||
}
|
||||
await waitForOpenCodePort();
|
||||
try {
|
||||
await waitForOpenCodeReady();
|
||||
} catch (error) {
|
||||
console.error(`OpenCode readiness check failed: ${error.message}`);
|
||||
scheduleOpenCodeApiDetection();
|
||||
}
|
||||
setupProxy(app);
|
||||
if (!remoteUrl) {
|
||||
scheduleOpenCodeApiDetection();
|
||||
startHealthMonitoring();
|
||||
}
|
||||
scheduleOpenCodeApiDetection();
|
||||
startHealthMonitoring();
|
||||
} catch (error) {
|
||||
console.error(`Failed to start OpenCode: ${error.message}`);
|
||||
console.log('Continuing without OpenCode integration...');
|
||||
@@ -4874,8 +4835,7 @@ if (isCliExecution) {
|
||||
tryCfTunnel: cliOptions.tryCfTunnel,
|
||||
attachSignals: true,
|
||||
exitOnShutdown: true,
|
||||
uiPassword: cliOptions.uiPassword,
|
||||
remoteUrl: cliOptions.remoteUrl
|
||||
uiPassword: cliOptions.uiPassword
|
||||
}).catch(error => {
|
||||
console.error('Failed to start server:', error);
|
||||
process.exit(1);
|
||||
|
||||
Reference in New Issue
Block a user