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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions