diff --git a/bin/disinto b/bin/disinto index aaa8473..74e37f5 100755 --- a/bin/disinto +++ b/bin/disinto @@ -2569,10 +2569,12 @@ disinto_hire_an_agent() { local agent_name="${1:-}" local role="${2:-}" local formula_path="" + local local_model="" + local poll_interval="" if [ -z "$agent_name" ] || [ -z "$role" ]; then echo "Error: agent-name and role required" >&2 - echo "Usage: disinto hire-an-agent [--formula ]" >&2 + echo "Usage: disinto hire-an-agent [--formula ] [--local-model ] [--poll-interval ]" >&2 exit 1 fi shift 2 @@ -2584,6 +2586,14 @@ disinto_hire_an_agent() { formula_path="$2" shift 2 ;; + --local-model) + local_model="$2" + shift 2 + ;; + --poll-interval) + poll_interval="$2" + shift 2 + ;; *) echo "Unknown option: $1" >&2 exit 1 @@ -2604,6 +2614,10 @@ disinto_hire_an_agent() { echo "── Hiring agent: ${agent_name} (${role}) ───────────────────────" echo "Formula: ${formula_path}" + if [ -n "$local_model" ]; then + echo "Local model: ${local_model}" + echo "Poll interval: ${poll_interval:-300}s" + fi # Ensure FORGE_TOKEN is set if [ -z "${FORGE_TOKEN:-}" ]; then @@ -2859,6 +2873,102 @@ EOF echo " State marker already exists: ${state_file}" fi + # Step 6: Set up local model agent (if --local-model specified) + if [ -n "$local_model" ]; then + echo "" + echo "Step 6: Configuring local model agent..." + + local compose_file="${FACTORY_ROOT}/docker-compose.yml" + local override_file="${FACTORY_ROOT}/docker-compose.override.yml" + local override_dir + override_dir=$(dirname "$override_file") + mkdir -p "$override_dir" + + # Validate model endpoint is reachable + echo " Validating model endpoint: ${local_model}" + if ! curl -sf --max-time 10 "${local_model}/health" >/dev/null 2>&1; then + # Try /v1/chat/completions as fallback endpoint check + if ! curl -sf --max-time 10 "${local_model}/v1/chat/completions" >/dev/null 2>&1; then + echo " Warning: model endpoint may not be reachable at ${local_model}" + echo " Continuing with configuration..." + fi + else + echo " Model endpoint is reachable" + fi + + # Generate service name from agent name (lowercase, replace - with -) + local service_name="agents-${agent_name}" + service_name=$(echo "$service_name" | tr '[:upper:]' '[:lower:]') + + # Set default poll interval + local interval="${poll_interval:-300}" + + # Generate token for the agent (use same token as FORGE_TOKEN for simplicity) + local agent_token="${FORGE_TOKEN}" + + # Generate the override compose file + cat > "$override_file" <