mirror of
https://github.com/microsoft/SkillOpt.git
synced 2026-07-03 14:02:58 +08:00
Two fixes from issue #57 feedback: 1. run-sleep.sh: support SKILLOPT_SLEEP_PYTHON env var to explicitly set the Python interpreter. Useful on macOS where system Python is 3.9 but a newer Python is available elsewhere (e.g. Codex Desktop's bundled Python 3.12). Applied to both the shared runner and the bundled Claude Code plugin copy. 2. cycle.py: on first run (no prior harvest recorded), apply the lookback_hours config (default 72h) as a time cutoff. Previously, first run scanned the entire transcript history, which could trigger massive LLM mining on users with months of session data. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
52 lines
1.9 KiB
Bash
Executable File
52 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SkillOpt-Sleep shared runner — used by all platform plugins (Claude Code,
|
|
# Codex, Copilot). Resolves the repo root (which contains the skillopt_sleep
|
|
# package), picks a Python >= 3.10, and execs the engine CLI.
|
|
#
|
|
# Usage: run-sleep.sh <run|dry-run|status|adopt|harvest|...> [args...]
|
|
set -euo pipefail
|
|
|
|
# This script lives at <repo>/plugins/run-sleep.sh, so the repo root (which
|
|
# holds skillopt_sleep/) is one level up. CLAUDE_PLUGIN_ROOT (if set by Claude
|
|
# Code) points at the plugin dir; the engine is then two levels above it.
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
if [ -d "$SCRIPT_DIR/../skillopt_sleep" ]; then
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
elif [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -d "$CLAUDE_PLUGIN_ROOT/../../skillopt_sleep" ]; then
|
|
REPO_ROOT="$(cd "$CLAUDE_PLUGIN_ROOT/../.." && pwd)"
|
|
elif [ -n "${SKILLOPT_SLEEP_REPO:-}" ] && [ -d "$SKILLOPT_SLEEP_REPO/skillopt_sleep" ]; then
|
|
REPO_ROOT="$SKILLOPT_SLEEP_REPO"
|
|
else
|
|
# last resort: search upward from CWD
|
|
d="$PWD"
|
|
while [ "$d" != "/" ]; do
|
|
[ -d "$d/skillopt_sleep" ] && { REPO_ROOT="$d"; break; }
|
|
d="$(dirname "$d")"
|
|
done
|
|
fi
|
|
if [ -z "${REPO_ROOT:-}" ]; then
|
|
echo "[sleep] ERROR: could not locate the skillopt_sleep package. Set SKILLOPT_SLEEP_REPO to the repo root." >&2
|
|
exit 1
|
|
fi
|
|
|
|
PY=""
|
|
# Allow explicit Python override (useful on macOS with old system Python).
|
|
if [ -n "${SKILLOPT_SLEEP_PYTHON:-}" ]; then
|
|
PY="$SKILLOPT_SLEEP_PYTHON"
|
|
else
|
|
for cand in python3.12 python3.11 python3.10 python3; do
|
|
if command -v "$cand" >/dev/null 2>&1; then
|
|
ver="$("$cand" -c 'import sys; print("%d%d" % sys.version_info[:2])' 2>/dev/null || echo 0)"
|
|
if [ "${ver:-0}" -ge 310 ]; then PY="$cand"; break; fi
|
|
fi
|
|
done
|
|
fi
|
|
if [ -z "$PY" ]; then
|
|
echo "[sleep] ERROR: need Python >= 3.10 (found none)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$#" -eq 0 ]; then set -- status; fi
|
|
cd "$REPO_ROOT"
|
|
exec "$PY" -m skillopt_sleep "$@"
|