Merge remote-tracking branch 'origin/main'

This commit is contained in:
Bryan Helmkamp 2026-04-19 11:48:15 -04:00
commit e9daf2db3a
No known key found for this signature in database
6 changed files with 76 additions and 44 deletions

View file

@ -66,6 +66,10 @@ jobs:
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev
- name: Install musl toolchain for x86_64-musl tests
if: matrix.target == 'x86_64-unknown-linux-musl'
run: sudo apt-get install -y musl-tools
- name: Set up Rust
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
with:
@ -85,11 +89,20 @@ jobs:
- uses: taiki-e/install-action@773334c0e05d7e699e4d78234494308223f3a2cf # nextest
- name: Test (x86_64-musl)
# nextest still shells through cargo test for this target, so
# build.rs C code needs an explicit musl compiler/linker.
if: matrix.target == 'x86_64-unknown-linux-musl'
env:
CC_x86_64_unknown_linux_musl: musl-gcc
CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER: musl-gcc
run: cargo nextest run --workspace --target ${{ matrix.target }} --release --status-level slow --profile ci
- name: Test
# aarch64-musl test runs have not been validated on the compile
# runner yet; shipping binary is exercised via Docker smoke tests.
# Re-enable after verifying the workspace passes on this target.
if: matrix.target != 'aarch64-unknown-linux-musl'
if: matrix.target != 'aarch64-unknown-linux-musl' && matrix.target != 'x86_64-unknown-linux-musl'
run: cargo nextest run --workspace --target ${{ matrix.target }} --release --status-level slow --profile ci
- name: Build (musl via cargo-zigbuild)

72
Cargo.lock generated
View file

@ -1473,7 +1473,7 @@ dependencies = [
[[package]]
name = "fabro-agent"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"async-trait",
@ -1509,7 +1509,7 @@ dependencies = [
[[package]]
name = "fabro-api"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"chrono",
"openapiv3",
@ -1527,7 +1527,7 @@ dependencies = [
[[package]]
name = "fabro-auth"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"async-trait",
@ -1548,7 +1548,7 @@ dependencies = [
[[package]]
name = "fabro-checkpoint"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"chrono",
"fabro-types",
@ -1562,7 +1562,7 @@ dependencies = [
[[package]]
name = "fabro-cli"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"assert_cmd",
@ -1647,7 +1647,7 @@ dependencies = [
[[package]]
name = "fabro-config"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"chrono",
@ -1668,7 +1668,7 @@ dependencies = [
[[package]]
name = "fabro-core"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"async-trait",
"fabro-types",
@ -1683,7 +1683,7 @@ dependencies = [
[[package]]
name = "fabro-devcontainer"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"fabro-http",
"fabro-util",
@ -1699,7 +1699,7 @@ dependencies = [
[[package]]
name = "fabro-github"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"base64",
"chrono",
@ -1715,7 +1715,7 @@ dependencies = [
[[package]]
name = "fabro-graphviz"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"fabro-types",
@ -1728,7 +1728,7 @@ dependencies = [
[[package]]
name = "fabro-hooks"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"async-trait",
"fabro-agent",
@ -1751,7 +1751,7 @@ dependencies = [
[[package]]
name = "fabro-http"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"http",
"reqwest 0.13.2",
@ -1760,7 +1760,7 @@ dependencies = [
[[package]]
name = "fabro-interview"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"async-trait",
"dialoguer",
@ -1774,7 +1774,7 @@ dependencies = [
[[package]]
name = "fabro-llm"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"async-trait",
@ -1803,7 +1803,7 @@ dependencies = [
[[package]]
name = "fabro-macros"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"proc-macro2",
"quote",
@ -1812,7 +1812,7 @@ dependencies = [
[[package]]
name = "fabro-mcp"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"fabro-config",
@ -1828,7 +1828,7 @@ dependencies = [
[[package]]
name = "fabro-model"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"insta",
"serde",
@ -1837,7 +1837,7 @@ dependencies = [
[[package]]
name = "fabro-oauth"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"axum",
"base64",
@ -1855,7 +1855,7 @@ dependencies = [
[[package]]
name = "fabro-proc"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"cc",
"libc",
@ -1864,7 +1864,7 @@ dependencies = [
[[package]]
name = "fabro-retro"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"chrono",
@ -1882,7 +1882,7 @@ dependencies = [
[[package]]
name = "fabro-sandbox"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"async-trait",
@ -1913,7 +1913,7 @@ dependencies = [
[[package]]
name = "fabro-server"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"axum",
@ -1979,7 +1979,7 @@ dependencies = [
[[package]]
name = "fabro-slack"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"fabro-http",
"fabro-interview",
@ -1998,14 +1998,14 @@ dependencies = [
[[package]]
name = "fabro-spa"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"rust-embed",
]
[[package]]
name = "fabro-store"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"async-trait",
"bytes",
@ -2027,7 +2027,7 @@ dependencies = [
[[package]]
name = "fabro-telemetry"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"base64",
@ -2052,7 +2052,7 @@ dependencies = [
[[package]]
name = "fabro-template"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"fabro-util",
@ -2064,7 +2064,7 @@ dependencies = [
[[package]]
name = "fabro-test"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"assert_cmd",
"axum",
@ -2085,7 +2085,7 @@ dependencies = [
[[package]]
name = "fabro-tracker"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"async-trait",
"fabro-github",
@ -2098,7 +2098,7 @@ dependencies = [
[[package]]
name = "fabro-types"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"chrono",
"clap",
@ -2118,7 +2118,7 @@ dependencies = [
[[package]]
name = "fabro-util"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"aho-corasick",
"anyhow",
@ -2139,7 +2139,7 @@ dependencies = [
[[package]]
name = "fabro-validate"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"fabro-graphviz",
"fabro-model",
@ -2149,7 +2149,7 @@ dependencies = [
[[package]]
name = "fabro-vault"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"chrono",
"serde",
@ -2160,7 +2160,7 @@ dependencies = [
[[package]]
name = "fabro-workflow"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"assert_cmd",
@ -6750,7 +6750,7 @@ dependencies = [
[[package]]
name = "twin-github"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"axum",
"base64",
@ -6768,7 +6768,7 @@ dependencies = [
[[package]]
name = "twin-openai"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
dependencies = [
"anyhow",
"async-stream",

View file

@ -5,7 +5,7 @@ resolver = "2"
[workspace.package]
edition = "2021"
version = "0.208.0-nightly.0"
version = "0.208.0-nightly.1"
license = "MIT"
[workspace.dependencies]

View file

@ -34,6 +34,11 @@ impl Storage {
self.root.join("logs")
}
#[must_use]
pub fn cache_dir(&self) -> PathBuf {
self.root.join("cache")
}
#[must_use]
pub fn secrets_path(&self) -> PathBuf {
self.root
@ -164,6 +169,10 @@ mod tests {
storage.logs_dir(),
std::path::Path::new("/tmp/fabro-data/logs")
);
assert_eq!(
storage.cache_dir(),
std::path::Path::new("/tmp/fabro-data/cache")
);
assert_eq!(
storage.secrets_path(),
std::path::Path::new("/tmp/fabro-data/vaults/default/secrets.json")

View file

@ -10,7 +10,6 @@ use axum::response::{IntoResponse, Response};
use fabro_types::settings::server::{
IpAllowEntry, ServerIpAllowlistOverrideSettings, ServerIpAllowlistSettings,
};
use fabro_util::Home;
use ipnet::IpNet;
use serde::{Deserialize, Serialize};
use tracing::warn;
@ -61,11 +60,11 @@ impl GitHubMetaResolver {
}
}
pub fn from_home() -> Result<Self> {
pub fn from_cache_dir(cache_dir: &Path) -> Result<Self> {
Ok(Self::new(
fabro_http::http_client().context("building GitHub meta HTTP client")?,
GITHUB_META_URL.to_string(),
github_meta_cache_path(Home::from_env().root()),
github_meta_cache_path(cache_dir),
))
}
@ -315,8 +314,8 @@ fn normalize_ip(ip: IpAddr) -> IpAddr {
}
}
pub fn github_meta_cache_path(home: &Path) -> PathBuf {
home.join("cache/github-meta-hooks.json")
pub fn github_meta_cache_path(cache_dir: &Path) -> PathBuf {
cache_dir.join("github-meta-hooks.json")
}
#[cfg(test)]
@ -408,6 +407,17 @@ mod tests {
assert!(allowlist.contains(&"::ffff:10.1.2.3".parse().unwrap()));
}
#[test]
fn github_meta_resolver_uses_storage_cache_dir() {
let cache_dir = tempfile::tempdir().unwrap();
let resolver = GitHubMetaResolver::from_cache_dir(cache_dir.path()).unwrap();
assert_eq!(
resolver.cache_path,
cache_dir.path().join("github-meta-hooks.json")
);
}
#[tokio::test]
async fn resolve_ip_allowlist_config_expands_github_meta_hooks() {
let mock_server = MockServer::start_async().await;

View file

@ -349,7 +349,7 @@ where
(auth_mode, max_concurrent_runs)
};
let web_enabled = router_web_enabled(&resolved_server_settings);
let github_meta_resolver = GitHubMetaResolver::from_home()?;
let github_meta_resolver = GitHubMetaResolver::from_cache_dir(&storage.cache_dir())?;
let (object_store, slatedb_prefix, flush_interval, disk_cache) =
build_slatedb_store(&resolved_server_settings)?;