Python Plugin SDK
Installation
pip install aisoc-plugin-sdk
The PyPI distribution is aisoc-plugin-sdk; the import path is
aisoc_plugin_sdk. The source lives in packages/plugin-sdk-py/.
Quick Start: Enricher
from aisoc_plugin_sdk import EnricherPlugin, PluginManifest, PluginType
from aisoc_plugin_sdk.enricher import EnrichmentRequest, EnrichmentResult
class VirusTotalEnricher(EnricherPlugin):
def manifest(self) -> PluginManifest:
return PluginManifest(
id="myorg.virustotal",
name="VirusTotal Enricher",
version="1.0.0",
plugin_type=PluginType.ENRICHER,
)
async def enrich(
self, request: EnrichmentRequest, context
) -> EnrichmentResult:
# Call VirusTotal API here
return EnrichmentResult(
indicator_type=request.indicator_type,
indicator_value=request.indicator_value,
enrichments={"vt_score": 72},
malicious=True,
confidence=0.95,
)
Using the decorator
from aisoc_plugin_sdk import enricher
@enricher(
id="myorg.virustotal",
name="VirusTotal Enricher",
version="1.0.0",
)
async def vt_enrich(request, context):
return EnrichmentResult(...)
Quick Start: Action
from aisoc_plugin_sdk import ActionPlugin, PluginManifest, PluginType
from aisoc_plugin_sdk.action import ActionRequest, ActionResult
class BlockIPAction(ActionPlugin):
def manifest(self) -> PluginManifest:
return PluginManifest(
id="myorg.block-ip",
name="Block IP",
version="1.0.0",
plugin_type=PluginType.ACTION,
)
def supported_actions(self) -> list[str]:
return ["block_ip"]
async def execute(
self, request: ActionRequest, context
) -> ActionResult:
if request.dry_run:
return ActionResult(
action_id=request.action_id, success=True,
dry_run=True, summary=f"Would block {request.params['ip']}"
)
# firewall API call here
return ActionResult(action_id=request.action_id, success=True)
Plugin Registry
from aisoc_plugin_sdk import PluginRegistry, PluginContext
registry = PluginRegistry()
registry.register(VirusTotalEnricher())
registry.register(BlockIPAction())
ctx = PluginContext(api_base_url="http://localhost:8000", api_token="...")
await registry.load_all(ctx)
Development
cd packages/plugin-sdk-py
pip install -e ".[dev]"
pytest
mypy src/
ruff check src/