Adds a new `modules/miniMax` module mirroring the existing OpenAI pattern (`api_key` + `enabled` config keys). Adds a `classes/minimax.php` client that calls `https://api.minimax.io/anthropic/v1/messages` (the same endpoint OpenClaw's minimax-portal provider uses) and returns structured JSON via the Anthropic tool_use response shape. **Replaces the autopilot planner:** - `PLANNER_MODEL`: `gpt-5.6-sol` → `MiniMax-M3` - `xlvask_automation_service`: `new openai()` → `new minimax()` in the planner + the isOpenAiIntegrationEnabled() guard - New xlvask config flag `minimax_integration_enabled` gates the autopilot. The OpenAI flag is kept so deployments can roll back. **Compatibility shims** (so the autopilot keeps working with minimal churn): - `minimax_request_exception` extends `openai_request_exception`, so every existing `catch (openai_request_exception)` block catches MiniMax errors unchanged. - The result payload also carries the legacy `_openai_response_model` and `_openai_usage` aliases, so `sanitizeOpenAiResult` keeps working unchanged. **New endpoints:** GET/POST `/minimax/config` in `moduleConfigRoute` guarded by `modules_minimax_config`, mirroring `/openai/config`. **Tests:** PHP api suite 290/290 passing locally (no regressions). All xlvask tests still pass. **Frontend counterpart** ships in a separate PR on pleno-vue (ConfigurationXLVask.vue + SessionUser.modules.minimax + i18n in all 5 locales). **Followup (post-merge):** operator (jeppe) enters the MiniMax API key in superuser XL Vask settings → I'll optimize/test/debug live XL Vask usage logs against the new model. --------- Co-authored-by: Truck Wash Agent <agent@copenhagentruckwash.local>
97 lines
3.7 KiB
PHP
97 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace xlvask;
|
|
require_once WD . '/modules/xlvask/config/xlvask_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_synchronization_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_automatic_order_attachment_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_automatic_order_creation_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_minimax_integration_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_openai_integration_enabled_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_username_c.php';
|
|
require_once WD . '/modules/xlvask/config/xlvask_password_c.php';
|
|
|
|
use traits\module_config_t;
|
|
use xlvask\config\xlvask_automatic_order_attachment_enabled_c;
|
|
use xlvask\config\xlvask_automatic_order_creation_enabled_c;
|
|
use xlvask\config\xlvask_enabled_c;
|
|
use xlvask\config\xlvask_minimax_integration_enabled_c;
|
|
use xlvask\config\xlvask_openai_integration_enabled_c;
|
|
use xlvask\config\xlvask_password_c;
|
|
use xlvask\config\xlvask_synchronization_enabled_c;
|
|
use xlvask\config\xlvask_username_c;
|
|
|
|
class xlvask_c
|
|
{
|
|
use module_config_t;
|
|
|
|
/**
|
|
* The API URL for the xlvask module
|
|
* @var string $api_url
|
|
*/
|
|
public string $api_url = 'https://api.xlwash.com';
|
|
/**
|
|
* The status of the module
|
|
* @var xlvask_enabled_c
|
|
*/
|
|
public xlvask_enabled_c $enabled;
|
|
/**
|
|
* The synchronization status of the module
|
|
* @var xlvask_synchronization_enabled_c $synchronization_enabled
|
|
*/
|
|
public xlvask_synchronization_enabled_c $synchronization_enabled;
|
|
/**
|
|
* @var xlvask_automatic_order_attachment_enabled_c $automatic_order_attachment_enabled
|
|
*/
|
|
public xlvask_automatic_order_attachment_enabled_c $automatic_order_attachment_enabled;
|
|
/**
|
|
* @var xlvask_automatic_order_creation_enabled_c $automatic_order_creation_enabled
|
|
*/
|
|
public xlvask_automatic_order_creation_enabled_c $automatic_order_creation_enabled;
|
|
/**
|
|
* @var xlvask_minimax_integration_enabled_c $minimax_integration_enabled
|
|
*/
|
|
public xlvask_minimax_integration_enabled_c $minimax_integration_enabled;
|
|
/**
|
|
* @var xlvask_openai_integration_enabled_c $openai_integration_enabled
|
|
*/
|
|
public xlvask_openai_integration_enabled_c $openai_integration_enabled;
|
|
/**
|
|
* The username
|
|
* @var xlvask_username_c
|
|
*/
|
|
public xlvask_username_c $username;
|
|
/**
|
|
* The password
|
|
* @var xlvask_password_c
|
|
*/
|
|
public xlvask_password_c $password;
|
|
/**
|
|
* The vendor ID for the xlvask module (GUID)
|
|
* @var string $vendor_id
|
|
*/
|
|
public string $vendor_id = 'c92a88b5-7aae-4d41-b284-f91b9b341c46';
|
|
|
|
public function __construct()
|
|
{
|
|
$this->setupConfig('xlvask');
|
|
$this->allowUpdate([
|
|
xlvask_enabled_c::class,
|
|
xlvask_synchronization_enabled_c::class,
|
|
xlvask_automatic_order_attachment_enabled_c::class,
|
|
xlvask_automatic_order_creation_enabled_c::class,
|
|
xlvask_minimax_integration_enabled_c::class,
|
|
xlvask_openai_integration_enabled_c::class,
|
|
xlvask_username_c::class,
|
|
xlvask_password_c::class
|
|
]);
|
|
$this->enabled = new xlvask_enabled_c();
|
|
$this->synchronization_enabled = new xlvask_synchronization_enabled_c();
|
|
$this->automatic_order_attachment_enabled = new xlvask_automatic_order_attachment_enabled_c();
|
|
$this->automatic_order_creation_enabled = new xlvask_automatic_order_creation_enabled_c();
|
|
$this->minimax_integration_enabled = new xlvask_minimax_integration_enabled_c();
|
|
$this->openai_integration_enabled = new xlvask_openai_integration_enabled_c();
|
|
$this->username = new xlvask_username_c();
|
|
$this->password = new xlvask_password_c();
|
|
}
|
|
}
|