Files
CapaKraken/.agents/sprints/widget-field-refactor/start-gpt-5.4.sh
T

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."