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/diapason/tools/approval_store.py
Methods:¶
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/diapason/tools/approval_store.py
list_pending
¶
list_pending() -> List[PendingAction]
Return all non-expired pending actions.
Source code in src/diapason/tools/approval_store.py
list_approved
¶
list_approved() -> List[PendingAction]
Return approved-but-not-yet-executed actions.
Source code in src/diapason/tools/approval_store.py
expire_stale
¶
Mark past-TTL pending actions as expired. Returns count.
Source code in src/diapason/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/diapason/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.