forge: external forge accounts live in swarm bao; the agent fetches them itself
An operator now links an agent's external forge account (label, base URL, token) in the swarm UI. swarm-controller stores it at swarm/agents/<agent>/forge/<label>. There is no index: the store's listing of the agent's forge/ directory is the set of accounts. In the agent, hive-agent-forge-accounts (oneshot + 2-minute timer, as the agent user, under its own store certificate) lists swarm/agents/<agent>/forge/ with the `list` #4866 grants an agent on its own metadata subtree, reads each account, and writes <state>/forge-<label>-token and forge-<label>.json in the names and shape hive-forge -f already reads. An empty listing (a 404, which `bao kv list -format=json` answers with `{}` and an empty stderr) is zero accounts; a denial or an unreachable store fails the unit. It never deletes: files for labels not listed, including ones the hive wrote, stay as they are. Removed: the dashboard FORGES tab (credentials.js/html section and its CSS), hive-c0re's extra_forges.rs and its routes, priv_client's extra-forge calls, and hive-priv's WriteAgentExtraForgeAccount / DeleteAgentExtraForgeAccount with their helpers. The GITHUB tab and WriteAgentGithubToken stay. Also: persistence.md's matrix avatar note names the exit-75 restart on a changed account listing, not the dashboard, as what brings a linked account up. Refs #4348
This commit is contained in:
parent
97fb76ce99
commit
2c7e586f47
27 changed files with 815 additions and 748 deletions
|
|
@ -8,7 +8,7 @@
|
|||
//! cwd's git checkout > `HIVE_FORGE_REPO` (last-resort override, unset
|
||||
//! by default) > a hard error — see `client::Client::from_env`.
|
||||
//!
|
||||
//! The global `-f/--forge <label>` flag targets a dashboard-provisioned
|
||||
//! The global `-f/--forge <label>` flag targets a swarm-UI-linked
|
||||
//! external forge account instead: it reads `forge-<label>-token` +
|
||||
//! `forge-<label>.json` (base URL) from the state dir rather than
|
||||
//! `HIVE_FORGE_URL`/`forge-token`. See `client::Client::from_env`.
|
||||
|
|
@ -45,9 +45,8 @@ struct Cli {
|
|||
/// any verb.
|
||||
#[arg(short = 'r', long, global = true)]
|
||||
repo: Option<String>,
|
||||
/// Act as a dashboard-provisioned external forge account (by its
|
||||
/// FORGES-tab label) instead of the internal forge. Independent of
|
||||
/// `-r/--repo`.
|
||||
/// Act as an external forge account linked in the swarm UI (by its
|
||||
/// label) instead of the internal forge. Independent of `-r/--repo`.
|
||||
#[arg(short = 'f', long, global = true)]
|
||||
forge: Option<String>,
|
||||
/// Emit JSON instead of the default human-readable output (for verbs
|
||||
|
|
|
|||
Loading…
Reference in a new issue