mirror of
https://github.com/FuzzingLabs/fuzzforge_ai.git
synced 2026-02-12 19:12:49 +00:00
refactor: simplify module metadata schema for AI discoverability
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user