@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.
Files changed (97) hide show
  1. package/README.md +2 -2
  2. package/build/assets/{automations-list-rMki-8au.js → automations-list-6FDbI5dc.js} +1 -1
  3. package/build/assets/{home-XxBpNOVq.js → home-e-egNUXZ.js} +1 -1
  4. package/build/assets/install-server-modal-DHlbgqVH.js +1 -0
  5. package/build/assets/{manifest-d9077852.js → manifest-3bf30d69.js} +1 -1
  6. package/build/assets/{mcp-D2onbwVk.js → mcp-ByeBfdfU.js} +1 -1
  7. package/build/assets/{recommended-automations-launcher-BQChv2rc.js → recommended-automations-launcher-CgV8FyPK.js} +1 -1
  8. package/build/assets/{root-BgEbw3S0.js → root-dNntxffj.js} +1 -1
  9. package/build/assets/vendor~home~mcp~automations-list-Cs-TO3fK.js +1 -0
  10. package/build/index.html +3 -3
  11. package/dist/components/features/mcp-page/install-server-modal.cjs +1 -1
  12. package/dist/components/features/mcp-page/install-server-modal.cjs.map +1 -1
  13. package/dist/components/features/mcp-page/install-server-modal.js +92 -81
  14. package/dist/components/features/mcp-page/install-server-modal.js.map +1 -1
  15. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs +1 -1
  16. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.cjs.map +1 -1
  17. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js +3 -1
  18. package/dist/node_modules/@openhands/extensions/integrations/catalog/airtable.js.map +1 -1
  19. package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs +1 -1
  20. package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.cjs.map +1 -1
  21. package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js +3 -1
  22. package/dist/node_modules/@openhands/extensions/integrations/catalog/apify.js.map +1 -1
  23. package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs +1 -1
  24. package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.cjs.map +1 -1
  25. package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js +3 -1
  26. package/dist/node_modules/@openhands/extensions/integrations/catalog/brave-search.js.map +1 -1
  27. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs +1 -1
  28. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.cjs.map +1 -1
  29. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js +3 -1
  30. package/dist/node_modules/@openhands/extensions/integrations/catalog/clickhouse.js.map +1 -1
  31. package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs +1 -1
  32. package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.cjs.map +1 -1
  33. package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js +3 -1
  34. package/dist/node_modules/@openhands/extensions/integrations/catalog/elevenlabs.js.map +1 -1
  35. package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs +1 -1
  36. package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.cjs.map +1 -1
  37. package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.js +3 -1
  38. package/dist/node_modules/@openhands/extensions/integrations/catalog/exa.js.map +1 -1
  39. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs +1 -1
  40. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.cjs.map +1 -1
  41. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js +3 -1
  42. package/dist/node_modules/@openhands/extensions/integrations/catalog/figma.js.map +1 -1
  43. package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs +1 -1
  44. package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.cjs.map +1 -1
  45. package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.js +3 -1
  46. package/dist/node_modules/@openhands/extensions/integrations/catalog/firecrawl.js.map +1 -1
  47. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs +1 -1
  48. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.cjs.map +1 -1
  49. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js +3 -1
  50. package/dist/node_modules/@openhands/extensions/integrations/catalog/github.js.map +1 -1
  51. package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs +1 -1
  52. package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.cjs.map +1 -1
  53. package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js +3 -1
  54. package/dist/node_modules/@openhands/extensions/integrations/catalog/kagi.js.map +1 -1
  55. package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs +1 -1
  56. package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.cjs.map +1 -1
  57. package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js +3 -1
  58. package/dist/node_modules/@openhands/extensions/integrations/catalog/mongodb.js.map +1 -1
  59. package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs +1 -1
  60. package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.cjs.map +1 -1
  61. package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.js +3 -1
  62. package/dist/node_modules/@openhands/extensions/integrations/catalog/neon.js.map +1 -1
  63. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs +1 -1
  64. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.cjs.map +1 -1
  65. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js +3 -1
  66. package/dist/node_modules/@openhands/extensions/integrations/catalog/notion.js.map +1 -1
  67. package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs +1 -1
  68. package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.cjs.map +1 -1
  69. package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js +2 -1
  70. package/dist/node_modules/@openhands/extensions/integrations/catalog/obsidian.js.map +1 -1
  71. package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs +1 -1
  72. package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.cjs.map +1 -1
  73. package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js +2 -1
  74. package/dist/node_modules/@openhands/extensions/integrations/catalog/redis.js.map +1 -1
  75. package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs +1 -1
  76. package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.cjs.map +1 -1
  77. package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.js +3 -1
  78. package/dist/node_modules/@openhands/extensions/integrations/catalog/resend.js.map +1 -1
  79. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs +1 -1
  80. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.cjs.map +1 -1
  81. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js +8 -7
  82. package/dist/node_modules/@openhands/extensions/integrations/catalog/slack.js.map +1 -1
  83. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs +1 -1
  84. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.cjs.map +1 -1
  85. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js +2 -1
  86. package/dist/node_modules/@openhands/extensions/integrations/catalog/supabase.js.map +1 -1
  87. package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs +1 -1
  88. package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.cjs.map +1 -1
  89. package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js +4 -2
  90. package/dist/node_modules/@openhands/extensions/integrations/catalog/tavily.js.map +1 -1
  91. package/dist/package.cjs +1 -1
  92. package/dist/package.cjs.map +1 -1
  93. package/dist/package.js +2 -2
  94. package/dist/package.js.map +1 -1
  95. package/package.json +2 -2
  96. package/build/assets/install-server-modal-f31_CLrW.js +0 -1
  97. 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:`SLACK_BOT_TOKEN`,label:`Bot token`,type:`password`,placeholder:`xoxb-...`,required:!0},{key:`SLACK_TEAM_ID`,label:`Team / Workspace ID`,type:`text`,placeholder:`T01234567`,helperText:`Find this in Slack under Workspace settings About this workspace.`,required:!0}]},auth:{strategy:`api_key`}}]};exports.default=e;
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\": \"SLACK_BOT_TOKEN\",\n \"label\": \"Bot token\",\n \"type\": \"password\",\n \"placeholder\": \"xoxb-...\",\n \"required\": true\n },\n {\n \"key\": \"SLACK_TEAM_ID\",\n \"label\": \"Team / Workspace ID\",\n \"type\": \"text\",\n \"placeholder\": \"T01234567\",\n \"helperText\": \"Find this in Slack under Workspace settings About this workspace.\",\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":"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: "Find this in Slack under Workspace settings About this workspace.",
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\": \"SLACK_BOT_TOKEN\",\n \"label\": \"Bot token\",\n \"type\": \"password\",\n \"placeholder\": \"xoxb-...\",\n \"required\": true\n },\n {\n \"key\": \"SLACK_TEAM_ID\",\n \"label\": \"Team / Workspace ID\",\n \"type\": \"text\",\n \"placeholder\": \"T01234567\",\n \"helperText\": \"Find this in Slack under Workspace settings About this workspace.\",\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":"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.`}]},auth:{strategy:`api_key`}}]};exports.default=e;
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 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}]},auth:{strategy:`api_key`}}]};exports.default=e;
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 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 }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
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 the official tavily-mcp package runs via npx.",
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 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 }\n ]\n },\n \"auth\": {\n \"strategy\": \"api_key\"\n }\n }\n ]\n}\n"],"x_google_ignoreList":[0],"mappings":""}
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.5`,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#e14f740c59b4bfd7369d4bb6aea5eeb33dd05909`,"@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;
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
@@ -1 +1 @@
1
- {"version":3,"file":"package.cjs","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.5\",\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#e14f740c59b4bfd7369d4bb6aea5eeb33dd05909\",\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":""}
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.5",
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#e14f740c59b4bfd7369d4bb6aea5eeb33dd05909",
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",
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","names":[],"sources":["../package.json"],"sourcesContent":["{\n \"name\": \"@openhands/agent-canvas\",\n \"version\": \"1.0.0-beta.5\",\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#e14f740c59b4bfd7369d4bb6aea5eeb33dd05909\",\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":""}
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.5",
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#e14f740c59b4bfd7369d4bb6aea5eeb33dd05909",
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};