Update downloads-manager extension
Description
Exposes the functionality of the existing commands to Raycast AI. The following tools were created:
- Get Latest Download
- Copy Latest Download
- Delete Latest Download
- Open Latest Download
- Paste Latest Download
- Show Latest Download
Not sure how significant (in terms of: https://developers.raycast.com/basics/prepare-an-extension-for-store#contributing-to-existing-extensions-vs-creating-a-new-one) my contribution is and if I should have contacted the author first. However, since I was going to play around with (AI) extensions anyway, I thought that publishing my experiments might also benefit others. Happy to discard the PR again if my changes are not needed/wanted for any reason.
Screencast
Checklist
- [x] I read the extension guidelines
- [x] I read the documentation about publishing
- [x] I ran
npm run buildand tested this distribution build in Raycast - [x] I checked that files in the
assetsfolder are used by the extension itself - [x] I checked that assets used by the
READMEare placed outside of themetadatafolder
Thank you for your first contribution! :tada:
π @thomaspaulmann @ron-myers @infused-kim @ridemountainpig @nagauta @nmder @clins1994 @YourMCGeek @0xdhrv you might want to have a look.
You can use this guide to learn how to check out the Pull Request locally in order to test it.
π Quick checkout commands
BRANCH="ext/downloads-manager"
FORK_URL="https://github.com/dhaydl/raycast-extensions.git"
EXTENSION_NAME="downloads-manager"
REPO_NAME="raycast-extensions"
git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run dev
Due to our current reduced availability, the initial review may take up to 10-15 business days.
Greptile Summary
Added six AI tools to enable Raycast AI interactions with the downloads-manager extension: get-latest-download, copy-latest-download, delete-latest-download, open-latest-download, paste-latest-download, and show-latest-download.
Key changes:
- Properly structured tools with JSDoc comments for AI guidance
- Comprehensive evals for all six tools demonstrating expected behavior
- Reuses existing utility functions (
deleteFileOrFolder,getLatestDownload,hasAccessToDownloadsFolder) - Includes proper error handling and user confirmations for destructive actions
- Updated CHANGELOG with proper
{PR_MERGE_DATE}placeholder - Added contributor to
package.json
Issues found:
- Critical: confirmation message in
delete-latest-download.tsincorrectly says "greet" instead of "delete" - Minor: typo in
package.jsontool description ("conigured" β "configured")
Confidence Score: 4/5
- This PR is safe to merge with minor fixes needed
- The PR adds AI tool functionality following best practices with proper error handling and evals. However, there's a critical copy-paste error in the delete confirmation message that must be fixed before merge.
-
extensions/downloads-manager/src/tools/delete-latest-download.tshas a critical confirmation message bug that needs fixing
Important Files Changed
| Filename | Overview |
|---|---|
| extensions/downloads-manager/src/tools/delete-latest-download.ts | adds delete tool with confirmation; critical bug in confirmation message referencing "greet" instead of "delete" |
| extensions/downloads-manager/package.json | adds 6 AI tools with evals; minor typo in get-latest-download description ("conigured") |
| extensions/downloads-manager/src/tools/get-latest-download.ts | retrieves latest download path with proper error handling |
Thanks for the work here! It looks like one of the evals is failing when npx ray evals is run against it, but even when I added in my own eval and mock for it, it continues to fail. That being said, when not run in an eval and called normally, it functions as expected. Perhaps we're missing something here, but otherwise I'd say this looks good!
π» Running AI Evals ββββββββββββββββββββββββββββββββββββββββ | downloads-manager | 6/6
1. @downloads-manager get my latest download
Score: 100%
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βCriteria ββ Calls Tool downloads-manager-get-latest-download with arguments β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βOutput βYour latest download is a file named **CleanShot 2025-12-14 at [email protected]** located in the β
β β Downloads folder. β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βTools βdownloads-manager-get-latest-download({}) β
ββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. @downloads-manager copy my latest download
Score: 100%
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βCriteria ββ Calls Tool downloads-manager-get-latest-download with arguments β
β ββ Calls Tool downloads-manager-copy-latest-download with arguments latestDownloadPath β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βOutput βThe latest download has been copied to the clipboard. β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βTools βdownloads-manager-get-latest-download({}) β
β βdownloads-manager-copy-latest-download({"latestDownloadPath":"/Users/davidhaydl/Downloads/Clean β
β βShot 2025-12-14 at [email protected]"}) β
ββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3. @downloads-manager delete my latest download
Score: 100%
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βCriteria ββ Calls Tool downloads-manager-get-latest-download with arguments β
β ββ Calls Tool downloads-manager-delete-latest-download with arguments latestDownloadPa β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βOutput βThe latest download has been deleted successfully. β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βTools βdownloads-manager-get-latest-download({}) β
β βdownloads-manager-delete-latest-download({"latestDownloadPath":"/Users/davidhaydl/Downloads/Cle β
β βanShot 2025-12-14 at [email protected]"}) β
ββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4. @downloads-manager open my latest download
Score: 100%
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βCriteria ββ Calls Tool downloads-manager-get-latest-download with arguments β
β ββ Calls Tool downloads-manager-open-latest-download with arguments latestDownloadPath β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βOutput βI have opened your latest download. β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βTools βdownloads-manager-get-latest-download({}) β
β βdownloads-manager-open-latest-download({"latestDownloadPath":"/Users/davidhaydl/Downloads/Techn β
β βikNews Weihnachtsgewinnspiel 2025- Sonos Ray und Sennheiser HD 550.md"}) β
ββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5. @downloads-manager paste my latest download
Score: 0%
βββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βError βNo mock data provided for downloads-manager-paste-latest-download tool β
βββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
6. @downloads-manager show my latest download
Score: 100%
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βCriteria ββ Calls Tool downloads-manager-get-latest-download with arguments β
β ββ Calls Tool downloads-manager-show-latest-download with arguments latestDownloadPath β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βOutput βI've opened your latest download in Finder. β
ββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
βTools βdownloads-manager-get-latest-download({}) β
β βdownloads-manager-show-latest-download({"latestDownloadPath":"/Users/davidhaydl/Downloads/Techn β
β βikNews Weihnachtsgewinnspiel 2025- Sonos Ray und Sennheiser HD 550.md"}) β
ββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Total Score: 83% β 5/6 Passed β β οΈ 1 Failed
@YourMCGeek thx for having a look, I am glad that you are liking my changes. I need to check what's going on with the evals. I am pretty sure that I executed them once more before submitting, but I might also be remembering it wrong. Will follow up on this.
@YourMCGeek thx for having a look, I am glad that you are liking my changes. I need to check what's going on with the evals. I am pretty sure that I executed them once more before submitting, but I might also be remembering it wrong. Will follow up on this.
I tested them on my own and they also failed, so maybe its just something with how the specific eval/mock is being handled. It functions as expected in a real world application though so I think its okay.
@YourMCGeek thx for having a look, I am glad that you are liking my changes. I need to check what's going on with the evals. I am pretty sure that I executed them once more before submitting, but I might also be remembering it wrong. Will follow up on this.
I tested them on my own and they also failed, so maybe its just something with how the specific eval/mock is being handled. It functions as expected in a real world application though so I think its okay.
Hey, I added a return value to the mock of the paste tool, similar to what I did on line 274 and others, and now it works
Published to the Raycast Store: https://raycast.com/thomas/downloads-manager
:tada: :tada: :tada:
Such a great contribution deserves a reward, but unfortunately we couldn't find your Raycast account based on your GitHub username (@dhaydl).
Please link your GitHub account to your Raycast account to receive your credits and soon be able to exchange them for some swag.