Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/breverdbidder_spd-site-plan-dev.json

1 line
21 KiB
JSON

{"repo": "breverdbidder/spd-site-plan-dev", "files": {".github/workflows/council_analysis.yml": {"0ccf5dfb9dc2e7ee324973920c1519f7c42d04e8": {"t": 1785747048.25129, "n": 7176, "h": "0163d6c59facb002", "c": "name: AI Council Analysis\n\non:\n workflow_dispatch:\n inputs:\n platform:\n description: 'Platform (zonewise, spd, biddeed)'\n required: true\n type: choice\n options:\n - biddeed\n - zonewise\n - spd\n subject:\n description: 'Property address or project name'\n required: true\n type: string\n query:\n description: 'Analysis question'\n required: true\n type: string\n context_json:\n description: 'JSON context data (optional)'\n required: false\n type: string\n default: '{}'\n\n repository_dispatch:\n types: [run-council]\n\nenv:\n GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}\n SUPABASE_URL: ${{ secrets.SUPABASE_URL }}\n SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }}\n\njobs:\n run-council:\n runs-on: ubuntu-latest\n timeout-minutes: 15\n \n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n \n - name: Set up Python\n uses: actions/setup-python@v5\n with:\n python-version: '3.11'\n cache: 'pip'\n \n - name: Install dependencies\n run: |\n pip install langgraph httpx pydantic python-dotenv\n pip install supabase || true\n \n - name: Run AI Council\n id: council\n run: |\n # Set inputs from workflow_dispatch or repository_dispatch\n if [ \"${{ github.event_name }}\" = \"repository_dispatch\" ]; then\n PLATFORM=\"${{ github.event.client_payload.platform }}\"\n SUBJECT=\"${{ github.event.client_payload.subject }}\"\n QUERY=\"${{ github.event.client_payload.query }}\"\n CONTEXT='${{ github.event.client_payload.context }}'\n else\n PLATFORM=\"${{ inputs.platform }}\"\n SUBJECT=\"${{ inputs.subject }}\"\n QUERY=\"${{ inputs.query }}\"\n CONTEXT='${{ inputs.context_json }}'\n fi\n \n # Create output directory\n mkdir -p council_output\n \n # Add src to Python path and run\n cd $GITHUB_WORKSPACE\n export PYTHONPATH=\"${PYTHONPATH}:${GITHUB_WORKSPACE}/src/council\"\n \n # Run council analysis with inline script to handle imports\n python3 << PYEOF\nimport sys\nimport os\nimport json\nimport asyncio\nfrom datetime import datetime\n\n# Add council module to path\nsys.path.insert(0, os.path.join(os.getcwd(), 'src', 'council'))\n\n# Import after path setup\nfrom council_prompts import Platform, get_council_agents, create_shared_reasoning_file\nfrom council_workflow import run_council\n\nasync def main():\n platform = \"$PLATFORM\"\n subject = \"$SUBJECT\"\n query = \"$QUERY\"\n context = json.loads('$CONTEXT')\n \n print(f\"Running AI Council for: {subject}\")\n print(f\"Platform: {platform}\")\n print(f\"Query: {query}\")\n \n try:\n result = await run_council(\n platform=platform,\n subject=subject,\n query=query,\n context=context,\n output_dir=\"council_output\"\n )\n \n print(f\"\\n✅ Council Complete!\")\n print(f\"Confidence: {result.get('confidence', 0):.2f}\")\n print(f\"Execution Time: {result.get('execution_time_ms', 0)}ms\")\n \n except Exception as e:\n print(f\"❌ Council Error: {e}\")\n # Create minimal output on error\n error_result = {\n \"council_id\": \"error\",\n \"platform\": platform,\n \"subject\": subject,\n \"query\": query,\n \"error\": str(e),\n \"created_at\": datetime.utcnow().isoformat()\n }\n with open(\"council_output/council_result.json\", \"w\") as f:\n json.dump(error_result, f, indent=2)\n \n # Create minimal shared_reasoning.md\n with open(\"council_output/shared_reasoning.md\", \"w\") as f:\n f.write(f\"# AI Council Analysis: {subject}\\n\\n\")\n f.write(f\"**Error:** {e}\\n\")\n \n raise\n\nasyncio.run(main())\nPYEOF\n \n - name: Upload artifacts\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: council-analysis-${{ github.run_id }}\n path: council_output/\n retention-days: 30\n \n - name: Save to Supabase\n if: success()\n continue-on-error: true\n run: |\n python3 << 'PYEOF'\nimport json\nimport os\n\ntry:\n from supabase import create_client\n \n url = os.environ.get('SUPABASE_URL', '')\n key = os.environ.get('SUPABASE_SERVICE_KEY', '')\n \n if url and key:\n client = create_client(url, key)\n \n with open('council_output/council_result.json') as f:\n result = json.load(f)\n \n with open('council_output/shared_reasoning.md') as f:\n reasoning = f.read()\n \n # Insert into council_analyses table\n client.table('council_analyses').insert({\n 'council_id': result.get('council_id', 'unknown'),\n 'platform': result.get('platform', ''),\n 'subject': result.get('subject', ''),\n 'query': result.get('query', ''),\n 'recommendation': result.get('recommendation', ''),\n 'confidence': result.get('confidence', 0),\n 'action_items': result.get('action_items', []),\n 'execution_time_ms': result.get('execution_time_ms', 0),\n 'token_usage': result.get('token_usage', {}),\n 'shared_reasoning': reasoning\n }).execute()\n \n print(f\"✅ Saved council analysis to Supabase\")\n else:\n print(\"⚠️ Supabase credentials not configured\")\n \nexcept ImportError:\n print(\"⚠️ Supabase client not installed\")\nexcept Exception as e:\n print(f\"⚠️ Failed to save to Supabase: {e}\")\nPYEOF\n \n - name: Post summary\n if: always()\n run: |\n echo \"## AI Council Analysis Complete\" >> $GITHUB_STEP_SUMMARY\n echo \"\" >> $GITHUB_STEP_SUMMARY\n \n if [ -f council_output/council_result.json ]; then\n RESULT=$(cat council_output/council_result.json)\n CONFIDENCE=$(echo $RESULT | python3 -c \"import sys,json; print(json.load(sys.stdin).get('confidence', 'N/A'))\" 2>/dev/null || echo \"N/A\")\n EXECUTION_TIME=$(echo $RESULT | python3 -c \"import sys,json; print(json.load(sys.stdin).get('execution_time_ms', 'N/A'))\" 2>/dev/null || echo \"N/A\")\n \n echo \"**Platform:** ${{ inputs.platform || github.event.client_payload.platform }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Subject:** ${{ inputs.subject || github.event.client_payload.subject }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Confidence:** ${CONFIDENCE}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Execution Time:** ${EXECUTION_TIME}ms\" >> $GITHUB_STEP_SUMMARY\n else\n echo \"❌ No result file generated\" >> $GITHUB_STEP_SUMMARY\n fi\n \n echo \"\" >> $GITHUB_STEP_SUMMARY\n echo \"📄 Full analysis available in artifacts\" >> $GITHUB_STEP_SUMMARY\n"}, "10a50a8ba78b406bc012873e009ad5162b9ba0e0": {"t": 1785770088.5130157, "n": 7176, "h": "0163d6c59facb002", "c": "name: AI Council Analysis\n\non:\n workflow_dispatch:\n inputs:\n platform:\n description: 'Platform (zonewise, spd, biddeed)'\n required: true\n type: choice\n options:\n - biddeed\n - zonewise\n - spd\n subject:\n description: 'Property address or project name'\n required: true\n type: string\n query:\n description: 'Analysis question'\n required: true\n type: string\n context_json:\n description: 'JSON context data (optional)'\n required: false\n type: string\n default: '{}'\n\n repository_dispatch:\n types: [run-council]\n\nenv:\n GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}\n SUPABASE_URL: ${{ secrets.SUPABASE_URL }}\n SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }}\n\njobs:\n run-council:\n runs-on: ubuntu-latest\n timeout-minutes: 15\n \n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n \n - name: Set up Python\n uses: actions/setup-python@v5\n with:\n python-version: '3.11'\n cache: 'pip'\n \n - name: Install dependencies\n run: |\n pip install langgraph httpx pydantic python-dotenv\n pip install supabase || true\n \n - name: Run AI Council\n id: council\n run: |\n # Set inputs from workflow_dispatch or repository_dispatch\n if [ \"${{ github.event_name }}\" = \"repository_dispatch\" ]; then\n PLATFORM=\"${{ github.event.client_payload.platform }}\"\n SUBJECT=\"${{ github.event.client_payload.subject }}\"\n QUERY=\"${{ github.event.client_payload.query }}\"\n CONTEXT='${{ github.event.client_payload.context }}'\n else\n PLATFORM=\"${{ inputs.platform }}\"\n SUBJECT=\"${{ inputs.subject }}\"\n QUERY=\"${{ inputs.query }}\"\n CONTEXT='${{ inputs.context_json }}'\n fi\n \n # Create output directory\n mkdir -p council_output\n \n # Add src to Python path and run\n cd $GITHUB_WORKSPACE\n export PYTHONPATH=\"${PYTHONPATH}:${GITHUB_WORKSPACE}/src/council\"\n \n # Run council analysis with inline script to handle imports\n python3 << PYEOF\nimport sys\nimport os\nimport json\nimport asyncio\nfrom datetime import datetime\n\n# Add council module to path\nsys.path.insert(0, os.path.join(os.getcwd(), 'src', 'council'))\n\n# Import after path setup\nfrom council_prompts import Platform, get_council_agents, create_shared_reasoning_file\nfrom council_workflow import run_council\n\nasync def main():\n platform = \"$PLATFORM\"\n subject = \"$SUBJECT\"\n query = \"$QUERY\"\n context = json.loads('$CONTEXT')\n \n print(f\"Running AI Council for: {subject}\")\n print(f\"Platform: {platform}\")\n print(f\"Query: {query}\")\n \n try:\n result = await run_council(\n platform=platform,\n subject=subject,\n query=query,\n context=context,\n output_dir=\"council_output\"\n )\n \n print(f\"\\n✅ Council Complete!\")\n print(f\"Confidence: {result.get('confidence', 0):.2f}\")\n print(f\"Execution Time: {result.get('execution_time_ms', 0)}ms\")\n \n except Exception as e:\n print(f\"❌ Council Error: {e}\")\n # Create minimal output on error\n error_result = {\n \"council_id\": \"error\",\n \"platform\": platform,\n \"subject\": subject,\n \"query\": query,\n \"error\": str(e),\n \"created_at\": datetime.utcnow().isoformat()\n }\n with open(\"council_output/council_result.json\", \"w\") as f:\n json.dump(error_result, f, indent=2)\n \n # Create minimal shared_reasoning.md\n with open(\"council_output/shared_reasoning.md\", \"w\") as f:\n f.write(f\"# AI Council Analysis: {subject}\\n\\n\")\n f.write(f\"**Error:** {e}\\n\")\n \n raise\n\nasyncio.run(main())\nPYEOF\n \n - name: Upload artifacts\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: council-analysis-${{ github.run_id }}\n path: council_output/\n retention-days: 30\n \n - name: Save to Supabase\n if: success()\n continue-on-error: true\n run: |\n python3 << 'PYEOF'\nimport json\nimport os\n\ntry:\n from supabase import create_client\n \n url = os.environ.get('SUPABASE_URL', '')\n key = os.environ.get('SUPABASE_SERVICE_KEY', '')\n \n if url and key:\n client = create_client(url, key)\n \n with open('council_output/council_result.json') as f:\n result = json.load(f)\n \n with open('council_output/shared_reasoning.md') as f:\n reasoning = f.read()\n \n # Insert into council_analyses table\n client.table('council_analyses').insert({\n 'council_id': result.get('council_id', 'unknown'),\n 'platform': result.get('platform', ''),\n 'subject': result.get('subject', ''),\n 'query': result.get('query', ''),\n 'recommendation': result.get('recommendation', ''),\n 'confidence': result.get('confidence', 0),\n 'action_items': result.get('action_items', []),\n 'execution_time_ms': result.get('execution_time_ms', 0),\n 'token_usage': result.get('token_usage', {}),\n 'shared_reasoning': reasoning\n }).execute()\n \n print(f\"✅ Saved council analysis to Supabase\")\n else:\n print(\"⚠️ Supabase credentials not configured\")\n \nexcept ImportError:\n print(\"⚠️ Supabase client not installed\")\nexcept Exception as e:\n print(f\"⚠️ Failed to save to Supabase: {e}\")\nPYEOF\n \n - name: Post summary\n if: always()\n run: |\n echo \"## AI Council Analysis Complete\" >> $GITHUB_STEP_SUMMARY\n echo \"\" >> $GITHUB_STEP_SUMMARY\n \n if [ -f council_output/council_result.json ]; then\n RESULT=$(cat council_output/council_result.json)\n CONFIDENCE=$(echo $RESULT | python3 -c \"import sys,json; print(json.load(sys.stdin).get('confidence', 'N/A'))\" 2>/dev/null || echo \"N/A\")\n EXECUTION_TIME=$(echo $RESULT | python3 -c \"import sys,json; print(json.load(sys.stdin).get('execution_time_ms', 'N/A'))\" 2>/dev/null || echo \"N/A\")\n \n echo \"**Platform:** ${{ inputs.platform || github.event.client_payload.platform }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Subject:** ${{ inputs.subject || github.event.client_payload.subject }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Confidence:** ${CONFIDENCE}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Execution Time:** ${EXECUTION_TIME}ms\" >> $GITHUB_STEP_SUMMARY\n else\n echo \"❌ No result file generated\" >> $GITHUB_STEP_SUMMARY\n fi\n \n echo \"\" >> $GITHUB_STEP_SUMMARY\n echo \"📄 Full analysis available in artifacts\" >> $GITHUB_STEP_SUMMARY\n"}, "bb69ad924095fdc0237fbadeb9425b7dc2568ddd": {"t": 1785770089.7833624, "n": 5382, "h": "07541f18c79be90e", "c": "name: AI Council Analysis\n\non:\n workflow_dispatch:\n inputs:\n platform:\n description: 'Platform (zonewise, spd, biddeed)'\n required: true\n type: choice\n options:\n - biddeed\n - zonewise\n - spd\n subject:\n description: 'Property address or project name'\n required: true\n type: string\n query:\n description: 'Analysis question'\n required: true\n type: string\n context_json:\n description: 'JSON context data (optional)'\n required: false\n type: string\n default: '{}'\n\n repository_dispatch:\n types: [run-council]\n\nenv:\n GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}\n ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}\n SUPABASE_URL: ${{ secrets.SUPABASE_URL }}\n SUPABASE_SERVICE_KEY: ${{ secrets.SUPABASE_SERVICE_KEY }}\n\njobs:\n run-council:\n runs-on: ubuntu-latest\n timeout-minutes: 15\n \n steps:\n - name: Checkout repository\n uses: actions/checkout@v4\n \n - name: Set up Python\n uses: actions/setup-python@v5\n with:\n python-version: '3.11'\n cache: 'pip'\n \n - name: Install dependencies\n run: |\n pip install langgraph httpx pydantic python-dotenv supabase\n \n - name: Run AI Council\n id: council\n run: |\n # Set inputs from workflow_dispatch or repository_dispatch\n if [ \"${{ github.event_name }}\" = \"repository_dispatch\" ]; then\n PLATFORM=\"${{ github.event.client_payload.platform }}\"\n SUBJECT=\"${{ github.event.client_payload.subject }}\"\n QUERY=\"${{ github.event.client_payload.query }}\"\n CONTEXT='${{ github.event.client_payload.context }}'\n else\n PLATFORM=\"${{ inputs.platform }}\"\n SUBJECT=\"${{ inputs.subject }}\"\n QUERY=\"${{ inputs.query }}\"\n CONTEXT='${{ inputs.context_json }}'\n fi\n \n # Create output directory\n mkdir -p council_output\n \n # Run council analysis\n python src/council_workflow.py \\\n --platform \"$PLATFORM\" \\\n --subject \"$SUBJECT\" \\\n --query \"$QUERY\" \\\n --context \"$CONTEXT\" \\\n --output council_output\n \n # Set outputs\n echo \"shared_reasoning=$(cat council_output/shared_reasoning.md | base64 -w0)\" >> $GITHUB_OUTPUT\n echo \"result=$(cat council_output/council_result.json | base64 -w0)\" >> $GITHUB_OUTPUT\n \n - name: Upload artifacts\n uses: actions/upload-artifact@v4\n with:\n name: council-analysis-${{ github.run_id }}\n path: council_output/\n retention-days: 30\n \n - name: Save to Supabase\n if: success()\n run: |\n python -c \"\n import json\n import os\n from supabase import create_client\n \n url = os.environ['SUPABASE_URL']\n key = os.environ['SUPABASE_SERVICE_KEY']\n \n if url and key:\n client = create_client(url, key)\n \n with open('council_output/council_result.json') as f:\n result = json.load(f)\n \n with open('council_output/shared_reasoning.md') as f:\n reasoning = f.read()\n \n # Insert into council_analyses table\n client.table('council_analyses').insert({\n 'council_id': result['council_id'],\n 'platform': result['platform'],\n 'subject': result['subject'],\n 'query': result['query'],\n 'recommendation': result['recommendation'],\n 'confidence': result['confidence'],\n 'action_items': result['action_items'],\n 'execution_time_ms': result['execution_time_ms'],\n 'token_usage': result['token_usage'],\n 'shared_reasoning': reasoning\n }).execute()\n \n print(f'Saved council analysis {result[\\\"council_id\\\"]} to Supabase')\n \"\n \n - name: Post summary\n run: |\n echo \"## AI Council Analysis Complete\" >> $GITHUB_STEP_SUMMARY\n echo \"\" >> $GITHUB_STEP_SUMMARY\n \n # Parse result\n RESULT=$(cat council_output/council_result.json)\n CONFIDENCE=$(echo $RESULT | jq -r '.confidence')\n EXECUTION_TIME=$(echo $RESULT | jq -r '.execution_time_ms')\n \n echo \"**Platform:** ${{ inputs.platform || github.event.client_payload.platform }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Subject:** ${{ inputs.subject || github.event.client_payload.subject }}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Confidence:** ${CONFIDENCE}\" >> $GITHUB_STEP_SUMMARY\n echo \"**Execution Time:** ${EXECUTION_TIME}ms\" >> $GITHUB_STEP_SUMMARY\n echo \"\" >> $GITHUB_STEP_SUMMARY\n echo \"### Action Items\" >> $GITHUB_STEP_SUMMARY\n echo $RESULT | jq -r '.action_items[]' | while read item; do\n echo \"- [ ] $item\" >> $GITHUB_STEP_SUMMARY\n done\n echo \"\" >> $GITHUB_STEP_SUMMARY\n echo \"📄 Full analysis available in artifacts\" >> $GITHUB_STEP_SUMMARY\n"}}}}