Skip to content

Commit 9cb8e97

Browse files
committed
Merge branch 'main' into mnovich/mcp-ui-sidecar
* main: (24 commits) feat: autovisualiser of structured data with mcp-ui (#4153) docs: Plan tutorial (#4309) Extensions Modal Improvements (#4293) docs: fixed cicd tutorial pipeline in docs (#4223) Read oltp config from config and env (#4292) release/1.6.0 (#4280) docs: fix broken links in Docker tutorial (#4285) Remove half-second wait, rework auto submit (#4282) Block send until extensions are ready (#4271) fix: improve OpenAI-compatible error handling and add test coverage (#4175) Move To-Do Tool to Session Scope from Agent Scope (#4157) fix: recipe params not being replaced all the time (#4207) chore: removing little-used session sharing feature (#4249) Stop auto scrolling when agent responds and let scroll area handle scrolling to bottom (#4257) restore cli projects from accidental removal during cleanup (#4266) Fix: deep link extension installation to show dialog for headers configuration (#4150) feat: Add message queue system with interruption handling (#4179) Start extensions concurrently (#4234) Add X-Title and referer headers on exchange to tetrate (#4250) docs: update View/Edit Recipe menu item name (#4267) ...
2 parents 9cd0aa8 + 3e1557b commit 9cb8e97

File tree

127 files changed

+9373
-2859
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+9373
-2859
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,6 @@ do_not_version/
6565
# Error log artifacts from mcp replay tests
6666
crates/goose/tests/mcp_replays/*errors.txt
6767

68+
.gromastate
6869
# Nix build output
6970
result

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[workspace.package]
66
edition = "2021"
7-
version = "1.5.0"
7+
version = "1.6.0"
88
authors = ["Block <ai-oss-tools@block.xyz>"]
99
license = "Apache-2.0"
1010
repository = "https://github.com/block/goose"

crates/goose-cli/src/cli.rs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use crate::commands::bench::agent_generator;
77
use crate::commands::configure::handle_configure;
88
use crate::commands::info::handle_info;
99
use crate::commands::mcp::run_server;
10+
use crate::commands::project::{handle_project_default, handle_projects_interactive};
1011
use crate::commands::recipe::{handle_deeplink, handle_list, handle_validate};
1112
// Import the new handlers from commands::schedule
1213
use crate::commands::schedule::{
@@ -386,6 +387,14 @@ enum Command {
386387
builtins: Vec<String>,
387388
},
388389

390+
/// Open the last project directory
391+
#[command(about = "Open the last project directory", visible_alias = "p")]
392+
Project {},
393+
394+
/// List recent project directories
395+
#[command(about = "List recent project directories", visible_alias = "ps")]
396+
Projects,
397+
389398
/// Execute commands from an instruction file
390399
#[command(about = "Execute commands from an instruction file or stdin")]
391400
Run {
@@ -691,11 +700,18 @@ pub struct RecipeInfo {
691700
pub async fn cli() -> Result<()> {
692701
let cli = Cli::parse();
693702

703+
// Track the current directory in projects.json
704+
if let Err(e) = crate::project_tracker::update_project_tracker(None, None) {
705+
eprintln!("Warning: Failed to update project tracker: {}", e);
706+
}
707+
694708
let command_name = match &cli.command {
695709
Some(Command::Configure {}) => "configure",
696710
Some(Command::Info { .. }) => "info",
697711
Some(Command::Mcp { .. }) => "mcp",
698712
Some(Command::Session { .. }) => "session",
713+
Some(Command::Project {}) => "project",
714+
Some(Command::Projects) => "projects",
699715
Some(Command::Run { .. }) => "run",
700716
Some(Command::Schedule { .. }) => "schedule",
701717
Some(Command::Update { .. }) => "update",
@@ -721,7 +737,7 @@ pub async fn cli() -> Result<()> {
721737
return Ok(());
722738
}
723739
Some(Command::Mcp { name }) => {
724-
run_server(&name).await?;
740+
let _ = run_server(&name).await;
725741
}
726742
Some(Command::Session {
727743
command,
@@ -846,6 +862,16 @@ pub async fn cli() -> Result<()> {
846862
}
847863
};
848864
}
865+
Some(Command::Project {}) => {
866+
// Default behavior: offer to resume the last project
867+
handle_project_default()?;
868+
return Ok(());
869+
}
870+
Some(Command::Projects) => {
871+
// Interactive project selection
872+
handle_projects_interactive()?;
873+
return Ok(());
874+
}
849875

850876
Some(Command::Run {
851877
instructions,

crates/goose-cli/src/commands/configure.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ fn get_display_name(extension_id: &str) -> String {
3232
match extension_id {
3333
"developer" => "Developer Tools".to_string(),
3434
"computercontroller" => "Computer Controller".to_string(),
35+
"autovisualiser" => "Auto Visualiser".to_string(),
3536
"memory" => "Memory".to_string(),
3637
"tutorial" => "Tutorial".to_string(),
3738
"jetbrains" => "JetBrains".to_string(),
@@ -747,6 +748,11 @@ pub fn configure_extensions_dialog() -> Result<(), Box<dyn Error>> {
747748
// TODO we'll want a place to collect all these options, maybe just an enum in goose-mcp
748749
"built-in" => {
749750
let extension = cliclack::select("Which built-in extension would you like to enable?")
751+
.item(
752+
"autovisualiser",
753+
"Auto Visualizer",
754+
"Data visualization and UI generation tools",
755+
)
750756
.item(
751757
"computercontroller",
752758
"Computer Controller",

crates/goose-cli/src/commands/mcp.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
use anyhow::{anyhow, Result};
2-
use goose_mcp::{ComputerControllerRouter, DeveloperRouter, MemoryRouter, TutorialRouter};
2+
use goose_mcp::{
3+
AutoVisualiserRouter, ComputerControllerRouter, DeveloperRouter, MemoryRouter, TutorialRouter,
4+
};
35
use mcp_server::router::RouterService;
46
use mcp_server::{BoundedService, ByteTransport, Server};
57
use tokio::io::{stdin, stdout};
@@ -28,6 +30,7 @@ pub async fn run_server(name: &str) -> Result<()> {
2830
let router: Option<Box<dyn BoundedService>> = match name {
2931
"developer" => Some(Box::new(RouterService(DeveloperRouter::new()))),
3032
"computercontroller" => Some(Box::new(RouterService(ComputerControllerRouter::new()))),
33+
"autovisualiser" => Some(Box::new(RouterService(AutoVisualiserRouter::new()))),
3134
"memory" => Some(Box::new(RouterService(MemoryRouter::new()))),
3235
"tutorial" => Some(Box::new(RouterService(TutorialRouter::new()))),
3336
_ => None,

crates/goose-cli/src/commands/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ pub mod bench;
22
pub mod configure;
33
pub mod info;
44
pub mod mcp;
5+
pub mod project;
56
pub mod recipe;
67
pub mod schedule;
78
pub mod session;

0 commit comments

Comments
 (0)