Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
adb4525
feat: add openhands_extensions Python package sharing the integration…
openhands-agent Jun 21, 2026
2f76273
chore: sync openhands-sdk SKILL.md (unrelated upstream drift)
openhands-agent Jun 21, 2026
5f90c01
chore: regenerate skills/index.js after SDK skill sync
openhands-agent Jun 21, 2026
c935c84
chore: trigger CI re-run on latest SHA
openhands-agent Jun 21, 2026
c1f77b0
chore: address PR review feedback (#346)
openhands-agent Jun 21, 2026
2d3d6aa
refactor: generalize Python package, drop HubSpot special-casing
openhands-agent Jun 21, 2026
769f0c7
refactor: remove all HubSpot special-casing, declare migration as data
openhands-agent Jun 21, 2026
beff741
fix: isolate INTEGRATION_CATALOG_SNAPSHOT from cache; harden tests
openhands-agent Jun 21, 2026
521a5f8
docs: clarify build script comments (JS is source, not a reader of th…
openhands-agent Jun 21, 2026
6bcf440
refactor: remove the managed-connector migration mechanism entirely
openhands-agent Jun 21, 2026
70e4980
refactor(integrations): unify catalog into single JSON source of truth
openhands-agent Jun 22, 2026
c2910c5
chore: regenerate openhands-sdk skill to satisfy sync-sdk-skill CI
openhands-agent Jun 22, 2026
813e8b1
chore: rebuild skills/index.js after SDK skill regen
openhands-agent Jun 22, 2026
33c54a1
chore: trigger CI on latest unified-catalog + skills-index fix
openhands-agent Jun 22, 2026
cbb2c8d
docs: note parity-test guarantee in build script header
openhands-agent Jun 22, 2026
0778184
ci: document pull_request trigger rationale in tests workflow
openhands-agent Jun 22, 2026
413f4bd
Merge branch 'main' into openhands/python-integrations-package
openhands-agent Jun 22, 2026
082ca6a
docs(agents): record unified integration-catalog single-source-of-tru…
openhands-agent Jun 22, 2026
46f149e
refactor(integrations): make JSON the source of truth; merge provider…
openhands-agent Jun 22, 2026
311dfb2
chore: bump extensions packages to 0.6.0
Jun 22, 2026
d8e42bf
refactor(integrations): remove provider catalog compatibility
Jun 22, 2026
c15bd4a
refactor: derive integration catalog fields from options
Jun 22, 2026
ae7f773
refactor: return raw integration catalog entries
Jun 22, 2026
12e2980
refactor: simplify integration availability
Jun 22, 2026
2e59ccf
refactor(integrations): package catalog without aggregate JSON
Jun 22, 2026
b4bab3c
docs(integrations): mark catalog index as generated
Jun 22, 2026
1f7c1e5
refactor: remove integration catalog availability
neubig Jun 22, 2026
57c7f72
refactor: remove integration runtime availability
neubig Jun 22, 2026
6a7bdb1
refactor: move integration logos into catalog metadata
neubig Jun 23, 2026
0841c4b
fix: add ordinal integration logo metadata
neubig Jun 23, 2026
c73ccb5
fix: correct remote MCP catalog auth metadata
Jun 23, 2026
f462df7
ci: publish extensions package to PyPI
Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ jobs:
enable-cache: true
python-version: "3.12"

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Run tests
run: uv run --group test pytest tests/
env:
Expand Down
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,31 @@ import marketplace from "@openhands/extensions/marketplaces/openhands-extensions

See [`integrations/README.md`](integrations/README.md), [`automations/README.md`](automations/README.md), and [`MIGRATION.md`](MIGRATION.md) for catalog-specific details.

### Python Package

The OAuth provider catalog is also published as a Python package (`openhands-extensions`) so Python services can read the same catalog data as JS consumers without re-implementing it. The single source of truth is the JSON asset `integrations/oauth-provider-catalog.json`, generated from the JS authoring source by `npm run build:integration-catalog` and embedded into both packages.

```python
from openhands_extensions import (
list_oauth_provider_catalog,
get_oauth_provider_registration_defaults,
default_managed_connectors,
INTEGRATION_CATALOG_SNAPSHOT,
)

providers = list_oauth_provider_catalog() # mirrors listOAuthProviderCatalog()
defaults = get_oauth_provider_registration_defaults("hubspot") # mirrors getOAuthProviderRegistrationDefaults()
defaults_connectors = default_managed_connectors() # mirrors the snapshot's defaultManagedConnectors
```

Install from git (the hub backend consumes it this way):

```bash
pip install git+https://github.com/OpenHands/extensions.git
```

The JS and Python versions are kept in lock-step by `release-please` and guarded by `tests/test_version_alignment.py`.

## Extensions Catalog

<!-- BEGIN AUTO-GENERATED CATALOG -->
Expand Down
Loading
Loading