The PO is itself a project using the agent-orchestrator harness (engine/ submodule pinned at v0.1.0). Adds: agents.toml (one persistent fleet-management agent) + prompts/; fleet.toml (the sole project<->harness<->ref registry) + docs/fleet-registry.md; scripts/ (fleet.py + create/start/stop/update-project.sh); docs/manage-projects.md + docs/bootstrap.md; flake.nix/.lock devShell (python311+tmux+git); README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
22 lines
1.4 KiB
Bash
Executable File
22 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# update-project.sh <name> <new-ref> — bump a fleet project's harness submodule to a new ref.
|
|
#
|
|
# Updating the engine for a project = checkout a new ref of its `engine/` submodule + commit, IN
|
|
# THAT PROJECT'S REPO ONLY. It touches no other project (each pins its own copy). Afterwards, update
|
|
# the project's `ref` in this PO's fleet.toml so the registry stays accurate.
|
|
set -euo pipefail
|
|
[ $# -ge 2 ] || { echo "usage: update-project.sh <name> <new-ref>" >&2; exit 1; }
|
|
NAME="$1"; NEWREF="$2"
|
|
source "$(dirname "$0")/_resolve.sh"
|
|
IFS=$'\t' read -r LOCATION CONFIG HARNESS < <(resolve_project "$NAME")
|
|
[ -d "$LOCATION" ] || { echo "update-project: location not a local dir: $LOCATION" >&2; exit 1; }
|
|
[ "$HARNESS" = "agent-orchestrator" ] || { echo "update-project: harness '$HARNESS' not agent-orchestrator — update by hand per its docs." >&2; exit 2; }
|
|
|
|
echo "update-project: $NAME engine → $NEWREF (in $LOCATION)"
|
|
( cd "$LOCATION/engine" && git fetch -q --tags origin && git checkout -q "$NEWREF" )
|
|
( cd "$LOCATION" && git add engine \
|
|
&& git -c user.name="project-orchestrator" -c user.email="po@localhost" \
|
|
commit -q -m "chore: bump engine to $NEWREF" )
|
|
echo "update-project: project committed. Now update fleet.toml: set ref = \"$NEWREF\" for '$NAME'."
|
|
echo " (edit $(cd "$(dirname "$0")/.." && pwd)/fleet.toml, then: python3 scripts/fleet.py validate)"
|