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