Capabilities
Capabilities are bounded task domains.
They describe what kind of run is happening, not which low-level methods the engine will call.
Why this exists
Capabilities give the system semantic structure. They let the operator say:
- this run is invoice extraction
- this run is session capture
- this run is Hacker News top-story extraction
How it works
A capability usually contains:
- a stable name
- optional metadata
- optional default verification
Examples:
automation.extract_invoiceautomation.capture_sessionbrowser.extract_hacker_news_top_story
Example
const capabilities = createCapabilityRegistry({
"browser.extract_hacker_news_top_story": defineCapability({
name: "browser.extract_hacker_news_top_story",
defaultVerify(result) {
return {
passed: typeof result.title === "string" && result.title.length > 0,
violations: [],
};
},
}),
});
Notes
Common confusion
Capabilities are bounded task domains, not low-level browser actions.
Current
The current implementation provides defineCapability() and createCapabilityRegistry() for capability definition and registration.