Release mayor con correcciones críticas, hardening de seguridad, nuevos proveedores LLM (incluidos chinos) e integración transaccional con WooCommerce.
🔴 Bloqueantes resueltos
- Plugin no arrancaba:
AI_Agent_Indexmovida a su propio archivo. - Menú admin no aparecía:
Settings/Admin/Dashboardahora se instancian correctamente. - Doble llamada al LLM por mensaje (handler AJAX duplicado).
AI_Agent_Agentahora se invoca de verdad (intent, role, business hours, campaigns).- Flujo de carrito
?ai_agent_cart=se intercepta y reconstruye en WooCommerce. - Eliminada cabecera duplicada de plugin en
index.php.
🔒 Seguridad
- Verificación HMAC de webhook reescrita (la lógica estaba invertida, aceptaba sin verificar).
/webhook/testahora requieremanage_options(antes era público).- Firmas oficiales de Twilio (HMAC-SHA1 con URL + params ordenados) y Meta (
X-Hub-Signature-256). - SQL injection en adapter PostgreSQL corregido con
pg_query_params. - Conexión PostgreSQL con
sslmode=requireforzado. - Rate limiting 15 req/min por IP en endpoints de chat y stream (filtrable).
- Validación anti prompt-injection de comandos del LLM (verifica
product_id, role,is_purchasable()). ABSPATHguard en todos los archivos PHP.- Webhook secret generado en
activate(), no en cada render. - Soporte de API keys vía constantes de
wp-config.php(AI_AGENT_*_KEY).
🇨🇳 Nuevos LLMs chinos (OpenAI-compatible)
| Proveedor | Endpoint | Modelos |
|---|---|---|
| DeepSeek | api.deepseek.com/v1 |
deepseek-chat, deepseek-reasoner |
| Kimi (Moonshot) | api.moonshot.ai/v1 |
moonshot-v1-{8k,32k,128k}, kimi-k2-0905-preview |
| MiniMax | api.minimax.chat/v1 |
MiniMax-Text-01, abab6.5-chat, abab6.5s-chat |
Arquitectura unificada — base_url + model parametrizado. Streaming SSE soportado en los tres.
🛒 WooCommerce — datos en vivo
Nueva capa AI_Agent_WC_Tools con funciones internas (sin API REST). El LLM puede invocar:
[ORDER_STATUS:id]/[ORDER_STATUS:id:email]— estado de pedido con verificación opcional.[MY_ORDERS:email:x@y.com]/[MY_ORDERS:phone:+34xxx]— listar pedidos.[CREATE_CUSTOMER:{...json...}]— alta de cliente con dirección de envío.
Toggle en Settings para exigir email al consultar pedido (recomendado en producción).
🌐 Idiomas (8 soportados)
ES, EN, PT, FR, DE, IT, ZH (chino simplificado), JA (japonés por bloques Unicode CJK).
- Selector multi-idioma en Settings para limitar respuestas del agente.
- Idioma por defecto como fallback.
- Si el usuario escribe en idioma no permitido, el agente lo explica amablemente.
⚡ Performance
- Embeddings persistentes en
knowledge_index— ya no se recalculan en cada query. - Hooks
save_postywoocommerce_update_productpara invalidación incremental. - Reducción estimada: de ~5.000 llamadas/día a embeddings → ~150/día (KB típica).
📊 Auditoría y privacidad
- Panel AI Agent → Auditoría con log de invocaciones a WC tools (filtrable, redacción de campos sensibles).
- Hooks GDPR
wp_privacy_personal_data_exporters/_eraserspara conversaciones y mensajes. - Retención configurable (default 90 días, filtrable).
🎨 UX
- Streaming SSE (chunked transfer) para los 5 providers remotos.
- Session ID persistido en
sessionStoragepara mantener contexto entre recargas. - Modelos 2026: Claude Sonnet 4.6 / Opus 4.7 / Haiku 4.5.
- Anthropic multi-turn arreglado (antes solo mandaba el último mensaje).
🧪 Tooling
composer.json+ PHPUnit 10.5.- 30 tests unitarios, 56 assertions, 100% verde.
AI_Agent_Utils100% testeable sin WP runtime.
Upgrade notes
- Reactivar el plugin para crear la tabla
ai_agent_tool_audity generar el webhook secret. - Recomendado: definir las API keys en
wp-config.php:define('AI_AGENT_OPENAI_KEY', 'sk-...'); define('AI_AGENT_ANTHROPIC_KEY', 'sk-ant-...'); define('AI_AGENT_DEEPSEEK_KEY', 'sk-...');
- Activar "Exigir email para mostrar estado de pedido" antes de salir a producción.
- Para streaming: configurar nginx
proxy_buffering off;o respetarX-Accel-Buffering: no. - Forzar re-indexación desde Dashboard → "Forzar Re-index" para sembrar embeddings.
Full Changelog: 12704c8...v1.1.0