From e9537cd2fa18bbb6771c955d906801fc37e07f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Fas?= Date: Fri, 20 Feb 2026 12:50:48 +0100 Subject: [PATCH 1/4] Agents Manager: Add filter to skip enqueue in block editor contexts Add `agents_manager_enqueue_in_block_editor` filter so environments like CIAB can prevent agents-manager from loading in block editor asset requests where it is already running from the parent page. Co-Authored-By: Claude Opus 4.6 --- .../changelog/add-agents-manager-block-editor-filter | 4 ++++ .../src/features/agents-manager/class-agents-manager.php | 6 ++++++ 2 files changed, 10 insertions(+) create mode 100644 projects/packages/jetpack-mu-wpcom/changelog/add-agents-manager-block-editor-filter diff --git a/projects/packages/jetpack-mu-wpcom/changelog/add-agents-manager-block-editor-filter b/projects/packages/jetpack-mu-wpcom/changelog/add-agents-manager-block-editor-filter new file mode 100644 index 00000000000..be1be6069f7 --- /dev/null +++ b/projects/packages/jetpack-mu-wpcom/changelog/add-agents-manager-block-editor-filter @@ -0,0 +1,4 @@ +Significance: patch +Type: added + +Agents Manager: Add `agents_manager_enqueue_in_block_editor` filter to allow preventing enqueue in block editor contexts. diff --git a/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php b/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php index da079b10a22..48fe2eea1ff 100644 --- a/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php +++ b/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php @@ -311,6 +311,12 @@ private function get_variant() { * @return bool */ private function is_enabled() { + // Allow environments (e.g. CIAB) to prevent loading in block editor contexts + // where agents-manager is already running from the parent page. + if ( $this->is_block_editor() && ! apply_filters( 'agents_manager_enqueue_in_block_editor', true ) ) { + return false; + } + // Full unified experience: Agents Manager with support guides, Help Center takeover, etc. if ( apply_filters( 'agents_manager_use_unified_experience', false ) ) { return true; From 6b3960a04ec5a92365ccb58244ba3f3e5e2f722e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Fas?= Date: Fri, 20 Feb 2026 14:05:40 +0100 Subject: [PATCH 2/4] Update projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../features/agents-manager/class-agents-manager.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php b/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php index 48fe2eea1ff..891a2bb977f 100644 --- a/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php +++ b/projects/packages/jetpack-mu-wpcom/src/features/agents-manager/class-agents-manager.php @@ -313,6 +313,17 @@ private function get_variant() { private function is_enabled() { // Allow environments (e.g. CIAB) to prevent loading in block editor contexts // where agents-manager is already running from the parent page. + /** + * Filter whether to enqueue Agents Manager assets inside the block editor iframe. + * + * This allows environments that already run Agents Manager from the parent page + * to disable enqueueing a second instance within the block editor context. + * + * @param bool $enqueue_in_block_editor Whether to enqueue Agents Manager assets + * in the block editor iframe. Default true. + * + * @return bool Whether to enqueue Agents Manager assets in the block editor iframe. + */ if ( $this->is_block_editor() && ! apply_filters( 'agents_manager_enqueue_in_block_editor', true ) ) { return false; } From 7008746d77a5bb8e3937c30fd90f423ab2e9d79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Fas?= Date: Fri, 20 Feb 2026 14:12:20 +0100 Subject: [PATCH 3/4] Add test for agents_manager_enqueue_in_block_editor filter Verify that should_enqueue_script returns false in block editor contexts when the new filter is set to false. Co-Authored-By: Claude Opus 4.6 --- .../agents-manager/Agents_Manager_Test.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php b/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php index b7920ed435f..cd7ea8b5b93 100644 --- a/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php +++ b/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php @@ -1356,6 +1356,43 @@ public function test_should_enqueue_script_preview_check_takes_precedence_over_u $this->assertFalse( $result ); } + /** + * Tests that should_enqueue_script returns false in block editor when + * agents_manager_enqueue_in_block_editor filter returns false. + * + * This allows environments like CIAB to prevent duplicate loading when + * agents-manager is already running from the parent page. + */ + public function test_should_enqueue_script_returns_false_in_block_editor_when_filter_disables_it() { + require_once ABSPATH . 'wp-admin/includes/screen.php'; + + // Set up block editor context. + set_current_screen( 'post' ); + $screen = get_current_screen(); + + // Use reflection to set the block_editor property. + $reflection = new \ReflectionClass( $screen ); + $property = $reflection->getProperty( 'is_block_editor' ); + if ( PHP_VERSION_ID < 80100 ) { + $property->setAccessible( true ); + } + $property->setValue( $screen, true ); + + $_SERVER['REQUEST_URI'] = '/wp-admin/post.php'; + + // Enable unified experience so the test reaches the filter check. + add_filter( 'agents_manager_use_unified_experience', '__return_true', 20 ); + // Disable enqueue in block editor via the new filter. + add_filter( 'agents_manager_enqueue_in_block_editor', '__return_false' ); + + $result = $this->call_should_enqueue_script(); + + remove_filter( 'agents_manager_use_unified_experience', '__return_true', 20 ); + remove_filter( 'agents_manager_enqueue_in_block_editor', '__return_false' ); + + $this->assertFalse( $result ); + } + /** * Helper to call the private get_current_user_data method via reflection. * From c7fb1fb75e2c3f02627fd15964b6f9fde972f71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Fas?= Date: Wed, 25 Feb 2026 11:52:43 +0100 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../php/features/agents-manager/Agents_Manager_Test.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php b/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php index cd7ea8b5b93..bf9e545f715 100644 --- a/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php +++ b/projects/packages/jetpack-mu-wpcom/tests/php/features/agents-manager/Agents_Manager_Test.php @@ -1370,7 +1370,7 @@ public function test_should_enqueue_script_returns_false_in_block_editor_when_fi set_current_screen( 'post' ); $screen = get_current_screen(); - // Use reflection to set the block_editor property. + // Use reflection to set the is_block_editor property. $reflection = new \ReflectionClass( $screen ); $property = $reflection->getProperty( 'is_block_editor' ); if ( PHP_VERSION_ID < 80100 ) { @@ -1380,7 +1380,8 @@ public function test_should_enqueue_script_returns_false_in_block_editor_when_fi $_SERVER['REQUEST_URI'] = '/wp-admin/post.php'; - // Enable unified experience so the test reaches the filter check. + // Enable unified experience so should_enqueue_script() would otherwise return true, + // ensuring this test actually exercises the agents_manager_enqueue_in_block_editor filter. add_filter( 'agents_manager_use_unified_experience', '__return_true', 20 ); // Disable enqueue in block editor via the new filter. add_filter( 'agents_manager_enqueue_in_block_editor', '__return_false' );