Conversation
|
Congratulations on your new Raycast extension! 🚀 Due to our current reduced availability, the initial review may take up to 10-15 business days. Once the PR is approved and merged, the extension will be available on our Store. |
Greptile OverviewGreptile SummaryThis PR adds a new Clawdbot extension for Raycast, enabling users to chat with their Clawdbot AI agent directly from Raycast. Major Issues:
What Works Well:
Confidence Score: 2/5
Important Files Changed
|
| interface Preferences { | ||
| webchatUrl: string; | ||
| agentId?: string; | ||
| } |
There was a problem hiding this comment.
Don't manually define Preferences interface - auto-generated in raycast-env.d.ts
| interface Preferences { | |
| webchatUrl: string; | |
| agentId?: string; | |
| } | |
| // Remove this interface - it's auto-generated |
Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)
| interface Preferences { | ||
| agentId?: string; | ||
| } | ||
|
|
||
| interface Arguments { | ||
| message: string; | ||
| } |
There was a problem hiding this comment.
Don't manually define Preferences and Arguments interfaces - auto-generated in raycast-env.d.ts
| interface Preferences { | |
| agentId?: string; | |
| } | |
| interface Arguments { | |
| message: string; | |
| } | |
| // Remove these interfaces - they're auto-generated |
Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)
| interface Preferences { | ||
| webchatUrl: string; | ||
| } |
There was a problem hiding this comment.
Don't manually define Preferences interface - auto-generated in raycast-env.d.ts
| interface Preferences { | |
| webchatUrl: string; | |
| } | |
| // Remove this interface - it's auto-generated |
Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)
| const { stdout } = await execAsync( | ||
| `/opt/homebrew/bin/clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | ||
| { | ||
| encoding: "utf-8", | ||
| timeout: 130000, | ||
| maxBuffer: 10 * 1024 * 1024, | ||
| env: { ...process.env, PATH: `/opt/homebrew/bin:${process.env.PATH}` }, | ||
| }, | ||
| ); |
There was a problem hiding this comment.
Hardcoded /opt/homebrew/bin/clawdbot path won't work on non-M1/M2 Macs (Intel uses /usr/local/bin), Linux, or Windows
| const { stdout } = await execAsync( | |
| `/opt/homebrew/bin/clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | |
| { | |
| encoding: "utf-8", | |
| timeout: 130000, | |
| maxBuffer: 10 * 1024 * 1024, | |
| env: { ...process.env, PATH: `/opt/homebrew/bin:${process.env.PATH}` }, | |
| }, | |
| ); | |
| const { stdout } = await execAsync( | |
| `clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | |
| { | |
| encoding: "utf-8", | |
| timeout: 130000, | |
| maxBuffer: 10 * 1024 * 1024, | |
| }, | |
| ); |
| const result = execSync( | ||
| `/opt/homebrew/bin/clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | ||
| { | ||
| encoding: "utf-8", | ||
| timeout: 130000, | ||
| maxBuffer: 10 * 1024 * 1024, | ||
| env: { | ||
| ...process.env, | ||
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Hardcoded /opt/homebrew/bin/clawdbot path won't work on non-M1/M2 Macs (Intel uses /usr/local/bin), Linux, or Windows
| const result = execSync( | |
| `/opt/homebrew/bin/clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | |
| { | |
| encoding: "utf-8", | |
| timeout: 130000, | |
| maxBuffer: 10 * 1024 * 1024, | |
| env: { | |
| ...process.env, | |
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | |
| }, | |
| }, | |
| const result = execSync( | |
| `clawdbot agent --local --session-id raycast -m '${escapedMessage}' ${agentFlag} --timeout 120`, | |
| { | |
| encoding: "utf-8", | |
| timeout: 130000, | |
| maxBuffer: 10 * 1024 * 1024, | |
| }, | |
| ); |
| const result = execSync("/opt/homebrew/bin/clawdbot status 2>&1", { | ||
| encoding: "utf-8", | ||
| timeout: 15000, | ||
| env: { | ||
| ...process.env, | ||
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | ||
| }, | ||
| }); |
There was a problem hiding this comment.
Hardcoded /opt/homebrew/bin/clawdbot path won't work on non-M1/M2 Macs (Intel uses /usr/local/bin), Linux, or Windows
| const result = execSync("/opt/homebrew/bin/clawdbot status 2>&1", { | |
| encoding: "utf-8", | |
| timeout: 15000, | |
| env: { | |
| ...process.env, | |
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | |
| }, | |
| }); | |
| const result = execSync("clawdbot status 2>&1", { | |
| encoding: "utf-8", | |
| timeout: 15000, | |
| }); |
| const result = execSync( | ||
| "/opt/homebrew/bin/clawdbot status 2>&1", | ||
| { | ||
| encoding: "utf-8", | ||
| timeout: 15000, | ||
| env: { | ||
| ...process.env, | ||
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | ||
| }, | ||
| }, |
There was a problem hiding this comment.
Hardcoded /opt/homebrew/bin/clawdbot path won't work on non-M1/M2 Macs (Intel uses /usr/local/bin), Linux, or Windows
| const result = execSync( | |
| "/opt/homebrew/bin/clawdbot status 2>&1", | |
| { | |
| encoding: "utf-8", | |
| timeout: 15000, | |
| env: { | |
| ...process.env, | |
| PATH: `/opt/homebrew/bin:${process.env.PATH}`, | |
| }, | |
| }, | |
| const result = execSync( | |
| "clawdbot status 2>&1", | |
| { | |
| encoding: "utf-8", | |
| timeout: 15000, | |
| }, | |
| ); |
| @@ -0,0 +1,10 @@ | |||
| # Changelog | |||
|
|
|||
| ## [1.0.0] - 2025-01-25 | |||
There was a problem hiding this comment.
Use {PR_MERGE_DATE} placeholder instead of hardcoded date
| ## [1.0.0] - 2025-01-25 | |
| ## [1.0.0] - {PR_MERGE_DATE} |
Context Used: Rule from dashboard - What: Changelog entries must use {PR_MERGE_DATE} placeholder in titles, be placed at the top of th... (source)
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
|
Hi 👋 Thank you for your contribution 🔥 #24848 was submitted a bit after yours. Maybe you can both join forces to create the best possible clawdbot extension for the users? |
|
Hi @asaphko! Per suggested we collaborate, and I think that's a great idea. I submitted a similar extension (#24848) that takes a different approach - using the HTTP API instead of CLI, which enables remote access via Tailscale and streaming responses. That said, I really liked several things from your PR and incorporated them into mine:
I'd like to credit you as a contributor for these. Would you be okay with me adding you to the README acknowledgments and/or as a contributor on the extension? I think consolidating on one extension makes sense for users. Let me know your thoughts! |
|
Sounds like some good points, not that I know much about clawdbot at all, but sounds like the HTTP API has more advantages - what do you think @asaphko |
|
@asaphko are you around? |
|
Hey @leveragedrobot ! sure, let's collaborate. If you can add me as a contributor, that would be great. |
|
Closing as requested, will follow up in #24848 |
Description
Screencast
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolderIntroduction
This PR introduces the Clawdbot extension for Raycast, allowing users to interact with their Clawdbot AI directly from the Raycast interface.
Features
Details
We look forward to your review and feedback!