# extendify/3.1.5/src/Agent/abilities/abilities.js

Extendify, version 3.1.5. 42 lines.

- Page: https://pluginprobe.com/plugins/extendify/3.1.5/code/src/Agent/abilities/abilities.js
- Raw: https://pluginprobe.com/plugins/extendify/3.1.5/raw/src/Agent/abilities/abilities.js
- Modified: 2026-08-20T19:51:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/extendify/3.1.5/code/src/Agent/abilities/abilities.js#L10-L20`.

```javascript
import { contentList } from '@agent/abilities/content-list';
import { contentRead } from '@agent/abilities/content-read';
import { contentSearch } from '@agent/abilities/content-search';
import { media } from '@agent/abilities/media';
import { navigation } from '@agent/abilities/navigation';
import { options } from '@agent/abilities/options';
import { siteInfo } from '@agent/abilities/site-info';
import { taxonomies } from '@agent/abilities/taxonomies';
import { themeSettings } from '@agent/abilities/theme-settings';

// Not registered with WordPress — only the descriptor shape is shared.
// Descriptions reach the model, not the screen, and a translated value name breaks the call.
const collection = [
	siteInfo,
	contentList,
	contentSearch,
	contentRead,
	options,
	taxonomies,
	media,
	navigation,
	themeSettings,
];

export const getAbilities = (declared = []) =>
	declared
		.map((entry) =>
			typeof entry === 'string'
				? collection.find((ability) => ability.name === entry)
				: entry,
		)
		.filter(Boolean);

export const abilityDescriptors = (abilities) =>
	abilities.map(({ name, label, description, inputSchema, annotations }) => ({
		name,
		label,
		description,
		inputSchema,
		annotations,
	}));

```
