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