approval_store
approval_store
¶
ApprovalStore — SQLite-backed store for proactive agent action approvals.
Two tables:
- pending_actions: actions proposed by the proactive agent awaiting user decision
- permission_memory: remembered user decisions keyed by action pattern
Permission key format: "{action_type}:{fingerprint}"
e.g. "email_delete:domain:noreply.github.com"
"sms_draft_reply:contact:+15551234567"
Classes¶
PendingAction
dataclass
¶
PendingAction(id: str, action_type: str, description: str, payload: Dict[str, Any], permission_key: str, tier: str, status: str = STATUS_PENDING, created_at: str = '', expires_at: str = '', notification_sent: bool = False, decision_at: Optional[str] = None)
An action proposed by the proactive agent.
PermissionRule
dataclass
¶
PermissionRule(permission_key: str, decision: str, times_approved: int = 0, times_denied: int = 0, last_updated: str = '', notes: str = '')
A remembered user decision for a permission pattern.
ApprovalStore
¶
SQLite store for proactive agent action approvals and permission memory.
Source code in src/openjarvis/tools/approval_store.py
Functions¶
queue_action
¶
queue_action(action_type: str, description: str, payload: Dict[str, Any], permission_key: str, tier: str, ttl_hours: int = 24) -> PendingAction
Create and persist a new pending action.
Source code in src/openjarvis/tools/approval_store.py
list_pending
¶
list_pending() -> List[PendingAction]
Return all non-expired pending actions.
Source code in src/openjarvis/tools/approval_store.py
list_approved
¶
list_approved() -> List[PendingAction]
Return approved-but-not-yet-executed actions.
Source code in src/openjarvis/tools/approval_store.py
expire_stale
¶
Mark past-TTL pending actions as expired. Returns count.
Source code in src/openjarvis/tools/approval_store.py
set_permission
¶
set_permission(permission_key: str, decision: str, *, approved: bool = False, notes: str = '') -> None
Upsert a permission rule, incrementing the relevant counter.
Source code in src/openjarvis/tools/approval_store.py
get_seen_ids
¶
Return all doc_ids and message_ids previously queued (any status).
Used by ProactiveAgent to skip items it has already proposed so
they don't resurface on every run while still unread/unanswered.