diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index d90f80cf1a61..1d79509abb65 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,6 +1,6 @@ blank_issues_enabled: false contact_links: - - name: Goose Discord discussion + - name: goose Discord discussion url: https://discord.gg/block-opensource about: Please ask and answer questions here. - name: Report a security vulnerability diff --git a/.github/ISSUE_TEMPLATE/submit-recipe.yml b/.github/ISSUE_TEMPLATE/submit-recipe.yml index fce5adcf90a3..c9b6b0d5aa0c 100644 --- a/.github/ISSUE_TEMPLATE/submit-recipe.yml +++ b/.github/ISSUE_TEMPLATE/submit-recipe.yml @@ -1,25 +1,25 @@ -name: 🧑‍🍳 Submit a Recipe to the Goose Cookbook -description: Share a reusable Goose recipe with the community! +name: 🧑‍🍳 Submit a recipe to the goose cookbook +description: Share a reusable goose recipe with the community! title: "[Recipe] " labels: ["recipe submission"] body: - type: markdown attributes: value: | - Thanks for contributing to the Goose Cookbook! 🍳 - Recipes are reusable sessions created in Goose Desktop or CLI and shared with the community to help others vibe code faster. + Thanks for contributing to the goose cookbook! 🍳 + Recipes are reusable sessions created in goose desktop or CLI and shared with the community to help others vibe code faster. 📌 **How to Submit** - - Create your recipe using Goose ("Make recipe from this session") + - Create your recipe using goose ("Make recipe from this session") - Fill out the YAML below using the format provided - - Paste it into the field and submit the issue — we'll review and add it to the Cookbook! + - Paste it into the field and submit the issue — we'll review and add it to the cookbook! 🪄 **What Happens After?** - - If accepted, we'll publish your recipe to the [Goose Recipes Cookbook](https://block.github.io/goose/recipes) + - If accepted, we'll publish your recipe to the [goose recipes cookbook](https://block.github.io/goose/recipes) - You'll receive OpenRouter **LLM API credits** as a thank you! - Your GitHub handle will be displayed and linked on the recipe card - If you provide an email below, we'll email you your credits when your recipe is approved and merged. - - If the YAML has any issues, Goose will comment with validation errors so you can fix and resubmit. + - If the YAML has any issues, goose will comment with validation errors so you can fix and resubmit. 🧪 **Pro Tip:** You can test your recipe locally in your terminal with: `goose recipe validate your-recipe.yaml` @@ -28,7 +28,7 @@ body: id: recipe-yaml attributes: label: Paste Your Full Recipe YAML Below - description: Use the structure below and we’ll auto-fill your GitHub handle for `author.contact` after submission. + description: Use the structure below and we'll auto-fill your GitHub handle for `author.contact` after submission. placeholder: | version: "1.0.0" id: clean-up-feature-flag @@ -103,8 +103,8 @@ body: - `id` should be lowercase, hyphenated, and unique (e.g. `my-awesome-recipe`) - `title` is the display name of your recipe - `description` should clearly explain what the recipe does - - `instructions` are specific steps Goose should follow — supports template variables like `{{ variable_name }}` - - `prompt` is the first thing Goose sees when the recipe is launched + - `instructions` are specific steps goose should follow — supports template variables like `{{ variable_name }}` + - `prompt` is the first thing goose sees when the recipe is launched - `parameters` should include required or optional inputs — optional ones must have `default` - `extensions` must follow the full format with `type`, `cmd`, `args`, `timeout`, etc. - `activities` describe the main actions the recipe performs diff --git a/.github/scripts/send_key.py b/.github/scripts/send_key.py index 37fb4dcd0116..554873eadd4d 100644 --- a/.github/scripts/send_key.py +++ b/.github/scripts/send_key.py @@ -148,7 +148,7 @@ def provision_api_key(provisioning_api_key): "Content-Type": "application/json" }, json={ - "name": "Goose Contributor", + "name": "goose contributor", "label": "goose-cookbook", "limit": 10.0 } @@ -167,13 +167,13 @@ def send_email(email, api_key, sendgrid_api_key): print("📤 Sending email via SendGrid...") try: sg = SendGridAPIClient(sendgrid_api_key) - from_email = "Goose Team " - subject = "🎉 Your Goose Contributor API Key" + from_email = "goose team " + subject = "🎉 Your goose contributor API key" html_content = f""" -

Thank you for contributing to the Goose Recipe Cookbook!

+

Thank you for contributing to the goose recipe cookbook!

🎉 Here's your $10 OpenRouter API key:

{api_key}
-

To use this in Goose (CLI or Desktop):

+

To use this in goose (CLI or Desktop):

  • Go to your Provider Settings
  • Select OpenRouter from the provider list
  • @@ -182,7 +182,7 @@ def send_email(email, api_key, sendgrid_api_key):

    📚 Full setup instructions:
    https://block.github.io/goose/docs/getting-started/providers/#configure-provider

    -

    Happy coding!
    – The Goose Team

    +

    Happy coding!
    – the goose team

    """ message = Mail( from_email=from_email, @@ -216,7 +216,7 @@ def comment_on_pr(github_token, repo_full_name, pr_number, email): "Accept": "application/vnd.github+json" }, json={ - "body": f"✅ $10 OpenRouter API key sent to `{email}`. Thanks for your contribution to the Goose Cookbook!" + "body": f"✅ $10 OpenRouter API key sent to `{email}`. Thanks for your contribution to the goose cookbook!" } ) comment_resp.raise_for_status() diff --git a/.github/workflows/bundle-desktop-intel.yml b/.github/workflows/bundle-desktop-intel.yml index 6c0c14a4817f..db88b7bac382 100644 --- a/.github/workflows/bundle-desktop-intel.yml +++ b/.github/workflows/bundle-desktop-intel.yml @@ -192,10 +192,10 @@ jobs: source_job_url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" unsigned_url="s3://block-goose-artifacts-bucket-production/unsigned/goose-${GITHUB_SHA}-${{ github.run_id }}-intel.zip" - zip -q -u -r out/Goose-darwin-x64/Goose_intel_mac.zip entitlements.plist + zip -q -u -r out/goose-darwin-x64/goose_intel_mac.zip entitlements.plist # upload unsigned goose to transfer bucket so it can be passed to lambda - aws s3 cp --quiet out/Goose-darwin-x64/Goose_intel_mac.zip "${unsigned_url}" + aws s3 cp --quiet out/goose-darwin-x64/goose_intel_mac.zip "${unsigned_url}" # begin signing echo "🚀 launching signing process" @@ -247,7 +247,7 @@ jobs: # download the signed app from S3 echo "⬇️ downloading signed app" - aws s3 cp --quiet "${signed_url}" out/Goose-darwin-x64/Goose_intel_mac.zip + aws s3 cp --quiet "${signed_url}" out/goose-darwin-x64/goose_intel_mac.zip working-directory: ui/desktop - name: Final cleanup before artifact upload @@ -261,26 +261,26 @@ jobs: - name: Upload Desktop artifact uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # pin@v4 with: - name: Goose-darwin-x64 - path: ui/desktop/out/Goose-darwin-x64/Goose_intel_mac.zip + name: goose-darwin-x64 + path: ui/desktop/out/goose-darwin-x64/goose_intel_mac.zip - name: Quick launch test (macOS) if: ${{ inputs.quick_test }} run: | # Ensure no quarantine attributes (if needed) - xattr -cr "ui/desktop/out/Goose-darwin-x64/Goose.app" - echo "Opening Goose.app..." - open -g "ui/desktop/out/Goose-darwin-x64/Goose.app" + xattr -cr "ui/desktop/out/goose-darwin-x64/goose.app" + echo "Opening goose.app..." + open -g "ui/desktop/out/goose-darwin-x64/goose.app" # Give the app a few seconds to start and write logs sleep 5 # Check if it's running - if pgrep -f "Goose.app/Contents/MacOS/Goose" > /dev/null; then + if pgrep -f "goose.app/Contents/MacOS/goose" > /dev/null; then echo "App appears to be running." else echo "App did not stay open. Possible crash or startup error." exit 1 fi # Kill the app to clean up - pkill -f "Goose.app/Contents/MacOS/Goose" + pkill -f "goose.app/Contents/MacOS/goose" diff --git a/.github/workflows/bundle-desktop-linux.yml b/.github/workflows/bundle-desktop-linux.yml index bcd384b013cd..4ff6ee2ab58a 100644 --- a/.github/workflows/bundle-desktop-linux.yml +++ b/.github/workflows/bundle-desktop-linux.yml @@ -180,21 +180,21 @@ jobs: - name: Upload .deb package uses: actions/upload-artifact@v4 with: - name: Goose-linux-x64-deb + name: goose-linux-x64-deb path: ui/desktop/out/make/deb/x64/*.deb if-no-files-found: error - name: Upload .rpm package uses: actions/upload-artifact@v4 with: - name: Goose-linux-x64-rpm + name: goose-linux-x64-rpm path: ui/desktop/out/make/rpm/x64/*.rpm if-no-files-found: error - name: Upload combined Linux packages uses: actions/upload-artifact@v4 with: - name: Goose-linux-x64 + name: goose-linux-x64 path: | ui/desktop/out/make/deb/x64/*.deb ui/desktop/out/make/rpm/x64/*.rpm diff --git a/.github/workflows/bundle-desktop-windows.yml b/.github/workflows/bundle-desktop-windows.yml index fb23ba167521..e10c19bfccd3 100644 --- a/.github/workflows/bundle-desktop-windows.yml +++ b/.github/workflows/bundle-desktop-windows.yml @@ -284,12 +284,12 @@ jobs: - name: Copy exe/dll to final out folder and prepare flat distribution run: | cd ui/desktop - mkdir -p ./out/Goose-win32-x64/resources/bin - rsync -av src/bin/ out/Goose-win32-x64/resources/bin/ + mkdir -p ./out/goose-win32-x64/resources/bin + rsync -av src/bin/ out/goose-win32-x64/resources/bin/ # Create flat distribution structure mkdir -p ./dist-windows - cp -r ./out/Goose-win32-x64/* ./dist-windows/ + cp -r ./out/goose-win32-x64/* ./dist-windows/ # Verify the final structure echo "📋 Final flat distribution structure:" @@ -318,8 +318,8 @@ jobs: wget -q https://github.com/ebourg/jsign/releases/download/6.0/jsign-6.0.jar -O jsign.jar echo "05ca18d4ab7b8c2183289b5378d32860f0ea0f3bdab1f1b8cae5894fb225fa8a jsign.jar" | sha256sum -c - # Sign the main Electron executable (Goose.exe) - echo "🔐 Signing main Electron executable: Goose.exe" + # Sign the main Electron executable (goose.exe) + echo "🔐 Signing main Electron executable: goose.exe" cd ui/desktop/dist-windows/ java -jar ${GITHUB_WORKSPACE}/jsign.jar \ @@ -329,12 +329,12 @@ jobs: --alias windows-codesign \ --certfile "${GITHUB_WORKSPACE}/block-codesign-cert.pem" \ --tsaurl "http://timestamp.digicert.com" \ - --name "Goose" \ + --name "goose" \ --url "https://github.com/block/goose" \ - "Goose.exe" + "goose.exe" - osslsigncode verify Goose.exe - echo "✅ Main executable Goose.exe signed successfully" + osslsigncode verify goose.exe + echo "✅ Main executable goose.exe signed successfully" # Sign the backend executable (goosed.exe) echo "🔐 Signing backend executable: goosed.exe" @@ -347,7 +347,7 @@ jobs: --alias windows-codesign \ --certfile "${GITHUB_WORKSPACE}/block-codesign-cert.pem" \ --tsaurl "http://timestamp.digicert.com" \ - --name "Goose Backend" \ + --name "goose Backend" \ --url "https://github.com/block/goose" \ "goosed.exe" @@ -357,8 +357,8 @@ jobs: # Show final file status echo "📋 Final signed files:" cd ../../ - ls -la Goose.exe - sha256sum Goose.exe + ls -la goose.exe + sha256sum goose.exe ls -la resources/bin/goosed.exe sha256sum resources/bin/goosed.exe @@ -371,8 +371,8 @@ jobs: run: | echo "📋 Verifying both signed executables in final distribution:" echo "Main executable:" - ls -la ui/desktop/dist-windows/Goose.exe - osslsigncode verify ui/desktop/dist-windows/Goose.exe + ls -la ui/desktop/dist-windows/goose.exe + osslsigncode verify ui/desktop/dist-windows/goose.exe echo "✅ Main executable signature verification passed" echo "Backend executable:" @@ -387,18 +387,18 @@ jobs: echo "📦 Creating Windows zip package..." # Create a zip file from the dist-windows directory - zip -r "Goose-win32-x64.zip" dist-windows/ + zip -r "goose-win32-x64.zip" dist-windows/ echo "✅ Windows zip package created:" - ls -la Goose-win32-x64.zip + ls -la goose-win32-x64.zip # Also create the zip in the expected output structure for consistency - mkdir -p out/Goose-win32-x64/ - cp Goose-win32-x64.zip out/Goose-win32-x64/ + mkdir -p out/goose-win32-x64/ + cp goose-win32-x64.zip out/goose-win32-x64/ # 11) Upload the final Windows build - name: Upload Windows build artifacts uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # pin@v4 with: - name: Goose-win32-x64 - path: ui/desktop/out/Goose-win32-x64/Goose-win32-x64.zip + name: goose-win32-x64 + path: ui/desktop/out/goose-win32-x64/goose-win32-x64.zip diff --git a/.github/workflows/bundle-desktop.yml b/.github/workflows/bundle-desktop.yml index e371de242671..308bcd1cbe7e 100644 --- a/.github/workflows/bundle-desktop.yml +++ b/.github/workflows/bundle-desktop.yml @@ -226,10 +226,10 @@ jobs: source_job_url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" unsigned_url="s3://block-goose-artifacts-bucket-production/unsigned/goose-${GITHUB_SHA}-${{ github.run_id }}-arm64.zip" - zip -q -u -r out/Goose-darwin-arm64/Goose.zip entitlements.plist + zip -q -u -r out/goose-darwin-arm64/goose.zip entitlements.plist # upload unsigned goose to transfer bucket so it can be passed to lambda - aws s3 cp --quiet out/Goose-darwin-arm64/Goose.zip "${unsigned_url}" + aws s3 cp --quiet out/goose-darwin-arm64/goose.zip "${unsigned_url}" # begin signing echo "🚀 launching signing process" @@ -281,7 +281,7 @@ jobs: # download the signed app from S3 echo "⬇️ downloading signed app" - aws s3 cp --quiet "${signed_url}" out/Goose-darwin-arm64/Goose.zip + aws s3 cp --quiet "${signed_url}" out/goose-darwin-arm64/goose.zip working-directory: ui/desktop - name: Final cleanup before artifact upload @@ -296,26 +296,26 @@ jobs: id: upload-app-bundle uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # pin@v4 with: - name: Goose-darwin-arm64 - path: ui/desktop/out/Goose-darwin-arm64/Goose.zip + name: goose-darwin-arm64 + path: ui/desktop/out/goose-darwin-arm64/goose.zip - name: Quick launch test (macOS) if: ${{ inputs.quick_test }} run: | # Ensure no quarantine attributes (if needed) - xattr -cr "ui/desktop/out/Goose-darwin-arm64/Goose.app" - echo "Opening Goose.app..." - open -g "ui/desktop/out/Goose-darwin-arm64/Goose.app" + xattr -cr "ui/desktop/out/goose-darwin-arm64/goose.app" + echo "Opening goose.app..." + open -g "ui/desktop/out/goose-darwin-arm64/goose.app" # Give the app a few seconds to start and write logs sleep 5 # Check if it's running - if pgrep -f "Goose.app/Contents/MacOS/Goose" > /dev/null; then + if pgrep -f "goose.app/Contents/MacOS/goose" > /dev/null; then echo "App appears to be running." else echo "App did not stay open. Possible crash or startup error." exit 1 fi # Kill the app to clean up - pkill -f "Goose.app/Contents/MacOS/Goose" \ No newline at end of file + pkill -f "goose.app/Contents/MacOS/goose" \ No newline at end of file diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index dfe0436912d3..bc9468a759c1 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -117,7 +117,6 @@ jobs: artifacts: | goose-*.tar.bz2 goose-*.zip - Goose*.zip *.deb *.rpm download_cli.sh diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e037d2a00654..0737cad68ff0 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -122,7 +122,6 @@ jobs: artifacts: | goose-*.tar.bz2 goose-*.zip - Goose*.zip *.deb *.rpm download_cli.sh diff --git a/.github/workflows/pr-comment-bundle-intel.yml b/.github/workflows/pr-comment-bundle-intel.yml index 142df6af918b..c30c9495cabf 100644 --- a/.github/workflows/pr-comment-bundle-intel.yml +++ b/.github/workflows/pr-comment-bundle-intel.yml @@ -81,7 +81,7 @@ jobs: - name: Download Intel artifact uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # pin@v4 with: - name: Goose-darwin-x64 + name: goose-darwin-x64 path: intel-dist - name: Comment on PR with Intel download link @@ -91,9 +91,9 @@ jobs: body: | ### macOS Intel Desktop App (x64) - [💻 Download macOS Desktop App (Intel x64, signed)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/Goose-darwin-x64.zip) + [💻 Download macOS Desktop App (Intel x64, signed)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/goose-darwin-x64.zip) **Instructions:** - After downloading, unzip the file and drag the Goose.app to your Applications folder. The app is signed and notarized for macOS. + After downloading, unzip the file and drag the goose.app to your Applications folder. The app is signed and notarized for macOS. This link is provided by nightly.link and will work even if you're not logged into GitHub. \ No newline at end of file diff --git a/.github/workflows/pr-comment-bundle-windows.yml b/.github/workflows/pr-comment-bundle-windows.yml index 212fde17d402..63f26369913b 100644 --- a/.github/workflows/pr-comment-bundle-windows.yml +++ b/.github/workflows/pr-comment-bundle-windows.yml @@ -95,6 +95,6 @@ jobs: [🪟 Download Windows Desktop App (x64, signed)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/desktop-windows-dist.zip) **Instructions:** - After downloading, unzip the file and run Goose.exe. The app is signed for Windows. + After downloading, unzip the file and run goose.exe. The app is signed for Windows. This link is provided by nightly.link and will work even if you're not logged into GitHub. diff --git a/.github/workflows/pr-comment-bundle.yml b/.github/workflows/pr-comment-bundle.yml index 3f6b4a56e5a7..e9d52656e82a 100644 --- a/.github/workflows/pr-comment-bundle.yml +++ b/.github/workflows/pr-comment-bundle.yml @@ -125,7 +125,7 @@ jobs: - name: Download ARM64 artifact uses: actions/download-artifact@cc203385981b70ca67e1cc392babf9cc229d5806 # pin@v4 with: - name: Goose-darwin-arm64 + name: goose-darwin-arm64 path: arm64-dist - name: Comment on PR with ARM64 download link @@ -135,7 +135,7 @@ jobs: body: | ### macOS ARM64 Desktop App (Apple Silicon) - [📱 Download macOS Desktop App (arm64, unsigned)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/Goose-darwin-arm64.zip) + [📱 Download macOS Desktop App (arm64, unsigned)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/goose-darwin-arm64.zip) **Instructions:** - After downloading, unzip the file and drag the Goose.app to a location you prefer. The app is unsigned, so to run it run `xattr -r -d com.apple.quarantine '/path/to/Goose.app'` and then open the app \ No newline at end of file + After downloading, unzip the file and drag the goose.app to a location you prefer. The app is unsigned, so to run it run `xattr -r -d com.apple.quarantine '/path/to/goose.app'` and then open the app \ No newline at end of file diff --git a/.github/workflows/release-branches.yml b/.github/workflows/release-branches.yml index d77cfd39d9cc..73eb91a1ef24 100644 --- a/.github/workflows/release-branches.yml +++ b/.github/workflows/release-branches.yml @@ -1,4 +1,4 @@ -name: Build Goose Release Candidate +name: Build goose release candidate on: pull_request: @@ -24,7 +24,7 @@ jobs: body: | ### macOS ARM64 Desktop App (Apple Silicon) - [📱 Download macOS Desktop App (arm64, unsigned)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/Goose-darwin-arm64.zip) + [📱 Download macOS Desktop App (arm64, unsigned)](https://nightly.link/${{ github.repository }}/actions/runs/${{ github.run_id }}/goose-darwin-arm64.zip) **Instructions:** - After downloading, unzip the file and drag the Goose.app to a location you prefer. The app is unsigned, so to run it run `xattr -r -d com.apple.quarantine '/path/to/Goose.app'` and then open the app + After downloading, unzip the file and drag the goose.app to a location you prefer. The app is unsigned, so to run it run `xattr -r -d com.apple.quarantine '/path/to/goose.app'` and then open the app diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a475db4c48c7..b8de131bc519 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -106,7 +106,6 @@ jobs: artifacts: | goose-*.tar.bz2 goose-*.zip - Goose*.zip *.deb *.rpm download_cli.sh @@ -124,7 +123,6 @@ jobs: artifacts: | goose-*.tar.bz2 goose-*.zip - Goose*.zip *.deb *.rpm download_cli.sh diff --git a/.github/workflows/test-finder.yml b/.github/workflows/test-finder.yml index 9a634758f813..c4d31e564682 100644 --- a/.github/workflows/test-finder.yml +++ b/.github/workflows/test-finder.yml @@ -161,13 +161,13 @@ jobs: body: | ## 🤖 Automated Test Addition - This PR was automatically generated by Goose to improve test coverage. + This PR was automatically generated by goose to improve test coverage. ### What changed? Added a unit test for a previously untested function. ### Why? - Part of our daily automated test coverage improvement initiative. Goose analyzes the codebase to find untested but important functions and creates focused unit tests for them. + Part of our daily automated test coverage improvement initiative. goose analyzes the codebase to find untested but important functions and creates focused unit tests for them. ### Review checklist - [ ] Test is meaningful and actually tests the function diff --git a/.github/workflows/validate-recipe-pr.yml b/.github/workflows/validate-recipe-pr.yml index d123d972ccaf..ad412659cf17 100644 --- a/.github/workflows/validate-recipe-pr.yml +++ b/.github/workflows/validate-recipe-pr.yml @@ -30,7 +30,7 @@ jobs: with: node-version: '20' - - name: Install and Configure Goose + - name: Install and Configure goose run: | mkdir -p /home/runner/.local/bin curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh \ @@ -219,7 +219,7 @@ jobs: 2. If approved, we'll run a security scan 3. Once merged, you'll receive $10 in OpenRouter credits (if email provided) - Thanks for contributing to the Goose Recipe Cookbook! 🎉`; + Thanks for contributing to the goose Recipe Cookbook! 🎉`; } else { // Read validation details from file let validationDetails = ''; diff --git a/.gitignore b/.gitignore index 4ad84410cb6c..1d9a64a7278c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,7 +24,7 @@ target/ ./ui/desktop/node_modules ./ui/desktop/out -# Generated Goose DLLs (built at build time, not checked in) +# Generated goose DLLs (built at build time, not checked in) ui/desktop/src/bin/goose_ffi.dll ui/desktop/src/bin/goose_llm.dll diff --git a/ACCEPTABLE_USAGE.md b/ACCEPTABLE_USAGE.md index 6551ebc7c4d4..e414c2ed907f 100644 --- a/ACCEPTABLE_USAGE.md +++ b/ACCEPTABLE_USAGE.md @@ -2,9 +2,9 @@ --- -We want everyone to use Goose safely and responsibly. You agree you will not use, or allow others to use, Goose to: +We want everyone to use goose safely and responsibly. You agree you will not use, or allow others to use, goose to: -### 1. Violate the law or others’ rights, including use of Goose to: +### 1. Violate the law or others’ rights, including use of goose to: a. Engage in, promote, generate, contribute to, encourage, plan, incite, or further illegal or unlawful activity or content, such as: - Violence or terrorism @@ -26,7 +26,7 @@ f. Infringe or misappropriate any third-party rights, including intellectual pro g. Create, generate, or facilitate the creation of malicious code, malware, computer viruses, or do anything else in an intentional or malicious way without third-party consent that could disable, overburden, interfere with, or impair the proper working, integrity, operation, or appearance of a website or computer system. -### 2. Engage in, promote, incite, facilitate, or assist in the planning or development of activities that present a risk of death or bodily harm to individuals, including use of Goose related to the following: +### 2. Engage in, promote, incite, facilitate, or assist in the planning or development of activities that present a risk of death or bodily harm to individuals, including use of goose related to the following: a. Guns and illegal weapons (including weapon development). @@ -34,7 +34,7 @@ b. Illegal drugs and regulated/controlled substances. c. Any content intended to incite or promote violence, abuse, or any infliction of bodily harm to an individual. -### 3. Intentionally deceive or mislead others or engage in other abusive or fraudulent activities, including use of Goose related to the following: +### 3. Intentionally deceive or mislead others or engage in other abusive or fraudulent activities, including use of goose related to the following: a. Generating, promoting, or furthering fraud or fraudulent activities, scams, phishing, or malware. @@ -50,7 +50,7 @@ f. Compromising security systems or gaining unauthorized access to computer syst --- -You also agree that you will not use, or allow others to use, Goose in violation of any agreements that you have with, or commitments you have made to, third parties. This may include any licenses, agreements, and other terms that apply to the models you use with Goose. +You also agree that you will not use, or allow others to use, goose in violation of any agreements that you have with, or commitments you have made to, third parties. This may include any licenses, agreements, and other terms that apply to the models you use with goose. --- diff --git a/AGENTS.md b/AGENTS.md index 93b04af6ffa3..b6d592dd6a25 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS Instructions -Goose is an AI agent framework in Rust with CLI and Electron desktop interfaces. +goose is an AI agent framework in Rust with CLI and Electron desktop interfaces. ## Setup ```bash diff --git a/BUILDING_DOCKER.md b/BUILDING_DOCKER.md index 2f244802bafa..ef3b62e0bed7 100644 --- a/BUILDING_DOCKER.md +++ b/BUILDING_DOCKER.md @@ -1,18 +1,18 @@ -# Building and Running Goose with Docker +# Building and Running goose with Docker -This guide covers building Docker images for Goose CLI for production use, CI/CD pipelines, and local development. +This guide covers building Docker images for goose CLI for production use, CI/CD pipelines, and local development. ## Quick Start ### Using Pre-built Images -The easiest way to use Goose with Docker is to pull the pre-built image from GitHub Container Registry: +The easiest way to use goose with Docker is to pull the pre-built image from GitHub Container Registry: ```bash # Pull the latest image docker pull ghcr.io/block/goose:latest -# Run Goose CLI +# Run goose CLI docker run --rm ghcr.io/block/goose:latest --version # Run with LLM configuration @@ -61,7 +61,7 @@ For multi-platform builds: docker buildx build --platform linux/amd64,linux/arm64 -t goose:multi . ``` -## Running Goose in Docker +## Running goose in Docker ### CLI Mode @@ -135,7 +135,7 @@ docker-compose run --rm goose session ### Environment Variables -The Docker image accepts all standard Goose environment variables: +The Docker image accepts all standard goose environment variables: - `GOOSE_PROVIDER`: LLM provider (openai, anthropic, google, etc.) - `GOOSE_MODEL`: Model to use (gpt-4o, claude-sonnet-4, etc.) @@ -188,7 +188,7 @@ jobs: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} steps: - uses: actions/checkout@v4 - - name: Run Goose analysis + - name: Run goose analysis run: | goose run -t "Review this codebase for security issues" ``` @@ -222,7 +222,7 @@ analyze: ### Included Tools -The image includes essential tools for Goose operation: +The image includes essential tools for goose operation: - `git` - Version control operations - `curl` - HTTP requests - `ca-certificates` - SSL/TLS support @@ -317,6 +317,6 @@ When contributing Docker-related changes: ## Related Documentation -- [Goose in Docker Tutorial](documentation/docs/tutorials/goose-in-docker.md) - Step-by-step tutorial +- [goose in Docker Tutorial](documentation/docs/tutorials/goose-in-docker.md) - Step-by-step tutorial - [Installation Guide](https://block.github.io/goose/docs/getting-started/installation) - All installation methods - [Configuration Guide](https://block.github.io/goose/docs/guides/config-file) - Detailed configuration options diff --git a/BUILDING_LINUX.md b/BUILDING_LINUX.md index 837d03a42d0d..76cb30fa45a5 100644 --- a/BUILDING_LINUX.md +++ b/BUILDING_LINUX.md @@ -1,6 +1,6 @@ -# Building Goose Desktop on Linux +# Building goose Desktop on Linux -This guide covers building the Goose Desktop application from source on various Linux distributions. +This guide covers building the goose Desktop application from source on various Linux distributions. ## Prerequisites @@ -76,7 +76,7 @@ Works on all Linux distributions: npm run make -- --targets=@electron-forge/maker-zip ``` -Output: `out/make/zip/linux/x64/Goose-linux-x64-{version}.zip` +Output: `out/make/zip/linux/x64/goose-linux-x64-{version}.zip` #### Option B: DEB Package For Debian/Ubuntu systems: @@ -95,7 +95,7 @@ npm run make #### From Build Directory ```bash -./out/Goose-linux-x64/Goose +./out/goose-linux-x64/goose ``` #### Install DEB Package (if built) @@ -122,8 +122,8 @@ These are harmless and don't affect functionality. To suppress them, create a la ```bash #!/bin/bash -cd /path/to/goose/ui/desktop/out/Goose-linux-x64 -./Goose 2>&1 | grep -v "GLib-GObject" | grep -v "browser_main_loop" +cd /path/to/goose/ui/desktop/out/goose-linux-x64 +./goose 2>&1 | grep -v "GLib-GObject" | grep -v "browser_main_loop" ``` #### Server Binary Not Found @@ -155,10 +155,10 @@ For active development: Create `~/.local/share/applications/goose.desktop`: ```ini [Desktop Entry] -Name=Goose AI Agent +Name=goose AI Agent Comment=Local AI agent for development tasks -Exec=/path/to/goose/ui/desktop/out/Goose-linux-x64/Goose %U -Icon=/path/to/goose/ui/desktop/out/Goose-linux-x64/resources/app.asar.unpacked/src/images/icon.png +Exec=/path/to/goose/ui/desktop/out/goose-linux-x64/goose %U +Icon=/path/to/goose/ui/desktop/out/goose-linux-x64/resources/app.asar.unpacked/src/images/icon.png Terminal=false Type=Application Categories=Development;Utility; @@ -169,8 +169,8 @@ MimeType=x-scheme-handler/goose ### System-wide Installation To install system-wide: ```bash -sudo cp -r out/Goose-linux-x64 /opt/goose -sudo ln -s /opt/goose/Goose /usr/local/bin/goose-gui +sudo cp -r out/goose-linux-x64 /opt/goose +sudo ln -s /opt/goose/goose /usr/local/bin/goose-gui ``` ## Contributing diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2eeff78b1d05..8c3d8607fda5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contribution Guide -Goose is open source! +goose is open source! We welcome pull requests for general contributions! If you have a larger new feature or any questions on how to develop a fix, we recommend you open an issue before starting. @@ -9,7 +9,7 @@ We welcome pull requests for general contributions! If you have a larger new fea ## Prerequisites -Goose includes rust binaries alongside an electron app for the GUI. To work +goose includes rust binaries alongside an electron app for the GUI. To work on the rust backend, you will need to [install rust and cargo][rustup]. To work on the App, you will also need to [install node and npm][nvm] - we recommend through nvm. @@ -220,10 +220,10 @@ reuse it. For things like automations or to test without doing official setup, y set the relevant env vars for that provider. For example `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `DATABRICKS_HOST`. Refer to the provider details for more info on required keys. -## Enable traces in Goose with [locally hosted Langfuse](https://langfuse.com/docs/deployment/self-host) +## Enable traces in goose with [locally hosted Langfuse](https://langfuse.com/docs/deployment/self-host) - Start a local Langfuse using the docs [here](https://langfuse.com/self-hosting/docker-compose). Create an organization and project and create API credentials. -- Set the environment variables so that Goose can connect to the langfuse server: +- Set the environment variables so that goose can connect to the langfuse server: ``` export LANGFUSE_INIT_PROJECT_PUBLIC_KEY=publickey-local @@ -251,14 +251,14 @@ git commit --signoff ... ## Other Ways to Contribute -There are numerous ways to be an open source contributor and contribute to Goose. We're here to help you on your way! Here are some suggestions to get started. If you have any questions or need help, feel free to reach out to us on [Discord](https://discord.gg/block-opensource). +There are numerous ways to be an open source contributor and contribute to goose. We're here to help you on your way! Here are some suggestions to get started. If you have any questions or need help, feel free to reach out to us on [Discord](https://discord.gg/block-opensource). -- **Stars on GitHub:** If you resonate with our project and find it valuable, consider starring our Goose on GitHub! 🌟 +- **Stars on GitHub:** If you resonate with our project and find it valuable, consider starring our goose on GitHub! 🌟 - **Ask Questions:** Your questions not only help us improve but also benefit the community. If you have a question, don't hesitate to ask it on [Discord](https://discord.gg/block-opensource). -- **Give Feedback:** Have a feature you want to see or encounter an issue with Goose, [click here to open an issue](https://github.com/block/goose/issues/new/choose), [start a discussion](https://github.com/block/goose/discussions) or tell us on Discord. +- **Give Feedback:** Have a feature you want to see or encounter an issue with goose, [click here to open an issue](https://github.com/block/goose/issues/new/choose), [start a discussion](https://github.com/block/goose/discussions) or tell us on Discord. - **Participate in Community Events:** We host a variety of community events and livestreams on Discord every month, ranging from workshops to brainstorming sessions. You can subscribe to our [events calendar](https://calget.com/c/t7jszrie) or follow us on [social media](https://linktr.ee/goose_oss) to stay in touch. - **Improve Documentation:** Good documentation is key to the success of any project. You can help improve the quality of our existing docs or add new pages. - **Help Other Members:** See another community member stuck? Or a contributor blocked by a question you know the answer to? Reply to community threads or do a code review for others to help. - **Showcase Your Work:** Working on a project or written a blog post recently? Share it with the community in our [#share-your-work](https://discord.com/channels/1287729918100246654/1287729920797179958) channel. - **Give Shoutouts:** Is there a project you love or a community/staff who's been especially helpful? Feel free to give them a shoutout in our [#general](https://discord.com/channels/1287729918100246654/1287729920797179957) channel. -- **Spread the Word:** Help us reach more people by sharing Goose's project, website, YouTube, and/or Twitter/X. +- **Spread the Word:** Help us reach more people by sharing goose's project, website, YouTube, and/or Twitter/X. diff --git a/CONTRIBUTING_RECIPES.md b/CONTRIBUTING_RECIPES.md index c3b2b79c6667..a9bbcdbf8104 100644 --- a/CONTRIBUTING_RECIPES.md +++ b/CONTRIBUTING_RECIPES.md @@ -1,6 +1,6 @@ -# 🍳 Contributing Recipes to Goose Cookbook +# 🍳 Contributing Recipes to goose Cookbook -Thank you for your interest in contributing to the Goose Recipe Cookbook! This guide will walk you through the process of submitting your own recipe. +Thank you for your interest in contributing to the goose Recipe Cookbook! This guide will walk you through the process of submitting your own recipe. ## 💰 Get Rewarded diff --git a/Dockerfile b/Dockerfile index 20280463f5e4..5500caf03954 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile:1.4 -# Goose CLI and Server Docker Image +# goose CLI and Server Docker Image # Multi-stage build for minimal final image size # Build stage @@ -67,7 +67,7 @@ ENTRYPOINT ["/usr/local/bin/goose"] CMD ["--help"] # Labels for metadata -LABEL org.opencontainers.image.title="Goose" -LABEL org.opencontainers.image.description="Goose CLI" +LABEL org.opencontainers.image.title="goose" +LABEL org.opencontainers.image.description="goose CLI" LABEL org.opencontainers.image.vendor="Block" LABEL org.opencontainers.image.source="https://github.com/block/goose" diff --git a/JOKES.md b/JOKES.md index 6e4959bebdd8..cc8160589531 100644 --- a/JOKES.md +++ b/JOKES.md @@ -1,6 +1,6 @@ -# Goose Jokes 🦢 +# goose Jokes 🦢 -## Why did the Goose become a developer? +## Why did the goose become a developer? Because it wanted to help debug all those "fowl" errors in the code! diff --git a/Justfile b/Justfile index 30a7b636c170..14044e89021e 100644 --- a/Justfile +++ b/Justfile @@ -63,7 +63,7 @@ copy-binary BUILD_MODE="release": echo "Copying goose CLI binary from target/{{BUILD_MODE}}..."; \ cp -p ./target/{{BUILD_MODE}}/goose ./ui/desktop/src/bin/; \ else \ - echo "Goose CLI binary not found in target/{{BUILD_MODE}}"; \ + echo "goose CLI binary not found in target/{{BUILD_MODE}}"; \ exit 1; \ fi @if [ -f ./temporal-service/temporal-service ]; then \ @@ -148,7 +148,7 @@ run-ui-only: cd ui/desktop && npm install && npm run start-gui debug-ui: - @echo "🚀 Starting Goose frontend in external backend mode" + @echo "🚀 Starting goose frontend in external backend mode" cd ui/desktop && \ export GOOSE_EXTERNAL_BACKEND=true && \ export GOOSE_EXTERNAL_PORT=3000 && \ @@ -163,7 +163,7 @@ debug-ui: # 4. If not auto-detected, click "Configure" and add: localhost:9229 debug-ui-main-process: - @echo "🔍 Starting Goose UI with main process debugging enabled" + @echo "🔍 Starting goose UI with main process debugging enabled" @just release-binary cd ui/desktop && \ npm install && \ diff --git a/README.md b/README.md index f340ff3fabce..94c3fce7d230 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,13 @@ Designed for maximum flexibility, goose works with any LLM and supports multi-mo - [Documentation](https://block.github.io/goose/docs/category/getting-started) -# A Little Goose Humor 🦢 +# a little goose humor 🦢 > Why did the developer choose goose as their AI agent? > > Because it always helps them "migrate" their code to production! 🚀 -# Goose Around with Us +# goose around with us - [Discord](https://discord.gg/block-opensource) - [YouTube](https://www.youtube.com/@goose-oss) - [LinkedIn](https://www.linkedin.com/company/goose-oss) diff --git a/SECURITY.md b/SECURITY.md index 02e637ad79b9..96cd246e6243 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,14 +1,14 @@ > [!CAUTION] -> Goose is a developer agent with access to a variety of systems that perform actions on behalf of the user on their local machine. Please be aware that since developer agents have the ability to run code and take actions on your computer, they pose a unique risk compared to chat based LLM interactions. While most foundational models include baseline protections against prompt injection, there is still inherent risk when using Goose to interact with the internet or through other untrusted data sources. To minimize these risks, consider taking the following precautions: +> goose is a developer agent with access to a variety of systems that perform actions on behalf of the user on their local machine. Please be aware that since developer agents have the ability to run code and take actions on your computer, they pose a unique risk compared to chat based LLM interactions. While most foundational models include baseline protections against prompt injection, there is still inherent risk when using goose to interact with the internet or through other untrusted data sources. To minimize these risks, consider taking the following precautions: > > - Use a dedicated virtual machine or container (Docker/Kubernetes) with limited privileged capabilities. This will minimize the risk of local system attacks or unintended access to critical system resources. -> - Always review the code and tests generated by Goose for accuracy. -> - Avoid providing Goose with sensitive or confidential information to prevent information leakage. +> - Always review the code and tests generated by goose for accuracy. +> - Avoid providing goose with sensitive or confidential information to prevent information leakage. > - For any systems and actions that may result in significant changes, always require human confirmation. -> - If possible, break down complex Goose instructions into smaller, isolated operations. This reduces the risk of an errant command affecting multiple parts of the system at once and makes it easier to detect abnormal behaviour. -> - Only connect Goose with MCP extensions that you have reviewed +> - If possible, break down complex goose instructions into smaller, isolated operations. This reduces the risk of an errant command affecting multiple parts of the system at once and makes it easier to detect abnormal behaviour. +> - Only connect goose with MCP extensions that you have reviewed > -> In some circumstances, Goose may follow commands found embedded in content even if those commands conflict with the task given to Goose. We suggest taking the precautions above to limit risks from prompt injection. By taking these steps, you can reduce the potential security risks associated with developer agents and better protect your systems and users. +> In some circumstances, goose may follow commands found embedded in content even if those commands conflict with the task given to goose. We suggest taking the precautions above to limit risks from prompt injection. By taking these steps, you can reduce the potential security risks associated with developer agents and better protect your systems and users. > > Block recognizes the important contributions our open source community makes. Part of keeping Block and its customers safe is by making sure that we find and fix any security issues found in our open source projects. If you find a security vulnerability, we encourage you to privately report it in the repository’s Security tab -> Report a vulnerability. > diff --git a/crates/goose-bench/README.md b/crates/goose-bench/README.md index 930e8e7cd4d6..f03f1eec2552 100644 --- a/crates/goose-bench/README.md +++ b/crates/goose-bench/README.md @@ -1,6 +1,6 @@ -# Goose Benchmarking Framework +# goose Benchmarking Framework -The `goose-bench` crate provides a framework for benchmarking and evaluating LLM models with the Goose framework. This tool helps quantify model performance across various tasks and generate structured reports. +The `goose-bench` crate provides a framework for benchmarking and evaluating LLM models with the goose framework. This tool helps quantify model performance across various tasks and generate structured reports. ## Features diff --git a/crates/goose-cli/WEB_INTERFACE.md b/crates/goose-cli/WEB_INTERFACE.md index 3665ef97564a..a4a51309f443 100644 --- a/crates/goose-cli/WEB_INTERFACE.md +++ b/crates/goose-cli/WEB_INTERFACE.md @@ -1,6 +1,6 @@ -# Goose Web Interface +# goose Web Interface -The `goose web` command provides a (preview) web-based chat interface for interacting with Goose. +The `goose web` command provides a (preview) web-based chat interface for interacting with goose. Do not expose this publicly - this is in a preview state as an option. ## Usage @@ -21,7 +21,7 @@ goose web --host 0.0.0.0 --port 8080 ## Features -- **Real-time chat interface**: Communicate with Goose through a clean web UI +- **Real-time chat interface**: Communicate with goose through a clean web UI - **WebSocket support**: Real-time message streaming - **Session management**: Each browser tab maintains its own session - **Responsive design**: Works on desktop and mobile devices @@ -53,9 +53,9 @@ The web interface provides: - [ ] Code syntax highlighting - [ ] Export chat history -### Integration with Goose Agent +### Integration with goose Agent -The web server creates an instance of the Goose Agent and processes messages through the same pipeline as the CLI. However, some features like: +The web server creates an instance of the goose Agent and processes messages through the same pipeline as the CLI. However, some features like: - Extension management - Tool confirmations - File system interactions diff --git a/crates/goose-cli/src/cli.rs b/crates/goose-cli/src/cli.rs index a760a8b98fd1..ba6cfe31cbbe 100644 --- a/crates/goose-cli/src/cli.rs +++ b/crates/goose-cli/src/cli.rs @@ -302,12 +302,12 @@ enum RecipeCommand { #[derive(Subcommand)] enum Command { - /// Configure Goose settings - #[command(about = "Configure Goose settings")] + /// Configure goose settings + #[command(about = "Configure goose settings")] Configure {}, - /// Display Goose configuration information - #[command(about = "Display Goose information")] + /// Display goose configuration information + #[command(about = "Display goose information")] Info { /// Show verbose information including current configuration #[arg(short, long, help = "Show verbose information including config.yaml")] @@ -318,8 +318,8 @@ enum Command { #[command(about = "Run one of the mcp servers bundled with goose")] Mcp { name: String }, - /// Run Goose as an ACP (Agent Client Protocol) agent - #[command(about = "Run Goose as an ACP agent server on stdio")] + /// Run goose as an ACP (Agent Client Protocol) agent + #[command(about = "Run goose as an ACP agent server on stdio")] Acp {}, /// Start or resume interactive chat sessions @@ -445,8 +445,8 @@ enum Command { short = 't', long = "text", value_name = "TEXT", - help = "Input text to provide to Goose directly", - long_help = "Input text containing commands for Goose. Use this in lieu of the instructions argument.", + help = "Input text to provide to goose directly", + long_help = "Input text containing commands for goose. Use this in lieu of the instructions argument.", conflicts_with = "instructions", conflicts_with = "recipe" )] @@ -656,7 +656,7 @@ enum Command { command: SchedulerCommand, }, - /// Update the Goose CLI version + /// Update the goose CLI version #[command(about = "Update the goose CLI version")] Update { /// Update to canary version @@ -668,7 +668,7 @@ enum Command { )] canary: bool, - /// Enforce to re-configure Goose during update + /// Enforce to re-configure goose during update #[arg(short, long, help = "Enforce to re-configure goose during update")] reconfigure: bool, }, diff --git a/crates/goose-cli/src/commands/acp.rs b/crates/goose-cli/src/commands/acp.rs index bedfbf6a885f..f387364e5d24 100644 --- a/crates/goose-cli/src/commands/acp.rs +++ b/crates/goose-cli/src/commands/acp.rs @@ -19,14 +19,14 @@ use tokio_util::sync::CancellationToken; use tracing::{error, info, warn}; use url::Url; -/// Represents a single Goose session for ACP +/// Represents a single goose session for ACP struct GooseSession { messages: Conversation, tool_call_ids: HashMap, // Maps internal tool IDs to ACP tool call IDs cancel_token: Option, // Active cancellation token for prompt processing } -/// Goose ACP Agent implementation that connects to real Goose agents +/// goose ACP Agent implementation that connects to real goose agents struct GooseAcpAgent { session_update_tx: mpsc::UnboundedSender<(acp::SessionNotification, oneshot::Sender<()>)>, sessions: Arc>>, diff --git a/crates/goose-cli/src/commands/configure.rs b/crates/goose-cli/src/commands/configure.rs index 52212dee5a34..ea18be3796bd 100644 --- a/crates/goose-cli/src/commands/configure.rs +++ b/crates/goose-cli/src/commands/configure.rs @@ -257,8 +257,8 @@ pub async fn handle_configure() -> Result<(), Box> { .item("remove", "Remove Extension", "Remove an extension") .item( "settings", - "Goose Settings", - "Set the Goose Mode, Tool Output, Tool Permissions, Experiment, Goose recipe github repo and more", + "goose settings", + "Set the goose mode, Tool Output, Tool Permissions, Experiment, goose recipe github repo and more", ) .interact()?; @@ -645,7 +645,7 @@ pub async fn configure_provider_dialog() -> Result> { let result = provider .complete( - "You are an AI agent called Goose. You use tools of connected extensions to solve problems.", + "You are an AI agent called goose. You use tools of connected extensions to solve problems.", &messages, &tools.into_iter().collect::>() ).await; @@ -725,7 +725,7 @@ pub fn configure_extensions_dialog() -> Result<(), Box> { .item( "built-in", "Built-in Extension", - "Use an extension that comes with Goose", + "Use an extension that comes with goose", ) .item( "stdio", @@ -1203,7 +1203,7 @@ pub fn remove_extension_dialog() -> Result<(), Box> { pub async fn configure_settings_dialog() -> Result<(), Box> { let setting_type = cliclack::select("What setting would you like to configure?") - .item("goose_mode", "Goose Mode", "Configure Goose mode") + .item("goose_mode", "goose mode", "Configure goose mode") .item( "goose_router_strategy", "Router Tool Selection Strategy", @@ -1231,8 +1231,8 @@ pub async fn configure_settings_dialog() -> Result<(), Box> { ) .item( "recipe", - "Goose recipe github repo", - "Goose will pull recipes from this repo if not found locally.", + "goose recipe github repo", + "goose will pull recipes from this repo if not found locally.", ) .item( "scheduler", @@ -1280,7 +1280,7 @@ pub fn configure_goose_mode_dialog() -> Result<(), Box> { let _ = cliclack::log::info("Notice: GOOSE_MODE environment variable is set and will override the configuration here."); } - let mode = cliclack::select("Which Goose mode would you like to configure?") + let mode = cliclack::select("Which goose mode would you like to configure?") .item( "auto", "Auto Mode", @@ -1591,7 +1591,7 @@ fn configure_recipe_dialog() -> Result<(), Box> { .ok() .or_else(|| config.get_param(key_name).unwrap_or(None)); let mut recipe_repo_input = cliclack::input( - "Enter your Goose Recipe Github repo (owner/repo): eg: my_org/goose-recipes", + "Enter your goose recipe Github repo (owner/repo): eg: my_org/goose-recipes", ) .required(false); if let Some(recipe_repo) = default_recipe_repo { @@ -1626,7 +1626,7 @@ fn configure_scheduler_dialog() -> Result<(), Box> { let scheduler_type = cliclack::select("Which scheduler type would you like to use?") .items(&[ - ("legacy", "Built-in Cron (Default)", "Uses Goose's built-in cron scheduler. Simple and reliable for basic scheduling needs."), + ("legacy", "Built-in Cron (Default)", "Uses goose's built-in cron scheduler. Simple and reliable for basic scheduling needs."), ("temporal", "Temporal", "Uses Temporal workflow engine for advanced scheduling features. Requires Temporal CLI to be installed.") ]) .interact()?; @@ -1651,7 +1651,7 @@ fn configure_scheduler_dialog() -> Result<(), Box> { println!(" • Temporal scheduler requires Temporal CLI to be installed"); println!(" • macOS: brew install temporal"); println!(" • Linux/Windows: https://github.com/temporalio/cli/releases"); - println!(" • If Temporal is unavailable, Goose will automatically fall back to the built-in scheduler"); + println!(" • If Temporal is unavailable, goose will automatically fall back to the built-in scheduler"); println!(" • The scheduling engines do not share the list of schedules"); } _ => unreachable!(), @@ -1685,7 +1685,7 @@ pub fn configure_max_turns_dialog() -> Result<(), Box> { config.set_param("GOOSE_MAX_TURNS", Value::from(max_turns))?; cliclack::outro(format!( - "Set maximum turns to {} - Goose will ask for input after {} consecutive actions", + "Set maximum turns to {} - goose will ask for input after {} consecutive actions", max_turns, max_turns ))?; @@ -1736,7 +1736,7 @@ pub async fn handle_openrouter_auth() -> Result<(), Box> { // Simple test request let test_result = provider .complete( - "You are Goose, an AI assistant.", + "You are goose, an AI assistant.", &[Message::user().with_text("Say 'Configuration test successful!'")], &[], ) @@ -1773,7 +1773,7 @@ pub async fn handle_openrouter_auth() -> Result<(), Box> { } } - cliclack::outro("OpenRouter setup complete! You can now use Goose.")?; + cliclack::outro("OpenRouter setup complete! You can now use goose.")?; } Err(e) => { eprintln!("⚠️ Configuration test failed: {}", e); @@ -1839,7 +1839,7 @@ pub async fn handle_tetrate_auth() -> Result<(), Box> { // Simple test request let test_result = provider .complete( - "You are Goose, an AI assistant.", + "You are goose, an AI assistant.", &[Message::user().with_text("Say 'Configuration test successful!'")], &[], ) @@ -1876,7 +1876,7 @@ pub async fn handle_tetrate_auth() -> Result<(), Box> { } } - cliclack::outro("Tetrate Agent Router Service setup complete! You can now use Goose.")?; + cliclack::outro("Tetrate Agent Router Service setup complete! You can now use goose.")?; } Err(e) => { eprintln!("⚠️ Configuration test failed: {}", e); diff --git a/crates/goose-cli/src/commands/info.rs b/crates/goose-cli/src/commands/info.rs index 9314309bd764..e6b22985e509 100644 --- a/crates/goose-cli/src/commands/info.rs +++ b/crates/goose-cli/src/commands/info.rs @@ -30,19 +30,19 @@ pub fn handle_info(verbose: bool) -> Result<()> { let basic_padding = paths.iter().map(|(l, _)| l.len()).max().unwrap_or(0) + 4; // Print version information - println!("{}", style("Goose Version:").cyan().bold()); + println!("{}", style("goose Version:").cyan().bold()); print_aligned("Version:", env!("CARGO_PKG_VERSION"), basic_padding); println!(); // Print location information - println!("{}", style("Goose Locations:").cyan().bold()); + println!("{}", style("goose Locations:").cyan().bold()); for (label, path) in &paths { print_aligned(label, path, basic_padding); } // Print verbose info if requested if verbose { - println!("\n{}", style("Goose Configuration:").cyan().bold()); + println!("\n{}", style("goose Configuration:").cyan().bold()); match config.load_values() { Ok(values) => { if values.is_empty() { diff --git a/crates/goose-cli/src/commands/project.rs b/crates/goose-cli/src/commands/project.rs index e049e66e323e..7937e5b04f0a 100644 --- a/crates/goose-cli/src/commands/project.rs +++ b/crates/goose-cli/src/commands/project.rs @@ -27,7 +27,7 @@ pub fn handle_project_default() -> Result<()> { let status = command.status()?; if !status.success() { - println!("Failed to run Goose. Exit code: {:?}", status.code()); + println!("Failed to run goose. Exit code: {:?}", status.code()); } return Ok(()); } @@ -65,7 +65,7 @@ pub fn handle_project_default() -> Result<()> { }; // Ask the user what they want to do - let _ = intro("Goose Project Manager"); + let _ = intro("goose Project Manager"); let current_dir = std::env::current_dir()?; let current_dir_display = current_dir.display(); @@ -101,7 +101,7 @@ pub fn handle_project_default() -> Result<()> { // Change to the project directory std::env::set_current_dir(project_dir)?; - // Build the command to run Goose + // Build the command to run goose let mut command = std::process::Command::new("goose"); command.arg("session"); @@ -114,7 +114,7 @@ pub fn handle_project_default() -> Result<()> { let status = command.status()?; if !status.success() { - println!("Failed to run Goose. Exit code: {:?}", status.code()); + println!("Failed to run goose. Exit code: {:?}", status.code()); } } "fresh" => { @@ -126,7 +126,7 @@ pub fn handle_project_default() -> Result<()> { // Change to the project directory std::env::set_current_dir(project_dir)?; - // Build the command to run Goose with a fresh session + // Build the command to run goose with a fresh session let mut command = std::process::Command::new("goose"); command.arg("session"); @@ -134,13 +134,13 @@ pub fn handle_project_default() -> Result<()> { let status = command.status()?; if !status.success() { - println!("Failed to run Goose. Exit code: {:?}", status.code()); + println!("Failed to run goose. Exit code: {:?}", status.code()); } } "new" => { let _ = outro("Starting a new session in the current directory"); - // Build the command to run Goose + // Build the command to run goose let mut command = std::process::Command::new("goose"); command.arg("session"); @@ -148,7 +148,7 @@ pub fn handle_project_default() -> Result<()> { let status = command.status()?; if !status.success() { - println!("Failed to run Goose. Exit code: {:?}", status.code()); + println!("Failed to run goose. Exit code: {:?}", status.code()); } } _ => { @@ -213,7 +213,7 @@ pub fn handle_projects_interactive() -> Result<()> { .collect(); // Let the user select a project - let _ = intro("Goose Project Manager"); + let _ = intro("goose Project Manager"); let mut select = cliclack::select("Select a project:"); // Add each project as an option @@ -280,7 +280,7 @@ pub fn handle_projects_interactive() -> Result<()> { false }; - // Build the command to run Goose + // Build the command to run goose let mut command = std::process::Command::new("goose"); command.arg("session"); @@ -297,7 +297,7 @@ pub fn handle_projects_interactive() -> Result<()> { let status = command.status()?; if !status.success() { - println!("Failed to run Goose. Exit code: {:?}", status.code()); + println!("Failed to run goose. Exit code: {:?}", status.code()); } Ok(()) diff --git a/crates/goose-cli/src/commands/schedule.rs b/crates/goose-cli/src/commands/schedule.rs index c0be8a21166c..7f092734e875 100644 --- a/crates/goose-cli/src/commands/schedule.rs +++ b/crates/goose-cli/src/commands/schedule.rs @@ -332,7 +332,7 @@ pub async fn handle_schedule_services_stop() -> Result<()> { } pub async fn handle_schedule_cron_help() -> Result<()> { - println!("📅 Cron Expression Guide for Goose Scheduler"); + println!("📅 Cron Expression Guide for goose Scheduler"); println!("===========================================\\n"); println!("🕐 HOURLY SCHEDULES (Most Common Request):"); diff --git a/crates/goose-cli/src/commands/web.rs b/crates/goose-cli/src/commands/web.rs index 4543065d38b0..a0ca90e1cd9e 100644 --- a/crates/goose-cli/src/commands/web.rs +++ b/crates/goose-cli/src/commands/web.rs @@ -146,7 +146,7 @@ pub async fn handle_web(port: u16, host: String, open: bool) -> Result<()> { let addr: SocketAddr = format!("{}:{}", host, port).parse()?; - println!("\n🪿 Starting Goose web server"); + println!("\n🪿 Starting goose web server"); println!(" Provider: {} | Model: {}", provider_name, model); println!( " Working directory: {}", diff --git a/crates/goose-cli/src/scenario_tests/recordings/anthropic/image_analysis.json b/crates/goose-cli/src/scenario_tests/recordings/anthropic/image_analysis.json index f2c637653e0b..86c86709ad12 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/anthropic/image_analysis.json +++ b/crates/goose-cli/src/scenario_tests/recordings/anthropic/image_analysis.json @@ -1,7 +1,7 @@ { "c848f22f273e158c32435d3e72cc999c046dc1a9afdc3efda68ff451f833a185": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -87,7 +87,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -253,7 +253,7 @@ }, "78cc474ff2d51b9a24df8c35e5c75f256dafb67ff5489af30fcec95cd87790b8": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -381,7 +381,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/anthropic/weather_tool.json b/crates/goose-cli/src/scenario_tests/recordings/anthropic/weather_tool.json index 83f4cc4ce23f..d1d8b05f4d6c 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/anthropic/weather_tool.json +++ b/crates/goose-cli/src/scenario_tests/recordings/anthropic/weather_tool.json @@ -1,7 +1,7 @@ { "1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -250,7 +250,7 @@ }, "d51c15f1ede58b5496bba746a4bdffd8ce84526749ce0021969d6ed6f2538a6d": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -375,7 +375,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/anthropic/what_is_your_name.json b/crates/goose-cli/src/scenario_tests/recordings/anthropic/what_is_your_name.json index 526f25f2adbc..eacecbe3a5a7 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/anthropic/what_is_your_name.json +++ b/crates/goose-cli/src/scenario_tests/recordings/anthropic/what_is_your_name.json @@ -1,7 +1,7 @@ { "1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:04:16.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -221,7 +221,7 @@ "content": [ { "type": "text", - "text": "I am Goose, an AI agent created by Block (the parent company of Square, CashApp, and Tidal). I'm being developed as an open-source software project.\n\nI can help you with various tasks using different tools and extensions. While I have a defined identity as Goose, I aim to be helpful, direct, and efficient in assisting you with your needs. Is there something specific I can help you with today?" + "text": "I am goose, an AI agent created by Block (the parent company of Square, CashApp, and Tidal). I'm being developed as an open-source software project.\n\nI can help you with various tasks using different tools and extensions. While I have a defined identity as goose, I aim to be helpful, direct, and efficient in assisting you with your needs. Is there something specific I can help you with today?" } ] }, diff --git a/crates/goose-cli/src/scenario_tests/recordings/azure_openai/weather_tool.json b/crates/goose-cli/src/scenario_tests/recordings/azure_openai/weather_tool.json index 7ce4c2a535fa..9403a20910a3 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/azure_openai/weather_tool.json +++ b/crates/goose-cli/src/scenario_tests/recordings/azure_openai/weather_tool.json @@ -1,7 +1,7 @@ { "21e33b98670d23e1bad3f21da667502d0930b42e34431395e266a4c524620cf1": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -122,7 +122,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -277,7 +277,7 @@ }, "1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:28.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -358,7 +358,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/azure_openai/what_is_your_name.json b/crates/goose-cli/src/scenario_tests/recordings/azure_openai/what_is_your_name.json index 512c4dd80d01..8cb9cc44c168 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/azure_openai/what_is_your_name.json +++ b/crates/goose-cli/src/scenario_tests/recordings/azure_openai/what_is_your_name.json @@ -1,7 +1,7 @@ { "1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:25.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:25.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -221,7 +221,7 @@ "content": [ { "type": "text", - "text": "My name is Goose, an AI agent created by Block, the parent company of Square, CashApp, and Tidal. How can I assist you today?" + "text": "My name is goose, an AI agent created by Block, the parent company of Square, CashApp, and Tidal. How can I assist you today?" } ] }, diff --git a/crates/goose-cli/src/scenario_tests/recordings/google/what_is_your_name.json b/crates/goose-cli/src/scenario_tests/recordings/google/what_is_your_name.json index 4b280c95d478..9abd50036895 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/google/what_is_your_name.json +++ b/crates/goose-cli/src/scenario_tests/recordings/google/what_is_your_name.json @@ -1,7 +1,7 @@ { "1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:27.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:27.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -221,7 +221,7 @@ "content": [ { "type": "text", - "text": "My name is Goose. I am a general-purpose AI agent created by Block, the parent company of Square, CashApp, and Tidal. I am being developed as an open-source software project." + "text": "My name is goose. I am a general-purpose AI agent created by Block, the parent company of Square, CashApp, and Tidal. I am being developed as an open-source software project." } ] }, diff --git a/crates/goose-cli/src/scenario_tests/recordings/groq/weather_tool.json b/crates/goose-cli/src/scenario_tests/recordings/groq/weather_tool.json index 654a86081ca1..4faf11f4c639 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/groq/weather_tool.json +++ b/crates/goose-cli/src/scenario_tests/recordings/groq/weather_tool.json @@ -1,7 +1,7 @@ { "09dddf56be462d1861d5a56de6ec2d79b76e1b6f8f8ba9da8d837aae55c7e70b": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -122,7 +122,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -277,7 +277,7 @@ }, "1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:31.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -358,7 +358,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/groq/what_is_your_name.json b/crates/goose-cli/src/scenario_tests/recordings/groq/what_is_your_name.json index 5e0bf3223f43..0f1cc66d8cef 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/groq/what_is_your_name.json +++ b/crates/goose-cli/src/scenario_tests/recordings/groq/what_is_your_name.json @@ -1,7 +1,7 @@ { "1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:29.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:29.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -221,7 +221,7 @@ "content": [ { "type": "text", - "text": "My name is Goose, and I am a general-purpose AI agent developed by Block, the parent company of Square, CashApp, and Tidal." + "text": "My name is goose, and I am a general-purpose AI agent developed by Block, the parent company of Square, CashApp, and Tidal." } ] }, diff --git a/crates/goose-cli/src/scenario_tests/recordings/openai/image_analysis.json b/crates/goose-cli/src/scenario_tests/recordings/openai/image_analysis.json index 099a7109fc4b..63677ef5e7d6 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/openai/image_analysis.json +++ b/crates/goose-cli/src/scenario_tests/recordings/openai/image_analysis.json @@ -1,7 +1,7 @@ { "c848f22f273e158c32435d3e72cc999c046dc1a9afdc3efda68ff451f833a185": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -87,7 +87,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/openai/weather_tool.json b/crates/goose-cli/src/scenario_tests/recordings/openai/weather_tool.json index 19df064fac90..6886d3697847 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/openai/weather_tool.json +++ b/crates/goose-cli/src/scenario_tests/recordings/openai/weather_tool.json @@ -1,7 +1,7 @@ { "e546a32d4a2c9d41338b6725f317c4d4f462ce7cc04c79f3f24dd47a1a32a795": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -122,7 +122,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -277,7 +277,7 @@ }, "1bc400a528c54b25f4f1f609481e98e44222b3deaf7eee2c9e640e6345c73861": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -358,7 +358,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { diff --git a/crates/goose-cli/src/scenario_tests/recordings/openai/what_is_your_name.json b/crates/goose-cli/src/scenario_tests/recordings/openai/what_is_your_name.json index 8f84c4c0bdd8..dfd02ab51c46 100644 --- a/crates/goose-cli/src/scenario_tests/recordings/openai/what_is_your_name.json +++ b/crates/goose-cli/src/scenario_tests/recordings/openai/what_is_your_name.json @@ -1,7 +1,7 @@ { "1b998117eba523901ae6a4dbf8caa81a95ea88ef7a84d0434c9b41a26164a2b9": { "input": { - "system": "You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\nGoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", + "system": "You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project.\n\nThe current date is 2025-07-28 12:05:24.\n\ngoose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc).\nThese models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date.\n\n# Extensions\n\nExtensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools.\nYou are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once.\nUse the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool.\n\n\nBecause you dynamically load extensions, your conversation history may refer\nto interactions with extensions that are not currently active. The currently\nactive extensions are below. Each of these extensions provides tools that are\nin your tool specification.\n\n\n## weather_extension\n\n\n\n\n\n\n\n# Suggestion\n\"\"\n\n\n\n\n# Response Guidelines\n\n- Use Markdown formatting for all responses.\n- Follow best practices for Markdown, including:\n - Using headers for organization.\n - Bullet points for lists.\n - Links formatted correctly, either as linked text (e.g., [this is linked text](https://example.com)) or automatic links using angle brackets (e.g., ).\n- For code examples, use fenced code blocks by placing triple backticks (` ``` `) before and after the code. Include the language identifier after the opening backticks (e.g., ` ```python `) to enable syntax highlighting.\n- Ensure clarity, conciseness, and proper formatting to enhance readability and usability.\n\n# Additional Instructions:\n\nRight now you are *NOT* in the chat only mode and have access to tool use and system.", "messages": [ { "id": null, @@ -82,7 +82,7 @@ }, { "name": "platform__manage_schedule", - "description": "Manage scheduled recipe execution for this Goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", + "description": "Manage scheduled recipe execution for this goose instance.\n\nActions:\n- \"list\": List all scheduled jobs\n- \"create\": Create a new scheduled job from a recipe file\n- \"run_now\": Execute a scheduled job immediately \n- \"pause\": Pause a scheduled job\n- \"unpause\": Resume a paused job\n- \"delete\": Remove a scheduled job\n- \"kill\": Terminate a currently running job\n- \"inspect\": Get details about a running job\n- \"sessions\": List execution history for a job\n- \"session_content\": Get the full content (messages) of a specific session\n", "inputSchema": { "properties": { "action": { @@ -221,7 +221,7 @@ "content": [ { "type": "text", - "text": "My name is Goose. I'm an AI agent developed by Block, the parent company of Square, Cash App, and Tidal. How can I assist you today?" + "text": "My name is goose. I'm an AI agent developed by Block, the parent company of Square, Cash App, and Tidal. How can I assist you today?" } ] }, diff --git a/crates/goose-cli/src/session/completion.rs b/crates/goose-cli/src/session/completion.rs index e4732302524b..4cad8ae2ee47 100644 --- a/crates/goose-cli/src/session/completion.rs +++ b/crates/goose-cli/src/session/completion.rs @@ -8,7 +8,7 @@ use std::sync::Arc; use super::CompletionCache; -/// Completer for Goose CLI commands +/// Completer for goose CLI commands pub struct GooseCompleter { completion_cache: Arc>, filename_completer: FilenameCompleter, diff --git a/crates/goose-cli/src/session/output.rs b/crates/goose-cli/src/session/output.rs index 7c601261eeb9..7686e7971b82 100644 --- a/crates/goose-cli/src/session/output.rs +++ b/crates/goose-cli/src/session/output.rs @@ -742,7 +742,7 @@ pub fn display_session_info( } pub fn display_greeting() { - println!("\nGoose is running! Enter your instructions, or try asking what goose can do.\n"); + println!("\ngoose is running! Enter your instructions, or try asking what goose can do.\n"); } /// Display context window usage with both current and session totals diff --git a/crates/goose-cli/static/index.html b/crates/goose-cli/static/index.html index 6010bedeece1..5afda5baa5c7 100644 --- a/crates/goose-cli/static/index.html +++ b/crates/goose-cli/static/index.html @@ -3,20 +3,20 @@ - Goose Chat + goose chat
    -

    Goose Chat

    +

    goose chat

    Connecting...
    -

    Welcome to Goose!

    +

    Welcome to goose!

    I'm your AI assistant. How can I help you today?

    diff --git a/crates/goose-cli/static/script.js b/crates/goose-cli/static/script.js index 3cc9aa99f50e..10dfe69a021f 100644 --- a/crates/goose-cli/static/script.js +++ b/crates/goose-cli/static/script.js @@ -121,7 +121,7 @@ function addThinkingIndicator() {
    - Goose is thinking... + goose is thinking... `; messagesContainer.appendChild(thinkingDiv); messagesContainer.scrollTop = messagesContainer.scrollHeight; @@ -477,7 +477,7 @@ async function loadSessionIfExists() { // Update page title with session description if available if (sessionData.metadata && sessionData.metadata.description) { - document.title = `Goose Chat - ${sessionData.metadata.description}`; + document.title = `goose chat - ${sessionData.metadata.description}`; } messagesContainer.scrollTop = messagesContainer.scrollHeight; @@ -515,8 +515,8 @@ messageInput.focus(); // Update session title function updateSessionTitle() { const titleElement = document.getElementById('session-title'); - // Just show "Goose Chat" - no need to show session ID - titleElement.textContent = 'Goose Chat'; + // Just show "goose chat" - no need to show session ID + titleElement.textContent = 'goose chat'; } // Update title on load diff --git a/crates/goose-mcp/src/computercontroller/mod.rs b/crates/goose-mcp/src/computercontroller/mod.rs index 45d00a7e1d7e..ba00f3850c0a 100644 --- a/crates/goose-mcp/src/computercontroller/mod.rs +++ b/crates/goose-mcp/src/computercontroller/mod.rs @@ -417,7 +417,7 @@ impl ComputerControllerServer { tool_router: Self::tool_router(), cache_dir, active_resources: Arc::new(Mutex::new(HashMap::new())), - http_client: Client::builder().user_agent("Goose/1.0").build().unwrap(), + http_client: Client::builder().user_agent("goose/1.0").build().unwrap(), instructions, system_automation, } diff --git a/crates/goose-mcp/src/tutorial/mod.rs b/crates/goose-mcp/src/tutorial/mod.rs index 6819222c72d8..a09124185d83 100644 --- a/crates/goose-mcp/src/tutorial/mod.rs +++ b/crates/goose-mcp/src/tutorial/mod.rs @@ -40,7 +40,7 @@ impl TutorialServer { let available_tutorials = Self::get_available_tutorials(); let instructions = formatdoc! {r#" - Because the tutorial extension is enabled, be aware that the user may be new to using Goose + Because the tutorial extension is enabled, be aware that the user may be new to using goose or looking for help with specific features. Proactively offer relevant tutorials when appropriate. Available tutorials: diff --git a/crates/goose-mcp/src/tutorial/tutorials/build-mcp-extension.md b/crates/goose-mcp/src/tutorial/tutorials/build-mcp-extension.md index 33502add6995..2218058c659e 100644 --- a/crates/goose-mcp/src/tutorial/tutorials/build-mcp-extension.md +++ b/crates/goose-mcp/src/tutorial/tutorials/build-mcp-extension.md @@ -220,7 +220,7 @@ Help users test their MCP extension using these steps: ### 1. Initial Testing -Instruct users to start a Goose session with their extension. +Instruct users to start a goose session with their extension. **Important**: You cannot start the goose session for them, as it is interactive. You will have to let them know to start it in a terminal. Make sure you include instructions on how to setup the environment @@ -257,8 +257,8 @@ goose run --with-extension "java -jar build/libs/extension.jar" --text "EXAMPLE Once the session starts successfully, guide users to test their implementation: -- For tools, they should ask Goose to use the tool directly -- For resources, they should ask Goose to access the relevant data +- For tools, they should ask goose to use the tool directly +- For resources, they should ask goose to access the relevant data Example prompts they can use: @@ -359,7 +359,7 @@ server.addTool( When users encounter issues: -1. First, check if there are any immediate error messages in the Goose session +1. First, check if there are any immediate error messages in the goose session 2. If the error isn't clear, guide them to: diff --git a/crates/goose-server/ALLOWLIST.md b/crates/goose-server/ALLOWLIST.md index e9ac03865d9e..f939624207b5 100644 --- a/crates/goose-server/ALLOWLIST.md +++ b/crates/goose-server/ALLOWLIST.md @@ -1,13 +1,13 @@ IMPORTANT: currently GOOSE_ALLOWLIST is used in main.ts in ui/desktop, and not in goose-server. The following is for reference in case it is used on the server side for launch time enforcement. -# Goose Extension Allowlist +# goose Extension Allowlist The allowlist feature provides a security mechanism for controlling which MCP commands can be used by goose. By default, goose will let you run any MCP via any command, which isn't always desired. ## How It Works -1. When enabled, Goose will only allow execution of commands that match entries in the allowlist +1. When enabled, goose will only allow execution of commands that match entries in the allowlist 2. Commands not in the allowlist will be rejected with an error message 3. The allowlist is fetched from a URL specified by the `GOOSE_ALLOWLIST` environment variable and cached while running. diff --git a/crates/goose-server/src/routes/extension.rs b/crates/goose-server/src/routes/extension.rs index fa274ddbba65..d2d574163bc1 100644 --- a/crates/goose-server/src/routes/extension.rs +++ b/crates/goose-server/src/routes/extension.rs @@ -454,7 +454,7 @@ fn is_command_allowed_with_allowlist( return true; } // If the path doesn't match, don't allow it - println!("Goosed not in expected directory: {}", cmd); + println!("goosed not in expected directory: {}", cmd); println!("Expected path: {}", expected_path); return false; } else { @@ -474,20 +474,20 @@ fn is_command_allowed_with_allowlist( // Check against the allowlist Some(extensions) => { - // Strip out the Goose app resources/bin prefix if present (handle both macOS and Windows paths) + // Strip out the goose app resources/bin prefix if present (handle both macOS and Windows paths) let mut cmd_to_check = cmd.to_string(); let mut is_goose_path = false; - // Check for macOS-style Goose.app path - if cmd_to_check.contains("Goose.app/Contents/Resources/bin/") { - if let Some(idx) = cmd_to_check.find("Goose.app/Contents/Resources/bin/") { + // Check for macOS-style goose.app path + if cmd_to_check.contains("goose.app/Contents/Resources/bin/") { + if let Some(idx) = cmd_to_check.find("goose.app/Contents/Resources/bin/") { cmd_to_check = cmd_to_check - [(idx + "Goose.app/Contents/Resources/bin/".len())..] + [(idx + "goose.app/Contents/Resources/bin/".len())..] .to_string(); is_goose_path = true; } } - // Check for Windows-style Goose path with resources\bin + // Check for Windows-style goose path with resources\bin else if cmd_to_check.to_lowercase().contains("\\resources\\bin\\") || cmd_to_check.contains("/resources/bin/") { @@ -507,7 +507,7 @@ fn is_command_allowed_with_allowlist( } } - // Only check current directory for non-Goose paths + // Only check current directory for non-goose paths if !is_goose_path { // Check that the command exists as a peer command to current executable directory // Only apply this check if the command includes a path separator @@ -524,7 +524,7 @@ fn is_command_allowed_with_allowlist( if (first_part.contains('/') || first_part.contains('\\')) && normalized_cmd_path != expected_path - && !cmd_to_check.contains("Goose.app/Contents/Resources/bin/") + && !cmd_to_check.contains("goose.app/Contents/Resources/bin/") { println!("Command not in expected directory: {}", cmd); return false; @@ -801,15 +801,15 @@ mod tests { &allowlist )); - // Test with shim path - 'Goose.app/Contents/Resources/bin/' and before can be stripped to get the command to match + // Test with shim path - 'goose.app/Contents/Resources/bin/' and before can be stripped to get the command to match assert!(is_command_allowed_with_allowlist( - "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/Goose.app/Contents/Resources/bin/uvx something", + "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/goose.app/Contents/Resources/bin/uvx something", &allowlist )); // Test with shim path & latest version assert!(is_command_allowed_with_allowlist( - "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/Goose.app/Contents/Resources/bin/uvx something@latest", + "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/goose.app/Contents/Resources/bin/uvx something@latest", &allowlist )); @@ -833,7 +833,7 @@ mod tests { // Test with shim path & latest version assert!(is_command_allowed_with_allowlist( - "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/Goose.app/Contents/Resources/bin/npx -y mcp_hammer@latest start", + "/private/var/folders/fq/rd_cb6/T/AppTranslocation/EA0195/d/goose.app/Contents/Resources/bin/npx -y mcp_hammer@latest start", &allowlist )); } @@ -941,15 +941,15 @@ mod tests { // Test various Windows path formats let test_paths = vec![ // Standard Windows path - r"C:\Users\MaxNovich\Downloads\Goose-1.0.17\resources\bin\uvx.exe", + r"C:\Users\MaxNovich\Downloads\goose-1.0.17\resources\bin\uvx.exe", // Path with different casing - r"C:\Users\MaxNovich\Downloads\Goose-1.0.17\Resources\Bin\uvx.exe", + r"C:\Users\MaxNovich\Downloads\goose-1.0.17\Resources\Bin\uvx.exe", // Path with forward slashes - r"C:/Users/MaxNovich/Downloads/Goose-1.0.17/resources/bin/uvx.exe", + r"C:/Users/MaxNovich/Downloads/goose-1.0.17/resources/bin/uvx.exe", // Path with spaces - r"C:\Program Files\Goose 1.0.17\resources\bin\uvx.exe", + r"C:\Program Files\goose 1.0.17\resources\bin\uvx.exe", // Path with version numbers - r"C:\Users\MaxNovich\Downloads\Goose-1.0.17-block.202504072238-76ffe-win32-x64\Goose-1.0.17-block.202504072238-76ffe-win32-x64\resources\bin\uvx.exe", + r"C:\Users\MaxNovich\Downloads\goose-1.0.17-block.202504072238-76ffe-win32-x64\goose-1.0.17-block.202504072238-76ffe-win32-x64\resources\bin\uvx.exe", ]; for path in test_paths { @@ -975,9 +975,9 @@ mod tests { // Path without resources\bin r"C:\Users\MaxNovich\Downloads\uvx.exe", // Path with modified resources\bin - r"C:\Users\MaxNovich\Downloads\Goose-1.0.17\resources_modified\bin\uvx.exe", + r"C:\Users\MaxNovich\Downloads\goose-1.0.17\resources_modified\bin\uvx.exe", // Path with extra components - r"C:\Users\MaxNovich\Downloads\Goose-1.0.17\resources\bin\extra\uvx.exe", + r"C:\Users\MaxNovich\Downloads\goose-1.0.17\resources\bin\extra\uvx.exe", ]; for path in invalid_paths { @@ -995,14 +995,14 @@ mod tests { let allowlist = create_test_allowlist(&["uvx mcp_snowflake"]); // Test Windows-style path with uvx.exe - let windows_path = r"C:\Users\MaxNovich\Downloads\Goose-1.0.17-block.202504072238-76ffe-win32-x64\Goose-1.0.17-block.202504072238-76ffe-win32-x64\resources\bin\uvx.exe"; + let windows_path = r"C:\Users\MaxNovich\Downloads\goose-1.0.17-block.202504072238-76ffe-win32-x64\goose-1.0.17-block.202504072238-76ffe-win32-x64\resources\bin\uvx.exe"; let cmd = format!("{} mcp_snowflake@latest", windows_path); - // This should be allowed because it's a valid uvx command in the Goose resources/bin directory + // This should be allowed because it's a valid uvx command in the goose resources/bin directory assert!(is_command_allowed_with_allowlist(&cmd, &allowlist)); // Test with different casing and backslashes - let windows_path_alt = r"c:\Users\MaxNovich\Downloads\Goose-1.0.17-block.202504072238-76ffe-win32-x64\Goose-1.0.17-block.202504072238-76ffe-win32-x64\Resources\Bin\uvx.exe"; + let windows_path_alt = r"c:\Users\MaxNovich\Downloads\goose-1.0.17-block.202504072238-76ffe-win32-x64\goose-1.0.17-block.202504072238-76ffe-win32-x64\Resources\Bin\uvx.exe"; let cmd_alt = format!("{} mcp_snowflake@latest", windows_path_alt); assert!(is_command_allowed_with_allowlist(&cmd_alt, &allowlist)); } diff --git a/crates/goose-server/ui/desktop/openapi.json b/crates/goose-server/ui/desktop/openapi.json index 0533f2f7934f..f7471caa15be 100644 --- a/crates/goose-server/ui/desktop/openapi.json +++ b/crates/goose-server/ui/desktop/openapi.json @@ -1149,7 +1149,7 @@ "properties": { "bundled": { "type": "boolean", - "description": "Whether this extension is bundled with Goose", + "description": "Whether this extension is bundled with goose", "nullable": true }, "description": { @@ -1204,7 +1204,7 @@ }, "bundled": { "type": "boolean", - "description": "Whether this extension is bundled with Goose", + "description": "Whether this extension is bundled with goose", "nullable": true }, "cmd": { @@ -1251,7 +1251,7 @@ "properties": { "bundled": { "type": "boolean", - "description": "Whether this extension is bundled with Goose", + "description": "Whether this extension is bundled with goose", "nullable": true }, "display_name": { @@ -1287,7 +1287,7 @@ "properties": { "bundled": { "type": "boolean", - "description": "Whether this extension is bundled with Goose", + "description": "Whether this extension is bundled with goose", "nullable": true }, "instructions": { diff --git a/crates/goose/src/agents/extension.rs b/crates/goose/src/agents/extension.rs index 74f823cd6aee..e18bee01dd03 100644 --- a/crates/goose/src/agents/extension.rs +++ b/crates/goose/src/agents/extension.rs @@ -160,7 +160,7 @@ pub enum ExtensionConfig { // NOTE: set timeout to be optional for compatibility. // However, new configurations should include this field. timeout: Option, - /// Whether this extension is bundled with Goose + /// Whether this extension is bundled with goose #[serde(default)] bundled: Option, #[serde(default)] @@ -179,7 +179,7 @@ pub enum ExtensionConfig { env_keys: Vec, timeout: Option, description: Option, - /// Whether this extension is bundled with Goose + /// Whether this extension is bundled with goose #[serde(default)] bundled: Option, #[serde(default)] @@ -193,7 +193,7 @@ pub enum ExtensionConfig { display_name: Option, // needed for the UI description: Option, timeout: Option, - /// Whether this extension is bundled with Goose + /// Whether this extension is bundled with goose #[serde(default)] bundled: Option, #[serde(default)] @@ -215,7 +215,7 @@ pub enum ExtensionConfig { // NOTE: set timeout to be optional for compatibility. // However, new configurations should include this field. timeout: Option, - /// Whether this extension is bundled with Goose + /// Whether this extension is bundled with goose #[serde(default)] bundled: Option, #[serde(default)] @@ -230,7 +230,7 @@ pub enum ExtensionConfig { tools: Vec, /// Instructions for how to use these tools instructions: Option, - /// Whether this extension is bundled with Goose + /// Whether this extension is bundled with goose #[serde(default)] bundled: Option, #[serde(default)] diff --git a/crates/goose/src/agents/extension_manager.rs b/crates/goose/src/agents/extension_manager.rs index 2487df5028e6..a7d356948ea9 100644 --- a/crates/goose/src/agents/extension_manager.rs +++ b/crates/goose/src/agents/extension_manager.rs @@ -80,7 +80,7 @@ impl Extension { } } -/// Manages Goose extensions / MCP clients and their interactions +/// Manages goose extensions / MCP clients and their interactions pub struct ExtensionManager { extensions: Mutex>, } diff --git a/crates/goose/src/agents/platform_tools.rs b/crates/goose/src/agents/platform_tools.rs index 777b054d972d..bdebac8ed9ac 100644 --- a/crates/goose/src/agents/platform_tools.rs +++ b/crates/goose/src/agents/platform_tools.rs @@ -115,7 +115,7 @@ pub fn manage_schedule_tool() -> Tool { Tool::new( PLATFORM_MANAGE_SCHEDULE_TOOL_NAME.to_string(), indoc! {r#" - Manage scheduled recipe execution for this Goose instance. + Manage scheduled recipe execution for this goose instance. Actions: - "list": List all scheduled jobs diff --git a/crates/goose/src/agents/router_tools.rs b/crates/goose/src/agents/router_tools.rs index 263e2226f579..22c29a221306 100644 --- a/crates/goose/src/agents/router_tools.rs +++ b/crates/goose/src/agents/router_tools.rs @@ -48,7 +48,7 @@ pub fn llm_search_tool_prompt() -> String { please invoke the llm search tool to actually retrieve the most relevant tools to use according to the user's messages. For example, if the user has 3 extensions enabled, but they are asking for a tool to read a pdf file, \ you would invoke the llm_search tool to find the most relevant read pdf tool. - By dynamically enabling tools, you (Goose) as the agent save context window space and allow the user to dynamically retrieve the most relevant tools. + By dynamically enabling tools, you (goose) as the agent save context window space and allow the user to dynamically retrieve the most relevant tools. Be sure to format a query packed with relevant keywords to search for the most relevant tools. In addition to the extension names available to you, you also have platform extension tools available to you. The platform extension contains the following tools: diff --git a/crates/goose/src/agents/schedule_tool.rs b/crates/goose/src/agents/schedule_tool.rs index d38ab800bbd8..6d53486a1aea 100644 --- a/crates/goose/src/agents/schedule_tool.rs +++ b/crates/goose/src/agents/schedule_tool.rs @@ -1,4 +1,4 @@ -//! Schedule tool handlers for the Goose agent +//! Schedule tool handlers for the goose agent //! //! This module contains all the handlers for the schedule management platform tool, //! including job creation, execution, monitoring, and session management. diff --git a/crates/goose/src/agents/tool_execution.rs b/crates/goose/src/agents/tool_execution.rs index 3e123b1abee4..9a8aa608698f 100644 --- a/crates/goose/src/agents/tool_execution.rs +++ b/crates/goose/src/agents/tool_execution.rs @@ -36,7 +36,7 @@ pub const DECLINED_RESPONSE: &str = "The user has declined to run this tool. \ DO NOT attempt to call this tool again. \ If there are no alternative methods to proceed, clearly explain the situation and STOP."; -pub const CHAT_MODE_TOOL_SKIPPED_RESPONSE: &str = "Let the user know the tool call was skipped in Goose chat mode. \ +pub const CHAT_MODE_TOOL_SKIPPED_RESPONSE: &str = "Let the user know the tool call was skipped in goose chat mode. \ DO NOT apologize for skipping the tool call. DO NOT say sorry. \ Provide an explanation of what the tool call would do, structured as a \ plan for the user. Again, DO NOT apologize. \ diff --git a/crates/goose/src/config/base.rs b/crates/goose/src/config/base.rs index 9dd93d8a89e1..e392c895e547 100644 --- a/crates/goose/src/config/base.rs +++ b/crates/goose/src/config/base.rs @@ -57,7 +57,7 @@ impl From for ConfigError { } } -/// Configuration management for Goose. +/// Configuration management for goose. /// /// This module provides a flexible configuration system that supports: /// - Dynamic configuration keys @@ -102,7 +102,7 @@ impl From for ConfigError { /// checking for environment overrides. e.g. openai_api_key will check for an /// environment variable OPENAI_API_KEY /// -/// For Goose-specific configuration, consider prefixing with "goose_" to avoid conflicts. +/// For goose-specific configuration, consider prefixing with "goose_" to avoid conflicts. pub struct Config { config_path: PathBuf, secrets: SecretStorage, diff --git a/crates/goose/src/config/signup_openrouter/templates/success.html b/crates/goose/src/config/signup_openrouter/templates/success.html index c6c97a4d0d7c..45eafcb50931 100644 --- a/crates/goose/src/config/signup_openrouter/templates/success.html +++ b/crates/goose/src/config/signup_openrouter/templates/success.html @@ -39,7 +39,7 @@

    Authentication Successful!

    You have successfully authenticated with OpenRouter.

    -

    You can now close this tab and return to Goose.

    +

    You can now close this tab and return to goose.

    diff --git a/crates/goose/src/oauth/oauth_callback.html b/crates/goose/src/oauth/oauth_callback.html index dc60c6316b13..425c55d6e445 100644 --- a/crates/goose/src/oauth/oauth_callback.html +++ b/crates/goose/src/oauth/oauth_callback.html @@ -66,7 +66,7 @@

    Authorization Success

    You have successfully authorized {{ name }}. You can now close this - window and return to Goose. + window and return to goose.

    diff --git a/crates/goose/src/prompts/subagent_system.md b/crates/goose/src/prompts/subagent_system.md index 6d45e00cd4e2..7bb9b8ef1580 100644 --- a/crates/goose/src/prompts/subagent_system.md +++ b/crates/goose/src/prompts/subagent_system.md @@ -1,4 +1,4 @@ -You are a specialized subagent within the Goose AI framework, created by Block. You were spawned by the main Goose agent to handle a specific task efficiently. The current date is {{current_date_time}}. +You are a specialized subagent within the goose AI framework, created by Block. You were spawned by the main goose agent to handle a specific task efficiently. The current date is {{current_date_time}}. # Your Role You are an autonomous subagent with these characteristics: diff --git a/crates/goose/src/prompts/system.md b/crates/goose/src/prompts/system.md index 09fb343b75c4..475ee1ada1ac 100644 --- a/crates/goose/src/prompts/system.md +++ b/crates/goose/src/prompts/system.md @@ -1,13 +1,13 @@ -You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project. +You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project. The current date is {{current_date_time}}. -Goose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc). +goose uses LLM providers with tool calling capability. You can be used with different language models (gpt-4o, claude-sonnet-4, o1, llama-3.2, deepseek-r1, etc). These models have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date. # Extensions -Extensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools. +Extensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools. You are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once. Use the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool. diff --git a/crates/goose/src/prompts/system_gpt_4.1.md b/crates/goose/src/prompts/system_gpt_4.1.md index ad33223cbe12..1578efaf4dc7 100644 --- a/crates/goose/src/prompts/system_gpt_4.1.md +++ b/crates/goose/src/prompts/system_gpt_4.1.md @@ -1,4 +1,4 @@ -You are a general-purpose AI agent called Goose, created by Block, the parent company of Square, CashApp, and Tidal. Goose is being developed as an open-source software project. +You are a general-purpose AI agent called goose, created by Block, the parent company of Square, CashApp, and Tidal. goose is being developed as an open-source software project. IMPORTANT INSTRUCTIONS: @@ -21,12 +21,12 @@ The user may direct or imply that you are to take actions, in this case, it is i The current date is {{current_date_time}}. -Goose uses LLM providers with tool calling capability. +goose uses LLM providers with tool calling capability. Your model may have varying knowledge cut-off dates depending on when they were trained, but typically it's between 5-10 months prior to the current date. # Extensions -Extensions allow other applications to provide context to Goose. Extensions connect Goose to different data sources and tools. +Extensions allow other applications to provide context to goose. Extensions connect goose to different data sources and tools. You are capable of dynamically plugging into new extensions and learning how to use them. You solve higher level problems using the tools in these extensions, and can interact with multiple at once. Use the search_available_extensions tool to find additional extensions to enable to help with your task. To enable extensions, use the enable_extension tool and provide the extension_name. You should only enable extensions found from the search_available_extensions tool. diff --git a/crates/goose/src/providers/formats/databricks.rs b/crates/goose/src/providers/formats/databricks.rs index b7472ca23464..8e65a37dcd12 100644 --- a/crates/goose/src/providers/formats/databricks.rs +++ b/crates/goose/src/providers/formats/databricks.rs @@ -493,7 +493,7 @@ pub fn create_request( ) -> anyhow::Result { if model_config.model_name.starts_with("o1-mini") { return Err(anyhow!( - "o1-mini model is not currently supported since Goose uses tool calling and o1-mini does not support it. Please use o1 or o3 models instead." + "o1-mini model is not currently supported since goose uses tool calling and o1-mini does not support it. Please use o1 or o3 models instead." )); } diff --git a/crates/goose/src/providers/formats/gcpvertexai.rs b/crates/goose/src/providers/formats/gcpvertexai.rs index 8258d7472172..84d676fb4adc 100644 --- a/crates/goose/src/providers/formats/gcpvertexai.rs +++ b/crates/goose/src/providers/formats/gcpvertexai.rs @@ -58,7 +58,7 @@ pub enum ModelError { UnsupportedLocation(String), } -/// Represents available GCP Vertex AI models for Goose. +/// Represents available GCP Vertex AI models for goose. /// /// This enum encompasses different model families and their versions /// that are supported in the GCP Vertex AI platform. @@ -70,7 +70,7 @@ pub enum GcpVertexAIModel { Gemini(GeminiVersion), } -/// Represents available versions of the Claude model for Goose. +/// Represents available versions of the Claude model for goose. #[derive(Debug, Clone, PartialEq, Eq)] pub enum ClaudeVersion { /// Claude 3.7 Sonnet @@ -83,7 +83,7 @@ pub enum ClaudeVersion { Generic(String), } -/// Represents available versions of the Gemini model for Goose. +/// Represents available versions of the Gemini model for goose. #[derive(Debug, Clone, PartialEq, Eq)] pub enum GeminiVersion { /// Gemini 1.5 Pro version diff --git a/crates/goose/src/providers/formats/google.rs b/crates/goose/src/providers/formats/google.rs index e4e01e2a221e..04e5e61cda93 100644 --- a/crates/goose/src/providers/formats/google.rs +++ b/crates/goose/src/providers/formats/google.rs @@ -364,7 +364,7 @@ mod tests { id.to_string(), tool_call.name.clone(), tool_call.arguments.clone(), - Some("Goose would like to call the above tool. Allow? (y/n):".to_string()), + Some("goose would like to call the above tool. Allow? (y/n):".to_string()), )], ) } diff --git a/crates/goose/src/providers/formats/openai.rs b/crates/goose/src/providers/formats/openai.rs index 897293109e73..f57b3b376fe6 100644 --- a/crates/goose/src/providers/formats/openai.rs +++ b/crates/goose/src/providers/formats/openai.rs @@ -585,7 +585,7 @@ pub fn create_request( ) -> anyhow::Result { if model_config.model_name.starts_with("o1-mini") { return Err(anyhow!( - "o1-mini model is not currently supported since Goose uses tool calling and o1-mini does not support it. Please use o1 or o3 models instead." + "o1-mini model is not currently supported since goose uses tool calling and o1-mini does not support it. Please use o1 or o3 models instead." )); } diff --git a/crates/goose/src/providers/openrouter.rs b/crates/goose/src/providers/openrouter.rs index bedf913e3268..e0a869d4c3d9 100644 --- a/crates/goose/src/providers/openrouter.rs +++ b/crates/goose/src/providers/openrouter.rs @@ -56,7 +56,7 @@ impl OpenRouterProvider { let auth = AuthMethod::BearerToken(api_key); let api_client = ApiClient::new(host, auth)? .with_header("HTTP-Referer", "https://block.github.io/goose")? - .with_header("X-Title", "Goose")?; + .with_header("X-Title", "goose")?; Ok(Self { api_client, model }) } diff --git a/crates/goose/src/providers/snowflake.rs b/crates/goose/src/providers/snowflake.rs index 0e0d32c6c761..f88869cc3ca6 100644 --- a/crates/goose/src/providers/snowflake.rs +++ b/crates/goose/src/providers/snowflake.rs @@ -87,7 +87,7 @@ impl SnowflakeProvider { }; let auth = AuthMethod::BearerToken(token?); - let api_client = ApiClient::new(base_url, auth)?.with_header("User-Agent", "Goose")?; + let api_client = ApiClient::new(base_url, auth)?.with_header("User-Agent", "goose")?; Ok(Self { api_client, diff --git a/crates/goose/src/providers/tetrate.rs b/crates/goose/src/providers/tetrate.rs index 6eab9ecf80da..a12a9882047c 100644 --- a/crates/goose/src/providers/tetrate.rs +++ b/crates/goose/src/providers/tetrate.rs @@ -62,7 +62,7 @@ impl TetrateProvider { let auth = AuthMethod::BearerToken(api_key); let api_client = ApiClient::new(host, auth)? .with_header("HTTP-Referer", "https://block.github.io/goose")? - .with_header("X-Title", "Goose")?; + .with_header("X-Title", "goose")?; Ok(Self { api_client, diff --git a/crates/goose/src/recipe/mod.rs b/crates/goose/src/recipe/mod.rs index a7a6bc63c7b6..f6367fbd1d6e 100644 --- a/crates/goose/src/recipe/mod.rs +++ b/crates/goose/src/recipe/mod.rs @@ -21,7 +21,7 @@ fn default_version() -> String { } /// A Recipe represents a personalized, user-generated agent configuration that defines -/// specific behaviors and capabilities within the Goose system. +/// specific behaviors and capabilities within the goose system. /// /// # Fields /// diff --git a/crates/goose/src/scheduler_factory.rs b/crates/goose/src/scheduler_factory.rs index d044c280cb9b..33038a1d1168 100644 --- a/crates/goose/src/scheduler_factory.rs +++ b/crates/goose/src/scheduler_factory.rs @@ -81,7 +81,7 @@ impl SchedulerFactory { eprintln!( " • Or download from: https://github.com/temporalio/cli/releases" ); - eprintln!(" • Then restart Goose"); + eprintln!(" • Then restart goose"); eprintln!(); let scheduler = Scheduler::new(storage_path).await?; diff --git a/crates/goose/src/tracing/otlp_layer.rs b/crates/goose/src/tracing/otlp_layer.rs index d61c907ceb21..09d88956b648 100644 --- a/crates/goose/src/tracing/otlp_layer.rs +++ b/crates/goose/src/tracing/otlp_layer.rs @@ -31,7 +31,7 @@ impl Default for OtlpConfig { impl OtlpConfig { pub fn from_config() -> Option { - // Try to get from Goose config system (which checks env vars first, then config file) + // Try to get from goose config system (which checks env vars first, then config file) let config = crate::config::Config::global(); // Try to get the endpoint from config (checks OTEL_EXPORTER_OTLP_ENDPOINT env var first) diff --git a/crates/goose/tests/mcp_integration_test.rs b/crates/goose/tests/mcp_integration_test.rs index 787d49c0150f..7434f87c6ba2 100644 --- a/crates/goose/tests/mcp_integration_test.rs +++ b/crates/goose/tests/mcp_integration_test.rs @@ -35,7 +35,7 @@ enum TestMode { "owner": "block", "repo": "goose", "path": "README.md", - "sha": "48c1ec8afdb7d4d5b4f6e67e623926c884034776" + "sha": "ab62b863c1666232a67048b6c4e10007a2a5b83c" })), ], vec!["GITHUB_PERSONAL_ACCESS_TOKEN"] @@ -59,8 +59,8 @@ enum TestMode { ToolCall::new("text_editor", json!({ "command": "str_replace", "path": "~/goose/crates/goose/tests/tmp/goose.txt", - "old_str": "# codename goose", - "new_str": "# codename goose (modified by test)" + "old_str": "# goose", + "new_str": "# goose (modified by test)" })), // Test shell command to verify file was modified ToolCall::new("shell", json!({ @@ -70,8 +70,8 @@ enum TestMode { ToolCall::new("text_editor", json!({ "command": "str_replace", "path": "~/goose/crates/goose/tests/tmp/goose.txt", - "old_str": "# codename goose (modified by test)", - "new_str": "# codename goose" + "old_str": "# goose (modified by test)", + "new_str": "# goose" })), ToolCall::new("list_windows", json!({})), ], diff --git a/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper b/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper index 2d099afe7027..2c3192751fff 100644 --- a/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper +++ b/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper @@ -1,28 +1,28 @@ STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"goose","version":"0.1.0"}}} -STDERR: 2025-09-25T16:45:17.536419Z  INFO goose_mcp::mcp_server_runner: Starting MCP server +STDERR: 2025-09-27T04:13:30.409389Z  INFO goose_mcp::mcp_server_runner: Starting MCP server STDERR: at crates/goose-mcp/src/mcp_server_runner.rs:18 STDERR: -STDERR: 2025-09-25T16:45:17.539210Z  INFO goose_mcp::developer::analyze::cache: Initializing analysis cache with size 100 +STDERR: 2025-09-27T04:13:30.412663Z  INFO goose_mcp::developer::analyze::cache: Initializing analysis cache with size 100 STDERR: at crates/goose-mcp/src/developer/analyze/cache.rs:25 STDERR: -STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"prompts":{},"tools":{}},"serverInfo":{"name":"goose-developer","version":"1.9.0"},"instructions":" The developer extension gives you the capabilities to edit code files and run shell commands,\n and can be used to solve a wide range of problems.\n\nYou can use the shell tool to run any command that would work on the relevant operating system.\nUse the shell tool as needed to locate files or interact with the project.\n\nLeverage `analyze` through `return_last_only=true` subagents for deep codebase understanding with lean context\n- delegate analysis, retain summaries\n\nYour windows/screen tools can be used for visual debugging. You should not use these tools unless\nprompted to, but you can mention they are available if they are relevant.\n\nAlways prefer ripgrep (rg -C 3) to grep.\n\noperating system: macos\ncurrent directory: /Users/jackamadeo/development/goose/crates/goose\n\n \n\nAdditional Text Editor Tool Instructions:\n\nPerform text editing operations on files.\n\nThe `command` parameter specifies the operation to perform. Allowed options are:\n- `view`: View the content of a file.\n- `write`: Create or overwrite a file with the given content\n- `str_replace`: Replace text in one or more files.\n- `insert`: Insert text at a specific line location in the file.\n- `undo_edit`: Undo the last edit made to a file.\n\nTo use the write command, you must specify `file_text` which will become the new content of the file. Be careful with\nexisting files! This is a full overwrite, so you must include everything - not just sections you are modifying.\n\nTo use the str_replace command to edit multiple files, use the `diff` parameter with a unified diff.\nTo use the str_replace command to edit one file, you must specify both `old_str` and `new_str` - the `old_str` needs to exactly match one\nunique section of the original file, including any whitespace. Make sure to include enough context that the match is not\nambiguous. The entire original string will be replaced with `new_str`\n\nWhen possible, batch file edits together by using a multi-file unified `diff` within a single str_replace tool call.\n\nTo use the insert command, you must specify both `insert_line` (the line number after which to insert, 0 for beginning, -1 for end)\nand `new_str` (the text to insert).\n\n\n\nAdditional Shell Tool Instructions:\nExecute a command in the shell.\n\nThis will return the output and error concatenated into a single string, as\nyou would see from running on the command line. There will also be an indication\nof if the command succeeded or failed.\n\nAvoid commands that produce a large amount of output, and consider piping those outputs to files.\n\n**Important**: Each shell command runs in its own process. Things like directory changes or\nsourcing files do not persist between tool calls. So you may need to repeat them each time by\nstringing together commands.\nIf you need to run a long lived command, background it - e.g. `uvicorn main:app &` so that\nthis tool does not run indefinitely.\n\n**Important**: Use ripgrep - `rg` - exclusively when you need to locate a file or a code reference,\nother solutions may produce too large output because of hidden files! For example *do not* use `find` or `ls -r`\n - List files by name: `rg --files | rg `\n - List files that contain a regex: `rg '' -l`\n\n - Multiple commands: Use && to chain commands, avoid newlines\n - Example: `cd example && ls` or `source env/bin/activate && pip install numpy`\n\n\n### Global Hints\nThe developer extension includes some global hints that apply to all projects & directories.\nThese are my global goose hints.\n\n### Project Hints\nThe developer extension includes some hints for working on the project in this directory.\n# AGENTS Instructions\n\nGoose is an AI agent framework in Rust with CLI and Electron desktop interfaces.\n\n## Setup\n```bash\nsource bin/activate-hermit\ncargo build\n```\n\n## Commands\n\n### Build\n```bash\ncargo build # debug\ncargo build --release # release \njust release-binary # release + openapi\n```\n\n### Test\n```bash\ncargo test # all tests\ncargo test -p goose # specific crate\ncargo test --package goose --test mcp_integration_test\njust record-mcp-tests # record MCP\n```\n\n### Lint/Format\n```bash\ncargo fmt\n./scripts/clippy-lint.sh\ncargo clippy --fix\n```\n\n### UI\n```bash\njust generate-openapi # after server changes\njust run-ui # start desktop\ncd ui/desktop && npm test # test UI\n```\n\n## Structure\n```\ncrates/\n├── goose # core logic\n├── goose-bench # benchmarking\n├── goose-cli # CLI entry\n├── goose-server # backend (binary: goosed)\n├── goose-mcp # MCP extensions\n├── goose-test # test utilities\n├── mcp-client # MCP client\n├── mcp-core # MCP shared\n└── mcp-server # MCP server\n\ntemporal-service/ # Go scheduler\nui/desktop/ # Electron app\n```\n\n## Development Loop\n```bash\n# 1. source bin/activate-hermit\n# 2. Make changes\n# 3. cargo fmt\n# 4. cargo build\n# 5. cargo test -p \n# 6. ./scripts/clippy-lint.sh\n# 7. [if server] just generate-openapi\n```\n\n## Rules\n\nTest: Prefer tests/ folder, e.g. crates/goose/tests/\nError: Use anyhow::Result\nProvider: Implement Provider trait see providers/base.rs\nMCP: Extensions in crates/goose-mcp/\nServer: Changes need just generate-openapi\n\n## Never\n\nNever: Edit ui/desktop/openapi.json manually\nNever: Edit Cargo.toml use cargo add\nNever: Skip cargo fmt\nNever: Merge without ./scripts/clippy-lint.sh\n\n## Entry Points\n- CLI: crates/goose-cli/src/main.rs\n- Server: crates/goose-server/src/main.rs\n- UI: ui/desktop/src/main.ts\n- Agent: crates/goose/src/agents/agent.rs\n\nThis is a rust project with crates in the crates dir:\ngoose: the main code for goose, contains all the core logic\ngoose-bench: bench marking\ngoose-cli: the command line interface, use goose crate\ngoose-mcp: the mcp servers that ship with goose. the developer sub system is of special interest\ngoose-server: the server that suports the desktop (electron) app. also known as goosed\n\n\nui/desktop has an electron app in typescript. \n\nnon trivial features should be implemented in the goose crate and then be called from the goose-cli crate for the cli. for the desktop, you want to add routes to \ngoose-server/src/routes. you can then run `just generate-openapi` to generate the openapi spec which will modify the ui/desktop/src/api files. once you have\nthat you can call the functionality from the server from the typescript.\n\ntips: \n- can look at unstaged changes for what is being worked on if starting\n- always check rust compiles, cargo fmt etc and `./scripts/clippy-lint.sh` (as well as run tests in files you are working on)\n- in ui/desktop, look at how you can run lint checks and if other tests can run\n"}} +STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"prompts":{},"tools":{}},"serverInfo":{"name":"goose-developer","version":"1.9.0"},"instructions":" The developer extension gives you the capabilities to edit code files and run shell commands,\n and can be used to solve a wide range of problems.\n\nYou can use the shell tool to run any command that would work on the relevant operating system.\nUse the shell tool as needed to locate files or interact with the project.\n\nLeverage `analyze` through `return_last_only=true` subagents for deep codebase understanding with lean context\n- delegate analysis, retain summaries\n\nYour windows/screen tools can be used for visual debugging. You should not use these tools unless\nprompted to, but you can mention they are available if they are relevant.\n\nAlways prefer ripgrep (rg -C 3) to grep.\n\noperating system: macos\ncurrent directory: /Users/angiej/workspace/goose/crates/goose\n\n \n\nAdditional Text Editor Tool Instructions:\n\nPerform text editing operations on files.\n\nThe `command` parameter specifies the operation to perform. Allowed options are:\n- `view`: View the content of a file.\n- `write`: Create or overwrite a file with the given content\n- `str_replace`: Replace text in one or more files.\n- `insert`: Insert text at a specific line location in the file.\n- `undo_edit`: Undo the last edit made to a file.\n\nTo use the write command, you must specify `file_text` which will become the new content of the file. Be careful with\nexisting files! This is a full overwrite, so you must include everything - not just sections you are modifying.\n\nTo use the str_replace command to edit multiple files, use the `diff` parameter with a unified diff.\nTo use the str_replace command to edit one file, you must specify both `old_str` and `new_str` - the `old_str` needs to exactly match one\nunique section of the original file, including any whitespace. Make sure to include enough context that the match is not\nambiguous. The entire original string will be replaced with `new_str`\n\nWhen possible, batch file edits together by using a multi-file unified `diff` within a single str_replace tool call.\n\nTo use the insert command, you must specify both `insert_line` (the line number after which to insert, 0 for beginning, -1 for end)\nand `new_str` (the text to insert).\n\n\n\nAdditional Shell Tool Instructions:\nExecute a command in the shell.\n\nThis will return the output and error concatenated into a single string, as\nyou would see from running on the command line. There will also be an indication\nof if the command succeeded or failed.\n\nAvoid commands that produce a large amount of output, and consider piping those outputs to files.\n\n**Important**: Each shell command runs in its own process. Things like directory changes or\nsourcing files do not persist between tool calls. So you may need to repeat them each time by\nstringing together commands.\nIf you need to run a long lived command, background it - e.g. `uvicorn main:app &` so that\nthis tool does not run indefinitely.\n\n**Important**: Use ripgrep - `rg` - exclusively when you need to locate a file or a code reference,\nother solutions may produce too large output because of hidden files! For example *do not* use `find` or `ls -r`\n - List files by name: `rg --files | rg `\n - List files that contain a regex: `rg '' -l`\n\n - Multiple commands: Use && to chain commands, avoid newlines\n - Example: `cd example && ls` or `source env/bin/activate && pip install numpy`\n\n\n### Global Hints\nThe developer extension includes some global hints that apply to all projects & directories.\nCloned Goose repo: /Users/angiej/workspace/goose\nMCP means Model Context Protocol. Docs: https://modelcontextprotocol.io/introduction\nUse GitHub CLI for GitHub-related tasks.\nWhen prompted for date-related information, do not rely on your internal knowledge for the current date. Instead, use the `date` terminal command to get the actual date and time.\nNEVER run blocking server commands (node server.js, npm start, etc.) - provide commands for user to run separately\n\n### Project Hints\nThe developer extension includes some hints for working on the project in this directory.\n# AGENTS Instructions\n\ngoose is an AI agent framework in Rust with CLI and Electron desktop interfaces.\n\n## Setup\n```bash\nsource bin/activate-hermit\ncargo build\n```\n\n## Commands\n\n### Build\n```bash\ncargo build # debug\ncargo build --release # release \njust release-binary # release + openapi\n```\n\n### Test\n```bash\ncargo test # all tests\ncargo test -p goose # specific crate\ncargo test --package goose --test mcp_integration_test\njust record-mcp-tests # record MCP\n```\n\n### Lint/Format\n```bash\ncargo fmt\n./scripts/clippy-lint.sh\ncargo clippy --fix\n```\n\n### UI\n```bash\njust generate-openapi # after server changes\njust run-ui # start desktop\ncd ui/desktop && npm test # test UI\n```\n\n## Structure\n```\ncrates/\n├── goose # core logic\n├── goose-bench # benchmarking\n├── goose-cli # CLI entry\n├── goose-server # backend (binary: goosed)\n├── goose-mcp # MCP extensions\n├── goose-test # test utilities\n├── mcp-client # MCP client\n├── mcp-core # MCP shared\n└── mcp-server # MCP server\n\ntemporal-service/ # Go scheduler\nui/desktop/ # Electron app\n```\n\n## Development Loop\n```bash\n# 1. source bin/activate-hermit\n# 2. Make changes\n# 3. cargo fmt\n# 4. cargo build\n# 5. cargo test -p \n# 6. ./scripts/clippy-lint.sh\n# 7. [if server] just generate-openapi\n```\n\n## Rules\n\nTest: Prefer tests/ folder, e.g. crates/goose/tests/\nError: Use anyhow::Result\nProvider: Implement Provider trait see providers/base.rs\nMCP: Extensions in crates/goose-mcp/\nServer: Changes need just generate-openapi\n\n## Never\n\nNever: Edit ui/desktop/openapi.json manually\nNever: Edit Cargo.toml use cargo add\nNever: Skip cargo fmt\nNever: Merge without ./scripts/clippy-lint.sh\n\n## Entry Points\n- CLI: crates/goose-cli/src/main.rs\n- Server: crates/goose-server/src/main.rs\n- UI: ui/desktop/src/main.ts\n- Agent: crates/goose/src/agents/agent.rs\n\nThis is a rust project with crates in the crates dir:\ngoose: the main code for goose, contains all the core logic\ngoose-bench: bench marking\ngoose-cli: the command line interface, use goose crate\ngoose-mcp: the mcp servers that ship with goose. the developer sub system is of special interest\ngoose-server: the server that suports the desktop (electron) app. also known as goosed\n\n\nui/desktop has an electron app in typescript. \n\nnon trivial features should be implemented in the goose crate and then be called from the goose-cli crate for the cli. for the desktop, you want to add routes to \ngoose-server/src/routes. you can then run `just generate-openapi` to generate the openapi spec which will modify the ui/desktop/src/api files. once you have\nthat you can call the functionality from the server from the typescript.\n\ntips: \n- can look at unstaged changes for what is being worked on if starting\n- always check rust compiles, cargo fmt etc and `./scripts/clippy-lint.sh` (as well as run tests in files you are working on)\n- in ui/desktop, look at how you can run lint checks and if other tests can run\n"}} STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"} -STDERR: 2025-09-25T16:45:17.543464Z  INFO rmcp::handler::server: client initialized -STDERR: at /Users/jackamadeo/development/goose/.hermit/rust/registry/src/index.crates.io-1949cf8c6b5b557f/rmcp-0.6.2/src/handler/server.rs:218 +STDERR: 2025-09-27T04:13:30.418172Z  INFO rmcp::handler::server: client initialized +STDERR: at /Users/angiej/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rmcp-0.6.2/src/handler/server.rs:218 STDERR: STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"text_editor","arguments":{"command":"view","path":"~/goose/crates/goose/tests/tmp/goose.txt"}}} -STDERR: 2025-09-25T16:45:17.543588Z  INFO rmcp::service: Service initialized as server, peer_info: Some(InitializeRequestParam { protocol_version: ProtocolVersion("2025-03-26"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None, elicitation: None }, client_info: Implementation { name: "goose", version: "0.1.0" } }) -STDERR: at /Users/jackamadeo/development/goose/.hermit/rust/registry/src/index.crates.io-1949cf8c6b5b557f/rmcp-0.6.2/src/service.rs:561 +STDERR: 2025-09-27T04:13:30.418412Z  INFO rmcp::service: Service initialized as server, peer_info: Some(InitializeRequestParam { protocol_version: ProtocolVersion("2025-03-26"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None, elicitation: None }, client_info: Implementation { name: "goose", version: "0.1.0" } }) +STDERR: at /Users/angiej/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rmcp-0.6.2/src/service.rs:561 STDERR: in rmcp::service::serve_inner STDERR: -STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"resource","resource":{"uri":"file:///Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt","mimeType":"text","text":"# codename goose\n"},"annotations":{"audience":["assistant"]}},{"type":"text","text":"### /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt\n```\n1: # codename goose\n```\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}} -STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"progressToken":1},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# codename goose (modified by test)","old_str":"# codename goose","path":"~/goose/crates/goose/tests/tmp/goose.txt"}}} -STDOUT: {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"The file /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# codename goose (modified by test)\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# codename goose (modified by test)\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}} +STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"resource","resource":{"uri":"file:///Users/angiej/goose/crates/goose/tests/tmp/goose.txt","mimeType":"text","text":"# goose\n"},"annotations":{"audience":["assistant"]}},{"type":"text","text":"### /Users/angiej/goose/crates/goose/tests/tmp/goose.txt\n```\n1: # goose\n```\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}} +STDIN: {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"progressToken":1},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose (modified by test)","old_str":"# goose","path":"~/goose/crates/goose/tests/tmp/goose.txt"}}} +STDOUT: {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"The file /Users/angiej/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# goose (modified by test)\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# goose (modified by test)\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}} STDIN: {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"progressToken":2},"name":"shell","arguments":{"command":"cat ~/goose/crates/goose/tests/tmp/goose.txt"}}} -STDOUT: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"shell_tool","data":{"type":"shell_output","stream":"stdout","output":"# codename goose (modified by test)"}}} -STDOUT: {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"# codename goose (modified by test)\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"# codename goose (modified by test)\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}} -STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# codename goose","old_str":"# codename goose (modified by test)","path":"~/goose/crates/goose/tests/tmp/goose.txt"}}} -STDOUT: {"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"The file /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# codename goose\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# codename goose\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}} +STDOUT: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"shell_tool","data":{"type":"shell_output","stream":"stdout","output":"# goose (modified by test)"}}} +STDOUT: {"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"# goose (modified by test)\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"# goose (modified by test)\n","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}} +STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"text_editor","arguments":{"command":"str_replace","new_str":"# goose","old_str":"# goose (modified by test)","path":"~/goose/crates/goose/tests/tmp/goose.txt"}}} +STDOUT: {"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"The file /Users/angiej/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# goose\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n","annotations":{"audience":["assistant"]}},{"type":"text","text":"```\n# goose\n```\n","annotations":{"audience":["user"],"priority":0.2}}],"isError":false}} STDIN: {"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"_meta":{"progressToken":4},"name":"list_windows","arguments":{}}} STDOUT: {"jsonrpc":"2.0","id":5,"result":{"content":[{"type":"text","text":"Available windows:\nMenubar","annotations":{"audience":["assistant"]}},{"type":"text","text":"Available windows:\nMenubar","annotations":{"audience":["user"],"priority":0.0}}],"isError":false}} -STDERR: 2025-09-25T16:45:17.625285Z  INFO rmcp::service: input stream terminated +STDERR: 2025-09-27T04:13:30.505916Z  INFO rmcp::service: input stream terminated diff --git a/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper.results.json b/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper.results.json index 8c4c620500d7..c01cbec5f023 100644 --- a/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper.results.json +++ b/crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper.results.json @@ -3,9 +3,9 @@ { "type": "resource", "resource": { - "uri": "file:///Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt", + "uri": "file:///Users/angiej/goose/crates/goose/tests/tmp/goose.txt", "mimeType": "text", - "text": "# codename goose\n" + "text": "# goose\n" }, "annotations": { "audience": [ @@ -15,7 +15,7 @@ }, { "type": "text", - "text": "### /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt\n```\n1: # codename goose\n```\n", + "text": "### /Users/angiej/goose/crates/goose/tests/tmp/goose.txt\n```\n1: # goose\n```\n", "annotations": { "audience": [ "user" @@ -27,7 +27,7 @@ [ { "type": "text", - "text": "The file /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# codename goose (modified by test)\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n", + "text": "The file /Users/angiej/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# goose (modified by test)\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n", "annotations": { "audience": [ "assistant" @@ -36,7 +36,7 @@ }, { "type": "text", - "text": "```\n# codename goose (modified by test)\n```\n", + "text": "```\n# goose (modified by test)\n```\n", "annotations": { "audience": [ "user" @@ -48,7 +48,7 @@ [ { "type": "text", - "text": "# codename goose (modified by test)\n", + "text": "# goose (modified by test)\n", "annotations": { "audience": [ "assistant" @@ -57,7 +57,7 @@ }, { "type": "text", - "text": "# codename goose (modified by test)\n", + "text": "# goose (modified by test)\n", "annotations": { "audience": [ "user" @@ -69,7 +69,7 @@ [ { "type": "text", - "text": "The file /Users/jackamadeo/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# codename goose\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n", + "text": "The file /Users/angiej/goose/crates/goose/tests/tmp/goose.txt has been edited, and the section now reads:\n```\n# goose\n```\n\nReview the changes above for errors. Undo and edit the file again if necessary!\n", "annotations": { "audience": [ "assistant" @@ -78,7 +78,7 @@ }, { "type": "text", - "text": "```\n# codename goose\n```\n", + "text": "```\n# goose\n```\n", "annotations": { "audience": [ "user" diff --git a/crates/goose/tests/mcp_replays/github-mcp-serverstdio b/crates/goose/tests/mcp_replays/github-mcp-serverstdio index a0cfa3e7933c..e69de29bb2d1 100644 --- a/crates/goose/tests/mcp_replays/github-mcp-serverstdio +++ b/crates/goose/tests/mcp_replays/github-mcp-serverstdio @@ -1,6 +0,0 @@ -STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"goose","version":"0.1.0"}}} -STDERR: GitHub MCP Server running on stdio -STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"logging":{},"prompts":{},"resources":{"subscribe":true,"listChanged":true},"tools":{"listChanged":true}},"serverInfo":{"name":"github-mcp-server","version":"version"}}} -STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"} -STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"get_file_contents","arguments":{"owner":"block","path":"README.md","repo":"goose","sha":"48c1ec8afdb7d4d5b4f6e67e623926c884034776"}}} -STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"successfully downloaded text file"},{"type":"resource","resource":{"uri":"repo://block/goose/sha/48c1ec8afdb7d4d5b4f6e67e623926c884034776/contents/README.md","mimeType":"text/plain; charset=utf-8","text":"\u003cdiv align=\"center\"\u003e\n\n# codename goose\n\n_a local, extensible, open source AI agent that automates engineering tasks_\n\n\u003cp align=\"center\"\u003e\n \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n \u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://discord.gg/7GaTvbDwga\"\u003e\n \u003cimg src=\"https://img.shields.io/discord/1287729918100246654?logo=discord\u0026logoColor=white\u0026label=Join+Us\u0026color=blueviolet\" alt=\"Discord\"\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/block/goose/actions/workflows/ci.yml\"\u003e\n \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/block/goose/ci.yml?branch=main\" alt=\"CI\"\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\ngoose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - _autonomously_.\n\nWhether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.\n\nDesigned for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.\n\n# Quick Links\n- [Quickstart](https://block.github.io/goose/docs/quickstart)\n- [Installation](https://block.github.io/goose/docs/getting-started/installation)\n- [Tutorials](https://block.github.io/goose/docs/category/tutorials)\n- [Documentation](https://block.github.io/goose/docs/category/getting-started)\n\n\n# Goose Around with Us\n- [Discord](https://discord.gg/block-opensource)\n- [YouTube](https://www.youtube.com/@blockopensource)\n- [LinkedIn](https://www.linkedin.com/company/block-opensource)\n- [Twitter/X](https://x.com/blockopensource)\n- [Bluesky](https://bsky.app/profile/opensource.block.xyz)\n- [Nostr](https://njump.me/opensource@block.xyz)\n"}}]}} diff --git a/crates/goose/tests/mcp_replays/github-mcp-serverstdio.results.json b/crates/goose/tests/mcp_replays/github-mcp-serverstdio.results.json index 268ac74a2250..fe51488c7066 100644 --- a/crates/goose/tests/mcp_replays/github-mcp-serverstdio.results.json +++ b/crates/goose/tests/mcp_replays/github-mcp-serverstdio.results.json @@ -1,16 +1 @@ -[ - [ - { - "type": "text", - "text": "successfully downloaded text file" - }, - { - "type": "resource", - "resource": { - "uri": "repo://block/goose/sha/48c1ec8afdb7d4d5b4f6e67e623926c884034776/contents/README.md", - "mimeType": "text/plain; charset=utf-8", - "text": "
    \n\n# codename goose\n\n_a local, extensible, open source AI agent that automates engineering tasks_\n\n

    \n \n \n \n \n \"Discord\"\n \n \n \"CI\"\n \n

    \n
    \n\ngoose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - _autonomously_.\n\nWhether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.\n\nDesigned for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.\n\n# Quick Links\n- [Quickstart](https://block.github.io/goose/docs/quickstart)\n- [Installation](https://block.github.io/goose/docs/getting-started/installation)\n- [Tutorials](https://block.github.io/goose/docs/category/tutorials)\n- [Documentation](https://block.github.io/goose/docs/category/getting-started)\n\n\n# Goose Around with Us\n- [Discord](https://discord.gg/block-opensource)\n- [YouTube](https://www.youtube.com/@blockopensource)\n- [LinkedIn](https://www.linkedin.com/company/block-opensource)\n- [Twitter/X](https://x.com/blockopensource)\n- [Bluesky](https://bsky.app/profile/opensource.block.xyz)\n- [Nostr](https://njump.me/opensource@block.xyz)\n" - } - } - ] -] \ No newline at end of file +[] diff --git a/crates/goose/tests/mcp_replays/npx-y@modelcontextprotocol_server-everything b/crates/goose/tests/mcp_replays/npx-y@modelcontextprotocol_server-everything index 4dd60b6493f4..daac3f97c0ee 100644 --- a/crates/goose/tests/mcp_replays/npx-y@modelcontextprotocol_server-everything +++ b/crates/goose/tests/mcp_replays/npx-y@modelcontextprotocol_server-everything @@ -1,4 +1,23 @@ STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"goose","version":"0.1.0"}}} +STDERR: 2025-09-26 23:13:04 - Starting npx setup script. +STDERR: 2025-09-26 23:13:04 - Creating directory ~/.config/goose/mcp-hermit/bin if it does not exist. +STDERR: 2025-09-26 23:13:04 - Changing to directory ~/.config/goose/mcp-hermit. +STDERR: 2025-09-26 23:13:04 - Hermit binary already exists. Skipping download. +STDERR: 2025-09-26 23:13:04 - setting hermit cache to be local for MCP servers +STDERR: 2025-09-26 23:13:04 - Updated PATH to include ~/.config/goose/mcp-hermit/bin. +STDERR: 2025-09-26 23:13:04 - Checking for hermit in PATH. +STDERR: 2025-09-26 23:13:04 - Initializing hermit. +STDERR: 2025-09-26 23:13:04 - Installing Node.js with hermit. +STDERR: 2025-09-26 23:13:04 - Verifying installation locations: +STDERR: 2025-09-26 23:13:04 - hermit: /Users/angiej/.config/goose/mcp-hermit/bin/hermit +STDERR: 2025-09-26 23:13:04 - node: /Users/angiej/.config/goose/mcp-hermit/bin/node +STDERR: 2025-09-26 23:13:04 - npx: /Users/angiej/.config/goose/mcp-hermit/bin/npx +STDERR: 2025-09-26 23:13:04 - Checking for GOOSE_NPM_REGISTRY and GOOSE_NPM_CERT environment variables for custom npm registry setup... +STDERR: 2025-09-26 23:13:05 - Checking custom goose registry availability: https://global.block-artifacts.com/artifactory/api/npm/square-npm/ +STDERR: 2025-09-26 23:13:05 - https://global.block-artifacts.com/artifactory/api/npm/square-npm/ is accessible. Using it for npm registry. +STDERR: 2025-09-26 23:13:06 - Downloading certificate from: https://block-ca.squareup.com/root-certs.pem +STDERR: 2025-09-26 23:13:07 - Certificate downloaded successfully. +STDERR: 2025-09-26 23:13:07 - Executing 'npx' command with arguments: -y @modelcontextprotocol/server-everything STDERR: Starting default (STDIO) server... STDERR: Starting logs update interval STDOUT: {"result":{"protocolVersion":"2025-03-26","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":"example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"Testing and demonstration server for MCP protocol features.\n\n## Resources\n\nResources 1-100 follow pattern: even IDs contain text, odd IDs contain binary data. Resources are paginated at 10 items per page with cursor-based navigation.\n\n## Key dependencies\n\nProgress notifications require `_meta.progressToken` in tool calls. Resource subscriptions generate updates every 10 seconds.\n\n## Performance characteristics\n\nServer generates automatic log messages every 20 seconds (filtered by current log level), stderr notifications every 30 seconds, and resource update notifications every 10 seconds for active subscriptions. Log level changes affect message filtering in real-time.\n\n## Multi-modal testing\n\n`complex_prompt` includes both text arguments and image content for testing client multi-modal handling. `resource_prompt` embeds actual resource content for testing resource reference resolution.\n\nArgument completion is available for prompt parameters and resource IDs. Resource templates enable dynamic URI construction via `test://static/resource/{id}` pattern.\n\n## Easter egg\n\nIf asked about server instructions, respond with \"🎉 Server instructions are working! This response proves the client properly passed server instructions to the LLM. This demonstrates MCP's instructions feature in action.\"\n"},"jsonrpc":"2.0","id":0} @@ -17,5 +36,5 @@ STDOUT: {"method":"notifications/progress","params":{"progress":5,"total":5,"pro STDOUT: {"result":{"content":[{"type":"text","text":"Long running operation completed. Duration: 1 seconds, Steps: 5."}]},"jsonrpc":"2.0","id":3} STDIN: {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"structuredContent","arguments":{"location":"11238"}}} STDOUT: {"result":{"content":[{"type":"text","text":"{\"temperature\":22.5,\"conditions\":\"Partly cloudy\",\"humidity\":65}"}],"structuredContent":{"temperature":22.5,"conditions":"Partly cloudy","humidity":65}},"jsonrpc":"2.0","id":4} -STDOUT: {"method":"notifications/message","params":{"level":"alert","data":"Alert level-message"},"jsonrpc":"2.0"} -STDERR: node:events:496 +STDOUT: {"method":"notifications/message","params":{"level":"emergency","data":"Emergency-level message"},"jsonrpc":"2.0"} +STDERR: node:events:497 diff --git a/crates/goose/tests/mcp_replays/uvxmcp-server-fetch b/crates/goose/tests/mcp_replays/uvxmcp-server-fetch index f1e44a2b1f4d..098b1542d6f7 100644 --- a/crates/goose/tests/mcp_replays/uvxmcp-server-fetch +++ b/crates/goose/tests/mcp_replays/uvxmcp-server-fetch @@ -1,5 +1,29 @@ STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"goose","version":"0.1.0"}}} -STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcp-fetch","version":"1.14.1"}}} +STDERR: 2025-09-26 23:13:04 - Starting uvx setup script. +STDERR: 2025-09-26 23:13:04 - Creating directory ~/.config/goose/mcp-hermit/bin if it does not exist. +STDERR: 2025-09-26 23:13:04 - Changing to directory ~/.config/goose/mcp-hermit. +STDERR: 2025-09-26 23:13:04 - Hermit binary already exists. Skipping download. +STDERR: 2025-09-26 23:13:04 - setting hermit cache to be local for MCP servers +STDERR: 2025-09-26 23:13:04 - Updated PATH to include ~/.config/goose/mcp-hermit/bin. +STDERR: 2025-09-26 23:13:04 - Checking for hermit in PATH. +STDERR: 2025-09-26 23:13:04 - Initializing hermit. +STDERR: 2025-09-26 23:13:04 - hermit install python 3.10 +STDERR: 2025-09-26 23:13:04 - Installing UV with hermit. +STDERR: 2025-09-26 23:13:04 - Verifying installation locations: +STDERR: 2025-09-26 23:13:04 - hermit: /Users/angiej/.config/goose/mcp-hermit/bin/hermit +STDERR: 2025-09-26 23:13:04 - uv: /Users/angiej/.config/goose/mcp-hermit/bin/uv +STDERR: 2025-09-26 23:13:04 - uvx: /Users/angiej/.config/goose/mcp-hermit/bin/uvx +STDERR: 2025-09-26 23:13:04 - Checking for GOOSE_UV_REGISTRY environment variable for custom python/pip/UV registry setup... +STDERR: 2025-09-26 23:13:05 - Checking custom goose registry availability: https://global.block-artifacts.com/artifactory/api/pypi/block-pypi/simple +STDERR: 2025-09-26 23:13:05 - https://global.block-artifacts.com/artifactory/api/pypi/block-pypi/simple is accessible, setting it as UV_DEFAULT_INDEX. Setting UV_NATIVE_TLS to true. +STDERR: 2025-09-26 23:13:05 - Executing 'uvx' command with arguments: mcp-server-fetch +STDOUT: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-03-26","capabilities":{"experimental":{},"prompts":{"listChanged":false},"tools":{"listChanged":false}},"serverInfo":{"name":"mcp-fetch","version":"1.15.0"}}} STDIN: {"jsonrpc":"2.0","method":"notifications/initialized"} STDIN: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"fetch","arguments":{"url":"https://example.com"}}} -STDOUT: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Failed to fetch robots.txt https://example.com/robots.txt due to a connection issue"}],"isError":true}} +STDERR: npm error code FETCH_ERROR +STDERR: npm error errno FETCH_ERROR +STDERR: npm error invalid json response body at https://blocked.teams.cloudflare.com/?account_id=1e25787f854fa4b713d08a859d3e16ed&background_color=%23000000&block_reason=This+has+been+blocked+as+part+of+the+Dependency+Confusion+threat.+Please+see+go%2Fdependencyconfusionpypi+and+go%2Fdependencyconfusionnpm+for+more+info.&device_id=***&footer_text=The+website+you+are+trying+to+access+has+been+blocked+because+it+presents+a+risk+to+the+safety+and+security+of+Block%E2%80%99s+IT+systems.&header_text=This+page+presents+a+risk+to+Block&location=cf1ebd1203624140846ced63a200519e&logo_path=https%3A%2F%2Fmedia.block.xyz%2Flogos%2Fblock-jewel_white.png&mailto_address=&mailto_subject=&name=Block%2C+Inc.¶ms_sign=yrMcT5HYDMHvixy%2BdLHApce3BcNYIdlI8qh3wTcIrLA%3D&query_id=***&rule_id=***&source_ip=2a09%3Abac0%3A1000%3A2df%3A%3A281%3Ac0&suppress_footer=false&url=registry.npmjs.org&user_id=*** reason: Unexpected token '<', " +STDERR: npm error -:::warning Goose Beta Version -This post was written about a beta version of Goose and the commands and flow may have changed. +:::warning goose Beta Version +This post was written about a beta version of goose and the commands and flow may have changed. ::: ### My original calendar: ![calendar](screenshot-calendar-og.png) -### Goose prototyped the designs below: -![Goose prototypes](goose-prototypes-calendar.png) +### goose prototyped the designs below: +![goose prototypes](goose-prototypes-calendar.png) -In this blog post, I'll show you how to quickly prototype design styles by letting Goose handle the CSS for you. +In this blog post, I'll show you how to quickly prototype design styles by letting goose handle the CSS for you. >💡 Note: Your results might look different from my examples - that's part of the fun of generative AI! Each run can produce unique variations of these design trends. ## Get Started with Screenshot-Driven Development @@ -180,7 +180,7 @@ Let's create a basic UI to experiment with. Create an index.html file with the c Once saved, open the file in your browser. You should see a calendar! -### Step 2: Install Goose +### Step 2: Install goose ```bash brew install pipx @@ -196,7 +196,7 @@ goose session start #### Bring your own LLM ->Goose will prompt you to set up your API key when you first run this command. You can use various LLM providers like OpenAI or Anthropic +>goose will prompt you to set up your API key when you first run this command. You can use various LLM providers like OpenAI or Anthropic ```bash export OPENAI_API_KEY=your_api_key @@ -205,9 +205,9 @@ export ANTHROPIC_API_KEY=your_api_key ``` ### Step 4: Enable the Screen toolkit -Goose uses [toolkits](https://block.github.io/goose/plugins/plugins.html) to extend its capabilities. The [screen](https://block.github.io/goose/plugins/available-toolkits.html#6-screen-toolkit) toolkit lets Goose take and analyze screenshots. +goose uses [toolkits](https://block.github.io/goose/plugins/plugins.html) to extend its capabilities. The [screen](https://block.github.io/goose/plugins/available-toolkits.html#6-screen-toolkit) toolkit lets goose take and analyze screenshots. -To enable the Screen toolkit, add it to your Goose profile at ~/.config/goose/profiles.yaml. +To enable the Screen toolkit, add it to your goose profile at ~/.config/goose/profiles.yaml. > Your configuration might look slightly different depending on your LLM provider preferences. @@ -225,8 +225,8 @@ default: requires: {} ``` -### Step 5: Prompt Goose to screenshot your UI -Goose analyzes your UI through screenshots to understand its structure and elements. In your Gooses session, prompt Goose to take a screenshot by specifying which display your UI is on: +### Step 5: Prompt goose to screenshot your UI +goose analyzes your UI through screenshots to understand its structure and elements. In your gooses session, prompt goose to take a screenshot by specifying which display your UI is on: ```bash Take a screenshot of display(1) @@ -234,11 +234,11 @@ Take a screenshot of display(1) > The display number is required - use display(1) for your main monitor or display(2) for a secondary monitor. -Upon success, Goose will run a `screencapture` command and save it as a temporary file. +Upon success, goose will run a `screencapture` command and save it as a temporary file. -### Step 6: Prompt Goose to transform your UI +### Step 6: Prompt goose to transform your UI -Now, you can ask Goose to apply different design styles. Here are some of the prompts I gave Goose and the results it produced: +Now, you can ask goose to apply different design styles. Here are some of the prompts I gave goose and the results it produced: #### Glassmorphism @@ -277,11 +277,11 @@ Apply a brutalist effect please ## Learn More -Developing user interfaces is a blend of creativity and problem-solving. And I love that using Goose gives me more time to focus on creativity rather than wrestling with CSS for hours. +Developing user interfaces is a blend of creativity and problem-solving. And I love that using goose gives me more time to focus on creativity rather than wrestling with CSS for hours. -Beyond prototyping, Goose's ability to analyze screenshots can help developers identify and resolve UI bugs. +Beyond prototyping, goose's ability to analyze screenshots can help developers identify and resolve UI bugs. -If you're interested in learning more, check out the [Goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource). +If you're interested in learning more, check out the [goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource). diff --git a/documentation/blog/2024-12-06-previewing-goose-v10-beta/index.md b/documentation/blog/2024-12-06-previewing-goose-v10-beta/index.md index 6f5dc14d0312..ec128dd6caf1 100644 --- a/documentation/blog/2024-12-06-previewing-goose-v10-beta/index.md +++ b/documentation/blog/2024-12-06-previewing-goose-v10-beta/index.md @@ -1,53 +1,53 @@ --- draft: false -title: "Previewing Goose v1.0 Beta" -description: "Goose v1.0 Beta is here! Learn about the latest features and improvements." +title: "Previewing goose v1.0 Beta" +description: "goose v1.0 Beta is here! Learn about the latest features and improvements." date: 2024-12-06 authors: - adewale --- -![Goose v1.0 Beta](goose-v1.0-beta.png) -We are excited to share a preview of the new updates coming to Goose with Goose v1.0 Beta! +![goose v1.0 Beta](goose-v1.0-beta.png) +We are excited to share a preview of the new updates coming to goose with goose v1.0 Beta! -This major update comes with a bunch of new features and improvements that make Goose more powerful and user-friendly. Here are some of the key highlights. +This major update comes with a bunch of new features and improvements that make goose more powerful and user-friendly. Here are some of the key highlights. -## Exciting Features of Goose 1.0 Beta +## Exciting Features of goose 1.0 Beta ### 1. Transition to Rust -The core of Goose has been rewritten in Rust. Why does this matter? Rust allows for a more portable and stable experience. This change means that Goose can run smoothly on different systems without the need for Python to be installed, making it easier for anyone to start using it. +The core of goose has been rewritten in Rust. Why does this matter? Rust allows for a more portable and stable experience. This change means that goose can run smoothly on different systems without the need for Python to be installed, making it easier for anyone to start using it. ### 2. Contextual Memory -Goose will remember previous interactions to better understand ongoing projects. This means you won’t have to keep repeating yourself. Imagine having a conversation with someone who remembers every detail—this is the kind of support Goose aims to offer. +goose will remember previous interactions to better understand ongoing projects. This means you won’t have to keep repeating yourself. Imagine having a conversation with someone who remembers every detail—this is the kind of support goose aims to offer. ### 3. Improved Plugin System -In Goose v1.0, the Goose toolkit system is being replaced with Extensions. Extensions are modular daemons that Goose can interact with dynamically. As a result, Goose will be able to support more complex plugins and integrations. This will make it easier to extend Goose with new features and functionality. +In goose v1.0, the goose toolkit system is being replaced with Extensions. Extensions are modular daemons that goose can interact with dynamically. As a result, goose will be able to support more complex plugins and integrations. This will make it easier to extend goose with new features and functionality. ### 4. Headless mode -You can now run Goose in headless mode - this is useful for running Goose on servers or in environments where a graphical interface is not available. +You can now run goose in headless mode - this is useful for running goose on servers or in environments where a graphical interface is not available. ```sh cargo run --bin goose -- run -i instructions.md ``` -### 5. Goose now has a GUI +### 5. goose now has a GUI -Goose now has an electron-based GUI macOS application that provides and alternative to the CLI to interact with Goose and manage your projects. +goose now has an electron-based GUI macOS application that provides and alternative to the CLI to interact with goose and manage your projects. -![Goose GUI](goose-gui.png) +![goose GUI](goose-gui.png) -### 6. Goose alignment with open protocols +### 6. goose alignment with open protocols -Goose v1.0 Beta now uses a custom protocol, that is designed in parallel with [Anthropic’s Model Context Protocol](https://www.anthropic.com/news/model-context-protocol) (MCP) to communicate with Systems. This makes it possible for developers to create their own systems (e.g Jira, ) that Goose can integrate with. +goose v1.0 Beta now uses a custom protocol, that is designed in parallel with [Anthropic’s Model Context Protocol](https://www.anthropic.com/news/model-context-protocol) (MCP) to communicate with Systems. This makes it possible for developers to create their own systems (e.g Jira, ) that Goose can integrate with. -Excited for many more feature updates and improvements? Stay tuned for more updates on Goose! Check out the [Goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource). +Excited for many more feature updates and improvements? Stay tuned for more updates on Goose! Check out the [goose repo](https://github.com/block/goose) and join our [Discord community](https://discord.gg/block-opensource). diff --git a/documentation/blog/2024-12-10-connecting-ai-agents-to-your-systems-with-mcp/index.md b/documentation/blog/2024-12-10-connecting-ai-agents-to-your-systems-with-mcp/index.md index 309b9356dfd4..ed861f7cdfbb 100644 --- a/documentation/blog/2024-12-10-connecting-ai-agents-to-your-systems-with-mcp/index.md +++ b/documentation/blog/2024-12-10-connecting-ai-agents-to-your-systems-with-mcp/index.md @@ -19,30 +19,30 @@ We're in the early days of a new era in tech, one where companies are innovating Anthropic is leading the charge with the [Model Context Protocol (MCP)](https://modelcontextprotocol.io), an open standard that enables large language model (LLM) applications to connect with external systems, providing the necessary context for more informed and relevant AI interactions. -This is a game changer for AI agents such as [Goose](https://block.github.io/goose/), which can perform tasks autonomously - a significant leap beyond chatbots that only provide step-by-step instructions. However, to unlock the full potential of these AI agents, we need a standard method for connecting them to external data sources. MCP provides this foundation. +This is a game changer for AI agents such as [goose](https://block.github.io/goose/), which can perform tasks autonomously - a significant leap beyond chatbots that only provide step-by-step instructions. However, to unlock the full potential of these AI agents, we need a standard method for connecting them to external data sources. MCP provides this foundation. -With MCP's standardized APIs and endpoints, Goose can integrate seamlessly into your systems, enhancing its ability to perform complex tasks like debugging, writing code, and running commands directly in your environment. +With MCP's standardized APIs and endpoints, goose can integrate seamlessly into your systems, enhancing its ability to perform complex tasks like debugging, writing code, and running commands directly in your environment. -![Goose Framework](goose-framework-1.0.png) +![goose Framework](goose-framework-1.0.png) ### What's Possible -Without MCP, every [Goose toolkit](https://block.github.io/goose/plugins/using-toolkits.html) developer would need to implement bespoke integrations with every system they need to connect to. Not only is this tedious and repetitive, but it delays the fun stuff. +Without MCP, every [goose toolkit](https://block.github.io/goose/plugins/using-toolkits.html) developer would need to implement bespoke integrations with every system they need to connect to. Not only is this tedious and repetitive, but it delays the fun stuff. -Let's take a simple GitHub workflow, for example. Goose interacts directly with the GitHub API using custom scripts or configurations. Developers must configure Goose to authenticate with GitHub and specify endpoints for actions like fetching open pull requests or adding comments. Each integration requires manual setup and custom coding to handle authentication tokens, error handling, and API updates. +Let's take a simple GitHub workflow, for example. goose interacts directly with the GitHub API using custom scripts or configurations. Developers must configure goose to authenticate with GitHub and specify endpoints for actions like fetching open pull requests or adding comments. Each integration requires manual setup and custom coding to handle authentication tokens, error handling, and API updates. -MCP simplifies the process by providing a standardized interface for accessing GitHub as a resource. Goose, acting as an [MCP client](https://modelcontextprotocol.io/clients), requests the necessary information (e.g., list of open pull requests) from an [MCP server](https://modelcontextprotocol.io/quickstart#general-architecture) configured to expose GitHub's capabilities. The MCP server handles authentication and communication with GitHub, abstracting away the complexity of API interactions. Goose can then focus on tasks like providing a detailed review comment or suggesting code changes. +MCP simplifies the process by providing a standardized interface for accessing GitHub as a resource. goose, acting as an [MCP client](https://modelcontextprotocol.io/clients), requests the necessary information (e.g., list of open pull requests) from an [MCP server](https://modelcontextprotocol.io/quickstart#general-architecture) configured to expose GitHub's capabilities. The MCP server handles authentication and communication with GitHub, abstracting away the complexity of API interactions. goose can then focus on tasks like providing a detailed review comment or suggesting code changes. ### Join the Ecosystem -As MCP adoption expands, so does Goose’s potential to deliver even more powerful solutions for your organization. By [integrating Goose](https://block.github.io/goose/) into your workflows and [embracing MCP](https://modelcontextprotocol.io/introduction), you’re not just enhancing your own systems, you’re contributing to the growth of an ecosystem that makes AI tools more interoperable, efficient, and impactful. +As MCP adoption expands, so does goose’s potential to deliver even more powerful solutions for your organization. By [integrating goose](https://block.github.io/goose/) into your workflows and [embracing MCP](https://modelcontextprotocol.io/introduction), you’re not just enhancing your own systems, you’re contributing to the growth of an ecosystem that makes AI tools more interoperable, efficient, and impactful. Connecting AI Agents to Your Systems with MCP - + diff --git a/documentation/blog/2024-12-11-resolving-ci-issues-with-goose-a-practical-walkthrough/index.md b/documentation/blog/2024-12-11-resolving-ci-issues-with-goose-a-practical-walkthrough/index.md index bcadb38e9dbe..edfab11f659e 100644 --- a/documentation/blog/2024-12-11-resolving-ci-issues-with-goose-a-practical-walkthrough/index.md +++ b/documentation/blog/2024-12-11-resolving-ci-issues-with-goose-a-practical-walkthrough/index.md @@ -1,7 +1,7 @@ --- draft: false -title: "Resolving CI Issues with Goose: A Practical Walkthrough" -description: "Leverage Goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly." +title: "Resolving CI Issues with goose: A Practical Walkthrough" +description: "Leverage goose to simplify your CI debugging process, fetch detailed information about failed CI runs & annotations directly from GitHub, and even apply fixes directly." date: 2024-12-11 authors: - dalton @@ -9,12 +9,12 @@ authors: ![CI](goose-github-ci.png) -Running into Continuous Integration (CI) failures in pull requests can be quite frustrating but they happen very often. In this post, we leverage the GitHub CLI (`gh`) using Goose to simplify your CI debugging process, fetch detailed information about failed CI runs and annotations directly from GitHub, and even apply fixes directly. +Running into Continuous Integration (CI) failures in pull requests can be quite frustrating but they happen very often. In this post, we leverage the GitHub CLI (`gh`) using goose to simplify your CI debugging process, fetch detailed information about failed CI runs and annotations directly from GitHub, and even apply fixes directly. -:::warning Goose Beta Version -This post was written about a beta version of Goose and the commands and flow may have changed. +:::warning goose Beta Version +This post was written about a beta version of goose and the commands and flow may have changed. ::: @@ -24,7 +24,7 @@ Before diving in, ensure you have the necessary tools set up. ### 1. Install and Authenticate GitHub CLI (`gh`) -You'll need the [GitHub CLI](https://cli.github.com/) `gh` to enable Goose's access to CI check run details. +You'll need the [GitHub CLI](https://cli.github.com/) `gh` to enable goose's access to CI check run details. ```bash brew install gh @@ -34,8 +34,8 @@ gh auth login Follow the prompts to authenticate your account. -### 2. Configure Goose -Ensure Goose is configured and ready to interact with your repository and local tools. Specifically, you will need to configure a goose profile with the GitHub toolkit. +### 2. Configure goose +Ensure goose is configured and ready to interact with your repository and local tools. Specifically, you will need to configure a goose profile with the GitHub toolkit. Update your `profiles.yaml` file in `~/.config/goose` with the necessary toolkits: @@ -56,13 +56,13 @@ Start a session with the profile: ```bash goose session start --profile my-profile ``` -If the profile’s toolkits are not correctly configured, Goose might fail to access `gh` commands. +If the profile’s toolkits are not correctly configured, goose might fail to access `gh` commands. -## Resolving CI Failures with Goose -Once everything is set up, we can now use Goose to tackle CI issues with the following steps: +## Resolving CI Failures with goose +Once everything is set up, we can now use goose to tackle CI issues with the following steps: ### Step 1: Fetch CI Failure Details -Ask Goose to retrieve information about the CI failures for a specific PR. +Ask goose to retrieve information about the CI failures for a specific PR. **Example Request:** @@ -73,20 +73,20 @@ Can you tell me about the CI failures on PR #11111 in the organization/repo repo You can access a check run ID by clicking on a PR’s checks tab and selecting a failure. The ID will be available in the URL. -**Goose's Workflow:** +**goose's Workflow:** -Goose will use the `gh` CLI to check run information and provide a detailed summary of the issues. Goose uses the GitHub CLI to: +goose will use the `gh` CLI to check run information and provide a detailed summary of the issues. goose uses the GitHub CLI to: - Fetch details about failed CI runs, including logs and annotations. - Provide a clear and actionable summary of issues. -**Example Command Goose Runs:** +**Example Command goose Runs:** ```curl gh api -H "Accept: application/vnd.github+json" /repos///check-runs//annotations ``` -**Example Goose Output:** +**Example goose Output:** ```mathematica Here are the details for Check Run ID 123456: @@ -110,8 +110,8 @@ Here are the details for Check Run ID 123456: Line: 98 Error: Type mismatch in returned value. Expected 'String', found 'Int'. ``` -### Step 2: Request Fixes from Goose -Once Goose provides the failure details, ask it to resolve the issues directly. +### Step 2: Request Fixes from goose +Once goose provides the failure details, ask it to resolve the issues directly. Example Request: @@ -119,13 +119,13 @@ Example Request: Can you fix these issues and stage the changes so I can review them? Do not add unnecessary code comments. ``` -**What Goose Does:** +**What goose Does:** - Applies fixes based on error messages. - Stages changes for review. -**Example Goose Response:** +**Example goose Response:** ```markdown I have fixed the following files and staged them: @@ -148,26 +148,26 @@ Carefully review the staged changes to ensure they address the issues correctly If needed, clean up or re-stage the changes before committing. -## Benefits of Using Goose -Using Goose to resolve CI issues streamlines your workflow by: +## Benefits of Using goose +Using goose to resolve CI issues streamlines your workflow by: - identifying issues and applying fixes with minimal manual effort. - integrating with tools like the GitHub CLI to validate changes. - handling repetitive CI debugging tasks while you focus on code quality. -Goose allows you to resolve CI failures efficiently, ensuring confidence in your workflow while reducing the effort required for debugging and testing. +goose allows you to resolve CI failures efficiently, ensuring confidence in your workflow while reducing the effort required for debugging and testing. -Try it out, and let Goose handle the heavy lifting of CI debugging for you! +Try it out, and let goose handle the heavy lifting of CI debugging for you! - + - + - - + + diff --git a/documentation/blog/2025-01-28-introducing-codename-goose/index.md b/documentation/blog/2025-01-28-introducing-codename-goose/index.md index 07a973770dc8..4f9ef3838902 100644 --- a/documentation/blog/2025-01-28-introducing-codename-goose/index.md +++ b/documentation/blog/2025-01-28-introducing-codename-goose/index.md @@ -9,29 +9,29 @@ authors: We are thrilled to announce **codename goose**, your on-machine, open source AI agent built to automate your tasks. -Powered by your choice of [large language models (LLMs)](/docs/getting-started/providers), a user-friendly desktop interface and CLI, and [extensions](/docs/getting-started/using-extensions) that integrate with your existing tools and applications, Goose is designed to enhance your productivity and workflow. +Powered by your choice of [large language models (LLMs)](/docs/getting-started/providers), a user-friendly desktop interface and CLI, and [extensions](/docs/getting-started/using-extensions) that integrate with your existing tools and applications, goose is designed to enhance your productivity and workflow. -You can think of Goose as an assistant that is ready to take your instructions, and do the work for you. +You can think of goose as an assistant that is ready to take your instructions, and do the work for you. -While Goose's first use cases are engineering focused, the community has been exploring other non-engineering use cases for Goose as well. And it goes without saying, Goose is [open source](https://github.com/block/goose) 🎉. +While goose's first use cases are engineering focused, the community has been exploring other non-engineering use cases for goose as well. And it goes without saying, goose is [open source](https://github.com/block/goose) 🎉. -## How Goose Works +## How goose Works -Goose operates as an intelligent, autonomous agent capable of handling complex tasks through a well-orchestrated coordination of its core features: +goose operates as an intelligent, autonomous agent capable of handling complex tasks through a well-orchestrated coordination of its core features: -- **Using Extensions**: [Extensions](/docs/getting-started/using-extensions) are key to Goose’s adaptability, providing you the ability to connect with applications and tools that you already use. Whether it’s connecting to GitHub, accessing Google Drive or integrating with JetBrains IDEs, the possibilities are extensive. Some of these extensions have been curated in the [extensions][extensions-directory] directory. Goose extensions are built on the [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) - enabling you to build or bring your own custom integrations to Goose. +- **Using Extensions**: [Extensions](/docs/getting-started/using-extensions) are key to goose’s adaptability, providing you the ability to connect with applications and tools that you already use. Whether it’s connecting to GitHub, accessing Google Drive or integrating with JetBrains IDEs, the possibilities are extensive. Some of these extensions have been curated in the [extensions][extensions-directory] directory. goose extensions are built on the [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) - enabling you to build or bring your own custom integrations to goose. -- **LLM Providers**: Goose is compatible with a wide range of [LLM providers](/docs/getting-started/providers), allowing you to choose and integrate your preferred model. +- **LLM Providers**: goose is compatible with a wide range of [LLM providers](/docs/getting-started/providers), allowing you to choose and integrate your preferred model. -- **CLI and Desktop Support**: You can run Goose as a desktop app or through the command-line interface (CLI) using the same configurations across both. +- **CLI and Desktop Support**: You can run goose as a desktop app or through the command-line interface (CLI) using the same configurations across both. -## Goose in Action +## goose in Action -Goose is able to handle a wide range of tasks, from simple to complex, across various engineering domains. Here are some examples of tasks that Goose has helped people with: +goose is able to handle a wide range of tasks, from simple to complex, across various engineering domains. Here are some examples of tasks that goose has helped people with: - Conduct code migrations such as Ember to React, Ruby to Kotlin, Prefect-1 to Prefect-2 etc. - Dive into a new project in an unfamiliar coding language @@ -45,10 +45,10 @@ Goose is able to handle a wide range of tasks, from simple to complex, across va ## Getting Started -You can get started using Goose right away! Check out our [Quickstart](/docs/quickstart). +You can get started using goose right away! Check out our [Quickstart](/docs/quickstart). -## Join the Goose Community +## Join the goose Community Excited for upcoming features and events? Be sure to connect with us! diff --git a/documentation/blog/2025-02-17-agentic-ai-mcp/index.md b/documentation/blog/2025-02-17-agentic-ai-mcp/index.md index b7459d8451fe..6169e2e2d6cf 100644 --- a/documentation/blog/2025-02-17-agentic-ai-mcp/index.md +++ b/documentation/blog/2025-02-17-agentic-ai-mcp/index.md @@ -116,21 +116,21 @@ Without tool calling, LLMs would only guess answers based on their training data It's worth noting that not all agents are the same when it comes to tool access. Most proprietary agents are tightly scoped to a specific LLM and a predefined set of tools, as companies build agents tailored for their own applications. -Other agents, like Goose, are more extensible, allowing users to configure it with the LLM of their choice, as well as add tools for various APIs, databases, and even [local environments like IDEs](/docs/mcp/jetbrains-mcp). However, for agents to scale across different tools and systems without requiring custom integrations for each one, they need a standardized way to discover, call, and manage tools. This is exactly what the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) provides. +Other agents, like goose, are more extensible, allowing users to configure it with the LLM of their choice, as well as add tools for various APIs, databases, and even [local environments like IDEs](/docs/mcp/jetbrains-mcp). However, for agents to scale across different tools and systems without requiring custom integrations for each one, they need a standardized way to discover, call, and manage tools. This is exactly what the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) provides. ## MCP Ecosystem Traditional AI integrations require custom API calls for every system, making scaling difficult. MCP solves this by providing an open, universal protocol for agents to communicate with external systems dynamically. -With MCP, an agent like Goose can: +With MCP, an agent like goose can: * connect to any API without a developer writing manual integration code * integrate with cloud services, dev tools, databases, and enterprise systems * retrieve and store context to enhance reasoning -At the time of this writing, there are more than [1000 MCP servers](https://www.pulsemcp.com/servers) (systems that expose tools) that any MCP-enabled AI agent like Goose can connect to! These MCP servers act as bridges between agents and external systems, enabling access to APIs, databases, and development environments. Some were developed by the official API providers, while the vast majority were developed by community members. Because MCP is an open standard, anyone can build an MCP server for any resource. This greatly increases the possibilities of AI agents! +At the time of this writing, there are more than [1000 MCP servers](https://www.pulsemcp.com/servers) (systems that expose tools) that any MCP-enabled AI agent like goose can connect to! These MCP servers act as bridges between agents and external systems, enabling access to APIs, databases, and development environments. Some were developed by the official API providers, while the vast majority were developed by community members. Because MCP is an open standard, anyone can build an MCP server for any resource. This greatly increases the possibilities of AI agents! -For example, let's say I want Goose to develop a new web app for me in my WebStorm IDE based on a Figma design and then commit the code to a new repo in GitHub. I can add the following MCP Servers as Goose extensions to give it all of these capabilities: +For example, let's say I want goose to develop a new web app for me in my WebStorm IDE based on a Figma design and then commit the code to a new repo in GitHub. I can add the following MCP Servers as goose extensions to give it all of these capabilities: * [Figma](/docs/mcp/figma-mcp) * [JetBrains](/docs/mcp/jetbrains-mcp) @@ -143,7 +143,7 @@ With this, I can prompt my AI agent in natural language and it'll take care of t Pretty powerful, right?! ## Get Started with AI Agents -Hopefully this has provided clear insight into what are AI agents, how they work, and what they can enable for you. [Goose](/docs/getting-started/installation) is free and open source and you can add as many [extensions](/docs/getting-started/using-extensions#adding-extensions) as you desire. This is a great way to get started with AI agents and see how they can automate tasks in your workflow to make you more efficient. +Hopefully this has provided clear insight into what are AI agents, how they work, and what they can enable for you. [goose](/docs/getting-started/installation) is free and open source and you can add as many [extensions](/docs/getting-started/using-extensions#adding-extensions) as you desire. This is a great way to get started with AI agents and see how they can automate tasks in your workflow to make you more efficient. diff --git a/documentation/blog/2025-02-21-gooseteam-mcp/index.md b/documentation/blog/2025-02-21-gooseteam-mcp/index.md index 9923c38570b1..23fe5f20ef20 100644 --- a/documentation/blog/2025-02-21-gooseteam-mcp/index.md +++ b/documentation/blog/2025-02-21-gooseteam-mcp/index.md @@ -1,45 +1,45 @@ --- title: Let A Team of AI Agents Do It For You -description: Community Spotlight on Cliff Hall's GooseTeam MCP server. +description: Community Spotlight on Cliff Hall's gooseTeam MCP server. authors: - tania --- ![blog banner](gooseteam-mcp.png) -During our [previous livestream](https://youtu.be/9tq-QUnE29U), Aaron Goldsmith, Infrastructure Operations Engineer at Cash App, showed a team of Goose AI agents collaborating in real time to create a website. Our community loved it so much, Cliff Hall was inspired to iterate on that idea and create a GooseTeam MCP server. +During our [previous livestream](https://youtu.be/9tq-QUnE29U), Aaron Goldsmith, Infrastructure Operations Engineer at Cash App, showed a team of goose AI agents collaborating in real time to create a website. Our community loved it so much, Cliff Hall was inspired to iterate on that idea and create a gooseTeam MCP server. ## The Original Protocol -Aaron Goldsmith made an AI agent team consisting of multiple Goose instances a reality with his lightweight [Agent Communication Protocol](https://gist.github.com/AaronGoldsmith/114c439ae67e4f4c47cc33e829c82fac). With it, each Goose agent enters the chat, gets assigned a role (e.g. Project Coordinator, Researcher, Web Developer), and works on its part of a given task. The protocol specifies instructions guiding how the agents should talk and behave, allowing multiple Goose agents to collaborate. It also specifies that communication between the agents should be done via a Python-based websocket server with text/markdown . +Aaron Goldsmith made an AI agent team consisting of multiple goose instances a reality with his lightweight [Agent Communication Protocol](https://gist.github.com/AaronGoldsmith/114c439ae67e4f4c47cc33e829c82fac). With it, each goose agent enters the chat, gets assigned a role (e.g. Project Coordinator, Researcher, Web Developer), and works on its part of a given task. The protocol specifies instructions guiding how the agents should talk and behave, allowing multiple goose agents to collaborate. It also specifies that communication between the agents should be done via a Python-based websocket server with text/markdown . -## GooseTeam MCP Server +## gooseTeam MCP Server -Introducing [GooseTeam](https://github.com/cliffhall/GooseTeam), created by Software Architect and community member, Cliff Hall. GooseTeam takes Aaron's protocol and iterates on it into an MCP server and collaboration protocol for Goose Agents. With features like task management, message storage, and agent waiting, you can have an entire team of Goose agents work together on a task or project for you. +Introducing [gooseTeam](https://github.com/cliffhall/gooseTeam), created by Software Architect and community member, Cliff Hall. gooseTeam takes Aaron's protocol and iterates on it into an MCP server and collaboration protocol for goose Agents. With features like task management, message storage, and agent waiting, you can have an entire team of goose agents work together on a task or project for you. -A Goose agent with the Project Coordinator role will assign roles to other agents, your connected agents will send messages that can retrieved at any time, and your team of agents will connect to the same MCP server to collaborate together. +A goose agent with the Project Coordinator role will assign roles to other agents, your connected agents will send messages that can retrieved at any time, and your team of agents will connect to the same MCP server to collaborate together. -![Goose Agents](gooseteam-agents.png) +![goose Agents](gooseteam-agents.png) -## A New Way to Goose +## A New Way to goose -Working with a team of AI agents on a task is a game changer. Instead of getting confused as to how to improve your prompt engineering on your own or work across sessions manually, tools like Cliff's GooseTeam or Aaron's Agent Communication Protocol help us make sure AI agents like Goose are doing the work for us as efficiently as possible. The possibilities feel endless! +Working with a team of AI agents on a task is a game changer. Instead of getting confused as to how to improve your prompt engineering on your own or work across sessions manually, tools like Cliff's gooseTeam or Aaron's Agent Communication Protocol help us make sure AI agents like goose are doing the work for us as efficiently as possible. The possibilities feel endless! ## Get Your Contribution Featured -Hopefully this contribution inspired you as much as it inspired our community. If you have a Goose contribution or project you'd like to share with our community, join our [Discord](https://discord.gg/block-opensource) and share your work in the **#share-your-work** channel. You may just be featured on our livestream or get a cool prize. 👀 You can also star Goose on GitHub or follow us on social media so you never miss an update from us. Until next time! +Hopefully this contribution inspired you as much as it inspired our community. If you have a goose contribution or project you'd like to share with our community, join our [Discord](https://discord.gg/block-opensource) and share your work in the **#share-your-work** channel. You may just be featured on our livestream or get a cool prize. 👀 You can also star goose on GitHub or follow us on social media so you never miss an update from us. Until next time! - + - + \ No newline at end of file diff --git a/documentation/blog/2025-03-06-goose-tips/index.md b/documentation/blog/2025-03-06-goose-tips/index.md index 4e70a766cd9a..d9d7b58a4fbe 100644 --- a/documentation/blog/2025-03-06-goose-tips/index.md +++ b/documentation/blog/2025-03-06-goose-tips/index.md @@ -1,44 +1,44 @@ --- -title: 6 Essential Tips for Working with Goose -description: Practical tips to help you use Goose more effectively and efficiently. +title: 6 Essential Tips for Working with goose +description: Practical tips to help you use goose more effectively and efficiently. authors: - angie --- ![goose tips](goose-tips.png) -Working with AI agents can sometimes feel unpredictable. After using Goose extensively for the last few months, I've compiled a few key tips that will help you get the most out of this tool. No matter your workflow, these guidelines will help you work more efficiently with Goose. +Working with AI agents can sometimes feel unpredictable. After using goose extensively for the last few months, I've compiled a few key tips that will help you get the most out of this tool. No matter your workflow, these guidelines will help you work more efficiently with goose. ## 1. Keep Sessions Focused and Short -One of the most common mistakes users make is trying to accomplish too much in a single session. While it might seem efficient to keep the conversation going, longer sessions can actually hinder Goose's performance. +One of the most common mistakes users make is trying to accomplish too much in a single session. While it might seem efficient to keep the conversation going, longer sessions can actually hinder goose's performance. -Every message adds to the context window, which is the amount of conversation history Goose can retain at any given time. This history is made up of tokens, the individual pieces of text (words or even parts of words) that Goose processes to generate responses. More tokens don’t just increase processing time, they also contribute to LLM usage costs. And once the context window fills up, older messages get pushed out, which can lead to loss of important details or unexpected behavior. +Every message adds to the context window, which is the amount of conversation history goose can retain at any given time. This history is made up of tokens, the individual pieces of text (words or even parts of words) that goose processes to generate responses. More tokens don’t just increase processing time, they also contribute to LLM usage costs. And once the context window fills up, older messages get pushed out, which can lead to loss of important details or unexpected behavior. Think of it like keeping too many browser tabs open. Eventually, it impacts performance. Instead, start fresh sessions for distinct tasks. Don't worry about losing context; that's exactly what the [Memory extension](/docs/mcp/memory-mcp) is for. Keeping sessions focused and concise ensures more accurate, relevant responses while also keeping your LLM costs under control. ## 2. Minimize Active Extensions -When it comes to Goose extensions, less is often more. It's tempting to enable [every available extension](https://www.pulsemcp.com/servers) just in case (I'm guilty of this!), but this approach can be counterproductive. Each active extension adds to the system prompt, increasing complexity and making Goose work harder to decide which tools to use. +When it comes to goose extensions, less is often more. It's tempting to enable [every available extension](https://www.pulsemcp.com/servers) just in case (I'm guilty of this!), but this approach can be counterproductive. Each active extension adds to the system prompt, increasing complexity and making goose work harder to decide which tools to use. Consider this: if you're cooking in a kitchen, having every possible utensil and appliance out on the counter doesn't make you a better chef. It just creates clutter and confusion. The same principle applies here. Go ahead and install any extensions that interest you, but [keep them disabled](/docs/getting-started/using-extensions#enablingdisabling-extensions) until you need them. Start with the built-in [Developer extension](/docs/mcp/developer-mcp) enabled, which is surprisingly powerful on its own, and only enable others when you need their specific capabilities. This leads to faster responses, lower token usage, and often more focused solutions. :::tip Bonus Tip -Before starting a complex task, ask Goose about its current capabilities. A simple prompt like "Do you have tools available to work with [specific technology/service]?" can save time and prevent false starts. Goose can tell you whether it has the necessary tools for your task, and if not, suggest which extensions you might need to enable. This quick check ensures you have the right tools ready before diving in too deep. +Before starting a complex task, ask goose about its current capabilities. A simple prompt like "Do you have tools available to work with [specific technology/service]?" can save time and prevent false starts. goose can tell you whether it has the necessary tools for your task, and if not, suggest which extensions you might need to enable. This quick check ensures you have the right tools ready before diving in too deep. ::: -## 3. Teach Goose with .goosehints Files +## 3. Teach goose with .goosehints Files -One of Goose's most powerful features is its ability to understand context through [.goosehints](/docs/guides/using-goosehints) files, acting like a "README for AI". These hints can be set at both the project and global levels to guide Goose’s responses. +One of goose's most powerful features is its ability to understand context through [.goosehints](/docs/guides/using-goosehints) files, acting like a "README for AI". These hints can be set at both the project and global levels to guide goose’s responses. -At the project level, placing .goosehints files in your directory helps Goose understand your structure, conventions, and special considerations. You can even use multiple files - one at the root for overall guidance and others in specific directories for more granular instructions (e.g., frontend styling conventions). +At the project level, placing .goosehints files in your directory helps goose understand your structure, conventions, and special considerations. You can even use multiple files - one at the root for overall guidance and others in specific directories for more granular instructions (e.g., frontend styling conventions). Beyond projects, global .goosehints files (`~/.config/goose/.goosehints`) apply across all sessions, making them perfect for things like: @@ -50,29 +50,29 @@ Beyond projects, global .goosehints files (`~/.config/goose/.goosehints`) apply ## 4. Choose the Right Mode for Your Workflow -Goose offers [different modes](/docs/guides/goose-permissions) that determine how much autonomy it has when modifying files, using extensions, and performing automated actions. +goose offers [different modes](/docs/guides/goose-permissions) that determine how much autonomy it has when modifying files, using extensions, and performing automated actions. -* ⚡️ **Auto Mode (Default):** Goose can modify, create, and delete files, as well as use extensions, without requiring approval. Best for users who want seamless automation. +* ⚡️ **Auto Mode (Default):** goose can modify, create, and delete files, as well as use extensions, without requiring approval. Best for users who want seamless automation. -* ✅ **Approve Mode:** Goose asks for confirmation before making changes. With [Smart Approve](/docs/guides/goose-permissions#permission-modes) enabled, it evaluates risk levels and prompts for high-risk actions while executing safe ones automatically. +* ✅ **Approve Mode:** goose asks for confirmation before making changes. With [Smart Approve](/docs/guides/goose-permissions#permission-modes) enabled, it evaluates risk levels and prompts for high-risk actions while executing safe ones automatically. -* 💬 **Chat Mode:** Goose operates in chat-only mode, without modifying files or using extensions. Ideal for users who want AI assistance without automation. +* 💬 **Chat Mode:** goose operates in chat-only mode, without modifying files or using extensions. Ideal for users who want AI assistance without automation. -If you’re new to Goose or working on a critical project, Approve Mode offers a great balance of automation and oversight. For hands-free workflows, Auto Mode keeps things moving, while Chat Mode is perfect for brainstorming and general AI assistance. +If you’re new to goose or working on a critical project, Approve Mode offers a great balance of automation and oversight. For hands-free workflows, Auto Mode keeps things moving, while Chat Mode is perfect for brainstorming and general AI assistance. -## 5. Guide Goose with Step-by-Step Execution +## 5. Guide goose with Step-by-Step Execution -Complex tasks are best handled in stages, and Goose excels when you allow it to break problems into manageable steps. Instead of expecting an instant solution, ask Goose to generate a step-by-step plan first. Review the plan to ensure it aligns with your goals, then let Goose execute each step in sequence. +Complex tasks are best handled in stages, and goose excels when you allow it to break problems into manageable steps. Instead of expecting an instant solution, ask goose to generate a step-by-step plan first. Review the plan to ensure it aligns with your goals, then let goose execute each step in sequence. This structured approach not only improves accuracy but also gives you more control over the process. You can pause, adjust, or refine each step as needed, giving you more control while ensuring better results. ## 6. Refine and Iterate for Better Responses -Goose is powerful, but like any AI, it sometimes needs a second pass to get things right. If you don’t get the response you need, try refining your prompt or asking Goose to adjust its answer. +goose is powerful, but like any AI, it sometimes needs a second pass to get things right. If you don’t get the response you need, try refining your prompt or asking goose to adjust its answer. Good iteration techniques include: -* Asking Goose to explain its reasoning before taking action +* Asking goose to explain its reasoning before taking action * Requesting alternative solutions to compare different approaches * Asking for a step-by-step breakdown of its thought process * Rewording prompts to add more detail or constraints @@ -81,17 +81,17 @@ For example, instead of asking, "Help me debug this error," try, "I’m getting --- -By following these tips, you'll be able to work more effectively with Goose, getting better results while using fewer resources. Remember, the goal is to solve problems efficiently and effectively. Whether you're writing code, automating tasks, or managing complex projects, these guidelines will help you make the most of what Goose has to offer. +By following these tips, you'll be able to work more effectively with goose, getting better results while using fewer resources. Remember, the goal is to solve problems efficiently and effectively. Whether you're writing code, automating tasks, or managing complex projects, these guidelines will help you make the most of what goose has to offer. - + - + - - + + \ No newline at end of file diff --git a/documentation/blog/2025-03-10-goose-calls-vyop/index.md b/documentation/blog/2025-03-10-goose-calls-vyop/index.md index bd5f3d8f0e62..373e381e46ae 100644 --- a/documentation/blog/2025-03-10-goose-calls-vyop/index.md +++ b/documentation/blog/2025-03-10-goose-calls-vyop/index.md @@ -1,6 +1,6 @@ --- -title: "Automating Phone Calls with Goose" -description: Practical tips to help you use Goose more effectively and efficiently. +title: "Automating Phone Calls with goose" +description: Practical tips to help you use goose more effectively and efficiently. authors: - angie --- @@ -11,19 +11,19 @@ authors:
    -In the latest episode of [Wild Goose Case](https://www.youtube.com/playlist?list=PLyMFt_U2IX4uMW9kpE1FENQUyIgLuUnWD), hosts [Ebony Louis](https://www.linkedin.com/in/ebonylouis/) and [Ace Abati](https://www.linkedin.com/in/acekyd/) explored a fascinating new way to extend Goose’s automation capabilities by integrating with [VOYP](https://voyp.app/), an AI-powered system that makes phone calls. Their guest, [Paulo Taylor](https://www.linkedin.com/in/paulotaylor/), a technology veteran with over 35 years of experience, walked through how developers can use Goose to trigger and manage phone-based interactions through VOYP. +In the latest episode of [Wild goose Case](https://www.youtube.com/playlist?list=PLyMFt_U2IX4uMW9kpE1FENQUyIgLuUnWD), hosts [Ebony Louis](https://www.linkedin.com/in/ebonylouis/) and [Ace Abati](https://www.linkedin.com/in/acekyd/) explored a fascinating new way to extend goose’s automation capabilities by integrating with [VOYP](https://voyp.app/), an AI-powered system that makes phone calls. Their guest, [Paulo Taylor](https://www.linkedin.com/in/paulotaylor/), a technology veteran with over 35 years of experience, walked through how developers can use goose to trigger and manage phone-based interactions through VOYP. -# Expanding Goose’s Reach with AI-Powered Calls +# Expanding goose’s Reach with AI-Powered Calls -Goose is already known for automating tasks, but you can extend that automation beyond the screen. With the [VOYP Goose Extension](goose://extension?cmd=npx&arg=-y&arg=voyp-mcp&id=voyp&name=VOYP&description=Automated%20Phone%20Calling&env=VOYP_API_KEY%3DVOYP%20API%20key), you can automate phone calls to retrieve information, handle customer interactions, or even assist with accessibility needs. +goose is already known for automating tasks, but you can extend that automation beyond the screen. With the [VOYP Goose Extension](goose://extension?cmd=npx&arg=-y&arg=voyp-mcp&id=voyp&name=VOYP&description=Automated%20Phone%20Calling&env=VOYP_API_KEY%3DVOYP%20API%20key), you can automate phone calls to retrieve information, handle customer interactions, or even assist with accessibility needs. -VOYP functions as an AI call agent, using LLMs and Text-to-Speech (TTS) technology to conduct conversations over the phone. This means you can trigger phone interactions directly from Goose sessions, enabling real-world automation beyond traditional interfaces. +VOYP functions as an AI call agent, using LLMs and Text-to-Speech (TTS) technology to conduct conversations over the phone. This means you can trigger phone interactions directly from goose sessions, enabling real-world automation beyond traditional interfaces. # How It Works -Under the hood, VOYP utilizes multiple telecom providers to optimize call costs. It supports various LLMs and TTS providers, giving users flexibility in how they configure their AI caller. The integration with Goose is made possible through the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), which allows Goose to communicate seamlessly with VOYP and other AI-driven tools. +Under the hood, VOYP utilizes multiple telecom providers to optimize call costs. It supports various LLMs and TTS providers, giving users flexibility in how they configure their AI caller. The integration with goose is made possible through the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), which allows goose to communicate seamlessly with VOYP and other AI-driven tools. # Live Demo: AI Calls in Action During the livestream, Paulo demonstrated VOYP’s capabilities with a series of engaging examples. One highlight was a playful experiment where the AI made a phone call to tell a goose-themed joke. @@ -32,18 +32,18 @@ During the livestream, Paulo demonstrated VOYP’s capabilities with a series of In [another demo](https://www.youtube.com/live/g_F1u6aqohk?t=1515), Paulo had VOYP engage in a conversation with ChatGPT’s phone service about time travel, showing how fluid and adaptable the AI’s responses can be. He also walked through VOYP's real-time conversation monitoring dashboard, which provides a transparent look at how the AI processes and responds during calls. -# Getting Started with Goose and VOYP -For those eager to experiment with [VOYP](https://github.com/paulotaylor/voyp-mcp), sign up on the [VOYP website](https://voyp.app/) to create an account and obtain an API key. While calls require credits, new users receive 20 free credits for testing. The cost per call varies by region, with U.S.-based calls being the most affordable at approximately five credits per minute. To integrate VOYP with Goose, [install the VOYP extension](goose://extension?cmd=npx&arg=-y&arg=voyp-mcp&id=voyp&name=VOYP&description=Automated%20Phone%20Calling&env=VOYP_API_KEY%3DVOYP%20API%20key). +# Getting Started with goose and VOYP +For those eager to experiment with [VOYP](https://github.com/paulotaylor/voyp-mcp), sign up on the [VOYP website](https://voyp.app/) to create an account and obtain an API key. While calls require credits, new users receive 20 free credits for testing. The cost per call varies by region, with U.S.-based calls being the most affordable at approximately five credits per minute. To integrate VOYP with goose, [install the VOYP extension](goose://extension?cmd=npx&arg=-y&arg=voyp-mcp&id=voyp&name=VOYP&description=Automated%20Phone%20Calling&env=VOYP_API_KEY%3DVOYP%20API%20key). - + - + - - + + \ No newline at end of file diff --git a/documentation/blog/2025-03-12-goose-figma-mcp/index.md b/documentation/blog/2025-03-12-goose-figma-mcp/index.md index 76e680dc8b78..780707103615 100644 --- a/documentation/blog/2025-03-12-goose-figma-mcp/index.md +++ b/documentation/blog/2025-03-12-goose-figma-mcp/index.md @@ -1,45 +1,45 @@ --- -title: "Turn Figma Designs Into Code With Goose" -description: Give Goose the ability to turn Figma designs into code with the Figma extension. +title: "Turn Figma Designs Into Code With goose" +description: Give goose the ability to turn Figma designs into code with the Figma extension. authors: - tania --- ![blog cover](goosefigma.png) -In our previous episode of [Goose Flight School](https://www.youtube.com/playlist?list=PLyMFt_U2IX4s1pMaidir5P4lSfjUK6Nzm), our host [Adewale Abati](https://www.linkedin.com/in/acekyd/) showed us how to use Goose to take a Figma design and transform it into a functional Nuxt application. In this stream he covered the entire process, from initial setup to final implementation, highlighting how Goose can help developers bridge the gap between design and development. +In our previous episode of [goose Flight School](https://www.youtube.com/playlist?list=PLyMFt_U2IX4s1pMaidir5P4lSfjUK6Nzm), our host [Adewale Abati](https://www.linkedin.com/in/acekyd/) showed us how to use goose to take a Figma design and transform it into a functional Nuxt application. In this stream he covered the entire process, from initial setup to final implementation, highlighting how goose can help developers bridge the gap between design and development. # How It Works -[Extensions](https://block.github.io/goose/docs/getting-started/using-extensions) enhance Goose's functionality by connecting with your existing tools and workflows. They add new features, access external data resources, and integrate with other systems. Learn how multiple extensions, including Figma and Developer, worked together seamlessly to dramatically accelerate development. +[Extensions](https://block.github.io/goose/docs/getting-started/using-extensions) enhance goose's functionality by connecting with your existing tools and workflows. They add new features, access external data resources, and integrate with other systems. Learn how multiple extensions, including Figma and Developer, worked together seamlessly to dramatically accelerate development. -# Live Tutorial: Goose Builds Live -During the livestream, Adewale demonstrated step-by-step how Goose handled each development phase, from creating the basic application structure to generating responsive layouts using Tailwind CSS. Adewale also highlighted how Goose addresses potential limitations as you go, showcasing the powerful balance between the Goose's automation and developer control. +# Live Tutorial: goose Builds Live +During the livestream, Adewale demonstrated step-by-step how goose handled each development phase, from creating the basic application structure to generating responsive layouts using Tailwind CSS. Adewale also highlighted how goose addresses potential limitations as you go, showcasing the powerful balance between the goose's automation and developer control. -Throughout the stream, Adewale shared valuable tips to prepare your design for Goose. His key recommendations include: +Throughout the stream, Adewale shared valuable tips to prepare your design for goose. His key recommendations include: * start with a well-structured Figma design -* use Goose to make targeted improvements after the initial generation +* use goose to make targeted improvements after the initial generation * fine-tune specific elements as needed * make sure you thoroughly test for functionality and responsiveness -# Getting Started with Goose and Figma -Whether you're a designer wanting to rapidly turn concepts into working code or a developer curious about streamlining design implementation, you can download Goose with its built-in [Developer extension](https://block.github.io/goose/docs/getting-started/installation) and add the [Figma extension](https://block.github.io/goose/v1/extensions/). +# Getting Started with goose and Figma +Whether you're a designer wanting to rapidly turn concepts into working code or a developer curious about streamlining design implementation, you can download goose with its built-in [Developer extension](https://block.github.io/goose/docs/getting-started/installation) and add the [Figma extension](https://block.github.io/goose/v1/extensions/). For step-by-step instructions, check out the [Figma tutorial](/docs/mcp/figma-mcp). - + - + - - + + \ No newline at end of file diff --git a/documentation/blog/2025-03-14-goose-ollama/index.md b/documentation/blog/2025-03-14-goose-ollama/index.md index 3b51e99bcad2..59bd797736fd 100644 --- a/documentation/blog/2025-03-14-goose-ollama/index.md +++ b/documentation/blog/2025-03-14-goose-ollama/index.md @@ -1,23 +1,23 @@ --- -title: "AI, But Make It Local With Goose and Ollama" -description: Integrate Goose with Ollama for a fully local experience. +title: "AI, But Make It Local With goose and Ollama" +description: Integrate goose with Ollama for a fully local experience. authors: - tania --- ![blog cover](gooseollama.png) -On the [Goosing Around](https://youtube.com/playlist?list=PLyMFt_U2IX4uFFhd_2TD9-tlJkgHMMb6F&feature=shared) stream series, host [Rizel Scarlett](https://www.linkedin.com/in/rizel-bobb-semple/) [demonstrated how to use Goose locally with Ollama](https://youtube.com/watch?v=WG10r2N0IwM?feature=share) for a fully local experience on your device. Her guest, [Parth Sareen](https://www.linkedin.com/in/parthsareen/), an experienced software engineer with a focus on building frameworks and systems for AI/ML, showed us the magic of structured outputs and how Goose and Ollama work together under the hood. +On the [Goosing Around](https://youtube.com/playlist?list=PLyMFt_U2IX4uFFhd_2TD9-tlJkgHMMb6F&feature=shared) stream series, host [Rizel Scarlett](https://www.linkedin.com/in/rizel-bobb-semple/) [demonstrated how to use goose locally with Ollama](https://youtube.com/watch?v=WG10r2N0IwM?feature=share) for a fully local experience on your device. Her guest, [Parth Sareen](https://www.linkedin.com/in/parthsareen/), an experienced software engineer with a focus on building frameworks and systems for AI/ML, showed us the magic of structured outputs and how goose and Ollama work together under the hood. -Goose serves as an on-machine AI agent that can interact with your applications and tools through extensions, providing the framework and interface for AI-powered workflows. Ollama enables running large language models locally with a simple API, handling the optimization of models to run efficiently on consumer hardware. +goose serves as an on-machine AI agent that can interact with your applications and tools through extensions, providing the framework and interface for AI-powered workflows. Ollama enables running large language models locally with a simple API, handling the optimization of models to run efficiently on consumer hardware. Together, they create a self-contained AI agent workflow that puts advanced capabilities directly in the hands of developers. # Getting Started -Before diving deep into various capabilities, Rizel walked us through how to set yourself up for success by integrating Goose with Ollama. To follow along, you can download Goose [here](https://block.github.io/goose/) and follow a step-by-step walk through in the [Configure LLM Provider](https://block.github.io/goose/docs/getting-started/providers) guide. +Before diving deep into various capabilities, Rizel walked us through how to set yourself up for success by integrating goose with Ollama. To follow along, you can download goose [here](https://block.github.io/goose/) and follow a step-by-step walk through in the [Configure LLM Provider](https://block.github.io/goose/docs/getting-started/providers) guide. If you have any questions or get stuck, feel free to chat with us on [Discord](https://discord.gg/block-opensource) or post an issue/discussion on [GitHub](https://github.com/block/goose/). Thanks for reading! @@ -28,7 +28,7 @@ Using cloud-based LLMs and providers make it so you don't need substantial compu - **Offline capability** transforms when and where you can use AI. "I use Ollama all the time on planes—it's a lot of fun!" Parth shared, highlighting how local models free you from the constraints of internet connectivity. - **Direct control over model behavior** means you can fine-tune parameters without subscription fees or API limits. Open source models allow you to get a closer look at what's happening behind the scenes. -Personal use cases like development assistance, personal knowledge management, education, and content management are but some examples that can benefit from working locally and offline. You can keep research and sensitive data private, and utilize Goose when you have limited connectivity. +Personal use cases like development assistance, personal knowledge management, education, and content management are but some examples that can benefit from working locally and offline. You can keep research and sensitive data private, and utilize goose when you have limited connectivity. # Can My Machine Handle This? This question came up repeatedly, and the answer is more encouraging than you think. As Parth pointed out, "You don't need to run the largest models to get excellent results." The requirements you'll want to look out for on your device boils down to this: @@ -83,17 +83,17 @@ As Parth walked through these examples, he shared key practices to ensure you ge # It's About The Freedom To Choose While there are trade-offs in terms of raw processing power when you go local vs cloud, you don't have to choose one over the other. As Parth summarized during the livestream: "Local AI isn't about replacing cloud options—it's about having the freedom to choose the right approach for your specific needs." -The benefits of owning your AI experience can be compelling for a variety of use cases. Whether you're a developer building tools, a writer working with confidential material, or simply someone who values privacy and control, I hope the Goose-Ollama integration offers a glimpse into how a local experience can benefit you, and explore a future where sophisticated AI is as personal and private as the data on your hard drive. Thanks for reading! +The benefits of owning your AI experience can be compelling for a variety of use cases. Whether you're a developer building tools, a writer working with confidential material, or simply someone who values privacy and control, I hope the goose-Ollama integration offers a glimpse into how a local experience can benefit you, and explore a future where sophisticated AI is as personal and private as the data on your hard drive. Thanks for reading! - + - + - - + + \ No newline at end of file diff --git a/documentation/blog/2025-03-18-goose-langfuse/index.md b/documentation/blog/2025-03-18-goose-langfuse/index.md index 5df5d9510716..ce1ef8dfb430 100644 --- a/documentation/blog/2025-03-18-goose-langfuse/index.md +++ b/documentation/blog/2025-03-18-goose-langfuse/index.md @@ -1,64 +1,64 @@ --- -title: "How Goose Catches AI Errors with Langfuse" -description: Get detailed insights into Goose's behavior with Langfuse's observability tools. +title: "How goose Catches AI Errors with Langfuse" +description: Get detailed insights into goose's behavior with Langfuse's observability tools. authors: - tania --- ![blog cover](goose_aierrors.png) -How do we debug AI agents like Goose? In the [Goosing Around](https://youtube.com/playlist?list=PLyMFt_U2IX4uFFhd_2TD9-tlJkgHMMb6F&feature=shared) stream series, host [Rizel Scarlett](https://www.linkedin.com/in/rizel-bobb-semple/) invited [Marc Klingen](https://www.linkedin.com/in/marcklingen/), Co-Founder at Langfuse, and [Alice Hau](https://www.linkedin.com/in/alice-hau/), Machine Learning Engineer at Block, to demo how Langfuse enables observability into Goose's actions, letting you trace LLM behavior and catch errors. +How do we debug AI agents like goose? In the [Goosing Around](https://youtube.com/playlist?list=PLyMFt_U2IX4uFFhd_2TD9-tlJkgHMMb6F&feature=shared) stream series, host [Rizel Scarlett](https://www.linkedin.com/in/rizel-bobb-semple/) invited [Marc Klingen](https://www.linkedin.com/in/marcklingen/), Co-Founder at Langfuse, and [Alice Hau](https://www.linkedin.com/in/alice-hau/), Machine Learning Engineer at Block, to demo how Langfuse enables observability into goose's actions, letting you trace LLM behavior and catch errors. ## What is Langfuse -[Langfuse](https://langfuse.com/) is an open source observability platform specifically designed for LLM-powered apps. Mark revealed during stream that Langfuse wasn't originally an observability platform, it was born from early attempts to build an AI agent like Goose. +[Langfuse](https://langfuse.com/) is an open source observability platform specifically designed for LLM-powered apps. Mark revealed during stream that Langfuse wasn't originally an observability platform, it was born from early attempts to build an AI agent like goose. While they were limited by the available models at the time, especially with multi-file edits, the team discovered the tooling they had built for debugging and monitoring their agent was more valuable to them than their agent. -## How Langfuse Works With Goose -Since traditional observability tools don't quite cut it when it comes to AI agents. Langfuse introduces 3 core concepts to make Goose's behavior more observable, and create logs that are easier to parse: +## How Langfuse Works With goose +Since traditional observability tools don't quite cut it when it comes to AI agents. Langfuse introduces 3 core concepts to make goose's behavior more observable, and create logs that are easier to parse: ### Traces -Each interaction with Goose creates a trace to capture the full story of what happened. These traces include key information, from the initial prompt and user messages to tool calls and their responses. They also store valuable metadata about model outputs and timing information, giving developers a complete picture of each interaction. +Each interaction with goose creates a trace to capture the full story of what happened. These traces include key information, from the initial prompt and user messages to tool calls and their responses. They also store valuable metadata about model outputs and timing information, giving developers a complete picture of each interaction. ### Timeline View -The timeline view takes these complex interactions and transforms it into a digestible format. Developers can see parallel task execution in real-time, understand the dependencies between different actions, and measure the actual duration of each opersation. This can be super helpful when debugging a complex sequence of actions taken by Goose, or to help optimize performance. +The timeline view takes these complex interactions and transforms it into a digestible format. Developers can see parallel task execution in real-time, understand the dependencies between different actions, and measure the actual duration of each opersation. This can be super helpful when debugging a complex sequence of actions taken by goose, or to help optimize performance. ### Structured Data -Alice explained, "Goose sessions can be really long... we have log files, but you'll just see a massive log of JSON." +Alice explained, "goose sessions can be really long... we have log files, but you'll just see a massive log of JSON." Rather than rangle raw JSON log, Langfuse helps organize this data to help make navigating longer sessions and their data more straightforward. This approach can help developers easily analyze tool usage patterns, monitor token consumption, and quickly identify any performance bottlenecks and where they may happen. -With this integration, you can instead better understand the sequence of actions taken by Goose, and analyze track token usage and model behavior across LLMs. +With this integration, you can instead better understand the sequence of actions taken by goose, and analyze track token usage and model behavior across LLMs. ## Practical Benefits -The observability the Goose and Langfuse integration brings is great for anyone who wants clear insight into what Goose is doing behind the scenes. Alice and Marc discussed the different ways this integration can help you debug faster. +The observability the goose and Langfuse integration brings is great for anyone who wants clear insight into what goose is doing behind the scenes. Alice and Marc discussed the different ways this integration can help you debug faster. -Developers can dive deeper into detailed session logs and identify the root cause to a reported issue and ensure Goose is operating as efficiently as possible. Like checking why certain commands may not be working as expected, or seeing exactly how Goose is processing information for a given task with a specific LLM. +Developers can dive deeper into detailed session logs and identify the root cause to a reported issue and ensure goose is operating as efficiently as possible. Like checking why certain commands may not be working as expected, or seeing exactly how goose is processing information for a given task with a specific LLM. As developers focus on operational efficiency, researchers can use the analytical capabilities of this integration to better understand which models best suit their needs. Through comprehensive model evaluations, they can analyze how different models handle tool calling, understand decision-making patterns across LLMs, and establish a systematic approach to understanding and improving AI systems. # The Future of AI Observability -These powerful debugging and analysis capabilities are only the beginning. This integration between Goose and Langfuse represents a significant step forward in making AI agents as transparent and debuggable as traditional code. +These powerful debugging and analysis capabilities are only the beginning. This integration between goose and Langfuse represents a significant step forward in making AI agents as transparent and debuggable as traditional code. -To keep up with the exciting developments as they release, you can check out both of the [Goose](https://github.com/block/goose) and [Langfuse](https://github.com/langfuse/langfuse) repositories on GitHub. +To keep up with the exciting developments as they release, you can check out both of the [goose](https://github.com/block/goose) and [Langfuse](https://github.com/langfuse/langfuse) repositories on GitHub. -You can also watch the [livestream discussing the Goose and Langfuse integration](https://www.youtube.com/live/W39BQjsTS9E?feature=shared), and follow the [tutorial showing you how to integrate Langfuse with Goose](/docs/tutorials/langfuse). +You can also watch the [livestream discussing the goose and Langfuse integration](https://www.youtube.com/live/W39BQjsTS9E?feature=shared), and follow the [tutorial showing you how to integrate Langfuse with goose](/docs/tutorials/langfuse). Also, be sure to subscribe to our [events calendar](https://calget.com/c/t7jszrie) to catch upcoming events. - + - + - - + + \ No newline at end of file diff --git a/documentation/blog/2025-03-19-better-ai-prompting/index.md b/documentation/blog/2025-03-19-better-ai-prompting/index.md index b34a5d8b8d6a..fe9c78103ba2 100644 --- a/documentation/blog/2025-03-19-better-ai-prompting/index.md +++ b/documentation/blog/2025-03-19-better-ai-prompting/index.md @@ -8,144 +8,144 @@ authors: Remember that saying, "it’s not what you ask, but **how you ask**"? -When I first started working with Goose as an AI agent, I was convinced there had to be one ‘best' prompting style. I spent so much time trying to figure out which one was superior, but the more I used Goose, the more I realized that couldn't be further from the truth. There isn’t one _right_ way to prompt AI, but there are better approaches depending on what your end goal is. +When I first started working with goose as an AI agent, I was convinced there had to be one ‘best' prompting style. I spent so much time trying to figure out which one was superior, but the more I used goose, the more I realized that couldn't be further from the truth. There isn’t one _right_ way to prompt AI, but there are better approaches depending on what your end goal is. -So, let’s go through **which prompt style works best for your specific needs**, and how you can use them to vibe code a little better with Goose. +So, let’s go through **which prompt style works best for your specific needs**, and how you can use them to vibe code a little better with goose. ## Instruction-Based Prompting -If you’re not a developer or you're just new to Goose, this is a great place to start. The best way to get good responses is to be as clear and direct as possible. Goose works best when given specific instructions, so tell it exactly what you need and include all of the important details. If you’re too vague, you might end up with an overly technical or even a possibly incomplete answer that doesn’t actually help you. +If you’re not a developer or you're just new to goose, this is a great place to start. The best way to get good responses is to be as clear and direct as possible. goose works best when given specific instructions, so tell it exactly what you need and include all of the important details. If you’re too vague, you might end up with an overly technical or even a possibly incomplete answer that doesn’t actually help you. For example, instead of saying: ❌ Okay Prompt: ->_**Goose, what’s a pull request?**_ +>_**goose, what’s a pull request?**_ This might give you a super technical definition that assumes you already know the basics. So, you could say: ✅ Better Prompt: ->_**Goose, explain how GitHub pull requests work like I’m new to coding**_ +>_**goose, explain how GitHub pull requests work like I’m new to coding**_ -This tells Goose exactly what you need and at what level. +This tells goose exactly what you need and at what level. :::tip pro tip -If you want Goose to remember your preferences, you can say, +If you want goose to remember your preferences, you can say, ->_**Goose, remember I’m not a developer. Explain things at a high level unless I ask for technical details**_ +>_**goose, remember I’m not a developer. Explain things at a high level unless I ask for technical details**_ -If you have the [Memory Extension](/docs/mcp/memory-mcp) enabled, Goose will save this preference so you won’t have to remind it every time. +If you have the [Memory Extension](/docs/mcp/memory-mcp) enabled, goose will save this preference so you won’t have to remind it every time. ::: ## Chain-of-Thought Prompting -Sometimes a topic or task can just be too much to tackle all at once, and that’s where Chain-of-Thought Prompting comes in. Instead of getting this enormous and complicated response back, you can guide Goose to break things down step by step so it’s easier to follow. +Sometimes a topic or task can just be too much to tackle all at once, and that’s where Chain-of-Thought Prompting comes in. Instead of getting this enormous and complicated response back, you can guide goose to break things down step by step so it’s easier to follow. For example, instead of saying: ❌ Okay Prompt: ->_**Goose, what are Model Context Protocol Servers, and how are they used in goose?**_ +>_**goose, what are Model Context Protocol Servers, and how are they used in goose?**_ which might get you a response that's hard to follow, you could say: ✅ Better Prompt: ->_**Goose, walk me through what MCPs are and how they're used in gosoe, step by step**_ +>_**goose, walk me through what MCPs are and how they're used in gosoe, step by step**_ -This forces Goose to slow down and explain each part clearly, making it easier to understand. +This forces goose to slow down and explain each part clearly, making it easier to understand. -Now, if you want to take it a step further and make sure Goose understands the exact style of responses you're expecting, that’s when Few-Shot Prompting is the way to go. +Now, if you want to take it a step further and make sure goose understands the exact style of responses you're expecting, that’s when Few-Shot Prompting is the way to go. ## Few-Shot Prompting -If you need Goose to match a specific style or format, the best way to get there is by showing it what you want. I use this all the time! Since AI models learn patterns from examples, giving Goose a reference helps it skip the guesswork and just get straight to the point. +If you need goose to match a specific style or format, the best way to get there is by showing it what you want. I use this all the time! Since AI models learn patterns from examples, giving goose a reference helps it skip the guesswork and just get straight to the point. For example, instead of saying: ❌ Okay Prompt: ->_**Goose, summarize this report**_ +>_**goose, summarize this report**_ you could say: ✅ Better Prompt: ->_**Goose, here’s how I usually summarize reports: (example summary). Can you summarize this new report the same way?**_ +>_**goose, here’s how I usually summarize reports: (example summary). Can you summarize this new report the same way?**_ -By providing an example, you’re guiding Goose to the answer that you actually want. +By providing an example, you’re guiding goose to the answer that you actually want. -Now, what if you've given Goose an example and it’s first response isn’t quite right? There's no need to end the session and start over, that’s when Iterative Refinement Prompting is useful. +Now, what if you've given goose an example and it’s first response isn’t quite right? There's no need to end the session and start over, that’s when Iterative Refinement Prompting is useful. ## Iterative Refinement Prompting -Let’s be real, Goose just like any AI agent isn’t always going to get it 'right' on the first try. Sometimes, it gives you a response that's way too technical, other times, it might completely miss the mark or even worse, hallucinate its way into a weird, made-up answer, that kind of sounds true. But instead of giving up and starting over, you can steer the conversation by giving feedback on what needs to change. +Let’s be real, goose just like any AI agent isn’t always going to get it 'right' on the first try. Sometimes, it gives you a response that's way too technical, other times, it might completely miss the mark or even worse, hallucinate its way into a weird, made-up answer, that kind of sounds true. But instead of giving up and starting over, you can steer the conversation by giving feedback on what needs to change. -Since Goose allows you to bring your own LLM, the way it responds depends a lot on which model you’re using. Some LLMs need a little extra guidance, while others might require a few rounds of refinement before they get things right. The good news? You can shape the response without completely starting over. +Since goose allows you to bring your own LLM, the way it responds depends a lot on which model you’re using. Some LLMs need a little extra guidance, while others might require a few rounds of refinement before they get things right. The good news? You can shape the response without completely starting over. -For example, if Goose spits out something overly complicated, don’t just accept it, you can push back! Try saying: +For example, if goose spits out something overly complicated, don’t just accept it, you can push back! Try saying: ->_**Goose, this response is too technical. Can you simplify it?**_ +>_**goose, this response is too technical. Can you simplify it?**_ Or if something sounds off and you want to do a fact check: ->_**Goose, where did you get that information? How do you know it's accurate?**_ +>_**goose, where did you get that information? How do you know it's accurate?**_ -Think of working with Goose like pair programming or collaborating with a coworker. Sometimes, you need to clarify what you want or redirect the conversation to get make sure you're both on the same page. +Think of working with goose like pair programming or collaborating with a coworker. Sometimes, you need to clarify what you want or redirect the conversation to get make sure you're both on the same page. -But what if you don’t have a clear example or specific instructions to guide Goose? That’s when I would use Zero-Shot Prompting. +But what if you don’t have a clear example or specific instructions to guide goose? That’s when I would use Zero-Shot Prompting. ## Zero-Shot Prompting -Sometimes, you just want Goose to take a wild guess, get a little creative, and run with it. That’s exactly what Zero-Shot Prompting is for, it lets Goose figure things out on its own, without any examples or extra guidance from you. +Sometimes, you just want goose to take a wild guess, get a little creative, and run with it. That’s exactly what Zero-Shot Prompting is for, it lets goose figure things out on its own, without any examples or extra guidance from you. For example, you might say: ->_**Goose, write me a project update for my team**_ +>_**goose, write me a project update for my team**_ or: ->_**Goose, I want to build a cool prompt directory**_ +>_**goose, I want to build a cool prompt directory**_ -I love using this approach when I have a rough idea but no real clear direction. It’s like brainstorming but with AI, Goose will throw out ideas, suggest next steps, and sometimes even point out things I would’ve never even thought of. More often than not, my original idea ends up 10x better just by letting Goose take the lead. +I love using this approach when I have a rough idea but no real clear direction. It’s like brainstorming but with AI, goose will throw out ideas, suggest next steps, and sometimes even point out things I would’ve never even thought of. More often than not, my original idea ends up 10x better just by letting goose take the lead. -Now, if you want Goose to not just come up with amazing ideas but also be funny, helpful, and maybe even a little nicer to you, that’s when you need to put those manners you learned in elementary school to use. +Now, if you want goose to not just come up with amazing ideas but also be funny, helpful, and maybe even a little nicer to you, that’s when you need to put those manners you learned in elementary school to use. ## Politeness-Based Prompting -Believe it or not, being polite actually makes AI responses better! Even though Goose isn’t self-aware……yet…… 👀, AI models tend to generate more thoughtful, structured, and sometimes even friendlier replies when asked nicely. So yes, saying “please” and “thank you” actually makes a difference. +Believe it or not, being polite actually makes AI responses better! Even though goose isn’t self-aware……yet…… 👀, AI models tend to generate more thoughtful, structured, and sometimes even friendlier replies when asked nicely. So yes, saying “please” and “thank you” actually makes a difference. For example, instead of saying: ❌ Okay Prompt: ->_**Goose, generate a project update**_ +>_**goose, generate a project update**_ you could say: ✅ Better Prompt: ->_**Goose, could you generate a project update for me, please? Thanks!**_ +>_**goose, could you generate a project update for me, please? Thanks!**_ -Goose will respond either way, but **trust me**, polite prompts tend to get you better answers. One of our users once got the sweetest response from Goose at the end of a project, like it was genuinely grateful for the collaboration and even wished them sweet dreams. It was adorable!! +goose will respond either way, but **trust me**, polite prompts tend to get you better answers. One of our users once got the sweetest response from goose at the end of a project, like it was genuinely grateful for the collaboration and even wished them sweet dreams. It was adorable!! ![goose response](politenessprompt.png) ->_Here’s the actual response, Goose is really out here making people’s day._ +>_Here’s the actual response, goose is really out here making people’s day._ -And the best part? This works with any prompting style. So, if you want Goose to be helpful, clear, and maybe even a little extra nice to you, be good to Goose and Goose will be good to you. +And the best part? This works with any prompting style. So, if you want goose to be helpful, clear, and maybe even a little extra nice to you, be good to goose and goose will be good to you. ## The Best Prompts Feel Natural At the end of the day, all these prompting styles are just tools, at your disposal. The most important thing is to keep your prompts clear and natural. You don’t have to overthink it, but adding a little structure can make a huge difference in getting the responses you actually want. -Goose is here to make your life easier, so the next time you open up a session, just keep your goal in mind, experiment with different prompting styles, and see what works best for you. +goose is here to make your life easier, so the next time you open up a session, just keep your goal in mind, experiment with different prompting styles, and see what works best for you. diff --git a/documentation/blog/2025-03-20-asana-calendar-mcp/index.md b/documentation/blog/2025-03-20-asana-calendar-mcp/index.md index 3ed837c41476..7af135bc1c74 100644 --- a/documentation/blog/2025-03-20-asana-calendar-mcp/index.md +++ b/documentation/blog/2025-03-20-asana-calendar-mcp/index.md @@ -1,5 +1,5 @@ --- -title: "How I Use Goose to Plan My Week with Asana and Google Calendar MCPs" +title: "How I Use goose to Plan My Week with Asana and Google Calendar MCPs" description: Use MCPs with Goose to automate task management and enhance productivity. authors: - angie @@ -7,11 +7,11 @@ authors: ![blog cover](mcp-planner.png) -Mondays are overwhelming. A pile of unfinished tasks from last week, new priorities rolling in, and meetings scattered across the calendar. It’s a lot 😩. Instead of manually sorting through my todos and figuring out where everything fits, I use a couple of handy MCP servers with Goose and let it figure out my week. +Mondays are overwhelming. A pile of unfinished tasks from last week, new priorities rolling in, and meetings scattered across the calendar. It’s a lot 😩. Instead of manually sorting through my todos and figuring out where everything fits, I use a couple of handy MCP servers with goose and let it figure out my week. -There's so many amazing MCP servers out there to make my work life better, including [Asana](https://github.com/roychri/mcp-server-asana) and [Google Calendar](https://www.pulsemcp.com/servers?q=google+calendar). I added these as Goose extensions, which means Goose can now can pull in my tasks, analyze them, and schedule them, all with one simple prompt: +There's so many amazing MCP servers out there to make my work life better, including [Asana](https://github.com/roychri/mcp-server-asana) and [Google Calendar](https://www.pulsemcp.com/servers?q=google+calendar). I added these as goose extensions, which means Goose can now can pull in my tasks, analyze them, and schedule them, all with one simple prompt: > _**Goose, pull all uncompleted tasks assigned to me in Asana. Group them by type of work to reduce context switching. Estimate how long each task will take. Then, schedule each task accordingly in my Google Calendar. Make sure not to double book or overload any single day.**_ diff --git a/documentation/blog/2025-04-21-practical-use-cases-of-ai/index.md b/documentation/blog/2025-04-21-practical-use-cases-of-ai/index.md index c02c210ee2df..331cf9993ed7 100644 --- a/documentation/blog/2025-04-21-practical-use-cases-of-ai/index.md +++ b/documentation/blog/2025-04-21-practical-use-cases-of-ai/index.md @@ -264,7 +264,7 @@ This blog post included just a few of the ways I use Goose. If you're curious ab What are 5 useful things you can help me with today? -Let Goose surprise you. ✨ +Let goose surprise you. ✨ diff --git a/documentation/blog/2025-04-22-community-bestcodes/index.md b/documentation/blog/2025-04-22-community-bestcodes/index.md index 668f24b7f23b..dfcddf930718 100644 --- a/documentation/blog/2025-04-22-community-bestcodes/index.md +++ b/documentation/blog/2025-04-22-community-bestcodes/index.md @@ -7,7 +7,7 @@ authors: ![blog cover](bestcodes.png) -The only way to discover how much of an impact your contributions can make is to submit them and hope for the best. Sometimes, what feels like "just a small fix" can end up reshaping an open source project or inspiring a brand new feature. Here's how one of our top contributors turned a small build fix into important improvements for the Goose experience. +The only way to discover how much of an impact your contributions can make is to submit them and hope for the best. Sometimes, what feels like "just a small fix" can end up reshaping an open source project or inspiring a brand new feature. Here's how one of our top contributors turned a small build fix into important improvements for the goose experience. diff --git a/documentation/blog/README.md b/documentation/blog/README.md index e45db056614b..6adc2de0a449 100644 --- a/documentation/blog/README.md +++ b/documentation/blog/README.md @@ -1,13 +1,13 @@ --- unlisted: true --- -# Writing Blog Posts for Goose +# Writing Blog Posts for goose -This guide explains how to write and structure blog posts for the Goose documentation site. +This guide explains how to write and structure blog posts for the goose documentation site. ## Getting Started -1. Clone the Goose repository: +1. Clone the goose repository: ```bash git clone https://github.com/block/goose.git cd goose diff --git a/documentation/docs/quickstart.md b/documentation/docs/quickstart.md index 9e5fcaef3d8e..2ba1478d9789 100644 --- a/documentation/docs/quickstart.md +++ b/documentation/docs/quickstart.md @@ -14,35 +14,35 @@ import WindowsDesktopInstallButtons from '@site/src/components/WindowsDesktopIns import LinuxDesktopInstallButtons from '@site/src/components/LinuxDesktopInstallButtons'; import { PanelLeft } from 'lucide-react'; -# Goose in 5 minutes +# goose in 5 minutes -Goose is an extensible open source AI agent that enhances your software development by automating coding tasks. +goose is an extensible open source AI agent that enhances your software development by automating coding tasks. This quick tutorial will guide you through: -- ✅ Installing Goose +- ✅ Installing goose - ✅ Configuring your LLM - ✅ Building a small app - ✅ Adding an MCP server Let's begin 🚀 -## Install Goose +## Install goose - Choose to install the Desktop and/or CLI version of Goose: + Choose to install the Desktop and/or CLI version of goose: - +
    1. Unzip the downloaded zip file. - 2. Run the executable file to launch the Goose Desktop application. + 2. Run the executable file to launch the goose Desktop application.
    - - Run the following command to install Goose: + + Run the following command to install goose: ```sh curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash @@ -52,22 +52,22 @@ Let's begin 🚀 - Choose to install the Desktop and/or CLI version of Goose: + Choose to install the Desktop and/or CLI version of goose: - +
    **For Debian/Ubuntu-based distributions:** 1. Download the DEB file 2. Navigate to the directory where it is saved in a terminal 3. Run `sudo dpkg -i (filename).deb` - 4. Launch Goose from the app menu + 4. Launch goose from the app menu
    - - Run the following command to install the Goose CLI on Linux: + + Run the following command to install the goose CLI on Linux: ```sh curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash @@ -77,19 +77,19 @@ Let's begin 🚀 - Choose to install the Desktop and/or CLI version of Goose: + Choose to install the Desktop and/or CLI version of goose: - +
    1. Unzip the downloaded zip file. - 2. Run the executable file to launch the Goose Desktop application. + 2. Run the executable file to launch the goose Desktop application.
    - + - Run the following command in **Git Bash**, **MSYS2**, or **PowerShell** to install the Goose CLI natively on Windows: + Run the following command in **Git Bash**, **MSYS2**, or **PowerShell** to install the goose CLI natively on Windows: ```bash curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash diff --git a/documentation/docusaurus.config.ts b/documentation/docusaurus.config.ts index c5a739d47fe2..881fb7540cf5 100644 --- a/documentation/docusaurus.config.ts +++ b/documentation/docusaurus.config.ts @@ -378,7 +378,7 @@ const config: Config = { title: "Quick Links", items: [ { - label: "Install Goose", + label: "Install goose", to: "docs/getting-started/installation", }, { @@ -460,7 +460,7 @@ const config: Config = { }, }, ], - quickQuestions: ["What is Goose?"], + quickQuestions: ["What is goose?"], }, }, announcementBar: { diff --git a/documentation/src/components/MacDesktopInstallButtons.js b/documentation/src/components/MacDesktopInstallButtons.js index e9aae272b144..96dff23a0dc9 100644 --- a/documentation/src/components/MacDesktopInstallButtons.js +++ b/documentation/src/components/MacDesktopInstallButtons.js @@ -8,13 +8,13 @@ const DesktopInstallButtons = () => {
    macOS Silicon macOS Intel diff --git a/documentation/src/components/WindowsDesktopInstallButtons.js b/documentation/src/components/WindowsDesktopInstallButtons.js index f33cf5f24347..2364fbe6df0d 100644 --- a/documentation/src/components/WindowsDesktopInstallButtons.js +++ b/documentation/src/components/WindowsDesktopInstallButtons.js @@ -8,7 +8,7 @@ const WindowsDesktopInstallButtons = () => {
    Windows diff --git a/download_cli.ps1 b/download_cli.ps1 index 57eca20f498b..ab10822c5a79 100644 --- a/download_cli.ps1 +++ b/download_cli.ps1 @@ -1,5 +1,5 @@ ############################################################################## -# Goose CLI Install Script for Windows PowerShell +# goose CLI Install Script for Windows PowerShell # # This script downloads the latest stable 'goose' CLI binary from GitHub releases # and installs it to your system. @@ -12,7 +12,7 @@ # Or simply: .\download_cli.ps1 # # Environment variables: -# $env:GOOSE_BIN_DIR - Directory to which Goose will be installed (default: $env:USERPROFILE\.local\bin) +# $env:GOOSE_BIN_DIR - Directory to which goose will be installed (default: $env:USERPROFILE\.local\bin) # $env:GOOSE_VERSION - Optional: specific version to install (e.g., "v1.0.25"). Can be in the format vX.Y.Z, vX.Y.Z-suffix, or X.Y.Z # $env:GOOSE_PROVIDER - Optional: provider for goose # $env:GOOSE_MODEL - Optional: model for goose @@ -199,10 +199,10 @@ try { Write-Warning "Could not clean up temporary directory: $TMP_DIR" } -# --- 14) Configure Goose (Optional) --- +# --- 14) Configure goose (Optional) --- if ($CONFIGURE -eq "true") { Write-Host "" - Write-Host "Configuring Goose" -ForegroundColor Green + Write-Host "Configuring goose" -ForegroundColor Green Write-Host "" try { & $DEST_GOOSE configure @@ -217,7 +217,7 @@ if ($CONFIGURE -eq "true") { $CURRENT_PATH = $env:PATH if ($CURRENT_PATH -notlike "*$env:GOOSE_BIN_DIR*") { Write-Host "" - Write-Host "Warning: Goose installed, but $env:GOOSE_BIN_DIR is not in your PATH." -ForegroundColor Yellow + Write-Host "Warning: goose installed, but $env:GOOSE_BIN_DIR is not in your PATH." -ForegroundColor Yellow Write-Host "To add it to your PATH permanently, run the following command as Administrator:" -ForegroundColor Yellow Write-Host " [Environment]::SetEnvironmentVariable('PATH', `$env:PATH + ';$env:GOOSE_BIN_DIR', 'Machine')" -ForegroundColor Cyan Write-Host "" @@ -229,5 +229,5 @@ if ($CURRENT_PATH -notlike "*$env:GOOSE_BIN_DIR*") { Write-Host "" } -Write-Host "Goose CLI installation completed successfully!" -ForegroundColor Green -Write-Host "Goose is installed at: $DEST_GOOSE" -ForegroundColor Green +Write-Host "goose CLI installation completed successfully!" -ForegroundColor Green +Write-Host "goose is installed at: $DEST_GOOSE" -ForegroundColor Green diff --git a/download_cli.sh b/download_cli.sh index ea42d5b4c0b1..21319241aec0 100755 --- a/download_cli.sh +++ b/download_cli.sh @@ -2,7 +2,7 @@ set -eu ############################################################################## -# Goose CLI Install Script +# goose CLI Install Script # # This script downloads the latest stable 'goose' CLI binary from GitHub releases # and installs it to your system. @@ -14,7 +14,7 @@ set -eu # curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash # # Environment variables: -# GOOSE_BIN_DIR - Directory to which Goose will be installed (default: $HOME/.local/bin) +# GOOSE_BIN_DIR - Directory to which goose will be installed (default: $HOME/.local/bin) # GOOSE_VERSION - Optional: specific version to install (e.g., "v1.0.25"). Overrides CANARY. Can be in the format vX.Y.Z, vX.Y.Z-suffix, or X.Y.Z # GOOSE_PROVIDER - Optional: provider for goose # GOOSE_MODEL - Optional: model for goose @@ -26,13 +26,13 @@ set -eu # --- 1) Check for dependencies --- # Check for curl if ! command -v curl >/dev/null 2>&1; then - echo "Error: 'curl' is required to download Goose. Please install curl and try again." + echo "Error: 'curl' is required to download goose. Please install curl and try again." exit 1 fi # Check for tar or unzip (depending on OS) if ! command -v tar >/dev/null 2>&1 && ! command -v unzip >/dev/null 2>&1; then - echo "Error: Either 'tar' or 'unzip' is required to extract Goose. Please install one and try again." + echo "Error: Either 'tar' or 'unzip' is required to extract goose. Please install one and try again." exit 1 fi @@ -68,7 +68,7 @@ case "$OS" in OS="windows" ;; *) - echo "Error: Unsupported OS '$OS'. Goose currently supports Linux, macOS, and Windows." + echo "Error: Unsupported OS '$OS'. goose currently supports Linux, macOS, and Windows." exit 1 ;; esac @@ -228,9 +228,9 @@ fi # skip configuration for non-interactive installs e.g. automation, docker if [ "$CONFIGURE" = true ]; then - # --- 6) Configure Goose (Optional) --- + # --- 6) Configure goose (Optional) --- echo "" - echo "Configuring Goose" + echo "Configuring goose" echo "" "$GOOSE_BIN_DIR/$OUT_FILE" configure else @@ -240,7 +240,7 @@ fi # --- 7) Check PATH and give instructions if needed --- if [[ ":$PATH:" != *":$GOOSE_BIN_DIR:"* ]]; then echo "" - echo "Warning: Goose installed, but $GOOSE_BIN_DIR is not in your PATH." + echo "Warning: goose installed, but $GOOSE_BIN_DIR is not in your PATH." echo "Add it to your PATH by editing ~/.bashrc, ~/.zshrc, or similar:" echo " export PATH=\"$GOOSE_BIN_DIR:\$PATH\"" echo "Then reload your shell (e.g. 'source ~/.bashrc', 'source ~/.zshrc') to apply changes." diff --git a/flake.nix b/flake.nix index e2c040406c2b..97fe9a947a99 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Goose - An AI agent CLI"; + description = "goose - An AI agent CLI"; inputs = { flake-utils.url = "github:numtide/flake-utils"; @@ -105,7 +105,7 @@ ]); shellHook = '' - echo "Goose development environment" + echo "goose development environment" echo "Rust version: $(rustc --version)" echo "" echo "Commands:" diff --git a/goose-gui.sh b/goose-gui.sh index 8952c5709fc1..e85b5828787c 100755 --- a/goose-gui.sh +++ b/goose-gui.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Launcher script for Goose GUI +# Launcher script for goose GUI # Suppresses common GLib warnings that don't affect functionality -cd /home/alfonsodg/Devel-Local/oss/goose/ui/desktop/out/Goose-linux-x64 -./Goose 2>&1 | grep -v "GLib-GObject" | grep -v "browser_main_loop" +cd /home/alfonsodg/Devel-Local/oss/goose/ui/desktop/out/goose-linux-x64 +./goose 2>&1 | grep -v "GLib-GObject" | grep -v "browser_main_loop" diff --git a/test_acp_client.py b/test_acp_client.py index 0213df2b2c52..68ab1abb4313 100755 --- a/test_acp_client.py +++ b/test_acp_client.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Simple ACP client to test the Goose ACP agent. +Simple ACP client to test the goose ACP agent. Connects to goose acp running on stdio. """ diff --git a/ui/desktop/README.md b/ui/desktop/README.md index 3f11c1e2fd1b..04a77e3cd69f 100644 --- a/ui/desktop/README.md +++ b/ui/desktop/README.md @@ -1,9 +1,9 @@ -# Goose Desktop App +# goose Desktop App -Native desktop app for Goose built with [Electron](https://www.electronjs.org/) and [ReactJS](https://react.dev/). +Native desktop app for goose built with [Electron](https://www.electronjs.org/) and [ReactJS](https://react.dev/). # Building and running -Goose uses [Hermit](https://github.com/cashapp/hermit) to manage dependencies, so you will need to have it installed and activated. +goose uses [Hermit](https://github.com/cashapp/hermit) to manage dependencies, so you will need to have it installed and activated. ``` git clone git@github.com:block/goose.git @@ -41,9 +41,9 @@ This is an electron forge app, using vite and react.js. `goosed` runs as multi p ## Building for different platforms ### macOS -`npm run bundle:default` will give you a Goose.app/zip which is signed/notarized but only if you setup the env vars as per `forge.config.ts` (you can empty out the section on osxSign if you don't want to sign it) - this will have all defaults. +`npm run bundle:default` will give you a goose.app/zip which is signed/notarized but only if you setup the env vars as per `forge.config.ts` (you can empty out the section on osxSign if you don't want to sign it) - this will have all defaults. -`npm run bundle:preconfigured` will make a Goose.app/zip signed and notarized, but use the following: +`npm run bundle:preconfigured` will make a goose.app/zip signed and notarized, but use the following: ```python f" process.env.GOOSE_PROVIDER__TYPE = '{os.getenv("GOOSE_BUNDLE_TYPE")}';", @@ -51,7 +51,7 @@ This is an electron forge app, using vite and react.js. `goosed` runs as multi p f" process.env.GOOSE_PROVIDER__MODEL = '{os.getenv("GOOSE_BUNDLE_MODEL")}';" ``` -This allows you to set for example GOOSE_PROVIDER__TYPE to be "databricks" by default if you want (so when people start Goose.app - they will get that out of the box). There is no way to set an api key in that bundling as that would be a terrible idea, so only use providers that can do oauth (like databricks can), otherwise stick to default goose. +This allows you to set for example GOOSE_PROVIDER__TYPE to be "databricks" by default if you want (so when people start goose.app - they will get that out of the box). There is no way to set an api key in that bundling as that would be a terrible idea, so only use providers that can do oauth (like databricks can), otherwise stick to default goose. ### Linux For Linux builds, first ensure you have the required system dependencies installed (see above), then: @@ -78,9 +78,9 @@ npm run make -- --targets=@electron-forge/maker-deb ``` The built application will be available in: -- ZIP: `out/make/zip/linux/x64/Goose-linux-x64-{version}.zip` +- ZIP: `out/make/zip/linux/x64/goose-linux-x64-{version}.zip` - DEB: `out/make/deb/x64/goose_{version}_amd64.deb` -- Executable: `out/Goose-linux-x64/Goose` +- Executable: `out/goose-linux-x64/goose` ### Windows Use the existing Windows build process as documented. diff --git a/ui/desktop/forge.config.ts b/ui/desktop/forge.config.ts index 34c91dfb82a1..557f8cd4ad15 100644 --- a/ui/desktop/forge.config.ts +++ b/ui/desktop/forge.config.ts @@ -65,8 +65,8 @@ module.exports = { { name: '@electron-forge/maker-deb', config: { - name: 'Goose', - bin: 'Goose', + name: 'goose', + bin: 'goose', maintainer: 'Block, Inc.', homepage: 'https://block.github.io/goose/', categories: ['Development'], @@ -79,8 +79,8 @@ module.exports = { { name: '@electron-forge/maker-rpm', config: { - name: 'Goose', - bin: 'Goose', + name: 'goose', + bin: 'goose', maintainer: 'Block, Inc.', homepage: 'https://block.github.io/goose/', categories: ['Development'], diff --git a/ui/desktop/package.json b/ui/desktop/package.json index 18b48ee281db..0960e02b5a09 100644 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -1,8 +1,8 @@ { "name": "goose-app", - "productName": "Goose", + "productName": "goose", "version": "1.9.0", - "description": "Goose App", + "description": "goose App", "engines": { "node": "^22.17.1" }, @@ -16,11 +16,11 @@ "start:test-error": "GOOSE_TEST_ERROR=true electron-forge start", "package": "electron-forge package", "make": "electron-forge make", - "bundle:default": "node scripts/prepare-platform-binaries.js && npm run make && (cd out/Goose-darwin-arm64 && ditto -c -k --sequesterRsrc --keepParent Goose.app Goose.zip) || echo 'out/Goose-darwin-arm64 not found; either the binary is not built or you are not on macOS'", - "bundle:alpha": "ALPHA=true node scripts/prepare-platform-binaries.js && ALPHA=true npm run make && (cd out/Goose-darwin-arm64 && ditto -c -k --sequesterRsrc --keepParent Goose.app Goose_alpha.zip) || echo 'out/Goose-darwin-arm64 not found; either the binary is not built or you are not on macOS'", + "bundle:default": "node scripts/prepare-platform-binaries.js && npm run make && (cd out/goose-darwin-arm64 && ditto -c -k --sequesterRsrc --keepParent goose.app goose.zip) || echo 'out/goose-darwin-arm64 not found; either the binary is not built or you are not on macOS'", + "bundle:alpha": "ALPHA=true node scripts/prepare-platform-binaries.js && ALPHA=true npm run make && (cd out/goose-darwin-arm64 && ditto -c -k --sequesterRsrc --keepParent goose.app goose_alpha.zip) || echo 'out/goose-darwin-arm64 not found; either the binary is not built or you are not on macOS'", "bundle:windows": "node scripts/build-main.js && ELECTRON_PLATFORM=win32 node scripts/prepare-platform-binaries.js && npm run make -- --platform=win32 --arch=x64", - "bundle:intel": "node scripts/prepare-platform-binaries.js && npm run make -- --arch=x64 && cd out/Goose-darwin-x64 && ditto -c -k --sequesterRsrc --keepParent Goose.app Goose_intel_mac.zip", - "debug": "echo 'run --remote-debugging-port=8315' && lldb out/Goose-darwin-arm64/Goose.app", + "bundle:intel": "node scripts/prepare-platform-binaries.js && npm run make -- --arch=x64 && cd out/goose-darwin-x64 && ditto -c -k --sequesterRsrc --keepParent goose.app goose_intel_mac.zip", + "debug": "echo 'run --remote-debugging-port=8315' && lldb out/goose-darwin-arm64/goose.app", "test-e2e": "npm run generate-api && playwright test", "test-e2e:dev": "npm run generate-api && playwright test --reporter=list --retries=0 --max-failures=1", "test-e2e:ui": "npm run generate-api && playwright test --ui", diff --git a/ui/desktop/src/utils/githubUpdater.ts b/ui/desktop/src/utils/githubUpdater.ts index 160d341b7fd4..ec5b7f95b178 100644 --- a/ui/desktop/src/utils/githubUpdater.ts +++ b/ui/desktop/src/utils/githubUpdater.ts @@ -91,16 +91,16 @@ export class GitHubUpdater { if (platform === 'darwin') { // macOS if (arch === 'arm64') { - assetName = 'Goose.zip'; + assetName = 'goose.zip'; } else { - assetName = 'Goose_intel_mac.zip'; + assetName = 'goose_intel_mac.zip'; } } else if (platform === 'win32') { // Windows - for future support - assetName = 'Goose-win32-x64.zip'; + assetName = 'goose-win32-x64.zip'; } else { // Linux - for future support - assetName = `Goose-linux-${arch}.zip`; + assetName = `goose-linux-${arch}.zip`; } log.info(`GitHubUpdater: Looking for asset named: ${assetName}`); @@ -185,7 +185,7 @@ export class GitHubUpdater { // Save to Downloads directory const downloadsDir = path.join(os.homedir(), 'Downloads'); - const fileName = `Goose-${latestVersion}.zip`; + const fileName = `goose-${latestVersion}.zip`; const downloadPath = path.join(downloadsDir, fileName); await fs.writeFile(downloadPath, buffer);