-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
phase:kernelKernel orchestrationKernel orchestrationpriority:criticalBlocks other workBlocks other worktype:featureNew functionalityNew functionality
Milestone
Description
Summary
Implement the Kernel class that orchestrates the full request → grant → invoke → expand → explain flow.
Constructor
Kernel(
registry: CapabilityRegistry,
policy: PolicyEngine | None = None, # Default: DefaultPolicyEngine
token_provider: TokenProvider | None = None, # Default: HMACTokenProvider
router: Router | None = None, # Default: StaticRouter
firewall: Firewall | None = None, # Default: Firewall()
handle_store: HandleStore | None = None, # Default: HandleStore()
trace_store: TraceStore | None = None, # Default: TraceStore()
)Methods
request_capabilities(goal, context_tags=None) → list[CapabilityRequest]
Delegate to registry. Deterministic.
grant_capability(request, principal, justification) → CapabilityGrant
- Get capability from registry (raise CapabilityNotFound if missing)
- Evaluate policy → if denied, raise PolicyDenied with denial_reason
- Issue token with enforced_constraints
- Return CapabilityGrant(token, enforced_constraints)
invoke(token, args, response_mode="summary") → Frame
- Verify token (raise TokenExpired/TokenInvalid)
- Select route via router
- Execute via driver. If primary fails and fallbacks exist, try next. If all fail, raise last DriverError.
- Apply redaction (based on capability sensitivity + token constraints)
- Apply firewall transform (with budgets from capability defaults merged with token constraints)
- Store raw data in handle store
- Record ActionTrace
- Return Frame
expand(handle, query) → Frame
Delegate to handle store expand. Apply budgets to result.
explain(action_id) → ActionTrace
Delegate to trace store.
Acceptance criteria
- Full happy path: request → grant → invoke → expand → explain works end-to-end
- Policy denial raises PolicyDenied with message
- Expired token raises TokenExpired
- Tampered token raises TokenInvalid
- Driver fallback: primary fails → secondary succeeds
- All drivers fail → last DriverError propagated
- Trace recorded for every invoke
- explain() returns matching trace
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
phase:kernelKernel orchestrationKernel orchestrationpriority:criticalBlocks other workBlocks other worktype:featureNew functionalityNew functionality