diff --git a/.github/simili.yaml b/.github/simili.yaml new file mode 100644 index 000000000..e7b2e0c66 --- /dev/null +++ b/.github/simili.yaml @@ -0,0 +1,21 @@ +qdrant: + url: "${QDRANT_URL}" + api_key: "${QDRANT_API_KEY}" + collection: "entireio-cli-issues" + +embedding: + provider: "gemini" + api_key: "${GEMINI_API_KEY}" + model: "gemini-embedding-001" + +defaults: + similarity_threshold: 0.75 + max_similar_to_show: 5 + +transfer: + duplicate_confidence_threshold: 0.85 + +repositories: + - org: "entireio" + repo: "entireio-cli" + enabled: true diff --git a/.github/workflows/simili.yml b/.github/workflows/simili.yml new file mode 100644 index 000000000..9f448c827 --- /dev/null +++ b/.github/workflows/simili.yml @@ -0,0 +1,24 @@ +name: Simili Issue Triage + +on: + issues: + types: [opened, reopened] + +jobs: + triage: + runs-on: ubuntu-latest + permissions: + issues: write + contents: read + steps: + - uses: actions/checkout@v4 + + - name: Run Simili Bot + uses: similigh/simili-bot@v0.1.5 + with: + config_path: .github/simili.yaml + env: + GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} + QDRANT_URL: ${{ secrets.QDRANT_URL }} + QDRANT_API_KEY: ${{ secrets.QDRANT_API_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/simili-backfill.sh b/scripts/simili-backfill.sh new file mode 100755 index 000000000..53132c1b7 --- /dev/null +++ b/scripts/simili-backfill.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Backfill script for applying Simili Bot triage to existing open issues +# Usage: ./scripts/simili-backfill.sh + +set -euo pipefail + +REPO="entireio/cli" +CONFIG=".github/simili.yaml" + +echo "🔍 Fetching open issues from $REPO..." + +# Fetch all open issues +gh issue list --repo "$REPO" --state open --json number,title,body,author,labels,createdAt --limit 1000 > /tmp/issues.json + +ISSUE_COUNT=$(jq '. | length' /tmp/issues.json) +echo "📊 Found $ISSUE_COUNT open issues" + +if [ "$ISSUE_COUNT" -eq 0 ]; then + echo "✅ No issues to process" + exit 0 +fi + +echo "🤖 Processing issues with Simili Bot..." + +# Process each issue +jq -c '.[]' /tmp/issues.json | while read -r issue; do + NUMBER=$(echo "$issue" | jq -r '.number') + TITLE=$(echo "$issue" | jq -r '.title') + + echo " Processing #$NUMBER: $TITLE" + + # Create temporary issue file + echo "$issue" > "/tmp/issue-$NUMBER.json" + + # Run simili process (requires simili CLI to be installed) + if command -v simili &> /dev/null; then + simili process --issue "/tmp/issue-$NUMBER.json" --config "$CONFIG" || echo " ⚠️ Failed to process #$NUMBER" + else + echo " ⚠️ simili CLI not found. Install with: gh extension install similigh/simili-bot" + exit 1 + fi + + # Cleanup + rm "/tmp/issue-$NUMBER.json" + + # Rate limit: sleep 2s between issues + sleep 2 +done + +echo "✅ Backfill complete!"