diff --git a/fuzzforge-modules/cargo-fuzzer/pyproject.toml b/fuzzforge-modules/cargo-fuzzer/pyproject.toml index 813e508..e91d439 100644 --- a/fuzzforge-modules/cargo-fuzzer/pyproject.toml +++ b/fuzzforge-modules/cargo-fuzzer/pyproject.toml @@ -33,16 +33,11 @@ package = true # FuzzForge module metadata for AI agent discovery [tool.fuzzforge.module] identifier = "fuzzforge-cargo-fuzzer" -category = "fuzzer" -language = "rust" -pipeline_stage = "fuzzing" -pipeline_order = 3 suggested_predecessors = ["fuzzforge-harness-tester"] continuous_mode = true -typical_duration = "continuous" use_cases = [ - "Run continuous coverage-guided fuzzing with libFuzzer", + "Run continuous coverage-guided fuzzing on Rust targets with libFuzzer", "Execute cargo-fuzz on validated harnesses", "Produce crash artifacts for analysis", "Long-running fuzzing campaign" diff --git a/fuzzforge-modules/crash-analyzer/pyproject.toml b/fuzzforge-modules/crash-analyzer/pyproject.toml index 30ce234..a83f0d0 100644 --- a/fuzzforge-modules/crash-analyzer/pyproject.toml +++ b/fuzzforge-modules/crash-analyzer/pyproject.toml @@ -34,16 +34,11 @@ package = true # FuzzForge module metadata for AI agent discovery [tool.fuzzforge.module] identifier = "fuzzforge-crash-analyzer" -category = "reporter" -language = "rust" -pipeline_stage = "crash-analysis" -pipeline_order = 4 suggested_predecessors = ["fuzzforge-cargo-fuzzer"] continuous_mode = false -typical_duration = "1m" use_cases = [ - "Analyze crash artifacts from fuzzing", + "Analyze Rust crash artifacts from fuzzing", "Deduplicate crashes by stack trace signature", "Triage crashes by severity (critical, high, medium, low)", "Generate security vulnerability reports" diff --git a/fuzzforge-modules/fuzzforge-module-template/pyproject.toml b/fuzzforge-modules/fuzzforge-module-template/pyproject.toml index 26695f7..303600d 100644 --- a/fuzzforge-modules/fuzzforge-module-template/pyproject.toml +++ b/fuzzforge-modules/fuzzforge-module-template/pyproject.toml @@ -31,40 +31,25 @@ fuzzforge-modules-sdk = { workspace = true } package = true # FuzzForge module metadata for AI agent discovery -# See MODULE_METADATA.md for full documentation [tool.fuzzforge.module] # REQUIRED: Unique module identifier (should match Docker image name) identifier = "fuzzforge-module-template" -# REQUIRED: Module category - one of: analyzer, validator, fuzzer, reporter -category = "analyzer" - -# Optional: Target programming language -language = "rust" - -# Optional: Pipeline stage name -pipeline_stage = "analysis" - -# Optional: Numeric order in pipeline (for sorting) -pipeline_order = 1 - -# Optional: List of module identifiers that must run before this one -dependencies = [] +# Optional: List of module identifiers that should run before this one +suggested_predecessors = [] # Optional: Whether this module supports continuous/background execution continuous_mode = false -# Optional: Expected runtime (e.g., "30s", "5m", "continuous") -typical_duration = "30s" - # REQUIRED: Use cases help AI agents understand when to use this module +# Include language/target info here (e.g., "Analyze Rust crate...") use_cases = [ "FIXME: Describe what this module does", "FIXME: Describe typical usage scenario" ] # REQUIRED: What inputs the module expects -input_requirements = [ +common_inputs = [ "FIXME: List required input files or artifacts" ] diff --git a/fuzzforge-modules/fuzzforge-modules-sdk/src/fuzzforge_modules_sdk/templates/fuzzforge-module-template/pyproject.toml b/fuzzforge-modules/fuzzforge-modules-sdk/src/fuzzforge_modules_sdk/templates/fuzzforge-module-template/pyproject.toml index 26695f7..086e7b2 100644 --- a/fuzzforge-modules/fuzzforge-modules-sdk/src/fuzzforge_modules_sdk/templates/fuzzforge-module-template/pyproject.toml +++ b/fuzzforge-modules/fuzzforge-modules-sdk/src/fuzzforge_modules_sdk/templates/fuzzforge-module-template/pyproject.toml @@ -31,40 +31,25 @@ fuzzforge-modules-sdk = { workspace = true } package = true # FuzzForge module metadata for AI agent discovery -# See MODULE_METADATA.md for full documentation [tool.fuzzforge.module] # REQUIRED: Unique module identifier (should match Docker image name) identifier = "fuzzforge-module-template" -# REQUIRED: Module category - one of: analyzer, validator, fuzzer, reporter -category = "analyzer" - -# Optional: Target programming language -language = "rust" - -# Optional: Pipeline stage name -pipeline_stage = "analysis" - -# Optional: Numeric order in pipeline (for sorting) -pipeline_order = 1 - -# Optional: List of module identifiers that must run before this one -dependencies = [] +# Optional: List of module identifiers that should run before this one +suggested_predecessors = [] # Optional: Whether this module supports continuous/background execution continuous_mode = false -# Optional: Expected runtime (e.g., "30s", "5m", "continuous") -typical_duration = "30s" - # REQUIRED: Use cases help AI agents understand when to use this module +# Include language/target info here (e.g., "Analyze Rust crate...") use_cases = [ "FIXME: Describe what this module does", "FIXME: Describe typical usage scenario" ] # REQUIRED: What inputs the module expects -input_requirements = [ +common_inputs = [ "FIXME: List required input files or artifacts" ] @@ -72,3 +57,6 @@ input_requirements = [ output_artifacts = [ "FIXME: List output files produced" ] + +# REQUIRED: How AI should display output to user +output_treatment = "FIXME: Describe how to present the output" diff --git a/fuzzforge-modules/harness-tester/pyproject.toml b/fuzzforge-modules/harness-tester/pyproject.toml index 35e13dd..1943d49 100644 --- a/fuzzforge-modules/harness-tester/pyproject.toml +++ b/fuzzforge-modules/harness-tester/pyproject.toml @@ -30,16 +30,11 @@ dev-dependencies = [ # FuzzForge module metadata for AI agent discovery [tool.fuzzforge.module] identifier = "fuzzforge-harness-tester" -category = "validator" -language = "rust" -pipeline_stage = "harness-testing" -pipeline_order = 2 suggested_predecessors = ["fuzzforge-rust-analyzer"] continuous_mode = false -typical_duration = "2m" use_cases = [ - "Validate fuzz harnesses compile correctly", + "Validate Rust fuzz harnesses compile correctly", "Run short fuzzing trials to assess harness quality", "Provide detailed feedback for AI to improve harnesses", "Gate before running expensive long fuzzing campaigns" diff --git a/fuzzforge-modules/rust-analyzer/pyproject.toml b/fuzzforge-modules/rust-analyzer/pyproject.toml index b0f3e7b..5bfcdf8 100644 --- a/fuzzforge-modules/rust-analyzer/pyproject.toml +++ b/fuzzforge-modules/rust-analyzer/pyproject.toml @@ -30,13 +30,8 @@ package = true # FuzzForge module metadata for AI agent discovery [tool.fuzzforge.module] identifier = "fuzzforge-rust-analyzer" -category = "analyzer" -language = "rust" -pipeline_stage = "analysis" -pipeline_order = 1 suggested_predecessors = [] continuous_mode = false -typical_duration = "30s" use_cases = [ "Analyze Rust crate to find fuzzable functions", diff --git a/fuzzforge-runner/src/fuzzforge_runner/runner.py b/fuzzforge-runner/src/fuzzforge_runner/runner.py index b92e1c3..8ee9b27 100644 --- a/fuzzforge-runner/src/fuzzforge_runner/runner.py +++ b/fuzzforge-runner/src/fuzzforge_runner/runner.py @@ -53,36 +53,24 @@ class ModuleInfo: #: Whether module image exists locally. available: bool = True - #: Module category (analyzer, validator, fuzzer, reporter). - category: str | None = None - - #: Target programming language (e.g., "rust", "python"). - language: str | None = None - - #: Pipeline stage name (e.g., "analysis", "fuzzing"). - pipeline_stage: str | None = None - - #: Numeric order in pipeline for sorting. - pipeline_order: int | None = None - - #: Module identifiers that must run before this one. - dependencies: list[str] | None = None + #: Module identifiers that should run before this one. + suggested_predecessors: list[str] | None = None #: Whether module supports continuous/background execution. continuous_mode: bool = False - #: Expected runtime (e.g., "30s", "5m", "continuous"). - typical_duration: str | None = None - #: Typical use cases and scenarios for this module. use_cases: list[str] | None = None - #: Input requirements (e.g., ["rust-source-code", "Cargo.toml"]). - input_requirements: list[str] | None = None + #: Common inputs (e.g., ["rust-source-code", "Cargo.toml"]). + common_inputs: list[str] | None = None #: Output artifacts produced (e.g., ["fuzzable_functions.json"]). output_artifacts: list[str] | None = None + #: How AI should display/treat outputs. + output_treatment: str | None = None + class Runner: """Main FuzzForge Runner interface. @@ -274,16 +262,12 @@ class Runner: description=project_info.get("description"), version=project_info.get("version", image.tag), available=True, - category=fuzzforge_meta.get("category"), - language=fuzzforge_meta.get("language"), - pipeline_stage=fuzzforge_meta.get("pipeline_stage"), - pipeline_order=fuzzforge_meta.get("pipeline_order"), - dependencies=fuzzforge_meta.get("dependencies", []), + suggested_predecessors=fuzzforge_meta.get("suggested_predecessors", []), continuous_mode=fuzzforge_meta.get("continuous_mode", False), - typical_duration=fuzzforge_meta.get("typical_duration"), use_cases=fuzzforge_meta.get("use_cases", []), - input_requirements=fuzzforge_meta.get("input_requirements", []), + common_inputs=fuzzforge_meta.get("common_inputs", []), output_artifacts=fuzzforge_meta.get("output_artifacts", []), + output_treatment=fuzzforge_meta.get("output_treatment"), ) )