Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
d6db9a3
Make subagent model customizable
kajogo777 Jan 28, 2026
e0c13a6
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Jan 28, 2026
acbda1a
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Jan 29, 2026
6ef9027
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Jan 29, 2026
684daed
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Jan 30, 2026
ecece7e
Add session id namespaced subagent temp data
kajogo777 Feb 3, 2026
867d0d2
Add a sanboxed version of the discovery subagent
kajogo777 Feb 3, 2026
3ae4529
Add agentboard and local state data to warden write whitelist
kajogo777 Feb 3, 2026
c06e042
Make sure allowed tools usage is consistent across modes
kajogo777 Feb 3, 2026
88d0d18
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Feb 3, 2026
a1c690d
Remove sandbox subagent
kajogo777 Feb 3, 2026
ba568de
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Feb 3, 2026
f85014b
fix: cargo fmt
kajogo777 Feb 3, 2026
dcfffe7
fix: update test to match actual subagents.toml config
kajogo777 Feb 3, 2026
767543e
Merge branch 'main' of https://github.com/stakpak/agent into feat/sub…
kajogo777 Feb 5, 2026
1e677d9
Add subagent usage instructions in system prompt
kajogo777 Feb 5, 2026
912d40b
Improve wait TUI for background tasks
kajogo777 Feb 5, 2026
daed210
Rename DiscoveryAgent to ReadOnlyAgent
kajogo777 Feb 5, 2026
b238ec9
Add dynamic subagents based on AOrchestra
kajogo777 Feb 5, 2026
356a355
Merge branch 'main' of https://github.com/stakpak/agent into feat/dyn…
kajogo777 Feb 5, 2026
f3a9350
Tweak prompts and add model selection heuristics
kajogo777 Feb 6, 2026
af77a27
Fix linter issues
kajogo777 Feb 6, 2026
edf4a19
Tweak system prompt and tool
kajogo777 Feb 6, 2026
a198f12
Merge branch 'main' of https://github.com/stakpak/agent into feat/dyn…
kajogo777 Feb 6, 2026
70cdf30
Merge branch 'main' of https://github.com/stakpak/agent into feat/dyn…
kajogo777 Feb 6, 2026
fd05820
Add resume flow and approvals
kajogo777 Feb 7, 2026
da659b1
fix(ci): replace actions/cache with Swatinem/rust-cache
kajogo777 Feb 8, 2026
10db53b
Sync with maain
kajogo777 Feb 8, 2026
08b6d08
Fix ci issues
kajogo777 Feb 8, 2026
d2a7f51
Fix ci issues
kajogo777 Feb 8, 2026
06bb69d
chore: pin rust toolchain to 1.89.0
kajogo777 Feb 8, 2026
c08a9a9
ci: add rust toolchain setup with rustfmt and clippy
kajogo777 Feb 8, 2026
9dabf4b
Merge branch 'main' of https://github.com/stakpak/agent into feat/dyn…
kajogo777 Feb 8, 2026
59fde2f
Sync with main's daemon
kajogo777 Feb 8, 2026
f63f459
Merge branch 'main' of https://github.com/stakpak/agent into feat/dyn…
kajogo777 Feb 8, 2026
cd9af67
Cargo fmt
kajogo777 Feb 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 6 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,19 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Cache Cargo Dependencies
uses: actions/cache@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@master
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
./target/
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }}
toolchain: "1.89.0"
components: rustfmt, clippy

- name: Check
run: cargo check --verbose --all-targets
- uses: Swatinem/rust-cache@v2

- name: Format Check
run: cargo fmt -- --check

- name: Lint
run: cargo clippy
run: cargo clippy --all-targets -- -D warnings

- name: Build
run: cargo build --verbose
Expand Down
1 change: 1 addition & 0 deletions cli/src/commands/acp/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -975,6 +975,7 @@ impl StakpakAcpAgent {
&tool_call,
tool_cancel_rx,
self.current_session_id.get(),
Some(self.model.read().await.id.clone()),
)
.await
.map_err(|e| {
Expand Down
23 changes: 0 additions & 23 deletions cli/src/commands/agent/run/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use stakpak_api::models::ListRuleBook;
use stakpak_shared::models::integrations::openai::{
ChatMessage, FunctionDefinition, MessageContent, Role, Tool, ToolCallResult,
};
use stakpak_shared::models::subagent::SubagentConfigs;
use uuid::Uuid;

/// Build a CLI resume command string, preferring session ID over checkpoint ID.
Expand Down Expand Up @@ -157,28 +156,6 @@ pub fn add_rulebooks(user_input: &str, rulebooks: &[ListRuleBook]) -> (String, O
(formatted_input, Some(rulebooks_text))
}

pub fn add_subagents(
messages: &[ChatMessage],
user_input: &str,
subagent_configs: &Option<SubagentConfigs>,
) -> (String, Option<String>) {
if let Some(subagent_configs) = subagent_configs {
let subagents_text = subagent_configs.format_for_context();

if messages.is_empty() {
let formatted_input = format!(
"{}\n<subagents>\n{}\n</subagents>",
user_input, subagents_text
);
(formatted_input, Some(subagents_text))
} else {
(user_input.to_string(), None)
}
} else {
(user_input.to_string(), None)
}
}

pub fn tool_call_history_string(tool_calls: &[ToolCallResult]) -> Option<String> {
if tool_calls.is_empty() {
return None;
Expand Down
16 changes: 14 additions & 2 deletions cli/src/commands/agent/run/mcp_init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ pub struct McpInitConfig {
pub enabled_tools: EnabledToolsConfig,
/// Whether to enable mTLS for secure communication
pub enable_mtls: bool,
/// Whether to enable subagent tools
pub enable_subagents: bool,
/// Optional list of allowed tool names (filters tools if specified)
pub allowed_tools: Option<Vec<String>>,
}

impl Default for McpInitConfig {
Expand All @@ -43,6 +47,8 @@ impl Default for McpInitConfig {
privacy_mode: false,
enabled_tools: EnabledToolsConfig { slack: false },
enable_mtls: true,
enable_subagents: true,
allowed_tools: None,
}
}
}
Expand Down Expand Up @@ -126,6 +132,7 @@ async fn start_mcp_server(
let redact_secrets = mcp_config.redact_secrets;
let privacy_mode = mcp_config.privacy_mode;
let enabled_tools = mcp_config.enabled_tools.clone();
let enable_subagents = mcp_config.enable_subagents;

tokio::spawn(async move {
let server_config = MCPServerConfig {
Expand All @@ -135,7 +142,7 @@ async fn start_mcp_server(
privacy_mode,
enabled_tools,
tool_mode: ToolMode::Combined,
subagent_configs: None,
enable_subagents,
certificate_chain: cert_chain,
};

Expand Down Expand Up @@ -323,7 +330,12 @@ pub async fn initialize_mcp_server_and_tools(
.await
.map_err(|e| format!("Failed to get tools: {}", e))?;

let tools = convert_tools_with_filter(&mcp_tools, app_config.allowed_tools.as_ref());
// Use allowed_tools from mcp_config if provided, otherwise fall back to app_config
let allowed_tools_ref = mcp_config
.allowed_tools
.as_ref()
.or(app_config.allowed_tools.as_ref());
let tools = convert_tools_with_filter(&mcp_tools, allowed_tools_ref);

Ok(McpInitResult {
client: mcp_client,
Expand Down
2 changes: 2 additions & 0 deletions cli/src/commands/agent/run/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ pub mod helpers;
pub mod mcp_init;
pub mod mode_async;
pub mod mode_interactive;
pub mod pause;
pub mod profile_switch;
pub mod renderer;
pub mod stream;
Expand All @@ -11,4 +12,5 @@ pub mod tui;

pub use mode_async::{RunAsyncConfig, run_async};
pub use mode_interactive::{RunInteractiveConfig, run_interactive};
pub use pause::{AsyncOutcome, ResumeInput};
pub use renderer::OutputFormat;
Loading