@openhands/extensions 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deprecation-check.yml +25 -0
- package/.release-please-manifest.json +1 -1
- package/README.md +3 -2
- package/automations/catalog/jira-issue-to-pr.json +14 -0
- package/automations/index.js +2 -0
- package/integrations/README.md +25 -0
- package/integrations/catalog/atlassian.json +91 -3
- package/integrations/catalog/datadog.json +33 -2
- package/integrations/catalog/github.json +20 -0
- package/integrations/catalog/microsoft-outlook.json +13 -0
- package/integrations/catalog/microsoft-teams.json +13 -0
- package/integrations/catalog/notion.json +13 -0
- package/integrations/catalog/onedrive.json +13 -0
- package/integrations/catalog/sharepoint.json +13 -0
- package/integrations/catalog/slack.json +14 -0
- package/integrations/catalog/superhuman-mail.json +36 -0
- package/integrations/catalog/vanta.json +55 -0
- package/integrations/catalog-index.js +73 -69
- package/integrations/catalog.schema.json +70 -3
- package/integrations/index.d.ts +49 -3
- package/marketplaces/openhands-extensions.json +10 -0
- package/package.json +1 -1
- package/plugins/cobol-modernization/skills/build-setup/SKILL.md +1 -0
- package/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +9 -0
- package/plugins/migration-scoring/skills/migration-scoring/SKILL.md +11 -0
- package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +2 -0
- package/plugins/openhands/SKILL.md +7 -0
- package/plugins/release-notes/SKILL.md +9 -0
- package/pyproject.toml +6 -1
- package/python/openhands_extensions/__init__.py +38 -0
- package/python/openhands_extensions/_version.py +2 -2
- package/python/openhands_extensions/deprecation.py +159 -0
- package/python/openhands_extensions/integration_models.py +233 -0
- package/python/openhands_extensions/integrations.py +59 -4
- package/scripts/build-skills-catalog.mjs +1 -1
- package/scripts/check_deprecations.py +488 -0
- package/skills/add-skill/SKILL.md +2 -0
- package/skills/azure-devops/SKILL.md +12 -1
- package/skills/bitbucket-cloud/SKILL.md +11 -0
- package/skills/code-review/SKILL.md +1 -0
- package/skills/datadog/SKILL.md +3 -1
- package/skills/datadog/references/windows.md +45 -0
- package/skills/discord/SKILL.md +2 -0
- package/skills/docker/SKILL.md +5 -1
- package/skills/github/SKILL.md +3 -1
- package/skills/github/references/windows.md +48 -0
- package/skills/github-pr-review/SKILL.md +1 -0
- package/skills/github-pr-review/references/windows.md +47 -0
- package/skills/github-pr-reviewer/SKILL.md +1 -0
- package/skills/github-pr-reviewer/references/windows.md +61 -0
- package/skills/github-repo-monitor/SKILL.md +1 -0
- package/skills/github-repo-monitor/references/windows.md +61 -0
- package/skills/gitlab/SKILL.md +3 -1
- package/skills/incident-retrospective/SKILL.md +2 -0
- package/skills/index.js +36 -30
- package/skills/iterate/SKILL.md +1 -0
- package/skills/iterate/references/windows.md +41 -0
- package/skills/jira-issue-to-pr/.plugin/plugin.json +19 -0
- package/skills/jira-issue-to-pr/README.md +56 -0
- package/skills/jira-issue-to-pr/SKILL.md +216 -0
- package/skills/jira-issue-to-pr/references/setup.md +170 -0
- package/skills/jira-issue-to-pr/scripts/main.py +341 -0
- package/skills/jupyter/SKILL.md +7 -1
- package/skills/kubernetes/SKILL.md +2 -1
- package/skills/kubernetes/references/windows.md +38 -0
- package/skills/linear/SKILL.md +2 -0
- package/skills/linear/references/windows.md +29 -0
- package/skills/linear-triage/SKILL.md +2 -0
- package/skills/notion/SKILL.md +2 -0
- package/skills/notion/references/windows.md +43 -0
- package/skills/openhands-api/SKILL.md +1 -0
- package/skills/openhands-api/references/windows.md +44 -0
- package/skills/openhands-automation/SKILL.md +1 -0
- package/skills/openhands-automation/references/custom-automation.md +20 -0
- package/skills/openhands-automation/references/windows.md +57 -0
- package/skills/pdflatex/SKILL.md +3 -1
- package/skills/research-brief/SKILL.md +2 -0
- package/skills/skill-creator/SKILL.md +1 -0
- package/skills/skill-creator/references/windows.md +30 -0
- package/skills/slack-channel-monitor/SKILL.md +1 -0
- package/skills/slack-channel-monitor/references/windows.md +64 -0
- package/skills/slack-standup-digest/SKILL.md +2 -0
- package/skills/spark-version-upgrade/SKILL.md +2 -1
- package/skills/ssh/SKILL.md +2 -1
- package/skills/ssh/references/windows.md +59 -0
- package/skills/swift-linux/SKILL.md +2 -1
- package/skills/vercel/SKILL.md +5 -0
- package/tests/test_catalog_schema.py +58 -0
- package/tests/test_catalogs.py +6 -1
- package/tests/test_deprecations.py +136 -0
- package/tests/test_integration_catalog_in_sync.py +118 -7
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Windows Notes for GitHub Commands
|
|
2
|
+
|
|
3
|
+
Use these PowerShell forms when running this skill's GitHub commands natively on Windows.
|
|
4
|
+
|
|
5
|
+
## Environment Variables
|
|
6
|
+
|
|
7
|
+
PowerShell environment variables use `$env:NAME`:
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
git remote set-url origin "https://$($env:GITHUB_TOKEN)@github.com/username/repo.git"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Chained Git Commands
|
|
14
|
+
|
|
15
|
+
If the installed shell does not support `&&`, run the commands separately and stop if one fails:
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
git remote -v
|
|
19
|
+
git branch
|
|
20
|
+
git checkout -b create-widget
|
|
21
|
+
git add .
|
|
22
|
+
git commit -m "Create widget"
|
|
23
|
+
git push -u origin create-widget
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## GraphQL Requests with gh
|
|
27
|
+
|
|
28
|
+
For multi-line GraphQL queries, use a PowerShell here-string and pass it to `gh api`.
|
|
29
|
+
|
|
30
|
+
```powershell
|
|
31
|
+
$query = @'
|
|
32
|
+
{
|
|
33
|
+
repository(owner: "<OWNER>", name: "<REPO>") {
|
|
34
|
+
pullRequest(number: <PR_NUMBER>) {
|
|
35
|
+
reviewThreads(first: 20) {
|
|
36
|
+
nodes { id isResolved }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
'@
|
|
42
|
+
|
|
43
|
+
gh api graphql -f query="$query"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Redirects
|
|
47
|
+
|
|
48
|
+
Replace POSIX redirects such as `2>/dev/null` with PowerShell redirects such as `2>$null`.
|
|
@@ -8,6 +8,7 @@ triggers:
|
|
|
8
8
|
# GitHub PR Review
|
|
9
9
|
|
|
10
10
|
Post structured code review feedback using the GitHub API with inline comments on specific lines.
|
|
11
|
+
Windows PowerShell equivalents for JSON file creation, temp paths, line lookup, and fallback `curl` are in `references/windows.md`.
|
|
11
12
|
|
|
12
13
|
## Key Rule: One API Call
|
|
13
14
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Windows Notes for GitHub PR Review Commands
|
|
2
|
+
|
|
3
|
+
Use these PowerShell forms for the JSON-file, line-check, and fallback API snippets.
|
|
4
|
+
|
|
5
|
+
## Create the Review JSON File
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
$reviewJson = Join-Path $env:TEMP "review.json"
|
|
9
|
+
@'
|
|
10
|
+
{
|
|
11
|
+
"commit_id": "{commit_sha}",
|
|
12
|
+
"event": "COMMENT",
|
|
13
|
+
"body": "Brief 1-3 sentence summary.",
|
|
14
|
+
"comments": []
|
|
15
|
+
}
|
|
16
|
+
'@ | Set-Content -LiteralPath $reviewJson -Encoding utf8
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Then pass the file to `gh`:
|
|
20
|
+
|
|
21
|
+
```powershell
|
|
22
|
+
gh api -X POST repos/{owner}/{repo}/pulls/{pr_number}/reviews --input $reviewJson
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Verify File Lines
|
|
26
|
+
|
|
27
|
+
Use `Select-String` for pattern lookup and `Get-Content` for exact ranges.
|
|
28
|
+
|
|
29
|
+
```powershell
|
|
30
|
+
Select-String -Path filename -Pattern "pattern"
|
|
31
|
+
|
|
32
|
+
$lines = Get-Content -LiteralPath filename
|
|
33
|
+
$lines[41] # line 42, because arrays are zero-based
|
|
34
|
+
$lines[($start - 1)..($end - 1)]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Fallback Curl
|
|
38
|
+
|
|
39
|
+
Use `curl.exe` so PowerShell does not resolve `curl` to its alias.
|
|
40
|
+
|
|
41
|
+
```powershell
|
|
42
|
+
curl.exe -X POST `
|
|
43
|
+
-H "Authorization: token $env:GITHUB_TOKEN" `
|
|
44
|
+
-H "Accept: application/vnd.github+json" `
|
|
45
|
+
"https://api.github.com/repos/{owner}/{repo}/pulls/{pr_number}/reviews" `
|
|
46
|
+
--data-binary "@$reviewJson"
|
|
47
|
+
```
|
|
@@ -14,6 +14,7 @@ triggers:
|
|
|
14
14
|
Create a cron automation that watches a GitHub repository for pull requests
|
|
15
15
|
with a review trigger label, starts an OpenHands review conversation once per
|
|
16
16
|
label event, and posts the AI review as a GitHub comment.
|
|
17
|
+
Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in `references/windows.md`.
|
|
17
18
|
|
|
18
19
|
The automation script is deterministic: PR discovery, label-event tracking,
|
|
19
20
|
state persistence, stale-result suppression, and GitHub comment posting are
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Windows Notes for GitHub PR Reviewer Setup
|
|
2
|
+
|
|
3
|
+
Use these PowerShell forms when creating the reviewer automation from Windows.
|
|
4
|
+
|
|
5
|
+
## Validate the GitHub Token
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
Invoke-RestMethod `
|
|
9
|
+
-Uri "https://api.github.com/user" `
|
|
10
|
+
-Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN" }
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Build Directory and Syntax Check
|
|
14
|
+
|
|
15
|
+
```powershell
|
|
16
|
+
$buildDir = Join-Path $env:TEMP "pr-reviewer-build"
|
|
17
|
+
New-Item -ItemType Directory -Force $buildDir | Out-Null
|
|
18
|
+
# write the customised main.py to (Join-Path $buildDir "main.py")
|
|
19
|
+
|
|
20
|
+
python -m py_compile (Join-Path $buildDir "main.py")
|
|
21
|
+
if ($LASTEXITCODE -eq 0) { "Syntax OK" }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Package and Upload
|
|
25
|
+
|
|
26
|
+
Modern Windows includes `tar.exe`. Use it to create the `.tar.gz` expected by the automation API.
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
$tarball = Join-Path $env:TEMP "pr-reviewer.tar.gz"
|
|
30
|
+
tar.exe -czf $tarball -C $buildDir .
|
|
31
|
+
|
|
32
|
+
$upload = curl.exe -s -X POST `
|
|
33
|
+
"$env:OPENHANDS_HOST/api/automation/v1/uploads?name=github-pr-reviewer" `
|
|
34
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
35
|
+
-H "Content-Type: application/gzip" `
|
|
36
|
+
--data-binary "@$tarball" | ConvertFrom-Json
|
|
37
|
+
|
|
38
|
+
$tarballPath = $upload.tarball_path
|
|
39
|
+
"Uploaded: $tarballPath"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Register the Automation
|
|
43
|
+
|
|
44
|
+
Use a double-quoted here-string when the body needs PowerShell variable interpolation.
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
$body = @"
|
|
48
|
+
{
|
|
49
|
+
"name": "GitHub PR Reviewer: {owner}/{repo}",
|
|
50
|
+
"trigger": {"type": "cron", "schedule": "{cron_schedule}"},
|
|
51
|
+
"tarball_path": "$tarballPath",
|
|
52
|
+
"entrypoint": "python3 main.py",
|
|
53
|
+
"timeout": 300
|
|
54
|
+
}
|
|
55
|
+
"@
|
|
56
|
+
|
|
57
|
+
curl.exe -s -X POST "$env:OPENHANDS_HOST/api/automation/v1" `
|
|
58
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
59
|
+
-H "Content-Type: application/json" `
|
|
60
|
+
-d $body
|
|
61
|
+
```
|
|
@@ -16,6 +16,7 @@ triggers:
|
|
|
16
16
|
|
|
17
17
|
Create a cron automation that polls a single GitHub repository on a
|
|
18
18
|
configurable schedule (default: every minute).
|
|
19
|
+
Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in `references/windows.md`.
|
|
19
20
|
|
|
20
21
|
When a comment on an issue or PR contains the **trigger phrase**
|
|
21
22
|
(default: `@OpenHands`) it:
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Windows Notes for GitHub Repository Monitor Setup
|
|
2
|
+
|
|
3
|
+
Use these PowerShell forms when creating the monitor automation from Windows.
|
|
4
|
+
|
|
5
|
+
## Validate the GitHub Token and Repo
|
|
6
|
+
|
|
7
|
+
```powershell
|
|
8
|
+
Invoke-RestMethod `
|
|
9
|
+
-Uri "https://api.github.com/user" `
|
|
10
|
+
-Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN"; Accept = "application/vnd.github+json" }
|
|
11
|
+
|
|
12
|
+
Invoke-RestMethod `
|
|
13
|
+
-Uri "https://api.github.com/repos/{owner}/{repo}" `
|
|
14
|
+
-Headers @{ Authorization = "Bearer $env:GITHUB_PERSONAL_ACCESS_TOKEN"; Accept = "application/vnd.github+json" }
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Build Directory and Syntax Check
|
|
18
|
+
|
|
19
|
+
```powershell
|
|
20
|
+
$buildDir = Join-Path $env:TEMP "github-monitor-build"
|
|
21
|
+
New-Item -ItemType Directory -Force $buildDir | Out-Null
|
|
22
|
+
# write the customised main.py to (Join-Path $buildDir "main.py")
|
|
23
|
+
|
|
24
|
+
python -m py_compile (Join-Path $buildDir "main.py")
|
|
25
|
+
if ($LASTEXITCODE -eq 0) { "Syntax OK" }
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Package and Upload
|
|
29
|
+
|
|
30
|
+
```powershell
|
|
31
|
+
$tarball = Join-Path $env:TEMP "github-monitor.tar.gz"
|
|
32
|
+
tar.exe -czf $tarball -C $buildDir .
|
|
33
|
+
|
|
34
|
+
$upload = curl.exe -s -X POST `
|
|
35
|
+
"$env:OPENHANDS_HOST/api/automation/v1/uploads?name=github-repo-monitor" `
|
|
36
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
37
|
+
-H "Content-Type: application/gzip" `
|
|
38
|
+
--data-binary "@$tarball" | ConvertFrom-Json
|
|
39
|
+
|
|
40
|
+
$tarballPath = $upload.tarball_path
|
|
41
|
+
"Uploaded: $tarballPath"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Create the Automation
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
$body = @"
|
|
48
|
+
{
|
|
49
|
+
"name": "GitHub Monitor: {owner}/{repo}",
|
|
50
|
+
"trigger": {"type": "cron", "schedule": "{cron_schedule}"},
|
|
51
|
+
"tarball_path": "$tarballPath",
|
|
52
|
+
"entrypoint": "python3 main.py",
|
|
53
|
+
"timeout": 55
|
|
54
|
+
}
|
|
55
|
+
"@
|
|
56
|
+
|
|
57
|
+
curl.exe -s -X POST "$env:OPENHANDS_HOST/api/automation/v1" `
|
|
58
|
+
-H "X-Session-API-Key: $env:OPENHANDS_AUTOMATION_API_KEY" `
|
|
59
|
+
-H "Content-Type: application/json" `
|
|
60
|
+
-d $body
|
|
61
|
+
```
|
package/skills/gitlab/SKILL.md
CHANGED
|
@@ -29,4 +29,6 @@ Here are some instructions for pushing, but ONLY do this if the user asks you to
|
|
|
29
29
|
```bash
|
|
30
30
|
git remote -v && git branch # to find the current org, repo and branch
|
|
31
31
|
git checkout -b create-widget && git add . && git commit -m "Create widget" && git push -u origin create-widget
|
|
32
|
-
```
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
On Windows PowerShell, use `$env:GITLAB_TOKEN` in remote URLs and run the `git` commands as separate commands if `&&` is not supported by the installed shell.
|
|
@@ -85,6 +85,8 @@ curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1/preset/prompt" \
|
|
|
85
85
|
}'
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
PowerShell note: use `curl.exe` for this exact flag syntax, and replace `${OPENHANDS_HOST}` / `$OPENHANDS_AUTOMATION_API_KEY` with `$env:OPENHANDS_HOST` / `$env:OPENHANDS_AUTOMATION_API_KEY` if running it natively.
|
|
89
|
+
|
|
88
90
|
### Step 5 — Confirm
|
|
89
91
|
|
|
90
92
|
Tell the user:
|