@@ -22,11 +22,14 @@ public static function register(): void {
2222 }
2323
2424 $ registry_class = '\DataMachine\Engine\AI\MemoryFileRegistry ' ;
25- if ( ! method_exists ( $ registry_class , 'register ' ) ) {
25+ if ( ! is_callable ( array ( $ registry_class , 'register ' ) ) ) {
2626 return ;
2727 }
28+ $ register = array ( $ registry_class , 'register ' );
29+ /** @var callable $register */
2830
29- $ registry_class ::register (
31+ call_user_func (
32+ $ register ,
3033 'AGENTS.md ' , 5 , array (
3134 'layer ' => defined ($ registry_class . '::LAYER_SHARED ' ) ? constant ($ registry_class . '::LAYER_SHARED ' ) : 'shared ' ,
3235 'protected ' => true ,
@@ -60,7 +63,7 @@ public static function register_invalidation_hooks( array $hooks ): array {
6063 }
6164
6265 private static function register_auto_generated_marker ( string $ wp ): void {
63- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
66+ self :: register_section (
6467 'AGENTS.md ' , 'auto-generated-marker ' , 0 , function () use ( $ wp ) {
6568 $ generated_at = gmdate ('c ' );
6669 return <<<MD
@@ -79,7 +82,7 @@ private static function register_auto_generated_marker( string $wp ): void {
7982 }
8083
8184 private static function register_datamachine_section ( string $ wp ): void {
82- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
85+ self :: register_section (
8386 'AGENTS.md ' , 'datamachine ' , 10 , function () use ( $ wp ) {
8487 $ workspace_path = self ::resolve_workspace_path ();
8588 $ agent_slug = self ::resolve_agent_slug ();
@@ -167,7 +170,7 @@ private static function register_datamachine_section( string $wp ): void {
167170 }
168171
169172 private static function register_workspace_inventory_section ( string $ wp ): void {
170- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
173+ self :: register_section (
171174 'AGENTS.md ' , 'workspace-inventory ' , 15 , function () use ( $ wp ) {
172175 return self ::render_workspace_inventory_section ($ wp );
173176 }, array (
@@ -181,7 +184,7 @@ private static function register_workspace_inventory_section( string $wp ): void
181184 }
182185
183186 private static function register_abilities_section (): void {
184- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
187+ self :: register_section (
185188 'AGENTS.md ' , 'abilities ' , 20 , function () {
186189 return <<<'MD'
187190## Abilities
@@ -201,7 +204,7 @@ private static function register_abilities_section(): void {
201204 }
202205
203206 private static function register_wordpress_source_section (): void {
204- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
207+ self :: register_section (
205208 'AGENTS.md ' , 'wordpress-source ' , 30 , function () {
206209 return <<<'MD'
207210## WordPress Source (Read-Only Reference)
@@ -227,7 +230,7 @@ private static function register_multisite_section( string $wp ): void {
227230 return ;
228231 }
229232
230- \ DataMachine \ Engine \ AI \SectionRegistry:: register (
233+ self :: register_section (
231234 'AGENTS.md ' , 'multisite ' , 40 , function () use ( $ wp ) {
232235 return <<<MD
233236## Multisite
@@ -266,6 +269,20 @@ private static function resolve_wp_cli_cmd(): string {
266269 return apply_filters ('datamachine_wp_cli_cmd ' , implode (' ' , $ parts ));
267270 }
268271
272+ /**
273+ * Register an AGENTS.md section through the optional Data Machine registry.
274+ */
275+ private static function register_section ( string $ file , string $ section , int $ priority , callable $ callback , array $ metadata ): void {
276+ $ registry_class = '\DataMachine\Engine\AI\SectionRegistry ' ;
277+ if ( ! is_callable (array ( $ registry_class , 'register ' )) ) {
278+ return ;
279+ }
280+ $ register = array ( $ registry_class , 'register ' );
281+ /** @var callable $register */
282+
283+ call_user_func ($ register , $ file , $ section , $ priority , $ callback , $ metadata );
284+ }
285+
269286 private static function resolve_workspace_path (): string {
270287 if ( class_exists (Workspace::class) ) {
271288 $ workspace_path = ( new Workspace () )->get_path ();
@@ -281,8 +298,8 @@ private static function resolve_agent_slug(): string {
281298 if ( class_exists ('\DataMachine\Core\FilesRepository\DirectoryManager ' ) ) {
282299 try {
283300 $ directory_manager = new \DataMachine \Core \FilesRepository \DirectoryManager ();
284- $ user_id = method_exists ( $ directory_manager , ' get_effective_user_id ' ) ? ( int ) $ directory_manager ->get_effective_user_id (0 ) : 0 ;
285- $ agent_slug = method_exists ( $ directory_manager , ' resolve_agent_slug ' ) ? ( string ) $ directory_manager ->resolve_agent_slug (array ( 'user_id ' => $ user_id )) : '' ;
301+ $ user_id = ( int ) $ directory_manager ->get_effective_user_id (0 );
302+ $ agent_slug = ( string ) $ directory_manager ->resolve_agent_slug (array ( 'user_id ' => $ user_id ));
286303
287304 if ( '' !== trim ($ agent_slug ) ) {
288305 return trim ($ agent_slug );
0 commit comments