Core capabilities
1. Pattern Extraction
Extract recurring operation patterns from Agent run trajectories. The factory analyzes Experiment traces from Agent Runtime, identifying high-frequency sequences (e.g., iPL.local_swap → iSTA.incremental → evaluate_hpwl appearing 12 times). Each pattern includes I/O types, pre/post conditions, typical success rate, and typical runtime.
2. Tool Generation
Solidify patterns into typed tool contracts. The factory auto-generates: tool name + description (for LLM understanding), typed request/result schema (JSON Schema), internal adapter (maps contract to EDA tool call sequences), error taxonomy (failure modes and Agent handling).
3. Qualification Gate
Three promotion gates—coverage test (all parameter combos and edge cases) → gate check (contract validation—complete I/O schema and error handling) → regression suite (new tool must not break existing tools). Pass all three to reach production.
4. Version Management
Tool versions bind to the Agent/Model version that generated them. Provenance records: source_trajectory, generating_model, extraction_params. When underlying EDA tools or AI models upgrade, tools auto-mark stale and trigger re-qualification.
5. Rollback
Auto-demote underperforming tools. The factory monitors production metrics (success rate, avg runtime, violation rate). Sustained under-threshold performance over N calls demotes to degraded or rolls back to the last stable version. Demotion events trigger alerts and audit log entries.
Agent invocation
Tool Factory operations are triggered by admins or senior Agents—pattern extraction and tool generation are low-frequency infrastructure self-evolution, not hot-path calls.
Python SDK
from ieda.factory import ToolFactory factory = ToolFactory("http://localhost:9140") # Step 1: Extract pattern from trajectory pattern = factory.extract( trajectory_ref="traj_7f3a", min_occurrences=5, pattern_type="composite_tool", ) print(pattern.name) # "hotspot_swap" print(pattern.frequency) # 12 print(pattern.operations) # ["iPL.local_swap", "iSTA.incremental", "evaluate_hpwl"] # Step 2: Generate tool from pattern result = factory.generate( pattern_ref=pattern.ref, qualification_level="F2", ) print(result.tool_contract) # typed contract with schema print(result.qualification) # {coverage: "pass", gate: "pass", regression: "pass"} print(result.promotion) # "production"
Input/output contract
FactoryRequest
| Field | Type | Required | Description |
|---|---|---|---|
trajectory_ref | string | Yes | Agent trajectory reference—from Agent Runtime Experiment records |
pattern_type | "atomic_tool" | "composite_tool" | "macro_pattern" | Yes | Pattern type—atomic single tool, composite tool chain, macro behavioral pattern |
qualification_level | "F0" | "F2" | "F4" | Yes | Required qualification level—F0 coverage only, F2 adds gate, F4 adds regression |
FactoryResult
| Field | Type | Description |
|---|---|---|
tool_contract | object | Generated tool contract: name, description, request_schema, result_schema, adapter_spec |
qualification_report | object | Qualification result: coverage, gate_check, regression—pass/fail per stage |
promotion_decision | "production" | "staging" | "rejected" | Promotion decision—production all pass, staging partial, rejected failed |