fix: default provider star + admin panel
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# OpenClaw Monitor Agent
|
# OpenClaw Monitor Agent
|
||||||
set -e
|
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
|
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";;esac
|
case $opt in s)SERVER="$OPTARG";;t)TOKEN="$OPTARG";;n)NAME="$OPTARG";;r)ROLE="$OPTARG";;i)INTERVAL="$OPTARG";;d)DEFAULT_PROV="$OPTARG";;esac
|
||||||
done
|
done
|
||||||
[ -z "$SERVER" ] || [ -z "$TOKEN" ] && echo "Usage: $0 -s SERVER_URL -t TOKEN [-n name] [-r role]" && exit 1
|
[ -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"
|
echo "OC Monitor Agent: node=$NODE_ID name=$NAME server=$SERVER"
|
||||||
|
|
||||||
while true; do
|
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
|
import json,subprocess,os,platform,time,sys,glob
|
||||||
|
|
||||||
def run(cmd):
|
def run(cmd):
|
||||||
@@ -27,6 +27,7 @@ def run(cmd):
|
|||||||
except: return ''
|
except: return ''
|
||||||
|
|
||||||
cfg,nid,name,ver,role = sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4],sys.argv[5]
|
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'
|
mac = sys.platform=='darwin'
|
||||||
|
|
||||||
# Host IP - try multiple interfaces on macOS
|
# Host IP - try multiple interfaces on macOS
|
||||||
@@ -41,10 +42,15 @@ providers = []
|
|||||||
if cfg and os.path.exists(cfg):
|
if cfg and os.path.exists(cfg):
|
||||||
try:
|
try:
|
||||||
c = json.load(open(cfg))
|
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
|
if not isinstance(p,dict): continue
|
||||||
for m in p.get('models',[]):
|
for mod in p.get('models',[]):
|
||||||
providers.append({'name':n,'model':m.get('id',''),'api':p.get('api','')})
|
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
|
except: pass
|
||||||
|
|
||||||
# CPU
|
# 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="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="hb">${hbBars}</div>
|
||||||
<div class="sec">Providers</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">
|
<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('')}
|
${[['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>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user