Files
unsupportedpastels 0502fe0597 feat(plugins): one published list of what plugins may import
The public list `hermes plugins validate` checks plugin imports against
was a hardcoded frozenset inside hermes_cli/plugin_validate_private_imports.py,
with no page that showed it to plugin authors.

Move the list, unchanged (89 entries), into hermes_cli/data/plugin_api.json
(already shipped as package data via `data/*.json`) and load it once in the
validator. scripts/gen_plugin_api_docs.py renders
website/docs/developer-guide/plugins/public-api.md from the same file, and a
test fails when the page is stale. Validate output is unchanged for the same
inputs.
2026-11-05 18:47:10 -05:00

132 lines
4.9 KiB
JSON

{
"_comment": [
"The modules and names a plugin may import from Hermes core. `hermes plugins validate` warns on any other",
"Hermes import (hermes_cli/plugin_validate_private_imports.py), and scripts/gen_plugin_api_docs.py renders",
"website/docs/developer-guide/plugins/public-api.md from this file.",
"A `module` entry allows the module and its non-underscore names; `module:Name` allows that one name.",
"Harvested from the Hermes-module imports in the developer-guide and plugin docs, what PluginContext hands",
"out, and the names those pages tell authors to call, raise, return or subclass. Re-harvest when they change."
],
"groups": [
{
"source": "developer-guide / plugins docs",
"entries": [
"agent.account_usage",
"agent.acp_client",
"agent.browser_provider",
"agent.context_engine",
"agent.credential_pool",
"agent.delegation_backends",
"agent.delegation_provider",
"hermes_cli.auth_model_picker:prompt_model_selection",
"hermes_cli.auth:resolve_external_process_provider_credentials",
"hermes_cli.model_setup",
"agent.image_gen_provider",
"agent.memory_manager",
"agent.memory_provider",
"agent.secret_scope",
"agent.secret_sources.base",
"agent.subagent_lifecycle",
"agent.terminal_env_provider",
"agent.transports",
"agent.transports.chat_completions",
"agent.video_gen_provider",
"agent.web_search_provider",
"cli",
"gateway.config",
"gateway.platform_registry",
"gateway.platforms._shared",
"gateway.platforms.base",
"gateway.platforms.event",
"gateway.platforms.helpers",
"gateway.status",
"hermes_cli.auth_oauth_pkce_plugin",
"hermes_cli.config",
"hermes_cli.plugin_events",
"hermes_cli.plugin_provider_requests",
"hermes_constants",
"hermes_platform",
"hermes_state",
"plugins.plugin_storage",
"plugins.plugin_utils",
"pm",
"providers",
"providers.base",
"tools.browser_supervisor",
"tools.browser_supervisor_capture",
"tools.computer_use.backend",
"tools.registry"
]
},
{
"source": "PluginContext (hermes_cli/plugins.py)",
"entries": [
"agent.context_references",
"agent.plugin_llm",
"agent.transcription_provider",
"agent.tts_provider",
"cron.execution_identity",
"hermes_cli.dashboard_auth",
"hermes_cli.platform_actions",
"hermes_cli.plugins:PluginContext",
"hermes_cli.plugins_ledger:PluginRegistration",
"hermes_cli.plugins_state:PluginState"
]
},
{
"source": "prose in memory-provider / model-provider / terminal-environment plugin pages (tools.environments:BaseEnvironment is the package's `__all__` re-export)",
"entries": [
"agent.runtime_cwd:resolve_agent_cwd",
"agent.usage_pricing:CostResult",
"hermes_cli.auth_constants:AuthError",
"tools.environments.base:BaseEnvironment",
"tools.environments:BaseEnvironment",
"utils:atomic_json_write",
"utils:read_json_or_empty"
]
},
{
"source": "adding-platform-adapters.md § Public helpers for platform plugins",
"entries": [
"gateway.platforms.access_policy_mixin:OwnAccessPolicyMixin",
"tools.approval:resolve_gateway_approval",
"tools.approval:resolve_gateway_approval_card",
"tools.clarify_gateway:get_pending",
"tools.clarify_gateway:resolve_gateway_clarify",
"tools.clarify_gateway:mark_awaiting_text",
"tools.clarify_gateway:SKIPPED",
"tools.url_safety:is_safe_url",
"tools.url_safety:create_ssrf_safe_async_client",
"gateway.platforms._http_client_limits:platform_httpx_limits",
"hermes_cli.gateway_setup_wizard:print_setup_header",
"hermes_cli.gateway_setup_wizard:confirm_reconfigure",
"hermes_cli.gateway_setup_wizard:offer_home_channel",
"hermes_cli.gateway_setup_wizard:save_env_values",
"hermes_cli.gateway_setup_wizard:prompt_csv",
"hermes_cli.setup:prompt",
"hermes_cli.setup:prompt_choice",
"hermes_cli.setup:prompt_yes_no",
"hermes_cli.cli_output"
]
},
{
"source": "plugins/index.md § Read the skill catalog",
"entries": [
"tools.skills_tool:find_all_skills",
"tools.skills_tool:sort_skills",
"tools.skills_tool:skill_search_dirs",
"tools.skills_tool:locate_skill",
"tools.skills_tool:skill_lookup_path_error",
"tools.skills_sync:dir_hash",
"tools.skill_usage:read_skill_name"
]
},
{
"source": "plugins/index.md § platform plugins: read session identity through the task-local context",
"entries": [
"gateway.session_context:get_session_env"
]
}
]
}