From 692bcc208459e4957670368178ee2b2bd9d4c8c8 Mon Sep 17 00:00:00 2001 From: Moritz Graf Date: Sun, 11 Oct 2026 22:25:46 +0200 Subject: [PATCH] feat(openclaw): add setup-dashboards-cron.sh and update knowledge-wiki submodule --- k8s/openclaw/setup-dashboards-cron.sh | 40 +++++++++++++++++++++++++++ knowledge-wiki | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100755 k8s/openclaw/setup-dashboards-cron.sh diff --git a/k8s/openclaw/setup-dashboards-cron.sh b/k8s/openclaw/setup-dashboards-cron.sh new file mode 100755 index 0000000..7f3729c --- /dev/null +++ b/k8s/openclaw/setup-dashboards-cron.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +# ============================================================================== +# setup-dashboards-cron.sh +# Declaratively registers periodic background publishing for Mila & Moritz dashboards in OpenClaw. +# Schedule: Every 10 minutes (pure shell command execution, zero LLM token cost) +# ============================================================================== + +set -euo pipefail + +NAMESPACE="${NAMESPACE:-openclaw}" +POD_NAME="${POD_NAME:-openclaw-0}" +CONTAINER_NAME="${CONTAINER_NAME:-openclaw}" + +JOB_NAME="dashboards-periodic-publish" +SCHEDULE_EVERY="10m" + +echo "=== Registering Dashboards Periodic Publish in OpenClaw ($POD_NAME) ===" + +# 1. Check if job already exists +EXISTING_ID=$(kubectl exec -n "$NAMESPACE" "$POD_NAME" -c "$CONTAINER_NAME" -- openclaw cron list --json 2>/dev/null | python3 -c 'import sys, json; data=json.load(sys.stdin); print(next((j["id"] for j in data.get("jobs", []) if j.get("declarationKey") == "'"$JOB_NAME"'" or j.get("name") == "'"$JOB_NAME"'"), ""))' 2>/dev/null || true) + +if [ -n "$EXISTING_ID" ]; then + echo "Found existing job with ID $EXISTING_ID. Removing for idempotent recreation..." + kubectl exec -n "$NAMESPACE" "$POD_NAME" -c "$CONTAINER_NAME" -- openclaw cron rm "$EXISTING_ID" || true +fi + +# 2. Add the job as direct shell command execution with --no-deliver +echo "Creating automation $JOB_NAME (every $SCHEDULE_EVERY)..." + +CMD="sh -lc 'cd /home/node/mop-skills/mop-skills/skills/datastore && uv run scripts/update_website.py --data-dir /home/node/.openclaw/wiki/main/data && uv run scripts/update_moritz_website.py --data-dir /home/node/.openclaw/wiki/main/data'" + +kubectl exec -n "$NAMESPACE" "$POD_NAME" -c "$CONTAINER_NAME" -- openclaw cron add \ + --name "$JOB_NAME" \ + --description "Periodically regenerates and uploads Mila & Moritz family HTML dashboards to S3" \ + --command "$CMD" \ + --every "$SCHEDULE_EVERY" \ + --no-deliver + +echo "=== Automation successfully registered! ===" +kubectl exec -n "$NAMESPACE" "$POD_NAME" -c "$CONTAINER_NAME" -- openclaw cron list | grep "$JOB_NAME" || true diff --git a/knowledge-wiki b/knowledge-wiki index ee9c635..3375f1d 160000 --- a/knowledge-wiki +++ b/knowledge-wiki @@ -1 +1 @@ -Subproject commit ee9c635c391b726defe0ed7a8fd2e85bbb66adca +Subproject commit 3375f1d0daf8262415e7067021fa36af87e2b7f6