Repository navigation
Expand file tree
/
Copy pathclass-wp-agent-filter-run-control-adapter.php
More file actions
73 lines (63 loc) · 2.61 KB
/
Copy pathclass-wp-agent-filter-run-control-adapter.php
File metadata and controls
73 lines (63 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
/**
* Filter-backed generic run-control adapter.
*
* @package AgentsAPI
*/
namespace AgentsAPI\AI;
defined( 'ABSPATH' ) || exit;
class WP_Agent_Filter_Run_Control_Adapter implements WP_Agent_Run_Control_Adapter {
/**
* @param non-empty-string $status_filter Filter that returns a get-run handler.
* @param non-empty-string $events_filter Filter that returns a list-events handler.
* @param non-empty-string $cancel_filter Filter that returns a cancel handler.
* @param non-empty-string $invalid_status_code Error code for invalid get-run results.
* @param non-empty-string $invalid_events_code Error code for invalid event results.
* @param non-empty-string $invalid_cancel_code Error code for invalid cancel results.
* @param non-empty-string $events_no_handler_code Error code when no event handler is registered.
* @param non-empty-string $events_no_handler_message Error message when no event handler is registered.
*/
public function __construct(
private string $status_filter,
private string $events_filter,
private string $cancel_filter,
private string $invalid_status_code,
private string $invalid_events_code,
private string $invalid_cancel_code,
private string $events_no_handler_code,
private string $events_no_handler_message
) {}
/**
* @param array<string,mixed> $input Run-control request input.
* @return array<string,mixed>|\WP_Error|null
*/
public function get_run( array $input ) {
$handler = apply_filters( $this->status_filter, null, $input );
if ( ! is_callable( $handler ) ) {
return null;
}
return WP_Agent_Run_Control::normalize_run_result( call_user_func( $handler, $input ), $this->invalid_status_code );
}
/**
* @param array<string,mixed> $input Run-control request input.
* @return array<string,mixed>|\WP_Error
*/
public function list_events( array $input ) {
$handler = apply_filters( $this->events_filter, null, $input );
if ( ! is_callable( $handler ) ) {
return new \WP_Error( $this->events_no_handler_code, $this->events_no_handler_message );
}
return WP_Agent_Run_Control::normalize_events_result( call_user_func( $handler, $input ), $this->invalid_events_code );
}
/**
* @param array<string,mixed> $input Run-control request input.
* @return array<string,mixed>|\WP_Error|null
*/
public function cancel_run( array $input ) {
$handler = apply_filters( $this->cancel_filter, null, $input );
if ( ! is_callable( $handler ) ) {
return null;
}
return WP_Agent_Run_Control::normalize_cancel_result( call_user_func( $handler, $input ), $this->invalid_cancel_code );
}
}