@openhands/extensions 0.5.0 → 0.6.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.
Files changed (132) hide show
  1. package/.github/workflows/pypi-publish.yml +104 -0
  2. package/.github/workflows/tests.yml +6 -0
  3. package/.release-please-manifest.json +1 -1
  4. package/AGENTS.md +1 -1
  5. package/README.md +31 -3
  6. package/integrations/README.md +17 -7
  7. package/integrations/catalog/airtable.json +40 -10
  8. package/integrations/catalog/apify.json +0 -2
  9. package/integrations/catalog/asana.json +38 -0
  10. package/integrations/catalog/atlassian.json +5 -8
  11. package/integrations/catalog/bitbucket.json +39 -0
  12. package/integrations/catalog/box.json +39 -0
  13. package/integrations/catalog/brave-search.json +1 -2
  14. package/integrations/catalog/browser-mcp.json +0 -3
  15. package/integrations/catalog/canva.json +35 -0
  16. package/integrations/catalog/clickhouse.json +1 -2
  17. package/integrations/catalog/clickup.json +36 -0
  18. package/integrations/catalog/cloudflare-bindings.json +5 -8
  19. package/integrations/catalog/cloudflare-browser-rendering.json +5 -8
  20. package/integrations/catalog/cloudflare-builds.json +6 -9
  21. package/integrations/catalog/cloudflare-docs.json +4 -7
  22. package/integrations/catalog/cloudflare-observability.json +5 -8
  23. package/integrations/catalog/confluence.json +38 -0
  24. package/integrations/catalog/datadog.json +34 -0
  25. package/integrations/catalog/deepwiki.json +3 -7
  26. package/integrations/catalog/discord.json +39 -0
  27. package/integrations/catalog/dropbox.json +38 -0
  28. package/integrations/catalog/elevenlabs.json +27 -28
  29. package/integrations/catalog/everything.json +0 -2
  30. package/integrations/catalog/exa.json +0 -2
  31. package/integrations/catalog/fetch.json +0 -2
  32. package/integrations/catalog/figma.json +41 -9
  33. package/integrations/catalog/filesystem.json +0 -3
  34. package/integrations/catalog/firecrawl.json +0 -2
  35. package/integrations/catalog/freshdesk.json +38 -0
  36. package/integrations/catalog/git.json +0 -3
  37. package/integrations/catalog/github.json +43 -10
  38. package/integrations/catalog/gitlab.json +38 -0
  39. package/integrations/catalog/gmail.json +38 -0
  40. package/integrations/catalog/google-calendar.json +38 -0
  41. package/integrations/catalog/google-docs.json +38 -0
  42. package/integrations/catalog/google-drive.json +38 -0
  43. package/integrations/catalog/google-sheets.json +38 -0
  44. package/integrations/catalog/hubspot.json +34 -0
  45. package/integrations/catalog/huggingface.json +1 -2
  46. package/integrations/catalog/intercom.json +39 -0
  47. package/integrations/catalog/jira.json +38 -0
  48. package/integrations/catalog/kagi.json +2 -3
  49. package/integrations/catalog/linear.json +47 -16
  50. package/integrations/catalog/mailchimp.json +38 -0
  51. package/integrations/catalog/memory.json +0 -2
  52. package/integrations/catalog/microsoft-outlook.json +38 -0
  53. package/integrations/catalog/microsoft-teams.json +38 -0
  54. package/integrations/catalog/miro.json +38 -0
  55. package/integrations/catalog/monday.json +38 -0
  56. package/integrations/catalog/mongodb.json +1 -2
  57. package/integrations/catalog/neon.json +0 -2
  58. package/integrations/catalog/netlify.json +38 -0
  59. package/integrations/catalog/notion.json +37 -10
  60. package/integrations/catalog/obsidian.json +1 -3
  61. package/integrations/catalog/okta.json +38 -0
  62. package/integrations/catalog/onedrive.json +38 -0
  63. package/integrations/catalog/ordinal.json +33 -0
  64. package/integrations/catalog/paypal.json +5 -8
  65. package/integrations/catalog/pipedrive.json +39 -0
  66. package/integrations/catalog/plaid.json +31 -0
  67. package/integrations/catalog/playwright.json +0 -2
  68. package/integrations/catalog/posthog.json +38 -0
  69. package/integrations/catalog/quickbooks.json +38 -0
  70. package/integrations/catalog/redis.json +1 -3
  71. package/integrations/catalog/resend.json +1 -2
  72. package/integrations/catalog/salesforce.json +38 -0
  73. package/integrations/catalog/sentry.json +52 -14
  74. package/integrations/catalog/sequential-thinking.json +0 -2
  75. package/integrations/catalog/servicenow.json +39 -0
  76. package/integrations/catalog/sharepoint.json +38 -0
  77. package/integrations/catalog/shopify.json +38 -0
  78. package/integrations/catalog/slack.json +49 -10
  79. package/integrations/catalog/stripe.json +44 -14
  80. package/integrations/catalog/supabase.json +36 -9
  81. package/integrations/catalog/tavily.json +0 -2
  82. package/integrations/catalog/time.json +0 -2
  83. package/integrations/catalog/trello.json +31 -0
  84. package/integrations/catalog/vercel.json +38 -0
  85. package/integrations/catalog/webflow.json +34 -0
  86. package/integrations/catalog/xero.json +38 -0
  87. package/integrations/catalog/zendesk.json +38 -0
  88. package/integrations/catalog/zoom.json +38 -0
  89. package/integrations/catalog-index.js +171 -0
  90. package/integrations/index.d.ts +24 -60
  91. package/integrations/index.js +29 -207
  92. package/marketplaces/openhands-extensions.json +14 -1
  93. package/package.json +4 -7
  94. package/plugins/cobol-modernization/README.md +3 -3
  95. package/plugins/cobol-modernization/skills/{cobol-modernization-overview → cobol-modernization}/SKILL.md +1 -1
  96. package/plugins/magic-test/skills/magic-word/SKILL.md +1 -0
  97. package/plugins/migration-scoring/README.md +1 -1
  98. package/pyproject.toml +17 -3
  99. package/python/openhands_extensions/__init__.py +24 -0
  100. package/python/openhands_extensions/_version.py +24 -0
  101. package/python/openhands_extensions/integrations.py +92 -0
  102. package/release-please-config.json +2 -1
  103. package/scripts/build-integration-catalog.mjs +45 -0
  104. package/skills/agent-canvas-environment/.plugin/plugin.json +19 -0
  105. package/skills/agent-canvas-environment/README.md +5 -0
  106. package/skills/agent-canvas-environment/SKILL.md +141 -0
  107. package/skills/github-pr-reviewer/references/state-schema.md +18 -4
  108. package/skills/github-pr-reviewer/scripts/main.py +66 -12
  109. package/skills/github-repo-monitor/references/state-schema.md +11 -4
  110. package/skills/github-repo-monitor/scripts/main.py +67 -19
  111. package/skills/github-repo-monitor/tests/test_main.py +67 -8
  112. package/skills/index.js +19 -5
  113. package/skills/openhands-api/README.md +5 -1
  114. package/skills/openhands-api/SKILL.md +74 -5
  115. package/skills/openhands-automation/SKILL.md +3 -1
  116. package/skills/openhands-automation/references/custom-automation.md +166 -0
  117. package/skills/openhands-sdk/SKILL.md +8 -2
  118. package/skills/slack-channel-monitor/README.md +3 -3
  119. package/skills/slack-channel-monitor/SKILL.md +3 -2
  120. package/skills/slack-channel-monitor/references/state-schema.md +11 -4
  121. package/skills/slack-channel-monitor/scripts/main.py +111 -41
  122. package/tests/test_catalogs.py +21 -3
  123. package/tests/test_integration_catalog_in_sync.py +204 -0
  124. package/tests/test_slack_channel_monitor.py +142 -0
  125. package/tests/test_version_alignment.py +64 -0
  126. package/integrations/logos.d.ts +0 -5
  127. package/integrations/logos.js +0 -94
  128. package/integrations/oauth-provider-catalog.js +0 -553
  129. package/integrations/oauth-provider-registration-defaults.js +0 -610
  130. /package/plugins/cobol-modernization/skills/{mainfraime-removal → mainframe-removal}/SKILL.md +0 -0
  131. /package/plugins/cobol-modernization/skills/{mainfraime-removal → mainframe-removal}/references/cics-transformation-examples.md +0 -0
  132. /package/plugins/migration-scoring/skills/{migration-scoring-overview → migration-scoring}/SKILL.md +0 -0
@@ -0,0 +1,64 @@
1
+ """Assert the JS (``package.json``) and Python (``pyproject.toml`` +
2
+ ``_version.py``) package versions never drift apart.
3
+
4
+ ``release-please`` is configured to bump both ``package.json`` and
5
+ ``pyproject.toml`` together (see ``release-please-config.json`` ->
6
+ ``extra-files``). This test is the guard that catches a manual edit that
7
+ bumps only one.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import re
13
+ from pathlib import Path
14
+
15
+ ROOT = Path(__file__).resolve().parents[1]
16
+
17
+
18
+ def _package_json_version() -> str:
19
+ text = (ROOT / "package.json").read_text()
20
+ match = re.search(r'"version"\s*:\s*"([^"]+)"', text)
21
+ assert match, "package.json has no version field"
22
+ return match.group(1)
23
+
24
+
25
+ def _pyproject_version() -> str:
26
+ text = (ROOT / "pyproject.toml").read_text()
27
+ match = re.search(r'^version\s*=\s*"([^"]+)"', text, re.MULTILINE)
28
+ assert match, "pyproject.toml has no version field"
29
+ return match.group(1)
30
+
31
+
32
+ def _version_module_version() -> str:
33
+ import openhands_extensions._version as v
34
+
35
+ text = (ROOT / "python" / "openhands_extensions" / "_version.py").read_text()
36
+ match = re.search(r'_FALLBACK_VERSION\s*=\s*"([^"]+)"', text)
37
+ assert match, "_version.py has no _FALLBACK_VERSION"
38
+ fallback = match.group(1)
39
+ # Runtime __version__ is metadata-derived when installed, fallback otherwise;
40
+ # both must agree with the declared versions.
41
+ assert v.__version__ in (fallback, _package_json_version()), (
42
+ f"runtime __version__ {v.__version__!r} disagrees with fallback/package.json"
43
+ )
44
+ return fallback
45
+
46
+
47
+ def test_package_json_and_pyproject_versions_match() -> None:
48
+ assert _package_json_version() == _pyproject_version(), (
49
+ "package.json and pyproject.toml versions differ. release-please "
50
+ "should bump both together; check release-please-config.json."
51
+ )
52
+
53
+
54
+ def test_version_module_matches_package_json() -> None:
55
+ assert _version_module_version() == _package_json_version(), (
56
+ "python/openhands_extensions/_version.py is out of sync with "
57
+ "package.json."
58
+ )
59
+
60
+
61
+ def test_installed_package_version_matches_source() -> None:
62
+ import openhands_extensions
63
+
64
+ assert openhands_extensions.__version__ == _package_json_version()
@@ -1,5 +0,0 @@
1
- import type { ReactNode } from "react";
2
-
3
- export const INTEGRATION_FALLBACK_LOGO: ReactNode;
4
- export const INTEGRATION_LOGOS: Record<string, ReactNode>;
5
- export const INTEGRATION_LOGO_IDS: Set<string>;
@@ -1,94 +0,0 @@
1
- import { createElement } from "react";
2
- import {
3
- BookOpen,
4
- Bot,
5
- Brain,
6
- Clock,
7
- Database,
8
- Flame,
9
- Folder,
10
- GitBranch,
11
- Globe,
12
- ListTree,
13
- MousePointerClick,
14
- Search,
15
- Sparkles,
16
- Telescope,
17
- TestTube,
18
- } from "lucide-react";
19
- import {
20
- SiAirtable,
21
- SiAtlassian,
22
- SiBrave,
23
- SiClickhouse,
24
- SiCloudflare,
25
- SiElevenlabs,
26
- SiFigma,
27
- SiGithub,
28
- SiHuggingface,
29
- SiKagi,
30
- SiLinear,
31
- SiMongodb,
32
- SiNotion,
33
- SiObsidian,
34
- SiPaypal,
35
- SiRedis,
36
- SiResend,
37
- SiSentry,
38
- SiSlack,
39
- SiStripe,
40
- SiSupabase,
41
- } from "react-icons/si";
42
-
43
- const LOGO = "h-5 w-5";
44
-
45
- const simpleIcon = (Icon) => createElement(Icon, { className: LOGO });
46
- const lucideIcon = (Icon) =>
47
- createElement(Icon, { className: LOGO, strokeWidth: 2.25 });
48
-
49
- export const INTEGRATION_FALLBACK_LOGO = lucideIcon(Bot);
50
-
51
- export const INTEGRATION_LOGOS = {
52
- github: simpleIcon(SiGithub),
53
- slack: simpleIcon(SiSlack),
54
- tavily: createElement(Search, { className: LOGO, strokeWidth: 2.5 }),
55
- linear: simpleIcon(SiLinear),
56
- notion: simpleIcon(SiNotion),
57
- atlassian: simpleIcon(SiAtlassian),
58
- sentry: simpleIcon(SiSentry),
59
- stripe: simpleIcon(SiStripe),
60
- paypal: simpleIcon(SiPaypal),
61
- "cloudflare-docs": simpleIcon(SiCloudflare),
62
- "cloudflare-bindings": simpleIcon(SiCloudflare),
63
- "cloudflare-observability": simpleIcon(SiCloudflare),
64
- huggingface: simpleIcon(SiHuggingface),
65
- deepwiki: simpleIcon(BookOpen),
66
- git: lucideIcon(GitBranch),
67
- "brave-search": simpleIcon(SiBrave),
68
- exa: lucideIcon(Telescope),
69
- firecrawl: lucideIcon(Flame),
70
- apify: lucideIcon(Bot),
71
- fetch: lucideIcon(Globe),
72
- "browser-mcp": lucideIcon(MousePointerClick),
73
- playwright: lucideIcon(TestTube),
74
- supabase: simpleIcon(SiSupabase),
75
- neon: lucideIcon(Database),
76
- mongodb: simpleIcon(SiMongodb),
77
- redis: simpleIcon(SiRedis),
78
- filesystem: lucideIcon(Folder),
79
- memory: lucideIcon(Brain),
80
- "sequential-thinking": lucideIcon(ListTree),
81
- time: lucideIcon(Clock),
82
- everything: lucideIcon(Sparkles),
83
- figma: simpleIcon(SiFigma),
84
- airtable: simpleIcon(SiAirtable),
85
- obsidian: simpleIcon(SiObsidian),
86
- elevenlabs: simpleIcon(SiElevenlabs),
87
- resend: simpleIcon(SiResend),
88
- "cloudflare-builds": simpleIcon(SiCloudflare),
89
- "cloudflare-browser-rendering": simpleIcon(SiCloudflare),
90
- kagi: simpleIcon(SiKagi),
91
- clickhouse: simpleIcon(SiClickhouse),
92
- };
93
-
94
- export const INTEGRATION_LOGO_IDS = new Set(Object.keys(INTEGRATION_LOGOS));