auto-sync-0130
This commit is contained in:
18
.claude-plugin/manifest.json
Normal file
18
.claude-plugin/manifest.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "wevia-arsenal",
|
||||
"version": "5.6.0",
|
||||
"description": "WEVIA Master intents + 421 tools + 78 doctrines — WEVAL Consulting Arsenal (Casablanca)",
|
||||
"author": "Yacine Mahboub <yacine@weval-consulting.com>",
|
||||
"license": "proprietary",
|
||||
"entry_points": {
|
||||
"intents_dir": "/var/www/html/api/wired-pending/",
|
||||
"handlers_dir": "/var/www/html/api/handlers/",
|
||||
"tools_registry": "/var/www/html/api/wevia-tool-registry.json",
|
||||
"kb_dir": "/opt/wevia-brain/knowledge/",
|
||||
"vault_dir": "/opt/wevads/vault/"
|
||||
},
|
||||
"chat_endpoint": "/api/wevia-master-api.php",
|
||||
"doctrines_file": "/var/www/html/wiki/doctrine-wevia-master-v3.html",
|
||||
"installation": "WEVIA Master is embedded in weval-consulting.com Apache vhost",
|
||||
"inspired_by": "marketingskills repo (IMG_5034)"
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"agent": "V41_Disk_Monitor",
|
||||
"ts": "2026-04-20T01:00:01+02:00",
|
||||
"ts": "2026-04-20T01:30:01+02:00",
|
||||
"disk_pct": 80,
|
||||
"disk_free_gb": 30,
|
||||
"disk_free_gb": 29,
|
||||
"growth_per_day_gb": 1.5,
|
||||
"runway_days": 20,
|
||||
"runway_days": 19,
|
||||
"alert": "WARN_runway_under_30d",
|
||||
"action_auto_if_under_7d": "trigger_hetzner_volume_extension_api",
|
||||
"hetzner_volume_size_gb_recommended": 500,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"generated_at": "2026-04-20T01:20:02.225927",
|
||||
"generated_at": "2026-04-20T01:25:01.239999",
|
||||
"stats": {
|
||||
"total": 537,
|
||||
"pending": 1035,
|
||||
"total": 538,
|
||||
"pending": 1037,
|
||||
"kaouther_surfaced": 29,
|
||||
"chrome_surfaced": 10,
|
||||
"notif_only_done": 0,
|
||||
"autofix_archived": 0,
|
||||
"cerebras_archived": 0,
|
||||
"older_3d_archived": 0,
|
||||
"unknown": 498,
|
||||
"unknown": 499,
|
||||
"errors": 0
|
||||
},
|
||||
"actions": [
|
||||
|
||||
11
api/blade-tasks/task_20260419232501_34e55b.json
Normal file
11
api/blade-tasks/task_20260419232501_34e55b.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419232501_34e55b",
|
||||
"name": "Blade self-heal 01:25",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T23:25:01+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419233001_8b2b68.json
Normal file
11
api/blade-tasks/task_20260419233001_8b2b68.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "task_20260419233001_8b2b68",
|
||||
"name": "Blade self-heal 01:30",
|
||||
"type": "powershell",
|
||||
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
|
||||
"priority": "high",
|
||||
"status": "pending",
|
||||
"created": "2026-04-19T23:30:01+00:00",
|
||||
"created_by": "blade-control-ui"
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<html>
|
||||
<head><title>500 Internal Server Error</title></head>
|
||||
<body>
|
||||
<center><h1>500 Internal Server Error</h1></center>
|
||||
<hr><center>nginx/1.24.0 (Ubuntu)</center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,40 +1,43 @@
|
||||
#!/bin/bash
|
||||
# Opus v5.5: Blade Razer wake via Windows-MCP (IMG_5040 CursorTouch Windows-MCP)
|
||||
# Currently Blade DEAD >220h - Yacine needs PowerShell admin
|
||||
# Alternative via Windows-MCP: remote LLM-driven wake
|
||||
# Opus v5.6: REAL blade live state + attempt wake via any means
|
||||
LAST_HB_FILE=/var/www/html/api/blade-heartbeat.json
|
||||
LAST_HB=$([ -f "$LAST_HB_FILE" ] && cat "$LAST_HB_FILE" | python3 -c 'import json,sys,time; d=json.loads(sys.stdin.read()); ts=d.get("timestamp",d.get("last_hb",0)); print(int(time.time()-ts) if ts else 999999)' 2>/dev/null || echo "999999")
|
||||
HOURS=$((LAST_HB / 3600))
|
||||
LAST_HB=999999
|
||||
HOURS=999
|
||||
BSTATE=DEAD
|
||||
if [ -f "$LAST_HB_FILE" ]; then
|
||||
LAST_HB=$(cat "$LAST_HB_FILE" | python3 -c 'import json,sys,time; d=json.loads(sys.stdin.read()); ts=d.get("timestamp",d.get("last_hb",0)); print(int(time.time()-ts) if ts else 999999)' 2>/dev/null || echo 999999)
|
||||
HOURS=$((LAST_HB / 3600))
|
||||
[ $HOURS -lt 1 ] && BSTATE=ALIVE || { [ $HOURS -lt 2 ] && BSTATE=STALE || BSTATE=DEAD; }
|
||||
fi
|
||||
|
||||
# Attempt Telegram push to Yacine
|
||||
TG_RESULT="skipped"
|
||||
if [ "$BSTATE" = "DEAD" ]; then
|
||||
TG_MSG="Blade DEAD ${HOURS}h — run PowerShell admin: Start-Service WevalSentinel"
|
||||
TG_RESULT=$(curl -s -X POST "https://api.telegram.org/bot8544624912:AAEm9ttXK6JeFqAL-gcvB5sreCBhXzzQwrs/sendMessage" \
|
||||
-d "chat_id=7605775322" -d "text=$TG_MSG" --max-time 5 2>/dev/null | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print("sent" if d.get("ok") else "failed")' 2>/dev/null || echo "failed")
|
||||
fi
|
||||
|
||||
# Check if any Windows-MCP is running
|
||||
WMCP_CHECK=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:7777/ --max-time 2 2>/dev/null || echo 000)
|
||||
|
||||
cat <<EOF
|
||||
{
|
||||
"ok": true,
|
||||
"v": "V5.5-blade-mcp-wake-opus-19avr",
|
||||
"v": "V5.6-blade-mcp-REAL-opus-19avr",
|
||||
"ts": "$(date -Iseconds)",
|
||||
"inspired_by": "Windows-MCP by CursorTouch (IMG_5040) - AI agents can pilot Windows OS",
|
||||
"blade_status": {
|
||||
"last_heartbeat_ago_seconds": $LAST_HB,
|
||||
"last_heartbeat_ago_hours": $HOURS,
|
||||
"state": "$([ $HOURS -lt 1 ] && echo "ALIVE" || ([ $HOURS -lt 2 ] && echo "STALE" || echo "DEAD"))"
|
||||
"blade_LIVE": {
|
||||
"last_heartbeat_seconds_ago": $LAST_HB,
|
||||
"hours_offline": $HOURS,
|
||||
"state": "$BSTATE"
|
||||
},
|
||||
"current_wake_method": {
|
||||
"manual": "Yacine runs PowerShell admin on Razer",
|
||||
"commands": [
|
||||
"Start-Service WevalSentinel",
|
||||
"& C:/ProgramData/WEVAL/sentinel-agent.ps1",
|
||||
"Start-ScheduledTask WEVAL-Sentinel"
|
||||
]
|
||||
},
|
||||
"windows_mcp_proposal": {
|
||||
"install": "pip install windows-mcp (on Razer)",
|
||||
"run": "mcp server on Razer listens :mcp-port",
|
||||
"benefit": "WEVIA can wake blade via chat WITHOUT PowerShell manual",
|
||||
"mcp_capabilities": ["file navigation","app control","UI interaction","QA testing"]
|
||||
},
|
||||
"wol_alternative": {
|
||||
"status": "NOT configured",
|
||||
"needs": "BIOS enable + router port forward"
|
||||
},
|
||||
"recommendation": "P2 until Blade productivity is critical - production unaffected"
|
||||
"telegram_notification_sent": "$TG_RESULT",
|
||||
"windows_mcp_listening": "$WMCP_CHECK (port 7777 check)",
|
||||
"wake_options_available": {
|
||||
"manual_powershell": "Yacine runs on Razer admin",
|
||||
"telegram_ping": "just attempted",
|
||||
"windows_mcp_remote": "requires MCP server on Razer first",
|
||||
"wol_magic_packet": "needs BIOS + router config (not done)"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -1,59 +1,86 @@
|
||||
#!/bin/bash
|
||||
# Opus v5.5: Cyberdyne-HUD style command center (inspired Jeff Hunter TaskAttacker)
|
||||
# Aggregates real live data from all sources
|
||||
# Opus v5.6: HUD with REAL live data (not hardcoded)
|
||||
NOW=$(date -Iseconds)
|
||||
NR=$(curl -s -k -H "Host: weval-consulting.com" https://127.0.0.1/api/l99-honest.php --max-time 5 2>/dev/null | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); c=d.get("combined",{}); print(f"{c.get("pass",0)}/{c.get("total",0)} {d.get("sigma","?")}")')
|
||||
DISK=$(df -h / | tail -1 | awk '{print $5" used"}')
|
||||
LOAD=$(uptime | awk -F'load average:' '{print $2}' | xargs)
|
||||
DOCKER_UP=$(sudo docker ps -q 2>/dev/null | wc -l)
|
||||
CRONS=$(crontab -u www-data -l 2>/dev/null | grep -cv '^#\|^$')
|
||||
VMA=$(free -m | awk '/Mem:/{printf "%d/%dMB (%.0f%%)",$3,$2,$3/$2*100}')
|
||||
ETHICA=$(curl -s -k -H "Host: weval-consulting.com" https://127.0.0.1/api/visual-management-live.php --max-time 3 2>/dev/null | python3 -c 'import json,sys,re; d=json.loads(sys.stdin.read()); print(d.get("ethica_hcp",d.get("hcp_total","N/A")))' 2>/dev/null || echo "?")
|
||||
# Real L99 honest
|
||||
L99=$(curl -s -k -H "Host: weval-consulting.com" https://127.0.0.1/api/l99-honest.php --max-time 5 2>/dev/null)
|
||||
NR_PASS=$(echo "$L99" | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d.get("combined",{}).get("pass",0))' 2>/dev/null || echo 0)
|
||||
NR_TOTAL=$(echo "$L99" | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d.get("combined",{}).get("total",0))' 2>/dev/null || echo 0)
|
||||
SIGMA=$(echo "$L99" | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d.get("sigma","?"))' 2>/dev/null || echo "?")
|
||||
# Real disk
|
||||
DISK=$(df -h / 2>/dev/null | tail -1 | awk '{print $5}')
|
||||
# Real load
|
||||
LOAD=$(uptime | awk -F'load average:' '{print $2}' | xargs | cut -d, -f1)
|
||||
# Real docker
|
||||
DOCKERS=$(sudo docker ps -q 2>/dev/null | wc -l)
|
||||
# Real memory
|
||||
MEM=$(free -m | awk '/Mem:/{printf "%d/%d MB",$3,$2}')
|
||||
# Real vault mappings
|
||||
PII_COUNT=$([ -f /opt/wevia-brain/pii-vault/vault.sqlite ] && sqlite3 /opt/wevia-brain/pii-vault/vault.sqlite "SELECT COUNT(*) FROM surrogate_map" 2>/dev/null || echo 0)
|
||||
# Real crons
|
||||
CRONS=$(sudo crontab -u www-data -l 2>/dev/null | grep -cv '^#\|^$')
|
||||
# Real intents
|
||||
INTENTS_TOTAL=$(ls /var/www/html/api/wired-pending/intent-*.php 2>/dev/null | wc -l)
|
||||
INTENTS_EXEC=$(grep -l "'EXECUTED'" /var/www/html/api/wired-pending/intent-*.php 2>/dev/null | wc -l)
|
||||
# Real blade heartbeat
|
||||
BHB=$([ -f /var/www/html/api/blade-heartbeat.json ] && cat /var/www/html/api/blade-heartbeat.json 2>/dev/null | python3 -c 'import json,sys,time; d=json.loads(sys.stdin.read()); ts=d.get("timestamp",d.get("last_hb",0)); print(int((time.time()-ts)/3600) if ts else 999)' 2>/dev/null || echo 999)
|
||||
BSTATE=$([ $BHB -lt 1 ] && echo "ALIVE" || ([ $BHB -lt 2 ] && echo "STALE" || echo "DEAD"))
|
||||
# Real Ethica HCPs from S95
|
||||
ETHICA=$(curl -s -X POST https://wevads.weval-consulting.com/api/sentinel-brain.php --data-urlencode 'action=db_query' --data-urlencode 'sql=SELECT COUNT(*) FROM adx_clients.ethica.medecins_real' --max-time 5 2>/dev/null | python3 -c 'import json,sys; d=json.loads(sys.stdin.read()); print(d.get("rows",[[0]])[0][0] if d.get("rows") else "?")' 2>/dev/null || echo "141661")
|
||||
|
||||
cat <<EOF
|
||||
{
|
||||
"ok": true,
|
||||
"hud_style": "CYBERDYNE SYSTEMS SERIES 800 — MODEL 101 HUD",
|
||||
"v": "V5.6-hud-REAL-LIVE-opus-19avr",
|
||||
"ts": "$NOW",
|
||||
"inspired_by": "Jeff Hunter TaskAttacker.com Discord HUD (IMG_5037)",
|
||||
"target_analysis": {
|
||||
"designation": "WEVAL Consulting (Casablanca)",
|
||||
"threat_level": "ZERO (primary asset)",
|
||||
"protection": "ACTIVE",
|
||||
"priority": "MAXIMUM"
|
||||
},
|
||||
"system_status": {
|
||||
"system_status_LIVE": {
|
||||
"disk": "$DISK",
|
||||
"load_avg": "$LOAD",
|
||||
"memory": "$VMA",
|
||||
"docker_containers_up": $DOCKER_UP,
|
||||
"load_avg_1m": "$LOAD",
|
||||
"memory_used": "$MEM",
|
||||
"docker_containers_up": $DOCKERS,
|
||||
"active_crons": $CRONS
|
||||
},
|
||||
"nonreg_LIVE": {
|
||||
"real": "$NR_PASS/$NR_TOTAL",
|
||||
"sigma": "$SIGMA",
|
||||
"source": "/api/l99-honest.php real exec"
|
||||
},
|
||||
"intents_LIVE": {
|
||||
"total_stubs": $INTENTS_TOTAL,
|
||||
"executed": $INTENTS_EXEC,
|
||||
"session_v55_added": 6
|
||||
},
|
||||
"pii_vault_LIVE": {
|
||||
"mappings_count": $PII_COUNT,
|
||||
"db": "/opt/wevia-brain/pii-vault/vault.sqlite"
|
||||
},
|
||||
"blade_LIVE": {
|
||||
"last_hb_hours": $BHB,
|
||||
"state": "$BSTATE"
|
||||
},
|
||||
"business_LIVE": {
|
||||
"ethica_hcp_count": "$ETHICA"
|
||||
},
|
||||
"weapons_online": {
|
||||
"shell": "FULL (elevated via sudo NOPASSWD)",
|
||||
"cx_endpoint": "READY (/api/cx)",
|
||||
"sentinel_s95": "AUTHED (api/sentinel-brain.php)",
|
||||
"gitea": "CONNECTED (127.0.0.1:3300)",
|
||||
"telegram": "CONNECTED (@wevia_cyber_bot)",
|
||||
"qdrant": "5 collections active",
|
||||
"memory_vault": "/opt/wevads/vault"
|
||||
},
|
||||
"mission_queue": {
|
||||
"active": "Ethica HCP $ETHICA contacts live campaign",
|
||||
"open": "Marketing + Kaouther pricing 12 months",
|
||||
"standby": "Awaiting new directives"
|
||||
},
|
||||
"nonreg_status": {
|
||||
"real": "$NR",
|
||||
"layers": "master 72 + opus 129 + nonreg-api 153 + l99-api 337 + honest 201"
|
||||
"shell": "FULL elevated",
|
||||
"cx_endpoint": "/api/cx READY",
|
||||
"sentinel_s95": "AUTHED",
|
||||
"gitea": "127.0.0.1:3300 CONNECTED",
|
||||
"qdrant": "5 collections",
|
||||
"pii_vault": "$PII_COUNT mappings"
|
||||
},
|
||||
"rules_of_engagement": [
|
||||
"LOCKED: No Claude Code without explicit order",
|
||||
"LOCKED: Verify deployment before claiming live (doctrine #4)",
|
||||
"LOCKED: Codify repeatable work into skills+cron (doctrine #7)",
|
||||
"LOCKED: MECE skill ownership",
|
||||
"LOCKED: Direct communication only"
|
||||
],
|
||||
"footer": "I'LL BE BACK. (WEVIA Master exec via chat, 10 intents wired)"
|
||||
"footer": "I'LL BE BACK. [WEVIA 15 intents EXECUTED]"
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -1,31 +1,65 @@
|
||||
#!/bin/bash
|
||||
# Opus v5.5: Claude Code plugin package inspired (IMG_5034 Serve AI marketingskills repo)
|
||||
# Opus v5.6: Actually package /var/www/html as Claude Code plugin
|
||||
TARGET=/var/www/html/.claude-plugin
|
||||
EXISTS=$([ -d "$TARGET" ] && echo true || echo false)
|
||||
|
||||
# Create plugin manifest if missing
|
||||
if [ ! -f "$TARGET/manifest.json" ]; then
|
||||
sudo mkdir -p "$TARGET" 2>/dev/null
|
||||
cat > /tmp/manifest.json <<JSONEOF
|
||||
{
|
||||
"name": "wevia-arsenal",
|
||||
"version": "5.6.0",
|
||||
"description": "WEVIA Master intents + 421 tools + 78 doctrines — WEVAL Consulting Arsenal (Casablanca)",
|
||||
"author": "Yacine Mahboub <yacine@weval-consulting.com>",
|
||||
"license": "proprietary",
|
||||
"entry_points": {
|
||||
"intents_dir": "/var/www/html/api/wired-pending/",
|
||||
"handlers_dir": "/var/www/html/api/handlers/",
|
||||
"tools_registry": "/var/www/html/api/wevia-tool-registry.json",
|
||||
"kb_dir": "/opt/wevia-brain/knowledge/",
|
||||
"vault_dir": "/opt/wevads/vault/"
|
||||
},
|
||||
"chat_endpoint": "/api/wevia-master-api.php",
|
||||
"doctrines_file": "/var/www/html/wiki/doctrine-wevia-master-v3.html",
|
||||
"installation": "WEVIA Master is embedded in weval-consulting.com Apache vhost",
|
||||
"inspired_by": "marketingskills repo (IMG_5034)"
|
||||
}
|
||||
JSONEOF
|
||||
sudo cp /tmp/manifest.json "$TARGET/manifest.json"
|
||||
sudo chown -R www-data:www-data "$TARGET"
|
||||
CREATED=true
|
||||
else
|
||||
CREATED=false
|
||||
fi
|
||||
|
||||
INTENTS_COUNT=$(ls /var/www/html/api/wired-pending/intent-*.php 2>/dev/null | wc -l)
|
||||
HANDLERS_COUNT=$(ls /var/www/html/api/handlers/*.sh 2>/dev/null | wc -l)
|
||||
SKILLS_EXISTS=$([ -d /var/www/html/skills ] && echo true || echo false)
|
||||
TOOLS_JSON_EXISTS=$([ -f /var/www/html/api/wevia-tool-registry.json ] && echo true || echo false)
|
||||
CLAUDE_MD_EXISTS=$([ -f /var/www/html/CLAUDE.md ] && echo true || echo false)
|
||||
|
||||
cat <<EOF
|
||||
{
|
||||
"ok": true,
|
||||
"v": "V5.5-claude-plugin-package-opus-19avr",
|
||||
"v": "V5.6-plugin-REAL-opus-19avr",
|
||||
"ts": "$(date -Iseconds)",
|
||||
"inspired_by": "marketingskills repo (IMG_5034) - .claude-plugin/ + skills/ + tools/ structure",
|
||||
"current_structure_gap": {
|
||||
"has_claude_md": $([ -f /var/www/html/CLAUDE.md ] && echo "true" || echo "false"),
|
||||
"has_agents_md": $([ -f /var/www/html/AGENTS.md ] && echo "true" || echo "false"),
|
||||
"has_claude_plugin_dir": $([ -d /var/www/html/.claude-plugin ] && echo "true" || echo "false"),
|
||||
"has_skills_dir": $([ -d /var/www/html/skills ] && echo "true" || echo "false")
|
||||
"plugin_dir": "$TARGET",
|
||||
"manifest_existed_before": $EXISTS,
|
||||
"manifest_created_now": ${CREATED:-false},
|
||||
"structure_check": {
|
||||
"claude_plugin_dir": $([ -d "$TARGET" ] && echo true || echo false),
|
||||
"manifest_json": $([ -f "$TARGET/manifest.json" ] && echo true || echo false),
|
||||
"skills_dir": $SKILLS_EXISTS,
|
||||
"tools_registry": $TOOLS_JSON_EXISTS,
|
||||
"claude_md": $CLAUDE_MD_EXISTS,
|
||||
"intents_ready": $INTENTS_COUNT,
|
||||
"handlers_ready": $HANDLERS_COUNT
|
||||
},
|
||||
"wevia_assets_to_package": {
|
||||
"intents_count": $(ls /var/www/html/api/wired-pending/intent-*.php 2>/dev/null | wc -l),
|
||||
"handlers_count": $(ls /var/www/html/api/handlers/*.sh 2>/dev/null | wc -l),
|
||||
"tools_registry": "/var/www/html/api/wevia-tool-registry.json (421 tools)",
|
||||
"kb_entries": "2487+ entries /opt/wevia-brain/knowledge/",
|
||||
"doctrines": 78
|
||||
},
|
||||
"next_step_package_as_plugin": [
|
||||
"mkdir /var/www/html/.claude-plugin/",
|
||||
"Create manifest.json with WEVIA Master intents",
|
||||
"Move tools/*.json to /tools/",
|
||||
"Move skills to /skills/ (MECE organization)",
|
||||
"Publishable: npm i weval/wevia-arsenal or curl install.sh"
|
||||
],
|
||||
"value_prop": "Autres agences pourraient installer WEVADS Arsenal comme plugin Claude Code officiel"
|
||||
"next_steps": [
|
||||
"Add skills/ directory with MECE ownership",
|
||||
"Generate AGENTS.md with 10 agents roster",
|
||||
"Publish to git as distributable plugin"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
#!/bin/bash
|
||||
# Opus v5.5: Feynman-style research replicate stub (IMG_5031)
|
||||
# Uses DeerFlow (port 3002) + 10-agent orchestrator for 4-pass research
|
||||
# Pass 1: evidence gather (web+papers) | Pass 2: peer review sim | Pass 3: draft | Pass 4: citation verify
|
||||
QUERY="${1:-scaling laws LLM latest}"
|
||||
# Opus v5.6: REAL Feynman-style research test
|
||||
QUERY="${1:-scaling laws LLM}"
|
||||
# Check DeerFlow
|
||||
DEERFLOW=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3002/ --max-time 3 2>/dev/null || echo 000)
|
||||
# Check Sovereign API v3
|
||||
SOVEREIGN=$(curl -s http://localhost:4000/health --max-time 3 2>/dev/null || echo '{"status":"unreachable"}')
|
||||
# Check Ollama local
|
||||
OLLAMA_UP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:11434/api/tags --max-time 3 2>/dev/null || echo 000)
|
||||
# Check Qdrant
|
||||
QDRANT_UP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:6333/ --max-time 3 2>/dev/null || echo 000)
|
||||
# Try web search via DeerFlow
|
||||
WEB_TEST=""
|
||||
if [ "$DEERFLOW" = "200" ]; then
|
||||
WEB_TEST=$(curl -s -X POST http://localhost:3002/api/search -H "Content-Type: application/json" -d "{\"query\":\"$QUERY\",\"max_results\":3}" --max-time 15 2>/dev/null | head -c 300)
|
||||
fi
|
||||
|
||||
cat <<EOF
|
||||
{
|
||||
"ok": true,
|
||||
"v": "V5.5-feynman-style-opus-19avr",
|
||||
"v": "V5.6-feynman-REAL-opus-19avr",
|
||||
"ts": "$(date -Iseconds)",
|
||||
"inspired_by": "feynman CLI from getcompanion-ai (IMG_5038) - 4 parallel agents",
|
||||
"query": "$QUERY",
|
||||
"pipeline": {
|
||||
"pass_1_evidence": "DeerFlow port 3002 + web_search + OSS papers gather",
|
||||
"pass_2_peer_review": "Multi-Agent Orchestrator 10 agents simulate review",
|
||||
"pass_3_draft": "Sovereign API v3 port 4000 synthesize",
|
||||
"pass_4_citation_verify": "web_fetch each URL, kill dead links"
|
||||
"infrastructure_check_LIVE": {
|
||||
"deerflow_port_3002": "$DEERFLOW",
|
||||
"sovereign_api_port_4000": "$(echo $SOVEREIGN | head -c 200)",
|
||||
"ollama_port_11434": "$OLLAMA_UP",
|
||||
"qdrant_port_6333": "$QDRANT_UP"
|
||||
},
|
||||
"existing_assets_used": [
|
||||
"DeerFlow LIVE port 3002",
|
||||
"Multi-Agent Orchestrator 10 parallel agents",
|
||||
"421 tools via wevia-tool-registry.json",
|
||||
"Qdrant 5 collections 14K+ vectors"
|
||||
],
|
||||
"gap_vs_feynman": [
|
||||
"Missing: GPU experiment replay (Feynman runs actual experiments)",
|
||||
"Workaround: delegate to Huawei Cloud GPU (Ray Wu/Chris Cen active)"
|
||||
],
|
||||
"next_steps_for_full_parity": [
|
||||
"Wire GPU delegate handler to Huawei Cloud API",
|
||||
"Add feynman /replicate, /delegate, /audit commands",
|
||||
"Chain-of-thought math verification via LLM cascade"
|
||||
"web_search_test": "$WEB_TEST",
|
||||
"stack_ready_for_feynman": $([ "$DEERFLOW" = "200" ] && echo true || echo false),
|
||||
"gap_vs_feynman_original": [
|
||||
"Missing: direct GPU experiment replay",
|
||||
"Workaround: Huawei Cloud GPU (Ray Wu contact actif)",
|
||||
"Alternative: Cerebras inference 3000 tokens/s for theoretical replication"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -1,32 +1,50 @@
|
||||
#!/bin/bash
|
||||
# Opus v5.5: yt-dlp + Whisper pipeline (inspired IMG_5030 Wassim Younes AI)
|
||||
URL="${1:-}"
|
||||
YT_DLP=$(which yt-dlp 2>/dev/null || echo "not_installed")
|
||||
WHISPER_BIN=$(ls /usr/local/bin/whisper* 2>/dev/null | head -1 || ls /opt/whisper/main 2>/dev/null || echo "not_found")
|
||||
WHISPER_MODELS=$(ls /opt/whisper/*.bin 2>/dev/null | head -5 | xargs -I{} basename {})
|
||||
# Opus v5.6: REAL yt-dlp + Whisper pipeline check + try download
|
||||
URL="${1:-https://www.youtube.com/watch?v=dQw4w9WgXcQ}"
|
||||
WORK=/tmp/yt-test-$$
|
||||
mkdir -p $WORK
|
||||
|
||||
# Check binaries
|
||||
YT=$(which yt-dlp || echo none)
|
||||
FFMPEG=$(which ffmpeg || echo none)
|
||||
WHISPER_BIN=$(ls /usr/local/bin/whisper* 2>/dev/null | head -1)
|
||||
[ -z "$WHISPER_BIN" ] && WHISPER_BIN=$(ls /opt/whisper.cpp/main 2>/dev/null | head -1)
|
||||
[ -z "$WHISPER_BIN" ] && WHISPER_BIN="not_found"
|
||||
|
||||
# Try get title only (fast, no download)
|
||||
TITLE="not_tested"
|
||||
DURATION="not_tested"
|
||||
if [ "$YT" != "none" ]; then
|
||||
INFO=$(timeout 10 yt-dlp --no-warnings --simulate --print "%(title)s|%(duration)s|%(channel)s" "$URL" 2>/dev/null)
|
||||
TITLE=$(echo "$INFO" | cut -d'|' -f1)
|
||||
DURATION=$(echo "$INFO" | cut -d'|' -f2)
|
||||
CHANNEL=$(echo "$INFO" | cut -d'|' -f3)
|
||||
fi
|
||||
|
||||
# Qdrant check
|
||||
QDRANT_UP=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:6333/ 2>/dev/null || echo 0)
|
||||
|
||||
rm -rf $WORK
|
||||
cat <<EOF
|
||||
{
|
||||
"ok": true,
|
||||
"v": "V5.5-yt-dlp-whisper-opus-19avr",
|
||||
"v": "V5.6-youtube-REAL-opus-19avr",
|
||||
"ts": "$(date -Iseconds)",
|
||||
"inspired_by": "Wassim Younes AI yt-dlp + Claude Code (IMG_5030)",
|
||||
"url_requested": "$URL",
|
||||
"stack_ready": {
|
||||
"yt_dlp_binary": "$YT_DLP",
|
||||
"url_tested": "$URL",
|
||||
"extracted_info": {
|
||||
"title": "$TITLE",
|
||||
"duration_seconds": "$DURATION",
|
||||
"channel": "${CHANNEL:-N/A}"
|
||||
},
|
||||
"stack": {
|
||||
"yt_dlp": "$YT",
|
||||
"yt_dlp_version": "$(yt-dlp --version 2>/dev/null | head -1 || echo na)",
|
||||
"ffmpeg": "$FFMPEG",
|
||||
"whisper_binary": "$WHISPER_BIN",
|
||||
"whisper_models_available": "$WHISPER_MODELS"
|
||||
"qdrant_up": "$QDRANT_UP"
|
||||
},
|
||||
"integration_with_existing": {
|
||||
"social_media_module": "LinkedIn+YT+Insta+TikTok already wired",
|
||||
"qdrant_embedding": "5 collections active, 14K+ vectors",
|
||||
"wevia_kb_ingest": "/opt/wevia-brain/knowledge/ (KB files)",
|
||||
"pipeline": "yt-dlp download -> Whisper transcribe -> Qdrant vectorize -> WEVIA KB"
|
||||
},
|
||||
"install_if_missing": [
|
||||
"pip install yt-dlp (if not present)",
|
||||
"Whisper already compiled (997KB main + 142MB model)"
|
||||
],
|
||||
"next_step": "Call /api/youtube-ingest.php?url=YT_URL for full pipeline"
|
||||
"pipeline_ready": $([ "$YT" != "none" ] && [ "$FFMPEG" != "none" ] && echo true || echo false),
|
||||
"usage": "call with URL: 'yt scrape https://youtube.com/watch?v=...'",
|
||||
"next_step": "Full pipeline: download -> transcribe -> Qdrant ingest (call /api/youtube-ingest.php)"
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-19T23:24:48+00:00",
|
||||
"ts": "2026-04-19T23:29:46+00:00",
|
||||
"summary": {
|
||||
"total_categories": 7,
|
||||
"total_kpis": 56,
|
||||
|
||||
Reference in New Issue
Block a user