aws-runtime-bridge 1.9.120 → 1.9.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/AcodeSdkAdapter.d.ts +18 -0
- package/dist/adapter/AcodeSdkAdapter.js +5 -5
- package/dist/adapter/types.d.ts +4 -0
- package/dist/adapter/types.js +1 -1
- package/dist/browser/browser-ws-bridge.js +3 -3
- package/dist/browser/built-in-browser-tools.js +1 -1
- package/dist/desktop/built-in-desktop-tools.d.ts +49 -0
- package/dist/desktop/built-in-desktop-tools.js +2 -0
- package/dist/desktop/desktop-mcp-client.d.ts +47 -0
- package/dist/desktop/desktop-mcp-client.js +3 -0
- package/dist/index.js +1 -1
- package/dist/remote-desktop/index.js +2 -2
- package/dist/routes/dashboard.js +521 -17
- package/dist/routes/git.d.ts +39 -0
- package/dist/routes/git.js +33 -25
- package/dist/routes/instance.js +1 -1
- package/dist/routes/jdks.d.ts +2 -0
- package/dist/routes/jdks.js +2 -0
- package/dist/routes/launch.d.ts +6 -0
- package/dist/routes/launch.js +30 -0
- package/dist/routes/pty.js +3 -3
- package/dist/routes/runtime-binding.js +1 -1
- package/dist/routes/terminal.js +30 -30
- package/dist/services/access-control.d.ts +18 -0
- package/dist/services/access-control.js +5 -0
- package/dist/services/agent-process-manager.js +1 -1
- package/dist/services/auto-register.js +1 -1
- package/dist/services/change-cache-retention.d.ts +5 -0
- package/dist/services/change-cache-retention.js +2 -0
- package/dist/services/desktop-mcp-manager.d.ts +47 -0
- package/dist/services/desktop-mcp-manager.js +2 -0
- package/dist/services/instance-features.d.ts +6 -0
- package/dist/services/instance-features.js +1 -1
- package/dist/services/jdk-scanner.d.ts +20 -0
- package/dist/services/jdk-scanner.js +2 -0
- package/dist/services/launch-manager.d.ts +181 -0
- package/dist/services/launch-manager.js +12 -0
- package/dist/services/launch-metrics.d.ts +89 -0
- package/dist/services/launch-metrics.js +4 -0
- package/dist/services/launch-streams.d.ts +24 -0
- package/dist/services/launch-streams.js +11 -0
- package/dist/services/mcp-launch-binding-queue.js +1 -1
- package/dist/services/panel-auth.d.ts +11 -1
- package/dist/services/panel-auth.js +1 -1
- package/dist/services/panel-env.d.ts +5 -0
- package/dist/services/panel-env.js +2 -0
- package/dist/services/port-detector.d.ts +3 -0
- package/dist/services/port-detector.js +6 -0
- package/dist/services/runtime-lifecycle-policy.d.ts +1 -0
- package/dist/services/runtime-lifecycle-policy.js +1 -1
- package/dist/services/system-metrics.js +1 -1
- package/dist/services/tunnel-client.d.ts +4 -0
- package/dist/services/tunnel-client.js +1 -1
- package/dist/services/workspace-files.d.ts +3 -0
- package/dist/services/workspace-files.js +1 -1
- package/dist/services/workspaceTaskChangeWatcher.d.ts +2 -0
- package/dist/services/workspaceTaskChangeWatcher.js +3 -3
- package/dist/utils/config-write-queue.d.ts +3 -0
- package/dist/utils/config-write-queue.js +2 -0
- package/package/acode/dist/built-in-file-tools.d.ts +2 -0
- package/package/acode/dist/runtime.d.ts +20 -0
- package/package/acode/dist/runtime.js +27 -27
- package/package/acode/dist/sub-agent-manager.d.ts +4 -0
- package/package/acode/dist/sub-agent-manager.js +1 -1
- package/package/acode/dist/sub-agent-tools.d.ts +6 -0
- package/package/acode/dist/sub-agent-tools.js +39 -10
- package/package/acode/dist/sub-agent-types.d.ts +2 -0
- package/package/acode/dist/tool-allocation.d.ts +55 -0
- package/package/acode/dist/tool-allocation.js +2 -0
- package/package/acode/dist/types.d.ts +6 -0
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +24 -0
- package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.test.js +19 -5
- package/package/aws-client-agent-mcp/dist/context-manager.test.js +6 -6
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/http-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/index.js +1 -1
- package/package/aws-client-agent-mcp/dist/launch-config-tools.test.d.ts +1 -0
- package/package/aws-client-agent-mcp/dist/launch-config-tools.test.js +106 -0
- package/package/aws-client-agent-mcp/dist/logger.d.ts +4 -0
- package/package/aws-client-agent-mcp/dist/logger.js +2 -2
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +21 -0
- package/package/aws-client-agent-mcp/dist/mcp-server.js +25 -25
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +24 -16
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +20 -0
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +8 -8
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +55 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js +5 -1
- package/package/aws-client-agent-mcp/dist/parent-lifecycle.d.ts +10 -0
- package/package/aws-client-agent-mcp/dist/parent-lifecycle.js +2 -0
- package/package/aws-client-agent-mcp/dist/parent-lifecycle.test.d.ts +1 -0
- package/package/aws-client-agent-mcp/dist/parent-lifecycle.test.js +81 -0
- package/package/aws-client-agent-mcp/dist/status-reporter.js +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +4 -0
- package/package/aws-client-agent-mcp/dist/watchdog-worker.d.ts +1 -0
- package/package/aws-client-agent-mcp/dist/watchdog-worker.js +3 -0
- package/package/aws-client-agent-mcp/dist/watchdog.d.ts +17 -0
- package/package/aws-client-agent-mcp/dist/watchdog.js +2 -0
- package/package/aws-client-agent-mcp/dist/watchdog.test.d.ts +1 -0
- package/package/aws-client-agent-mcp/dist/watchdog.test.js +124 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +4 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.test.js +83 -6
- package/package/aws-client-agent-mcp/package.json +1 -1
- package/package.json +2 -1
|
@@ -35,7 +35,7 @@ async function withMemoryServer(callback) {
|
|
|
35
35
|
return await callback(server);
|
|
36
36
|
}
|
|
37
37
|
finally {
|
|
38
|
-
await rm(dir, { recursive: true, force: true });
|
|
38
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
async function withScopedMemoryServers(callback) {
|
|
@@ -50,7 +50,7 @@ async function withScopedMemoryServers(callback) {
|
|
|
50
50
|
return await callback(firstServer, secondServer);
|
|
51
51
|
}
|
|
52
52
|
finally {
|
|
53
|
-
await rm(dir, { recursive: true, force: true });
|
|
53
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
function getHandleToolCall(server) {
|
|
@@ -782,7 +782,7 @@ describe("McpServer memory store paths", () => {
|
|
|
782
782
|
assert.equal(paths.instancePath, path.join(dir, ".agentswork", "memory", "server-managed"));
|
|
783
783
|
}
|
|
784
784
|
finally {
|
|
785
|
-
await rm(dir, { recursive: true, force: true });
|
|
785
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
786
786
|
}
|
|
787
787
|
});
|
|
788
788
|
it("falls back to a default role memory directory when role name is blank", async () => {
|
|
@@ -799,7 +799,7 @@ describe("McpServer memory store paths", () => {
|
|
|
799
799
|
assert.equal(paths.rolePath, path.join(dir, ".agentswork", "memory", "memory", "default-role"));
|
|
800
800
|
}
|
|
801
801
|
finally {
|
|
802
|
-
await rm(dir, { recursive: true, force: true });
|
|
802
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
803
803
|
}
|
|
804
804
|
});
|
|
805
805
|
});
|
|
@@ -969,30 +969,38 @@ describe("McpServer memory tools", () => {
|
|
|
969
969
|
}), /Invalid memory_type/);
|
|
970
970
|
});
|
|
971
971
|
});
|
|
972
|
-
it("
|
|
972
|
+
it("stores memories in the instance store and isolates them between agent instances", async () => {
|
|
973
973
|
await withScopedMemoryServers(async (firstServer, secondServer) => {
|
|
974
974
|
const firstHandleToolCall = getHandleToolCall(firstServer);
|
|
975
975
|
const secondHandleToolCall = getHandleToolCall(secondServer);
|
|
976
976
|
await firstHandleToolCall.call(firstServer, "create_memory", {
|
|
977
977
|
memory_type: "project_memory",
|
|
978
978
|
uri: "core://role/shared-profile",
|
|
979
|
-
content: "
|
|
979
|
+
content: "long-term memory of instance one",
|
|
980
980
|
});
|
|
981
981
|
await firstHandleToolCall.call(firstServer, "create_memory", {
|
|
982
982
|
memory_type: "agent_memory",
|
|
983
983
|
uri: "recent://instance/private-context",
|
|
984
984
|
content: "agent one private context",
|
|
985
985
|
});
|
|
986
|
-
|
|
986
|
+
// 当前架构:记忆统一落在实例 store(跨实例共享由服务端 ServerMemoryStore 承担),
|
|
987
|
+
// 另一个实例本地读不到第一条实例的任何记忆
|
|
988
|
+
const roleMemoryFromSecond = await secondHandleToolCall.call(secondServer, "read_memory", {
|
|
987
989
|
uri: "core://role/shared-profile",
|
|
988
990
|
memory_type: "project_memory",
|
|
989
991
|
});
|
|
990
|
-
const
|
|
992
|
+
const recentMemoryFromSecond = await secondHandleToolCall.call(secondServer, "read_memory", {
|
|
991
993
|
uri: "recent://instance/private-context",
|
|
992
994
|
memory_type: "agent_memory",
|
|
993
995
|
});
|
|
994
|
-
assert.equal(
|
|
995
|
-
assert.equal(
|
|
996
|
+
assert.equal(roleMemoryFromSecond, null);
|
|
997
|
+
assert.equal(recentMemoryFromSecond, null);
|
|
998
|
+
// 写入实例自己可以正常读回
|
|
999
|
+
const ownRoleMemory = await firstHandleToolCall.call(firstServer, "read_memory", {
|
|
1000
|
+
uri: "core://role/shared-profile",
|
|
1001
|
+
memory_type: "project_memory",
|
|
1002
|
+
});
|
|
1003
|
+
assert.equal(ownRoleMemory.content, "long-term memory of instance one");
|
|
996
1004
|
});
|
|
997
1005
|
});
|
|
998
1006
|
it("returns memory stats through MCP dispatch", async () => {
|
|
@@ -1052,13 +1060,13 @@ describe("McpServer memory tools", () => {
|
|
|
1052
1060
|
it("reports existing combined memory stats after auto registration", async () => {
|
|
1053
1061
|
await withMemoryServer(async (server) => {
|
|
1054
1062
|
const reportedStats = [];
|
|
1055
|
-
|
|
1056
|
-
|
|
1063
|
+
// 当前架构:统计只来自实例 store(roleMemoryStore 合并统计已随双库架构移除)
|
|
1064
|
+
const instanceStore = Reflect.get(server, "memoryStore");
|
|
1065
|
+
await instanceStore.createMemory({
|
|
1057
1066
|
memory_type: "project_memory",
|
|
1058
1067
|
uri: "project://test-aws/existing-permanent-memory",
|
|
1059
1068
|
content: "existing role memory should be visible on dashboard startup",
|
|
1060
1069
|
});
|
|
1061
|
-
// hasRoleName=true 使 reportCombinedMemoryStats 合并 roleMemoryStore 统计;
|
|
1062
1070
|
// profileSynced=true 阻止 activelySyncProfile 异步调用 getProfile(mock 缺失该方法);
|
|
1063
1071
|
// maybeSyncPermanentMemoryToServer 覆盖为空函数避免异步操作干扰 tmpdir cleanup。
|
|
1064
1072
|
Reflect.set(server, "hasRoleName", true);
|
|
@@ -1456,7 +1464,7 @@ describe("McpServer memory tools", () => {
|
|
|
1456
1464
|
else {
|
|
1457
1465
|
process.env.AWS_WORKSPACE_PATH = previousWorkspacePath;
|
|
1458
1466
|
}
|
|
1459
|
-
await rm(dir, { recursive: true, force: true });
|
|
1467
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
1460
1468
|
}
|
|
1461
1469
|
});
|
|
1462
1470
|
it("rejects create_memory with mixed existing and non-existent bound files", async () => {
|
|
@@ -1483,7 +1491,7 @@ describe("McpServer memory tools", () => {
|
|
|
1483
1491
|
else {
|
|
1484
1492
|
process.env.AWS_WORKSPACE_PATH = previousWorkspacePath;
|
|
1485
1493
|
}
|
|
1486
|
-
await rm(dir, { recursive: true, force: true });
|
|
1494
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
1487
1495
|
}
|
|
1488
1496
|
});
|
|
1489
1497
|
it("allows update_memory without bound_files when existing bound files are absent", async () => {
|
|
@@ -1532,7 +1540,7 @@ describe("McpServer memory tools", () => {
|
|
|
1532
1540
|
else {
|
|
1533
1541
|
process.env.AWS_WORKSPACE_PATH = previousWorkspacePath;
|
|
1534
1542
|
}
|
|
1535
|
-
await rm(dir, { recursive: true, force: true });
|
|
1543
|
+
await rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
1536
1544
|
}
|
|
1537
1545
|
});
|
|
1538
1546
|
});
|
|
@@ -46,4 +46,24 @@ export declare const QUERY_FILE_CHANGES_HISTORY_TOOL: Tool;
|
|
|
46
46
|
|
|
47
47
|
export declare const MEMORY_TOOL_NAMES: ReadonlySet<string>;
|
|
48
48
|
|
|
49
|
+
export declare const LAUNCH_CONFIG_LIST_TOOL: Tool;
|
|
50
|
+
|
|
51
|
+
export declare const LAUNCH_CONFIG_CREATE_TOOL: Tool;
|
|
52
|
+
|
|
53
|
+
export declare const LAUNCH_CONFIG_UPDATE_TOOL: Tool;
|
|
54
|
+
|
|
55
|
+
export declare const LAUNCH_CONFIG_DELETE_TOOL: Tool;
|
|
56
|
+
|
|
57
|
+
export declare const LAUNCH_CONFIG_START_TOOL: Tool;
|
|
58
|
+
|
|
59
|
+
export declare const LAUNCH_CONFIG_RESTART_TOOL: Tool;
|
|
60
|
+
|
|
61
|
+
export declare const LAUNCH_CONFIG_STOP_TOOL: Tool;
|
|
62
|
+
|
|
63
|
+
export declare const LAUNCH_CONFIG_LOGS_TOOL: Tool;
|
|
64
|
+
|
|
65
|
+
export declare const LAUNCH_CONFIG_STATUS_TOOL: Tool;
|
|
66
|
+
|
|
67
|
+
export declare const LAUNCH_CONFIG_TOOL_NAMES: ReadonlySet<string>;
|
|
68
|
+
|
|
49
69
|
export declare const MCP_TOOLS: Tool[];
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import{CREATE_MEMORY_TOOL as e,DELETE_MEMORY_TOOL as t,GET_MEMORY_STATS_TOOL as
|
|
1
|
+
import{CREATE_MEMORY_TOOL as e,DELETE_MEMORY_TOOL as t,GET_MEMORY_STATS_TOOL as i,LIST_MEMORIES_TOOL as n,READ_MEMORY_TOOL as r,SEARCH_MEMORY_TOOL as o,UPDATE_MEMORY_TOOL as p,LIST_MEMORIES_BY_FILE_TOOL as s,ABANDON_MEMORY_UPDATE_TOOL as c,MEMORY_RECURRENCE_TOOL as a,MEMORY_RECURRENCE_COMPLETE_TOOL as d}from"./memory-tools.js";import{CREATE_MEMORY_TOOL as V,DELETE_MEMORY_TOOL as W,GET_MEMORY_STATS_TOOL as $,LIST_MEMORIES_TOOL as Q,READ_MEMORY_TOOL as z,SEARCH_MEMORY_TOOL as X,UPDATE_MEMORY_TOOL as Z,LIST_MEMORIES_BY_FILE_TOOL as ee,ABANDON_MEMORY_UPDATE_TOOL as te,MEMORY_RECURRENCE_TOOL as ie,MEMORY_RECURRENCE_COMPLETE_TOOL as ne}from"./memory-tools.js";const _={name:"get_colleague",description:"\u83B7\u53D6\u5F53\u524D Agent \u53EF\u89C1\u7684\u540C\u4E8B Agent \u5217\u8868\uFF0C\u5305\u542B\u5728\u7EBF\u548C\u79BB\u7EBF\u72B6\u6001\u3002\u6BCF\u4E2A\u540C\u4E8B\u8FD4\u56DE id\u3001\u89D2\u8272ID\uFF08roleId\uFF09\u3001\u89D2\u8272\u540D\u79F0\uFF08roleName\uFF09\u3001\u9879\u76EEID\uFF1B\u914D\u5408 query_file_changes_history \u53EF\u6309\u540C\u4E8B\u7684 roleId/agentId \u8FC7\u6EE4\u67E5\u8BE2\u5176\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\u3002",inputSchema:{type:"object",properties:{},required:[]}},g={name:"get_group_rooms",description:"\u83B7\u53D6\u5F53\u524D Agent \u5728\u5173\u7CFB\u56FE\u4E2D\u53EF\u53D1\u73B0\u7684\u7FA4\u7EC4\u5217\u8868\uFF0C\u5305\u62EC\u9879\u76EE\u516C\u5171\u7FA4\u804A\u4EE5\u53CA\u81EA\u5DF1\u6240\u5728\u7684\u5C0F\u7EC4\u7FA4\u3002",inputSchema:{type:"object",properties:{},required:[]}},m={name:"get_profile",description:`\u83B7\u53D6\u5F53\u524D Agent \u7684\u4E2A\u4EBA\u4FE1\u606F\uFF0C\u5305\u62EC ID\u3001\u89D2\u8272 ID/\u540D\u79F0\u3001\u663E\u793A\u540D\u79F0\u3001\u63D0\u793A\u8BCD\u7B49\u3002
|
|
2
2
|
|
|
3
3
|
\u3010\u7CFB\u7EDF\u63D0\u793A\u8BCD\u5206\u5C42\u7ED3\u6784\u3011
|
|
4
4
|
\u8FD4\u56DE\u7684 prompt \u5B57\u6BB5\u662F\u89D2\u8272/\u5B9E\u4F8B\u63D0\u793A\u8BCD\uFF08System 2\uFF09\uFF0CglobalAgentPrompt \u662F\u5168\u5C40\u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF08System 1\uFF09\u3002
|
|
5
5
|
\u4E09\u5C42\u63D0\u793A\u8BCD\uFF08\u5168\u5C40\u2192\u89D2\u8272\u2192\u8BB0\u5FC6\uFF09\u7531 runtime adapter \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C
|
|
6
6
|
ACode \u76F4\u63A5\u6CE8\u5165\u4E3A\u524D\u4E09\u6761 system role \u6D88\u606F\uFF0COpenCode/Claude \u5408\u5E76\u4E3A\u4E00\u6761 system prompt\u3002
|
|
7
|
-
MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE systemMessages\u3002`,inputSchema:{type:"object",properties:{},required:[]}},y={name:"hire_colleague",description:"\u5411\u4EBA\u4E8B\u90E8\u53D1\u8D77\u62DB\u8058\u540C\u4E8B\u8BF7\u6C42\uFF0C\u76F4\u63A5\u6309\u521B\u5EFA\u89D2\u8272\u5B9E\u4F8B\u6240\u9700\u53C2\u6570\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684 Agent \u540C\u4E8B\u3002",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF0C\u4E0D\u4F20\u65F6\u7531\u670D\u52A1\u7AEF\u6309\u9ED8\u8BA4\u903B\u8F91\u5904\u7406\u3002"},roleName:{type:"string",description:"\u89D2\u8272\u540D\u3002\u4E0E newRoleName \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\u6309\u670D\u52A1\u7AEF\u73B0\u6709\u521B\u5EFA\u89C4\u5219\u5904\u7406\u3002"},newRoleName:{type:"string",description:"\u65B0\u89D2\u8272\u540D\u3002\u7528\u4E8E\u9700\u8981\u663E\u5F0F\u521B\u5EFA\u65B0\u89D2\u8272\u5B9E\u4F8B\u65F6\u4F20\u5165\u3002"},displayName:{type:"string",description:"\u65B0\u540C\u4E8B\u663E\u793A\u540D\u3002"},prompt:{type:"string",description:"\u65B0\u540C\u4E8B\u804C\u8D23\u8BF4\u660E\u6216\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3002"},workspacePath:{type:"string",description:"\u65B0\u540C\u4E8B\u5DE5\u4F5C\u76EE\u5F55\u3002"},myYmlPath:{type:"string",description:"my.yml \u8DEF\u5F84\uFF0C\u53EF\u9009\u3002"},myYmlContent:{type:"string",description:"my.yml \u5185\u5BB9\uFF0C\u53EF\u9009\u3002"},runtimeSkillEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 skill\u3002"},runtimeMcpEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 MCP\u3002"},runtimeCcSwitchEnabledTools:{type:"string",description:"\u521D\u59CB\u5316\u542F\u7528\u7684\u5DE5\u5177\u5217\u8868 JSON \u5B57\u7B26\u4E32\u3002"}},required:["workspacePath"]}},
|
|
7
|
+
MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE systemMessages\u3002`,inputSchema:{type:"object",properties:{},required:[]}},y={name:"hire_colleague",description:"\u5411\u4EBA\u4E8B\u90E8\u53D1\u8D77\u62DB\u8058\u540C\u4E8B\u8BF7\u6C42\uFF0C\u76F4\u63A5\u6309\u521B\u5EFA\u89D2\u8272\u5B9E\u4F8B\u6240\u9700\u53C2\u6570\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684 Agent \u540C\u4E8B\u3002",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF0C\u4E0D\u4F20\u65F6\u7531\u670D\u52A1\u7AEF\u6309\u9ED8\u8BA4\u903B\u8F91\u5904\u7406\u3002"},roleName:{type:"string",description:"\u89D2\u8272\u540D\u3002\u4E0E newRoleName \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\u6309\u670D\u52A1\u7AEF\u73B0\u6709\u521B\u5EFA\u89C4\u5219\u5904\u7406\u3002"},newRoleName:{type:"string",description:"\u65B0\u89D2\u8272\u540D\u3002\u7528\u4E8E\u9700\u8981\u663E\u5F0F\u521B\u5EFA\u65B0\u89D2\u8272\u5B9E\u4F8B\u65F6\u4F20\u5165\u3002"},displayName:{type:"string",description:"\u65B0\u540C\u4E8B\u663E\u793A\u540D\u3002"},prompt:{type:"string",description:"\u65B0\u540C\u4E8B\u804C\u8D23\u8BF4\u660E\u6216\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3002"},workspacePath:{type:"string",description:"\u65B0\u540C\u4E8B\u5DE5\u4F5C\u76EE\u5F55\u3002"},myYmlPath:{type:"string",description:"my.yml \u8DEF\u5F84\uFF0C\u53EF\u9009\u3002"},myYmlContent:{type:"string",description:"my.yml \u5185\u5BB9\uFF0C\u53EF\u9009\u3002"},runtimeSkillEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 skill\u3002"},runtimeMcpEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 MCP\u3002"},runtimeCcSwitchEnabledTools:{type:"string",description:"\u521D\u59CB\u5316\u542F\u7528\u7684\u5DE5\u5177\u5217\u8868 JSON \u5B57\u7B26\u4E32\u3002"}},required:["workspacePath"]}},u={name:"hire_colleagues_batch",description:"\u5411\u4EBA\u4E8B\u90E8\u53D1\u8D77\u6279\u91CF\u62DB\u8058\u540C\u4E8B\u8BF7\u6C42\uFF0C\u4E00\u6B21\u63D0\u4EA4\u591A\u4E2A\u5F85\u5BA1\u6279\u62DB\u8058\u9879\uFF0C\u7531\u5BA1\u6279\u4EBA\u9010\u9879\u6279\u51C6\u6216\u62D2\u7EDD\u540E\u7EDF\u4E00\u8FD4\u56DE\u7ED3\u679C\u3002",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF0C\u4E0D\u4F20\u65F6\u7531\u670D\u52A1\u7AEF\u6309\u9ED8\u8BA4\u903B\u8F91\u5904\u7406\u3002"},items:{type:"array",description:"\u5F85\u6279\u91CF\u62DB\u8058\u7684\u540C\u4E8B\u5217\u8868\u3002\u6BCF\u4E00\u9879\u5BF9\u5E94\u4E00\u4E2A\u5F85\u5BA1\u6279\u7684\u62DB\u8058\u8BF7\u6C42\u3002",items:{type:"object",properties:{roleName:{type:"string",description:"\u89D2\u8272\u540D\u3002\u4E0E newRoleName \u4E8C\u9009\u4E00\uFF0C\u4F18\u5148\u6309\u670D\u52A1\u7AEF\u73B0\u6709\u521B\u5EFA\u89C4\u5219\u5904\u7406\u3002"},newRoleName:{type:"string",description:"\u65B0\u89D2\u8272\u540D\u3002\u7528\u4E8E\u9700\u8981\u663E\u5F0F\u521B\u5EFA\u65B0\u89D2\u8272\u5B9E\u4F8B\u65F6\u4F20\u5165\u3002"},displayName:{type:"string",description:"\u65B0\u540C\u4E8B\u663E\u793A\u540D\u3002"},prompt:{type:"string",description:"\u65B0\u540C\u4E8B\u804C\u8D23\u8BF4\u660E\u6216\u7CFB\u7EDF\u63D0\u793A\u8BCD\u3002"},workspacePath:{type:"string",description:"\u65B0\u540C\u4E8B\u5DE5\u4F5C\u76EE\u5F55\u3002"},myYmlPath:{type:"string",description:"my.yml \u8DEF\u5F84\uFF0C\u53EF\u9009\u3002"},myYmlContent:{type:"string",description:"my.yml \u5185\u5BB9\uFF0C\u53EF\u9009\u3002"},runtimeSkillEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 skill\u3002"},runtimeMcpEnabled:{type:"boolean",description:"\u662F\u5426\u542F\u7528 MCP\u3002"},runtimeCcSwitchEnabledTools:{type:"string",description:"\u521D\u59CB\u5316\u542F\u7528\u7684\u5DE5\u5177\u5217\u8868 JSON \u5B57\u7B26\u4E32\u3002"}},required:["workspacePath"]},minItems:1}},required:["items"]}},O={name:"send_group",description:"\u5411\u516C\u5171\u7FA4\u804A\u53D1\u9001\u6D88\u606F\uFF0C\u6240\u6709\u5728\u7EBF\u53C2\u4E0E\u8005\u90FD\u80FD\u6536\u5230\u3002\u56DE\u590D\u7FA4\u6D88\u606F\u65F6\u5EFA\u8BAE\u4F20\u5165\u6D88\u606F\u4E2D\u7684 projectId\uFF0C\u786E\u4FDD\u56DE\u590D\u5230\u6B63\u786E\u7684\u9879\u76EE\u7FA4\u804A\u3002",inputSchema:{type:"object",properties:{content:{type:"string",description:"\u6D88\u606F\u5185\u5BB9"},projectId:{type:"string",description:"\u76EE\u6807\u9879\u76EE ID\uFF08\u53EF\u9009\uFF09\u3002\u4E0D\u4F20\u5219\u4F7F\u7528 Agent \u6240\u5C5E\u9879\u76EE\uFF08\u7531\u670D\u52A1\u7AEF\u51B3\u5B9A\uFF09\u3002\u56DE\u590D\u7FA4\u6D88\u606F\u65F6\u5E94\u4F20\u5165\u6D88\u606F\u4E2D\u7684 projectId\uFF0C\u786E\u4FDD\u56DE\u590D\u5230\u6B63\u786E\u7684\u9879\u76EE\u7FA4\u804A\u3002"},roomId:{type:"string",description:"\u76EE\u6807\u7FA4\u804A\u623F\u95F4 ID\uFF08\u53EF\u9009\uFF09\u3002\u5F53\u56DE\u590D get_group_rooms \u6216\u7FA4\u6D88\u606F\u4E2D\u7684\u5C0F\u7EC4\u7FA4\u65F6\uFF0C\u4F18\u5148\u4F20\u5165 roomId\uFF0C\u907F\u514D\u8BEF\u53D1\u5230\u9879\u76EE\u516C\u5171\u7FA4\u3002"}},required:["content"]}},E={name:"send_private",description:"\u53D1\u9001\u79C1\u4FE1\u7ED9\u6307\u5B9A\u7528\u6237\u3002\u652F\u6301\u4E24\u79CD\u6A21\u5F0F\uFF1A\u901A\u77E5\u5F0F\uFF08waitReply=false\uFF09\u548C\u8C03\u7528\u5F0F\uFF08waitReply=true\uFF0C\u963B\u585E\u7B49\u5F85\u56DE\u590D\uFF09\u3002",inputSchema:{type:"object",properties:{targetId:{type:"string",description:"\u76EE\u6807\u7528\u6237ID"},content:{type:"string",description:"\u6D88\u606F\u5185\u5BB9"},waitReply:{type:"boolean",description:"\u662F\u5426\u7B49\u5F85\u5BF9\u65B9\u56DE\u590D\uFF08\u8C03\u7528\u5F0F\uFF09\u3002\u4E3Atrue\u65F6\u4F1A\u963B\u585E\u7B49\u5F85\u56DE\u590D\uFF0C\u9ED8\u8BA4\u6C38\u4E45\u963B\u585E\u76F4\u5230\u6536\u5230\u56DE\u590D"},replyToCallId:{type:"string",description:"\u56DE\u590D\u7684\u8C03\u7528ID\uFF08\u7528\u4E8E\u56DE\u590D\u8C03\u7528\u5F0F\u6D88\u606F\uFF09"},timeoutMs:{type:"number",description:"\u7B49\u5F85\u56DE\u590D\u7684\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF0C\u53EF\u9009\uFF09\u3002\u672A\u6307\u5B9A\u6216\u22640\u65F6\u6C38\u4E45\u963B\u585E\u7B49\u5F85\uFF0C>0\u65F6\u6309\u6307\u5B9A\u65F6\u95F4\u8D85\u65F6"}},required:["targetId","content"]}},l={name:"poll_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u5305\u62EC\u7FA4\u6D88\u606F\u548C\u79C1\u4FE1\uFF09\uFF0C\u6301\u7EED\u963B\u585E\u7B49\u5F85\u76F4\u5230\u6709\u65B0\u6D88\u606F\uFF0C\u8FD9\u662F\u83B7\u53D6\u6D88\u606F\u7684\u4E3B\u8981\u63A5\u53E3\u3002
|
|
8
8
|
|
|
9
9
|
\u3010\u8FD4\u56DE\u503C\u8BF4\u660E\u3011
|
|
10
10
|
- directMessages: \u79C1\u4FE1\u6D88\u606F
|
|
11
11
|
- groupMessages: \u7FA4\u804A\u6D88\u606F
|
|
12
12
|
|
|
13
13
|
\u7CFB\u7EDF\u63D0\u793A\u8BCD\uFF08\u5168\u5C40\u63D0\u793A\u8BCD + \u89D2\u8272\u63D0\u793A\u8BCD + \u542F\u52A8\u8BB0\u5FC6\uFF09\u5DF2\u7531 runtime adapter
|
|
14
|
-
\u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},
|
|
14
|
+
\u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},I={name:"get_message",description:`\u83B7\u53D6\u672A\u8BFB\u6D88\u606F\uFF08\u975E\u963B\u585E\uFF09\uFF0C\u4ECE\u6D88\u606F\u7F13\u51B2\u533A\u83B7\u53D6\u6D88\u606F\uFF0C\u7ACB\u5373\u8FD4\u56DE\uFF0C\u82E5\u5F53\u524D\u6CA1\u6709\u4EFB\u52A1\u5E94\u4F7F\u7528 poll_message\u3002
|
|
15
15
|
|
|
16
16
|
\u3010\u8FD4\u56DE\u503C\u8BF4\u660E\u3011
|
|
17
17
|
- directMessages: \u79C1\u4FE1\u6D88\u606F
|
|
18
18
|
- groupMessages: \u7FA4\u804A\u6D88\u606F
|
|
19
19
|
|
|
20
|
-
\u7CFB\u7EDF\u63D0\u793A\u8BCD\u5DF2\u7531 runtime adapter \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},
|
|
21
|
-
\u63D0\u4EA4\u65F6\u8BF7\u4E00\u5E76\u4F20\u5165 changeLog\uFF08\u672C\u6B21\u4EFB\u52A1\u5904\u7406\u671F\u95F4\u4EA7\u751F\u7684\u6587\u4EF6/\u5185\u5BB9\u53D8\u66F4\u65E5\u5FD7\uFF09\uFF0C\u7528\u4E8E\u300CAI \u56DE\u9000\u300D\u7CBE\u786E\u8FD8\u539F\uFF1A\u6BCF\u9879\u5305\u542B operation(CREATE|UPDATE|DELETE|READ)\u3001path(\u76F8\u5BF9\u5DE5\u4F5C\u533A\u8DEF\u5F84)\u3001\u53EF\u9009 targetType/summary/beforeHash/afterHash/metadata\u3002\u672A\u8BB0\u5F55\u53D8\u66F4\u4F1A\u5BFC\u81F4 AI \u56DE\u9000\u7F3A\u5C11\u4F9D\u636E\u3002`,inputSchema:{type:"object",properties:{nodeId:{type:"string",description:"\u4EFB\u52A1\u8282\u70B9ID\uFF08\u4ECE my_task \u8FD4\u56DE\u7684\u4EFB\u52A1\u4FE1\u606F\u4E2D\u83B7\u53D6\uFF09"},outputPayload:{type:"string",description:'\u4EFB\u52A1\u6267\u884C\u7ED3\u679C\u7684 JSON \u5B57\u7B26\u4E32\u3002\u5FC5\u987B\u6309 my_task.requiredOutput \u9009\u62E9\u76EE\u6807\u5206\u652F\uFF0C\u4F8B\u5982 [{"targetNodeId":"<\u76EE\u6807\u8282\u70B9\u6A21\u677FID>","output":{...}}]\uFF1B\u63D0\u4EA4\u5230 HUMAN \u8282\u70B9\u65F6 output \u5FC5\u987B\u5F62\u5982 {"questions":[{"question":"\u8BF7\u786E\u8BA4...","options":[{"label":"\u901A\u8FC7"}]}]}\u3002'},changeLog:{type:"array",description:"\u53EF\u9009\u3002\u672C\u6B21\u4EFB\u52A1\u5904\u7406\u671F\u95F4\u4EA7\u751F\u7684\u6587\u4EF6/\u5185\u5BB9\u53D8\u66F4\u65E5\u5FD7\uFF0C\u7528\u4E8E AI \u56DE\u9000\u3002\u6BCF\u9879: { operation: 'CREATE'|'UPDATE'|'DELETE'|'READ', targetType?: string, path: string, summary?: string, beforeHash?: string, afterHash?: string, metadata?: string }\u3002\u5EFA\u8BAE\u5728\u5B8C\u6210\u4EFB\u52A1\u3001\u8C03\u7528 submit_task_result \u65F6\u4E00\u5E76\u63D0\u4EA4\u3002",items:{type:"object",properties:{operation:{type:"string",enum:["CREATE","UPDATE","DELETE","READ"],description:"\u53D8\u66F4\u64CD\u4F5C\u7C7B\u578B"},targetType:{type:"string",description:"\u53D8\u66F4\u76EE\u6807\u7C7B\u578B\uFF0C\u7F3A\u7701\u89C6\u4E3A FILE"},path:{type:"string",description:"\u53D8\u66F4\u6587\u4EF6/\u8D44\u6E90\u7684\u76F8\u5BF9\u8DEF\u5F84"},summary:{type:"string",description:"\u53D8\u66F4\u6458\u8981\u8BF4\u660E"},beforeHash:{type:"string",description:"\u53D8\u66F4\u524D\u5185\u5BB9 hash\uFF08\u5DEE\u5F02\u56DE\u9000\u7528\uFF09"},afterHash:{type:"string",description:"\u53D8\u66F4\u540E\u5185\u5BB9 hash\uFF08\u5DEE\u5F02\u56DE\u9000\u7528\uFF09"},metadata:{type:"string",description:"\u9644\u52A0\u5143\u6570\u636E JSON \u5B57\u7B26\u4E32\uFF08\u5982 cacheKey\uFF09"}},required:["operation","path"]}}},required:["nodeId","outputPayload"]}},
|
|
20
|
+
\u7CFB\u7EDF\u63D0\u793A\u8BCD\u5DF2\u7531 runtime adapter \u5728\u4F1A\u8BDD\u521B\u5EFA\u65F6\u6CE8\u5165\uFF0C\u65E0\u9700\u901A\u8FC7 MCP \u83B7\u53D6\u3002`,inputSchema:{type:"object",properties:{},required:[]}},T={name:"get_dm_history",description:"\u83B7\u53D6\u79C1\u4FE1\u5386\u53F2\u6D88\u606F\u3002\u53EF\u4EE5\u83B7\u53D6\u4E0E\u7279\u5B9A\u7528\u6237\u7684\u5BF9\u8BDD\u5386\u53F2\uFF0C\u6216\u83B7\u53D6\u6240\u6709\u79C1\u4FE1\u5386\u53F2\u3002",inputSchema:{type:"object",properties:{targetUserId:{type:"string",description:"\u76EE\u6807\u7528\u6237ID\uFF08\u53EF\u9009\uFF09\u3002\u5982\u679C\u4E0D\u6307\u5B9A\uFF0C\u5219\u8FD4\u56DE\u6240\u6709\u79C1\u4FE1\u5386\u53F2\u3002"},limit:{type:"number",description:"\u83B7\u53D6\u6700\u8FD1\u5386\u53F2\u6D88\u606F\u7684\u6570\u91CF\uFF08\u9ED8\u8BA450\uFF09"},since:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF08ISO 8601 \u683C\u5F0F\uFF0C\u53EF\u9009\uFF09\u3002\u65E9\u4E8E\u8BE5\u65F6\u95F4\u7684\u6D88\u606F\u5C06\u4E0D\u4F1A\u88AB\u8FD4\u56DE\u3002"}},required:[]}},A={name:"get_group_history",description:"\u83B7\u53D6\u516C\u5171\u7FA4\u804A\u7684\u5386\u53F2\u6D88\u606F\u3002",inputSchema:{type:"object",properties:{limit:{type:"number",description:"\u83B7\u53D6\u6700\u8FD1\u5386\u53F2\u6D88\u606F\u7684\u6570\u91CF\uFF08\u9ED8\u8BA450\uFF09"},since:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF08ISO 8601 \u683C\u5F0F\uFF0C\u53EF\u9009\uFF09\u3002\u65E9\u4E8E\u8BE5\u65F6\u95F4\u7684\u6D88\u606F\u5C06\u4E0D\u4F1A\u88AB\u8FD4\u56DE\u3002"}},required:[]}},L={name:"my_task",description:"\u83B7\u53D6\u5F53\u524D Agent \u5DF2\u901A\u8FC7 poll_message \u540E\u53F0\u9759\u9ED8\u62A2\u5360\u6216\u6B63\u5728\u5904\u7406\u7684\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u5217\u8868\u3002\u6B64\u5DE5\u5177\u53EA\u8BFB\u53D6\u5DF2\u5206\u914D\u7ED9\u5F53\u524D Agent \u7684\u4EFB\u52A1\u8BE6\u60C5\uFF0C\u4E0D\u4F1A\u4E3B\u52A8\u62A2\u5360\u65B0\u7684\u5F85\u5904\u7406\u8282\u70B9\u3002\u6536\u5230\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u5206\u914D\u901A\u77E5\u540E\uFF0C\u8C03\u7528\u6B64\u5DE5\u5177\u83B7\u53D6\u4EFB\u52A1\u6307\u4EE4\u3001\u524D\u5E8F\u8282\u70B9\u8F93\u51FA\u3001requiredOutput \u8F93\u51FA\u5951\u7EA6\u7B49\uFF1B\u5B8C\u6210\u540E\u5FC5\u987B\u6309 requiredOutput \u4F7F\u7528 submit_task_result \u63D0\u4EA4\u7ED3\u679C\uFF0C\u63D0\u4EA4\u65F6\u8BF7\u4E00\u5E76\u4F20\u5165 changeLog\uFF08\u672C\u6B21\u5904\u7406\u7684\u6587\u4EF6/\u5185\u5BB9\u53D8\u66F4\u65E5\u5FD7\uFF0C\u5305\u542B operation \u4E0E path\uFF09\uFF0C\u7528\u4E8E AI \u56DE\u9000\u3002\u82E5 requiredOutput \u7684\u76EE\u6807\u662F HUMAN \u8282\u70B9\uFF0C\u63D0\u4EA4\u7ED9\u8BE5\u5206\u652F\u7684 output \u5FC5\u987B\u5305\u542B questions \u6570\u7EC4\u4E14\u81F3\u5C11\u4E00\u4E2A\u9898\u76EE\u5E26 question \u5B57\u6BB5\u3002",inputSchema:{type:"object",properties:{},required:[]}},R={name:"create_task_instance_comment",description:"\u4E3A\u5F53\u524D\u6B63\u5728\u5904\u7406\u7684\u6D41\u7A0B\u7EBF\u5B9E\u4F8B\u521B\u5EFA\u4E00\u6761\u5B9E\u4F8B\u7EA7\u7559\u8A00\u3002\u4EC5\u5141\u8BB8\u7531\u540E\u53F0\u9759\u9ED8\u62A2\u5360\u540E\u6B63\u5728\u5904\u7406\u8BE5\u5B9E\u4F8B\u8282\u70B9\u7684 Agent \u8C03\u7528\uFF1B\u5F53\u9700\u8981\u544A\u77E5\u540E\u7EED\u8282\u70B9\u9700\u8981\u6CE8\u610F\u7684\u70B9\u65F6\u4F7F\u7528\u7559\u8A00\u8FDB\u884C\u7559\u8A00\uFF1B\u7559\u8A00\u4F1A\u5728\u5B9E\u4F8B\u5217\u8868\u201C\u67E5\u770B\u7559\u8A00\u201D\u548C\u540E\u7EED my_task \u8FD4\u56DE\u4E2D\u5C55\u793A\u3002",inputSchema:{type:"object",properties:{taskInstanceId:{type:"string",description:"\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u5B9E\u4F8BID\uFF08\u4ECE my_task \u8FD4\u56DE\u4E2D\u83B7\u53D6\uFF09"},content:{type:"string",description:"\u7559\u8A00\u5185\u5BB9"}},required:["taskInstanceId","content"]}},h={name:"submit_task_result",description:`\u63D0\u4EA4\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u7684\u6267\u884C\u7ED3\u679C\u3002\u5B8C\u6210\u4EFB\u52A1\u540E\u8C03\u7528\u6B64\u5DE5\u5177\uFF0C\u8F93\u51FA\u5C06\u4F20\u9012\u7ED9\u4E0B\u4E00\u4E2A\u8282\u70B9\u3002outputPayload \u5FC5\u987B\u9075\u5FAA my_task \u8FD4\u56DE\u7684 requiredOutput\uFF1A\u6709\u540E\u7EE7\u5206\u652F\u65F6\u5FC5\u987B\u662F JSON \u6570\u7EC4\uFF0C\u6BCF\u9879\u5305\u542B targetNodeId \u548C output\u3002\u82E5\u76EE\u6807\u5206\u652F\u662F HUMAN \u8282\u70B9\uFF0Coutput \u5FC5\u987B\u662F JSON \u5BF9\u8C61\u5E76\u5305\u542B\u975E\u7A7A questions \u6570\u7EC4\uFF0Cquestions \u81F3\u5C11\u4E00\u4E2A\u9898\u76EE\u5FC5\u987B\u5305\u542B\u5B57\u7B26\u4E32 question \u5B57\u6BB5\u3002
|
|
21
|
+
\u63D0\u4EA4\u65F6\u8BF7\u4E00\u5E76\u4F20\u5165 changeLog\uFF08\u672C\u6B21\u4EFB\u52A1\u5904\u7406\u671F\u95F4\u4EA7\u751F\u7684\u6587\u4EF6/\u5185\u5BB9\u53D8\u66F4\u65E5\u5FD7\uFF09\uFF0C\u7528\u4E8E\u300CAI \u56DE\u9000\u300D\u7CBE\u786E\u8FD8\u539F\uFF1A\u6BCF\u9879\u5305\u542B operation(CREATE|UPDATE|DELETE|READ)\u3001path(\u76F8\u5BF9\u5DE5\u4F5C\u533A\u8DEF\u5F84)\u3001\u53EF\u9009 targetType/summary/beforeHash/afterHash/metadata\u3002\u672A\u8BB0\u5F55\u53D8\u66F4\u4F1A\u5BFC\u81F4 AI \u56DE\u9000\u7F3A\u5C11\u4F9D\u636E\u3002`,inputSchema:{type:"object",properties:{nodeId:{type:"string",description:"\u4EFB\u52A1\u8282\u70B9ID\uFF08\u4ECE my_task \u8FD4\u56DE\u7684\u4EFB\u52A1\u4FE1\u606F\u4E2D\u83B7\u53D6\uFF09"},outputPayload:{type:"string",description:'\u4EFB\u52A1\u6267\u884C\u7ED3\u679C\u7684 JSON \u5B57\u7B26\u4E32\u3002\u5FC5\u987B\u6309 my_task.requiredOutput \u9009\u62E9\u76EE\u6807\u5206\u652F\uFF0C\u4F8B\u5982 [{"targetNodeId":"<\u76EE\u6807\u8282\u70B9\u6A21\u677FID>","output":{...}}]\uFF1B\u63D0\u4EA4\u5230 HUMAN \u8282\u70B9\u65F6 output \u5FC5\u987B\u5F62\u5982 {"questions":[{"question":"\u8BF7\u786E\u8BA4...","options":[{"label":"\u901A\u8FC7"}]}]}\u3002'},changeLog:{type:"array",description:"\u53EF\u9009\u3002\u672C\u6B21\u4EFB\u52A1\u5904\u7406\u671F\u95F4\u4EA7\u751F\u7684\u6587\u4EF6/\u5185\u5BB9\u53D8\u66F4\u65E5\u5FD7\uFF0C\u7528\u4E8E AI \u56DE\u9000\u3002\u6BCF\u9879: { operation: 'CREATE'|'UPDATE'|'DELETE'|'READ', targetType?: string, path: string, summary?: string, beforeHash?: string, afterHash?: string, metadata?: string }\u3002\u5EFA\u8BAE\u5728\u5B8C\u6210\u4EFB\u52A1\u3001\u8C03\u7528 submit_task_result \u65F6\u4E00\u5E76\u63D0\u4EA4\u3002",items:{type:"object",properties:{operation:{type:"string",enum:["CREATE","UPDATE","DELETE","READ"],description:"\u53D8\u66F4\u64CD\u4F5C\u7C7B\u578B"},targetType:{type:"string",description:"\u53D8\u66F4\u76EE\u6807\u7C7B\u578B\uFF0C\u7F3A\u7701\u89C6\u4E3A FILE"},path:{type:"string",description:"\u53D8\u66F4\u6587\u4EF6/\u8D44\u6E90\u7684\u76F8\u5BF9\u8DEF\u5F84"},summary:{type:"string",description:"\u53D8\u66F4\u6458\u8981\u8BF4\u660E"},beforeHash:{type:"string",description:"\u53D8\u66F4\u524D\u5185\u5BB9 hash\uFF08\u5DEE\u5F02\u56DE\u9000\u7528\uFF09"},afterHash:{type:"string",description:"\u53D8\u66F4\u540E\u5185\u5BB9 hash\uFF08\u5DEE\u5F02\u56DE\u9000\u7528\uFF09"},metadata:{type:"string",description:"\u9644\u52A0\u5143\u6570\u636E JSON \u5B57\u7B26\u4E32\uFF08\u5982 cacheKey\uFF09"}},required:["operation","path"]}}},required:["nodeId","outputPayload"]}},S={name:"start_task_rollback",description:"\u5C06\u5206\u914D\u7ED9\u5F53\u524D Agent \u7684\u6D41\u7A0B\u7EBF AI \u56DE\u9000\u4EFB\u52A1\u6807\u8BB0\u4E3A\u56DE\u9000\u4E2D\u3002\u6536\u5230\u56DE\u9000\u59D4\u6258\u540E\uFF0C\u5F00\u59CB\u5B9E\u9645\u56DE\u9000\u524D\u8C03\u7528\u3002",inputSchema:{type:"object",properties:{rollbackTaskId:{type:"string",description:"AI \u56DE\u9000\u4EFB\u52A1ID\uFF08\u4ECE\u56DE\u9000\u59D4\u6258\u6D88\u606F\u4E2D\u83B7\u53D6\uFF09\u3002"}},required:["rollbackTaskId"]}},b={name:"finish_task_rollback",description:"\u5C06\u5206\u914D\u7ED9\u5F53\u524D Agent \u7684\u6D41\u7A0B\u7EBF AI \u56DE\u9000\u4EFB\u52A1\u6807\u8BB0\u4E3A\u5DF2\u56DE\u9000\uFF0C\u5E76\u8BB0\u5F55\u56DE\u9000\u7ED3\u679C\u3002\u5B8C\u6210\u56DE\u9000\u540E\u8C03\u7528\u3002",inputSchema:{type:"object",properties:{rollbackTaskId:{type:"string",description:"AI \u56DE\u9000\u4EFB\u52A1ID\uFF08\u4ECE\u56DE\u9000\u59D4\u6258\u6D88\u606F\u4E2D\u83B7\u53D6\uFF09\u3002"},resultMessage:{type:"string",description:"\u56DE\u9000\u7ED3\u679C\u8BF4\u660E\uFF08\u53EF\u9009\uFF09\u3002"}},required:["rollbackTaskId"]}},D={name:"reject_task",description:"\u62D2\u7EDD\u5BF9\u524D\u5E8F\u8282\u70B9\u8F93\u51FA\u7684\u4EFB\u52A1\uFF0C\u4EFB\u52A1\u5C06\u56DE\u9000\u5230\u524D\u4E00\u4E2A\u8282\u70B9\u91CD\u65B0\u6267\u884C\u3002\u9002\u7528\u4E8E\u524D\u5E8F\u8F93\u51FA\u4E0D\u6EE1\u8DB3\u8981\u6C42\u6216\u65E0\u6CD5\u7EE7\u7EED\u6267\u884C\u7684\u573A\u666F\u3002",inputSchema:{type:"object",properties:{nodeId:{type:"string",description:"\u4EFB\u52A1\u8282\u70B9ID\uFF08\u4ECE my_task \u8FD4\u56DE\u7684\u4EFB\u52A1\u4FE1\u606F\u4E2D\u83B7\u53D6\uFF09"},reason:{type:"string",description:"\u62D2\u7EDD\u539F\u56E0"}},required:["nodeId","reason"]}},M={name:"terminate_task",description:"\u7EC8\u6B62\u6574\u4E2A\u6D41\u7A0B\u7EBF\u4EFB\u52A1\u3002\u7EC8\u6B62\u540E\u4EFB\u52A1\u72B6\u6001\u53D8\u4E3A TERMINATED\uFF08\u5DF2\u7EC8\u6B62\uFF09\uFF0C\u6240\u6709\u672A\u5B8C\u6210\u7684\u8282\u70B9\u4E5F\u5C06\u88AB\u7EC8\u6B62\uFF0C\u4EFB\u52A1\u4E0D\u518D\u8FDB\u884C\u540E\u7EED\u6D41\u8F6C\u3002\u9002\u7528\u4E8E\u4EFB\u52A1\u65E0\u6CD5\u7EE7\u7EED\u6267\u884C\u6216\u9700\u8981\u5F3A\u5236\u505C\u6B62\u7684\u573A\u666F\u3002\u6CE8\u610F\uFF1A\u7EC8\u6B62\u64CD\u4F5C\u4E0D\u53EF\u9006\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002",inputSchema:{type:"object",properties:{taskInstanceId:{type:"string",description:"\u4EFB\u52A1\u5B9E\u4F8BID\uFF08\u4ECE my_task \u8FD4\u56DE\u7684\u4EFB\u52A1\u4FE1\u606F\u4E2D\u83B7\u53D6 taskInstanceId\uFF09"},reason:{type:"string",description:"\u7EC8\u6B62\u539F\u56E0"}},required:["taskInstanceId","reason"]}},C={name:"get_debug_log_config",description:`\u83B7\u53D6 Agent Debug \u65E5\u5FD7\u7CFB\u7EDF\u7684\u5199\u5165\u914D\u7F6E\u3002\u8FD4\u56DE\u5199\u5165\u7AEF\u70B9 URL\u3001\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u540D\u3001\u4EE5\u53CA\u65E5\u5FD7\u5199\u5165\u5BC6\u94A5\uFF08logWriteKey\uFF09\u3002
|
|
22
22
|
|
|
23
23
|
## \u5982\u4F55\u5199\u5165\u65E5\u5FD7
|
|
24
24
|
\u4E1A\u52A1\u9879\u76EE\u8FD0\u884C\u65F6\u901A\u8FC7 HTTP POST \u8BF7\u6C42\u5199\u5165\u65E5\u5FD7\uFF1A
|
|
@@ -32,11 +32,11 @@ MCP \u5DE5\u5177\uFF08poll_message/get_message\uFF09\u4E0D\u518D\u8FD4\u56DE sys
|
|
|
32
32
|
- detail (\u53EF\u9009): \u65E5\u5FD7\u8BE6\u60C5\u5185\u5BB9
|
|
33
33
|
|
|
34
34
|
\u5F53 logWriteKey \u975E\u7A7A\u65F6\uFF0C\u4F7F\u7528\u8BE5 key \u5373\u53EF\u76F4\u63A5\u5199\u5165\u65E5\u5FD7\uFF0C\u65E0\u9700\u9879\u76EE\u6210\u5458\u6743\u9650\u3002
|
|
35
|
-
\u5F53 logWriteKey \u4E3A\u7A7A\u65F6\uFF0C\u9700\u4F7F\u7528\u9879\u76EE\u6210\u5458\u7684 API Key\uFF08\u9700\u9879\u76EE\u6210\u5458\u6743\u9650\uFF09\u3002`,inputSchema:{type:"object",properties:{},required:[]}},
|
|
35
|
+
\u5F53 logWriteKey \u4E3A\u7A7A\u65F6\uFF0C\u9700\u4F7F\u7528\u9879\u76EE\u6210\u5458\u7684 API Key\uFF08\u9700\u9879\u76EE\u6210\u5458\u6743\u9650\uFF09\u3002`,inputSchema:{type:"object",properties:{},required:[]}},N={name:"query_debug_logs",description:`\u5206\u9875\u67E5\u8BE2 Agent Debug \u65E5\u5FD7\uFF08\u6309\u65F6\u95F4\u5012\u5E8F\uFF09\u3002\u7528\u4E8E\u6392\u67E5\u4E1A\u52A1\u9879\u76EE\u8FD0\u884C\u65F6\u95EE\u9898\u3002
|
|
36
36
|
|
|
37
|
-
\u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001businessLine\u3001module\u3001level\u3001detail\u3001createdAt\u3002`,inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF08\u5FC5\u586B\uFF09"},businessLine:{type:"string",description:"\u4E1A\u52A1\u7EBF\u540D\u79F0\uFF08\u5FC5\u586B\uFF09"},module:{type:"string",description:"\u6A21\u5757\u540D\uFF08\u53EF\u9009\uFF09"},level:{type:"string",description:"\u65E5\u5FD7\u7EA7\u522B\uFF1ADEBUG / INFO / WARN / ERROR\uFF08\u53EF\u9009\uFF09",enum:["DEBUG","INFO","WARN","ERROR"]},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},offset:{type:"number",description:"\u504F\u79FB\u91CF\uFF0C\u9ED8\u8BA4 0"},limit:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20\uFF0C\u6700\u5927 200"}},required:["projectId","businessLine"]}},
|
|
37
|
+
\u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001businessLine\u3001module\u3001level\u3001detail\u3001createdAt\u3002`,inputSchema:{type:"object",properties:{projectId:{type:"string",description:"\u9879\u76EE ID\uFF08\u5FC5\u586B\uFF09"},businessLine:{type:"string",description:"\u4E1A\u52A1\u7EBF\u540D\u79F0\uFF08\u5FC5\u586B\uFF09"},module:{type:"string",description:"\u6A21\u5757\u540D\uFF08\u53EF\u9009\uFF09"},level:{type:"string",description:"\u65E5\u5FD7\u7EA7\u522B\uFF1ADEBUG / INFO / WARN / ERROR\uFF08\u53EF\u9009\uFF09",enum:["DEBUG","INFO","WARN","ERROR"]},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},offset:{type:"number",description:"\u504F\u79FB\u91CF\uFF0C\u9ED8\u8BA4 0"},limit:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20\uFF0C\u6700\u5927 200"}},required:["projectId","businessLine"]}},f={name:"query_file_changes_history",description:`\u5206\u9875\u67E5\u8BE2\u6587\u4EF6\u53D8\u66F4\u5386\u53F2\uFF08\u6309\u65F6\u95F4\u5012\u5E8F\uFF09\u3002\u7528\u4E8E\u4E86\u89E3\u5176\u5B83 Agent \u5BF9\u6587\u4EF6\u505A\u8FC7\u54EA\u4E9B\u4FEE\u6539\u3001\u4FEE\u6539\u539F\u56E0\u4E0E\u5F53\u524D\u72B6\u6001\uFF0C\u652F\u6301\u6309 \u89D2\u8272/\u5B9E\u4F8B/\u6587\u4EF6\u540D/\u76F8\u5BF9\u8DEF\u5F84/\u64CD\u4F5C/\u72B6\u6001/\u4EFB\u52A1\u5B9E\u4F8B/\u65F6\u95F4\u8303\u56F4 \u8FC7\u6EE4\u3002
|
|
38
38
|
|
|
39
39
|
\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\uFF08\u65E0\u9700\u4F20 projectId\uFF09\u3002agentId \u4E0D\u4F20\u8868\u793A\u67E5\u8BE2\u5F53\u524D\u9879\u76EE\u4E0B\u6240\u6709 Agent \u7684\u53D8\u66F4\u8BB0\u5F55\uFF0C\u4F20\u5176\u5B83 Agent \u5B9E\u4F8B ID \u65F6\u4EC5\u9650\u540C\u9879\u76EE\u5185\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF0C\u9879\u76EE\u5916 Agent \u4F1A\u88AB\u62D2\u7EDD\uFF09\u3002
|
|
40
40
|
|
|
41
|
-
\u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001roleName\u3001instanceName\u3001agentId\u3001operation\uFF08CREATE/UPDATE/DELETE\uFF09\u3001targetPath\u3001fullPath\u3001reason\u3001status\uFF08APPLIED/REVERTED/REVERT_FAILED\uFF09\u3001createdAt\u3001revertedAt\u3001revertedBy\u3002`,inputSchema:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272\u5B9A\u4E49 ID\uFF08\u53EF\u9009\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF1B\u4E0D\u4F20=\u67E5\u8BE2\u5F53\u524D\u9879\u76EE\u4E0B\u6240\u6709 Agent\uFF1B\u4F20\u5176\u5B83 Agent \u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u5176\u4E0E\u8C03\u7528\u8005\u540C\u9879\u76EE\uFF09"},fileName:{type:"string",description:"\u6587\u4EF6\u540D\uFF08\u53EF\u9009\uFF0C\u6309 basename \u6A21\u7CCA\u5339\u914D\uFF09"},filePath:{type:"string",description:"\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u6309\u8D26\u672C\u8BB0\u5F55\u7684\u76F8\u5BF9\u8DEF\u5F84 targetPath \u5339\u914D\uFF0C\u542B\u76EE\u5F55\u524D\u7F00\u5339\u914D\uFF09\u3002\u652F\u6301 ./xx\u3001xx\u3001@/xx\u3001/xx \u7B49\u4EF7\u5199\u6CD5\uFF08@ \u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\u522B\u540D\uFF09\u3002\u793A\u4F8B\uFF1A@/src/main.ts \u7CBE\u786E\u5339\u914D src/main.ts\uFF1B@/src \u5339\u914D src/ \u76EE\u5F55\u53CA\u5176\u4E0B\u6240\u6709\u6587\u4EF6\u7684\u53D8\u66F4\u3002\u4E0E fileName \u6B63\u4EA4\uFF1AfileName \u6309\u6587\u4EF6\u540D\u6A21\u7CCA\uFF0CfilePath \u6309\u76F8\u5BF9\u8DEF\u5F84\u5339\u914D\u3002"},operation:{type:"string",description:"\u64CD\u4F5C\u7C7B\u578B\uFF1ACREATE / UPDATE / DELETE\uFF08\u53EF\u9009\uFF09",enum:["CREATE","UPDATE","DELETE"]},status:{type:"string",description:"\u8BB0\u5F55\u72B6\u6001\uFF1AAPPLIED\uFF08\u5DF2\u751F\u6548\uFF09/ REVERTED\uFF08\u5DF2\u64A4\u9500\uFF09/ REVERT_FAILED\uFF08\u64A4\u9500\u5931\u8D25\uFF09\uFF08\u53EF\u9009\uFF09",enum:["APPLIED","REVERTED","REVERT_FAILED"]},taskInstanceId:{type:"string",description:"\u4EFB\u52A1\u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF09"},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},page:{type:"number",description:"\u9875\u7801\uFF0C\u9ED8\u8BA4 1"},pageSize:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20"}},required:[]}},q=new Set(["create_memory","read_memory","update_memory","delete_memory","search_memory","list_memories","get_memory_stats","list_memories_by_file","memory_recurrence","memory_recurrence_complete"]),j=[_,m,E,y,O,g,u,T,l,I,R,A,L,S,M,D,b,h,e,n,p,t,s,i,r,o,a,c,d,N,P,C];export{J as ABANDON_MEMORY_UPDATE_TOOL,Y as CREATE_MEMORY_TOOL,L as CREATE_TASK_INSTANCE_COMMENT_TOOL,G as DELETE_MEMORY_TOOL,D as FINISH_TASK_ROLLBACK_TOOL,_ as GET_COLLEAGUE_TOOL,N as GET_DEBUG_LOG_CONFIG_TOOL,I as GET_DM_HISTORY_TOOL,R as GET_GROUP_HISTORY_TOOL,m as GET_GROUP_ROOMS_TOOL,f as GET_MEMORY_STATS_TOOL,l as GET_MESSAGE_TOOL,E as GET_PROFILE_TOOL,O as HIRE_COLLEAGUES_BATCH_TOOL,y as HIRE_COLLEAGUE_TOOL,F as LIST_MEMORIES_BY_FILE_TOOL,H as LIST_MEMORIES_TOOL,j as MCP_TOOLS,W as MEMORY_RECURRENCE_COMPLETE_TOOL,V as MEMORY_RECURRENCE_TOOL,q as MEMORY_TOOL_NAMES,A as MY_TASK_TOOL,T as POLL_MESSAGE_TOOL,P as QUERY_DEBUG_LOGS_TOOL,C as QUERY_FILE_CHANGES_HISTORY_TOOL,K as READ_MEMORY_TOOL,b as REJECT_TASK_TOOL,w as SEARCH_MEMORY_TOOL,g as SEND_GROUP_TOOL,u as SEND_PRIVATE_TOOL,M as START_TASK_ROLLBACK_TOOL,S as SUBMIT_TASK_RESULT_TOOL,h as TERMINATE_TASK_TOOL,B as UPDATE_MEMORY_TOOL};
|
|
41
|
+
\u8FD4\u56DE\u5B57\u6BB5\uFF1Aid\u3001projectId\u3001roleName\u3001instanceName\u3001agentId\u3001operation\uFF08CREATE/UPDATE/DELETE\uFF09\u3001targetPath\u3001fullPath\u3001reason\u3001status\uFF08APPLIED/REVERTED/REVERT_FAILED\uFF09\u3001createdAt\u3001revertedAt\u3001revertedBy\u3002`,inputSchema:{type:"object",properties:{roleId:{type:"string",description:"\u89D2\u8272\u5B9A\u4E49 ID\uFF08\u53EF\u9009\uFF09"},agentId:{type:"string",description:"Agent \u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF1B\u4E0D\u4F20=\u67E5\u8BE2\u5F53\u524D\u9879\u76EE\u4E0B\u6240\u6709 Agent\uFF1B\u4F20\u5176\u5B83 Agent \u65F6\u670D\u52A1\u7AEF\u6821\u9A8C\u5176\u4E0E\u8C03\u7528\u8005\u540C\u9879\u76EE\uFF09"},fileName:{type:"string",description:"\u6587\u4EF6\u540D\uFF08\u53EF\u9009\uFF0C\u6309 basename \u6A21\u7CCA\u5339\u914D\uFF09"},filePath:{type:"string",description:"\u5DE5\u4F5C\u533A\u76F8\u5BF9\u8DEF\u5F84\uFF08\u53EF\u9009\uFF0C\u6309\u8D26\u672C\u8BB0\u5F55\u7684\u76F8\u5BF9\u8DEF\u5F84 targetPath \u5339\u914D\uFF0C\u542B\u76EE\u5F55\u524D\u7F00\u5339\u914D\uFF09\u3002\u652F\u6301 ./xx\u3001xx\u3001@/xx\u3001/xx \u7B49\u4EF7\u5199\u6CD5\uFF08@ \u89C6\u4E3A\u5DE5\u4F5C\u533A\u6839\u8DEF\u5F84\u522B\u540D\uFF09\u3002\u793A\u4F8B\uFF1A@/src/main.ts \u7CBE\u786E\u5339\u914D src/main.ts\uFF1B@/src \u5339\u914D src/ \u76EE\u5F55\u53CA\u5176\u4E0B\u6240\u6709\u6587\u4EF6\u7684\u53D8\u66F4\u3002\u4E0E fileName \u6B63\u4EA4\uFF1AfileName \u6309\u6587\u4EF6\u540D\u6A21\u7CCA\uFF0CfilePath \u6309\u76F8\u5BF9\u8DEF\u5F84\u5339\u914D\u3002"},operation:{type:"string",description:"\u64CD\u4F5C\u7C7B\u578B\uFF1ACREATE / UPDATE / DELETE\uFF08\u53EF\u9009\uFF09",enum:["CREATE","UPDATE","DELETE"]},status:{type:"string",description:"\u8BB0\u5F55\u72B6\u6001\uFF1AAPPLIED\uFF08\u5DF2\u751F\u6548\uFF09/ REVERTED\uFF08\u5DF2\u64A4\u9500\uFF09/ REVERT_FAILED\uFF08\u64A4\u9500\u5931\u8D25\uFF09\uFF08\u53EF\u9009\uFF09",enum:["APPLIED","REVERTED","REVERT_FAILED"]},taskInstanceId:{type:"string",description:"\u4EFB\u52A1\u5B9E\u4F8B ID\uFF08\u53EF\u9009\uFF09"},startTime:{type:"string",description:"\u8D77\u59CB\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-01T00:00:00\uFF08\u53EF\u9009\uFF09"},endTime:{type:"string",description:"\u7ED3\u675F\u65F6\u95F4\uFF0CISO \u683C\u5F0F\u5982 2026-08-02T00:00:00\uFF08\u53EF\u9009\uFF09"},page:{type:"number",description:"\u9875\u7801\uFF0C\u9ED8\u8BA4 1"},pageSize:{type:"number",description:"\u6BCF\u9875\u6761\u6570\uFF0C\u9ED8\u8BA4 20"}},required:[]}},v=new Set(["create_memory","read_memory","update_memory","delete_memory","search_memory","list_memories","get_memory_stats","list_memories_by_file","memory_recurrence","memory_recurrence_complete"]),P={name:"launch_config_list",description:"\u67E5\u8BE2\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u7684\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u5217\u8868\u3002\u6BCF\u4E2A\u542F\u52A8\u9879\u542B id\u3001name\u3001type\uFF08generic/java/python/node/go/php\uFF09\u3001command\u3001cwd\u3001env\u3001jdkId\u3001groupId\u3001sortOrder\u3002\u67E5\u8BE2\u8303\u56F4\u81EA\u52A8\u9650\u5B9A\u4E3A\u5F53\u524D\u9879\u76EE\uFF0C\u65E0\u9700\u4F20 projectId\u3002",inputSchema:{type:"object",properties:{},required:[]}},j={name:"launch_config_create",description:"\u5728\u5F53\u524D Agent \u6240\u5C5E\u9879\u76EE\u4E0B\u65B0\u5EFA\u542F\u52A8\u9879\uFF08\u7C7B IDEA Run Configuration\uFF09\u3002\u521B\u5EFA\u524D\u5EFA\u8BAE\u5148 launch_config_list \u67E5\u770B\u73B0\u6709\u914D\u7F6E\u4E0E\u547D\u540D\u4E60\u60EF\u3002\u9879\u76EE\u8303\u56F4\u81EA\u52A8\u63A8\u5BFC\uFF0C\u65E0\u9700\u4F20 projectId\u3002cwd\uFF08\u5DE5\u4F5C\u76EE\u5F55\uFF09\u4E3A\u5FC5\u586B\u9879\uFF0C\u7F3A\u5931\u5C06\u521B\u5EFA\u5931\u8D25\u2014\u2014\u8BF7\u4F20\u5165\u9879\u76EE\u5B9E\u9645\u4EE3\u7801/\u6784\u5EFA\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5982 D:/code/xxx/backend\uFF1B\u4E0D\u786E\u5B9A\u65F6\u53EF\u7528\u5DE5\u4F5C\u533A\u7EDD\u5BF9\u8DEF\u5F84\u3002\u521B\u5EFA\u6210\u529F\u540E\u8FD4\u56DE\u65B0\u542F\u52A8\u9879\u5B8C\u6574\u4FE1\u606F\uFF08\u542B id\uFF09\u3002",inputSchema:{type:"object",properties:{name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u5FC5\u586B\uFF0C\u9879\u76EE\u5185\u552F\u4E00\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 generic\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u5FC5\u586B\uFF0C\u22648192 \u5B57\u7B26\uFF09\u3002\u652F\u6301\u5360\u4F4D\u7B26 ${WORKSPACE}\uFF08\u9879\u76EE\u5DE5\u4F5C\u533A\uFF09\u3001${JAVA_HOME}\uFF08\u6240\u9009 JDK\uFF09\u3001${VAR}\uFF08env \u4E2D\u5B9A\u4E49\u7684\u53D8\u91CF\uFF09\u3002\u793A\u4F8B\uFF1Anpm run dev\u3001python main.py\u3001mvn spring-boot:run"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u5FC5\u586B\uFF0C\u2264512 \u5B57\u7B26\uFF09\u2014\u2014\u9879\u76EE\u5B9E\u9645\u4EE3\u7801/\u6784\u5EFA\u76EE\u5F55\u7684\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u5982 D:/code/xxx/backend"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u226464 \u9879\uFF09\uFF0C\u989D\u5916\u5C5E\u6027\uFF1A\u5B57\u7B26\u4E32\u503C",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF0Cnull/\u7A7A=\u672A\u5206\u7EC4\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4\u8FFD\u52A0\u5230\u6240\u5728\u5BB9\u5668\u672B\u5C3E\uFF09"},readinessPattern:{type:"string",description:'\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0C\u2264512 \u5B57\u7B26\uFF0CJS RegExp \u8BED\u6CD5\uFF09\u3002\u8BBE\u7F6E\u540E wait_timeout_ms \u7B49\u5F85\u7684 ready \u4FE1\u53F7\u6539\u4E3A"\u8F93\u51FA\u884C\u547D\u4E2D\u8BE5\u6B63\u5219"\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u5E38\u9A7B\u8FDB\u7A0B\uFF0C\u5982 worker/\u6D88\u8D39\u8005\uFF09\u3002\u793A\u4F8B\uFF1A^Server ready|^Build (SUCCESS|successful)\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B'}},required:["name","command","cwd"]}},x={name:"launch_config_update",description:"\u66F4\u65B0\u542F\u52A8\u9879\uFF08\u540D\u79F0/\u7C7B\u578B/\u547D\u4EE4/\u5DE5\u4F5C\u76EE\u5F55/\u73AF\u5883\u53D8\u91CF/JDK/\u5206\u7EC4/\u6392\u5E8F\uFF09\u3002\u672A\u4F20\u5B57\u6BB5\u4FDD\u6301\u539F\u503C\uFF1B\u4FEE\u6539\u540D\u79F0\u65F6\u9879\u76EE\u5185\u4E0D\u80FD\u91CD\u540D\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u8FD0\u884C\u4E2D\u7684\u542F\u52A8\u9879\uFF1A\u4FEE\u6539\u914D\u7F6E\u4E0D\u4F1A\u5F71\u54CD\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF0C\u9700\u91CD\u542F\u540E\u751F\u6548\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},name:{type:"string",description:"\u542F\u52A8\u9879\u540D\u79F0\uFF08\u53EF\u9009\uFF0C\u2264128 \u5B57\u7B26\uFF09"},type:{type:"string",description:"\u542F\u52A8\u9879\u7C7B\u578B\uFF08\u53EF\u9009\uFF09\uFF1Ageneric / java / python / node / go / php",enum:["generic","java","python","node","go","php"]},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\uFF08\u53EF\u9009\uFF0C\u22648192 \u5B57\u7B26\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u989D\u5916\u73AF\u5883\u53D8\u91CF\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u539F env\uFF09",additionalProperties:{type:"string"}},jdkId:{type:"string",description:"\u9009\u4E2D\u7684 JDK ID\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},groupId:{type:"string",description:"\u6240\u5C5E\u542F\u52A8\u9879\u5206\u7EC4 ID\uFF08\u53EF\u9009\uFF09"},clearGroupId:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5206\u7EC4\uFF08\u79FB\u56DE\u9ED8\u8BA4\u5206\u7EC4\uFF0C\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E groupId \u540C\u65F6\u4F20\uFF09"},sortOrder:{type:"number",description:"\u6392\u5E8F\u6743\u91CD\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B"},clearReadinessPattern:{type:"boolean",description:"\u663E\u5F0F\u6E05\u9664\u5C31\u7EEA\u6B63\u5219\uFF0C\u6062\u590D\u7AEF\u53E3\u63A2\u6D4B\uFF08\u53EF\u9009\uFF1B\u4E0D\u80FD\u4E0E readinessPattern \u540C\u65F6\u4F20\uFF09"}},required:["configId"]}},k={name:"launch_config_delete",description:"\u5220\u9664\u542F\u52A8\u9879\u914D\u7F6E\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u6CE8\u610F\uFF1A\u82E5\u8BE5\u542F\u52A8\u9879\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148 launch_config_stop \u505C\u6B62\u8FDB\u7A0B\u518D\u5220\u9664\uFF08\u5220\u9664\u914D\u7F6E\u4E0D\u4F1A\u81EA\u52A8\u505C\u6B62\u5DF2\u8FD0\u884C\u8FDB\u7A0B\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},U={name:"launch_config_start",description:"\u542F\u52A8\u542F\u52A8\u9879\uFF0C\u5728\u8C03\u7528\u8005\u6240\u5728 runtime-bridge \u673A\u5668\u4E0A\u62C9\u8D77\u8FDB\u7A0B\u3002\u652F\u6301\u5355\u9879\uFF08configId\uFF09\u4E0E\u6279\u91CF\uFF08configIds \u6570\u7EC4\uFF0C\u4E00\u6B21\u5E76\u884C\u62C9\u8D77\u591A\u4E2A\uFF09\uFF1A\u6279\u91CF\u65F6\u9010\u9879\u4EE5\u914D\u7F6E\u4E3A\u51C6\u5E76\u884C\u542F\u52A8\uFF0C\u5355\u9879\u5931\u8D25\u4E0D\u5F71\u54CD\u5176\u4F59\u9879\uFF0C\u8FD4\u56DE\u9010\u9879\u7ED3\u679C\u4E0E\u6C47\u603B\uFF08ready/exited/timeout/failed \u8BA1\u6570\uFF09\uFF1B\u5EFA\u8BAE\u542F\u52A8\u524D\u5148 launch_config_status \u786E\u8BA4\u672A\u5728\u8FD0\u884C\u3002\u9ED8\u8BA4\u4E0D\u7B49\u5F85\u7ACB\u5373\u8FD4\u56DE\uFF1B\u4F20 wait_timeout_ms > 0 \u65F6\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\uFF08\u5355\u9879\u8FD4\u56DE wait \u5B57\u6BB5\uFF0C\u6279\u91CF\u5BF9\u5168\u90E8\u6210\u529F\u9879\u5E76\u884C\u7B49\u5F85\u3001\u6574\u4F53\u8FD4\u56DE\u65F6\u95F4\u2248\u6700\u6162\u4E00\u9879\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5355\u9879\u542F\u52A8\u65F6\u5FC5\u586B\uFF1B\u4E0E configIds \u4E8C\u9009\u4E00\uFF09"},configIds:{type:"array",items:{type:"string"},description:"\u6279\u91CF\u542F\u52A8\uFF1A\u542F\u52A8\u9879 ID \u6570\u7EC4\uFF081-20 \u4E2A\uFF0C\u81EA\u52A8\u53BB\u91CD\uFF1B\u4E0E configId \u4E8C\u9009\u4E00\uFF0C\u4F20\u4E86\u4F18\u5148\u8D70\u6279\u91CF\uFF09\u3002\u6279\u91CF\u6A21\u5F0F\u4EE5\u5404\u9879\u914D\u7F6E\u4E3A\u51C6\u542F\u52A8\uFF0C\u5FFD\u7565 command/cwd/env/readinessPattern \u8986\u76D6\u53C2\u6570\uFF1BworkspacePath/jdkPath \u4E0E wait_timeout_ms \u5BF9\u5168\u90E8\u9879\u751F\u6548"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF1B\u4EC5\u5355\u9879\u6A21\u5F0F\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF1B\u5355\u9879=\u8BE5\u9879\u8986\u76D6\uFF0C\u6279\u91CF=\u5168\u90E8\u9879\u751F\u6548\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u4EC5\u5355\u9879\u6A21\u5F0F\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\uFF08\u9002\u914D\u4E0D\u76D1\u542C\u7AEF\u53E3\u7684\u8FDB\u7A0B\uFF09\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF0Cspawn \u540E\u7ACB\u5373\u8FD4\u56DE\uFF09\u3002>0 \u65F6\u672C\u6B21\u8C03\u7528\u963B\u585E\uFF0C\u76F4\u5230\u4EE5\u4E0B\u4FE1\u53F7\u6700\u5148\u5230\u8FBE\u5E76\u5728 wait \u5B57\u6BB5\u8FD4\u56DE\uFF1Aready=\u8FDB\u7A0B\u6811\u63A2\u6D4B\u5230\u76D1\u542C\u7AEF\u53E3\uFF08\u5E38\u9A7B\u670D\u52A1\u542F\u52A8\u6210\u529F\uFF0C\u9644 ports\uFF09\uFF0C\u6216\u8F93\u51FA\u884C\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219\uFF08readinessPattern\uFF0C\u89C1\u4E0A\uFF09\uFF1Bexited=\u8FDB\u7A0B\u9000\u51FA\uFF08\u4E00\u6B21\u6027\u547D\u4EE4\u5B8C\u6210\u6216\u542F\u52A8\u5FEB\u901F\u5931\u8D25\uFF0CexitCode=0 \u4E3A\u6210\u529F\uFF0C\u975E 0 \u68C0\u67E5 logTail \u5B9A\u4F4D\u539F\u56E0\uFF09\uFF1Bstopped=\u7B49\u5F85\u671F\u95F4\u88AB\u505C\u6B62\uFF1Btimeout=\u8D85\u65F6\uFF0C\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF08\u4E0D\u7B97\u9519\u8BEF\uFF0C\u6309 logTail \u81EA\u884C\u5224\u65AD\u6216\u7A0D\u540E launch_config_logs \u8F6E\u8BE2\uFF09\u3002\u4E0A\u9650 300000\uFF085 \u5206\u949F\uFF09\uFF0C\u6162\u542F\u52A8\u670D\u52A1\uFF08\u5982 Spring Boot\uFF09\u5EFA\u8BAE 60000-120000\u3002\u6279\u91CF\u6A21\u5F0F\u5BF9\u5168\u90E8\u6210\u529F\u9879\u5E76\u884C\u7B49\u5F85\uFF08\u6BCF\u9879\u72EC\u7ACB\u8BA1\u65F6\uFF09\u3002"}},required:[]}},q={name:"launch_config_restart",description:"\u91CD\u542F\u542F\u52A8\u9879\uFF08bridge \u5185\u539F\u5B50\u6267\u884C\u300C\u505C\u6B62\u65E7\u8FDB\u7A0B + \u91CD\u65B0\u62C9\u8D77\u300D\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76F8\u6BD4\u5148 launch_config_stop \u518D launch_config_start\uFF0C\u4E0D\u5B58\u5728 stop \u8BF7\u6C42\u4E22\u5931\u5BFC\u81F4 start \u649E\u4E0A\u4ECD\u5728\u8FD0\u884C\u65E7\u8FDB\u7A0B\u7684\u7ADE\u6001\u3002\u672A\u8FD0\u884C\u65F6\u7B49\u4EF7\u4E8E\u76F4\u63A5 start\u3002\u8986\u76D6\u53C2\u6570\uFF08command/cwd/env \u7B49\uFF09\u4E0E\u542F\u52A8\u7B49\u5F85\u8BED\u4E49\u540C launch_config_start\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},command:{type:"string",description:"\u542F\u52A8\u547D\u4EE4\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},cwd:{type:"string",description:"\u5DE5\u4F5C\u76EE\u5F55\u8986\u76D6\uFF08\u53EF\u9009\uFF09"},env:{type:"object",description:"\u73AF\u5883\u53D8\u91CF\u8986\u76D6\uFF08\u53EF\u9009\uFF0C\u6574\u4F53\u8986\u76D6\u914D\u7F6E env\uFF09",additionalProperties:{type:"string"}},jdkPath:{type:"string",description:"JDK \u8DEF\u5F84\uFF08type=java \u65F6\u6709\u6548\uFF0C\u53EF\u9009\uFF09"},workspacePath:{type:"string",description:"\u9879\u76EE\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u53EF\u9009\uFF09"},readinessPattern:{type:"string",description:"\u5C31\u7EEA\u65E5\u5FD7\u6B63\u5219\u8986\u76D6\uFF08\u53EF\u9009\uFF0CJS RegExp \u8BED\u6CD5\uFF09\uFF1A\u8BBE\u7F6E\u540E\u65B0\u8FDB\u7A0B\u542F\u52A8\u7B49\u5F85\u7684 ready \u4FE1\u53F7\u4E3A\u8F93\u51FA\u884C\u547D\u4E2D\u6B63\u5219\u3002\u7559\u7A7A=\u4EE5\u542F\u52A8\u9879\u914D\u7F6E\u4E3A\u51C6\uFF08\u9ED8\u8BA4\u7AEF\u53E3\u76D1\u542C\u63A2\u6D4B\uFF09"},wait_timeout_ms:{type:"number",description:"\u963B\u585E\u7B49\u5F85\u65B0\u8FDB\u7A0B\u542F\u52A8\u7ED3\u679C\u7684\u8D85\u65F6\u6BEB\u79D2\u6570\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0=\u4E0D\u7B49\u5F85\uFF09\u3002\u8BED\u4E49\u540C launch_config_start\uFF1Aready=\u7AEF\u53E3\u5C31\u7EEA\u6216\u65E5\u5FD7\u547D\u4E2D\u5C31\u7EEA\u6B63\u5219 / exited=\u8FDB\u7A0B\u9000\u51FA / timeout=\u8D85\u65F6\uFF08\u8FDB\u7A0B\u4ECD\u5728\u8FD0\u884C\uFF0C\u975E\u9519\u8BEF\uFF09\u3002"}},required:["configId"]}},G={name:"launch_config_stop",description:"\u505C\u6B62\u542F\u52A8\u9879\u8FDB\u7A0B\uFF08\u542B\u8FDB\u7A0B\u6811\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002\u82E5\u8FDB\u7A0B\u5DF2\u9000\u51FA\uFF0C\u8FD4\u56DE\u5DF2\u505C\u6B62/\u65E0\u8FD0\u884C\u8FDB\u7A0B\u7684\u72B6\u6001\uFF0C\u4E0D\u62A5\u9519\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"}},required:["configId"]}},w={name:"launch_config_logs",description:"\u589E\u91CF\u62C9\u53D6\u542F\u52A8\u9879\u8FD0\u884C\u65E5\u5FD7\uFF08\u6700\u8FD1 200 \u6761\u73AF\u5F62\u7F13\u51B2\uFF0C\u4EE3\u7406\u5230\u8C03\u7528\u8005\u6240\u5728 runtime-bridge\uFF09\u3002\u9996\u6B21\u8C03\u7528\u4E0D\u4F20 since \u83B7\u53D6\u5168\u90E8\u7F13\u51B2\u65E5\u5FD7\uFF1B\u540E\u7EED\u6BCF\u6B21\u628A\u8FD4\u56DE\u7684 nextSince \u4F5C\u4E3A since \u7EED\u62C9\u589E\u91CF\u3002\u8FD4\u56DE\u5B57\u6BB5\uFF1Alines\uFF08\u65E5\u5FD7\u884C\uFF09\u3001nextSince\uFF08\u4E0B\u6B21\u6E38\u6807\uFF09\u3001running\uFF08\u8FDB\u7A0B\u662F\u5426\u8FD0\u884C\u4E2D\uFF09\u3002\u76EE\u6807\u542F\u52A8\u9879\u5FC5\u987B\u5C5E\u4E8E\u5F53\u524D\u9879\u76EE\uFF08\u670D\u52A1\u7AEF\u6821\u9A8C\uFF09\u3002",inputSchema:{type:"object",properties:{configId:{type:"string",description:"\u542F\u52A8\u9879 ID\uFF08\u5FC5\u586B\uFF09"},since:{type:"number",description:"\u65E5\u5FD7\u6E38\u6807\uFF08\u53EF\u9009\uFF0C\u9ED8\u8BA4 0 = \u4ECE\u5934\u62C9\u53D6\uFF09"}},required:["configId"]}},H={name:"launch_config_status",description:"\u67E5\u8BE2\u8C03\u7528\u8005\u6240\u5728 bridge \u673A\u5668\u4E0A\u5F53\u524D\u9879\u76EE\u7684\u5168\u90E8\u542F\u52A8\u9879\u8FD0\u884C\u72B6\u6001\u3002\u8FD4\u56DE runs \u6570\u7EC4\uFF1A\u6BCF\u9879\u542B configId\u3001status\uFF08running/exited/stopped\uFF09\u3001pid\u3001startTime\u3001command \u7B49\u3002\u4EC5\u8FD4\u56DE\u5F53\u524D\u9879\u76EE\u914D\u7F6E\u7684\u542F\u52A8\u9879\uFF08\u670D\u52A1\u7AEF\u6309\u9879\u76EE\u8FC7\u6EE4\uFF09\u3002",inputSchema:{type:"object",properties:{},required:[]}},F=new Set(["launch_config_list","launch_config_create","launch_config_update","launch_config_delete","launch_config_start","launch_config_restart","launch_config_stop","launch_config_logs","launch_config_status"]),K=[_,g,m,y,u,O,E,l,I,T,A,L,R,h,S,b,D,M,e,r,p,t,o,n,i,s,c,a,d,C,N,f,P,j,x,k,U,q,G,w,H];export{te as ABANDON_MEMORY_UPDATE_TOOL,V as CREATE_MEMORY_TOOL,R as CREATE_TASK_INSTANCE_COMMENT_TOOL,W as DELETE_MEMORY_TOOL,b as FINISH_TASK_ROLLBACK_TOOL,_ as GET_COLLEAGUE_TOOL,C as GET_DEBUG_LOG_CONFIG_TOOL,T as GET_DM_HISTORY_TOOL,A as GET_GROUP_HISTORY_TOOL,g as GET_GROUP_ROOMS_TOOL,$ as GET_MEMORY_STATS_TOOL,I as GET_MESSAGE_TOOL,m as GET_PROFILE_TOOL,u as HIRE_COLLEAGUES_BATCH_TOOL,y as HIRE_COLLEAGUE_TOOL,j as LAUNCH_CONFIG_CREATE_TOOL,k as LAUNCH_CONFIG_DELETE_TOOL,P as LAUNCH_CONFIG_LIST_TOOL,w as LAUNCH_CONFIG_LOGS_TOOL,q as LAUNCH_CONFIG_RESTART_TOOL,U as LAUNCH_CONFIG_START_TOOL,H as LAUNCH_CONFIG_STATUS_TOOL,G as LAUNCH_CONFIG_STOP_TOOL,F as LAUNCH_CONFIG_TOOL_NAMES,x as LAUNCH_CONFIG_UPDATE_TOOL,ee as LIST_MEMORIES_BY_FILE_TOOL,Q as LIST_MEMORIES_TOOL,K as MCP_TOOLS,ne as MEMORY_RECURRENCE_COMPLETE_TOOL,ie as MEMORY_RECURRENCE_TOOL,v as MEMORY_TOOL_NAMES,L as MY_TASK_TOOL,l as POLL_MESSAGE_TOOL,N as QUERY_DEBUG_LOGS_TOOL,f as QUERY_FILE_CHANGES_HISTORY_TOOL,z as READ_MEMORY_TOOL,D as REJECT_TASK_TOOL,X as SEARCH_MEMORY_TOOL,O as SEND_GROUP_TOOL,E as SEND_PRIVATE_TOOL,S as START_TASK_ROLLBACK_TOOL,h as SUBMIT_TASK_RESULT_TOOL,M as TERMINATE_TASK_TOOL,Z as UPDATE_MEMORY_TOOL};
|
|
42
42
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
|
-
import { CREATE_TASK_INSTANCE_COMMENT_TOOL, MCP_TOOLS, QUERY_FILE_CHANGES_HISTORY_TOOL, UPDATE_MEMORY_TOOL } from "./mcp-tools.js";
|
|
3
|
+
import { CREATE_TASK_INSTANCE_COMMENT_TOOL, MCP_TOOLS, QUERY_FILE_CHANGES_HISTORY_TOOL, UPDATE_MEMORY_TOOL, LAUNCH_CONFIG_TOOL_NAMES } from "./mcp-tools.js";
|
|
4
4
|
describe("create_task_instance_comment tool", () => {
|
|
5
5
|
it("documents that follow-up node notes should be left as task comments", () => {
|
|
6
6
|
assert.match(CREATE_TASK_INSTANCE_COMMENT_TOOL.description ?? "", /当需要告知后续节点需要注意的点时使用留言进行留言/);
|
|
@@ -48,6 +48,60 @@ describe("query_file_changes_history tool", () => {
|
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
|
+
describe("launch_config_* 启动项工具组", () => {
|
|
52
|
+
it("9 个工具全部注册在 MCP_TOOLS,工具名集合与之一致", () => {
|
|
53
|
+
const names = MCP_TOOLS.map((tool) => tool.name);
|
|
54
|
+
const expected = [
|
|
55
|
+
"launch_config_list",
|
|
56
|
+
"launch_config_create",
|
|
57
|
+
"launch_config_update",
|
|
58
|
+
"launch_config_delete",
|
|
59
|
+
"launch_config_start",
|
|
60
|
+
"launch_config_restart",
|
|
61
|
+
"launch_config_stop",
|
|
62
|
+
"launch_config_logs",
|
|
63
|
+
"launch_config_status",
|
|
64
|
+
];
|
|
65
|
+
for (const toolName of expected) {
|
|
66
|
+
assert.equal(names.includes(toolName), true, `${toolName} should be in MCP_TOOLS`);
|
|
67
|
+
}
|
|
68
|
+
assert.deepEqual([...LAUNCH_CONFIG_TOOL_NAMES].sort(), [...expected].sort());
|
|
69
|
+
});
|
|
70
|
+
it("工具参数不接收 projectId(项目范围由服务端从调用者身份推导)", () => {
|
|
71
|
+
for (const toolName of [...LAUNCH_CONFIG_TOOL_NAMES]) {
|
|
72
|
+
const tool = MCP_TOOLS.find((t) => t.name === toolName);
|
|
73
|
+
assert.ok(tool, `${toolName} should exist`);
|
|
74
|
+
assert.equal("projectId" in (tool.inputSchema.properties ?? {}), false, `${toolName} 不应包含 projectId 参数`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
it("launch_config_start 声明 wait_timeout_ms 与 configIds(批量启动,默认 0 不等待)", () => {
|
|
78
|
+
const tool = MCP_TOOLS.find((t) => t.name === "launch_config_start");
|
|
79
|
+
assert.ok(tool);
|
|
80
|
+
const schema = tool.inputSchema;
|
|
81
|
+
const param = schema.properties?.wait_timeout_ms;
|
|
82
|
+
assert.ok(param, "wait_timeout_ms should be declared");
|
|
83
|
+
assert.equal(param.type, "number");
|
|
84
|
+
// 批量参数:字符串数组(与 configId 二选一)
|
|
85
|
+
const configIds = schema.properties?.configIds;
|
|
86
|
+
assert.ok(configIds, "configIds should be declared");
|
|
87
|
+
assert.equal(configIds.type, "array");
|
|
88
|
+
// configId 与 configIds 二选一:均不强制必填
|
|
89
|
+
assert.deepEqual(tool.inputSchema.required ?? [], []);
|
|
90
|
+
// 就绪正则覆盖:单项模式支持(server 侧 handleStart 读取透传)
|
|
91
|
+
const pattern = schema.properties?.readinessPattern;
|
|
92
|
+
assert.ok(pattern, "readinessPattern should be declared");
|
|
93
|
+
assert.equal(pattern.type, "string");
|
|
94
|
+
});
|
|
95
|
+
it("launch_config_restart 声明 readinessPattern 覆盖(与 start 的覆盖参数集对齐)", () => {
|
|
96
|
+
const tool = MCP_TOOLS.find((t) => t.name === "launch_config_restart");
|
|
97
|
+
assert.ok(tool);
|
|
98
|
+
const schema = tool.inputSchema;
|
|
99
|
+
for (const overrideParam of ["command", "cwd", "env", "jdkPath", "workspacePath", "readinessPattern", "wait_timeout_ms"]) {
|
|
100
|
+
assert.ok(schema.properties?.[overrideParam], `${overrideParam} should be declared`);
|
|
101
|
+
}
|
|
102
|
+
assert.deepEqual(tool.inputSchema.required ?? [], ["configId"]);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
51
105
|
function assertNoForbiddenTopLevelSchemaKeyword(schema) {
|
|
52
106
|
const forbiddenTopLevelKeywords = ["oneOf", "anyOf", "allOf", "enum", "const", "not"];
|
|
53
107
|
for (const keyword of forbiddenTopLevelKeywords) {
|
|
@@ -109,7 +109,11 @@ describe('MemoryStore', () => {
|
|
|
109
109
|
const recentList = await store.listByType('agent_memory');
|
|
110
110
|
assert.equal(recentList.length, 1);
|
|
111
111
|
assert.equal(recentList[0]?.memory_type, 'agent_memory');
|
|
112
|
-
|
|
112
|
+
// project_memory 已放开列举限制(文件变更检测需枚举永久记忆),应正常返回
|
|
113
|
+
const projectList = await store.listByType('project_memory');
|
|
114
|
+
assert.equal(projectList.length, 1);
|
|
115
|
+
assert.equal(projectList[0]?.memory_type, 'project_memory');
|
|
116
|
+
await assert.rejects(() => store.listByType('invalid_type'), /Invalid memory_type/);
|
|
113
117
|
}
|
|
114
118
|
finally {
|
|
115
119
|
await rm(dir, { recursive: true, force: true });
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
import type { Readable } from 'node:stream';
|
|
3
|
+
export interface ParentExitWatcher {
|
|
4
|
+
|
|
5
|
+
dispose(): void;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export declare function watchParentLifecycle(): void;
|
|
9
|
+
|
|
10
|
+
export declare function createParentExitWatcher(stdin: Readable | null | undefined, exitFn: (code: number) => void): ParentExitWatcher;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{appendStartupLogLine as i}from"./logger.js";let n=!1;function a(){n||(n=!0,f(process.stdin,()=>process.exit(0)))}function f(o,s){const e=o;if(!e||e.isTTY)return{dispose:()=>{}};let t=!1;const r=()=>{t||(t=!0,i("warn","[ParentLifecycle] \u7236\u8FDB\u7A0B stdin \u901A\u9053\u5DF2\u5173\u95ED\uFF08\u7236\u8FDB\u7A0B\u9000\u51FA\uFF09\uFF0CMCP node \u5373\u5C06\u9000\u51FA"),s(0))};return e.on("end",r),e.on("close",r),e.on("error",r),{dispose:()=>{e.off("end",r),e.off("close",r),e.off("error",r)}}}export{f as createParentExitWatcher,a as watchParentLifecycle};
|
|
2
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { EventEmitter } from 'node:events';
|
|
3
|
+
import { describe, it } from 'node:test';
|
|
4
|
+
import { createParentExitWatcher } from './parent-lifecycle.js';
|
|
5
|
+
class FakeStdin extends EventEmitter {
|
|
6
|
+
isTTY;
|
|
7
|
+
}
|
|
8
|
+
describe('createParentExitWatcher', () => {
|
|
9
|
+
it('exits with code 0 when stdin receives EOF (end)', () => {
|
|
10
|
+
const stdin = new FakeStdin();
|
|
11
|
+
let exitCode = null;
|
|
12
|
+
createParentExitWatcher(stdin, (code) => {
|
|
13
|
+
exitCode = code;
|
|
14
|
+
});
|
|
15
|
+
stdin.emit('end');
|
|
16
|
+
assert.equal(exitCode, 0);
|
|
17
|
+
});
|
|
18
|
+
it('exits on close', () => {
|
|
19
|
+
const stdin = new FakeStdin();
|
|
20
|
+
let exitCode = null;
|
|
21
|
+
createParentExitWatcher(stdin, (code) => {
|
|
22
|
+
exitCode = code;
|
|
23
|
+
});
|
|
24
|
+
stdin.emit('close');
|
|
25
|
+
assert.equal(exitCode, 0);
|
|
26
|
+
});
|
|
27
|
+
it('exits on stream error', () => {
|
|
28
|
+
const stdin = new FakeStdin();
|
|
29
|
+
let exitCode = null;
|
|
30
|
+
createParentExitWatcher(stdin, (code) => {
|
|
31
|
+
exitCode = code;
|
|
32
|
+
});
|
|
33
|
+
stdin.emit('error', new Error('pipe broken'));
|
|
34
|
+
assert.equal(exitCode, 0);
|
|
35
|
+
});
|
|
36
|
+
it('exits only once when end and close both fire', () => {
|
|
37
|
+
const stdin = new FakeStdin();
|
|
38
|
+
let exitCount = 0;
|
|
39
|
+
createParentExitWatcher(stdin, () => {
|
|
40
|
+
exitCount += 1;
|
|
41
|
+
});
|
|
42
|
+
stdin.emit('end');
|
|
43
|
+
stdin.emit('close');
|
|
44
|
+
assert.equal(exitCount, 1);
|
|
45
|
+
});
|
|
46
|
+
it('does not watch a TTY stdin (interactive/degraded mode)', () => {
|
|
47
|
+
const stdin = new FakeStdin();
|
|
48
|
+
stdin.isTTY = true;
|
|
49
|
+
// EventEmitter 无 error 监听器时 emit('error') 会抛出,这里静默掉
|
|
50
|
+
stdin.on('error', () => { });
|
|
51
|
+
let exitCount = 0;
|
|
52
|
+
createParentExitWatcher(stdin, () => {
|
|
53
|
+
exitCount += 1;
|
|
54
|
+
});
|
|
55
|
+
stdin.emit('end');
|
|
56
|
+
stdin.emit('close');
|
|
57
|
+
stdin.emit('error', new Error('x'));
|
|
58
|
+
assert.equal(exitCount, 0);
|
|
59
|
+
});
|
|
60
|
+
it('does not throw when stdin is absent', () => {
|
|
61
|
+
let exitCount = 0;
|
|
62
|
+
const watcher = createParentExitWatcher(null, () => {
|
|
63
|
+
exitCount += 1;
|
|
64
|
+
});
|
|
65
|
+
assert.equal(exitCount, 0);
|
|
66
|
+
watcher.dispose();
|
|
67
|
+
});
|
|
68
|
+
it('dispose removes all listeners', () => {
|
|
69
|
+
const stdin = new FakeStdin();
|
|
70
|
+
stdin.on('error', () => { });
|
|
71
|
+
let exitCount = 0;
|
|
72
|
+
const watcher = createParentExitWatcher(stdin, () => {
|
|
73
|
+
exitCount += 1;
|
|
74
|
+
});
|
|
75
|
+
watcher.dispose();
|
|
76
|
+
stdin.emit('end');
|
|
77
|
+
stdin.emit('close');
|
|
78
|
+
stdin.emit('error', new Error('x'));
|
|
79
|
+
assert.equal(exitCount, 0);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{EventEmitter as
|
|
1
|
+
import{EventEmitter as _}from"node:events";import{logger as f}from"./logger.js";const u="[temp clipboard paste file]",h=/[A-Z]:(?:\\\\|\\)[^\r\n"'`]*?(?:\\\\|\\)mini-term-clipboard(?:\\\\|\\)paste-\d+\.txt/gi,g=/\/[^\r\n"'`]*?\/mini-term-clipboard\/paste-\d+\.txt/gi,A=/mini-term-clipboard[\\/]paste-\d+\.txt/gi,w=new Set(["aws-mcp","agents-work-studio"]),d=500;function p(m){return m.replace(h,u).replace(g,u).replace(A,u)}class o extends _{config;currentStatus="stopped";currentAction=null;constructor(e){super(),this.config=e}reportStarting(){this.updateStatus("starting")}reportRunning(){this.updateStatus("running")}reportWaitingInput(){this.updateStatus("waiting_input"),this.clearAction()}reportThinking(){this.updateStatus("thinking"),this.clearAction()}reportStopped(){this.updateStatus("stopped"),this.clearAction()}reportError(){this.updateStatus("error"),this.clearAction()}reportToolUse(e,t){const r=this.parseToolAction(e,t);this.updateStatus("tool_using",r.type,r.label,r.detail)}reportToolResult(e){this.updateStatus("tool_using",this.currentAction?.type,this.currentAction?.label,this.currentAction?.detail,this.formatToolResult(e))}reportToolError(e){const t=e instanceof Error?e.message:String(e);this.updateStatus("error",this.currentAction?.type,this.currentAction?.label||"Tool call failed",this.currentAction?.detail,t),this.clearAction()}static KNOWN_MCP_TOOLS={get_colleague:"aws-mcp",get_group_rooms:"aws-mcp",get_profile:"aws-mcp",hire_colleague:"aws-mcp",hire_colleagues_batch:"aws-mcp",send_group:"aws-mcp",send_private:"aws-mcp",poll_message:"aws-mcp",get_message:"aws-mcp",get_dm_history:"aws-mcp",get_group_history:"aws-mcp",my_task:"aws-mcp",create_task_instance_comment:"aws-mcp",submit_task_result:"aws-mcp",start_task_rollback:"aws-mcp",finish_task_rollback:"aws-mcp",reject_task:"aws-mcp",terminate_task:"aws-mcp",create_memory:"aws-mcp",read_memory:"aws-mcp",update_memory:"aws-mcp",delete_memory:"aws-mcp",search_memory:"aws-mcp",list_memories:"aws-mcp"};static canonicalizeMcpServer(e,t){const r=o.KNOWN_MCP_TOOLS[t.toLowerCase()];return r&&w.has(e.toLowerCase())?r:e}static formatMcpDetail(e,t){return e?t?`${o.canonicalizeMcpServer(e,t)}/${t}`:e:t}parseToolAction(e,t){const r=e.toLowerCase(),i=r.replace(/[_-]/g,""),a=(...n)=>{for(const c of n){if(typeof c=="string"&&c.trim())return p(c);if(Array.isArray(c)&&c.length>0){const s=c[0];if(typeof s=="string"&&s.trim())return p(s)}}};if(r.includes("skill")||r.includes("disclose"))return{type:"skill",label:"Calling skill",detail:t?.name?p(String(t.name)):void 0};const l=o.KNOWN_MCP_TOOLS[r];if(l)return{type:"mcp",label:"Calling MCP",detail:o.formatMcpDetail(l,e)};if(r.startsWith("mcp__")){const n=e.split("__"),c=n[1]||"",s=n.slice(2).join("__");return{type:"mcp",label:"Calling MCP",detail:o.formatMcpDetail(c,s)}}if(r.startsWith("mcp_")||r.includes("_mcp_"))return{type:"mcp",label:"Calling MCP",detail:e.replace(/^mcp_/,"").replace(/_/g," ")};if(r.includes("-mcp__")){const n=e.split("__"),c=n[0],s=n.slice(1).join("__");return{type:"mcp",label:"Calling MCP",detail:o.formatMcpDetail(c,s)}}if(i==="edit"||i==="editfile"||i==="strreplace"||i==="editcode"||i==="applypatch"||i==="multiedit")return{type:"edit_file",label:"\u7F16\u8F91\u6587\u4EF6",detail:a(t?.path,t?.file_path,t?.filePath,t?.target_file,t?.targetFile)};if(i==="write"||i==="writefile"||i==="fswrite")return{type:"write_file",label:"\u5199\u5165\u6587\u4EF6",detail:a(t?.path,t?.file_path,t?.filePath,t?.target_file,t?.targetFile)};if(i==="read"||i==="readfile"||i==="readcode"||i==="readmultiplefiles")return{type:"read_file",label:"\u8BFB\u53D6\u6587\u4EF6",detail:a(t?.path,t?.file_path,t?.filePath,t?.paths,t?.target_file,t?.targetFile)};if(i==="bash"||i==="execute"||i==="shell"||i==="pwsh"||i==="executepwsh"||i==="controlpwshprocess"||i==="runcommand"){const n=a(t?.command,t?.cmd,t?.argv);return{type:"bash",label:"\u6267\u884C\u547D\u4EE4",detail:n&&n.length>d?`${n.substring(0,d)}...\uFF08\u5185\u5BB9\u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD\uFF09`:n}}return i==="search"||i==="grep"||i==="find"||i==="glob"||i==="grepsearch"||i==="filesearch"?{type:"search",label:"\u641C\u7D22\u6587\u4EF6",detail:t?.query?p(String(t.query)):void 0}:r.includes("web")||r.includes("fetch")||r.includes("http")?{type:"web",label:"\u7F51\u7EDC\u8BF7\u6C42",detail:t?.url?p(String(t.url)):void 0}:{type:"tool_using",label:"Calling tool",detail:e}}updateStatus(e,t,r,i,a){this.currentStatus=e,t&&(this.currentAction={type:t,label:r,detail:i});const l={agentId:this.config.agentId,status:e,actionType:t??void 0,actionLabel:t?this.currentAction?.label:void 0,actionDetail:t?this.currentAction?.detail:void 0,actionResult:a,timestamp:new Date().toISOString()};f.info(`[StatusReporter] \u72B6\u6001\u66F4\u65B0: ${e}${r?` - ${r}`:""}`),this.config.sendStatusUpdate(l)}clearAction(){this.currentAction=null}formatToolResult(e){let t;try{t=typeof e=="string"?e:JSON.stringify(e,null,2)}catch(l){t=`[Unable to serialize tool result: ${l instanceof Error?l.message:String(l)}]`}const r=t||String(e),i=4e3,a=p(r);return a.length<=i?a:`${a.slice(0,i)}
|
|
2
2
|
...(result too long, truncated)`}getCurrentStatus(){return{agentId:this.config.agentId,status:this.currentStatus,actionType:this.currentAction?.type,actionLabel:this.currentAction?.label,actionDetail:this.currentAction?.detail,timestamp:new Date().toISOString()}}}export{o as StatusReporter,p as redactTransientClipboardPastePaths};
|
|
3
3
|
|
|
@@ -175,6 +175,8 @@ export interface GroupMessage {
|
|
|
175
175
|
senderName: string;
|
|
176
176
|
projectId?: string;
|
|
177
177
|
roomId?: string;
|
|
178
|
+
|
|
179
|
+
_awsServerMessage?: boolean;
|
|
178
180
|
content: string;
|
|
179
181
|
timestamp: string;
|
|
180
182
|
|
|
@@ -202,6 +204,8 @@ export interface DirectMessage {
|
|
|
202
204
|
msgId: string;
|
|
203
205
|
_msgId?: string;
|
|
204
206
|
_requireAck?: boolean;
|
|
207
|
+
|
|
208
|
+
_awsServerMessage?: boolean;
|
|
205
209
|
callId?: string;
|
|
206
210
|
senderId: string;
|
|
207
211
|
senderName: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import h from"node:fs";import{workerData as I}from"node:worker_threads";const e=I,s=new BigInt64Array(e.buffer),c=e.staleThresholdMs,a=e.checkIntervalMs,g=3;function i(t){if(e.logFilePath)try{h.appendFileSync(e.logFilePath,`${new Date().toISOString()} [ERROR] ${t}
|
|
2
|
+
`,"utf8")}catch{}}let l=Date.now();setInterval(()=>{const t=Date.now(),f=t-l;l=t;const o=Number(Atomics.load(s,0));if(o===0)return;const n=t-o;if(!(n<=c)){if(f>a*g){Atomics.store(s,0,BigInt(t));return}i(`[Watchdog] \u4E8B\u4EF6\u5FAA\u73AF\u7591\u4F3C\u51BB\u7ED3\uFF08tick \u5DF2\u8FC7\u671F ${n}ms > ${c}ms\uFF09\uFF0C\u5F3A\u5236\u7EC8\u6B62\u8FDB\u7A0B`);try{process.kill(process.pid,"SIGKILL")}catch(r){i(`[Watchdog] SIGKILL \u5931\u8D25: ${r instanceof Error?r.message:String(r)}`)}}},a);
|
|
3
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface WatchdogOptions {
|
|
2
|
+
|
|
3
|
+
tickMs?: number;
|
|
4
|
+
|
|
5
|
+
staleThresholdMs?: number;
|
|
6
|
+
|
|
7
|
+
checkIntervalMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ResolvedWatchdogOptions {
|
|
10
|
+
tickMs: number;
|
|
11
|
+
staleThresholdMs: number;
|
|
12
|
+
checkIntervalMs: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export declare function resolveWatchdogOptions(options?: WatchdogOptions, env?: NodeJS.ProcessEnv): ResolvedWatchdogOptions;
|
|
16
|
+
|
|
17
|
+
export declare function startEventLoopWatchdog(options?: WatchdogOptions): void;
|