Skip to content

Conversation

@angiejones
Copy link
Collaborator

Introduces support for streamable HTTP extensions in the Goose CLI. The changes include updates to the CLI commands, session builder, documentation, and tests to accommodate the new functionality. The most significant changes are grouped below by theme. fixes #3393

Code Changes Made

  1. CLI Arguments (crates/goose-cli/src/cli.rs):

    • Added streamable_http_extensions: Vec<String> field to both Session and Run command structs
    • Added proper help text and documentation
  2. Session Builder (crates/goose-cli/src/session/builder.rs):

    • Added streamable_http_extensions field to SessionBuilderConfig
    • Added processing loop for streamable HTTP extensions
    • Updated tests to include the new field
  3. Session Implementation (crates/goose-cli/src/session/mod.rs):

    • Added add_streamable_http_extension() method that creates ExtensionConfig::StreamableHttp configurations
    • Includes proper error handling and completion cache invalidation
  4. Benchmark Support (crates/goose-cli/src/commands/bench.rs):

    • Added the new field to benchmark configuration

Documentation Updates

  • Updated the documentation in getting-started/using-extensions.md to include examples and parameters for using streamable HTTP extensions.
  • Enhanced the CLI commands documentation in guides/goose-cli-commands.md to describe the new --with-streamable-http-extension option.
  • Added examples for running tasks with streamable HTTP extensions in guides/running-tasks.md.

Tests

  • Updated session builder tests to validate the functionality of streamable HTTP extensions.

Testing Results

  • Compilation: Code compiles successfully
  • Help Output: New flag appears in --help for both commands
  • Functionality: Flag correctly attempts to create StreamableHttp extensions
  • Error Handling: Gracefully handles connection failures
  • Backward Compatibility: Existing SSE functionality unchanged
  • Code Quality: Passes cargo fmt and cargo clippy checks
  • Unit Tests: All relevant tests pass

Usage Examples

Start a session with a streamable HTTP extension

goose session --with-streamable-http-extension "http://example.com"

Run a task with multiple streamable HTTP extensions

goose run --text "analyze data" \
  --with-streamable-http-extension "http://api1.example.com" \
  --with-streamable-http-extension "http://api2.example.com"

Mix different extension types

goose session \
  --with-extension "echo hello" \
  --with-remote-extension "http://sse.example.com/sse" \
  --with-streamable-http-extension "http://http.example.com" \
  --with-builtin "developer"

@github-actions
Copy link
Contributor

github-actions bot commented Jul 13, 2025

PR Preview Action v1.6.0
Preview removed because the pull request was closed.
2025-07-13 23:11 UTC

Copy link
Collaborator

@michaelneale michaelneale left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems nice - docs and CLI only change

@angiejones angiejones merged commit 1987956 into main Jul 13, 2025
9 checks passed
@angiejones angiejones deleted the streamable-cli-flag branch July 13, 2025 23:09
zanesq added a commit that referenced this pull request Jul 14, 2025
* 'main' of github.com:block/goose:
  feat: fetch openrouter supported models in `goose configure` (#3347)
  Add the ability to configure rustyline to use a different edit mode (e.g. vi) (#2769)
  docs: update CLI provider guide (#3397)
  Streamable HTTP CLI flag (#3394)
  docs: Show both remote options for extensions in CLI (#3392)
michaelneale added a commit to jackjackbits/goose that referenced this pull request Jul 14, 2025
* main: (51 commits)
  docs: reflecting benefits of CLI providers (block#3399)
  feat: fetch openrouter supported models in `goose configure` (block#3347)
  Add the ability to configure rustyline to use a different edit mode (e.g. vi) (block#2769)
  docs: update CLI provider guide (block#3397)
  Streamable HTTP CLI flag (block#3394)
  docs: Show both remote options for extensions in CLI (block#3392)
  docs: fix YouTube Transcript MCP package manager (block#3390)
  docs: simplify alby mcp (block#3379)
  docs: add max turns (block#3372)
  feat(cli): add cost estimation per provider for Goose CLI (block#3330)
  feat: Allow Ollama for non-tool models for chat only (block#3308)
  [cli] Add --provider and --model CLI options to run command (block#3295)
  Docs: Lead/worker model in Goose Desktop (block#3342)
  revert: refactor: abstract keyring logic to better enable DI (block#3358)
  Drop temporal-service binary (block#3340)
  docs: add fuzzy search (block#3357)
  Fix name of GPT-4.1 System Prompt (block#3348) (block#3351)
  docs: add goose-mobile (block#3315)
  refactor: abstract keyring logic to better enable DI (block#3262)
  fix: correct tool use for anthropic (block#3311)
  ...
atarantino pushed a commit to atarantino/goose that referenced this pull request Jul 14, 2025
s-soroosh pushed a commit to s-soroosh/goose that referenced this pull request Jul 18, 2025
kwsantiago pushed a commit to kwsantiago/goose that referenced this pull request Jul 19, 2025
cbruyndoncx pushed a commit to cbruyndoncx/goose that referenced this pull request Jul 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ability to start CLI session with streamable http server

3 participants