+61
Cargo.toml
+61
Cargo.toml
···
+29
README.md
+29
README.md
···+Status: project scaffold with CLI, config, API and git crates. Commands are stubs pending endpoint wiring.
+24
crates/tangled-api/Cargo.toml
+24
crates/tangled-api/Cargo.toml
···
+39
crates/tangled-api/src/client.rs
+39
crates/tangled-api/src/client.rs
···+pub async fn login_with_password(&self, _handle: &str, _password: &str, _pds: &str) -> Result<Session> {+pub async fn list_repos(&self, _user: Option<&str>, _knot: Option<&str>, _starred: bool) -> Result<Vec<Repository>> {
+22
crates/tangled-cli/Cargo.toml
+22
crates/tangled-cli/Cargo.toml
···
+368
crates/tangled-cli/src/cli.rs
+368
crates/tangled-cli/src/cli.rs
···
+50
crates/tangled-cli/src/commands/auth.rs
+50
crates/tangled-cli/src/commands/auth.rs
···
+41
crates/tangled-cli/src/commands/issue.rs
+41
crates/tangled-cli/src/commands/issue.rs
···+use crate::cli::{Cli, IssueCommand, IssueListArgs, IssueCreateArgs, IssueShowArgs, IssueEditArgs, IssueCommentArgs};
+38
crates/tangled-cli/src/commands/knot.rs
+38
crates/tangled-cli/src/commands/knot.rs
···+println!("Knot add (stub) url={} did={:?} name={:?} verify={}", args.url, args.did, args.name, args.verify);
+28
crates/tangled-cli/src/commands/mod.rs
+28
crates/tangled-cli/src/commands/mod.rs
···
+42
crates/tangled-cli/src/commands/pr.rs
+42
crates/tangled-cli/src/commands/pr.rs
···+use crate::cli::{Cli, PrCommand, PrCreateArgs, PrListArgs, PrShowArgs, PrReviewArgs, PrMergeArgs};+println!("PR show (stub) id={} diff={} comments={} checks={}", args.id, args.diff, args.comments, args.checks);
+57
crates/tangled-cli/src/commands/repo.rs
+57
crates/tangled-cli/src/commands/repo.rs
···+use crate::cli::{Cli, RepoCommand, RepoCreateArgs, RepoInfoArgs, RepoListArgs, RepoCloneArgs, RepoDeleteArgs, RepoRefArgs};
+35
crates/tangled-cli/src/commands/spindle.rs
+35
crates/tangled-cli/src/commands/spindle.rs
···+use crate::cli::{Cli, SpindleCommand, SpindleListArgs, SpindleConfigArgs, SpindleRunArgs, SpindleLogsArgs};+println!("Spindle run (stub) repo={:?} branch={:?} wait={}", args.repo, args.branch, args.wait);+println!("Spindle logs (stub) job_id={} follow={} lines={:?}", args.job_id, args.follow, args.lines);
+12
crates/tangled-cli/src/main.rs
+12
crates/tangled-cli/src/main.rs
+16
crates/tangled-config/Cargo.toml
+16
crates/tangled-config/Cargo.toml
···
+83
crates/tangled-config/src/config.rs
+83
crates/tangled-config/src/config.rs
···
+30
crates/tangled-config/src/keychain.rs
+30
crates/tangled-config/src/keychain.rs
···
+4
crates/tangled-config/src/lib.rs
+4
crates/tangled-config/src/lib.rs
+62
crates/tangled-config/src/session.rs
+62
crates/tangled-config/src/session.rs
···+pub fn new(service: &str, account: &str) -> Self { Self { service: service.into(), account: account.into() } }
+11
crates/tangled-git/Cargo.toml
+11
crates/tangled-git/Cargo.toml
+8
crates/tangled-git/src/operations.rs
+8
crates/tangled-git/src/operations.rs
+18
docs/getting-started.md
+18
docs/getting-started.md
···+This project is a scaffold of a Tangled CLI in Rust. The commands are present as stubs and will be wired to XRPC endpoints iteratively.
+8
lexicons/sh.tangled/issue.json
+8
lexicons/sh.tangled/issue.json
+6
lexicons/sh.tangled/knot.json
+6
lexicons/sh.tangled/knot.json
+37
lexicons/sh.tangled/repo.json
+37
lexicons/sh.tangled/repo.json
···