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>
20 lines
1.1 KiB
Bash
Executable File
20 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# start-project.sh <name> [agent...] — start a fleet project's agents via its harness.
|
|
#
|
|
# Resolves <name> in the PO's fleet.toml, then drives that project's harness. For an
|
|
# agent-orchestrator project that is `engine/agents.py up`. For an unfamiliar harness, READ that
|
|
# project's harness docs first — there is no rigid contract. This wrapper handles the common
|
|
# agent-orchestrator case; extend it (or act by hand) for other harnesses.
|
|
set -euo pipefail
|
|
[ $# -ge 1 ] || { echo "usage: start-project.sh <name> [agent...]" >&2; exit 1; }
|
|
NAME="$1"; shift || true
|
|
source "$(dirname "$0")/_resolve.sh"
|
|
IFS=$'\t' read -r LOCATION CONFIG HARNESS < <(resolve_project "$NAME")
|
|
[ -d "$LOCATION" ] || { echo "start-project: location not a local dir: $LOCATION (clone it first)" >&2; exit 1; }
|
|
case "$HARNESS" in
|
|
agent-orchestrator)
|
|
echo "start-project: $NAME → python3 engine/agents.py up $* (in $LOCATION)"
|
|
( cd "$LOCATION" && python3 engine/agents.py --config "$CONFIG" up "$@" );;
|
|
*) echo "start-project: harness '$HARNESS' is not agent-orchestrator — read its docs and drive it by hand." >&2; exit 2;;
|
|
esac
|