@seastudio/sdk 4.0.6 → 4.0.9

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.
@@ -36,6 +36,11 @@ function Tab({
36
36
  onDrop,
37
37
  onDragEnd,
38
38
  onDoubleClick,
39
+ onMouseDown: (event) => {
40
+ if (event.detail > 1) {
41
+ event.preventDefault();
42
+ }
43
+ },
39
44
  onClick: () => {
40
45
  if (!disabled) {
41
46
  onClick();
@@ -58,8 +63,8 @@ function Tab({
58
63
  )
59
64
  }
60
65
  ),
61
- icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: icon }),
62
- title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate max-w-[120px] text-sm font-normal", titleClassName), children: title }),
66
+ icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0 select-none", children: icon }),
67
+ title && /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate max-w-[120px] text-sm font-normal select-none", titleClassName), children: title }),
63
68
  onClose && /* @__PURE__ */ jsxRuntime.jsx(
64
69
  "button",
65
70
  {
@@ -71,7 +76,7 @@ function Tab({
71
76
  },
72
77
  disabled,
73
78
  className: cn(
74
- "p-0.5 transition-all flex-shrink-0",
79
+ "p-0.5 transition-all flex-shrink-0 select-none",
75
80
  "opacity-0 group-hover:opacity-100",
76
81
  isActive && "opacity-60",
77
82
  !disabled && "hover:bg-foreground/10",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkY4QEHVYJ_cjs = require('./chunk-Y4QEHVYJ.cjs');
3
+ var chunkKK6HF3XF_cjs = require('./chunk-KK6HF3XF.cjs');
4
4
  var chunk3I7UM66P_cjs = require('./chunk-3I7UM66P.cjs');
5
5
 
6
6
  // src/mcp/index.ts
@@ -11,7 +11,7 @@ async function loadPlugin(pluginName) {
11
11
  throw new Error(`Unknown plugin: ${pluginName}. \u63D2\u4EF6 MCP \u4E0D\u518D\u901A\u8FC7 SDK \u9759\u6001\u5BFC\u5165\u3002`);
12
12
  }
13
13
  var MCP_PACKAGES = [
14
- { id: "seastudio", name: "SeaStudio", description: "\u6587\u4EF6/Shell/AIGC \u57FA\u7840\u80FD\u529B", tools: chunkY4QEHVYJ_cjs.allTools }
14
+ { id: "seastudio", name: "SeaStudio", description: "\u6587\u4EF6/Shell/AIGC \u57FA\u7840\u80FD\u529B", tools: chunkKK6HF3XF_cjs.allTools }
15
15
  ];
16
16
  function mcpToolToOpenAI(tool) {
17
17
  const normalizedTool = chunk3I7UM66P_cjs.normalizeMCPTool(tool);
@@ -29,7 +29,7 @@ function mcpToolToOpenAI(tool) {
29
29
  };
30
30
  }
31
31
  function listAllTools() {
32
- return [...chunkY4QEHVYJ_cjs.allTools];
32
+ return [...chunkKK6HF3XF_cjs.allTools];
33
33
  }
34
34
  function toPackageName(source) {
35
35
  if (source === "seastudio") {
@@ -62,7 +62,7 @@ function normalizeAvailableTool(raw) {
62
62
  };
63
63
  }
64
64
  var MCP_TOOL_PACKAGE_INDEX = new Map(
65
- chunkY4QEHVYJ_cjs.allTools.map((tool) => [tool.name, "seastudio"])
65
+ chunkKK6HF3XF_cjs.allTools.map((tool) => [tool.name, "seastudio"])
66
66
  );
67
67
  function getMCPToolPackageIndex() {
68
68
  return new Map(MCP_TOOL_PACKAGE_INDEX);
@@ -34,6 +34,11 @@ function Tab({
34
34
  onDrop,
35
35
  onDragEnd,
36
36
  onDoubleClick,
37
+ onMouseDown: (event) => {
38
+ if (event.detail > 1) {
39
+ event.preventDefault();
40
+ }
41
+ },
37
42
  onClick: () => {
38
43
  if (!disabled) {
39
44
  onClick();
@@ -56,8 +61,8 @@ function Tab({
56
61
  )
57
62
  }
58
63
  ),
59
- icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0", children: icon }),
60
- title && /* @__PURE__ */ jsx("span", { className: cn("truncate max-w-[120px] text-sm font-normal", titleClassName), children: title }),
64
+ icon && /* @__PURE__ */ jsx("span", { className: "flex-shrink-0 select-none", children: icon }),
65
+ title && /* @__PURE__ */ jsx("span", { className: cn("truncate max-w-[120px] text-sm font-normal select-none", titleClassName), children: title }),
61
66
  onClose && /* @__PURE__ */ jsx(
62
67
  "button",
63
68
  {
@@ -69,7 +74,7 @@ function Tab({
69
74
  },
70
75
  disabled,
71
76
  className: cn(
72
- "p-0.5 transition-all flex-shrink-0",
77
+ "p-0.5 transition-all flex-shrink-0 select-none",
73
78
  "opacity-0 group-hover:opacity-100",
74
79
  isActive && "opacity-60",
75
80
  !disabled && "hover:bg-foreground/10",
@@ -1,4 +1,4 @@
1
- import { allTools } from './chunk-QA7XGPJX.js';
1
+ import { allTools } from './chunk-ZDUIJOH2.js';
2
2
  import { normalizeMCPTool, normalizeMCPToolObjectSchema, getDefaultClient } from './chunk-TJ3CGHWJ.js';
3
3
 
4
4
  // src/mcp/index.ts
@@ -530,6 +530,113 @@ var seaCloudTools = [
530
530
  })
531
531
  ];
532
532
 
533
+ // src/mcp/seastudio/tools/browser.ts
534
+ var SINGLETON_BROWSER_SESSION_ID = "browser-session-default";
535
+ var browserSessionIdParam = {
536
+ browserSessionId: {
537
+ type: "string",
538
+ description: "Browser session ID\uFF0C\u53EF\u9009\uFF1B\u7F3A\u7701\u4E3A\u5168\u5C40\u5355\u4F8B browser-session-default\u3002"
539
+ }
540
+ };
541
+ var tabIdParam = {
542
+ tabId: { type: "string", description: "Browser tab ID\u3002close/activate/navigate/goBack/goForward/reload/stop \u9700\u8981\u3002" }
543
+ };
544
+ var browserRuntimeTools = [
545
+ annotateTool({
546
+ name: "seastudio-browser_session",
547
+ description: "\u8BFB\u53D6\u6216\u91CD\u7F6E\u5168\u5C40 Browser Session\uFF08\u5355\u4F8B\u5185\u6838\uFF09\u3002\u4F7F\u7528 action \u9009\u62E9 open\u3001list\u3001get \u6216 close\u3002open/get \u8FD4\u56DE\u540C\u4E00\u4E2A browserSessionId\uFF1Bclose \u4F1A\u6E05\u7A7A\u5168\u90E8 tab \u4F46\u4FDD\u7559 session \u58F3\u3002",
548
+ inputSchema: {
549
+ type: "object",
550
+ properties: {
551
+ action: {
552
+ type: "string",
553
+ enum: ["open", "list", "get", "close"],
554
+ description: "Browser Session \u52A8\u4F5C\u3002\u5168\u5C40\u4EC5\u4E00\u4E2A session\uFF1BbrowserSessionId \u53EF\u9009\u3002"
555
+ },
556
+ ...browserSessionIdParam,
557
+ homepage: { type: "string", description: "open \u7684\u53EF\u9009\u9ED8\u8BA4\u9996\u9875\u3002" }
558
+ },
559
+ required: ["action"]
560
+ }
561
+ }, {
562
+ operationKind: "workflow",
563
+ requiresExecutionEvidence: false,
564
+ rawDomain: "browser"
565
+ }),
566
+ annotateTool({
567
+ name: "seastudio-browser_tab",
568
+ description: "\u7BA1\u7406\u5168\u5C40 Browser Session \u4E2D\u7684 tab\u3002\u4F7F\u7528 action \u9009\u62E9 create\u3001close\u3001activate\u3001navigate\u3001goBack\u3001goForward\u3001reload \u6216 stop\u3002\u6BCF\u4E2A Host Browser \u63D2\u4EF6\u5B9E\u4F8B\u901A\u5E38\u5BF9\u5E94\u4E00\u4E2A ownerInstanceId tab\u3002",
569
+ inputSchema: {
570
+ type: "object",
571
+ properties: {
572
+ action: {
573
+ type: "string",
574
+ enum: ["create", "close", "activate", "navigate", "goBack", "goForward", "reload", "stop"],
575
+ description: "Browser tab \u52A8\u4F5C\u3002browserSessionId \u53EF\u9009\uFF1Bcreate \u53EF\u4F20 ownerInstanceId \u7ED1\u5B9A Host \u63D2\u4EF6\u5B9E\u4F8B\u3002"
576
+ },
577
+ ...browserSessionIdParam,
578
+ ...tabIdParam,
579
+ url: { type: "string", description: "create \u7684\u521D\u59CB URL\uFF0C\u6216 navigate \u7684\u76EE\u6807 URL/\u641C\u7D22\u8BCD\u3002" },
580
+ ownerInstanceId: { type: "string", description: "create \u65F6\u7ED1\u5B9A Host Browser \u63D2\u4EF6 instanceId\u3002" }
581
+ },
582
+ required: ["action"]
583
+ }
584
+ }, {
585
+ operationKind: "mutate",
586
+ requiresExecutionEvidence: false,
587
+ rawDomain: "browser"
588
+ }),
589
+ annotateTool({
590
+ name: "seastudio-browser_runtime",
591
+ description: "\u5904\u7406 Browser runtime \u4E0E UI viewport\u3001\u8BC1\u4E66\u9519\u8BEF\u76F8\u5173\u7684\u5BBF\u4E3B\u4EA4\u4E92\u3002\u4F7F\u7528 action \u9009\u62E9 bindViewport \u6216 respondCertificate\u3002\u901A\u5E38\u7531 Browser \u63D2\u4EF6\u524D\u7AEF\u81EA\u52A8\u8C03\u7528\u3002",
592
+ inputSchema: {
593
+ type: "object",
594
+ properties: {
595
+ action: {
596
+ type: "string",
597
+ enum: ["bindViewport", "respondCertificate"],
598
+ description: "Browser runtime \u52A8\u4F5C\u3002bindViewport \u9700\u8981 rect\uFF1BrespondCertificate \u9700\u8981 requestId \u548C allow\u3002"
599
+ },
600
+ ...browserSessionIdParam,
601
+ ownerInstanceId: { type: "string", description: "bindViewport \u7684 UI owner instance id\u3002" },
602
+ rect: {
603
+ type: "object",
604
+ description: "bindViewport \u7684 UI viewport \u77E9\u5F62\u3002",
605
+ properties: {
606
+ x: { type: "number" },
607
+ y: { type: "number" },
608
+ width: { type: "number" },
609
+ height: { type: "number" }
610
+ },
611
+ required: ["x", "y", "width", "height"]
612
+ },
613
+ requestId: { type: "string", description: "respondCertificate \u7684\u8BC1\u4E66\u9519\u8BEF\u8BF7\u6C42 ID\u3002" },
614
+ allow: { type: "boolean", description: "respondCertificate \u662F\u5426\u7EE7\u7EED\u52A0\u8F7D\u8BE5\u8BC1\u4E66\u9519\u8BEF\u9875\u9762\u3002" }
615
+ },
616
+ required: ["action"]
617
+ }
618
+ }, {
619
+ operationKind: "workflow",
620
+ requiresExecutionEvidence: false,
621
+ rawDomain: "browser"
622
+ }),
623
+ annotateTool({
624
+ name: "seastudio-browser_show",
625
+ description: "\u5728 Browser \u63D2\u4EF6\u4E2D\u663E\u793A\u6307\u5B9A URL\uFF08\u53EF\u89C6\u5316\uFF09\u3002\u4F1A\u6253\u5F00\u6216\u6FC0\u6D3B\u5BF9\u5E94 Host \u6807\u7B7E\u9875\uFF0C\u5E76\u628A\u9875\u9762\u5448\u73B0\u7ED9\u7528\u6237\u3002",
626
+ inputSchema: {
627
+ type: "object",
628
+ properties: {
629
+ url: { type: "string", description: "\u8981\u5728 Browser \u63D2\u4EF6\u4E2D\u663E\u793A\u7684 URL \u6216\u641C\u7D22\u8BCD\u3002" }
630
+ },
631
+ required: ["url"]
632
+ }
633
+ }, {
634
+ operationKind: "workflow",
635
+ requiresExecutionEvidence: false,
636
+ rawDomain: "browser"
637
+ })
638
+ ];
639
+
533
640
  // src/mcp/seastudio/client.ts
534
641
  function parseToolResult(result) {
535
642
  if (result.isError) {
@@ -771,14 +878,22 @@ var seastudio = {
771
878
  session: {
772
879
  open: async (options = {}) => parseToolResult(await callTool("seastudio-browser_session", { action: "open", ...options })),
773
880
  list: async () => parseToolResult(await callTool("seastudio-browser_session", { action: "list" })),
774
- get: async (browserSessionId) => parseToolResult(await callTool("seastudio-browser_session", { action: "get", browserSessionId })),
775
- close: async (browserSessionId) => parseToolResult(
881
+ get: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID) => parseToolResult(await callTool("seastudio-browser_session", { action: "get", browserSessionId })),
882
+ close: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID) => parseToolResult(
776
883
  await callTool("seastudio-browser_session", { action: "close", browserSessionId })
777
884
  )
778
885
  },
886
+ show: async (url) => parseToolResult(
887
+ await callTool("seastudio-browser_show", { url })
888
+ ),
779
889
  tab: {
780
- create: async (browserSessionId, url) => parseToolResult(
781
- await callTool("seastudio-browser_tab", { action: "create", browserSessionId, url })
890
+ create: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID, url, ownerInstanceId) => parseToolResult(
891
+ await callTool("seastudio-browser_tab", {
892
+ action: "create",
893
+ browserSessionId,
894
+ ...url ? { url } : {},
895
+ ...ownerInstanceId ? { ownerInstanceId } : {}
896
+ })
782
897
  ),
783
898
  close: async (browserSessionId, tabId) => parseToolResult(
784
899
  await callTool("seastudio-browser_tab", { action: "close", browserSessionId, tabId })
@@ -792,10 +907,18 @@ var seastudio = {
792
907
  goBack: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "goBack", browserSessionId, tabId })),
793
908
  goForward: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "goForward", browserSessionId, tabId })),
794
909
  reload: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "reload", browserSessionId, tabId })),
795
- stop: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "stop", browserSessionId, tabId }))
910
+ stop: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "stop", browserSessionId, tabId })),
911
+ getOrCreateForInstance: async (ownerInstanceId, url) => parseToolResult(
912
+ await callTool("seastudio-browser_tab", {
913
+ action: "create",
914
+ browserSessionId: SINGLETON_BROWSER_SESSION_ID,
915
+ ownerInstanceId,
916
+ ...url ? { url } : {}
917
+ })
918
+ )
796
919
  },
797
920
  viewport: {
798
- bind: async (browserSessionId, rect, ownerInstanceId) => parseToolResult(
921
+ bind: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID, rect, ownerInstanceId) => parseToolResult(
799
922
  await callTool("seastudio-browser_runtime", {
800
923
  action: "bindViewport",
801
924
  browserSessionId,
@@ -887,6 +1010,7 @@ var pluginTabTools = [
887
1010
  description: "\u63D2\u4EF6\u6807\u7B7E\u9875\u52A8\u4F5C\u3002open/getStatus \u9700\u8981 pluginId\uFF1Bswitch/close \u9700\u8981 instanceId\u3002"
888
1011
  },
889
1012
  pluginId: { type: "string", description: "\u63D2\u4EF6 ID\u3002open\u3001getStatus \u5FC5\u586B\u3002" },
1013
+ url: { type: "string", description: "open Browser \u63D2\u4EF6\u65F6\u53EF\u6307\u5B9A\u521D\u59CB URL\u3002" },
890
1014
  instanceId: { type: "string", description: "\u63D2\u4EF6\u6807\u7B7E\u9875\u5B9E\u4F8B ID\u3002switch\u3001close \u5FC5\u586B\u3002" }
891
1015
  },
892
1016
  required: ["action"]
@@ -1000,95 +1124,6 @@ var skillTools = [
1000
1124
  })
1001
1125
  ];
1002
1126
 
1003
- // src/mcp/seastudio/tools/browser.ts
1004
- var browserSessionIdParam = {
1005
- browserSessionId: { type: "string", description: "Browser session ID\u3002get/close/tab/runtime \u52A8\u4F5C\u9700\u8981\u3002\u8981\u628A\u7F51\u9875\u753B\u9762\u663E\u793A\u5230 Browser \u63D2\u4EF6\u4E2D\uFF0C\u4E5F\u9700\u8981\u628A\u8FD9\u4E2A ID \u4F20\u7ED9 browser \u63D2\u4EF6\u7684 MCP \u5DE5\u5177\u3002" }
1006
- };
1007
- var tabIdParam = {
1008
- tabId: { type: "string", description: "Browser tab ID\u3002close/activate/navigate/goBack/goForward/reload/stop \u9700\u8981\u3002" }
1009
- };
1010
- var browserRuntimeTools = [
1011
- annotateTool({
1012
- name: "seastudio-browser_session",
1013
- description: "\u521B\u5EFA\u3001\u5217\u51FA\u3001\u8BFB\u53D6\u6216\u5173\u95ED Browser Session\u3002\u4F7F\u7528 action \u9009\u62E9 open\u3001list\u3001get \u6216 close\u3002\u6CE8\u610F\uFF1A\u672C\u5DE5\u5177\u53EA\u7BA1\u7406\u4F1A\u8BDD\u6570\u636E\u548C tab\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u628A\u7F51\u9875\u753B\u9762\u663E\u793A\u5230 UI\uFF1B\u5982\u679C\u7528\u6237\u9700\u8981\u201C\u6253\u5F00\u6D4F\u89C8\u5668/\u663E\u793A\u7F51\u9875/\u8BA9\u6211\u770B\u5230\u9875\u9762\u201D\uFF0C\u5E94\u5148\u6253\u5F00 Browser \u63D2\u4EF6\u6807\u7B7E\u9875\uFF08seastudio.browser\uFF09\uFF0C\u518D\u8C03\u7528\u8BE5\u63D2\u4EF6\u7684 MCP \u5DE5\u5177\u628A browserSessionId \u4EA4\u7ED9\u63D2\u4EF6\u5B9E\u4F8B\u663E\u793A\u3002",
1014
- inputSchema: {
1015
- type: "object",
1016
- properties: {
1017
- action: {
1018
- type: "string",
1019
- enum: ["open", "list", "get", "close"],
1020
- description: "Browser Session \u52A8\u4F5C\u3002get/close \u9700\u8981 browserSessionId\u3002open \u8FD4\u56DE\u7684 browserSessionId \u53EF\u7EE7\u7EED\u7528\u4E8E tab \u64CD\u4F5C\uFF1B\u82E5\u8981\u663E\u793A\u7F51\u9875\u753B\u9762\uFF0C\u8FD8\u8981\u4F20\u7ED9 Browser \u63D2\u4EF6 MCP\u3002"
1021
- },
1022
- ...browserSessionIdParam,
1023
- label: { type: "string", description: "open \u7684\u53EF\u9009 session \u663E\u793A\u540D\u79F0\u3002\u5EFA\u8BAE\u4F7F\u7528\u80FD\u8BF4\u660E\u7528\u9014\u7684\u540D\u79F0\uFF0CBrowser \u63D2\u4EF6\u63A5\u7BA1\u5DF2\u6709 session \u65F6\u4F1A\u663E\u793A\u5BF9\u5E94\u4F1A\u8BDD\u3002" },
1024
- partitionKey: { type: "string", description: "open \u7684\u53EF\u9009\u7F51\u7AD9\u6570\u636E\u5206\u533A key\uFF1B\u76F8\u540C key \u5171\u4EAB cookie/localStorage\u3002" },
1025
- homepage: { type: "string", description: "open \u7684\u53EF\u9009\u9ED8\u8BA4\u9996\u9875\u3002" }
1026
- },
1027
- required: ["action"]
1028
- }
1029
- }, {
1030
- operationKind: "workflow",
1031
- requiresExecutionEvidence: false,
1032
- rawDomain: "browser"
1033
- }),
1034
- annotateTool({
1035
- name: "seastudio-browser_tab",
1036
- description: "\u7BA1\u7406 Browser Session \u4E2D\u7684 tab\uFF0C\u5305\u62EC\u521B\u5EFA\u3001\u5BFC\u822A\u3001\u6FC0\u6D3B\u548C\u52A0\u8F7D\u63A7\u5236\u3002\u4F7F\u7528 action \u9009\u62E9 create\u3001close\u3001activate\u3001navigate\u3001goBack\u3001goForward\u3001reload \u6216 stop\u3002\u6CE8\u610F\uFF1Atab \u64CD\u4F5C\u53EA\u6539\u53D8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u72B6\u6001\uFF1B\u82E5\u7528\u6237\u9700\u8981\u770B\u5230\u7F51\u9875\u5185\u5BB9\uFF0C\u9700\u8981\u540C\u65F6\u628A browserSessionId \u4EA4\u7ED9 Browser \u63D2\u4EF6 MCP \u5DE5\u5177\u5728\u63D2\u4EF6 viewport \u4E2D\u663E\u793A\u3002",
1037
- inputSchema: {
1038
- type: "object",
1039
- properties: {
1040
- action: {
1041
- type: "string",
1042
- enum: ["create", "close", "activate", "navigate", "goBack", "goForward", "reload", "stop"],
1043
- description: "Browser tab \u52A8\u4F5C\u3002\u6240\u6709\u52A8\u4F5C\u9700\u8981 browserSessionId\uFF1B\u9664 create \u5916\u901A\u5E38\u9700\u8981 tabId\uFF1Bnavigate \u8FD8\u9700\u8981 url\u3002create/navigate \u540E\u5982\u9700\u5C55\u793A\u9875\u9762\uFF0C\u5E94\u8C03\u7528 Browser \u63D2\u4EF6 MCP \u63A5\u7BA1\u540C\u4E00\u4E2A browserSessionId\u3002"
1044
- },
1045
- ...browserSessionIdParam,
1046
- ...tabIdParam,
1047
- url: { type: "string", description: "create \u7684\u521D\u59CB URL\uFF0C\u6216 navigate \u7684\u76EE\u6807 URL/\u641C\u7D22\u8BCD\u3002" }
1048
- },
1049
- required: ["action", "browserSessionId"]
1050
- }
1051
- }, {
1052
- operationKind: "mutate",
1053
- requiresExecutionEvidence: false,
1054
- rawDomain: "browser"
1055
- }),
1056
- annotateTool({
1057
- name: "seastudio-browser_runtime",
1058
- description: "\u5904\u7406 Browser runtime \u4E0E UI viewport\u3001\u8BC1\u4E66\u9519\u8BEF\u76F8\u5173\u7684\u5BBF\u4E3B\u4EA4\u4E92\u3002\u4F7F\u7528 action \u9009\u62E9 bindViewport \u6216 respondCertificate\u3002\u901A\u5E38\u7531 Browser \u63D2\u4EF6\u524D\u7AEF\u81EA\u52A8\u8C03\u7528\uFF1B\u5916\u90E8 agent \u60F3\u8BA9\u7528\u6237\u770B\u5230\u9875\u9762\u65F6\uFF0C\u4E0D\u5E94\u76F4\u63A5\u731C rect\uFF0C\u800C\u5E94\u6253\u5F00 Browser \u63D2\u4EF6\u5E76\u8C03\u7528\u63D2\u4EF6 MCP \u5DE5\u5177\u63A5\u7BA1 browserSessionId\u3002",
1059
- inputSchema: {
1060
- type: "object",
1061
- properties: {
1062
- action: {
1063
- type: "string",
1064
- enum: ["bindViewport", "respondCertificate"],
1065
- description: "Browser runtime \u52A8\u4F5C\u3002bindViewport \u9700\u8981 rect\uFF1BrespondCertificate \u9700\u8981 requestId \u548C allow\u3002"
1066
- },
1067
- ...browserSessionIdParam,
1068
- ownerInstanceId: { type: "string", description: "bindViewport \u7684\u53EF\u9009 UI owner instance id\u3002" },
1069
- rect: {
1070
- type: "object",
1071
- description: "bindViewport \u7684 UI viewport \u77E9\u5F62\u3002",
1072
- properties: {
1073
- x: { type: "number" },
1074
- y: { type: "number" },
1075
- width: { type: "number" },
1076
- height: { type: "number" }
1077
- },
1078
- required: ["x", "y", "width", "height"]
1079
- },
1080
- requestId: { type: "string", description: "respondCertificate \u7684\u8BC1\u4E66\u9519\u8BEF\u8BF7\u6C42 ID\u3002" },
1081
- allow: { type: "boolean", description: "respondCertificate \u662F\u5426\u7EE7\u7EED\u52A0\u8F7D\u8BE5\u8BC1\u4E66\u9519\u8BEF\u9875\u9762\u3002" }
1082
- },
1083
- required: ["action", "browserSessionId"]
1084
- }
1085
- }, {
1086
- operationKind: "workflow",
1087
- requiresExecutionEvidence: false,
1088
- rawDomain: "browser"
1089
- })
1090
- ];
1091
-
1092
1127
  // src/mcp/seastudio/notify/topics.ts
1093
1128
  var SeastudioRequests = {
1094
1129
  /** 请求打开文件 -> 主程序发布 FILE_OPEN_REQUESTED */
@@ -1198,6 +1233,7 @@ var allTools = [
1198
1233
  ];
1199
1234
  var tools = allTools;
1200
1235
 
1236
+ exports.SINGLETON_BROWSER_SESSION_ID = SINGLETON_BROWSER_SESSION_ID;
1201
1237
  exports.SeastudioNotifications = SeastudioNotifications;
1202
1238
  exports.SeastudioRequests = SeastudioRequests;
1203
1239
  exports.agentManagementTools = agentManagementTools;
@@ -528,6 +528,113 @@ var seaCloudTools = [
528
528
  })
529
529
  ];
530
530
 
531
+ // src/mcp/seastudio/tools/browser.ts
532
+ var SINGLETON_BROWSER_SESSION_ID = "browser-session-default";
533
+ var browserSessionIdParam = {
534
+ browserSessionId: {
535
+ type: "string",
536
+ description: "Browser session ID\uFF0C\u53EF\u9009\uFF1B\u7F3A\u7701\u4E3A\u5168\u5C40\u5355\u4F8B browser-session-default\u3002"
537
+ }
538
+ };
539
+ var tabIdParam = {
540
+ tabId: { type: "string", description: "Browser tab ID\u3002close/activate/navigate/goBack/goForward/reload/stop \u9700\u8981\u3002" }
541
+ };
542
+ var browserRuntimeTools = [
543
+ annotateTool({
544
+ name: "seastudio-browser_session",
545
+ description: "\u8BFB\u53D6\u6216\u91CD\u7F6E\u5168\u5C40 Browser Session\uFF08\u5355\u4F8B\u5185\u6838\uFF09\u3002\u4F7F\u7528 action \u9009\u62E9 open\u3001list\u3001get \u6216 close\u3002open/get \u8FD4\u56DE\u540C\u4E00\u4E2A browserSessionId\uFF1Bclose \u4F1A\u6E05\u7A7A\u5168\u90E8 tab \u4F46\u4FDD\u7559 session \u58F3\u3002",
546
+ inputSchema: {
547
+ type: "object",
548
+ properties: {
549
+ action: {
550
+ type: "string",
551
+ enum: ["open", "list", "get", "close"],
552
+ description: "Browser Session \u52A8\u4F5C\u3002\u5168\u5C40\u4EC5\u4E00\u4E2A session\uFF1BbrowserSessionId \u53EF\u9009\u3002"
553
+ },
554
+ ...browserSessionIdParam,
555
+ homepage: { type: "string", description: "open \u7684\u53EF\u9009\u9ED8\u8BA4\u9996\u9875\u3002" }
556
+ },
557
+ required: ["action"]
558
+ }
559
+ }, {
560
+ operationKind: "workflow",
561
+ requiresExecutionEvidence: false,
562
+ rawDomain: "browser"
563
+ }),
564
+ annotateTool({
565
+ name: "seastudio-browser_tab",
566
+ description: "\u7BA1\u7406\u5168\u5C40 Browser Session \u4E2D\u7684 tab\u3002\u4F7F\u7528 action \u9009\u62E9 create\u3001close\u3001activate\u3001navigate\u3001goBack\u3001goForward\u3001reload \u6216 stop\u3002\u6BCF\u4E2A Host Browser \u63D2\u4EF6\u5B9E\u4F8B\u901A\u5E38\u5BF9\u5E94\u4E00\u4E2A ownerInstanceId tab\u3002",
567
+ inputSchema: {
568
+ type: "object",
569
+ properties: {
570
+ action: {
571
+ type: "string",
572
+ enum: ["create", "close", "activate", "navigate", "goBack", "goForward", "reload", "stop"],
573
+ description: "Browser tab \u52A8\u4F5C\u3002browserSessionId \u53EF\u9009\uFF1Bcreate \u53EF\u4F20 ownerInstanceId \u7ED1\u5B9A Host \u63D2\u4EF6\u5B9E\u4F8B\u3002"
574
+ },
575
+ ...browserSessionIdParam,
576
+ ...tabIdParam,
577
+ url: { type: "string", description: "create \u7684\u521D\u59CB URL\uFF0C\u6216 navigate \u7684\u76EE\u6807 URL/\u641C\u7D22\u8BCD\u3002" },
578
+ ownerInstanceId: { type: "string", description: "create \u65F6\u7ED1\u5B9A Host Browser \u63D2\u4EF6 instanceId\u3002" }
579
+ },
580
+ required: ["action"]
581
+ }
582
+ }, {
583
+ operationKind: "mutate",
584
+ requiresExecutionEvidence: false,
585
+ rawDomain: "browser"
586
+ }),
587
+ annotateTool({
588
+ name: "seastudio-browser_runtime",
589
+ description: "\u5904\u7406 Browser runtime \u4E0E UI viewport\u3001\u8BC1\u4E66\u9519\u8BEF\u76F8\u5173\u7684\u5BBF\u4E3B\u4EA4\u4E92\u3002\u4F7F\u7528 action \u9009\u62E9 bindViewport \u6216 respondCertificate\u3002\u901A\u5E38\u7531 Browser \u63D2\u4EF6\u524D\u7AEF\u81EA\u52A8\u8C03\u7528\u3002",
590
+ inputSchema: {
591
+ type: "object",
592
+ properties: {
593
+ action: {
594
+ type: "string",
595
+ enum: ["bindViewport", "respondCertificate"],
596
+ description: "Browser runtime \u52A8\u4F5C\u3002bindViewport \u9700\u8981 rect\uFF1BrespondCertificate \u9700\u8981 requestId \u548C allow\u3002"
597
+ },
598
+ ...browserSessionIdParam,
599
+ ownerInstanceId: { type: "string", description: "bindViewport \u7684 UI owner instance id\u3002" },
600
+ rect: {
601
+ type: "object",
602
+ description: "bindViewport \u7684 UI viewport \u77E9\u5F62\u3002",
603
+ properties: {
604
+ x: { type: "number" },
605
+ y: { type: "number" },
606
+ width: { type: "number" },
607
+ height: { type: "number" }
608
+ },
609
+ required: ["x", "y", "width", "height"]
610
+ },
611
+ requestId: { type: "string", description: "respondCertificate \u7684\u8BC1\u4E66\u9519\u8BEF\u8BF7\u6C42 ID\u3002" },
612
+ allow: { type: "boolean", description: "respondCertificate \u662F\u5426\u7EE7\u7EED\u52A0\u8F7D\u8BE5\u8BC1\u4E66\u9519\u8BEF\u9875\u9762\u3002" }
613
+ },
614
+ required: ["action"]
615
+ }
616
+ }, {
617
+ operationKind: "workflow",
618
+ requiresExecutionEvidence: false,
619
+ rawDomain: "browser"
620
+ }),
621
+ annotateTool({
622
+ name: "seastudio-browser_show",
623
+ description: "\u5728 Browser \u63D2\u4EF6\u4E2D\u663E\u793A\u6307\u5B9A URL\uFF08\u53EF\u89C6\u5316\uFF09\u3002\u4F1A\u6253\u5F00\u6216\u6FC0\u6D3B\u5BF9\u5E94 Host \u6807\u7B7E\u9875\uFF0C\u5E76\u628A\u9875\u9762\u5448\u73B0\u7ED9\u7528\u6237\u3002",
624
+ inputSchema: {
625
+ type: "object",
626
+ properties: {
627
+ url: { type: "string", description: "\u8981\u5728 Browser \u63D2\u4EF6\u4E2D\u663E\u793A\u7684 URL \u6216\u641C\u7D22\u8BCD\u3002" }
628
+ },
629
+ required: ["url"]
630
+ }
631
+ }, {
632
+ operationKind: "workflow",
633
+ requiresExecutionEvidence: false,
634
+ rawDomain: "browser"
635
+ })
636
+ ];
637
+
531
638
  // src/mcp/seastudio/client.ts
532
639
  function parseToolResult(result) {
533
640
  if (result.isError) {
@@ -769,14 +876,22 @@ var seastudio = {
769
876
  session: {
770
877
  open: async (options = {}) => parseToolResult(await callTool("seastudio-browser_session", { action: "open", ...options })),
771
878
  list: async () => parseToolResult(await callTool("seastudio-browser_session", { action: "list" })),
772
- get: async (browserSessionId) => parseToolResult(await callTool("seastudio-browser_session", { action: "get", browserSessionId })),
773
- close: async (browserSessionId) => parseToolResult(
879
+ get: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID) => parseToolResult(await callTool("seastudio-browser_session", { action: "get", browserSessionId })),
880
+ close: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID) => parseToolResult(
774
881
  await callTool("seastudio-browser_session", { action: "close", browserSessionId })
775
882
  )
776
883
  },
884
+ show: async (url) => parseToolResult(
885
+ await callTool("seastudio-browser_show", { url })
886
+ ),
777
887
  tab: {
778
- create: async (browserSessionId, url) => parseToolResult(
779
- await callTool("seastudio-browser_tab", { action: "create", browserSessionId, url })
888
+ create: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID, url, ownerInstanceId) => parseToolResult(
889
+ await callTool("seastudio-browser_tab", {
890
+ action: "create",
891
+ browserSessionId,
892
+ ...url ? { url } : {},
893
+ ...ownerInstanceId ? { ownerInstanceId } : {}
894
+ })
780
895
  ),
781
896
  close: async (browserSessionId, tabId) => parseToolResult(
782
897
  await callTool("seastudio-browser_tab", { action: "close", browserSessionId, tabId })
@@ -790,10 +905,18 @@ var seastudio = {
790
905
  goBack: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "goBack", browserSessionId, tabId })),
791
906
  goForward: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "goForward", browserSessionId, tabId })),
792
907
  reload: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "reload", browserSessionId, tabId })),
793
- stop: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "stop", browserSessionId, tabId }))
908
+ stop: async (browserSessionId, tabId) => parseToolResult(await callTool("seastudio-browser_tab", { action: "stop", browserSessionId, tabId })),
909
+ getOrCreateForInstance: async (ownerInstanceId, url) => parseToolResult(
910
+ await callTool("seastudio-browser_tab", {
911
+ action: "create",
912
+ browserSessionId: SINGLETON_BROWSER_SESSION_ID,
913
+ ownerInstanceId,
914
+ ...url ? { url } : {}
915
+ })
916
+ )
794
917
  },
795
918
  viewport: {
796
- bind: async (browserSessionId, rect, ownerInstanceId) => parseToolResult(
919
+ bind: async (browserSessionId = SINGLETON_BROWSER_SESSION_ID, rect, ownerInstanceId) => parseToolResult(
797
920
  await callTool("seastudio-browser_runtime", {
798
921
  action: "bindViewport",
799
922
  browserSessionId,
@@ -885,6 +1008,7 @@ var pluginTabTools = [
885
1008
  description: "\u63D2\u4EF6\u6807\u7B7E\u9875\u52A8\u4F5C\u3002open/getStatus \u9700\u8981 pluginId\uFF1Bswitch/close \u9700\u8981 instanceId\u3002"
886
1009
  },
887
1010
  pluginId: { type: "string", description: "\u63D2\u4EF6 ID\u3002open\u3001getStatus \u5FC5\u586B\u3002" },
1011
+ url: { type: "string", description: "open Browser \u63D2\u4EF6\u65F6\u53EF\u6307\u5B9A\u521D\u59CB URL\u3002" },
888
1012
  instanceId: { type: "string", description: "\u63D2\u4EF6\u6807\u7B7E\u9875\u5B9E\u4F8B ID\u3002switch\u3001close \u5FC5\u586B\u3002" }
889
1013
  },
890
1014
  required: ["action"]
@@ -998,95 +1122,6 @@ var skillTools = [
998
1122
  })
999
1123
  ];
1000
1124
 
1001
- // src/mcp/seastudio/tools/browser.ts
1002
- var browserSessionIdParam = {
1003
- browserSessionId: { type: "string", description: "Browser session ID\u3002get/close/tab/runtime \u52A8\u4F5C\u9700\u8981\u3002\u8981\u628A\u7F51\u9875\u753B\u9762\u663E\u793A\u5230 Browser \u63D2\u4EF6\u4E2D\uFF0C\u4E5F\u9700\u8981\u628A\u8FD9\u4E2A ID \u4F20\u7ED9 browser \u63D2\u4EF6\u7684 MCP \u5DE5\u5177\u3002" }
1004
- };
1005
- var tabIdParam = {
1006
- tabId: { type: "string", description: "Browser tab ID\u3002close/activate/navigate/goBack/goForward/reload/stop \u9700\u8981\u3002" }
1007
- };
1008
- var browserRuntimeTools = [
1009
- annotateTool({
1010
- name: "seastudio-browser_session",
1011
- description: "\u521B\u5EFA\u3001\u5217\u51FA\u3001\u8BFB\u53D6\u6216\u5173\u95ED Browser Session\u3002\u4F7F\u7528 action \u9009\u62E9 open\u3001list\u3001get \u6216 close\u3002\u6CE8\u610F\uFF1A\u672C\u5DE5\u5177\u53EA\u7BA1\u7406\u4F1A\u8BDD\u6570\u636E\u548C tab\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u628A\u7F51\u9875\u753B\u9762\u663E\u793A\u5230 UI\uFF1B\u5982\u679C\u7528\u6237\u9700\u8981\u201C\u6253\u5F00\u6D4F\u89C8\u5668/\u663E\u793A\u7F51\u9875/\u8BA9\u6211\u770B\u5230\u9875\u9762\u201D\uFF0C\u5E94\u5148\u6253\u5F00 Browser \u63D2\u4EF6\u6807\u7B7E\u9875\uFF08seastudio.browser\uFF09\uFF0C\u518D\u8C03\u7528\u8BE5\u63D2\u4EF6\u7684 MCP \u5DE5\u5177\u628A browserSessionId \u4EA4\u7ED9\u63D2\u4EF6\u5B9E\u4F8B\u663E\u793A\u3002",
1012
- inputSchema: {
1013
- type: "object",
1014
- properties: {
1015
- action: {
1016
- type: "string",
1017
- enum: ["open", "list", "get", "close"],
1018
- description: "Browser Session \u52A8\u4F5C\u3002get/close \u9700\u8981 browserSessionId\u3002open \u8FD4\u56DE\u7684 browserSessionId \u53EF\u7EE7\u7EED\u7528\u4E8E tab \u64CD\u4F5C\uFF1B\u82E5\u8981\u663E\u793A\u7F51\u9875\u753B\u9762\uFF0C\u8FD8\u8981\u4F20\u7ED9 Browser \u63D2\u4EF6 MCP\u3002"
1019
- },
1020
- ...browserSessionIdParam,
1021
- label: { type: "string", description: "open \u7684\u53EF\u9009 session \u663E\u793A\u540D\u79F0\u3002\u5EFA\u8BAE\u4F7F\u7528\u80FD\u8BF4\u660E\u7528\u9014\u7684\u540D\u79F0\uFF0CBrowser \u63D2\u4EF6\u63A5\u7BA1\u5DF2\u6709 session \u65F6\u4F1A\u663E\u793A\u5BF9\u5E94\u4F1A\u8BDD\u3002" },
1022
- partitionKey: { type: "string", description: "open \u7684\u53EF\u9009\u7F51\u7AD9\u6570\u636E\u5206\u533A key\uFF1B\u76F8\u540C key \u5171\u4EAB cookie/localStorage\u3002" },
1023
- homepage: { type: "string", description: "open \u7684\u53EF\u9009\u9ED8\u8BA4\u9996\u9875\u3002" }
1024
- },
1025
- required: ["action"]
1026
- }
1027
- }, {
1028
- operationKind: "workflow",
1029
- requiresExecutionEvidence: false,
1030
- rawDomain: "browser"
1031
- }),
1032
- annotateTool({
1033
- name: "seastudio-browser_tab",
1034
- description: "\u7BA1\u7406 Browser Session \u4E2D\u7684 tab\uFF0C\u5305\u62EC\u521B\u5EFA\u3001\u5BFC\u822A\u3001\u6FC0\u6D3B\u548C\u52A0\u8F7D\u63A7\u5236\u3002\u4F7F\u7528 action \u9009\u62E9 create\u3001close\u3001activate\u3001navigate\u3001goBack\u3001goForward\u3001reload \u6216 stop\u3002\u6CE8\u610F\uFF1Atab \u64CD\u4F5C\u53EA\u6539\u53D8\u6D4F\u89C8\u5668\u4F1A\u8BDD\u72B6\u6001\uFF1B\u82E5\u7528\u6237\u9700\u8981\u770B\u5230\u7F51\u9875\u5185\u5BB9\uFF0C\u9700\u8981\u540C\u65F6\u628A browserSessionId \u4EA4\u7ED9 Browser \u63D2\u4EF6 MCP \u5DE5\u5177\u5728\u63D2\u4EF6 viewport \u4E2D\u663E\u793A\u3002",
1035
- inputSchema: {
1036
- type: "object",
1037
- properties: {
1038
- action: {
1039
- type: "string",
1040
- enum: ["create", "close", "activate", "navigate", "goBack", "goForward", "reload", "stop"],
1041
- description: "Browser tab \u52A8\u4F5C\u3002\u6240\u6709\u52A8\u4F5C\u9700\u8981 browserSessionId\uFF1B\u9664 create \u5916\u901A\u5E38\u9700\u8981 tabId\uFF1Bnavigate \u8FD8\u9700\u8981 url\u3002create/navigate \u540E\u5982\u9700\u5C55\u793A\u9875\u9762\uFF0C\u5E94\u8C03\u7528 Browser \u63D2\u4EF6 MCP \u63A5\u7BA1\u540C\u4E00\u4E2A browserSessionId\u3002"
1042
- },
1043
- ...browserSessionIdParam,
1044
- ...tabIdParam,
1045
- url: { type: "string", description: "create \u7684\u521D\u59CB URL\uFF0C\u6216 navigate \u7684\u76EE\u6807 URL/\u641C\u7D22\u8BCD\u3002" }
1046
- },
1047
- required: ["action", "browserSessionId"]
1048
- }
1049
- }, {
1050
- operationKind: "mutate",
1051
- requiresExecutionEvidence: false,
1052
- rawDomain: "browser"
1053
- }),
1054
- annotateTool({
1055
- name: "seastudio-browser_runtime",
1056
- description: "\u5904\u7406 Browser runtime \u4E0E UI viewport\u3001\u8BC1\u4E66\u9519\u8BEF\u76F8\u5173\u7684\u5BBF\u4E3B\u4EA4\u4E92\u3002\u4F7F\u7528 action \u9009\u62E9 bindViewport \u6216 respondCertificate\u3002\u901A\u5E38\u7531 Browser \u63D2\u4EF6\u524D\u7AEF\u81EA\u52A8\u8C03\u7528\uFF1B\u5916\u90E8 agent \u60F3\u8BA9\u7528\u6237\u770B\u5230\u9875\u9762\u65F6\uFF0C\u4E0D\u5E94\u76F4\u63A5\u731C rect\uFF0C\u800C\u5E94\u6253\u5F00 Browser \u63D2\u4EF6\u5E76\u8C03\u7528\u63D2\u4EF6 MCP \u5DE5\u5177\u63A5\u7BA1 browserSessionId\u3002",
1057
- inputSchema: {
1058
- type: "object",
1059
- properties: {
1060
- action: {
1061
- type: "string",
1062
- enum: ["bindViewport", "respondCertificate"],
1063
- description: "Browser runtime \u52A8\u4F5C\u3002bindViewport \u9700\u8981 rect\uFF1BrespondCertificate \u9700\u8981 requestId \u548C allow\u3002"
1064
- },
1065
- ...browserSessionIdParam,
1066
- ownerInstanceId: { type: "string", description: "bindViewport \u7684\u53EF\u9009 UI owner instance id\u3002" },
1067
- rect: {
1068
- type: "object",
1069
- description: "bindViewport \u7684 UI viewport \u77E9\u5F62\u3002",
1070
- properties: {
1071
- x: { type: "number" },
1072
- y: { type: "number" },
1073
- width: { type: "number" },
1074
- height: { type: "number" }
1075
- },
1076
- required: ["x", "y", "width", "height"]
1077
- },
1078
- requestId: { type: "string", description: "respondCertificate \u7684\u8BC1\u4E66\u9519\u8BEF\u8BF7\u6C42 ID\u3002" },
1079
- allow: { type: "boolean", description: "respondCertificate \u662F\u5426\u7EE7\u7EED\u52A0\u8F7D\u8BE5\u8BC1\u4E66\u9519\u8BEF\u9875\u9762\u3002" }
1080
- },
1081
- required: ["action", "browserSessionId"]
1082
- }
1083
- }, {
1084
- operationKind: "workflow",
1085
- requiresExecutionEvidence: false,
1086
- rawDomain: "browser"
1087
- })
1088
- ];
1089
-
1090
1125
  // src/mcp/seastudio/notify/topics.ts
1091
1126
  var SeastudioRequests = {
1092
1127
  /** 请求打开文件 -> 主程序发布 FILE_OPEN_REQUESTED */
@@ -1196,4 +1231,4 @@ var allTools = [
1196
1231
  ];
1197
1232
  var tools = allTools;
1198
1233
 
1199
- export { SeastudioNotifications, SeastudioRequests, agentManagementTools, agentTabTools, allTools, annotateTool, batchFlattenCopyEvidenceOutputSchema, browserRuntimeTools, callTool, callToolText, dualPathEvidenceOutputSchema, editorTools, fileDownloadEvidenceOutputSchema, fileTools, fileUrlEvidenceOutputSchema, gitTools, pluginManagementTools, pluginTabTools, projectTools, request, rootedPathEvidenceOutputSchema, rootedWriteEvidenceOutputSchema, runOneShotShellCommand, seaCloudTools, seastudio, shellSessionCloseEvidenceOutputSchema, shellSessionOpenEvidenceOutputSchema, shellSessionRunEvidenceOutputSchema, shellSessionSignalEvidenceOutputSchema, shellSessionSnapshotEvidenceOutputSchema, shellTools, skillTools, tools };
1234
+ export { SINGLETON_BROWSER_SESSION_ID, SeastudioNotifications, SeastudioRequests, agentManagementTools, agentTabTools, allTools, annotateTool, batchFlattenCopyEvidenceOutputSchema, browserRuntimeTools, callTool, callToolText, dualPathEvidenceOutputSchema, editorTools, fileDownloadEvidenceOutputSchema, fileTools, fileUrlEvidenceOutputSchema, gitTools, pluginManagementTools, pluginTabTools, projectTools, request, rootedPathEvidenceOutputSchema, rootedWriteEvidenceOutputSchema, runOneShotShellCommand, seaCloudTools, seastudio, shellSessionCloseEvidenceOutputSchema, shellSessionOpenEvidenceOutputSchema, shellSessionRunEvidenceOutputSchema, shellSessionSignalEvidenceOutputSchema, shellSessionSnapshotEvidenceOutputSchema, shellTools, skillTools, tools };