pub struct SupervisorConfig {Show 15 fields
pub enabled: bool,
pub cli: Option<String>,
pub test_command: Option<String>,
pub lint_command: Option<String>,
pub build_command: Option<String>,
pub doc_build_command: Option<String>,
pub spec_validate_command: Option<String>,
pub fmt_check_command: Option<String>,
pub security_audit_command: Option<String>,
pub agent_approval: ApprovalLevel,
pub auto_approve: Option<AutoApproveConfig>,
pub conflict: ConflictConfig,
pub learnings: bool,
pub learnings_config: LearningsConfig,
pub common_dev_allowlist: CommonDevAllowlistConfig,
}Expand description
Supervisor mode configuration.
Supervisor mode puts git-paw in front of the agent CLI as a coordinating layer that can enforce approval policy and run a verification command after each agent completes a task.
Fields§
§enabled: boolWhether supervisor mode is enabled by default for this repo.
cli: Option<String>Override the CLI used when launching the supervisor (e.g. "claude").
None resolves to the normal CLI selection flow at runtime.
test_command: Option<String>Test command to run after each agent completes (e.g. "just check").
None skips the verification step.
lint_command: Option<String>Pre-stage lint invocation for the five-gate verification workflow.
Drives gate 1’s lint sub-step. Example values per common stack:
"cargo clippy -- -D warnings" (Rust), "npm run lint" (Node),
"ruff check ." (Python), "golangci-lint run" (Go). When None,
the supervisor skill renders the placeholder as (not configured)
and the supervisor agent skips the tooling invocation.
build_command: Option<String>Compile-step command when build is distinct from test.
Drives gate 1’s compile sub-step. Example values: "cargo build"
(Rust), "npm run build" (Node), "mvn package" (Java), "go build ./..." (Go). When None, the supervisor skill renders the
placeholder as (not configured) and the supervisor agent skips
the tooling invocation.
doc_build_command: Option<String>Documentation-build command for gate 4 (doc audit).
Example values: "mdbook build docs/" (mdBook), "sphinx-build"
(Sphinx), "mkdocs build" (MkDocs), "npx typedoc" (TypeDoc).
When None, the supervisor skill renders the placeholder as
(not configured) and the supervisor agent skips the tooling
invocation; the manual doc-surface review still applies.
spec_validate_command: Option<String>Spec-validator command for gate 3 (spec audit).
Typically takes a change name as argument; the supervisor agent
substitutes {{CHANGE_ID}} at verification time using the change
it is currently auditing. Example values: "openspec validate {{CHANGE_ID}} --strict" (OpenSpec). When None, the supervisor
skill renders the placeholder as (not configured) and the
supervisor agent skips the tooling invocation; the manual
scenario-coverage check still applies.
fmt_check_command: Option<String>Formatter-check command for gate 1’s pre-stage.
Example values: "cargo fmt --check" (Rust), "prettier --check ." (Node), "gofmt -l ." (Go), "black --check ." (Python).
When None, the supervisor skill renders the placeholder as
(not configured) and the supervisor agent skips the tooling
invocation.
security_audit_command: Option<String>Security-audit tooling for gate 5.
Example values: "cargo audit" (Rust), "npm audit" (Node),
"bandit -r ." (Python), "gosec ./..." (Go). When None, the
supervisor skill renders the placeholder as (not configured)
and the supervisor agent skips the tooling invocation; the manual
OWASP-category diff review still applies.
agent_approval: ApprovalLevelApproval policy applied to agent actions.
auto_approve: Option<AutoApproveConfig>Auto-approval configuration for safe permission prompts.
When present, the supervisor automatically approves stalled agents
whose pending command matches an entry in the safe-command whitelist.
See AutoApproveConfig for the per-field semantics.
conflict: ConflictConfigConflict detector configuration.
Drives the broker-internal subsystem that auto-emits
agent.feedback and agent.question for forward, in-flight, and
ownership conflicts between agents. Active only when
SupervisorConfig::enabled is true; otherwise the detector
subsystem is not started and no auto-warnings fire.
learnings: boolOpt-in flag for the learnings aggregator subsystem (learnings-mode).
When true (and [broker] enabled = true), the broker starts a
learnings aggregator that observes the session and appends
human-readable summaries to .git-paw/session-learnings.md. Defaults
to false — pre-v0.5 configs load without producing learnings.
learnings_config: LearningsConfigTuning knobs for the learnings aggregator.
Honoured only when Self::learnings is true. Missing fields fall
back to LearningsConfig::default. The TOML table key is
[supervisor.learnings_config] to avoid colliding with the boolean
learnings field.
common_dev_allowlist: CommonDevAllowlistConfigCommon dev-command allowlist configuration.
Controls whether the supervisor seeds a curated preset of
dev-loop prefix patterns (cargo build, git commit, …) into
.claude/settings.json::allowed_bash_prefixes on session start.
See CommonDevAllowlistConfig for field semantics.
Implementations§
Source§impl SupervisorConfig
impl SupervisorConfig
Sourcepub fn gate_commands(&self) -> GateCommands<'_>
pub fn gate_commands(&self) -> GateCommands<'_>
Borrowed view of the seven gate-command templates suitable for
passing to crate::skills::render. Each field maps directly to
the matching Option<String> on this struct.
Trait Implementations§
Source§impl Clone for SupervisorConfig
impl Clone for SupervisorConfig
Source§fn clone(&self) -> SupervisorConfig
fn clone(&self) -> SupervisorConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SupervisorConfig
impl Debug for SupervisorConfig
Source§impl Default for SupervisorConfig
impl Default for SupervisorConfig
Source§fn default() -> SupervisorConfig
fn default() -> SupervisorConfig
Source§impl<'de> Deserialize<'de> for SupervisorConfig
impl<'de> Deserialize<'de> for SupervisorConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for SupervisorConfig
impl PartialEq for SupervisorConfig
Source§fn eq(&self, other: &SupervisorConfig) -> bool
fn eq(&self, other: &SupervisorConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for SupervisorConfig
impl Serialize for SupervisorConfig
impl Eq for SupervisorConfig
impl StructuralPartialEq for SupervisorConfig
Auto Trait Implementations§
impl Freeze for SupervisorConfig
impl RefUnwindSafe for SupervisorConfig
impl Send for SupervisorConfig
impl Sync for SupervisorConfig
impl Unpin for SupervisorConfig
impl UnsafeUnpin for SupervisorConfig
impl UnwindSafe for SupervisorConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more