@wlfi-agent/cli 1.4.15 → 1.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cargo.lock +22 -20
- package/Cargo.toml +2 -2
- package/README.md +10 -2
- package/crates/vault-cli-admin/src/main.rs +21 -2
- package/crates/vault-cli-admin/src/tui.rs +634 -129
- package/crates/vault-cli-daemon/Cargo.toml +1 -0
- package/crates/vault-cli-daemon/src/bin/wlfi-agent-system-keychain.rs +122 -8
- package/crates/vault-cli-daemon/src/main.rs +24 -4
- package/crates/vault-cli-daemon/src/relay_sync.rs +155 -35
- package/crates/vault-cli-daemon/tests/system_keychain_helper_acl.rs +23 -18
- package/crates/vault-daemon/src/daemon_parts/api_impl_and_utils.rs +6 -0
- package/crates/vault-daemon/src/daemon_parts/types_api_rpc.rs +6 -0
- package/crates/vault-daemon/src/tests.rs +2 -2
- package/crates/vault-daemon/src/tests_parts/part4.rs +110 -0
- package/crates/vault-transport-unix/src/lib.rs +22 -3
- package/crates/vault-transport-xpc/src/lib.rs +20 -2
- package/dist/cli.cjs +20842 -25552
- package/dist/cli.cjs.map +1 -1
- package/package.json +5 -3
- package/packages/cache/.turbo/turbo-build.log +53 -52
- package/packages/cache/coverage/base.css +224 -0
- package/packages/cache/coverage/block-navigation.js +87 -0
- package/packages/cache/coverage/clover.xml +585 -0
- package/packages/cache/coverage/coverage-final.json +5 -0
- package/packages/cache/coverage/favicon.png +0 -0
- package/packages/cache/coverage/index.html +161 -0
- package/packages/cache/coverage/prettify.css +1 -0
- package/packages/cache/coverage/prettify.js +2 -0
- package/packages/cache/coverage/sort-arrow-sprite.png +0 -0
- package/packages/cache/coverage/sorter.js +210 -0
- package/packages/cache/coverage/src/client/index.html +116 -0
- package/packages/cache/coverage/src/client/index.ts.html +253 -0
- package/packages/cache/coverage/src/errors/index.html +116 -0
- package/packages/cache/coverage/src/errors/index.ts.html +244 -0
- package/packages/cache/coverage/src/index.html +116 -0
- package/packages/cache/coverage/src/index.ts.html +94 -0
- package/packages/cache/coverage/src/service/index.html +116 -0
- package/packages/cache/coverage/src/service/index.ts.html +2212 -0
- package/packages/cache/dist/{chunk-ALQ6H7KG.cjs → chunk-QF4XKEIA.cjs} +189 -45
- package/packages/cache/dist/chunk-QF4XKEIA.cjs.map +1 -0
- package/packages/cache/dist/{chunk-FGJEEF5N.js → chunk-QNK6GOTI.js} +182 -38
- package/packages/cache/dist/chunk-QNK6GOTI.js.map +1 -0
- package/packages/cache/dist/index.cjs +2 -2
- package/packages/cache/dist/index.js +1 -1
- package/packages/cache/dist/service/index.cjs +2 -2
- package/packages/cache/dist/service/index.d.cts +2 -0
- package/packages/cache/dist/service/index.d.ts +2 -0
- package/packages/cache/dist/service/index.js +1 -1
- package/packages/cache/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/packages/cache/src/service/index.test.ts +575 -0
- package/packages/cache/src/service/index.ts +234 -51
- package/packages/config/.turbo/turbo-build.log +2 -2
- package/packages/config/node_modules/.bin/tsc +2 -2
- package/packages/config/node_modules/.bin/tsserver +2 -2
- package/packages/config/node_modules/.bin/tsup +2 -2
- package/packages/config/node_modules/.bin/tsup-node +2 -2
- package/packages/rpc/.turbo/turbo-build.log +11 -11
- package/packages/rpc/node_modules/.bin/tsc +2 -2
- package/packages/rpc/node_modules/.bin/tsserver +2 -2
- package/packages/rpc/node_modules/.bin/tsup +2 -2
- package/packages/rpc/node_modules/.bin/tsup-node +2 -2
- package/packages/ui/.turbo/turbo-build.log +13 -13
- package/packages/ui/dist/components/badge.d.ts +1 -1
- package/packages/ui/dist/components/button.d.ts +1 -1
- package/scripts/install-rust-binaries.mjs +229 -58
- package/src/cli.ts +51 -39
- package/src/lib/admin-passthrough.js +1 -0
- package/src/lib/admin-reset.js +1 -0
- package/src/lib/admin-reset.ts +26 -16
- package/src/lib/admin-setup.js +1 -0
- package/src/lib/admin-setup.ts +32 -20
- package/src/lib/agent-auth-revoke.js +1 -0
- package/src/lib/agent-auth-rotate.js +1 -0
- package/src/lib/agent-auth.js +1 -0
- package/src/lib/config-mutation.js +1 -0
- package/src/lib/launchd-assets.js +1 -0
- package/src/lib/launchd-assets.ts +29 -0
- package/src/lib/local-admin-access.js +1 -0
- package/src/lib/rust.ts +1 -1
- package/src/lib/status-repair-cli.js +1 -0
- package/packages/cache/dist/chunk-ALQ6H7KG.cjs.map +0 -1
- package/packages/cache/dist/chunk-FGJEEF5N.js.map +0 -1
package/Cargo.lock
CHANGED
|
@@ -823,9 +823,9 @@ dependencies = [
|
|
|
823
823
|
|
|
824
824
|
[[package]]
|
|
825
825
|
name = "darling"
|
|
826
|
-
version = "0.
|
|
826
|
+
version = "0.20.11"
|
|
827
827
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
828
|
-
checksum = "
|
|
828
|
+
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
|
|
829
829
|
dependencies = [
|
|
830
830
|
"darling_core",
|
|
831
831
|
"darling_macro",
|
|
@@ -833,10 +833,11 @@ dependencies = [
|
|
|
833
833
|
|
|
834
834
|
[[package]]
|
|
835
835
|
name = "darling_core"
|
|
836
|
-
version = "0.
|
|
836
|
+
version = "0.20.11"
|
|
837
837
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
838
|
-
checksum = "
|
|
838
|
+
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
|
|
839
839
|
dependencies = [
|
|
840
|
+
"fnv",
|
|
840
841
|
"ident_case",
|
|
841
842
|
"proc-macro2",
|
|
842
843
|
"quote",
|
|
@@ -846,9 +847,9 @@ dependencies = [
|
|
|
846
847
|
|
|
847
848
|
[[package]]
|
|
848
849
|
name = "darling_macro"
|
|
849
|
-
version = "0.
|
|
850
|
+
version = "0.20.11"
|
|
850
851
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
851
|
-
checksum = "
|
|
852
|
+
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
|
852
853
|
dependencies = [
|
|
853
854
|
"darling_core",
|
|
854
855
|
"quote",
|
|
@@ -867,12 +868,12 @@ dependencies = [
|
|
|
867
868
|
|
|
868
869
|
[[package]]
|
|
869
870
|
name = "deranged"
|
|
870
|
-
version = "0.
|
|
871
|
+
version = "0.3.11"
|
|
871
872
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
872
|
-
checksum = "
|
|
873
|
+
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
|
|
873
874
|
dependencies = [
|
|
874
875
|
"powerfmt",
|
|
875
|
-
"
|
|
876
|
+
"serde",
|
|
876
877
|
]
|
|
877
878
|
|
|
878
879
|
[[package]]
|
|
@@ -1523,9 +1524,9 @@ dependencies = [
|
|
|
1523
1524
|
|
|
1524
1525
|
[[package]]
|
|
1525
1526
|
name = "instability"
|
|
1526
|
-
version = "0.3.
|
|
1527
|
+
version = "0.3.10"
|
|
1527
1528
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1528
|
-
checksum = "
|
|
1529
|
+
checksum = "6778b0196eefee7df739db78758e5cf9b37412268bfa5650bfeed028aed20d9c"
|
|
1529
1530
|
dependencies = [
|
|
1530
1531
|
"darling",
|
|
1531
1532
|
"indoc",
|
|
@@ -1752,9 +1753,9 @@ dependencies = [
|
|
|
1752
1753
|
|
|
1753
1754
|
[[package]]
|
|
1754
1755
|
name = "num-conv"
|
|
1755
|
-
version = "0.
|
|
1756
|
+
version = "0.1.0"
|
|
1756
1757
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1757
|
-
checksum = "
|
|
1758
|
+
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
|
|
1758
1759
|
|
|
1759
1760
|
[[package]]
|
|
1760
1761
|
name = "num-integer"
|
|
@@ -2822,30 +2823,30 @@ dependencies = [
|
|
|
2822
2823
|
|
|
2823
2824
|
[[package]]
|
|
2824
2825
|
name = "time"
|
|
2825
|
-
version = "0.3.
|
|
2826
|
+
version = "0.3.36"
|
|
2826
2827
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2827
|
-
checksum = "
|
|
2828
|
+
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
|
|
2828
2829
|
dependencies = [
|
|
2829
2830
|
"deranged",
|
|
2830
2831
|
"itoa",
|
|
2831
2832
|
"num-conv",
|
|
2832
2833
|
"powerfmt",
|
|
2833
|
-
"
|
|
2834
|
+
"serde",
|
|
2834
2835
|
"time-core",
|
|
2835
2836
|
"time-macros",
|
|
2836
2837
|
]
|
|
2837
2838
|
|
|
2838
2839
|
[[package]]
|
|
2839
2840
|
name = "time-core"
|
|
2840
|
-
version = "0.1.
|
|
2841
|
+
version = "0.1.2"
|
|
2841
2842
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2842
|
-
checksum = "
|
|
2843
|
+
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
|
|
2843
2844
|
|
|
2844
2845
|
[[package]]
|
|
2845
2846
|
name = "time-macros"
|
|
2846
|
-
version = "0.2.
|
|
2847
|
+
version = "0.2.18"
|
|
2847
2848
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2848
|
-
checksum = "
|
|
2849
|
+
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
|
|
2849
2850
|
dependencies = [
|
|
2850
2851
|
"num-conv",
|
|
2851
2852
|
"time-core",
|
|
@@ -3799,6 +3800,7 @@ version = "0.1.0"
|
|
|
3799
3800
|
dependencies = [
|
|
3800
3801
|
"anyhow",
|
|
3801
3802
|
"clap",
|
|
3803
|
+
"core-foundation",
|
|
3802
3804
|
"libc",
|
|
3803
3805
|
"nix",
|
|
3804
3806
|
"reqwest",
|
package/Cargo.toml
CHANGED
|
@@ -17,7 +17,7 @@ resolver = "2"
|
|
|
17
17
|
edition = "2021"
|
|
18
18
|
license = "MIT"
|
|
19
19
|
version = "0.1.0"
|
|
20
|
-
authors = ["WLFI
|
|
20
|
+
authors = ["WLFI Agentic SDK Team"]
|
|
21
21
|
|
|
22
22
|
[workspace.dependencies]
|
|
23
23
|
alloy-primitives = "0.8"
|
|
@@ -43,7 +43,7 @@ serde = { version = "1", features = ["derive"] }
|
|
|
43
43
|
serde_json = "1"
|
|
44
44
|
sha2 = "0.10"
|
|
45
45
|
thiserror = "2"
|
|
46
|
-
time = { version = "0.3", features = ["macros", "serde", "formatting", "parsing"] }
|
|
46
|
+
time = { version = "=0.3.36", features = ["macros", "serde", "formatting", "parsing"] }
|
|
47
47
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync", "net", "io-util", "time", "signal"] }
|
|
48
48
|
uuid = { version = "1", features = ["serde", "v4"] }
|
|
49
49
|
zeroize = "1"
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# WLFI
|
|
1
|
+
# WLFI Agentic SDK
|
|
2
2
|
|
|
3
|
-
WLFI
|
|
3
|
+
WLFI Agentic SDK is a root-managed local signing daemon with policy enforcement, a single `wlfi-agent` CLI, and an optional relay + web approval flow.
|
|
4
4
|
|
|
5
5
|
The main user path is:
|
|
6
6
|
|
|
@@ -43,12 +43,20 @@ User-facing examples below avoid shell env vars on purpose. Prefer prompts, conf
|
|
|
43
43
|
|
|
44
44
|
## Install
|
|
45
45
|
|
|
46
|
+
### Prerequisites
|
|
47
|
+
|
|
48
|
+
- macOS
|
|
49
|
+
- Rust toolchain on `PATH` (`cargo`, `rustc`) with Rust `1.87.0` or newer
|
|
50
|
+
- Xcode Command Line Tools (`xcode-select --install`)
|
|
51
|
+
|
|
46
52
|
### Install from npm
|
|
47
53
|
|
|
48
54
|
```bash
|
|
49
55
|
npm i -g @wlfi-agent/cli
|
|
50
56
|
```
|
|
51
57
|
|
|
58
|
+
`npm i -g @wlfi-agent/cli` builds the local Rust runtime during `postinstall`. If the prerequisites above are already installed, this is the normal one-step install path. If `cargo` or the macOS Command Line Tools are missing, installation fails immediately and tells you how to install the missing prerequisite before retrying.
|
|
59
|
+
|
|
52
60
|
### Work from this repo
|
|
53
61
|
|
|
54
62
|
```bash
|
|
@@ -813,16 +813,25 @@ async fn main() -> Result<()> {
|
|
|
813
813
|
if let Some(output) = tui::run_bootstrap_tui(
|
|
814
814
|
&shared_config.config,
|
|
815
815
|
args.print_agent_auth_token,
|
|
816
|
-
|params| {
|
|
816
|
+
|params, on_status| {
|
|
817
|
+
let mut status_error = None;
|
|
817
818
|
tokio::task::block_in_place(|| {
|
|
818
819
|
tokio::runtime::Handle::current().block_on(execute_bootstrap(
|
|
819
820
|
daemon_api.clone(),
|
|
820
821
|
&vault_password,
|
|
821
822
|
&state_file_display,
|
|
822
823
|
params,
|
|
823
|
-
|
|
|
824
|
+
|message| {
|
|
825
|
+
if status_error.is_none() {
|
|
826
|
+
status_error = on_status(message).err();
|
|
827
|
+
}
|
|
828
|
+
},
|
|
824
829
|
))
|
|
825
830
|
})
|
|
831
|
+
.and_then(|output| match status_error {
|
|
832
|
+
Some(err) => Err(err),
|
|
833
|
+
None => Ok(output),
|
|
834
|
+
})
|
|
826
835
|
},
|
|
827
836
|
)? {
|
|
828
837
|
print_status("bootstrap complete", output_format, cli.quiet);
|
|
@@ -3965,6 +3974,7 @@ mod tests {
|
|
|
3965
3974
|
#[test]
|
|
3966
3975
|
#[cfg(unix)]
|
|
3967
3976
|
fn resolve_daemon_socket_path_rejects_non_root_owned_socket() {
|
|
3977
|
+
use std::os::fd::AsRawFd;
|
|
3968
3978
|
use std::os::unix::fs::PermissionsExt;
|
|
3969
3979
|
use std::os::unix::net::UnixListener;
|
|
3970
3980
|
|
|
@@ -3979,6 +3989,15 @@ mod tests {
|
|
|
3979
3989
|
|
|
3980
3990
|
let socket_path = root.join("daemon.sock");
|
|
3981
3991
|
let listener = UnixListener::bind(&socket_path).expect("bind socket");
|
|
3992
|
+
if unsafe { libc::geteuid() } == 0 {
|
|
3993
|
+
let rc = unsafe { libc::fchown(listener.as_raw_fd(), 1, libc::gid_t::MAX) };
|
|
3994
|
+
assert_eq!(
|
|
3995
|
+
rc,
|
|
3996
|
+
0,
|
|
3997
|
+
"must set non-root owner for root-mode test: {}",
|
|
3998
|
+
std::io::Error::last_os_error()
|
|
3999
|
+
);
|
|
4000
|
+
}
|
|
3982
4001
|
|
|
3983
4002
|
let err = resolve_daemon_socket_path(Some(socket_path.clone())).expect_err("must reject");
|
|
3984
4003
|
assert!(err.to_string().contains("must be owned by root"));
|