PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.10
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.10
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
← All changes | includes/agents/privacy.php +43 -27 0.9.81.1.10 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2 /**
3 - * Desktop Mode — Agents: Personal Data Export + Erasure hooks.
3 + * OpenStation — Agents: Personal Data Export + Erasure hooks.
4 4 *
5 5 * Agents carry user-attributable data on their synthetic `wp_users`
6 6 * row (display name, login, role) and in the definition meta
7 7 * (description, instructions, abilities, triggers, model, rate limit,
@@ -10,28 +10,28 @@
10 10 * agent is returned / removed. Human users who created agents are NOT
11 11 * considered owners for export/erasure purposes — agents are
12 12 * admin-managed assets that survive a human-user erasure.
13 13 *
14 - * @package WPDesktopMode
14 + * @package OpenStation
15 15 */
16 16
17 17 defined( 'ABSPATH' ) || exit;
18 18
19 19 /**
20 - * Register the personal-data exporter under the `desktop-mode-agents`
20 + * Register the personal-data exporter under the `os-agents`
21 21 * group.
22 22 *
23 23 * @param array $exporters Existing exporter registry.
24 24 * @return array
25 25 */
26 -function desktop_mode_agents_register_personal_data_exporter( $exporters ) {
27 - $exporters['desktop-mode-agents'] = array(
28 - 'exporter_friendly_name' => __( 'Desktop Mode agents', 'desktop-mode' ),
29 - 'callback' => 'desktop_mode_agents_personal_data_exporter',
26 +function openstation_agents_register_personal_data_exporter( $exporters ) {
27 + $exporters['os-agents'] = array(
28 + 'exporter_friendly_name' => __( 'OpenStation agents', 'desktop-mode' ),
29 + 'callback' => 'openstation_agents_personal_data_exporter',
30 30 );
31 31 return $exporters;
32 32 }
33 -add_filter( 'wp_privacy_personal_data_exporters', 'desktop_mode_agents_register_personal_data_exporter' );
33 +add_filter( 'wp_privacy_personal_data_exporters', 'openstation_agents_register_personal_data_exporter' );
34 34
35 35 /**
36 36 * Exporter callback.
37 37 *
@@ -38,11 +38,11 @@
38 38 * @param string $email_address Target user's email.
39 39 * @param int $page 1-indexed page (always done=true).
40 40 * @return array
41 41 */
42 -function desktop_mode_agents_personal_data_exporter( $email_address, $page = 1 ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
42 +function openstation_agents_personal_data_exporter( $email_address, $page = 1 ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
43 43 $user = get_user_by( 'email', $email_address );
44 - if ( ! $user || ! desktop_mode_agent_is_agent( $user ) ) {
44 + if ( ! $user || ! openstation_agent_is_agent( $user ) ) {
45 45 return array(
46 46 'data' => array(),
47 47 'done' => true,
48 48 );
@@ -66,17 +66,17 @@
66 66 'value' => $role,
67 67 ),
68 68 array(
69 69 'name' => __( 'Description', 'desktop-mode' ),
70 - 'value' => desktop_mode_agent_get_description( (int) $user->ID ),
70 + 'value' => openstation_agent_get_description( (int) $user->ID ),
71 71 ),
72 72 array(
73 73 'name' => __( 'Instructions (system prompt)', 'desktop-mode' ),
74 - 'value' => desktop_mode_agent_get_instructions( (int) $user->ID ),
74 + 'value' => openstation_agent_get_instructions( (int) $user->ID ),
75 75 ),
76 76 );
77 77
78 - $abilities = desktop_mode_agent_get_abilities( (int) $user->ID );
78 + $abilities = openstation_agent_get_abilities( (int) $user->ID );
79 79 if ( ! empty( $abilities ) ) {
80 80 $rows[] = array(
81 81 'name' => __( 'Enabled abilities', 'desktop-mode' ),
82 82 'value' => implode( ', ', $abilities ),
@@ -82,9 +82,9 @@
82 82 'value' => implode( ', ', $abilities ),
83 83 );
84 84 }
85 85
86 - $triggers = desktop_mode_agent_get_triggers( (int) $user->ID );
86 + $triggers = openstation_agent_get_triggers( (int) $user->ID );
87 87 if ( ! empty( $triggers ) ) {
88 88 $rows[] = array(
89 89 'name' => __( 'Triggers (JSON)', 'desktop-mode' ),
90 90 'value' => wp_json_encode( $triggers ),
@@ -90,9 +90,9 @@
90 90 'value' => wp_json_encode( $triggers ),
91 91 );
92 92 }
93 93
94 - $model = desktop_mode_agent_get_model( (int) $user->ID );
94 + $model = openstation_agent_get_model( (int) $user->ID );
95 95 if ( '' !== $model ) {
96 96 $rows[] = array(
97 97 'name' => __( 'Model override', 'desktop-mode' ),
98 98 'value' => $model,
@@ -98,9 +98,9 @@
98 98 'value' => $model,
99 99 );
100 100 }
101 101
102 - $rate_limit = desktop_mode_agent_get_rate_limit( (int) $user->ID );
102 + $rate_limit = openstation_agent_get_rate_limit( (int) $user->ID );
103 103 if ( $rate_limit > 0 ) {
104 104 $rows[] = array(
105 105 'name' => __( 'Rate limit (per hour)', 'desktop-mode' ),
106 106 'value' => (string) $rate_limit,
@@ -106,13 +106,29 @@
106 106 'value' => (string) $rate_limit,
107 107 );
108 108 }
109 109
110 + $vibes = openstation_agent_get_vibes( (int) $user->ID );
111 + if ( '' !== $vibes ) {
112 + $rows[] = array(
113 + 'name' => __( 'Voice', 'desktop-mode' ),
114 + 'value' => $vibes,
115 + );
116 + }
117 +
118 + $face = (string) get_user_meta( (int) $user->ID, OPENSTATION_AGENT_FACE_META, true );
119 + if ( '' !== $face ) {
120 + $rows[] = array(
121 + 'name' => __( 'Face (JSON)', 'desktop-mode' ),
122 + 'value' => $face,
123 + );
124 + }
125 +
110 126 return array(
111 127 'data' => array(
112 128 array(
113 - 'group_id' => 'desktop-mode-agents',
114 - 'group_label' => __( 'Desktop Mode agents', 'desktop-mode' ),
129 + 'group_id' => 'os-agents',
130 + 'group_label' => __( 'OpenStation agents', 'desktop-mode' ),
115 131 'item_id' => 'agent-' . (int) $user->ID,
116 132 'data' => $rows,
117 133 ),
118 134 ),
@@ -120,22 +136,22 @@
120 136 );
121 137 }
122 138
123 139 /**
124 - * Register the personal-data eraser under the `desktop-mode-agents`
140 + * Register the personal-data eraser under the `os-agents`
125 141 * group.
126 142 *
127 143 * @param array $erasers Existing eraser registry.
128 144 * @return array
129 145 */
130 -function desktop_mode_agents_register_personal_data_eraser( $erasers ) {
131 - $erasers['desktop-mode-agents'] = array(
132 - 'eraser_friendly_name' => __( 'Desktop Mode agents', 'desktop-mode' ),
133 - 'callback' => 'desktop_mode_agents_personal_data_eraser',
146 +function openstation_agents_register_personal_data_eraser( $erasers ) {
147 + $erasers['os-agents'] = array(
148 + 'eraser_friendly_name' => __( 'OpenStation agents', 'desktop-mode' ),
149 + 'callback' => 'openstation_agents_personal_data_eraser',
134 150 );
135 151 return $erasers;
136 152 }
137 -add_filter( 'wp_privacy_personal_data_erasers', 'desktop_mode_agents_register_personal_data_eraser' );
153 +add_filter( 'wp_privacy_personal_data_erasers', 'openstation_agents_register_personal_data_eraser' );
138 154
139 155 /**
140 156 * Eraser callback. When the target email belongs to an agent, fully
141 157 * delete it (the user row deletion removes every definition meta row).
@@ -144,11 +160,11 @@
144 160 * @param string $email_address Target user's email.
145 161 * @param int $page 1-indexed page (always done=true).
146 162 * @return array
147 163 */
148 -function desktop_mode_agents_personal_data_eraser( $email_address, $page = 1 ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
164 +function openstation_agents_personal_data_eraser( $email_address, $page = 1 ) { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
149 165 $user = get_user_by( 'email', $email_address );
150 - if ( ! $user || ! desktop_mode_agent_is_agent( $user ) ) {
166 + if ( ! $user || ! openstation_agent_is_agent( $user ) ) {
151 167 return array(
152 168 'items_removed' => false,
153 169 'items_retained' => false,
154 170 'messages' => array(),
@@ -155,9 +171,9 @@
155 171 'done' => true,
156 172 );
157 173 }
158 174
159 - $result = desktop_mode_agent_delete( (int) $user->ID );
175 + $result = openstation_agent_delete( (int) $user->ID );
160 176 if ( is_wp_error( $result ) ) {
161 177 return array(
162 178 'items_removed' => false,
163 179 'items_retained' => true,