fix: fix: cron agents (gardener, planner, architect, predictor) never set FORGE_REMOTE (#278)
This commit is contained in:
parent
b23bb9f695
commit
0098695644
6 changed files with 41 additions and 7 deletions
|
|
@ -53,6 +53,9 @@ check_memory 2000
|
||||||
|
|
||||||
log "--- Architect run start ---"
|
log "--- Architect run start ---"
|
||||||
|
|
||||||
|
# ── Resolve forge remote for git operations ─────────────────────────────
|
||||||
|
resolve_forge_remote
|
||||||
|
|
||||||
# ── Resolve agent identity for .profile repo ────────────────────────────
|
# ── Resolve agent identity for .profile repo ────────────────────────────
|
||||||
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_ARCHITECT_TOKEN:-}" ]; then
|
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_ARCHITECT_TOKEN:-}" ]; then
|
||||||
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_ARCHITECT_TOKEN}" \
|
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_ARCHITECT_TOKEN}" \
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,9 @@ check_memory 2000
|
||||||
|
|
||||||
log "--- Gardener run start ---"
|
log "--- Gardener run start ---"
|
||||||
|
|
||||||
|
# ── Resolve forge remote for git operations ─────────────────────────────
|
||||||
|
resolve_forge_remote
|
||||||
|
|
||||||
# ── Resolve agent identity for .profile repo ────────────────────────────
|
# ── Resolve agent identity for .profile repo ────────────────────────────
|
||||||
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_GARDENER_TOKEN:-}" ]; then
|
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_GARDENER_TOKEN:-}" ]; then
|
||||||
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_GARDENER_TOKEN}" \
|
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_GARDENER_TOKEN}" \
|
||||||
|
|
@ -128,9 +131,9 @@ ${PROMPT_FOOTER}"
|
||||||
|
|
||||||
# ── Create worktree ──────────────────────────────────────────────────────
|
# ── Create worktree ──────────────────────────────────────────────────────
|
||||||
cd "$PROJECT_REPO_ROOT"
|
cd "$PROJECT_REPO_ROOT"
|
||||||
git fetch origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
git fetch "${FORGE_REMOTE}" "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||||
worktree_cleanup "$WORKTREE"
|
worktree_cleanup "$WORKTREE"
|
||||||
git worktree add "$WORKTREE" "origin/${PRIMARY_BRANCH}" --detach 2>/dev/null
|
git worktree add "$WORKTREE" "${FORGE_REMOTE}/${PRIMARY_BRANCH}" --detach 2>/dev/null
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
worktree_cleanup "$WORKTREE"
|
worktree_cleanup "$WORKTREE"
|
||||||
|
|
@ -328,9 +331,9 @@ if [ -n "$PR_NUMBER" ]; then
|
||||||
|
|
||||||
if [ "$_PR_WALK_EXIT_REASON" = "merged" ]; then
|
if [ "$_PR_WALK_EXIT_REASON" = "merged" ]; then
|
||||||
# Post-merge: pull primary, mirror push, execute manifest
|
# Post-merge: pull primary, mirror push, execute manifest
|
||||||
git -C "$PROJECT_REPO_ROOT" fetch origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
git -C "$PROJECT_REPO_ROOT" fetch "${FORGE_REMOTE}" "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||||
git -C "$PROJECT_REPO_ROOT" checkout "$PRIMARY_BRANCH" 2>/dev/null || true
|
git -C "$PROJECT_REPO_ROOT" checkout "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||||
git -C "$PROJECT_REPO_ROOT" pull --ff-only origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
git -C "$PROJECT_REPO_ROOT" pull --ff-only "${FORGE_REMOTE}" "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||||
mirror_push
|
mirror_push
|
||||||
_gardener_execute_manifest
|
_gardener_execute_manifest
|
||||||
rm -f "$SCRATCH_FILE"
|
rm -f "$SCRATCH_FILE"
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,24 @@ resolve_agent_identity() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ── Forge remote resolution ──────────────────────────────────────────────
|
||||||
|
|
||||||
|
# resolve_forge_remote
|
||||||
|
# Resolves FORGE_REMOTE by matching FORGE_URL hostname against git remotes.
|
||||||
|
# Falls back to "origin" if no match found.
|
||||||
|
# Requires: FORGE_URL, git repo with remotes configured.
|
||||||
|
# Exports: FORGE_REMOTE (always set).
|
||||||
|
resolve_forge_remote() {
|
||||||
|
# Extract hostname from FORGE_URL (e.g., https://codeberg.org/user/repo -> codeberg.org)
|
||||||
|
_forge_host=$(printf '%s' "$FORGE_URL" | sed 's|https\?://||; s|/.*||; s|:.*||')
|
||||||
|
# Find git remote whose push URL matches the forge host
|
||||||
|
FORGE_REMOTE=$(git remote -v | awk -v host="$_forge_host" '$2 ~ host && /\(push\)/ {print $1; exit}')
|
||||||
|
# Fallback to origin if no match found
|
||||||
|
FORGE_REMOTE="${FORGE_REMOTE:-origin}"
|
||||||
|
export FORGE_REMOTE
|
||||||
|
log "forge remote: ${FORGE_REMOTE}"
|
||||||
|
}
|
||||||
|
|
||||||
# ── .profile repo management ──────────────────────────────────────────────
|
# ── .profile repo management ──────────────────────────────────────────────
|
||||||
|
|
||||||
# ensure_profile_repo [AGENT_IDENTITY]
|
# ensure_profile_repo [AGENT_IDENTITY]
|
||||||
|
|
@ -711,13 +729,14 @@ build_sdk_prompt_footer() {
|
||||||
# Creates an isolated worktree for synchronous formula execution.
|
# Creates an isolated worktree for synchronous formula execution.
|
||||||
# Fetches primary branch, cleans stale worktree, creates new one, and
|
# Fetches primary branch, cleans stale worktree, creates new one, and
|
||||||
# sets an EXIT trap for cleanup.
|
# sets an EXIT trap for cleanup.
|
||||||
# Requires globals: PROJECT_REPO_ROOT, PRIMARY_BRANCH.
|
# Requires globals: PROJECT_REPO_ROOT, PRIMARY_BRANCH, FORGE_REMOTE.
|
||||||
|
# Ensure resolve_forge_remote() is called before this function.
|
||||||
formula_worktree_setup() {
|
formula_worktree_setup() {
|
||||||
local worktree="$1"
|
local worktree="$1"
|
||||||
cd "$PROJECT_REPO_ROOT" || return
|
cd "$PROJECT_REPO_ROOT" || return
|
||||||
git fetch origin "$PRIMARY_BRANCH" 2>/dev/null || true
|
git fetch "${FORGE_REMOTE}" "$PRIMARY_BRANCH" 2>/dev/null || true
|
||||||
worktree_cleanup "$worktree"
|
worktree_cleanup "$worktree"
|
||||||
git worktree add "$worktree" "origin/${PRIMARY_BRANCH}" --detach 2>/dev/null
|
git worktree add "$worktree" "${FORGE_REMOTE}/${PRIMARY_BRANCH}" --detach 2>/dev/null
|
||||||
# shellcheck disable=SC2064 # expand worktree now, not at trap time
|
# shellcheck disable=SC2064 # expand worktree now, not at trap time
|
||||||
trap "worktree_cleanup '$worktree'" EXIT
|
trap "worktree_cleanup '$worktree'" EXIT
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,9 @@ check_memory 2000
|
||||||
|
|
||||||
log "--- Planner run start ---"
|
log "--- Planner run start ---"
|
||||||
|
|
||||||
|
# ── Resolve forge remote for git operations ─────────────────────────────
|
||||||
|
resolve_forge_remote
|
||||||
|
|
||||||
# ── Resolve agent identity for .profile repo ────────────────────────────
|
# ── Resolve agent identity for .profile repo ────────────────────────────
|
||||||
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_PLANNER_TOKEN:-}" ]; then
|
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_PLANNER_TOKEN:-}" ]; then
|
||||||
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_PLANNER_TOKEN}" \
|
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_PLANNER_TOKEN}" \
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,9 @@ check_memory 2000
|
||||||
|
|
||||||
log "--- Predictor run start ---"
|
log "--- Predictor run start ---"
|
||||||
|
|
||||||
|
# ── Resolve forge remote for git operations ─────────────────────────────
|
||||||
|
resolve_forge_remote
|
||||||
|
|
||||||
# ── Resolve agent identity for .profile repo ────────────────────────────
|
# ── Resolve agent identity for .profile repo ────────────────────────────
|
||||||
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_PREDICTOR_TOKEN:-}" ]; then
|
if [ -z "${AGENT_IDENTITY:-}" ] && [ -n "${FORGE_PREDICTOR_TOKEN:-}" ]; then
|
||||||
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_PREDICTOR_TOKEN}" \
|
AGENT_IDENTITY=$(curl -sf -H "Authorization: token ${FORGE_PREDICTOR_TOKEN}" \
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,9 @@ check_memory 2000
|
||||||
|
|
||||||
log "--- Supervisor run start ---"
|
log "--- Supervisor run start ---"
|
||||||
|
|
||||||
|
# ── Resolve forge remote for git operations ─────────────────────────────
|
||||||
|
resolve_forge_remote
|
||||||
|
|
||||||
# ── Housekeeping: clean up stale crashed worktrees (>24h) ────────────────
|
# ── Housekeeping: clean up stale crashed worktrees (>24h) ────────────────
|
||||||
cleanup_stale_crashed_worktrees 24
|
cleanup_stale_crashed_worktrees 24
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue