pub(crate) mod board;
pub(crate) mod fleet;
pub(crate) mod records;
pub(crate) mod union;
pub(crate) use board::{boarded, column, figure};
pub(crate) use fleet::{attempt, diff, fleeting};
pub(crate) use records::{deposit, drilled, notch, own_row, recorded, step};
pub(crate) use union::{
clearing, commanded, finding, helped, hit, queued, trailed, trailing, waiting,
};
use crate::ui::{Login, Model, Tuning};
use super::{role, seated};
pub(crate) fn tuned() -> Model {
Model {
roles: Some(vec![role("worker"), role("compactor")]),
tuning: Some(Tuning::Rows),
..seated()
}
}
pub(crate) fn pinned() -> Model {
let mut model = seated();
for chunk in &mut model.roster {
for row in &mut chunk.walls {
row.pinned = Some(0);
}
}
model
}
pub(crate) fn provider(name: &str) -> crate::reply::providers::ProviderRow {
crate::reply::providers::ProviderRow {
name: name.to_owned(),
fact: "credential present".to_owned(),
blocked: None,
effort: true,
priority: true,
}
}
pub(crate) fn signing() -> Model {
let blocked = crate::reply::providers::ProviderRow {
fact: "no credential".to_owned(),
blocked: Some("no login flow".to_owned()),
effort: false,
priority: false,
..provider("otherhouse")
};
Model {
login: Some(Login {
following: Some("housevendor".to_owned()),
asking: Some("otherhouse".to_owned()),
}),
providers: Some(vec![provider("housevendor"), blocked]),
offered: Some(vec!["house-model-1".to_owned()]),
signin: Some(crate::reply::login::Signin {
lines: vec![
crate::reply::login::Line {
text: "open https://provider.invalid/auth".to_owned(),
err: true,
},
crate::reply::login::Line {
text: "waiting for the browser".to_owned(),
err: false,
},
],
outcome: None,
fallback: None,
}),
..seated()
}
}
pub(crate) fn machine(client: &str, present: bool) -> crate::reply::clients::ClientRow {
crate::reply::clients::ClientRow {
client: client.to_owned(),
present,
tools: vec![
crate::reply::clients::ToolRow {
name: "Bash".to_owned(),
description: "run a command".to_owned(),
subject_cwd: false,
},
crate::reply::clients::ToolRow {
name: "bash".to_owned(),
description: "run a command in the conversation's cwd".to_owned(),
subject_cwd: true,
},
],
}
}
pub(crate) fn machines() -> Model {
let bare = crate::reply::clients::ClientRow {
tools: Vec::new(),
..machine("phone", false)
};
Model {
listing: Some(crate::ui::Listing::Clients),
machines: Some(vec![machine("laptop", true), machine("desk", false), bare]),
..seated()
}
}
pub(crate) fn lineage(name: &str) -> crate::reply::lineages::Lineage {
crate::reply::lineages::Lineage {
name: name.to_owned(),
oid: "abcdef1234".to_owned(),
short_oid: "abcdef1".to_owned(),
committed: 1_700_000_000,
files: vec!["providers.yaml".to_owned(), "workflow.yaml".to_owned()],
}
}
pub(crate) fn configured() -> Model {
Model {
configuring: Some(crate::ui::Configuring {
at: Some(crate::verbs::Where::Brazen {
workspace: "home".to_owned(),
}),
..crate::ui::Configuring::default()
}),
lineages: Some(vec![lineage("default")]),
config: Some(crate::reply::config::Config {
text: "roles:\n worker:\n provider: gone\n".to_owned(),
settings: vec![
crate::reply::config::Setting {
entry: "worker".to_owned(),
name: "provider".to_owned(),
value: "gone".to_owned(),
help: "the provider row this role dispatches through".to_owned(),
fault: Some("brazen's table has no provider row `gone`".to_owned()),
control: crate::reply::config::Control {
kind: "provider".to_owned(),
min: None,
max: None,
},
},
crate::reply::config::Setting {
entry: "watcher".to_owned(),
name: "debounce_ms".to_owned(),
value: "100".to_owned(),
help: "how long a changed workspace coalesces".to_owned(),
fault: None,
control: crate::reply::config::Control {
kind: "number".to_owned(),
min: Some(0),
max: Some(10_000),
},
},
],
}),
..seated()
}
}