mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-13 02:20:42 +00:00
Summary: - The PR adds a `before_agent_run` plugin hook with pass/block decisions, redacted blocked-turn persistence, diagnostics/docs/changelog updates, and focused runner, gateway, session, and plugin tests. - Reproducibility: not applicable. as a feature PR rather than a current-main bug report. Current main lacks ` ... un`, while the PR head adds source coverage and copied live Gateway/WebChat log proof for the new behavior. Automerge notes: - PR branch already contained follow-up commit before automerge: fix: trim before agent hook PR scope - PR branch already contained follow-up commit before automerge: fix: keep before-agent blocks redacted - PR branch already contained follow-up commit before automerge: fix: keep runtime context out of model prompt - PR branch already contained follow-up commit before automerge: docs: refresh config baseline after rebase - PR branch already contained follow-up commit before automerge: fix: align blocked turn clients with redacted content - PR branch already contained follow-up commit before automerge: fix: remove out-of-scope client block UI changes Validation: - ClawSweeper review passed for head767e46fde8. - Required merge gates passed before the squash merge. Prepared head SHA:767e46fde8Review: https://github.com/openclaw/openclaw/pull/75035#issuecomment-4351843275 Co-authored-by: Jesse Merhi <jessejmerhi@gmail.com> Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com> Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
77 lines
2.7 KiB
TypeScript
77 lines
2.7 KiB
TypeScript
export type PluginEntryConfig = {
|
|
enabled?: boolean;
|
|
hooks?: {
|
|
/** Controls prompt mutation via before_prompt_build and prompt fields from legacy before_agent_start. */
|
|
allowPromptInjection?: boolean;
|
|
/**
|
|
* Controls access to raw conversation content from conversation hooks including
|
|
* before_agent_run, before_model_resolve, before_agent_reply, llm_input, llm_output,
|
|
* before_agent_finalize, and agent_end.
|
|
* Non-bundled plugins must opt in explicitly; bundled plugins stay allowed unless disabled.
|
|
*/
|
|
allowConversationAccess?: boolean;
|
|
/** Default timeout in milliseconds for this plugin's typed hooks. */
|
|
timeoutMs?: number;
|
|
/** Per typed-hook timeout overrides in milliseconds. */
|
|
timeouts?: Record<string, number>;
|
|
};
|
|
subagent?: {
|
|
/** Explicitly allow this plugin to request per-run provider/model overrides for subagent runs. */
|
|
allowModelOverride?: boolean;
|
|
/**
|
|
* Allowed override targets as canonical provider/model refs.
|
|
* Use "*" to explicitly allow any model for this plugin.
|
|
*/
|
|
allowedModels?: string[];
|
|
};
|
|
config?: Record<string, unknown>;
|
|
};
|
|
|
|
export type PluginSlotsConfig = {
|
|
/** Select which plugin owns the memory slot ("none" disables memory plugins). */
|
|
memory?: string;
|
|
/** Select which plugin owns the context-engine slot. */
|
|
contextEngine?: string;
|
|
};
|
|
|
|
export type PluginsLoadConfig = {
|
|
/** Additional plugin/extension paths to load. */
|
|
paths?: string[];
|
|
};
|
|
|
|
export type PluginInstallRecord = Omit<InstallRecordBase, "source"> & {
|
|
source: InstallRecordBase["source"] | "marketplace";
|
|
marketplaceName?: string;
|
|
marketplaceSource?: string;
|
|
marketplacePlugin?: string;
|
|
};
|
|
|
|
export type PluginsConfig = {
|
|
/** Enable or disable plugin loading. */
|
|
enabled?: boolean;
|
|
/** Optional plugin allowlist (plugin ids). */
|
|
allow?: string[];
|
|
/** Optional plugin denylist (plugin ids). */
|
|
deny?: string[];
|
|
/**
|
|
* Controls how bundled plugins participate in runtime provider discovery when
|
|
* `allow` is configured.
|
|
*
|
|
* - `"allowlist"` (default): bundled provider plugins are gated by `allow`
|
|
* and `entries.<id>.enabled` like third-party plugins.
|
|
* - `"compat"`: legacy mode for migrated configs; bundled provider plugins
|
|
* can be force-loaded regardless of the allowlist.
|
|
*/
|
|
bundledDiscovery?: "compat" | "allowlist";
|
|
load?: PluginsLoadConfig;
|
|
slots?: PluginSlotsConfig;
|
|
entries?: Record<string, PluginEntryConfig>;
|
|
/**
|
|
* Internal transient carrier for plugin install records during command flows.
|
|
* This is intentionally omitted from the config schema and must not be
|
|
* persisted to openclaw.json.
|
|
*/
|
|
installs?: Record<string, PluginInstallRecord>;
|
|
};
|
|
import type { InstallRecordBase } from "./types.installs.js";
|