Ana içeriğe geç

Eklenti Yönetim Yetenekleri

Gratis AI Agent v1.5.0, yapay zeka asistanının bir konuşma sırasında çağırabileceği 7 eklenti yönetim yeteneği ile geliyor. Bu yetenekler, Plugin Builder & Sandbox System üzerinden kurulan WordPress eklentileri üzerinde programatik kontrol sağlar.

Yeteneklere Genel Bakış

YetenekSlugAçıklama
List Pluginslist_pluginsSandbox mağazasındaki eklentilerin durumlarıyla birlikte bir listesini döndürür.
Get Pluginget_pluginSlug'ı ile belirli bir eklentinin meta verilerini ve kaynak kodunu alır.
Create Plugincreate_pluginBir açıklamadan yeni bir eklenti oluşturur ve bunu sandbox'ta saklar.
Update Pluginupdate_pluginBir eklentinin kaynak kodunu yeni bir sürümle değiştirir.
Delete Plugindelete_pluginEklentiyi sandbox mağazasından kaldırır. Önce devre dışı bırakır.
Install Plugininstall_pluginSandbox'ta oluşturulmuş bir eklentiyi canlı WordPress eklenti dizinine dağıtır.
Activate Pluginactivate_pluginSandbox'ta oluşturulmuş bir eklentiyi wp-env sandbox ortamında etkinleştirir.

Eklenti Yükleyici API'si

Eklenti yükleyici, eklentiler dağıtılırken veya kaldırılırken dosya sistemi işlemleri yapar. Temel davranışları şunlardır:

  • Yol Doğrulama (Path validation): Tüm eklenti yolları, herhangi bir dosya yazılmadan önce izin verilen eklenti dizinine göre doğrulanır. Dizin gezintisi (Directory traversal) girişimleri reddedilir.
  • Çoklu Dosya Kurulumu (Multi-file install): Bir eklenti birden fazla dosyadan oluşabilir. Yükleyici, eklenti dizinini oluşturur ve tüm dosyaları atomik olarak yazar.
  • Güncelleme (Update): Mevcut eklenti dosyalarını değiştirir. Kısmi durum hatalarını önlemek için yazmadan önce eklentiyi devre dışı bırakır.
  • Slug ile Silme (Delete by slug): Slug ile eklenti dizinini bulur, tüm sitelerde devre dışı bırakır ve ardından dizini siler.

Özel Bir Kurulum İşleyicisi Kaydetme

Kurulum yaşam döngüsüne gratis_ai_plugin_installer_before_install ve gratis_ai_plugin_installer_after_install aksiyonlarını kullanarak bağlanabilirsiniz:

add_action('gratis_ai_plugin_installer_before_install', function(string $slug, array $files): void {
// $slug: the plugin's directory name
// $files: associative array of relative path => file content
error_log("Installing plugin: {$slug} with " . count($files) . " files.");
}, 10, 2);

add_action('gratis_ai_plugin_installer_after_install', function(string $slug, bool $success): void {
if ($success) {
error_log("Plugin {$slug} installed successfully.");
}
}, 10, 2);

Ekosistem Kaydı

Yetenekler, eklenti ekosistem kaydı aracılığıyla kaydedilir. Bu kayıt, yetenek slug'larını ilgili işleyici sınıflarına eşler ve bunları yapay zeka ajanı'nın araç dağıtıcısına (tool dispatcher) sunar.

Özel bir eklenti yönetim yeteneği kaydetmek için:

add_filter('gratis_ai_plugin_abilities', function(array $abilities): array {
$abilities['my_custom_ability'] = [
'class' => My_Custom_Plugin_Ability::class,
'label' => 'My Custom Ability',
'description' => 'Does something useful with plugins.',
];
return $abilities;
});

Yetenek sınıfınız Gratis_AI_Ability_Interface arayüzünü uygulamalıdır:

class My_Custom_Plugin_Ability implements Gratis_AI_Ability_Interface {

public function get_slug(): string {
return 'my_custom_ability';
}

public function get_schema(): array {
return [
'name' => 'my_custom_ability',
'description' => 'Does something useful with plugins.',
'parameters' => [
'type' => 'object',
'properties' => [
'slug' => [
'type' => 'string',
'description' => 'The plugin slug to operate on.',
],
],
'required' => ['slug'],
],
];
}

public function execute(array $params): array {
$slug = sanitize_key($params['slug'] ?? '');
// ... your implementation ...
return ['success' => true, 'slug' => $slug];
}
}

HookScanner Entegrasyonu

create_plugin ve update_plugin yetenekleri, otomatik olarak HookScanner'ı yeni oluşturulan kod üzerinde çalıştırır. HookScanner, eklenti tarafından kaydedilen WordPress aksiyon ve filtre hook'larının bir listesini döndürür.

HookScanner sonuçlarını programatik olarak almak için:

$scanner = new Gratis_AI_Hook_Scanner();
$hooks = $scanner->scan_plugin_slug('my-generated-plugin');

foreach ($hooks['actions'] as $hook) {
echo "Action: {$hook['hook']} — callback: {$hook['callback']}\n";
}

foreach ($hooks['filters'] as $hook) {
echo "Filter: {$hook['hook']} — callback: {$hook['callback']}\n";
}

HookScanner, vendor/ ve node_modules/ dizinlerini otomatik olarak atlar.

Asenkron İş Mimarisi

Uzun süren eklenti işlemleri (oluşturma, yükleme) canlı ilerleme takibi ile asenkron işler (async jobs) olarak gönderilir. Yapay zeka sohbet arayüzü ilerlemeyi sorgular ve durum güncellemelerini kullanıcıya yayınlar (stream):

  1. Gönderme (Dispatch) — yetenek bir asenkron iş oluşturur ve bir iş kimliği (job ID) döndürür.
  2. Sorgulama (Poll) — ajan, her 2 saniyede bir gratis_ai_job_status($job_id) fonksiyonunu sorgular.
  3. Yayınlama (Stream) — ara ilerleme mesajları sohbet akışına gönderilir.
  4. Tamamlama (Complete) — nihai sonuç (başarı veya hata) döndürülür ve gösterilir.

İş yaşam döngüsü olaylarına bağlanmak için:

add_action('gratis_ai_job_started', function(string $job_id, string $ability_slug): void {
error_log("Job {$job_id} started for ability: {$ability_slug}");
}, 10, 2);

add_action('gratis_ai_job_completed', function(string $job_id, array $result): void {
error_log("Job {$job_id} completed. Success: " . ($result['success'] ? 'yes' : 'no'));
}, 10, 2);