153 lines
4.4 KiB
Bash
153 lines
4.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
AGENTS_DIR="$ROOT_DIR/.agents"
|
|
SPRINT_DIR="$AGENTS_DIR/sprints/widget-field-refactor"
|
|
ACTIVE_CONFIG="$AGENTS_DIR/config.toml"
|
|
GPT54_CONFIG="$AGENTS_DIR/config.gpt-5.4.toml"
|
|
BACKUP_CONFIG="$AGENTS_DIR/config.toml.pre-gpt-5.4.bak"
|
|
CODEX_CONFIG="$HOME/.codex/config.toml"
|
|
|
|
require_file() {
|
|
local path="$1"
|
|
if [[ ! -f "$path" ]]; then
|
|
echo "Missing required file: $path" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_cmd() {
|
|
local name="$1"
|
|
if ! command -v "$name" >/dev/null 2>&1; then
|
|
echo "Missing required command: $name" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
spawn_agent() {
|
|
local type="$1"
|
|
local name="$2"
|
|
|
|
echo " - spawning $name ($type)"
|
|
npx @claude-flow/cli agent spawn --type "$type" --name "$name"
|
|
}
|
|
|
|
check_azure_codex_config() {
|
|
require_file "$CODEX_CONFIG"
|
|
|
|
local provider
|
|
provider="$(sed -n 's/^[[:space:]]*model_provider[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' "$CODEX_CONFIG" | head -n 1)"
|
|
|
|
if [[ -z "$provider" ]]; then
|
|
echo "Missing model_provider in $CODEX_CONFIG" >&2
|
|
echo "See docs/azure_codex_setup.md" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$provider" != azure* ]]; then
|
|
echo "Codex is not configured for Azure in $CODEX_CONFIG" >&2
|
|
echo "Detected model_provider=\"$provider\"" >&2
|
|
echo "See docs/azure_codex_setup.md" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -q 'AZURE_OPENAI_API_KEY' "$CODEX_CONFIG"; then
|
|
echo "Azure Codex config is missing AZURE_OPENAI_API_KEY binding in $CODEX_CONFIG" >&2
|
|
echo "See docs/azure_codex_setup.md" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${AZURE_OPENAI_API_KEY:-}" ]]; then
|
|
echo "AZURE_OPENAI_API_KEY is not exported in the current shell." >&2
|
|
echo "See docs/azure_codex_setup.md" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Azure Codex config detected:"
|
|
echo " config -> $CODEX_CONFIG"
|
|
echo " provider -> $provider"
|
|
}
|
|
|
|
require_cmd npx
|
|
require_file "$GPT54_CONFIG"
|
|
require_file "$SPRINT_DIR/O1-orchestrator.md"
|
|
require_file "$SPRINT_DIR/A1-architect.md"
|
|
require_file "$SPRINT_DIR/C1-field-domain-coder.md"
|
|
require_file "$SPRINT_DIR/C2-blueprint-ui-coder.md"
|
|
require_file "$SPRINT_DIR/C3-widget-platform-coder.md"
|
|
require_file "$SPRINT_DIR/C4-dashboard-data-coder.md"
|
|
require_file "$SPRINT_DIR/T1-test-agent.md"
|
|
require_file "$SPRINT_DIR/R1-reviewer.md"
|
|
check_azure_codex_config
|
|
|
|
if [[ -f "$ACTIVE_CONFIG" && ! -f "$BACKUP_CONFIG" ]]; then
|
|
cp "$ACTIVE_CONFIG" "$BACKUP_CONFIG"
|
|
fi
|
|
|
|
echo "Switching active Claude Flow config to GPT-5.4..."
|
|
cp "$GPT54_CONFIG" "$ACTIVE_CONFIG"
|
|
|
|
echo
|
|
echo "Initializing hierarchical swarm..."
|
|
npx @claude-flow/cli swarm init \
|
|
--topology hierarchical \
|
|
--max-agents 8 \
|
|
--strategy specialized
|
|
|
|
echo
|
|
echo "Spawning sprint agents..."
|
|
spawn_agent coordinator O1
|
|
spawn_agent architect A1
|
|
spawn_agent coder C1
|
|
spawn_agent coder C2
|
|
spawn_agent coder C3
|
|
spawn_agent coder C4
|
|
spawn_agent tester T1
|
|
spawn_agent reviewer R1
|
|
|
|
echo
|
|
echo "Swarm status:"
|
|
npx @claude-flow/cli swarm status
|
|
|
|
echo
|
|
echo "Active agents:"
|
|
npx @claude-flow/cli agent list --filter active || true
|
|
|
|
echo
|
|
echo "Important:"
|
|
echo " 'swarm init' only creates the coordination container."
|
|
echo " Actual progress starts only after agents are successfully created"
|
|
echo " and given work."
|
|
|
|
echo
|
|
echo "Sprint prompt files:"
|
|
echo " O1 -> $SPRINT_DIR/O1-orchestrator.md"
|
|
echo " A1 -> $SPRINT_DIR/A1-architect.md"
|
|
echo " C1 -> $SPRINT_DIR/C1-field-domain-coder.md"
|
|
echo " C2 -> $SPRINT_DIR/C2-blueprint-ui-coder.md"
|
|
echo " C3 -> $SPRINT_DIR/C3-widget-platform-coder.md"
|
|
echo " C4 -> $SPRINT_DIR/C4-dashboard-data-coder.md"
|
|
echo " T1 -> $SPRINT_DIR/T1-test-agent.md"
|
|
echo " R1 -> $SPRINT_DIR/R1-reviewer.md"
|
|
|
|
echo
|
|
echo "Recommended startup sequence:"
|
|
echo " 1. Paste O1 prompt into agent O1."
|
|
echo " 2. Paste A1 prompt into agent A1."
|
|
echo " 3. Wait for A1 contracts."
|
|
echo " 4. Then start C1, C3, and T1."
|
|
echo " 5. Start C2 after field contract approval."
|
|
echo " 6. Start C4 after router/application boundaries are agreed."
|
|
echo " 7. Keep R1 reviewing every merge candidate."
|
|
|
|
echo
|
|
echo "Note:"
|
|
echo " This script automates config activation, swarm init, and agent spawning."
|
|
echo " Prompt injection remains file-based because the repo-local Claude Flow"
|
|
echo " docs only define swarm init, agent spawn, task orchestration, status,"
|
|
echo " and routing commands."
|
|
echo " O1 uses the CLI's 'coordinator' type and receives the non-coding"
|
|
echo " orchestrator instructions from O1-orchestrator.md."
|