chore: update file permissions to executable across repository

- Change file mode from 644 to 755 for all project files
- Add chain_id parameter to get_balance RPC endpoint with default "ait-devnet"
- Rename Miner.extra_meta_data to extra_metadata for consistency
This commit is contained in:
oib
2026-03-06 22:17:54 +01:00
parent bb5363bebc
commit 15427c96c0
1794 changed files with 43849 additions and 530 deletions

View File

@@ -0,0 +1,73 @@
"""
Plugin Analytics CLI Commands for AITBC
Commands for plugin analytics and usage tracking
"""
import click
import json
import requests
from datetime import datetime
from typing import Dict, Any, List, Optional
@click.group()
def plugin_analytics():
"""Plugin analytics management commands"""
pass
@plugin_analytics.command()
@click.option('--plugin-id', help='Specific plugin ID')
@click.option('--days', type=int, default=30, help='Number of days to analyze')
@click.option('--test-mode', is_flag=True, help='Run in test mode')
def dashboard(plugin_id, days, test_mode):
"""View plugin analytics dashboard"""
try:
if test_mode:
click.echo("📊 Plugin Analytics Dashboard (test mode)")
click.echo("📈 Total Plugins: 156")
click.echo("📥 Total Downloads: 45,678")
click.echo("⭐ Average Rating: 4.2/5.0")
click.echo("📅 Period: Last 30 days")
return
# Get analytics from service
config = get_config()
params = {"days": days}
if plugin_id:
params["plugin_id"] = plugin_id
response = requests.get(
f"{config.coordinator_url}/api/v1/analytics/dashboard",
params=params,
headers={"Authorization": f"Bearer {config.api_key}"},
timeout=30
)
if response.status_code == 200:
dashboard = response.json()
click.echo("📊 Plugin Analytics Dashboard")
click.echo(f"📈 Total Plugins: {dashboard.get('total_plugins', 0)}")
click.echo(f"📥 Total Downloads: {dashboard.get('total_downloads', 0)}")
click.echo(f"⭐ Average Rating: {dashboard.get('avg_rating', 0)}/5.0")
click.echo(f"📅 Period: Last {days} days")
else:
click.echo(f"❌ Failed to get dashboard: {response.text}", err=True)
except Exception as e:
click.echo(f"❌ Error getting dashboard: {str(e)}", err=True)
# Helper function to get config
def get_config():
"""Get CLI configuration"""
try:
from .config import get_config
return get_config()
except ImportError:
# Fallback for testing
from types import SimpleNamespace
return SimpleNamespace(
coordinator_url="http://localhost:8016",
api_key="test-api-key"
)
if __name__ == "__main__":
plugin_analytics()