Initial commit: OpenClaw ops workspace

This commit is contained in:
2026-03-28 00:15:47 +00:00
commit f1aeaeefb5
42 changed files with 4297 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
#!/usr/bin/env bash
set -euo pipefail
PATTERN="${1:-gemini-3-flash}"
STATE_FILE="${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/openclaw.json"
if [[ ! -f "$STATE_FILE" ]]; then
for alt in \
"${OPENCLAW_STATE_DIR:-$HOME/.openclaw/state}/openclaw.json" \
"${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw/config}/openclaw.json" \
"/opt/openclaw/state/openclaw.json"; do
if [[ -f "$alt" ]]; then
STATE_FILE="$alt"
break
fi
done
fi
if [[ ! -f "$STATE_FILE" ]]; then
echo "ERROR: openclaw.json not found" >&2
exit 1
fi
echo "Config: $STATE_FILE"
echo "Match pattern: $PATTERN"
echo "\n== Config references =="
rg -n "$PATTERN" "$STATE_FILE" || true
echo "\n== Cron payload model/message references =="
openclaw cron list --json 2>/dev/null | jq -r --arg pat "$PATTERN" '
.jobs[]
| {
id,
name,
agentId,
payloadModel: (.payload.model // ""),
message: (.payload.message // "")
}
| select((.payloadModel|test($pat;"i")) or (.message|test($pat;"i")))
' || true
echo "\n== Session model pins =="
for agent_dir in /home/node/.openclaw/agents/*; do
[[ -d "$agent_dir" ]] || continue
agent_id="$(basename "$agent_dir")"
sess_file="$agent_dir/sessions/sessions.json"
[[ -f "$sess_file" ]] || continue
jq -r --arg aid "$agent_id" --arg pat "$PATTERN" '
to_entries[]
| select((.value.model // "" | tostring | test($pat;"i")))
| "agent=" + $aid + " session=" + .key + " model=" + (.value.model|tostring)
' "$sess_file" || true
done
echo "\n== Invalid llm-proxy refs against local catalog =="
node - <<'NODE' "$STATE_FILE"
const fs=require('fs');
const p=process.argv[2];
const j=JSON.parse(fs.readFileSync(p,'utf8'));
const catalog=new Set((j.models?.providers?.['llm-proxy']?.models||[]).map(m=>'llm-proxy/'+m.id));
const refs=[];
const push=(where,val)=>{ if(!val) return; if(Array.isArray(val)){val.forEach((v,i)=>refs.push([`${where}[${i}]`,v]));} else refs.push([where,val]); };
push('agents.defaults.model.primary', j.agents?.defaults?.model?.primary);
push('agents.defaults.model.fallbacks', j.agents?.defaults?.model?.fallbacks);
for (const a of (j.agents?.list||[])) {
push(`agents.list[${a.id}].model.primary`, a.model?.primary);
push(`agents.list[${a.id}].model.fallbacks`, a.model?.fallbacks);
}
let bad=0;
for (const [where,val] of refs){
if (typeof val==='string' && val.startsWith('llm-proxy/') && !catalog.has(val)) {
bad++;
console.log(`INVALID ${where} -> ${val}`);
}
}
if(!bad) console.log('none');
NODE