fix: default provider star + admin panel
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
#!/bin/bash
|
||||
# OpenClaw Monitor Agent
|
||||
set -e
|
||||
SERVER="" TOKEN="" NAME="" ROLE="worker" INTERVAL=30
|
||||
SERVER="" TOKEN="" NAME="" ROLE="worker" INTERVAL=30 DEFAULT_PROV=""
|
||||
|
||||
while getopts "s:t:n:r:i:" opt; do
|
||||
case $opt in s)SERVER="$OPTARG";;t)TOKEN="$OPTARG";;n)NAME="$OPTARG";;r)ROLE="$OPTARG";;i)INTERVAL="$OPTARG";;esac
|
||||
while getopts "s:t:n:r:i:d:" opt; do
|
||||
case $opt in s)SERVER="$OPTARG";;t)TOKEN="$OPTARG";;n)NAME="$OPTARG";;r)ROLE="$OPTARG";;i)INTERVAL="$OPTARG";;d)DEFAULT_PROV="$OPTARG";;esac
|
||||
done
|
||||
[ -z "$SERVER" ] || [ -z "$TOKEN" ] && echo "Usage: $0 -s SERVER_URL -t TOKEN [-n name] [-r role]" && exit 1
|
||||
|
||||
@@ -19,7 +19,7 @@ OC_VERSION=$(openclaw --version 2>/dev/null | head -1 || echo "unknown")
|
||||
echo "OC Monitor Agent: node=$NODE_ID name=$NAME server=$SERVER"
|
||||
|
||||
while true; do
|
||||
python3 - "$OC_CONFIG" "$NODE_ID" "$NAME" "$OC_VERSION" "$ROLE" << 'PYEOF' > /tmp/.oc-agent-payload.json
|
||||
python3 - "$OC_CONFIG" "$NODE_ID" "$NAME" "$OC_VERSION" "$ROLE" "$DEFAULT_PROV" << 'PYEOF' > /tmp/.oc-agent-payload.json
|
||||
import json,subprocess,os,platform,time,sys,glob
|
||||
|
||||
def run(cmd):
|
||||
@@ -27,6 +27,7 @@ def run(cmd):
|
||||
except: return ''
|
||||
|
||||
cfg,nid,name,ver,role = sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]
|
||||
default_prov = sys.argv[6] if len(sys.argv)>6 else ''
|
||||
mac = sys.platform=='darwin'
|
||||
|
||||
# Host IP - try multiple interfaces on macOS
|
||||
@@ -41,10 +42,15 @@ providers = []
|
||||
if cfg and os.path.exists(cfg):
|
||||
try:
|
||||
c = json.load(open(cfg))
|
||||
for n,p in c.get('models',{}).get('providers',{}).items():
|
||||
m = c.get('models',{})
|
||||
# Extract default from config or -d param
|
||||
dp = default_prov or m.get('default','')
|
||||
default_name = dp.split('/')[0] if '/' in dp else dp
|
||||
for n,p in m.get('providers',{}).items():
|
||||
if not isinstance(p,dict): continue
|
||||
for m in p.get('models',[]):
|
||||
providers.append({'name':n,'model':m.get('id',''),'api':p.get('api','')})
|
||||
for mod in p.get('models',[]):
|
||||
providers.append({'name':n,'model':mod.get('id',''),'api':p.get('api',''),'default':n==default_name})
|
||||
providers.sort(key=lambda x: (not x.get('default',False), x['name']))
|
||||
except: pass
|
||||
|
||||
# CPU
|
||||
|
||||
@@ -118,7 +118,7 @@ function renderNodes(){
|
||||
<div class="tg"><span class="${n.role==='master'?'ms':'wk'}">${n.role}</span><span>OC ${n.oc_version}</span><span>${n.os}</span></div>
|
||||
<div class="hb">${hbBars}</div>
|
||||
<div class="sec">Providers</div>
|
||||
${provs.map((p,i)=>`<div class="pv"><div class="pv-l">${i===0?'<span class="star">★</span>':''}${p.name} <span class="pm">${p.model}</span></div><div><span class="ok">✓</span></div></div>`).join('')}
|
||||
${provs.sort((a,b)=>b.default-a.default||(a.name>b.name?1:-1)).map(p=>`<div class="pv"><div class="pv-l">${p.default?'<span class="star">★</span>':''}${p.name} <span class="pm">${p.model}</span></div><div><span class="ok">✓</span></div></div>`).join('')}
|
||||
<div class="gs">
|
||||
${[['cpu',n.cpu],['mem',n.mem],['disk',n.disk],['swap',n.swap]].map(([l,v])=>`<div class="g"><span class="g-l">${l}</span><div class="g-t"><div class="g-f ${gaugeColor(v)}" style="width:${v}%"></div></div><span class="g-n">${on?v+'%':'—'}</span></div>`).join('')}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user