The component descriptor.
Config file name (e.g., 'jeeves-watcher.config.json').
Zod schema for validating config files.
OptionalcustomCliCommands?: $InferOuterFunctionType<Extension point: add custom CLI commands to the service CLI.
OptionalcustomMerge?: $InferOuterFunctionType<Custom merge function for config apply. Receives the existing config and the patch, returns the merged result. Optional — if omitted, the default deep-merge (object-recursive, array-replacing) is used.
Use this to implement domain-specific merge strategies such as name-based array merging for inference rules.
OptionalcustomPluginTools?: $InferOuterFunctionType<Extension point: return additional plugin tool descriptors.
Default port for the service's HTTP API.
Returns a default config object for init.
Component name (e.g., 'watcher', 'runner', 'server', 'meta').
OptionalonConfigApply?: $InferOuterFunctionType<Service-side callback after config apply. Receives the merged, validated config (not the raw patch). Optional — if omitted, write-only (service picks up changes on restart).
npm package name for the plugin.
In-process service entry point for the CLI start command.
OptionalserviceName?: stringSystem service name. Defaults to jeeves-${name} when not provided.
npm package name for the service.
Returns command + args for launching the service process.
Consumed by service install.
Component version (from package.json).
Tool options (required, so each plugin consciously
chooses its service URL). Pass the plugin's apiUrl (string or lazy
resolver); with apiUrl unset, the tools call
http://127.0.0.1:<defaultPort>.
OptionalapiUrl?: string | PluginApiUrlResolverService base URL (e.g. http://127.0.0.1:1936), or a resolver
evaluated per tool call. Unset, empty, or a resolver returning
undefined falls back to http://127.0.0.1:<defaultPort>.
Array of tool descriptors to register.
Create the standard plugin tool set from a component descriptor.