PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 3.2.0
AI Engine – The Chatbot, AI Framework & MCP for WordPress v3.2.0
3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / classes / query / function.php
ai-engine / classes / query Last commit date
assist-feedback.php 10 months ago assistant.php 8 months ago base.php 8 months ago dropped-file.php 7 months ago edit-image.php 8 months ago embed.php 10 months ago feedback.php 10 months ago function.php 8 months ago image.php 8 months ago parameter.php 1 year ago text.php 8 months ago transcribe.php 8 months ago
function.php
205 lines
1 <?php
2
3 class Meow_MWAI_Query_Function {
4 public string $name;
5 public string $description;
6 public array $parameters;
7 public string $type; // 'code-engine', etc...
8 public string $target; // 'server' or 'client'
9 public ?string $id;
10
11 public function __construct(
12 string $name,
13 string $description,
14 array $parameters = [],
15 string $type = null,
16 string $id = null,
17 string $target = null
18 ) {
19 // $name: The name of the function to be called.
20 // Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.
21 if ( !preg_match( '/^[a-zA-Z0-9_-]{1,64}$/', $name ) ) {
22 throw new InvalidArgumentException( "AI Engine: Invalid function name ($name) for Meow_MWAI_Query_Function." );
23 }
24
25 foreach ( $parameters as $parameter ) {
26 if ( !( $parameter instanceof Meow_MWAI_Query_Parameter ) ) {
27 throw new InvalidArgumentException( 'AI Engine: Invalid parameter for Meow_MWAI_Query_Function.' );
28 }
29 }
30
31 $this->name = $name;
32 $this->description = $description;
33 $this->parameters = $parameters;
34 $this->type = $type ?? 'manual';
35 $this->id = $id;
36 $this->target = $target ?? 'server';
37 }
38
39 public function serializeForOpenAI() {
40 // Initialize the base structure with name and description
41 $json = [ 'name' => $this->name, 'description' => $this->description ];
42
43 $properties = [];
44 $required = [];
45
46 // Loop through each parameter to construct the properties object
47 if ( !empty( $this->parameters ) ) {
48 foreach ( $this->parameters as $parameter ) {
49
50 $properties[$parameter->name] = [
51 'type' => $parameter->type, // Assuming each parameter has a 'type' attribute
52 'description' => $parameter->description, // Assuming each parameter has a 'description' attribute
53 ];
54
55 // If the parameter type is "array" and has a "items" attribute, include it
56 if ( $parameter->type === 'array' ) {
57 $properties[$parameter->name]['items'] = [
58 'type' => 'string', // Assuming the items are strings
59 ];
60 }
61
62 // If an enum is set for the parameter, include it
63 if ( isset( $parameter->enum ) ) {
64 $properties[$parameter->name]['enum'] = $parameter->enum;
65 }
66
67 // If the parameter is required, add its name to the required array
68 if ( $parameter->required ) {
69 $required[] = $parameter->name;
70 }
71 }
72 }
73
74 // Always include parameters field (required by some APIs like OVH even when empty)
75 // Properties must be an object (stdClass) when empty, not an empty array
76 $json['parameters'] = [
77 'type' => 'object',
78 'properties' => empty( $properties ) ? new stdClass() : $properties,
79 'required' => $required,
80 ];
81
82 return $json;
83 }
84
85 public function serializeForAnthropic() {
86 $json = [
87 'name' => $this->name,
88 'description' => $this->description,
89 'input_schema' => [
90 'type' => 'object',
91 'properties' => new stdClass()
92 ],
93 ];
94
95 if ( !empty( $this->parameters ) ) {
96 $properties = [];
97 $required = [];
98 foreach ( $this->parameters as $parameter ) {
99 $properties[$parameter->name] = [
100 'type' => $parameter->type,
101 'description' => $parameter->description,
102 ];
103 if ( isset( $parameter->enum ) ) {
104 $properties[$parameter->name]['enum'] = $parameter->enum;
105 }
106 if ( $parameter->required ) {
107 $required[] = $parameter->name;
108 }
109 }
110 $json['input_schema']['properties'] = empty( $properties ) ? new stdClass() : $properties;
111 if ( !empty( $required ) ) {
112 $json['input_schema']['required'] = $required;
113 }
114 }
115
116 return $json;
117 }
118
119 public function serializeForGemini() {
120 $json = [
121 'name' => $this->name,
122 'description' => $this->description,
123 'parameters' => [
124 'type' => 'object',
125 'properties' => new stdClass(),
126 'required' => []
127 ]
128 ];
129
130 if ( !empty( $this->parameters ) ) {
131 $properties = [];
132 $required = [];
133 foreach ( $this->parameters as $parameter ) {
134 $properties[$parameter->name] = [
135 'type' => $parameter->type,
136 'description' => $parameter->description,
137 ];
138
139 // If the parameter type is "array" and has a "items" attribute, include it
140 if ( $parameter->type === 'array' ) {
141 $properties[$parameter->name]['items'] = [
142 'type' => 'string',
143 ];
144 }
145
146 if ( isset( $parameter->enum ) ) {
147 $properties[$parameter->name]['enum'] = $parameter->enum;
148 }
149 if ( $parameter->required ) {
150 $required[] = $parameter->name;
151 }
152 }
153 // Gemini requires properties to be an object (stdClass), not an array
154 $json['parameters']['properties'] = empty( $properties ) ? new stdClass() : (object) $properties;
155 $json['parameters']['required'] = $required;
156 }
157
158 return $json;
159 }
160
161 public static function fromJson( array $json ): Meow_MWAI_Query_Function {
162 $funcName = $json['name'];
163 $funcDesc = $json['description'] ?? '';
164 $funcType = $json['type'] ?? null;
165 $funcId = $json['id'] ?? null;
166 $funcTarget = $json['target'] ?? null;
167 if ( $funcId === null && !empty( $json['snippetId'] ) ) {
168 $funcId = $json['snippetId'];
169 }
170 $args = [];
171 if ( !empty( $json['args'] ) ) {
172 foreach ( $json['args'] as $arg ) {
173 $name = ltrim( $arg['name'], '$' );
174 $desc = $arg['description'] ?? null;
175 $type = $arg['type'] ?? 'string';
176 $required = $arg['required'] ?? false;
177 $args[] = new Meow_MWAI_Query_Parameter( $name, $desc, $type, $required );
178 }
179 }
180 return new self( $funcName, $funcDesc, $args, $funcType, $funcId, $funcTarget );
181 }
182
183 public static function toJson( Meow_MWAI_Query_Function $function ): array {
184 $json = [
185 'name' => $function->name,
186 'desc' => $function->description,
187 'type' => $function->type,
188 'id' => $function->id,
189 'target' => $function->target,
190 'args' => [],
191 ];
192
193 foreach ( $function->parameters as $param ) {
194 $json['args'][] = [
195 'name' => $param->name,
196 'desc' => $param->description,
197 'type' => $param->type,
198 'required' => $param->required,
199 ];
200 }
201
202 return $json;
203 }
204 }
205