Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T04:13:51.759Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

provider_roster.rs

98 lines · 3.3 KB · rust
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
Served at tenant.openagents/omega Member data and write actions are omitted.