summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSystem user; portage <portage@alpha.trunkmasters.com>2026-09-11 02:06:27 -0500
committerSystem user; portage <portage@alpha.trunkmasters.com>2026-09-11 02:06:27 -0500
commita2f40af73811341882cc8b93cfe218c7c931a9ea (patch)
tree67d88c76bff2defc0be3edd06f79b39e972b837c
parentfc39c62a8944e95c0ecccfc9781763822b23e66c (diff)
downloadsrcux-a2f40af73811341882cc8b93cfe218c7c931a9ea.tar.gz
srcux-a2f40af73811341882cc8b93cfe218c7c931a9ea.tar.xz
srcux-a2f40af73811341882cc8b93cfe218c7c931a9ea.zip
fix(smith): honor existing SSH policy
Release 0.1.1 without forcing StrictHostKeyChecking. Existing SSH configuration controls server trust; temporary mTLS enrollment stays unchanged. Report SSH failures before propagating frame EOF errors. Validated with 11 integration tests, including real isolated OpenSSH under permissive and strict policies, and fresh live startup on alpha.
-rw-r--r--app-misc/smith/Manifest1
-rw-r--r--app-misc/smith/smith-0.1.1.ebuild336
2 files changed, 337 insertions, 0 deletions
diff --git a/app-misc/smith/Manifest b/app-misc/smith/Manifest
index 62f160abb661..e8e1c5cf7f59 100644
--- a/app-misc/smith/Manifest
+++ b/app-misc/smith/Manifest
@@ -176,6 +176,7 @@ DIST signal-hook-registry-1.4.8.crate 21668 BLAKE2B abaed3ca8f07e1631aecaa4bfcc9
DIST slab-0.4.12.crate 19080 BLAKE2B 785a1b899fe01c8825f24d90b0b0bb31bded234810f59c71b7e44221387de33fcae220a7d0745f59f79c267673b76e7c8d9fa4c0dcbf8fc5d68be6562018d49b SHA512 cf7c971b99b043d8bc102732a109717cbbec114160e4f7cc4009c66739177778623403c33d6a32efd1620e0ac7b8743c36e0e5563082af7f92f1e4caeceea0d9
DIST smallvec-1.16.0.crate 32647 BLAKE2B 6900b277f34cd8faab7125b463fd0fd111ba403193fc9d6b54e21b66297bb20b3c00adc68084a468f44c4e28c0480c02483e3537123df5463210ecb0557df5bc SHA512 75126a2cb8ff0501c0a56db6410c53f03c513633febe70ce69f1c9055a2df1f88984a0f4753b92afba918408eae8283a4f16bcb903f51666250da7499c614d20
DIST smith-0.1.0.tar.xz 68200 BLAKE2B 757fdccd0999b3701db928b28abd48afb6577cb961a55f4633fab245a83a8d0e41114502b6aaa2608a7861bcda983c70a04eee7f2685b883b6e3e3671c9fb47c SHA512 5533b59403e0be4af7b95c9423b3d96393de78193e25ed5ee4c0c2c68f9e02451ebfea59b0393e7ac8e64e340c4ca5db4f2f784f5f3b230880657cdd0d6e71af
+DIST smith-0.1.1.tar.xz 68828 BLAKE2B 7f39c5570a0c6dcd3152ee6767b72d745fda08aa659356e7005046c6ec5fea433ed9f802b5a9aa40de5d9f30122257129cfca7501e6fc21e297cdce6d7f17d83 SHA512 46010d79e7a603003ae251e77927181cc0d624729fda1ef4a279dd7de52a364440a77a8dea297e165de56ca5ee491ebdb1093b747080b5c3417a5e809bfaf7bd
DIST socket2-0.6.5.crate 60031 BLAKE2B 5e5e380338615d05d0a42901a05a5323e127919560cb6b5c0ca72645219d40f915724912f103ad4fcdd4a7b5653cf8151c9fee1904427775f19d4e617fbe947d SHA512 eb72b2cb7683cfde4ddc4f6efd64f859738ede22120d40b4498e7ec05bf53429f2c13612a33d8e69089122ede3382eb731d816d40beb0619fcf416dce7cb6575
DIST stable_deref_trait-1.2.1.crate 8186 BLAKE2B 6408959d169d1228c1b0802ef31c850206405f8259168f169aabc91f63683dcdf347ff0e74fb3535ab05d7642889dd2637afbdea389b43b0925e0d6cf441ed67 SHA512 630721d3f8e9f3290efc250c42aba13e2325839e62167a2a611618c18c6aa58c08a53622db61a9aa920284570626b98df26b3c28009cf45b6ce1ec134b9c9f5c
DIST strsim-0.11.1.crate 14266 BLAKE2B 252a9ede4241b165525486aa8855dece37af77f5b28e0e1858c4a5d2047db9fa958328db10989234aad69463ab51b2303785ec056c63ea8c95bf95e111ddabf2 SHA512 0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c
diff --git a/app-misc/smith/smith-0.1.1.ebuild b/app-misc/smith/smith-0.1.1.ebuild
new file mode 100644
index 000000000000..18eb41091d8c
--- /dev/null
+++ b/app-misc/smith/smith-0.1.1.ebuild
@@ -0,0 +1,336 @@
+# Copyright 2026 BaldEagleOS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Generated from the release Cargo.lock, including test and target dependencies.
+CRATES="
+ ahash@0.8.12
+ aho-corasick@1.1.5
+ allocator-api2@0.2.21
+ ambient-authority@0.0.2
+ anstream@1.0.0
+ anstyle@1.0.14
+ anstyle-parse@1.0.0
+ anstyle-query@1.1.5
+ anstyle-wincon@3.0.11
+ anyhow@1.0.104
+ atomic-waker@1.1.2
+ autocfg@1.5.1
+ axum@0.8.9
+ axum-core@0.5.6
+ base64@0.22.1
+ bit-set@0.8.0
+ bit-vec@0.8.0
+ bitflags@2.13.2
+ block-buffer@0.10.4
+ borrow-or-share@0.2.4
+ bumpalo@3.20.3
+ bytecount@0.6.9
+ bytes@1.12.1
+ cap-primitives@3.4.6
+ cap-std@3.4.6
+ cc@1.4.5
+ cfg-if@1.0.4
+ cfg_aliases@0.2.2
+ chacha20@0.10.2
+ clap@4.6.6
+ clap_builder@4.6.6
+ clap_derive@4.6.4
+ clap_lex@1.1.0
+ colorchoice@1.0.5
+ cpufeatures@0.2.17
+ cpufeatures@0.3.1
+ crypto-common@0.1.7
+ data-encoding@2.11.1
+ digest@0.10.7
+ displaydoc@0.2.7
+ email_address@0.2.9
+ equivalent@1.0.2
+ errno@0.3.14
+ fallible-iterator@0.3.0
+ fallible-streaming-iterator@0.1.9
+ fancy-regex@0.19.1
+ fastrand@2.5.0
+ find-msvc-tools@0.1.12
+ fluent-uri@0.4.1
+ foldhash@0.1.5
+ foldhash@0.2.0
+ foreign-types@0.3.2
+ foreign-types-shared@0.1.1
+ form_urlencoded@1.2.2
+ fraction@0.17.0
+ fs-set-times@0.20.3
+ futures-channel@0.3.34
+ futures-core@0.3.34
+ futures-io@0.3.34
+ futures-macro@0.3.34
+ futures-sink@0.3.34
+ futures-task@0.3.34
+ futures-util@0.3.34
+ generic-array@0.14.7
+ getrandom@0.2.17
+ getrandom@0.3.4
+ getrandom@0.4.3
+ hashbrown@0.15.5
+ hashbrown@0.17.1
+ hashlink@0.10.0
+ heck@0.5.0
+ http@1.5.0
+ http-body@1.1.0
+ http-body-util@0.1.5
+ httparse@1.10.1
+ httpdate@1.0.3
+ hyper@1.11.1
+ hyper-rustls@0.27.9
+ hyper-util@0.1.20
+ icu_collections@2.3.0
+ icu_locale_core@2.3.0
+ icu_normalizer@2.3.0
+ icu_normalizer_data@2.3.0
+ icu_properties@2.3.0
+ icu_properties_data@2.3.0
+ icu_provider@2.3.1
+ idna@1.1.0
+ idna_adapter@1.2.2
+ indexmap@2.14.2
+ io-extras@0.18.4
+ io-lifetimes@2.0.4
+ ipnet@2.12.2
+ is_terminal_polyfill@1.70.2
+ itoa@1.0.18
+ js-sys@0.3.105
+ jsonschema@0.54.0
+ jsonschema-regex@0.54.0
+ jsonschema-value@0.54.0
+ libc@0.2.189
+ libsqlite3-sys@0.35.0
+ linux-raw-sys@0.12.1
+ litemap@0.8.3
+ lock_api@0.4.14
+ log@0.4.34
+ lru-slab@0.1.2
+ matchit@0.8.4
+ maybe-owned@0.3.4
+ memchr@2.8.3
+ micromap@0.3.0
+ mime@0.3.17
+ mio@1.2.3
+ num@0.4.3
+ num-bigint@0.4.8
+ num-cmp@0.1.0
+ num-complex@0.4.6
+ num-integer@0.1.47
+ num-iter@0.1.46
+ num-rational@0.4.2
+ num-traits@0.2.19
+ once_cell@1.21.4
+ once_cell_polyfill@1.70.2
+ openssl@0.10.81
+ openssl-macros@0.1.1
+ openssl-sys@0.9.117
+ outref@0.5.2
+ parking_lot@0.12.5
+ parking_lot_core@0.9.12
+ percent-encoding@2.3.2
+ pin-project-lite@0.2.17
+ pkg-config@0.3.34
+ potential_utf@0.1.6
+ ppv-lite86@0.2.21
+ proc-macro2@1.0.107
+ quinn@0.11.11
+ quinn-proto@0.11.17
+ quinn-udp@0.5.15
+ quote@1.0.47
+ r-efi@5.3.0
+ r-efi@6.0.0
+ rand@0.10.2
+ rand@0.9.5
+ rand_chacha@0.9.0
+ rand_core@0.10.1
+ rand_core@0.9.5
+ rand_pcg@0.10.2
+ redox_syscall@0.5.18
+ ref-cast@1.0.27
+ ref-cast-impl@1.0.27
+ referencing@0.54.0
+ regex@1.13.1
+ regex-automata@0.4.18
+ regex-syntax@0.8.11
+ reqwest@0.12.28
+ ring@0.17.14
+ rusqlite@0.37.0
+ rustc-hash@2.1.3
+ rustix@1.1.4
+ rustix-linux-procfs@0.1.1
+ rustls@0.23.44
+ rustls-pemfile@2.2.0
+ rustls-pki-types@1.15.1
+ rustls-webpki@0.103.15
+ rustversion@1.0.23
+ ryu@1.0.23
+ scopeguard@1.2.0
+ serde@1.0.229
+ serde_core@1.0.229
+ serde_derive@1.0.229
+ serde_json@1.0.151
+ serde_path_to_error@0.1.20
+ serde_spanned@1.1.1
+ serde_urlencoded@0.7.1
+ sha2@0.10.9
+ shlex@2.0.1
+ signal-hook-registry@1.4.8
+ slab@0.4.12
+ smallvec@1.16.0
+ socket2@0.6.5
+ stable_deref_trait@1.2.1
+ strsim@0.11.1
+ strum@0.28.0
+ strum_macros@0.28.0
+ subtle@2.6.1
+ syn@2.0.119
+ syn@3.0.5
+ sync_wrapper@1.0.2
+ synstructure@0.13.2
+ tempfile@3.27.0
+ thiserror@2.0.20
+ thiserror-impl@2.0.20
+ tinystr@0.8.4
+ tinyvec@1.13.2
+ tinyvec_macros@0.1.1
+ tokio@1.53.1
+ tokio-macros@2.7.2
+ tokio-rustls@0.26.5
+ tokio-util@0.7.19
+ toml@0.9.12+spec-1.1.0
+ toml_datetime@0.7.5+spec-1.1.0
+ toml_parser@1.1.3+spec-1.1.0
+ toml_writer@1.1.2+spec-1.1.0
+ tower@0.5.3
+ tower-http@0.6.11
+ tower-layer@0.3.3
+ tower-service@0.3.3
+ tracing@0.1.44
+ tracing-core@0.1.36
+ try-lock@0.2.5
+ typenum@1.20.1
+ ulid@1.2.1
+ unicode-general-category@1.1.0
+ unicode-ident@1.0.24
+ untrusted@0.9.0
+ url@2.5.8
+ utf8_iter@1.0.4
+ utf8parse@0.2.2
+ uuid@1.26.1
+ uuid-simd@0.8.0
+ vcpkg@0.2.15
+ version_check@0.9.5
+ vsimd@0.8.0
+ want@0.3.1
+ wasi@0.11.1+wasi-snapshot-preview1
+ wasip2@1.0.4+wasi-0.2.12
+ wasm-bindgen@0.2.128
+ wasm-bindgen-futures@0.4.78
+ wasm-bindgen-macro@0.2.128
+ wasm-bindgen-macro-support@0.2.128
+ wasm-bindgen-shared@0.2.128
+ wasm-streams@0.4.2
+ web-sys@0.3.105
+ web-time@1.1.0
+ webpki-roots@1.0.9
+ windows-link@0.2.1
+ windows-sys@0.52.0
+ windows-sys@0.59.0
+ windows-sys@0.61.2
+ windows-targets@0.52.6
+ windows_aarch64_gnullvm@0.52.6
+ windows_aarch64_msvc@0.52.6
+ windows_i686_gnu@0.52.6
+ windows_i686_gnullvm@0.52.6
+ windows_i686_msvc@0.52.6
+ windows_x86_64_gnu@0.52.6
+ windows_x86_64_gnullvm@0.52.6
+ windows_x86_64_msvc@0.52.6
+ winnow@0.7.15
+ winnow@1.0.4
+ winx@0.36.4
+ wit-bindgen@0.57.1
+ writeable@0.6.4
+ yoke@0.8.3
+ yoke-derive@0.8.2
+ zerocopy@0.8.57
+ zerocopy-derive@0.8.57
+ zerofrom@0.1.8
+ zerofrom-derive@0.1.7
+ zeroize@1.9.0
+ zerotrie@0.2.5
+ zerovec@0.11.8
+ zerovec-derive@0.11.6
+ zmij@1.0.23
+"
+RUST_MIN_VER="1.88.0"
+
+inherit cargo
+
+DESCRIPTION="Agent Smith conversational CLI with local tools and central AIRouter sessions"
+HOMEPAGE="https://trunkmasters.com"
+SRC_URI="
+ https://distfiles.baldeagleos.com/${P}.tar.xz
+ ${CARGO_CRATE_URIS}
+"
+
+# Includes the statically linked Rust dependencies.
+LICENSE="Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD CDLA-Permissive-2.0 ISC MIT MIT-0 Unicode-3.0 ZLIB"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="sandbox test"
+RESTRICT="!test? ( test )"
+# Integration fixtures bind loopback sockets; they do not contact live services.
+PROPERTIES="test? ( test_network )"
+
+DEPEND="
+ dev-db/sqlite:3
+ dev-libs/openssl:0=
+"
+RDEPEND="
+ ${DEPEND}
+ net-misc/openssh
+ sandbox? ( sys-apps/bubblewrap )
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( app-shells/bash sys-apps/coreutils )
+"
+
+src_configure() {
+ cargo_src_configure --frozen
+}
+
+src_compile() {
+ cargo_src_compile --bin smith
+}
+
+src_test() {
+ # The isolated sshd fixture needs root; bubblewrap namespace fixtures
+ # cannot run reliably inside Portage's own sandbox. Run these separately
+ # when qualifying upstream, along with the opt-in live rotation test.
+ local CARGO_SKIP_TESTS=(
+ openssh_bootstrap_and_installed_shape_cli
+ mtls_local_tools_and_central_resume_use_real_agent_state_machine
+ workspace_escape_conflicts_and_uncertain_operations_are_rejected
+ )
+ cargo_src_test --test end_to_end
+}
+
+src_install() {
+ dobin "$(cargo_target_dir)/smith"
+ dodoc README.md
+ dodoc config/smith.example.toml
+}
+
+pkg_postinst() {
+ elog "Run smith to start a conversation in the current directory."
+ elog "It uses your existing SSH access to alpha.trunkmasters.com."
+ elog "It follows your existing SSH identity, port and host-key settings."
+ elog "Optional settings: ~/.config/smith/smith.toml (example in /usr/share/doc/${PF})."
+}