@openhands/agent-canvas 1.0.0-beta.5 → 1.0.0-beta.6
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/README.md +2 -2
- package/build/assets/{automations-list-rMki-8au.js → automations-list-6FDbI5dc.js} +1 -1
- package/build/assets/{home-XxBpNOVq.js → home-e-egNUXZ.js} +1 -1
- package/build/assets/install-server-modal-DHlbgqVH.js +1 -0
- package/build/assets/{manifest-d9077852.js → manifest-3bf30d69.js} +1 -1
- package/build/assets/{mcp-D2onbwVk.js → mcp-ByeBfdfU.js} +1 -1
- package/build/assets/{recommended-automations-launcher-BQChv2rc.js → recommended-automations-launcher-CgV8FyPK.js} +1 -1
- package/build/assets/{root-BgEbw3S0.js → root-dNntxffj.js} +1 -1
- package/build/assets/vendor~home~mcp~automations-list-Cs-TO3fK.js +1 -0
- package/build/index.html +3 -3
- package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
- package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
- package/dist/components/features/mcp-page/install-server-modal.js +92 -81
- package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.js +3 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +8 -7
- package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +2 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs.map +1 -1
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js +4 -2
- package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.cjs.map +1 -1
- package/dist/package.js +2 -2
- package/dist/package.js.map +1 -1
- package/package.json +2 -2
- package/build/assets/install-server-modal-f31_CLrW.js +0 -1
- package/build/assets/vendor~home~mcp~automations-list-Ccy2I0KU.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resend.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/resend.json"],"sourcesContent":["{\n \"id\": \"resend\",\n \"name\": \"Resend\",\n \"description\": \"Send transactional and marketing emails via the Resend API.\",\n \"docsUrl\": \"https://resend.com/docs/mcp\",\n \"iconBg\": \"var(--oh-surface-deep)\",\n \"keywords\": [\n \"email\",\n \"transactional\",\n \"smtp\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"resend\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"mcp-send-email\"\n ],\n \"envFields\": [\n {\n \"key\": \"RESEND_API_KEY\",\n \"label\": \"Resend API key\",\n \"type\": \"password\",\n \"required\": true\n },\n {\n \"key\": \"SENDER_EMAIL_ADDRESS\",\n \"label\": \"From address\",\n \"type\": \"text\",\n \"placeholder\": \"you@example.com\",\n \"required\": true\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
1
|
+
{"version":3,"file":"resend.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/resend.json"],"sourcesContent":["{\n \"id\": \"resend\",\n \"name\": \"Resend\",\n \"description\": \"Send transactional and marketing emails via the Resend API.\",\n \"docsUrl\": \"https://resend.com/docs/mcp\",\n \"iconBg\": \"var(--oh-surface-deep)\",\n \"keywords\": [\n \"email\",\n \"transactional\",\n \"smtp\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"resend\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"mcp-send-email\"\n ],\n \"envFields\": [\n {\n \"key\": \"RESEND_API_KEY\",\n \"label\": \"Resend API key\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"API key from your Resend dashboard.\",\n \"helperLink\": \"https://resend.com/api-keys\"\n },\n {\n \"key\": \"SENDER_EMAIL_ADDRESS\",\n \"label\": \"From address\",\n \"type\": \"text\",\n \"placeholder\": \"you@example.com\",\n \"required\": true\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`slack`,name:`Slack`,description:`Read channels, post messages, and search workspace history from your agent.`,docsUrl:`https://github.com/zencoderai/slack-mcp-server`,iconBg:`#4A154B`,keywords:[`chat`,`messaging`,`team`],popularityRank:95,installHint:`Create a Slack app with the required scopes, then paste its bot token below.`,kind:`mcp`,defaultConnectionOptionId:`api`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`slack`,command:`npx`,args:[`-y`,`@zencoderai/slack-mcp-server`],envFields:[{key:`
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`slack`,name:`Slack`,description:`Read channels, post messages, and search workspace history from your agent.`,docsUrl:`https://github.com/zencoderai/slack-mcp-server`,iconBg:`#4A154B`,keywords:[`chat`,`messaging`,`team`],popularityRank:95,installHint:`Create a Slack app with the required scopes, then paste its bot token below.`,kind:`mcp`,defaultConnectionOptionId:`api`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`slack`,command:`npx`,args:[`-y`,`@zencoderai/slack-mcp-server`],envFields:[{key:`SLACK_TEAM_ID`,label:`Team / Workspace ID`,type:`text`,placeholder:`T01234567`,helperText:`First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).`,required:!0},{key:`SLACK_BOT_TOKEN`,label:`Bot token`,type:`password`,placeholder:`xoxb-...`,required:!0,helperText:`You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token.`}]},auth:{strategy:`api_key`}}]};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=slack.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/slack.json"],"sourcesContent":["{\n \"id\": \"slack\",\n \"name\": \"Slack\",\n \"description\": \"Read channels, post messages, and search workspace history from your agent.\",\n \"docsUrl\": \"https://github.com/zencoderai/slack-mcp-server\",\n \"iconBg\": \"#4A154B\",\n \"keywords\": [\n \"chat\",\n \"messaging\",\n \"team\"\n ],\n \"popularityRank\": 95,\n \"installHint\": \"Create a Slack app with the required scopes, then paste its bot token below.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"slack\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@zencoderai/slack-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"slack.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/slack.json"],"sourcesContent":["{\n \"id\": \"slack\",\n \"name\": \"Slack\",\n \"description\": \"Read channels, post messages, and search workspace history from your agent.\",\n \"docsUrl\": \"https://github.com/zencoderai/slack-mcp-server\",\n \"iconBg\": \"#4A154B\",\n \"keywords\": [\n \"chat\",\n \"messaging\",\n \"team\"\n ],\n \"popularityRank\": 95,\n \"installHint\": \"Create a Slack app with the required scopes, then paste its bot token below.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"slack\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@zencoderai/slack-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"SLACK_TEAM_ID\",\n \"label\": \"Team / Workspace ID\",\n \"type\": \"text\",\n \"placeholder\": \"T01234567\",\n \"helperText\": \"First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).\",\n \"required\": true\n },\n {\n \"key\": \"SLACK_BOT_TOKEN\",\n \"label\": \"Bot token\",\n \"type\": \"password\",\n \"placeholder\": \"xoxb-...\",\n \"required\": true,\n \"helperText\": \"You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -22,18 +22,19 @@ var e = {
|
|
|
22
22
|
command: "npx",
|
|
23
23
|
args: ["-y", "@zencoderai/slack-mcp-server"],
|
|
24
24
|
envFields: [{
|
|
25
|
-
key: "SLACK_BOT_TOKEN",
|
|
26
|
-
label: "Bot token",
|
|
27
|
-
type: "password",
|
|
28
|
-
placeholder: "xoxb-...",
|
|
29
|
-
required: !0
|
|
30
|
-
}, {
|
|
31
25
|
key: "SLACK_TEAM_ID",
|
|
32
26
|
label: "Team / Workspace ID",
|
|
33
27
|
type: "text",
|
|
34
28
|
placeholder: "T01234567",
|
|
35
|
-
helperText: "
|
|
29
|
+
helperText: "First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).",
|
|
36
30
|
required: !0
|
|
31
|
+
}, {
|
|
32
|
+
key: "SLACK_BOT_TOKEN",
|
|
33
|
+
label: "Bot token",
|
|
34
|
+
type: "password",
|
|
35
|
+
placeholder: "xoxb-...",
|
|
36
|
+
required: !0,
|
|
37
|
+
helperText: "You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token."
|
|
37
38
|
}]
|
|
38
39
|
},
|
|
39
40
|
auth: { strategy: "api_key" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/slack.json"],"sourcesContent":["{\n \"id\": \"slack\",\n \"name\": \"Slack\",\n \"description\": \"Read channels, post messages, and search workspace history from your agent.\",\n \"docsUrl\": \"https://github.com/zencoderai/slack-mcp-server\",\n \"iconBg\": \"#4A154B\",\n \"keywords\": [\n \"chat\",\n \"messaging\",\n \"team\"\n ],\n \"popularityRank\": 95,\n \"installHint\": \"Create a Slack app with the required scopes, then paste its bot token below.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"slack\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@zencoderai/slack-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"
|
|
1
|
+
{"version":3,"file":"slack.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/slack.json"],"sourcesContent":["{\n \"id\": \"slack\",\n \"name\": \"Slack\",\n \"description\": \"Read channels, post messages, and search workspace history from your agent.\",\n \"docsUrl\": \"https://github.com/zencoderai/slack-mcp-server\",\n \"iconBg\": \"#4A154B\",\n \"keywords\": [\n \"chat\",\n \"messaging\",\n \"team\"\n ],\n \"popularityRank\": 95,\n \"installHint\": \"Create a Slack app with the required scopes, then paste its bot token below.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"slack\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@zencoderai/slack-mcp-server\"\n ],\n \"envFields\": [\n {\n \"key\": \"SLACK_TEAM_ID\",\n \"label\": \"Team / Workspace ID\",\n \"type\": \"text\",\n \"placeholder\": \"T01234567\",\n \"helperText\": \"First get your [Slack URL](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-url). Then use that to get your [Workspace ID](https://slack.com/help/articles/221769328-Locate-your-Slack-URL-or-ID#find-your-workspace-or-org-id).\",\n \"required\": true\n },\n {\n \"key\": \"SLACK_BOT_TOKEN\",\n \"label\": \"Bot token\",\n \"type\": \"password\",\n \"placeholder\": \"xoxb-...\",\n \"required\": true,\n \"helperText\": \"You'll need to create or have access to a [Slack App](https://github.com/zencoderai/slack-mcp-server#slack-bot-setup) to get a Bot token.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`supabase`,name:`Supabase`,description:`Query and manage your Supabase project, including database, auth, and storage.`,docsUrl:`https://supabase.com/docs/guides/getting-started/mcp`,iconBg:`#3ECF8E`,keywords:[`database`,`auth`,`storage`,`postgres`],kind:`mcp`,defaultConnectionOptionId:`api`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`supabase`,command:`npx`,args:[`-y`,`@supabase/mcp-server-supabase@latest`],envFields:[{key:`SUPABASE_ACCESS_TOKEN`,label:`Supabase access token`,type:`password`,required:!0,helperText:`Personal access token from your Supabase dashboard
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`supabase`,name:`Supabase`,description:`Query and manage your Supabase project, including database, auth, and storage.`,docsUrl:`https://supabase.com/docs/guides/getting-started/mcp`,iconBg:`#3ECF8E`,keywords:[`database`,`auth`,`storage`,`postgres`],kind:`mcp`,defaultConnectionOptionId:`api`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`supabase`,command:`npx`,args:[`-y`,`@supabase/mcp-server-supabase@latest`],envFields:[{key:`SUPABASE_ACCESS_TOKEN`,label:`Supabase access token`,type:`password`,required:!0,helperText:`Personal access token from your Supabase dashboard.`,helperLink:`https://supabase.com/dashboard/account/tokens`}]},auth:{strategy:`api_key`}}]};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=supabase.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/supabase.json"],"sourcesContent":["{\n \"id\": \"supabase\",\n \"name\": \"Supabase\",\n \"description\": \"Query and manage your Supabase project, including database, auth, and storage.\",\n \"docsUrl\": \"https://supabase.com/docs/guides/getting-started/mcp\",\n \"iconBg\": \"#3ECF8E\",\n \"keywords\": [\n \"database\",\n \"auth\",\n \"storage\",\n \"postgres\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"supabase\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@supabase/mcp-server-supabase@latest\"\n ],\n \"envFields\": [\n {\n \"key\": \"SUPABASE_ACCESS_TOKEN\",\n \"label\": \"Supabase access token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"Personal access token from your Supabase dashboard.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
1
|
+
{"version":3,"file":"supabase.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/supabase.json"],"sourcesContent":["{\n \"id\": \"supabase\",\n \"name\": \"Supabase\",\n \"description\": \"Query and manage your Supabase project, including database, auth, and storage.\",\n \"docsUrl\": \"https://supabase.com/docs/guides/getting-started/mcp\",\n \"iconBg\": \"#3ECF8E\",\n \"keywords\": [\n \"database\",\n \"auth\",\n \"storage\",\n \"postgres\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"supabase\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@supabase/mcp-server-supabase@latest\"\n ],\n \"envFields\": [\n {\n \"key\": \"SUPABASE_ACCESS_TOKEN\",\n \"label\": \"Supabase access token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"Personal access token from your Supabase dashboard.\",\n \"helperLink\": \"https://supabase.com/dashboard/account/tokens\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -25,7 +25,8 @@ var e = {
|
|
|
25
25
|
label: "Supabase access token",
|
|
26
26
|
type: "password",
|
|
27
27
|
required: !0,
|
|
28
|
-
helperText: "Personal access token from your Supabase dashboard."
|
|
28
|
+
helperText: "Personal access token from your Supabase dashboard.",
|
|
29
|
+
helperLink: "https://supabase.com/dashboard/account/tokens"
|
|
29
30
|
}]
|
|
30
31
|
},
|
|
31
32
|
auth: { strategy: "api_key" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/supabase.json"],"sourcesContent":["{\n \"id\": \"supabase\",\n \"name\": \"Supabase\",\n \"description\": \"Query and manage your Supabase project, including database, auth, and storage.\",\n \"docsUrl\": \"https://supabase.com/docs/guides/getting-started/mcp\",\n \"iconBg\": \"#3ECF8E\",\n \"keywords\": [\n \"database\",\n \"auth\",\n \"storage\",\n \"postgres\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"supabase\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@supabase/mcp-server-supabase@latest\"\n ],\n \"envFields\": [\n {\n \"key\": \"SUPABASE_ACCESS_TOKEN\",\n \"label\": \"Supabase access token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"Personal access token from your Supabase dashboard.\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
1
|
+
{"version":3,"file":"supabase.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/supabase.json"],"sourcesContent":["{\n \"id\": \"supabase\",\n \"name\": \"Supabase\",\n \"description\": \"Query and manage your Supabase project, including database, auth, and storage.\",\n \"docsUrl\": \"https://supabase.com/docs/guides/getting-started/mcp\",\n \"iconBg\": \"#3ECF8E\",\n \"keywords\": [\n \"database\",\n \"auth\",\n \"storage\",\n \"postgres\"\n ],\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"supabase\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@supabase/mcp-server-supabase@latest\"\n ],\n \"envFields\": [\n {\n \"key\": \"SUPABASE_ACCESS_TOKEN\",\n \"label\": \"Supabase access token\",\n \"type\": \"password\",\n \"required\": true,\n \"helperText\": \"Personal access token from your Supabase dashboard.\",\n \"helperLink\": \"https://supabase.com/dashboard/account/tokens\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`tavily`,name:`Tavily`,description:`Production-grade web search optimized for LLM agents. Free tier available.`,docsUrl:`https://github.com/tavily-ai/tavily-mcp`,iconBg:`#2563EB`,keywords:[`search`,`web`,`browsing`,`research`],popularityRank:90,installHint:`Paste your Tavily API key
|
|
1
|
+
require(`../../../../../_virtual/_rolldown/runtime.cjs`);var e={id:`tavily`,name:`Tavily`,description:`Production-grade web search optimized for LLM agents. Free tier available.`,docsUrl:`https://github.com/tavily-ai/tavily-mcp`,iconBg:`#2563EB`,keywords:[`search`,`web`,`browsing`,`research`],popularityRank:90,installHint:`Paste your Tavily API key - the official tavily-mcp package runs via npx.`,kind:`mcp`,defaultConnectionOptionId:`api`,connectionOptions:[{id:`api`,provider:`mcp`,transport:{kind:`stdio`,serverName:`tavily`,command:`npx`,args:[`-y`,`tavily-mcp`],envFields:[{key:`TAVILY_API_KEY`,label:`Tavily API key`,type:`password`,placeholder:`tvly-...`,required:!0,helperText:`API key from your Tavily dashboard.`,helperLink:`https://app.tavily.com/home?tab=keys`}]},auth:{strategy:`api_key`}}]};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=tavily.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tavily.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/tavily.json"],"sourcesContent":["{\n \"id\": \"tavily\",\n \"name\": \"Tavily\",\n \"description\": \"Production-grade web search optimized for LLM agents. Free tier available.\",\n \"docsUrl\": \"https://github.com/tavily-ai/tavily-mcp\",\n \"iconBg\": \"#2563EB\",\n \"keywords\": [\n \"search\",\n \"web\",\n \"browsing\",\n \"research\"\n ],\n \"popularityRank\": 90,\n \"installHint\": \"Paste your Tavily API key
|
|
1
|
+
{"version":3,"file":"tavily.cjs","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/tavily.json"],"sourcesContent":["{\n \"id\": \"tavily\",\n \"name\": \"Tavily\",\n \"description\": \"Production-grade web search optimized for LLM agents. Free tier available.\",\n \"docsUrl\": \"https://github.com/tavily-ai/tavily-mcp\",\n \"iconBg\": \"#2563EB\",\n \"keywords\": [\n \"search\",\n \"web\",\n \"browsing\",\n \"research\"\n ],\n \"popularityRank\": 90,\n \"installHint\": \"Paste your Tavily API key - the official tavily-mcp package runs via npx.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"tavily\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"tavily-mcp\"\n ],\n \"envFields\": [\n {\n \"key\": \"TAVILY_API_KEY\",\n \"label\": \"Tavily API key\",\n \"type\": \"password\",\n \"placeholder\": \"tvly-...\",\n \"required\": true,\n \"helperText\": \"API key from your Tavily dashboard.\",\n \"helperLink\": \"https://app.tavily.com/home?tab=keys\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
|
@@ -11,7 +11,7 @@ var e = {
|
|
|
11
11
|
"research"
|
|
12
12
|
],
|
|
13
13
|
popularityRank: 90,
|
|
14
|
-
installHint: "Paste your Tavily API key
|
|
14
|
+
installHint: "Paste your Tavily API key - the official tavily-mcp package runs via npx.",
|
|
15
15
|
kind: "mcp",
|
|
16
16
|
defaultConnectionOptionId: "api",
|
|
17
17
|
connectionOptions: [{
|
|
@@ -27,7 +27,9 @@ var e = {
|
|
|
27
27
|
label: "Tavily API key",
|
|
28
28
|
type: "password",
|
|
29
29
|
placeholder: "tvly-...",
|
|
30
|
-
required: !0
|
|
30
|
+
required: !0,
|
|
31
|
+
helperText: "API key from your Tavily dashboard.",
|
|
32
|
+
helperLink: "https://app.tavily.com/home?tab=keys"
|
|
31
33
|
}]
|
|
32
34
|
},
|
|
33
35
|
auth: { strategy: "api_key" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tavily.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/tavily.json"],"sourcesContent":["{\n \"id\": \"tavily\",\n \"name\": \"Tavily\",\n \"description\": \"Production-grade web search optimized for LLM agents. Free tier available.\",\n \"docsUrl\": \"https://github.com/tavily-ai/tavily-mcp\",\n \"iconBg\": \"#2563EB\",\n \"keywords\": [\n \"search\",\n \"web\",\n \"browsing\",\n \"research\"\n ],\n \"popularityRank\": 90,\n \"installHint\": \"Paste your Tavily API key
|
|
1
|
+
{"version":3,"file":"tavily.js","names":[],"sources":["../../../../../../node_modules/@openhands/extensions/integrations/catalog/tavily.json"],"sourcesContent":["{\n \"id\": \"tavily\",\n \"name\": \"Tavily\",\n \"description\": \"Production-grade web search optimized for LLM agents. Free tier available.\",\n \"docsUrl\": \"https://github.com/tavily-ai/tavily-mcp\",\n \"iconBg\": \"#2563EB\",\n \"keywords\": [\n \"search\",\n \"web\",\n \"browsing\",\n \"research\"\n ],\n \"popularityRank\": 90,\n \"installHint\": \"Paste your Tavily API key - the official tavily-mcp package runs via npx.\",\n \"kind\": \"mcp\",\n \"defaultConnectionOptionId\": \"api\",\n \"connectionOptions\": [\n {\n \"id\": \"api\",\n \"provider\": \"mcp\",\n \"transport\": {\n \"kind\": \"stdio\",\n \"serverName\": \"tavily\",\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"tavily-mcp\"\n ],\n \"envFields\": [\n {\n \"key\": \"TAVILY_API_KEY\",\n \"label\": \"Tavily API key\",\n \"type\": \"password\",\n \"placeholder\": \"tvly-...\",\n \"required\": true,\n \"helperText\": \"API key from your Tavily dashboard.\",\n \"helperLink\": \"https://app.tavily.com/home?tab=keys\"\n }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
|
package/dist/package.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`./_virtual/_rolldown/runtime.cjs`);var e={name:`@openhands/agent-canvas`,version:`1.0.0-beta.
|
|
1
|
+
require(`./_virtual/_rolldown/runtime.cjs`);var e={name:`@openhands/agent-canvas`,version:`1.0.0-beta.6`,description:`Agent Canvas UI for OpenHands - run AI coding agents with a visual interface`,license:`MIT`,private:!1,type:`module`,repository:{type:`git`,url:`https://github.com/OpenHands/agent-canvas`},homepage:`https://github.com/OpenHands/agent-canvas#readme`,bugs:{url:`https://github.com/OpenHands/agent-canvas/issues`},bin:{"agent-canvas":`bin/agent-canvas.mjs`},engines:{node:`>=22.12.0`},dependencies:{"@heroui/react":`2.8.10`,"@microlink/react-json-view":`1.31.20`,"@monaco-editor/react":`4.7.0`,"@openhands/extensions":`git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c`,"@openhands/typescript-client":`1.24.3`,"@react-router/node":`7.14.2`,"@react-router/serve":`7.14.2`,"@tailwindcss/vite":`4.2.4`,"@tanstack/react-query":`5.100.9`,"@types/shell-quote":`^1.7.5`,"@uidotdev/usehooks":`2.4.1`,"@xterm/addon-fit":`0.11.0`,"@xterm/xterm":`6.0.0`,axios:`1.16.0`,"class-variance-authority":`0.7.1`,clsx:`2.1.1`,downshift:`9.3.2`,"framer-motion":`12.38.0`,i18next:`26.0.8`,"i18next-browser-languagedetector":`8.2.1`,"i18next-http-backend":`4.0.0`,isbot:`5.1.39`,"lucide-react":`1.14.0`,"monaco-editor":`0.55.1`,"posthog-js":`1.372.6`,react:`19.2.5`,"react-dom":`19.2.5`,"react-hot-toast":`2.6.0`,"react-i18next":`17.0.6`,"react-icons":`5.6.0`,"react-markdown":`10.1.0`,"react-router":`7.14.2`,"react-syntax-highlighter":`16.1.1`,"rehype-raw":`7.0.0`,"rehype-sanitize":`6.0.0`,"remark-breaks":`4.0.0`,"remark-gfm":`4.0.1`,"shell-quote":`^1.8.3`,"sirv-cli":`3.0.1`,"socket.io-client":`4.8.3`,"tailwind-merge":`3.5.0`,"tailwind-scrollbar":`4.0.2`,"unist-util-visit":`5.1.0`,uuid:`14.0.0`,vite:`8.0.10`,zustand:`5.0.12`},scripts:{dev:`node --env-file-if-exists=.env scripts/dev-with-automation.mjs`,"dev:static":`node --env-file-if-exists=.env scripts/dev-static.mjs`,"dev:extra-backend":`node --env-file-if-exists=.env scripts/dev-extra-backend.mjs`,"dev:minimal":`node --env-file-if-exists=.env scripts/dev-safe.mjs`,"dev:frontend":`npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev`,"dev:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev`,build:`npm run build:app`,"build:mock":`npm run make-i18n && cross-env VITE_MOCK_API=true react-router build`,start:`npx sirv-cli build/ --single`,test:`npm run make-i18n && vitest run`,"test:e2e":`playwright test --pass-with-no-tests`,"test:e2e:live":`node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs`,"test:e2e:mock-llm":`playwright test --config=playwright.mock-llm.config.ts`,"test:e2e:mock-llm:docker":`playwright test --config=playwright.mock-llm-docker.config.ts`,"test:e2e:snapshots":`playwright test tests/e2e/snapshots --project=chromium --retries=0`,"test:e2e:snapshots:update":`playwright test tests/e2e/snapshots --project=chromium --update-snapshots`,"test:coverage":`npm run make-i18n && vitest run --coverage`,dev_wsl:`VITE_WATCH_USE_POLLING=true vite`,preview:`vite preview`,"make-i18n":`node scripts/make-i18n-translations.cjs`,prelint:`npm run make-i18n`,lint:`npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}`,"lint:fix":`eslint src --fix && prettier --write src/**/*.{ts,tsx}`,prepare:`husky`,typecheck:`react-router typegen && tsc`,"typecheck:staged":`react-router typegen && npx tsc --noEmit --skipLibCheck`,"check-translation-completeness":`node scripts/check-translation-completeness.cjs`,"build:app":`npm run make-i18n && react-router build`,"build:lib":`npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json`,"build:docker":`node scripts/docker-build.mjs`},"lint-staged":{"src/**/*.{ts,tsx,js}":[`eslint --fix`,`prettier --write`],"src/**/*.{ts,tsx}":[`bash -c 'npm run typecheck:staged'`],"src/**/*":[`npm run check-translation-completeness`]},devDependencies:{"@eslint/eslintrc":`3.3.1`,"@eslint/js":`9.39.4`,"@mswjs/socket.io-binding":`0.2.0`,"@playwright/test":`1.59.1`,"@react-router/dev":`7.14.2`,"@tailwindcss/typography":`0.5.19`,"@tanstack/eslint-plugin-query":`5.100.9`,"@testing-library/dom":`10.4.1`,"@testing-library/jest-dom":`6.9.1`,"@testing-library/react":`16.3.2`,"@testing-library/user-event":`14.6.1`,"@types/mdast":`4.0.4`,"@types/node":`25.6.0`,"@types/react":`19.2.14`,"@types/react-dom":`19.2.3`,"@types/react-syntax-highlighter":`15.5.13`,"@typescript-eslint/eslint-plugin":`8.59.2`,"@typescript-eslint/parser":`8.59.2`,"@vercel/react-router":`1.3.0`,"@vitest/coverage-v8":`4.1.5`,"cross-env":`10.1.0`,eslint:`9.39.4`,"eslint-config-prettier":`10.1.8`,"eslint-import-resolver-typescript":`4.4.4`,"eslint-plugin-i18next":`6.1.4`,"eslint-plugin-import-x":`4.16.2`,"eslint-plugin-jsx-a11y":`6.10.2`,"eslint-plugin-prettier":`5.5.5`,"eslint-plugin-react":`7.37.5`,"eslint-plugin-react-hooks":`7.1.1`,"eslint-plugin-unused-imports":`4.4.1`,globals:`16.5.0`,husky:`9.1.7`,jsdom:`29.1.1`,"lint-staged":`16.4.0`,msw:`2.14.2`,"postcss-prefix-selector":`2.1.1`,prettier:`3.8.3`,tailwindcss:`4.2.4`,typescript:`6.0.3`,"vite-plugin-svgr":`5.2.0`,vitest:`4.1.5`},packageManager:`npm@10.5.0`,volta:{node:`22.12.0`},msw:{workerDirectory:[`public`]},overrides:{dompurify:`3.3.2`},main:`./dist/index.cjs`,module:`./dist/index.js`,types:`./dist/index.d.ts`,files:[`dist`,`bin`,`build`,`config`,`scripts`,`tools`],exports:{".":{types:`./dist/index.d.ts`,import:`./dist/index.js`,require:`./dist/index.cjs`},"./browser":{types:`./dist/components/browser/index.d.ts`,import:`./dist/components/browser/index.js`,require:`./dist/components/browser/index.cjs`},"./conversation":{types:`./dist/components/conversation/index.d.ts`,import:`./dist/components/conversation/index.js`,require:`./dist/components/conversation/index.cjs`},"./files":{types:`./dist/components/files/index.d.ts`,import:`./dist/components/files/index.js`,require:`./dist/components/files/index.cjs`},"./settings":{types:`./dist/components/settings/index.d.ts`,import:`./dist/components/settings/index.js`,require:`./dist/components/settings/index.cjs`},"./sidebar":{types:`./dist/components/sidebar/index.d.ts`,import:`./dist/components/sidebar/index.js`,require:`./dist/components/sidebar/index.cjs`},"./terminal":{types:`./dist/components/terminal/index.d.ts`,import:`./dist/components/terminal/index.js`,require:`./dist/components/terminal/index.cjs`},"./i18n":{types:`./dist/i18n/index.d.ts`,import:`./dist/i18n/index.js`,require:`./dist/i18n/index.cjs`},"./package.json":`./package.json`},peerDependencies:{react:`19.2.5`,"react-dom":`19.2.5`,"react-router":`7.14.2`}};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=package.cjs.map
|
package/dist/package.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.
|
|
1
|
+
{"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.6\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
|
package/dist/package.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var e = {
|
|
2
2
|
name: "@openhands/agent-canvas",
|
|
3
|
-
version: "1.0.0-beta.
|
|
3
|
+
version: "1.0.0-beta.6",
|
|
4
4
|
description: "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
|
|
5
5
|
license: "MIT",
|
|
6
6
|
private: !1,
|
|
@@ -17,7 +17,7 @@ var e = {
|
|
|
17
17
|
"@heroui/react": "2.8.10",
|
|
18
18
|
"@microlink/react-json-view": "1.31.20",
|
|
19
19
|
"@monaco-editor/react": "4.7.0",
|
|
20
|
-
"@openhands/extensions": "git+https://github.com/OpenHands/extensions.git#
|
|
20
|
+
"@openhands/extensions": "git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c",
|
|
21
21
|
"@openhands/typescript-client": "1.24.3",
|
|
22
22
|
"@react-router/node": "7.14.2",
|
|
23
23
|
"@react-router/serve": "7.14.2",
|
package/dist/package.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.
|
|
1
|
+
{"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.6\",\n \"description\": \"Agent Canvas UI for OpenHands - run AI coding agents with a visual interface\",\n \"license\": \"MIT\",\n \"private\": false,\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/OpenHands/agent-canvas\"\n },\n \"homepage\": \"https://github.com/OpenHands/agent-canvas#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/OpenHands/agent-canvas/issues\"\n },\n \"bin\": {\n \"agent-canvas\": \"bin/agent-canvas.mjs\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"dependencies\": {\n \"@heroui/react\": \"2.8.10\",\n \"@microlink/react-json-view\": \"1.31.20\",\n \"@monaco-editor/react\": \"4.7.0\",\n \"@openhands/extensions\": \"git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c\",\n \"@openhands/typescript-client\": \"1.24.3\",\n \"@react-router/node\": \"7.14.2\",\n \"@react-router/serve\": \"7.14.2\",\n \"@tailwindcss/vite\": \"4.2.4\",\n \"@tanstack/react-query\": \"5.100.9\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@uidotdev/usehooks\": \"2.4.1\",\n \"@xterm/addon-fit\": \"0.11.0\",\n \"@xterm/xterm\": \"6.0.0\",\n \"axios\": \"1.16.0\",\n \"class-variance-authority\": \"0.7.1\",\n \"clsx\": \"2.1.1\",\n \"downshift\": \"9.3.2\",\n \"framer-motion\": \"12.38.0\",\n \"i18next\": \"26.0.8\",\n \"i18next-browser-languagedetector\": \"8.2.1\",\n \"i18next-http-backend\": \"4.0.0\",\n \"isbot\": \"5.1.39\",\n \"lucide-react\": \"1.14.0\",\n \"monaco-editor\": \"0.55.1\",\n \"posthog-js\": \"1.372.6\",\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-hot-toast\": \"2.6.0\",\n \"react-i18next\": \"17.0.6\",\n \"react-icons\": \"5.6.0\",\n \"react-markdown\": \"10.1.0\",\n \"react-router\": \"7.14.2\",\n \"react-syntax-highlighter\": \"16.1.1\",\n \"rehype-raw\": \"7.0.0\",\n \"rehype-sanitize\": \"6.0.0\",\n \"remark-breaks\": \"4.0.0\",\n \"remark-gfm\": \"4.0.1\",\n \"shell-quote\": \"^1.8.3\",\n \"sirv-cli\": \"3.0.1\",\n \"socket.io-client\": \"4.8.3\",\n \"tailwind-merge\": \"3.5.0\",\n \"tailwind-scrollbar\": \"4.0.2\",\n \"unist-util-visit\": \"5.1.0\",\n \"uuid\": \"14.0.0\",\n \"vite\": \"8.0.10\",\n \"zustand\": \"5.0.12\"\n },\n \"scripts\": {\n \"dev\": \"node --env-file-if-exists=.env scripts/dev-with-automation.mjs\",\n \"dev:static\": \"node --env-file-if-exists=.env scripts/dev-static.mjs\",\n \"dev:extra-backend\": \"node --env-file-if-exists=.env scripts/dev-extra-backend.mjs\",\n \"dev:minimal\": \"node --env-file-if-exists=.env scripts/dev-safe.mjs\",\n \"dev:frontend\": \"npm run make-i18n && cross-env VITE_MOCK_API=false react-router dev\",\n \"dev:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router dev\",\n \"build\": \"npm run build:app\",\n \"build:mock\": \"npm run make-i18n && cross-env VITE_MOCK_API=true react-router build\",\n \"start\": \"npx sirv-cli build/ --single\",\n \"test\": \"npm run make-i18n && vitest run\",\n \"test:e2e\": \"playwright test --pass-with-no-tests\",\n \"test:e2e:live\": \"node --env-file-if-exists=.env tests/e2e/live/scripts/run-live-e2e.mjs\",\n \"test:e2e:mock-llm\": \"playwright test --config=playwright.mock-llm.config.ts\",\n \"test:e2e:mock-llm:docker\": \"playwright test --config=playwright.mock-llm-docker.config.ts\",\n \"test:e2e:snapshots\": \"playwright test tests/e2e/snapshots --project=chromium --retries=0\",\n \"test:e2e:snapshots:update\": \"playwright test tests/e2e/snapshots --project=chromium --update-snapshots\",\n \"test:coverage\": \"npm run make-i18n && vitest run --coverage\",\n \"dev_wsl\": \"VITE_WATCH_USE_POLLING=true vite\",\n \"preview\": \"vite preview\",\n \"make-i18n\": \"node scripts/make-i18n-translations.cjs\",\n \"prelint\": \"npm run make-i18n\",\n \"lint\": \"npm run typecheck && eslint src && prettier --check src/**/*.{ts,tsx}\",\n \"lint:fix\": \"eslint src --fix && prettier --write src/**/*.{ts,tsx}\",\n \"prepare\": \"husky\",\n \"typecheck\": \"react-router typegen && tsc\",\n \"typecheck:staged\": \"react-router typegen && npx tsc --noEmit --skipLibCheck\",\n \"check-translation-completeness\": \"node scripts/check-translation-completeness.cjs\",\n \"build:app\": \"npm run make-i18n && react-router build\",\n \"build:lib\": \"npm run make-i18n && react-router typegen && cross-env BUILD_LIB=true VITE_APP_ENV=production vite build && tsc -p tsconfig.lib.json\",\n \"build:docker\": \"node scripts/docker-build.mjs\"\n },\n \"lint-staged\": {\n \"src/**/*.{ts,tsx,js}\": [\n \"eslint --fix\",\n \"prettier --write\"\n ],\n \"src/**/*.{ts,tsx}\": [\n \"bash -c 'npm run typecheck:staged'\"\n ],\n \"src/**/*\": [\n \"npm run check-translation-completeness\"\n ]\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"3.3.1\",\n \"@eslint/js\": \"9.39.4\",\n \"@mswjs/socket.io-binding\": \"0.2.0\",\n \"@playwright/test\": \"1.59.1\",\n \"@react-router/dev\": \"7.14.2\",\n \"@tailwindcss/typography\": \"0.5.19\",\n \"@tanstack/eslint-plugin-query\": \"5.100.9\",\n \"@testing-library/dom\": \"10.4.1\",\n \"@testing-library/jest-dom\": \"6.9.1\",\n \"@testing-library/react\": \"16.3.2\",\n \"@testing-library/user-event\": \"14.6.1\",\n \"@types/mdast\": \"4.0.4\",\n \"@types/node\": \"25.6.0\",\n \"@types/react\": \"19.2.14\",\n \"@types/react-dom\": \"19.2.3\",\n \"@types/react-syntax-highlighter\": \"15.5.13\",\n \"@typescript-eslint/eslint-plugin\": \"8.59.2\",\n \"@typescript-eslint/parser\": \"8.59.2\",\n \"@vercel/react-router\": \"1.3.0\",\n \"@vitest/coverage-v8\": \"4.1.5\",\n \"cross-env\": \"10.1.0\",\n \"eslint\": \"9.39.4\",\n \"eslint-config-prettier\": \"10.1.8\",\n \"eslint-import-resolver-typescript\": \"4.4.4\",\n \"eslint-plugin-i18next\": \"6.1.4\",\n \"eslint-plugin-import-x\": \"4.16.2\",\n \"eslint-plugin-jsx-a11y\": \"6.10.2\",\n \"eslint-plugin-prettier\": \"5.5.5\",\n \"eslint-plugin-react\": \"7.37.5\",\n \"eslint-plugin-react-hooks\": \"7.1.1\",\n \"eslint-plugin-unused-imports\": \"4.4.1\",\n \"globals\": \"16.5.0\",\n \"husky\": \"9.1.7\",\n \"jsdom\": \"29.1.1\",\n \"lint-staged\": \"16.4.0\",\n \"msw\": \"2.14.2\",\n \"postcss-prefix-selector\": \"2.1.1\",\n \"prettier\": \"3.8.3\",\n \"tailwindcss\": \"4.2.4\",\n \"typescript\": \"6.0.3\",\n \"vite-plugin-svgr\": \"5.2.0\",\n \"vitest\": \"4.1.5\"\n },\n \"packageManager\": \"npm@10.5.0\",\n \"volta\": {\n \"node\": \"22.12.0\"\n },\n \"msw\": {\n \"workerDirectory\": [\n \"public\"\n ]\n },\n \"overrides\": {\n \"dompurify\": \"3.3.2\"\n },\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"bin\",\n \"build\",\n \"config\",\n \"scripts\",\n \"tools\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\"\n },\n \"./browser\": {\n \"types\": \"./dist/components/browser/index.d.ts\",\n \"import\": \"./dist/components/browser/index.js\",\n \"require\": \"./dist/components/browser/index.cjs\"\n },\n \"./conversation\": {\n \"types\": \"./dist/components/conversation/index.d.ts\",\n \"import\": \"./dist/components/conversation/index.js\",\n \"require\": \"./dist/components/conversation/index.cjs\"\n },\n \"./files\": {\n \"types\": \"./dist/components/files/index.d.ts\",\n \"import\": \"./dist/components/files/index.js\",\n \"require\": \"./dist/components/files/index.cjs\"\n },\n \"./settings\": {\n \"types\": \"./dist/components/settings/index.d.ts\",\n \"import\": \"./dist/components/settings/index.js\",\n \"require\": \"./dist/components/settings/index.cjs\"\n },\n \"./sidebar\": {\n \"types\": \"./dist/components/sidebar/index.d.ts\",\n \"import\": \"./dist/components/sidebar/index.js\",\n \"require\": \"./dist/components/sidebar/index.cjs\"\n },\n \"./terminal\": {\n \"types\": \"./dist/components/terminal/index.d.ts\",\n \"import\": \"./dist/components/terminal/index.js\",\n \"require\": \"./dist/components/terminal/index.cjs\"\n },\n \"./i18n\": {\n \"types\": \"./dist/i18n/index.d.ts\",\n \"import\": \"./dist/i18n/index.js\",\n \"require\": \"./dist/i18n/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"peerDependencies\": {\n \"react\": \"19.2.5\",\n \"react-dom\": \"19.2.5\",\n \"react-router\": \"7.14.2\"\n }\n}\n"],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openhands/agent-canvas",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.6",
|
|
4
4
|
"description": "Agent Canvas UI for OpenHands - run AI coding agents with a visual interface",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@heroui/react": "2.8.10",
|
|
24
24
|
"@microlink/react-json-view": "1.31.20",
|
|
25
25
|
"@monaco-editor/react": "4.7.0",
|
|
26
|
-
"@openhands/extensions": "git+https://github.com/OpenHands/extensions.git#
|
|
26
|
+
"@openhands/extensions": "git+https://github.com/OpenHands/extensions.git#62594156a187722344736bc2ff5edfb12c0cc75c",
|
|
27
27
|
"@openhands/typescript-client": "1.24.3",
|
|
28
28
|
"@react-router/node": "7.14.2",
|
|
29
29
|
"@react-router/serve": "7.14.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-BFRubm34.js";import{t}from"./react-CM_dJw1Z.js";import{t as n}from"./useMutation-DqrumCWD.js";import{o as r,t as i}from"./declaration-BNMqORFE.js";import{n as a}from"./QueryClientProvider-CkGuhXg-.js";import{t as o}from"./useTranslation-DCOdSSMl.js";import{t as s}from"./retrieve-axios-error-message-BY-yIkIq.js";import{n as c,t as l}from"./vendor~home~mcp~automations-list-Ccy2I0KU.js";import{r as u}from"./custom-toast-handlers-C-SZFmto.js";import{t as d}from"./utils-i18rdUj2.js";import{t as f}from"./agent-server-client-options-Bc5ZorQZ.js";import{l as p}from"./vendor~root-layout~home~conversation-panel~conversation~launch~extensions-hub~skills-settin~dp08i1qy-DTwbEEcX.js";import{a as m}from"./query-keys-tAsQcc_9.js";import{t as h}from"./modal-backdrop-BAbgYsqB.js";import{t as g}from"./brand-button-Br7f0kZJ.js";import{t as _}from"./modal-close-button-t1Gh3qmL.js";import{t as v}from"./settings-input-Bn7F5C75.js";import{t as y}from"./v4-CNn21NXa.js";import{t as b}from"./settings-service.api-CZ3uWx4v.js";import{a as x,i as S,r as C}from"./use-settings-DQIZmIov.js";function w(e){return[...e.sse_servers.map((e,t)=>({id:`sse-${t}`,type:`sse`,url:typeof e==`string`?e:e.url,api_key:typeof e==`object`?e.api_key:void 0})),...e.stdio_servers.map((e,t)=>({id:`stdio-${t}`,type:`stdio`,name:e.name,command:e.command,args:e.args,env:e.env})),...e.shttp_servers.map((e,t)=>({id:`shttp-${t}`,type:`shttp`,url:typeof e==`string`?e:e.url,api_key:typeof e==`object`?e.api_key:void 0,timeout:typeof e==`object`?e.timeout:void 0}))]}var T=e(t(),1),E=r();function D(e){return e.connectionOptions.filter(e=>e.provider===`mcp`&&!!e.transport)}function O(e){let t=D(e);return t.find(t=>t.id===e.defaultConnectionOptionId)??t[0]}function k(e){return e.auth.strategy!==`oauth2`}function A(e){let t=D(e),n=t.find(t=>t.id===e.defaultConnectionOptionId);return n&&k(n)?n:t.find(k)}function j(e){return O(e)?.transport}function M(e){return e.filter(e=>!!O(e))}var N=e=>{try{return new URL(e)}catch{return null}};function P(e,t){let n=typeof e==`string`?e:``,r=typeof t==`string`?t:``;if(!n||!r)return!1;let i=N(n),a=N(r);return!i||!a?n.replace(/\/+$/,``)===r.replace(/\/+$/,``):i.protocol===a.protocol&&i.host===a.host&&i.pathname.replace(/\/+$/,``)===a.pathname.replace(/\/+$/,``)}function F(e,t){return t.find(t=>L(e,t))??null}function I(e,t){for(let n of D(e)){let e=F(n.transport,t);if(e)return e}return null}function L(e,t){if(e.kind===`shttp`){let n=e.url;return t.type===`shttp`&&!!t.url&&P(t.url,n)}if(e.kind===`sse`){let n=e.url;return t.type===`sse`&&!!t.url&&P(t.url,n)}return t.type===`stdio`&&t.name===e.serverName}function R(e,t){return!e.runtimeAvailability||e.runtimeAvailability===`all`?!0:e.runtimeAvailability===t}function z(e){return e.trim().toLowerCase()}function B(e){return e.map((e,t)=>({entry:e,index:t})).sort((e,t)=>(t.entry.popularityRank??0)-(e.entry.popularityRank??0)||e.index-t.index).map(({entry:e})=>e)}function V(e,t){return t.find(t=>t.id===e)}function H(e,t){let n=z(t);return n?[e.name,e.description,e.id,...e.keywords??[]].join(` `).toLowerCase().includes(n):!0}function U(e,t,n){let r=z(n);return r?[e.type,`name`in e?e.name:void 0,`command`in e?e.command:void 0,`args`in e?e.args?.join(` `):void 0,`url`in e?e.url:void 0,t?.name,t?.description,t?.id,...t?.keywords??[]].filter(Boolean).join(` `).toLowerCase().includes(r):!0}function W(e,t){return t.find(t=>D(t).some(t=>L(t.transport,e)))}var G={xs:`h-4 w-4 rounded [&>svg]:h-2.5 [&>svg]:w-2.5`,sm:`h-5 w-5 rounded-md [&>svg]:h-3 [&>svg]:w-3`,md:`h-10 w-10 rounded-lg [&>svg]:h-5 [&>svg]:w-5`};function K({entry:e,size:t=`md`,className:n,fallback:r,testId:i}){return(0,E.jsx)(`span`,{"aria-hidden":`true`,title:e?.name,"data-testid":i,className:d(`inline-flex shrink-0 items-center justify-center overflow-hidden`,`border border-white/10 shadow-[inset_0_1px_0_rgba(255,255,255,0.18)]`,G[t],n),style:{backgroundColor:e?.iconBg??`var(--oh-color-tertiary)`,color:e?.iconColor??`#FFFFFF`},children:e?c[e.id]??r??l:r??l})}function q(){let e=a(),{data:t}=C();return n({mutationFn:async e=>{if(!t)return;let n=S(t.agent_settings?.mcp_config),r={sse_servers:[...n.sse_servers],stdio_servers:[...n.stdio_servers],shttp_servers:[...n.shttp_servers]};if(e.type===`sse`){let t={url:e.url,...e.api_key&&{api_key:e.api_key}};r.sse_servers.push(t)}else if(e.type===`stdio`){let t={name:e.name,command:e.command,...e.args&&{args:e.args},...e.env&&{env:e.env}};r.stdio_servers.push(t)}else if(e.type===`shttp`){let t={url:e.url,...e.api_key&&{api_key:e.api_key},...e.timeout!==void 0&&{timeout:e.timeout}};r.shttp_servers.push(t)}await b.saveSettings({agent_settings_diff:{mcp_config:x(r)}})},onSuccess:()=>{e.invalidateQueries({queryKey:m.personal()})}})}function J(e){return e.type===`stdio`?{type:`stdio`,command:e.command,...e.args?.length&&{args:e.args},...e.env&&Object.keys(e.env).length>0&&{env:e.env}}:{type:e.type,url:e.url,...e.api_key?{api_key:e.api_key}:{}}}var Y=class{static async testServer(e){let{host:t,apiKey:n}=f(),r=new p({host:t,...n?{apiKey:n}:{}});try{return await r.testServer({server:J(e),...e.name?{name:e.name}:{},...e.timeout?{timeout:e.timeout}:{}})}finally{r.close()}}};function X(){return n({mutationFn:e=>Y.testServer(e)})}function Z(e){return e?.transport.kind!==`shttp`&&e?.transport.kind!==`sse`?!1:[`api_key`,`bearer`,`basic`].includes(e.auth.strategy)}function Q(e){return e.transport.kind===`stdio`?e.auth.apiKeyOptional??!1:e.auth.apiKeyOptional??e.transport.apiKeyOptional??!1}function $(e){let t={},n=A(e),r=n?.transport;if(r?.kind===`stdio`){for(let e of r.envFields??[])t[e.key]=``;for(let e of r.argFields??[])t[e.key]=``}else Z(n)&&(t.api_key=``);return{values:t,errors:{}}}function ee({entry:e,onClose:t,onSuccess:n}){let{t:r}=o(`openhands`),{mutate:a,isPending:c}=q(),{mutate:l,isPending:d}=X(),[f,p]=T.useState(()=>$(e)),[m,b]=T.useState(null),x=A(e),S=x?.transport,C=d||c,w=(e,t)=>{p(n=>({values:{...n.values,[e]:t},errors:{...n.errors,[e]:null}})),b(null)},D=e=>{switch(e.error_kind){case`timeout`:return r(i.MCP$TEST_ERROR_TIMEOUT);case`connection`:return r(i.MCP$TEST_ERROR_CONNECTION);default:return r(i.MCP$TEST_ERROR_UNKNOWN,{error:e.error})}},O=o=>{l(o,{onSuccess:c=>{if(!c.ok){b(D(c));return}a(o,{onSuccess:()=>{u(r(i.MCP$INSTALL_SUCCESS)),n?.(e),t()},onError:e=>{b(s(e)||r(i.ERROR$GENERIC))}})},onError:e=>{b(s(e)||r(i.ERROR$GENERIC))}})},k=()=>{if(S?.kind!==`shttp`&&S?.kind!==`sse`||!x)return;let e=f.values.api_key?.trim()??``,t=Z(x);if(t&&!Q(x)&&!e){p(e=>({...e,errors:{api_key:r(i.MCP$ERROR_FIELD_REQUIRED)}}));return}O({id:`${S.kind}-${y()}`,type:S.kind,url:S.url,...t&&e&&{api_key:e}})},j=()=>{if(S?.kind!==`stdio`)return;let e=S,t={};for(let n of e.envFields??[])n.required&&!(f.values[n.key]??``).trim()&&(t[n.key]=r(i.MCP$ERROR_FIELD_REQUIRED));for(let n of e.argFields??[])n.required&&!(f.values[n.key]??``).trim()&&(t[n.key]=r(i.MCP$ERROR_FIELD_REQUIRED));if(Object.values(t).some(Boolean)){p(e=>({...e,errors:t}));return}let n={};for(let t of e.envFields??[]){let e=f.values[t.key]?.trim();e&&(n[t.key]=e)}let a=[];for(let t of e.argFields??[]){let e=f.values[t.key]?.trim();if(e)for(let t of e.split(/\s+/))t&&a.push(t)}O({id:`stdio-${y()}`,type:`stdio`,name:e.serverName,command:e.command,args:[...e.args,...a],...Object.keys(n).length>0&&{env:n}})};return(0,E.jsx)(h,{onClose:t,"aria-label":e.name,children:(0,E.jsxs)(`form`,{"data-testid":`mcp-install-modal`,"data-marketplace-id":e.id,onSubmit:e=>(e.preventDefault(),b(null),S?.kind===`shttp`||S?.kind===`sse`?k():j()),className:`relative bg-base-secondary p-6 rounded-xl flex flex-col gap-4 border border-[var(--oh-border)] w-[520px] max-w-[90vw] max-h-[85vh] overflow-y-auto custom-scrollbar`,children:[(0,E.jsx)(_,{onClose:t,testId:`mcp-install-modal-close`,disabled:C}),(0,E.jsxs)(`div`,{className:`flex items-start gap-3 pr-6`,children:[(0,E.jsx)(K,{entry:e}),(0,E.jsxs)(`div`,{className:`flex flex-col flex-1`,children:[(0,E.jsx)(`h2`,{className:`text-lg font-semibold`,children:e.name}),(0,E.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.description})]})]}),e.installHint&&(0,E.jsx)(`p`,{className:`text-xs text-tertiary-light`,children:e.installHint}),e.docsUrl&&(0,E.jsx)(`a`,{href:e.docsUrl,target:`_blank`,rel:`noreferrer`,className:`text-xs text-[var(--oh-muted)] hover:text-white hover:underline self-start transition-colors`,children:r(i.MCP$VIEW_DOCS)}),(0,E.jsx)(`div`,{className:`flex flex-col gap-3`,children:(()=>{if(S?.kind===`shttp`||S?.kind===`sse`){let e=Z(x),t=x?Q(x):!1;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(v,{testId:`mcp-install-field-url`,name:`url`,type:`url`,label:r(i.SETTINGS$MCP_URL),value:S.url,onChange:()=>{},isDisabled:!0,className:`w-full`}),e?(0,E.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,E.jsx)(v,{testId:`mcp-install-field-api_key`,name:`api_key`,type:`password`,label:r(i.SETTINGS$MCP_API_KEY),value:f.values.api_key??``,onChange:e=>w(`api_key`,e),placeholder:r(i.SETTINGS$MCP_API_KEY_PLACEHOLDER),showOptionalTag:t,required:!t,className:`w-full`}),f.errors.api_key&&(0,E.jsx)(`p`,{className:`text-xs text-red-500`,children:f.errors.api_key})]}):null]})}if(S?.kind!==`stdio`)return null;let e=S;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(v,{testId:`mcp-install-field-command-readonly`,name:`command-readonly`,type:`text`,label:r(i.MCP$COMMAND_LABEL),value:`${e.command} ${e.args.join(` `)}`.trim(),onChange:()=>{},isDisabled:!0,className:`w-full`}),(e.envFields??[]).map(e=>(0,E.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,E.jsx)(v,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:f.values[e.key]??``,onChange:t=>w(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,E.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:e.helperText}),f.errors[e.key]&&(0,E.jsx)(`p`,{className:`text-xs text-red-500`,children:f.errors[e.key]})]},e.key)),(e.argFields??[]).map(e=>(0,E.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,E.jsx)(v,{testId:`mcp-install-field-${e.key}`,name:e.key,type:e.type===`password`?`password`:`text`,label:e.label,value:f.values[e.key]??``,onChange:t=>w(e.key,t),placeholder:e.placeholder,required:e.required,showOptionalTag:!e.required,className:`w-full`}),e.helperText&&(0,E.jsx)(`p`,{className:`text-xs text-tertiary-alt`,children:e.helperText}),f.errors[e.key]&&(0,E.jsx)(`p`,{className:`text-xs text-red-500`,children:f.errors[e.key]})]},e.key))]})})()}),m&&(0,E.jsx)(`p`,{"data-testid":`mcp-install-modal-error`,className:`text-sm text-red-500 whitespace-pre-wrap`,children:m}),(0,E.jsxs)(`div`,{className:`flex justify-end gap-2 mt-2`,children:[(0,E.jsx)(g,{type:`button`,variant:`secondary`,onClick:t,testId:`mcp-install-cancel`,children:r(i.BUTTON$CANCEL)}),(0,E.jsx)(g,{type:`submit`,variant:`primary`,isDisabled:C,testId:`mcp-install-submit`,children:r(d?i.MCP$VERIFYING:c?i.SETTINGS$SAVING:i.MCP$INSTALL_BUTTON)})]})]})})}export{W as a,B as c,U as d,R as f,K as i,V as l,w as m,X as n,I as o,H as p,q as r,j as s,ee as t,M as u};
|