1pub const OPERATION_CLASSIFIER_VERSION: &str = "domain-effects-v11";
9
10#[derive(Clone, Copy, Debug, PartialEq, Eq)]
12pub enum OperationAccess {
13 Read,
15 Write,
17}
18
19pub const CLASSIFIED_OPERATIONS: &[(&str, OperationAccess)] = &[
23 ("agent.kill", OperationAccess::Write),
24 ("agent.observe", OperationAccess::Read),
25 ("agent.resume", OperationAccess::Write),
26 ("agent.spawn", OperationAccess::Write),
27 ("agent.suspend", OperationAccess::Write),
28 ("authorize", OperationAccess::Write),
29 ("authorize.visible", OperationAccess::Read),
30 ("blob.abort", OperationAccess::Write),
31 ("blob.begin", OperationAccess::Write),
32 ("blob.commit", OperationAccess::Write),
33 ("blob.export", OperationAccess::Write),
34 ("blob.get", OperationAccess::Read),
35 ("blob.import", OperationAccess::Write),
36 ("blob.put", OperationAccess::Write),
37 ("blob.put_part", OperationAccess::Write),
38 ("blob.stat", OperationAccess::Read),
39 ("brain.activate", OperationAccess::Write),
40 ("brain.archive", OperationAccess::Write),
41 ("brain.auto_feedback", OperationAccess::Write),
42 ("brain.bind", OperationAccess::Write),
43 ("brain.bindings", OperationAccess::Read),
44 ("brain.config", OperationAccess::Read),
45 ("brain.create_profile", OperationAccess::Write),
46 ("brain.deactivate", OperationAccess::Write),
47 ("brain.emit", OperationAccess::Write),
48 ("brain.event_counts", OperationAccess::Read),
49 ("brain.event_page", OperationAccess::Read),
50 ("brain.events", OperationAccess::Read),
51 ("brain.feedback", OperationAccess::Write),
52 ("brain.mark_turn", OperationAccess::Write),
53 ("brain.profile", OperationAccess::Read),
54 ("brain.profiles", OperationAccess::Read),
55 ("brain.record_serve", OperationAccess::Write),
56 ("brain.register_adapter", OperationAccess::Write),
57 ("brain.reset", OperationAccess::Write),
58 ("brain.resolve", OperationAccess::Read),
59 ("brain.state", OperationAccess::Read),
60 ("brain.unbind", OperationAccess::Write),
61 ("code.ingest", OperationAccess::Write),
62 ("comm.cleanup_expired_quarantine", OperationAccess::Write),
63 ("comm.cursor_commit", OperationAccess::Write),
64 ("comm.cursor_get", OperationAccess::Read),
65 ("comm.delivered", OperationAccess::Read),
66 ("comm.health", OperationAccess::Read),
67 ("comm.heartbeat", OperationAccess::Write),
68 ("comm.inbox", OperationAccess::Read),
69 ("comm.ingest", OperationAccess::Write),
70 ("comm.mark_read", OperationAccess::Write),
71 ("comm.probe", OperationAccess::Read),
72 ("comm.read", OperationAccess::Write),
73 ("comm.reply", OperationAccess::Write),
74 ("comm.send", OperationAccess::Write),
75 ("comm.thread", OperationAccess::Read),
76 ("comm.transport_status", OperationAccess::Read),
77 ("comm.unread", OperationAccess::Read),
78 ("context", OperationAccess::Read),
79 ("create", OperationAccess::Write),
80 ("db_diagnostics", OperationAccess::Read),
81 ("delete", OperationAccess::Write),
82 ("exec.events", OperationAccess::Read),
83 ("exec.identity", OperationAccess::Read),
84 ("exec.receipt", OperationAccess::Read),
85 ("exec.run", OperationAccess::Write),
86 ("exec.runs", OperationAccess::Read),
87 ("exec.tree", OperationAccess::Write),
88 ("exec.tree_diff", OperationAccess::Read),
89 ("exec.tree_get", OperationAccess::Read),
90 ("exec.tree_put", OperationAccess::Write),
91 ("get", OperationAccess::Read),
92 ("git.branch", OperationAccess::Write),
93 ("git.checkout", OperationAccess::Write),
94 ("git.commit", OperationAccess::Write),
95 ("git.diff", OperationAccess::Write),
96 ("git.digest", OperationAccess::Write),
97 ("git.gates", OperationAccess::Read),
98 ("git.ingest_cursor", OperationAccess::Read),
99 ("git.init", OperationAccess::Write),
100 ("git.log", OperationAccess::Read),
101 ("git.pr_merge", OperationAccess::Write),
102 ("git.pr_open", OperationAccess::Write),
103 ("git.pr_review", OperationAccess::Write),
104 ("git.push", OperationAccess::Write),
105 ("git.receipts", OperationAccess::Read),
106 ("git.reconcile", OperationAccess::Write),
107 ("git.status", OperationAccess::Read),
108 ("git.update_ref", OperationAccess::Write),
109 ("gtd.assign", OperationAccess::Write),
110 ("gtd.census", OperationAccess::Read),
111 ("gtd.complete", OperationAccess::Write),
112 ("gtd.next", OperationAccess::Read),
113 ("gtd.repair", OperationAccess::Write),
114 ("gtd.tasks", OperationAccess::Read),
115 ("gtd.transition", OperationAccess::Write),
116 ("knowledge.adjudicate", OperationAccess::Write),
117 ("knowledge.challenge", OperationAccess::Write),
118 ("knowledge.cite", OperationAccess::Write),
119 ("knowledge.compose", OperationAccess::Read),
120 ("knowledge.delete_atoms", OperationAccess::Write),
121 ("knowledge.edit", OperationAccess::Write),
122 ("knowledge.eval_retrieval", OperationAccess::Write),
123 ("knowledge.feedback", OperationAccess::Write),
124 ("knowledge.fold", OperationAccess::Read),
125 ("knowledge.get", OperationAccess::Read),
126 ("knowledge.import", OperationAccess::Write),
127 ("knowledge.index", OperationAccess::Write),
128 ("knowledge.learn", OperationAccess::Write),
129 ("knowledge.list", OperationAccess::Read),
130 ("knowledge.search", OperationAccess::Read),
131 ("knowledge.stats", OperationAccess::Read),
132 ("knowledge.suggest", OperationAccess::Read),
133 ("knowledge.topic", OperationAccess::Read),
134 ("knowledge.upsert_atoms", OperationAccess::Write),
135 ("knowledge.upsert_domains", OperationAccess::Write),
136 ("link", OperationAccess::Write),
137 ("list", OperationAccess::Read),
138 ("memory.feedback", OperationAccess::Write),
139 ("memory.prune", OperationAccess::Write),
140 ("memory.recall", OperationAccess::Read),
141 ("memory.recall_candidates", OperationAccess::Read),
142 ("memory.recall_embed", OperationAccess::Read),
143 ("memory.recall_fuse", OperationAccess::Read),
144 ("memory.recall_rerank", OperationAccess::Read),
145 ("memory.recall_score", OperationAccess::Read),
146 ("memory.remember", OperationAccess::Write),
147 ("memory.vacuum", OperationAccess::Write),
148 ("merge", OperationAccess::Write),
149 ("moodboard.ingest", OperationAccess::Write),
150 ("moodboard.judge", OperationAccess::Write),
151 ("moodboard.model", OperationAccess::Read),
152 ("moodboard.preference", OperationAccess::Read),
153 ("moodboard.search", OperationAccess::Read),
154 ("moodboard.serve", OperationAccess::Write),
155 ("moodboard.train_preference", OperationAccess::Write),
156 ("neighbors", OperationAccess::Read),
157 ("propose", OperationAccess::Write),
158 ("query", OperationAccess::Read),
159 ("resolve", OperationAccess::Read),
160 ("restore", OperationAccess::Write),
161 ("review", OperationAccess::Write),
162 ("scan", OperationAccess::Read),
163 ("schedule.agenda", OperationAccess::Read),
164 ("schedule.cancel", OperationAccess::Write),
165 ("schedule.remind", OperationAccess::Write),
166 ("schedule.schedule", OperationAccess::Write),
167 ("search", OperationAccess::Read),
168 ("session.export", OperationAccess::Read),
169 ("session.list", OperationAccess::Read),
170 ("session.resume", OperationAccess::Read),
171 ("session.search", OperationAccess::Read),
172 ("session.stats", OperationAccess::Read),
173 ("session.store", OperationAccess::Write),
174 ("session.vacuum", OperationAccess::Write),
175 ("stats", OperationAccess::Read),
176 ("stream.append", OperationAccess::Write),
177 ("stream.batch", OperationAccess::Write),
178 ("stream.read", OperationAccess::Read),
179 ("stream.stat", OperationAccess::Read),
180 ("telemetry.channels", OperationAccess::Read),
181 ("telemetry.counts", OperationAccess::Read),
182 ("telemetry.emit", OperationAccess::Write),
183 ("telemetry.read", OperationAccess::Read),
184 ("tool.check", OperationAccess::Read),
185 ("tool.deny", OperationAccess::Write),
186 ("tool.describe", OperationAccess::Read),
187 ("tool.grant", OperationAccess::Write),
188 ("tool.ingest", OperationAccess::Write),
189 ("tool.list", OperationAccess::Read),
190 ("tool.policies", OperationAccess::Read),
191 ("tool.policy", OperationAccess::Write),
192 ("tool.policy_delete", OperationAccess::Write),
193 ("tool.register", OperationAccess::Write),
194 ("tool.request", OperationAccess::Write),
195 ("tool.requests", OperationAccess::Read),
196 ("tool.revoke", OperationAccess::Write),
197 ("tool.suggest", OperationAccess::Read),
198 ("traverse", OperationAccess::Read),
199 ("update", OperationAccess::Write),
200 ("verbs", OperationAccess::Read),
201 ("web.extract", OperationAccess::Write),
202 ("web.fetch", OperationAccess::Write),
203 ("web.ingest", OperationAccess::Write),
204 ("web.refresh", OperationAccess::Write),
205 ("web.search", OperationAccess::Write),
206 ("whoami", OperationAccess::Read),
207 ("withdraw", OperationAccess::Write),
208];
209
210pub fn classify_operation(verb: &str) -> Option<OperationAccess> {
213 CLASSIFIED_OPERATIONS
214 .binary_search_by_key(&verb, |(name, _)| *name)
215 .ok()
216 .map(|index| CLASSIFIED_OPERATIONS[index].1)
217}