mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
* feat(extensions): add load-time validation for auth capabilities Catch common misconfigurations (missing auth section, missing setup_url, short prompts) at startup via tracing::warn instead of silently failing at auth time. * feat(extensions): improve auth prompts, setup_url, and showAuthCard Add setup_url and descriptive prompts to channel and tool capabilities files. Fix showAuthCard in web gateway and improve extension manager auth flow messaging. * refactor(extensions): extract MIN_PROMPT_LENGTH constant in validate() Address review feedback: replace magic number 30 with a named constant for readability and maintainability. [skip-regression-check] Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
GitHub Tool for IronClaw
WASM tool for GitHub integration - manage repos, issues, PRs, and workflows.
Features
- Repository Info - Get repo details, list user repos
- Issues - List, create, and get issue details
- Pull Requests - List PRs, get PR details, review files, create reviews
- File Content - Read files from repos
- Workflows - Trigger GitHub Actions, check run status
Setup
-
Create a GitHub Personal Access Token at https://github.com/settings/tokens
-
Required scopes:
repo,workflow,read:org -
Store the token:
ironclaw secret set github_token YOUR_TOKEN
Usage Examples
Get Repository Info
{
"action": "get_repo",
"owner": "nearai",
"repo": "ironclaw"
}
List Open Issues
{
"action": "list_issues",
"owner": "nearai",
"repo": "ironclaw",
"state": "open",
"limit": 10
}
Create Issue
{
"action": "create_issue",
"owner": "nearai",
"repo": "ironclaw",
"title": "Bug: Something is broken",
"body": "Detailed description...",
"labels": ["bug", "help wanted"]
}
List Pull Requests
{
"action": "list_pull_requests",
"owner": "nearai",
"repo": "ironclaw",
"state": "open",
"limit": 5
}
Review PR
{
"action": "create_pr_review",
"owner": "nearai",
"repo": "ironclaw",
"pr_number": 42,
"body": "LGTM! Great work.",
"event": "APPROVE"
}
Get File Content
{
"action": "get_file_content",
"owner": "nearai",
"repo": "ironclaw",
"path": "README.md",
"ref": "main"
}
Trigger Workflow
{
"action": "trigger_workflow",
"owner": "nearai",
"repo": "ironclaw",
"workflow_id": "ci.yml",
"ref": "main",
"inputs": {
"environment": "staging"
}
}
Check Workflow Runs
{
"action": "get_workflow_runs",
"owner": "nearai",
"repo": "ironclaw",
"limit": 5
}
List Workflow Runs (Pagination)
{
"action": "get_workflow_runs",
"owner": "nearai",
"repo": "ironclaw",
"limit": 5,
"page": 2
}
Error Handling
Errors are returned as strings in the error field of the response.
Rate Limit Exceeded
When the GitHub API rate limit is exceeded (and retries fail), you might see:
GitHub API error 429: { "message": "API rate limit exceeded for user ID ...", ... }
The tool automatically logs warnings when the rate limit is low (<10 remaining) and retries on 429/5xx errors.
Invalid Parameters
Invalid event: 'INVALID'. Must be one of: APPROVE, REQUEST_CHANGES, COMMENT
Missing Token
GitHub token not found in secret store. Set it with: ironclaw secret set github_token <token>...
Troubleshooting
"GitHub API error 404: Not Found"
- Check that the
ownerandrepoare correct. - Ensure the
github_tokenhas access to the repository (especially for private repos). - Verify the token scopes include
repoandread:org.
"GitHub API error 401: Bad credentials"
- The token might be invalid or expired.
- Update the token:
ironclaw secret set github_token NEW_TOKEN.
Rate Limiting
- The tool logs a warning when remaining requests drop below 10.
- Check logs for "GitHub API rate limit low".
- If you hit the limit, wait for the reset time (usually 1 hour).
Building
cd tools-src/github
cargo build --target wasm32-wasi --release
License
MIT/Apache-2.0