aws-runtime-bridge 1.9.102 → 1.9.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/adapter/AcodeSdkAdapter.d.ts +2 -0
- package/dist/adapter/AcodeSdkAdapter.js +3 -3
- package/dist/index.js +1 -1
- package/dist/remote-desktop/computer-use-backend.d.ts +111 -0
- package/dist/remote-desktop/computer-use-backend.js +1 -0
- package/dist/remote-desktop/types.d.ts +79 -0
- package/dist/routes/computer.d.ts +1 -0
- package/dist/routes/computer.js +2 -0
- package/dist/routes/file-change-diff.d.ts +27 -0
- package/dist/routes/file-change-diff.js +5 -0
- package/dist/routes/instance.js +2 -2
- package/dist/routes/pty.d.ts +2 -2
- package/dist/routes/pty.js +3 -3
- package/dist/routes/task-context.js +1 -1
- package/dist/routes/terminal.js +28 -28
- package/dist/services/auto-register.d.ts +1 -1
- package/dist/services/auto-register.js +1 -1
- package/dist/services/instance-features.d.ts +10 -0
- package/dist/services/instance-features.js +2 -0
- package/dist/services/sdk-tool-file-change-recorder.d.ts +12 -0
- package/dist/services/sdk-tool-file-change-recorder.js +2 -0
- package/dist/services/workspace-files.js +1 -1
- package/dist/services/workspaceTaskChangeWatcher.d.ts +9 -1
- package/dist/services/workspaceTaskChangeWatcher.js +3 -1
- package/package/acode/dist/built-in-file-tools.d.ts +4 -0
- package/package/acode/dist/built-in-file-tools.js +2 -2
- package/package/acode/dist/runtime.d.ts +13 -0
- package/package/acode/dist/runtime.js +18 -18
- package/package/aws-client-agent-mcp/README.md +2 -2
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +14 -4
- package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/agent-client.test.js +36 -36
- package/package/aws-client-agent-mcp/dist/config.js +1 -1
- package/package/aws-client-agent-mcp/dist/config.test.js +2 -2
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/mcp-server.js +21 -21
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +35 -36
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +6 -0
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +25 -5
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +17 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +14 -12
- package/package/aws-client-agent-mcp/dist/websocket-client.js +1 -1
- package/package.json +3 -2
- package/scripts/ensure-playwright-browser.mjs +118 -0
|
@@ -112,7 +112,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
112
112
|
senderName: "Agent C",
|
|
113
113
|
content: "offline group",
|
|
114
114
|
timestamp: new Date().toISOString(),
|
|
115
|
-
|
|
115
|
+
projectId: "demo",
|
|
116
116
|
};
|
|
117
117
|
const server = createServerWithUnread({
|
|
118
118
|
directMessages: [directMessage],
|
|
@@ -226,7 +226,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
226
226
|
senderName: "Agent E",
|
|
227
227
|
content: "offline group after profile",
|
|
228
228
|
timestamp: new Date().toISOString(),
|
|
229
|
-
|
|
229
|
+
projectId: "demo",
|
|
230
230
|
roomId: "inner_group:g-1",
|
|
231
231
|
};
|
|
232
232
|
const server = createServerWithUnread({
|
|
@@ -242,7 +242,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
242
242
|
isOnline: true,
|
|
243
243
|
onlineSince: new Date().toISOString(),
|
|
244
244
|
createdAt: new Date().toISOString(),
|
|
245
|
-
|
|
245
|
+
projectId: "demo",
|
|
246
246
|
});
|
|
247
247
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
248
248
|
const result = (await handleToolCall.call(server, "get_message", {}));
|
|
@@ -257,7 +257,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
257
257
|
senderName: "Self Agent",
|
|
258
258
|
content: "my own group message",
|
|
259
259
|
timestamp: new Date().toISOString(),
|
|
260
|
-
|
|
260
|
+
projectId: "demo",
|
|
261
261
|
roomId: "project:demo",
|
|
262
262
|
};
|
|
263
263
|
const otherGroupMessage = {
|
|
@@ -266,7 +266,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
266
266
|
senderName: "Other Agent",
|
|
267
267
|
content: "other group message",
|
|
268
268
|
timestamp: new Date().toISOString(),
|
|
269
|
-
|
|
269
|
+
projectId: "demo",
|
|
270
270
|
roomId: "project:demo",
|
|
271
271
|
};
|
|
272
272
|
const server = createServerWithUnread({
|
|
@@ -321,7 +321,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
321
321
|
senderName: "Self Agent",
|
|
322
322
|
content: "my own group message",
|
|
323
323
|
timestamp: new Date().toISOString(),
|
|
324
|
-
|
|
324
|
+
projectId: "demo",
|
|
325
325
|
roomId: "project:demo",
|
|
326
326
|
};
|
|
327
327
|
const otherGroupMessage = {
|
|
@@ -330,7 +330,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
330
330
|
senderName: "Other Agent",
|
|
331
331
|
content: "other group message",
|
|
332
332
|
timestamp: new Date().toISOString(),
|
|
333
|
-
|
|
333
|
+
projectId: "demo",
|
|
334
334
|
roomId: "project:demo",
|
|
335
335
|
};
|
|
336
336
|
const server = createServerWithUnread({
|
|
@@ -350,7 +350,7 @@ describe("McpServer unread backlog hydration", () => {
|
|
|
350
350
|
senderName: "Other Agent",
|
|
351
351
|
content: "valid group message",
|
|
352
352
|
timestamp: new Date().toISOString(),
|
|
353
|
-
|
|
353
|
+
projectId: "demo",
|
|
354
354
|
roomId: "project:demo",
|
|
355
355
|
};
|
|
356
356
|
const server = createServerWithUnread({
|
|
@@ -1130,7 +1130,6 @@ describe("McpServer memory tools", () => {
|
|
|
1130
1130
|
}
|
|
1131
1131
|
// Override poll to resolve immediately with empty (simulating timeout without waiting 30s)
|
|
1132
1132
|
const buffer = Reflect.get(server, "messageBuffer");
|
|
1133
|
-
const originalPoll = buffer.poll.bind(buffer);
|
|
1134
1133
|
let pollCallCount = 0;
|
|
1135
1134
|
buffer.poll = ((_timeoutMs) => {
|
|
1136
1135
|
pollCallCount++;
|
|
@@ -1494,7 +1493,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1494
1493
|
groups: [
|
|
1495
1494
|
{
|
|
1496
1495
|
id: "project:demo",
|
|
1497
|
-
|
|
1496
|
+
projectId: "demo",
|
|
1498
1497
|
roomType: "project",
|
|
1499
1498
|
scopeRefId: "demo",
|
|
1500
1499
|
name: "demo 公共群聊",
|
|
@@ -1502,7 +1501,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1502
1501
|
},
|
|
1503
1502
|
{
|
|
1504
1503
|
id: "inner_group:g-1",
|
|
1505
|
-
|
|
1504
|
+
projectId: "demo",
|
|
1506
1505
|
roomType: "inner_group",
|
|
1507
1506
|
scopeRefId: "g-1",
|
|
1508
1507
|
name: "后端小组",
|
|
@@ -1518,7 +1517,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1518
1517
|
groups: [
|
|
1519
1518
|
{
|
|
1520
1519
|
id: "project:demo",
|
|
1521
|
-
|
|
1520
|
+
projectId: "demo",
|
|
1522
1521
|
roomType: "project",
|
|
1523
1522
|
scopeRefId: "demo",
|
|
1524
1523
|
name: "demo 公共群聊",
|
|
@@ -1526,7 +1525,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1526
1525
|
},
|
|
1527
1526
|
{
|
|
1528
1527
|
id: "inner_group:g-1",
|
|
1529
|
-
|
|
1528
|
+
projectId: "demo",
|
|
1530
1529
|
roomType: "inner_group",
|
|
1531
1530
|
scopeRefId: "g-1",
|
|
1532
1531
|
name: "后端小组",
|
|
@@ -1539,8 +1538,8 @@ describe("McpServer group discovery tool", () => {
|
|
|
1539
1538
|
const server = new McpServer();
|
|
1540
1539
|
let capturedArgs = null;
|
|
1541
1540
|
Reflect.set(server, "agentClient", {
|
|
1542
|
-
sendGroupMessage: async (content,
|
|
1543
|
-
capturedArgs = { content,
|
|
1541
|
+
sendGroupMessage: async (content, projectId, roomId) => {
|
|
1542
|
+
capturedArgs = { content, projectId, roomId };
|
|
1544
1543
|
return {
|
|
1545
1544
|
msgId: 1,
|
|
1546
1545
|
timestamp: new Date().toISOString(),
|
|
@@ -1551,12 +1550,12 @@ describe("McpServer group discovery tool", () => {
|
|
|
1551
1550
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
1552
1551
|
await handleToolCall.call(server, "send_group", {
|
|
1553
1552
|
content: "hello room",
|
|
1554
|
-
|
|
1553
|
+
projectId: "demo",
|
|
1555
1554
|
roomId: "inner_group:g-1",
|
|
1556
1555
|
});
|
|
1557
1556
|
assert.deepEqual(capturedArgs, {
|
|
1558
1557
|
content: "hello room",
|
|
1559
|
-
|
|
1558
|
+
projectId: "demo",
|
|
1560
1559
|
roomId: "inner_group:g-1",
|
|
1561
1560
|
});
|
|
1562
1561
|
});
|
|
@@ -1567,7 +1566,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1567
1566
|
id: "agent-new",
|
|
1568
1567
|
displayName: "后端开发同事-AB12",
|
|
1569
1568
|
roleName: "后端开发同事",
|
|
1570
|
-
|
|
1569
|
+
projectId: "demo",
|
|
1571
1570
|
workspacePath: "D:/workspace/demo",
|
|
1572
1571
|
runtimeBridgeBaseUrl: "http://127.0.0.1:18081",
|
|
1573
1572
|
runtimeStatus: "stopped",
|
|
@@ -1581,7 +1580,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1581
1580
|
});
|
|
1582
1581
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
1583
1582
|
const result = await handleToolCall.call(server, "hire_colleague", {
|
|
1584
|
-
|
|
1583
|
+
projectId: "demo",
|
|
1585
1584
|
roleName: "后端开发同事",
|
|
1586
1585
|
displayName: "后端开发同事-AB12",
|
|
1587
1586
|
prompt: "负责后端接口开发",
|
|
@@ -1590,7 +1589,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1590
1589
|
runtimeMcpEnabled: true,
|
|
1591
1590
|
});
|
|
1592
1591
|
assert.deepEqual(capturedArgs, {
|
|
1593
|
-
|
|
1592
|
+
projectId: "demo",
|
|
1594
1593
|
roleName: "后端开发同事",
|
|
1595
1594
|
displayName: "后端开发同事-AB12",
|
|
1596
1595
|
prompt: "负责后端接口开发",
|
|
@@ -1614,7 +1613,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1614
1613
|
let capturedArgs = null;
|
|
1615
1614
|
const batchResult = {
|
|
1616
1615
|
batchId: "hire-batch-001",
|
|
1617
|
-
|
|
1616
|
+
projectId: "demo",
|
|
1618
1617
|
summary: {
|
|
1619
1618
|
total: 2,
|
|
1620
1619
|
approved: 1,
|
|
@@ -1650,7 +1649,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1650
1649
|
});
|
|
1651
1650
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
1652
1651
|
const result = await handleToolCall.call(server, "hire_colleagues_batch", {
|
|
1653
|
-
|
|
1652
|
+
projectId: "demo",
|
|
1654
1653
|
items: [
|
|
1655
1654
|
{
|
|
1656
1655
|
roleName: "后端开发同事",
|
|
@@ -1667,7 +1666,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1667
1666
|
],
|
|
1668
1667
|
});
|
|
1669
1668
|
assert.deepEqual(capturedArgs, {
|
|
1670
|
-
|
|
1669
|
+
projectId: "demo",
|
|
1671
1670
|
items: [
|
|
1672
1671
|
{
|
|
1673
1672
|
roleName: "后端开发同事",
|
|
@@ -1690,7 +1689,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1690
1689
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
1691
1690
|
await assert.rejects(async () => {
|
|
1692
1691
|
await handleToolCall.call(server, "hire_colleagues_batch", {
|
|
1693
|
-
|
|
1692
|
+
projectId: "demo",
|
|
1694
1693
|
items: [],
|
|
1695
1694
|
});
|
|
1696
1695
|
}, /items is required/);
|
|
@@ -1700,7 +1699,7 @@ describe("McpServer group discovery tool", () => {
|
|
|
1700
1699
|
const handleToolCall = Reflect.get(server, "handleToolCall");
|
|
1701
1700
|
await assert.rejects(async () => {
|
|
1702
1701
|
await handleToolCall.call(server, "hire_colleagues_batch", {
|
|
1703
|
-
|
|
1702
|
+
projectId: "demo",
|
|
1704
1703
|
items: [
|
|
1705
1704
|
{
|
|
1706
1705
|
roleName: "后端开发同事",
|
|
@@ -1733,7 +1732,7 @@ describe("McpServer incoming group message filtering", () => {
|
|
|
1733
1732
|
senderName: "Self Agent",
|
|
1734
1733
|
content: "loopback group message",
|
|
1735
1734
|
timestamp: new Date().toISOString(),
|
|
1736
|
-
|
|
1735
|
+
projectId: "demo",
|
|
1737
1736
|
roomId: "project:demo",
|
|
1738
1737
|
};
|
|
1739
1738
|
const handleIncomingMessage = Reflect.get(server, "handleIncomingMessage");
|
|
@@ -1812,7 +1811,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1812
1811
|
it("fetchUnreadMessages should aggregate unread messages from all discoverable rooms", async () => {
|
|
1813
1812
|
const client = new AgentClient();
|
|
1814
1813
|
Reflect.set(client, "agentId", "agent-1");
|
|
1815
|
-
Reflect.set(client, "
|
|
1814
|
+
Reflect.set(client, "projectId", "demo");
|
|
1816
1815
|
const calls = [];
|
|
1817
1816
|
Reflect.set(client, "httpClient", {
|
|
1818
1817
|
callTool: async (toolName, args) => {
|
|
@@ -1825,7 +1824,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1825
1824
|
groups: [
|
|
1826
1825
|
{
|
|
1827
1826
|
id: "project:demo",
|
|
1828
|
-
|
|
1827
|
+
projectId: "demo",
|
|
1829
1828
|
roomType: "project",
|
|
1830
1829
|
scopeRefId: "demo",
|
|
1831
1830
|
name: "demo 公共群聊",
|
|
@@ -1833,7 +1832,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1833
1832
|
},
|
|
1834
1833
|
{
|
|
1835
1834
|
id: "inner_group:g-1",
|
|
1836
|
-
|
|
1835
|
+
projectId: "demo",
|
|
1837
1836
|
roomType: "inner_group",
|
|
1838
1837
|
scopeRefId: "g-1",
|
|
1839
1838
|
name: "后端小组",
|
|
@@ -1850,7 +1849,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1850
1849
|
msgId: 1,
|
|
1851
1850
|
senderId: "agent-a",
|
|
1852
1851
|
senderName: "Agent A",
|
|
1853
|
-
|
|
1852
|
+
projectId: "demo",
|
|
1854
1853
|
roomId: "project:demo",
|
|
1855
1854
|
content: "project message",
|
|
1856
1855
|
timestamp: new Date().toISOString(),
|
|
@@ -1867,7 +1866,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1867
1866
|
msgId: 2,
|
|
1868
1867
|
senderId: "agent-b",
|
|
1869
1868
|
senderName: "Agent B",
|
|
1870
|
-
|
|
1869
|
+
projectId: "demo",
|
|
1871
1870
|
roomId: "inner_group:g-1",
|
|
1872
1871
|
content: "inner group message",
|
|
1873
1872
|
timestamp: new Date().toISOString(),
|
|
@@ -1895,7 +1894,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1895
1894
|
it("getGroupHistory should aggregate history from all discoverable rooms when roomId is omitted", async () => {
|
|
1896
1895
|
const client = new AgentClient();
|
|
1897
1896
|
Reflect.set(client, "agentId", "agent-1");
|
|
1898
|
-
Reflect.set(client, "
|
|
1897
|
+
Reflect.set(client, "projectId", "demo");
|
|
1899
1898
|
Reflect.set(client, "httpClient", {
|
|
1900
1899
|
callTool: async (toolName, args) => {
|
|
1901
1900
|
if (toolName === "discover_group_rooms") {
|
|
@@ -1903,7 +1902,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1903
1902
|
groups: [
|
|
1904
1903
|
{
|
|
1905
1904
|
id: "project:demo",
|
|
1906
|
-
|
|
1905
|
+
projectId: "demo",
|
|
1907
1906
|
roomType: "project",
|
|
1908
1907
|
scopeRefId: "demo",
|
|
1909
1908
|
name: "demo 公共群聊",
|
|
@@ -1911,7 +1910,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1911
1910
|
},
|
|
1912
1911
|
{
|
|
1913
1912
|
id: "inner_group:g-1",
|
|
1914
|
-
|
|
1913
|
+
projectId: "demo",
|
|
1915
1914
|
roomType: "inner_group",
|
|
1916
1915
|
scopeRefId: "g-1",
|
|
1917
1916
|
name: "后端小组",
|
|
@@ -1928,7 +1927,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1928
1927
|
msgId: 1,
|
|
1929
1928
|
senderId: "agent-a",
|
|
1930
1929
|
senderName: "Agent A",
|
|
1931
|
-
|
|
1930
|
+
projectId: "demo",
|
|
1932
1931
|
roomId: "project:demo",
|
|
1933
1932
|
content: "project history",
|
|
1934
1933
|
timestamp: "2026-03-25T10:00:00.000Z",
|
|
@@ -1944,7 +1943,7 @@ describe("AgentClient group room aggregation", () => {
|
|
|
1944
1943
|
msgId: 2,
|
|
1945
1944
|
senderId: "agent-b",
|
|
1946
1945
|
senderName: "Agent B",
|
|
1947
|
-
|
|
1946
|
+
projectId: "demo",
|
|
1948
1947
|
roomId: "inner_group:g-1",
|
|
1949
1948
|
content: "group history",
|
|
1950
1949
|
timestamp: "2026-03-25T11:00:00.000Z",
|
|
@@ -38,6 +38,12 @@ export declare const REJECT_TASK_TOOL: Tool;
|
|
|
38
38
|
|
|
39
39
|
export declare const TERMINATE_TASK_TOOL: Tool;
|
|
40
40
|
|
|
41
|
+
export declare const GET_DEBUG_LOG_CONFIG_TOOL: Tool;
|
|
42
|
+
|
|
43
|
+
export declare const QUERY_DEBUG_LOGS_TOOL: Tool;
|
|
44
|
+
|
|
45
|
+
export declare const QUERY_FILE_CHANGES_HISTORY_TOOL: Tool;
|
|
46
|
+
|
|
41
47
|
export declare const MEMORY_TOOL_NAMES: ReadonlySet<string>;
|
|
42
48
|
|
|
43
49
|
export declare const MCP_TOOLS: Tool[];
|
|
@@ -1,22 +1,42 @@
|
|
|
1
|
-
import{CREATE_MEMORY_TOOL as e,DELETE_MEMORY_TOOL as t,GET_MEMORY_STATS_TOOL as r,LIST_MEMORIES_TOOL as i,READ_MEMORY_TOOL as n,SEARCH_MEMORY_TOOL as s,UPDATE_MEMORY_TOOL as p,LIST_MEMORIES_BY_FILE_TOOL as o,ABANDON_MEMORY_UPDATE_TOOL as a,MEMORY_RECURRENCE_TOOL as c,MEMORY_RECURRENCE_COMPLETE_TOOL as
|
|
1
|
+
import{CREATE_MEMORY_TOOL as e,DELETE_MEMORY_TOOL as t,GET_MEMORY_STATS_TOOL as r,LIST_MEMORIES_TOOL as i,READ_MEMORY_TOOL as n,SEARCH_MEMORY_TOOL as s,UPDATE_MEMORY_TOOL as p,LIST_MEMORIES_BY_FILE_TOOL as o,ABANDON_MEMORY_UPDATE_TOOL as a,MEMORY_RECURRENCE_TOOL as c,MEMORY_RECURRENCE_COMPLETE_TOOL as d}from"./memory-tools.js";import{CREATE_MEMORY_TOOL as G,DELETE_MEMORY_TOOL as x,GET_MEMORY_STATS_TOOL as H,LIST_MEMORIES_TOOL as f,READ_MEMORY_TOOL as K,SEARCH_MEMORY_TOOL as w,UPDATE_MEMORY_TOOL as B,LIST_MEMORIES_BY_FILE_TOOL as F,ABANDON_MEMORY_UPDATE_TOOL as J,MEMORY_RECURRENCE_TOOL as V,MEMORY_RECURRENCE_COMPLETE_TOOL as W}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:[]}},E={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:{
|
|
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"]}},O={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"]}},g={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"]}},u={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"]}},T={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:[]}},l={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:[]}},R={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:[]}},A={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:[]}},L={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"]}},S={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"]}},M={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"]}},D={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"]}},b={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"]}},h={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"]}},N={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
|
+
|
|
23
|
+
## \u5982\u4F55\u5199\u5165\u65E5\u5FD7
|
|
24
|
+
\u4E1A\u52A1\u9879\u76EE\u8FD0\u884C\u65F6\u901A\u8FC7 HTTP POST \u8BF7\u6C42\u5199\u5165\u65E5\u5FD7\uFF1A
|
|
25
|
+
- URL: \u8FD4\u56DE\u7684 writeUrl
|
|
26
|
+
- Header: X-API-Key: <\u8FD4\u56DE\u7684 logWriteKey>
|
|
27
|
+
- Body (JSON):
|
|
28
|
+
- projectId (\u5FC5\u586B): \u8FD4\u56DE\u7684 projectId
|
|
29
|
+
- businessLine (\u5FC5\u586B): \u4E1A\u52A1\u7EBF\u540D\u79F0
|
|
30
|
+
- module (\u53EF\u9009): \u6A21\u5757\u540D\uFF0C\u9ED8\u8BA4 general
|
|
31
|
+
- level (\u53EF\u9009): DEBUG / INFO / WARN / ERROR\uFF0C\u9ED8\u8BA4 INFO
|
|
32
|
+
- detail (\u53EF\u9009): \u65E5\u5FD7\u8BE6\u60C5\u5185\u5BB9
|
|
33
|
+
|
|
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:[]}},C={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
|
+
|
|
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"]}},P={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/\u64CD\u4F5C/\u72B6\u6001/\u4EFB\u52A1\u5B9E\u4F8B/\u65F6\u95F4\u8303\u56F4 \u8FC7\u6EE4\u3002
|
|
38
|
+
|
|
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
|
+
|
|
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\u6A21\u7CCA\u5339\u914D\uFF09"},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=[_,E,m,y,O,g,u,T,I,l,R,A,L,S,M,D,b,h,e,n,p,t,s,i,r,o,a,c,d,N,C,P];export{J as ABANDON_MEMORY_UPDATE_TOOL,G as CREATE_MEMORY_TOOL,L as CREATE_TASK_INSTANCE_COMMENT_TOOL,x as DELETE_MEMORY_TOOL,D as FINISH_TASK_ROLLBACK_TOOL,_ as GET_COLLEAGUE_TOOL,N as GET_DEBUG_LOG_CONFIG_TOOL,l as GET_DM_HISTORY_TOOL,R as GET_GROUP_HISTORY_TOOL,E as GET_GROUP_ROOMS_TOOL,H as GET_MEMORY_STATS_TOOL,I as GET_MESSAGE_TOOL,m as GET_PROFILE_TOOL,O as HIRE_COLLEAGUES_BATCH_TOOL,y as HIRE_COLLEAGUE_TOOL,F as LIST_MEMORIES_BY_FILE_TOOL,f 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,C as QUERY_DEBUG_LOGS_TOOL,P 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};
|
|
22
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, UPDATE_MEMORY_TOOL } from "./mcp-tools.js";
|
|
3
|
+
import { CREATE_TASK_INSTANCE_COMMENT_TOOL, MCP_TOOLS, QUERY_FILE_CHANGES_HISTORY_TOOL, UPDATE_MEMORY_TOOL } 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 ?? "", /当需要告知后续节点需要注意的点时使用留言进行留言/);
|
|
@@ -32,6 +32,22 @@ describe("update_memory tool", () => {
|
|
|
32
32
|
assert.match(String(appendSchema.description), /不要传 old_string\/new_string/);
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
|
+
describe("query_file_changes_history tool", () => {
|
|
36
|
+
it("is registered in MCP_TOOLS so the agent can see it", () => {
|
|
37
|
+
const names = MCP_TOOLS.map((tool) => tool.name);
|
|
38
|
+
assert.equal(names.includes("query_file_changes_history"), true, "query_file_changes_history should be in MCP_TOOLS");
|
|
39
|
+
});
|
|
40
|
+
it("无需 projectId(服务端从调用者推导),并暴露过滤字段", () => {
|
|
41
|
+
const schema = QUERY_FILE_CHANGES_HISTORY_TOOL.inputSchema;
|
|
42
|
+
assert.equal(schema.type, "object");
|
|
43
|
+
assert.deepEqual(schema.required, []);
|
|
44
|
+
assertRecord(schema.properties, "query_file_changes_history properties");
|
|
45
|
+
assert.equal("projectId" in schema.properties, false, "projectId 不应出现在工具参数中(由服务端推导)");
|
|
46
|
+
for (const field of ["roleId", "agentId", "fileName", "operation", "status", "taskInstanceId", "startTime", "endTime", "page", "pageSize"]) {
|
|
47
|
+
assertRecord(schema.properties[field], `${field} schema`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
35
51
|
function assertNoForbiddenTopLevelSchemaKeyword(schema) {
|
|
36
52
|
const forbiddenTopLevelKeywords = ["oneOf", "anyOf", "allOf", "enum", "const", "not"];
|
|
37
53
|
for (const keyword of forbiddenTopLevelKeywords) {
|
|
@@ -60,7 +60,7 @@ export interface CompactionResult {
|
|
|
60
60
|
export interface AgentConfig {
|
|
61
61
|
roleName: string;
|
|
62
62
|
agentId?: string;
|
|
63
|
-
|
|
63
|
+
projectId: string;
|
|
64
64
|
workspacePath: string;
|
|
65
65
|
prompt: string;
|
|
66
66
|
describe: string;
|
|
@@ -132,7 +132,7 @@ export interface RegisterResult {
|
|
|
132
132
|
displayName: string;
|
|
133
133
|
status: string;
|
|
134
134
|
instanceName?: string;
|
|
135
|
-
|
|
135
|
+
projectId?: string;
|
|
136
136
|
workspacePath?: string;
|
|
137
137
|
runtimeStatus?: string;
|
|
138
138
|
runtimeSessionId?: string | null;
|
|
@@ -147,8 +147,10 @@ export interface OnlineUser {
|
|
|
147
147
|
export interface OnlineAgent {
|
|
148
148
|
id: string;
|
|
149
149
|
displayName: string;
|
|
150
|
+
|
|
151
|
+
roleId?: string;
|
|
150
152
|
roleName: string;
|
|
151
|
-
|
|
153
|
+
projectId?: string;
|
|
152
154
|
prompt: string;
|
|
153
155
|
onlineSince: string;
|
|
154
156
|
}
|
|
@@ -158,7 +160,7 @@ export interface OnlineListResponse {
|
|
|
158
160
|
}
|
|
159
161
|
export interface GroupRoomInfo {
|
|
160
162
|
id: string;
|
|
161
|
-
|
|
163
|
+
projectId: string;
|
|
162
164
|
roomType: "project" | "inner_group" | string;
|
|
163
165
|
scopeRefId: string;
|
|
164
166
|
name: string;
|
|
@@ -171,7 +173,7 @@ export interface GroupMessage {
|
|
|
171
173
|
msgId: number;
|
|
172
174
|
senderId: string;
|
|
173
175
|
senderName: string;
|
|
174
|
-
|
|
176
|
+
projectId?: string;
|
|
175
177
|
roomId?: string;
|
|
176
178
|
content: string;
|
|
177
179
|
timestamp: string;
|
|
@@ -290,7 +292,7 @@ export interface SendDmResult {
|
|
|
290
292
|
reply?: DirectMessage;
|
|
291
293
|
}
|
|
292
294
|
export interface WebSocketMessage<T = unknown> {
|
|
293
|
-
type: "GROUP_MSG" | "DM_MSG" | "ONLINE_CHANGE" | "DM_REPLY" | "HEARTBEAT" | "PROFILE_INFO" | "AGENT_STATUS" | "MCP_NODE_LOG" | "MCP_NODE_LOG_BATCH" | "LOG_ACK" | "MESSAGE_ACK" | "TERMINAL_OUTPUT" | "TERMINAL_STATUS" | "GROUP_READ_RECEIPT" | "DM_READ_RECEIPT" | "AGENT_EVENTS_DELTA";
|
|
295
|
+
type: "GROUP_MSG" | "DM_MSG" | "ONLINE_CHANGE" | "DM_REPLY" | "HEARTBEAT" | "PROFILE_INFO" | "AGENT_CONFIG" | "AGENT_STATUS" | "MCP_NODE_LOG" | "MCP_NODE_LOG_BATCH" | "LOG_ACK" | "MESSAGE_ACK" | "TERMINAL_OUTPUT" | "TERMINAL_STATUS" | "GROUP_READ_RECEIPT" | "DM_READ_RECEIPT" | "AGENT_EVENTS_DELTA";
|
|
294
296
|
data: T;
|
|
295
297
|
timestamp: string;
|
|
296
298
|
}
|
|
@@ -308,7 +310,7 @@ export interface ProfileInfo {
|
|
|
308
310
|
displayName: string;
|
|
309
311
|
roleName: string;
|
|
310
312
|
instanceName?: string;
|
|
311
|
-
|
|
313
|
+
projectId?: string;
|
|
312
314
|
workspacePath?: string;
|
|
313
315
|
prompt: string;
|
|
314
316
|
globalAgentPrompt?: string;
|
|
@@ -324,7 +326,7 @@ export interface ProfileInfo {
|
|
|
324
326
|
createdAt: string;
|
|
325
327
|
}
|
|
326
328
|
export interface HireColleagueArgs {
|
|
327
|
-
|
|
329
|
+
projectId?: string;
|
|
328
330
|
roleName?: string;
|
|
329
331
|
newRoleName?: string;
|
|
330
332
|
displayName?: string;
|
|
@@ -338,7 +340,7 @@ export interface HireColleagueArgs {
|
|
|
338
340
|
}
|
|
339
341
|
export type HireColleagueBatchItem = HireColleagueArgs;
|
|
340
342
|
export interface HireColleaguesBatchArgs {
|
|
341
|
-
|
|
343
|
+
projectId?: string;
|
|
342
344
|
items: HireColleagueBatchItem[];
|
|
343
345
|
}
|
|
344
346
|
export interface StartTaskRollbackArgs {
|
|
@@ -353,7 +355,7 @@ export interface HiredColleagueResult {
|
|
|
353
355
|
nickname?: string;
|
|
354
356
|
displayName: string;
|
|
355
357
|
roleName: string;
|
|
356
|
-
|
|
358
|
+
projectId?: string;
|
|
357
359
|
workspacePath?: string;
|
|
358
360
|
runtimeBridgeBaseUrl?: string;
|
|
359
361
|
prompt?: string;
|
|
@@ -392,7 +394,7 @@ export interface HireBatchItemResult {
|
|
|
392
394
|
}
|
|
393
395
|
export interface HireBatchResult {
|
|
394
396
|
batchId: string;
|
|
395
|
-
|
|
397
|
+
projectId?: string;
|
|
396
398
|
summary: HireBatchSummary;
|
|
397
399
|
results: HireBatchItemResult[];
|
|
398
400
|
}
|
|
@@ -409,7 +411,7 @@ export interface SendPrivateArgs {
|
|
|
409
411
|
|
|
410
412
|
export interface SendGroupArgs {
|
|
411
413
|
content: string;
|
|
412
|
-
|
|
414
|
+
projectId?: string;
|
|
413
415
|
roomId?: string;
|
|
414
416
|
}
|
|
415
417
|
|