mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-10-08 03:10:26 +00:00
fabro(01KWFGXZ5P42QRWBYAPVEAXMX6): simplify_gpt (succeeded)
Fabro-Run: 01KWFGXZ5P42QRWBYAPVEAXMX6 Fabro-Completed: 7 ⚒️ Generated with [Fabro](https://fabro.sh)
This commit is contained in:
parent
88047477db
commit
f753ac8fc8
7 changed files with 26 additions and 26 deletions
|
|
@ -21,7 +21,7 @@ use tokio::time::timeout as tokio_timeout;
|
|||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
use crate::config::{HookDefinition, HookType, TlsMode};
|
||||
use crate::secrets::ResolvedHookSecrets;
|
||||
use crate::secrets::{ResolvedHookSecrets, first_secret_name};
|
||||
use crate::types::{
|
||||
HookContext, HookDecision, HookExecutionContext, HookResult, PromptHookResponse,
|
||||
};
|
||||
|
|
@ -154,7 +154,7 @@ fn resolve_header<E>(
|
|||
where
|
||||
E: Env + ?Sized,
|
||||
{
|
||||
if let Some(name) = value.names(Namespace::Secrets).into_iter().next() {
|
||||
if let Some(name) = first_secret_name(value) {
|
||||
return Err(HeaderResolveError::SecretNotAllowed {
|
||||
name: name.to_string(),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ use std::pin::Pin;
|
|||
use std::sync::Arc;
|
||||
|
||||
use fabro_redact::SecretRedactor;
|
||||
use fabro_types::settings::InterpString;
|
||||
use fabro_types::settings::interp::Namespace;
|
||||
|
||||
use crate::config::{HookDefinition, HookType};
|
||||
|
|
@ -108,34 +109,31 @@ impl ResolvedHookSecrets {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn secret_names(value: &InterpString) -> Vec<&str> {
|
||||
value.names(Namespace::Secrets)
|
||||
}
|
||||
|
||||
pub(crate) fn first_secret_name(value: &InterpString) -> Option<&str> {
|
||||
secret_names(value).into_iter().next()
|
||||
}
|
||||
|
||||
fn secret_names_for_definition(definition: &HookDefinition) -> Vec<String> {
|
||||
let Some(hook_type) = definition.resolved_hook_type() else {
|
||||
return Vec::new();
|
||||
};
|
||||
match hook_type.as_ref() {
|
||||
HookType::Command { command } => command
|
||||
.names(Namespace::Secrets)
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
.collect(),
|
||||
HookType::Http { url, .. } => url
|
||||
.names(Namespace::Secrets)
|
||||
HookType::Command { command } => secret_names(command)
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
.collect(),
|
||||
HookType::Http { url, .. } => secret_names(url).into_iter().map(str::to_string).collect(),
|
||||
HookType::Prompt { prompt, model } | HookType::Agent { prompt, model, .. } => {
|
||||
let mut names: Vec<String> = prompt
|
||||
.names(Namespace::Secrets)
|
||||
let mut names: Vec<String> = secret_names(prompt)
|
||||
.into_iter()
|
||||
.map(str::to_string)
|
||||
.collect();
|
||||
if let Some(model) = model {
|
||||
names.extend(
|
||||
model
|
||||
.names(Namespace::Secrets)
|
||||
.into_iter()
|
||||
.map(str::to_string),
|
||||
);
|
||||
names.extend(secret_names(model).into_iter().map(str::to_string));
|
||||
}
|
||||
names
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ pub enum SandboxCreateSpec {
|
|||
Local,
|
||||
#[cfg(feature = "docker")]
|
||||
Docker {
|
||||
config: DockerSandboxOptions,
|
||||
config: Box<DockerSandboxOptions>,
|
||||
github_app: Option<GitHubCredentials>,
|
||||
run_id: Option<RunId>,
|
||||
clone_origin_url: Option<String>,
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ impl SandboxProvider for DockerSandboxProvider {
|
|||
};
|
||||
|
||||
let sandbox =
|
||||
DockerSandbox::new(config, github_app, run_id, clone_origin_url, clone_branch)?;
|
||||
DockerSandbox::new(*config, github_app, run_id, clone_origin_url, clone_branch)?;
|
||||
sandbox.initialize().await?;
|
||||
let container_id = sandbox.container_identifier()?.to_string();
|
||||
self.get(&container_id).await?.ok_or_else(|| {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ pub enum SandboxSpec {
|
|||
},
|
||||
#[cfg(feature = "docker")]
|
||||
Docker {
|
||||
config: DockerSandboxOptions,
|
||||
config: Box<DockerSandboxOptions>,
|
||||
github_app: Option<GitHubCredentials>,
|
||||
run_id: Option<RunId>,
|
||||
clone_origin_url: Option<String>,
|
||||
|
|
@ -204,7 +204,7 @@ impl SandboxSpec {
|
|||
clone_branch,
|
||||
} => {
|
||||
let mut sandbox = DockerSandbox::new(
|
||||
config.clone(),
|
||||
config.as_ref().clone(),
|
||||
github_app.clone(),
|
||||
*run_id,
|
||||
clone_origin_url.clone(),
|
||||
|
|
@ -271,7 +271,7 @@ mod tests {
|
|||
#[test]
|
||||
fn docker_run_sandbox_persists_layout_metadata_for_cloned_repo() {
|
||||
let spec = SandboxSpec::Docker {
|
||||
config: DockerSandboxOptions::default(),
|
||||
config: Box::new(DockerSandboxOptions::default()),
|
||||
github_app: None,
|
||||
run_id: None,
|
||||
clone_origin_url: Some("git@github.com:brynary/rack-test.git".to_string()),
|
||||
|
|
@ -306,10 +306,10 @@ mod tests {
|
|||
#[test]
|
||||
fn docker_run_sandbox_omits_primary_repo_metadata_for_empty_workspace() {
|
||||
let spec = SandboxSpec::Docker {
|
||||
config: DockerSandboxOptions {
|
||||
config: Box::new(DockerSandboxOptions {
|
||||
skip_clone: true,
|
||||
..DockerSandboxOptions::default()
|
||||
},
|
||||
}),
|
||||
github_app: None,
|
||||
run_id: None,
|
||||
clone_origin_url: Some("https://gitlab.com/acme/widgets".to_string()),
|
||||
|
|
|
|||
|
|
@ -890,7 +890,7 @@ fn preflight_sandbox_spec(
|
|||
let mut config = resolve_docker_config(resolved_run);
|
||||
config.skip_clone = true;
|
||||
SandboxSpec::Docker {
|
||||
config,
|
||||
config: Box::new(config),
|
||||
github_app,
|
||||
run_id: None,
|
||||
clone_origin_url,
|
||||
|
|
|
|||
|
|
@ -429,7 +429,9 @@ impl RunSession {
|
|||
SandboxSpec::Local { working_directory }
|
||||
}
|
||||
SandboxProviderKind::Docker => SandboxSpec::Docker {
|
||||
config: resolve_docker_config(resolved, |name| secret_lookup(name))?,
|
||||
config: Box::new(resolve_docker_config(resolved, |name| {
|
||||
secret_lookup(name)
|
||||
})?),
|
||||
github_app: services.github_app.clone(),
|
||||
run_id: Some(record.run_id),
|
||||
clone_origin_url: record.repo_origin_url().map(str::to_string),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue