Skip to content

Phase 2: Suggest configuration system in semfora.toml #141

@Kadajett

Description

@Kadajett

Overview

Add configuration support for the recommendations engine. Users can control which rules run, set confidence thresholds, and scope suggestions to specific directories.

Depends on: #139 (Phase 1)
Parent research: #135

Implementation

1. Create src/suggest/config.rs

#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct SuggestConfig {
    pub enabled: bool,                          // default: false
    pub min_confidence: f64,                    // default: 0.5
    pub scope: Vec<String>,                     // glob patterns, default: all
    pub rules: HashMap<String, bool>,           // per-rule on/off
    pub categories: HashMap<String, bool>,      // per-category on/off
}

2. Extend Config in src/config.rs

Add #[serde(default)] pub suggest: SuggestConfig to the existing Config struct.

3. Config file format

In semfora.toml or .semfora/config.toml:

[suggest]
enabled = false
min_confidence = 0.5
scope = ["src/"]

[suggest.rules]
combine-functions = true
dead-code = true
naming = false

[suggest.categories]
naming = false

4. Config merge logic

Priority: CLI flag --suggest > config enabled field. Per-rule config filters the engine output. The SuggestEngine accepts &SuggestConfig and filters results before returning.

5. MCP parameter support

Add optional suggest_config JSON parameter to MCP tools so AI clients can pass rule overrides per-call.

Testing

  • Test config loading from semfora.toml
  • Test rule filtering (disabled rules produce no output)
  • Test confidence threshold filtering
  • Test scope filtering (only files matching globs)
  • Test CLI flag override of config

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions