mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-07-14 12:48:03 +00:00
Checkpoint Odysseus local update
This commit is contained in:
@@ -484,8 +484,12 @@ export async function _runModelDownload(panel, model, backend, hostOverride) {
|
||||
// they disagree on the active host. The servers LIST is consistent, so we look
|
||||
// up the matching server to get its env / path / platform / port.
|
||||
let host;
|
||||
let selectedServer = null;
|
||||
let selectedServerKey = '';
|
||||
if (hostOverride !== undefined) {
|
||||
host = hostOverride || '';
|
||||
selectedServer = host ? (_serverByVal?.(host) || (_envState.servers || []).find(s => s.host === host) || null) : null;
|
||||
selectedServerKey = selectedServer ? (typeof window.cookbookModule?._serverKey === 'function' ? window.cookbookModule._serverKey(selectedServer) : '') : '';
|
||||
} else {
|
||||
// No explicit host passed: resolve from the visible server dropdown rather
|
||||
// than _envState.remoteHost (unreliable — multiple state copies disagree).
|
||||
@@ -496,15 +500,21 @@ export async function _runModelDownload(panel, model, backend, hostOverride) {
|
||||
const _dsrv = (_ssv && _ssv !== 'local') ? (_serverByVal?.(_ssv) || _envState.servers[parseInt(_ssv)]) : null;
|
||||
if (_dsrv) {
|
||||
host = _dsrv.host;
|
||||
selectedServer = _dsrv;
|
||||
selectedServerKey = _ssv || '';
|
||||
} else if (ssEl && ssEl.value === 'local') {
|
||||
host = '';
|
||||
} else {
|
||||
host = _envState.remoteHost || '';
|
||||
selectedServer = host ? ((_envState.servers || []).find(s => s.host === host) || _serverByVal?.(host) || null) : null;
|
||||
}
|
||||
}
|
||||
const srv = _serverByVal?.(_envState.remoteServerKey || host) || {};
|
||||
const env = host ? (srv.env || 'none') : (_envState.env || 'none');
|
||||
const srv = selectedServer || _serverByVal?.(host) || {};
|
||||
let env = host ? (srv.env || 'none') : (_envState.env || 'none');
|
||||
const envPath = host ? (srv.envPath || '') : (_envState.envPath || '');
|
||||
if ((!env || env === 'none') && envPath) {
|
||||
env = /(?:^|\/)(?:\.?venv|env)(?:\/|$)|\/bin\/activate$/i.test(envPath) ? 'venv' : env;
|
||||
}
|
||||
const platform = host ? (srv.platform || '') : (_envState.platform || '');
|
||||
const isWin = host ? (platform === 'windows') : _isWindows();
|
||||
|
||||
@@ -515,7 +525,13 @@ export async function _runModelDownload(panel, model, backend, hostOverride) {
|
||||
// resumes cached partials more reliably.
|
||||
if ((model.required_gb || 0) >= 10 || backend === 'llamacpp') payload.disable_hf_transfer = true;
|
||||
if (_envState.hfToken) payload.hf_token = _envState.hfToken;
|
||||
if (host) { payload.remote_host = host; const _sp = _getPort(host); if (_sp) payload.ssh_port = _sp; }
|
||||
if (host) {
|
||||
payload.remote_host = host;
|
||||
if (selectedServerKey && selectedServerKey !== 'local') payload.remote_server_key = selectedServerKey;
|
||||
if (srv.name) payload.remote_server_name = srv.name;
|
||||
const _sp = srv.port || _getPort(host);
|
||||
if (_sp) payload.ssh_port = _sp;
|
||||
}
|
||||
if (platform) payload.platform = platform;
|
||||
// If this server has a directory flagged as the download target, send it so
|
||||
// the backend downloads into <dir>/<model> instead of the default HF cache.
|
||||
@@ -562,11 +578,12 @@ export async function _runModelDownload(panel, model, backend, hostOverride) {
|
||||
if (zombieCandidate) {
|
||||
try {
|
||||
const _zh = zombieCandidate.remoteHost || '';
|
||||
const _zPort = (_serverByVal?.(_envState.remoteServerKey || _zh)
|
||||
const _zPort = (_serverByVal?.(zombieCandidate.remoteServerKey || zombieCandidate.payload?.remote_server_key || _zh)
|
||||
|| (_envState.servers || []).find(s => s.host === _zh) || {}).port;
|
||||
const _sshPf = _zh ? `ssh ${_zPort && _zPort !== '22' ? `-p ${_zPort} ` : ''}${_zh} '` : '';
|
||||
const _sshSf = _zh ? `'` : '';
|
||||
const _probeCmd = `${_sshPf}tmux has-session -t ${zombieCandidate.sessionId} 2>/dev/null${_sshSf}`;
|
||||
const _probePrefix = _zh ? 'PATH="$HOME/.local/bin:$HOME/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"; ' : '';
|
||||
const _probeCmd = `${_sshPf}${_probePrefix}tmux has-session -t ${zombieCandidate.sessionId} 2>/dev/null${_sshSf}`;
|
||||
const _r = await fetch('/api/shell/exec', {
|
||||
method: 'POST', credentials: 'same-origin',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -593,7 +610,7 @@ export async function _runModelDownload(panel, model, backend, hostOverride) {
|
||||
if (activeOnHost) {
|
||||
const queueId = `queue-${Date.now().toString(36)}`;
|
||||
const allTasks = _loadTasks();
|
||||
allTasks.push({ id: queueId, sessionId: queueId, name: taskName, type: 'download', status: 'queued', output: '', ts: Date.now(), payload, remoteHost: host });
|
||||
allTasks.push({ id: queueId, sessionId: queueId, name: taskName, type: 'download', status: 'queued', output: '', ts: Date.now(), payload, remoteHost: host, remoteServerKey: payload.remote_server_key || '', remoteServerName: payload.remote_server_name || '', sshPort: payload.ssh_port || '', platform: payload.platform || '' });
|
||||
_saveTasks(allTasks);
|
||||
_renderRunningTab();
|
||||
uiModule.showToast(`Queued ${shortName} — waiting for current download`);
|
||||
|
||||
Reference in New Issue
Block a user