Add portable Codex ops kit
This commit is contained in:
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
|
||||
STAMP="$(date +%Y%m%d-%H%M%S)"
|
||||
BACKUP_DIR="$CODEX_HOME/backups/$STAMP"
|
||||
MANAGED_CONFIG="$REPO_ROOT/templates/global/config-managed.toml"
|
||||
|
||||
mkdir -p "$CODEX_HOME" "$BACKUP_DIR" "$CODEX_HOME/memories"
|
||||
|
||||
if [[ -f "$CODEX_HOME/config.toml" ]]; then
|
||||
cp "$CODEX_HOME/config.toml" "$BACKUP_DIR/config.toml.bak"
|
||||
fi
|
||||
|
||||
if [[ -f "$CODEX_HOME/AGENTS.md" ]]; then
|
||||
cp "$CODEX_HOME/AGENTS.md" "$BACKUP_DIR/AGENTS.md.bak"
|
||||
fi
|
||||
|
||||
cp "$REPO_ROOT/templates/global/AGENTS.md" "$CODEX_HOME/AGENTS.md"
|
||||
|
||||
python3 - "$CODEX_HOME/config.toml" "$MANAGED_CONFIG" <<'PY'
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
config_path = Path(sys.argv[1])
|
||||
managed_path = Path(sys.argv[2])
|
||||
|
||||
managed_start = "# >>> codex-ops-kit managed block >>>"
|
||||
managed_end = "# <<< codex-ops-kit managed block <<<"
|
||||
managed_root_keys = {
|
||||
"model",
|
||||
"model_reasoning_effort",
|
||||
"profile",
|
||||
"project_doc_max_bytes",
|
||||
"web_search",
|
||||
}
|
||||
managed_sections = {
|
||||
"history",
|
||||
"profiles.economy",
|
||||
"profiles.balanced",
|
||||
"profiles.deep",
|
||||
}
|
||||
|
||||
text = config_path.read_text() if config_path.exists() else ""
|
||||
managed = managed_path.read_text().rstrip()
|
||||
|
||||
if managed_start in text and managed_end in text:
|
||||
before = text.split(managed_start, 1)[0].rstrip()
|
||||
else:
|
||||
before = text.rstrip()
|
||||
|
||||
filtered_lines = []
|
||||
current_section = None
|
||||
|
||||
for line in before.splitlines():
|
||||
stripped = line.strip()
|
||||
if stripped.startswith("[") and stripped.endswith("]"):
|
||||
current_section = stripped[1:-1].strip()
|
||||
if current_section in managed_sections:
|
||||
continue
|
||||
filtered_lines.append(line)
|
||||
continue
|
||||
|
||||
if current_section in managed_sections:
|
||||
continue
|
||||
|
||||
if "=" in line and not line.lstrip().startswith("#"):
|
||||
key = line.split("=", 1)[0].strip()
|
||||
if current_section is None and key in managed_root_keys:
|
||||
continue
|
||||
|
||||
filtered_lines.append(line)
|
||||
|
||||
before = "\n".join(filtered_lines).strip()
|
||||
|
||||
block = f"{managed_start}\n{managed}\n{managed_end}\n"
|
||||
|
||||
if before:
|
||||
config_path.write_text(before + "\n\n" + block)
|
||||
else:
|
||||
config_path.write_text(block)
|
||||
PY
|
||||
|
||||
mkdir -p "$CODEX_HOME/memories/portable-kit"
|
||||
cp "$REPO_ROOT"/memory/*.md "$CODEX_HOME/memories/portable-kit/"
|
||||
|
||||
echo "Installed Codex kit into: $CODEX_HOME"
|
||||
echo "Backup created at: $BACKUP_DIR"
|
||||
echo
|
||||
echo "Next steps:"
|
||||
echo "- Start Codex and use the balanced profile by default."
|
||||
echo "- Switch to economy for lighter work and deep for hard tasks."
|
||||
echo "- Run bash scripts/audit_codex_home.sh periodically."
|
||||
Reference in New Issue
Block a user