From 955ce90176e0eba90fafcb25ad3046e75672f7f6 Mon Sep 17 00:00:00 2001 From: Evan Otero Date: Mon, 2 Feb 2026 13:15:19 -0500 Subject: [PATCH] =?UTF-8?q?Revert=20"Add=20status=20command,=20validation?= =?UTF-8?q?=20script,=20troubleshooting=20guide,=20and=20CI/=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 6ef0fd711e6556f8339ac570ea68b8a7d3b815bf. --- .github/workflows/test.yml | 42 ------------------- README.md | 9 ---- TROUBLESHOOTING.md | 85 -------------------------------------- commands/ralph/help.toml | 16 ------- commands/ralph/status.toml | 9 ---- scripts/bump-version.sh | 34 --------------- scripts/setup.sh | 12 ------ scripts/status.sh | 43 ------------------- scripts/validate.sh | 43 ------------------- tests/status_test.sh | 47 --------------------- 10 files changed, 340 deletions(-) delete mode 100644 .github/workflows/test.yml delete mode 100644 TROUBLESHOOTING.md delete mode 100644 commands/ralph/status.toml delete mode 100755 scripts/bump-version.sh delete mode 100755 scripts/status.sh delete mode 100755 scripts/validate.sh delete mode 100755 tests/status_test.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 988e705..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Test Ralph Extension - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y jq - - - name: Make scripts executable - run: | - chmod +x scripts/*.sh - chmod +x hooks/*.sh - chmod +x tests/*.sh - - - name: Run setup tests - run: bash tests/setup_test.sh - - - name: Run hook tests - run: bash tests/hook_test.sh - - - name: Run status tests - run: bash tests/status_test.sh - - - name: Validate scripts - run: | - bash -n scripts/setup.sh - bash -n scripts/cancel.sh - bash -n scripts/status.sh - bash -n scripts/validate.sh - bash -n hooks/stop-hook.sh diff --git a/README.md b/README.md index 4820fcc..0a3dc53 100644 --- a/README.md +++ b/README.md @@ -28,14 +28,6 @@ Install the extension directly from GitHub: gemini extensions install https://github.com/gemini-cli-extensions/ralph --auto-update ``` -### Verify Installation - -After installing, validate your setup: - -```bash -bash ~/.gemini/extensions/ralph/scripts/validate.sh -``` - ## Configuration To use Ralph, you must enable hooks and preview features in your `~/.gemini/settings.json`: @@ -68,7 +60,6 @@ Start a loop by using the `/ralph:loop` command followed by your task. ### Manual Controls -- `/ralph:status`: Check the current status of an active loop. - `/ralph:cancel`: Stops an active loop and cleans up all state files. - `/ralph:help`: Displays detailed usage information and configuration tips. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md deleted file mode 100644 index 4fcf1c4..0000000 --- a/TROUBLESHOOTING.md +++ /dev/null @@ -1,85 +0,0 @@ -# Troubleshooting Ralph - -## Common Issues - -### Loop Won't Start - -**Symptom**: Running `/ralph:loop` doesn't start the loop. - -**Solutions**: -1. Verify hooks are enabled in `~/.gemini/settings.json`: - ```json - { - "hooksConfig": { - "enabled": true - } - } - ``` - -2. Check that the extension directory is included: - ```json - { - "context": { - "includeDirectories": ["~/.gemini/extensions/ralph"] - } - } - ``` - -3. Ensure `jq` is installed: `brew install jq` - -### Loop Won't Stop - -**Symptom**: Loop continues even after completion promise is output. - -**Solutions**: -1. Verify the promise format is exact: `YOUR_TEXT` -2. Check the state file: `cat .gemini/ralph/state.json` -3. Manually cancel: `/ralph:cancel` - -### Ghost Loop - -**Symptom**: Old loop interferes with new tasks. - -**Solution**: The hook should auto-detect this, but you can manually clean up: -```bash -rm -rf .gemini/ralph -``` - -### Permission Errors - -**Symptom**: Scripts fail with permission denied. - -**Solution**: Make scripts executable: -```bash -chmod +x ~/.gemini/extensions/ralph/scripts/*.sh -chmod +x ~/.gemini/extensions/ralph/hooks/*.sh -``` - -## Debugging - -### Check Loop Status -```bash -/ralph:status -``` - -### View State File -```bash -cat .gemini/ralph/state.json | jq -``` - -### Enable Debug Logging -Add to your prompt: -``` -Before each action, output the current iteration number and your plan. -``` - -## Getting Help - -If you encounter issues not covered here: -1. Check the [README](README.md) for configuration details -2. Review test files in `tests/` for expected behavior -3. Open an issue on GitHub with: - - Your `~/.gemini/settings.json` (redact sensitive info) - - The command you ran - - Contents of `.gemini/ralph/state.json` (if exists) - - Error messages diff --git a/commands/ralph/help.toml b/commands/ralph/help.toml index 7b346ce..b311eb9 100644 --- a/commands/ralph/help.toml +++ b/commands/ralph/help.toml @@ -4,26 +4,10 @@ Display the Ralph help documentation. Do NOT use any other subagent for this. Es Summarize the available commands for the user: - `/ralph:loop [OPTIONS]`: Start a Ralph loop. -- `/ralph:status`: Check the current status of an active loop. - `/ralph:cancel`: Cancel an active Ralph loop and clean up all temporary files. - `/ralph:help`: Show this message. **Options:** - `--max-iterations `: Stop after N iterations (default: 5). - `--completion-promise `: Only stop when the agent outputs `TEXT`. - -**Examples:** -```bash -# Basic loop with iteration limit -/ralph:loop "Build a REST API" --max-iterations 10 - -# Loop with completion promise -/ralph:loop "Fix all linting errors" --completion-promise "ALL_CLEAN" - -# Combined options -/ralph:loop "Implement feature X" --max-iterations 15 --completion-promise "FEATURE_COMPLETE" -``` - -**Troubleshooting:** -For common issues and solutions, see TROUBLESHOOTING.md in the extension directory. """ diff --git a/commands/ralph/status.toml b/commands/ralph/status.toml deleted file mode 100644 index b92feb1..0000000 --- a/commands/ralph/status.toml +++ /dev/null @@ -1,9 +0,0 @@ -description = "Check the status of the current Ralph loop." -prompt = """ -You are checking the Ralph loop status. - -Run the status script to display the current loop state: -```bash -bash "${extensionPath}/scripts/status.sh" -``` -""" diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh deleted file mode 100755 index 03e09c4..0000000 --- a/scripts/bump-version.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Bump version in gemini-extension.json - -if [[ $# -ne 1 ]]; then - echo "Usage: $0 " - echo "Example: $0 1.1.0" - exit 1 -fi - -NEW_VERSION="$1" - -if [[ ! "$NEW_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Error: Version must be in format X.Y.Z" - exit 1 -fi - -jq --arg version "$NEW_VERSION" '.version = $version' gemini-extension.json > gemini-extension.json.tmp -mv gemini-extension.json.tmp gemini-extension.json - -echo "✅ Version bumped to $NEW_VERSION" diff --git a/scripts/setup.sh b/scripts/setup.sh index be61f60..15a6276 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -41,23 +41,11 @@ fi # Parse arguments while [[ $# -gt 0 ]]; do case "$1" in - --max-iterations=*) - VALUE="${1#*=}" - [[ "$VALUE" =~ ^[0-9]+$ ]] || die "Invalid iteration limit: '$VALUE'" - MAX_ITERATIONS="$VALUE" - shift - ;; --max-iterations) [[ "${2:-}" =~ ^[0-9]+$ ]] || die "Invalid iteration limit: '${2:-}'" MAX_ITERATIONS="$2" shift 2 ;; - --completion-promise=*) - VALUE="${1#*=}" - [[ -n "$VALUE" ]] || die "Missing promise text." - COMPLETION_PROMISE="$VALUE" - shift - ;; --completion-promise) [[ -n "${2:-}" ]] || die "Missing promise text." COMPLETION_PROMISE="$2" diff --git a/scripts/status.sh b/scripts/status.sh deleted file mode 100755 index 213fa22..0000000 --- a/scripts/status.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -STATE_FILE=".gemini/ralph/state.json" - -if [[ ! -f "$STATE_FILE" ]]; then - echo "Ralph: I'm not doing anything right now!" >&2 - exit 0 -fi - -echo "🔄 Ralph Loop Status" >&2 -echo "===================" >&2 -echo "" >&2 - -ACTIVE=$(jq -r '.active' "$STATE_FILE") -CURRENT=$(jq -r '.current_iteration' "$STATE_FILE") -MAX=$(jq -r '.max_iterations' "$STATE_FILE") -PROMISE=$(jq -r '.completion_promise' "$STATE_FILE") -PROMPT=$(jq -r '.original_prompt' "$STATE_FILE") -STARTED=$(jq -r '.started_at' "$STATE_FILE") - -echo "Status: $([ "$ACTIVE" = "true" ] && echo "🟢 Active" || echo "🔴 Inactive")" >&2 -echo "Iteration: $CURRENT / $MAX" >&2 -echo "Started: $STARTED" >&2 -echo "Task: $PROMPT" >&2 - -if [[ -n "$PROMISE" ]]; then - echo "Completion Promise: $PROMISE" >&2 -fi - -echo "" >&2 diff --git a/scripts/validate.sh b/scripts/validate.sh deleted file mode 100755 index 370e062..0000000 --- a/scripts/validate.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Validate Ralph prerequisites - -echo "🔍 Validating Ralph prerequisites..." - -# Check for jq -if ! command -v jq &> /dev/null; then - echo "❌ Error: jq is not installed. Install it with: brew install jq" - exit 1 -fi - -# Check for bash version (need 4.0+) -if [[ "${BASH_VERSINFO[0]}" -lt 4 ]]; then - echo "⚠️ Warning: Bash version ${BASH_VERSION} detected. Bash 4.0+ recommended." -fi - -# Check hooks configuration -SETTINGS_FILE="$HOME/.gemini/settings.json" -if [[ -f "$SETTINGS_FILE" ]]; then - HOOKS_ENABLED=$(jq -r '.hooksConfig.enabled // false' "$SETTINGS_FILE") - if [[ "$HOOKS_ENABLED" != "true" ]]; then - echo "⚠️ Warning: Hooks are not enabled in ~/.gemini/settings.json" - echo " Add: \"hooksConfig\": { \"enabled\": true }" - fi -else - echo "⚠️ Warning: ~/.gemini/settings.json not found" -fi - -echo "✅ Validation complete!" diff --git a/tests/status_test.sh b/tests/status_test.sh deleted file mode 100755 index 4d68f2d..0000000 --- a/tests/status_test.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# Copyright 2026 Google LLC -# Licensed under the Apache License, Version 2.0 - -STATE_FILE=".gemini/ralph/state.json" -STATE_DIR=".gemini/ralph" -STATUS_SCRIPT="./scripts/status.sh" - -setup() { - mkdir -p "$STATE_DIR" -} - -cleanup() { - rm -f "$STATE_FILE" - if [[ -d "$STATE_DIR" ]]; then - rmdir "$STATE_DIR" 2>/dev/null || true - fi -} - -trap cleanup EXIT - -echo "Running Test 1: No active loop..." -setup -OUTPUT=$("$STATUS_SCRIPT" 2>&1) -if [[ "$OUTPUT" != *"not doing anything"* ]]; then - echo "FAIL: Expected 'not doing anything' message" - exit 1 -fi - -echo "Running Test 2: Active loop status..." -setup -jq -n '{ - active: true, - current_iteration: 3, - max_iterations: 10, - completion_promise: "DONE", - original_prompt: "Test task", - started_at: "2026-01-27T12:00:00Z" -}' > "$STATE_FILE" - -OUTPUT=$("$STATUS_SCRIPT" 2>&1) -if [[ "$OUTPUT" != *"Active"* ]] || [[ "$OUTPUT" != *"3 / 10"* ]]; then - echo "FAIL: Expected active status with iteration count" - exit 1 -fi - -echo "PASS: All tests passed!"