pub const OPERATION_CLASSIFIER_VERSION: &str = "domain-effects-v6";
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum OperationAccess {
Read,
Write,
}
pub const CLASSIFIED_OPERATIONS: &[(&str, OperationAccess)] = &[
("agent.kill", OperationAccess::Write),
("agent.observe", OperationAccess::Read),
("agent.resume", OperationAccess::Write),
("agent.spawn", OperationAccess::Write),
("agent.suspend", OperationAccess::Write),
("authorize", OperationAccess::Write),
("authorize.visible", OperationAccess::Read),
("blob.abort", OperationAccess::Write),
("blob.begin", OperationAccess::Write),
("blob.commit", OperationAccess::Write),
("blob.get", OperationAccess::Read),
("blob.put", OperationAccess::Write),
("blob.put_part", OperationAccess::Write),
("blob.stat", OperationAccess::Read),
("brain.activate", OperationAccess::Write),
("brain.archive", OperationAccess::Write),
("brain.auto_feedback", OperationAccess::Write),
("brain.bind", OperationAccess::Write),
("brain.bindings", OperationAccess::Read),
("brain.config", OperationAccess::Read),
("brain.create_profile", OperationAccess::Write),
("brain.deactivate", OperationAccess::Write),
("brain.emit", OperationAccess::Write),
("brain.event_counts", OperationAccess::Read),
("brain.events", OperationAccess::Read),
("brain.feedback", OperationAccess::Write),
("brain.mark_turn", OperationAccess::Write),
("brain.profile", OperationAccess::Read),
("brain.profiles", OperationAccess::Read),
("brain.record_serve", OperationAccess::Write),
("brain.register_adapter", OperationAccess::Write),
("brain.reset", OperationAccess::Write),
("brain.resolve", OperationAccess::Read),
("brain.state", OperationAccess::Read),
("brain.unbind", OperationAccess::Write),
("code.ingest", OperationAccess::Write),
("comm.cursor_commit", OperationAccess::Write),
("comm.cursor_get", OperationAccess::Read),
("comm.delivered", OperationAccess::Read),
("comm.health", OperationAccess::Read),
("comm.heartbeat", OperationAccess::Write),
("comm.inbox", OperationAccess::Read),
("comm.ingest", OperationAccess::Write),
("comm.mark_read", OperationAccess::Write),
("comm.probe", OperationAccess::Read),
("comm.read", OperationAccess::Write),
("comm.reply", OperationAccess::Write),
("comm.send", OperationAccess::Write),
("comm.thread", OperationAccess::Read),
("comm.unread", OperationAccess::Read),
("context", OperationAccess::Read),
("create", OperationAccess::Write),
("db_diagnostics", OperationAccess::Read),
("delete", OperationAccess::Write),
("exec.events", OperationAccess::Read),
("exec.identity", OperationAccess::Read),
("exec.receipt", OperationAccess::Read),
("exec.run", OperationAccess::Write),
("exec.runs", OperationAccess::Read),
("exec.tree", OperationAccess::Write),
("exec.tree_diff", OperationAccess::Read),
("exec.tree_get", OperationAccess::Read),
("exec.tree_put", OperationAccess::Write),
("get", OperationAccess::Read),
("git.branch", OperationAccess::Write),
("git.checkout", OperationAccess::Write),
("git.commit", OperationAccess::Write),
("git.diff", OperationAccess::Write),
("git.digest", OperationAccess::Write),
("git.gates", OperationAccess::Read),
("git.ingest_cursor", OperationAccess::Read),
("git.init", OperationAccess::Write),
("git.log", OperationAccess::Read),
("git.pr_merge", OperationAccess::Write),
("git.pr_open", OperationAccess::Write),
("git.pr_review", OperationAccess::Write),
("git.push", OperationAccess::Write),
("git.receipts", OperationAccess::Read),
("git.reconcile", OperationAccess::Write),
("git.status", OperationAccess::Read),
("git.update_ref", OperationAccess::Write),
("gtd.assign", OperationAccess::Write),
("gtd.census", OperationAccess::Read),
("gtd.complete", OperationAccess::Write),
("gtd.next", OperationAccess::Read),
("gtd.repair", OperationAccess::Write),
("gtd.tasks", OperationAccess::Read),
("gtd.transition", OperationAccess::Write),
("knowledge.adjudicate", OperationAccess::Write),
("knowledge.challenge", OperationAccess::Write),
("knowledge.cite", OperationAccess::Write),
("knowledge.compose", OperationAccess::Read),
("knowledge.delete_atoms", OperationAccess::Write),
("knowledge.edit", OperationAccess::Write),
("knowledge.eval_retrieval", OperationAccess::Write),
("knowledge.feedback", OperationAccess::Write),
("knowledge.fold", OperationAccess::Read),
("knowledge.get", OperationAccess::Read),
("knowledge.import", OperationAccess::Write),
("knowledge.index", OperationAccess::Write),
("knowledge.learn", OperationAccess::Write),
("knowledge.list", OperationAccess::Read),
("knowledge.search", OperationAccess::Read),
("knowledge.stats", OperationAccess::Read),
("knowledge.suggest", OperationAccess::Read),
("knowledge.topic", OperationAccess::Read),
("knowledge.upsert_atoms", OperationAccess::Write),
("knowledge.upsert_domains", OperationAccess::Write),
("link", OperationAccess::Write),
("list", OperationAccess::Read),
("memory.feedback", OperationAccess::Write),
("memory.prune", OperationAccess::Write),
("memory.recall", OperationAccess::Read),
("memory.recall_candidates", OperationAccess::Read),
("memory.recall_embed", OperationAccess::Read),
("memory.recall_fuse", OperationAccess::Read),
("memory.recall_rerank", OperationAccess::Read),
("memory.recall_score", OperationAccess::Read),
("memory.remember", OperationAccess::Write),
("memory.vacuum", OperationAccess::Write),
("merge", OperationAccess::Write),
("moodboard.ingest", OperationAccess::Write),
("moodboard.judge", OperationAccess::Write),
("moodboard.model", OperationAccess::Read),
("moodboard.preference", OperationAccess::Read),
("moodboard.search", OperationAccess::Read),
("moodboard.serve", OperationAccess::Write),
("moodboard.train_preference", OperationAccess::Write),
("neighbors", OperationAccess::Read),
("propose", OperationAccess::Write),
("query", OperationAccess::Read),
("resolve", OperationAccess::Read),
("restore", OperationAccess::Write),
("review", OperationAccess::Write),
("scan", OperationAccess::Read),
("schedule.agenda", OperationAccess::Read),
("schedule.cancel", OperationAccess::Write),
("schedule.remind", OperationAccess::Write),
("schedule.schedule", OperationAccess::Write),
("search", OperationAccess::Read),
("session.export", OperationAccess::Read),
("session.list", OperationAccess::Read),
("session.resume", OperationAccess::Read),
("session.search", OperationAccess::Read),
("session.store", OperationAccess::Write),
("stats", OperationAccess::Read),
("stream.append", OperationAccess::Write),
("stream.batch", OperationAccess::Write),
("stream.read", OperationAccess::Read),
("stream.stat", OperationAccess::Read),
("telemetry.channels", OperationAccess::Read),
("telemetry.counts", OperationAccess::Read),
("telemetry.emit", OperationAccess::Write),
("telemetry.read", OperationAccess::Read),
("tool.check", OperationAccess::Read),
("tool.deny", OperationAccess::Write),
("tool.describe", OperationAccess::Read),
("tool.grant", OperationAccess::Write),
("tool.ingest", OperationAccess::Write),
("tool.list", OperationAccess::Read),
("tool.policies", OperationAccess::Read),
("tool.policy", OperationAccess::Write),
("tool.policy_delete", OperationAccess::Write),
("tool.register", OperationAccess::Write),
("tool.request", OperationAccess::Write),
("tool.requests", OperationAccess::Read),
("tool.revoke", OperationAccess::Write),
("tool.suggest", OperationAccess::Read),
("traverse", OperationAccess::Read),
("update", OperationAccess::Write),
("verbs", OperationAccess::Read),
("web.extract", OperationAccess::Write),
("web.fetch", OperationAccess::Write),
("web.ingest", OperationAccess::Write),
("web.refresh", OperationAccess::Write),
("web.search", OperationAccess::Write),
("whoami", OperationAccess::Read),
("withdraw", OperationAccess::Write),
];
pub fn classify_operation(verb: &str) -> Option<OperationAccess> {
CLASSIFIED_OPERATIONS
.binary_search_by_key(&verb, |(name, _)| *name)
.ok()
.map(|index| CLASSIFIED_OPERATIONS[index].1)
}