2 Commits

Author SHA1 Message Date
66801b5d07 feat: Added an environment variable that lets users bypass guard operations in bash scripts. This is useful for agent routing
CI / All (ubuntu-latest) (push) Failing after 5m29s
CI / All (macos-latest) (push) Has been cancelled
CI / All (windows-latest) (push) Has been cancelled
2026-01-23 14:18:52 -07:00
f2de196e22 fix: Fixed a bug where --agent-variable values were not being passed to the agents 2026-01-23 14:15:59 -07:00
5 changed files with 40 additions and 17 deletions
+13 -11
View File
@@ -507,12 +507,14 @@ open_link() {
guard_operation() { guard_operation() {
if [[ -t 1 ]]; then if [[ -t 1 ]]; then
ans="$(confirm "${1:-Are you sure you want to continue?}")" if [[ -z "$AUTO_CONFIRM" ]]; then
ans="$(confirm "${1:-Are you sure you want to continue?}")"
if [[ "$ans" == 0 ]]; then if [[ "$ans" == 0 ]]; then
error "Operation aborted!" 2>&1 error "Operation aborted!" 2>&1
exit 1 exit 1
fi fi
fi
fi fi
} }
@@ -657,13 +659,13 @@ guard_path() {
path="$(_to_real_path "$1")" path="$(_to_real_path "$1")"
confirmation_prompt="$2" confirmation_prompt="$2"
if [[ ! "$path" == "$(pwd)"* ]]; then if [[ ! "$path" == "$(pwd)"* && -z "$AUTO_CONFIRM" ]]; then
ans="$(confirm "$confirmation_prompt")" ans="$(confirm "$confirmation_prompt")"
if [[ "$ans" == 0 ]]; then if [[ "$ans" == 0 ]]; then
error "Operation aborted!" >&2 error "Operation aborted!" >&2
exit 1 exit 1
fi fi
fi fi
fi fi
} }
+6
View File
@@ -17,6 +17,7 @@ loki --info | grep 'config_dir' | awk '{print $2}'
- [Files and Directory Related Variables](#files-and-directory-related-variables) - [Files and Directory Related Variables](#files-and-directory-related-variables)
- [Agent Related Variables](#agent-related-variables) - [Agent Related Variables](#agent-related-variables)
- [Logging Related Variables](#logging-related-variables) - [Logging Related Variables](#logging-related-variables)
- [Miscellaneous Variables](#miscellaneous-variables)
<!--toc:end--> <!--toc:end-->
--- ---
@@ -104,3 +105,8 @@ The following variables can be used to change the log level of Loki or the locat
**Pro-Tip:** You can always tail the Loki logs using the `--tail-logs` flag. If you need to disable color output, you **Pro-Tip:** You can always tail the Loki logs using the `--tail-logs` flag. If you need to disable color output, you
can also pass the `--disable-log-colors` flag as well. can also pass the `--disable-log-colors` flag as well.
## Miscellaneous Variables
| Environment Variable | Description | Default Value |
|----------------------|--------------------------------------------------------------------------------------------------|---------------|
| `AUTO_CONFIRM` | Bypass all `guard_*` checks in the bash prompt helpers; useful for agent composition and routing | |
+6 -2
View File
@@ -207,7 +207,9 @@ open_link https://www.google.com
``` ```
### guard_operation ### guard_operation
Prompt for permission to run an operation Prompt for permission to run an operation.
Can be disabled by setting the environment variable `AUTO_CONFIRM`.
**Example:** **Example:**
```bash ```bash
@@ -216,7 +218,9 @@ _run_sql
``` ```
### guard_path ### guard_path
Prompt for permission to perform path operations Prompt for permission to perform path operations.
Can be disabled by setting the environment variable `AUTO_CONFIRM`.
**Example:*** **Example:***
```bash ```bash
+5
View File
@@ -204,6 +204,7 @@ impl Agent {
pub fn init_agent_variables( pub fn init_agent_variables(
agent_variables: &[AgentVariable], agent_variables: &[AgentVariable],
pre_set_variables: Option<&AgentVariables>,
no_interaction: bool, no_interaction: bool,
) -> Result<AgentVariables> { ) -> Result<AgentVariables> {
let mut output = IndexMap::new(); let mut output = IndexMap::new();
@@ -214,6 +215,10 @@ impl Agent {
let mut unset_variables = vec![]; let mut unset_variables = vec![];
for agent_variable in agent_variables { for agent_variable in agent_variables {
let key = agent_variable.name.clone(); let key = agent_variable.name.clone();
if let Some(value) = pre_set_variables.and_then(|v| v.get(&key)) {
output.insert(key, value.clone());
continue;
}
if let Some(value) = agent_variable.default.clone() { if let Some(value) = agent_variable.default.clone() {
output.insert(key, value); output.insert(key, value);
continue; continue;
+10 -4
View File
@@ -2607,8 +2607,11 @@ impl Config {
None => return Ok(()), None => return Ok(()),
}; };
if !agent.defined_variables().is_empty() && agent.shared_variables().is_empty() { if !agent.defined_variables().is_empty() && agent.shared_variables().is_empty() {
let new_variables = let new_variables = Agent::init_agent_variables(
Agent::init_agent_variables(agent.defined_variables(), self.info_flag)?; agent.defined_variables(),
self.agent_variables.as_ref(),
self.info_flag,
)?;
agent.set_shared_variables(new_variables); agent.set_shared_variables(new_variables);
} }
if !self.info_flag { if !self.info_flag {
@@ -2626,8 +2629,11 @@ impl Config {
let shared_variables = agent.shared_variables().clone(); let shared_variables = agent.shared_variables().clone();
let session_variables = let session_variables =
if !agent.defined_variables().is_empty() && shared_variables.is_empty() { if !agent.defined_variables().is_empty() && shared_variables.is_empty() {
let new_variables = let new_variables = Agent::init_agent_variables(
Agent::init_agent_variables(agent.defined_variables(), self.info_flag)?; agent.defined_variables(),
self.agent_variables.as_ref(),
self.info_flag,
)?;
agent.set_shared_variables(new_variables.clone()); agent.set_shared_variables(new_variables.clone());
new_variables new_variables
} else { } else {