Skip to repository content98 lines · 3.3 KB · rust
tenant.openagents/omega
No repository description is available.
OpenAgents Git authority 2026-07-28T04:13:51.759Z Public web read
NIP-34 coordinate
30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omegaMaintainersHidden in public view
References2 branches · 1 tag
Read-only clone
git clone https://openagents.com/git/tenant.openagents/omega.gitBrowse files
provider_roster.rs
1use serde_json::Value;
2
3#[derive(Clone, Debug, PartialEq, Eq)]
4pub struct ProviderAccountRow {
5 pub account_ref: String,
6 pub provider: String,
7 pub label: String,
8 pub readiness: String,
9 pub quota: String,
10 pub lane: String,
11}
12
13pub fn parse_provider_accounts(value: &Value) -> Vec<ProviderAccountRow> {
14 value
15 .get("accounts")
16 .and_then(Value::as_array)
17 .into_iter()
18 .flatten()
19 .filter_map(|account| {
20 Some(ProviderAccountRow {
21 account_ref: public_token(account.get("accountRef")?.as_str()?)?,
22 provider: public_token(account.get("provider")?.as_str()?)?,
23 label: public_label(account.get("label")?.as_str()?)?,
24 readiness: public_token(account.get("state")?.as_str()?)?,
25 quota: public_token(account.get("quotaState")?.as_str()?)?,
26 lane: public_token(account.get("lane")?.as_str()?)?,
27 })
28 })
29 .collect()
30}
31
32fn public_token(value: &str) -> Option<String> {
33 let value = value.trim();
34 if value.is_empty()
35 || value.len() > 128
36 || !value
37 .chars()
38 .all(|character| character.is_ascii_alphanumeric() || ".:_-".contains(character))
39 {
40 return None;
41 }
42 Some(value.to_string())
43}
44
45fn public_label(value: &str) -> Option<String> {
46 let value = value.trim();
47 if value.is_empty()
48 || value.len() > 96
49 || value.contains("Bearer ")
50 || value.contains("/Users/")
51 || value.contains("auth.json")
52 {
53 return None;
54 }
55 Some(value.to_string())
56}
57
58#[cfg(test)]
59mod tests {
60 use super::*;
61 use serde_json::json;
62
63 #[test]
64 fn parses_multiple_accounts_and_lane_mapping() {
65 let rows = parse_provider_accounts(&json!({
66 "accounts": [
67 {"accountRef":"account.codex.1","provider":"openai","label":"ChatGPT Personal","state":"ready","quotaState":"available","lane":"codex-local"},
68 {"accountRef":"account.codex.2","provider":"openai","label":"ChatGPT Work","state":"busy","quotaState":"cooling","lane":"codex-local-2"},
69 {"accountRef":"account.claude.1","provider":"anthropic","label":"Claude","state":"ready","quotaState":"available","lane":"claude-local"}
70 ]
71 }));
72
73 assert_eq!(rows.len(), 3);
74 assert_eq!(rows[1].account_ref, "account.codex.2");
75 assert_eq!(rows[1].lane, "codex-local-2");
76 assert_eq!(rows[1].quota, "cooling");
77 }
78
79 #[test]
80 fn never_projects_credentials_or_private_paths() {
81 let rows = parse_provider_accounts(&json!({
82 "accounts": [
83 {"accountRef":"account.codex.1","provider":"openai","label":"Bearer secret","state":"ready","quotaState":"available","lane":"codex-local"},
84 {"accountRef":"account.codex.2","provider":"openai","label":"/Users/owner/.codex/auth.json","state":"ready","quotaState":"available","lane":"codex-local-2"}
85 ]
86 }));
87 assert!(rows.is_empty());
88 }
89
90 #[test]
91 fn a_lane_is_never_invented_as_an_account() {
92 let rows = parse_provider_accounts(&json!({
93 "lanes": [{"lane":"codex-local","state":"available","activeRuns":0}]
94 }));
95 assert!(rows.is_empty());
96 }
97}
98