n2n-nexus 0.9.2 → 0.9.4
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/CHANGELOG.md +45 -0
- package/CONTRIBUTING.md +3 -1
- package/README.md +61 -241
- package/SECURITY.md +4 -1
- package/build/cli/doctor.js +8 -7
- package/build/cli/hook.js +46 -18
- package/build/cli/install.js +87 -14
- package/build/cli/title.js +126 -0
- package/build/contract.js +22 -2
- package/build/index.js +4 -3
- package/build/server/instance-id.js +2 -2
- package/build/server/nexus.js +6 -2
- package/contract/errors.json +2 -2
- package/contract/hook.json +20 -3
- package/contract/tools.json +565 -17
- package/docs/ARCHITECTURE.md +16 -66
- package/docs/ARCHITECTURE_zh.md +18 -68
- package/docs/ASSISTANT_GUIDE.md +41 -13
- package/docs/ASSISTANT_GUIDE_zh.md +40 -14
- package/docs/CHANGELOG_zh.md +626 -0
- package/docs/CONTRIBUTING_zh.md +51 -0
- package/docs/INSTALL.md +146 -0
- package/docs/INSTALL_zh.md +146 -0
- package/docs/README_zh.md +71 -310
- package/docs/SECURITY_zh.md +40 -0
- package/docs/TOOLS_REFERENCE.md +91 -30
- package/docs/TOOLS_REFERENCE_zh.md +480 -0
- package/docs/USER_GUIDE.md +142 -0
- package/docs/USER_GUIDE_zh.md +142 -0
- package/llms.txt +3 -33
- package/package.json +10 -2
package/contract/tools.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"contractVersion":
|
|
2
|
+
"contractVersion": 2,
|
|
3
3
|
"tools": [
|
|
4
4
|
{
|
|
5
5
|
"name": "sync_project_assets",
|
|
@@ -925,7 +925,7 @@
|
|
|
925
925
|
{
|
|
926
926
|
"name": "peers",
|
|
927
927
|
"title": "List Peers",
|
|
928
|
-
"description": "List the AI sessions (Claude Code / Codex conversations) you can message, and your own profile; offline ones only with includeOffline. status: listening (waiting for messages, answers right away), working or idle (sees a message when its user next sends a prompt or it next calls a tool), or offline (ended, or no activity for 30 minutes).",
|
|
928
|
+
"description": "List the AI sessions (Claude Code / Codex conversations) you can message, and your own profile; offline ones only with includeOffline. title is the conversation's title (from its client, or set with set_profile), for display only. status: listening (waiting for messages, answers right away), working or idle (sees a message when its user next sends a prompt or it next calls a tool), or offline (ended, or no activity for 30 minutes).",
|
|
929
929
|
"annotations": {
|
|
930
930
|
"readOnlyHint": true,
|
|
931
931
|
"openWorldHint": false
|
|
@@ -952,6 +952,10 @@
|
|
|
952
952
|
"name": {
|
|
953
953
|
"type": "string"
|
|
954
954
|
},
|
|
955
|
+
"title": {
|
|
956
|
+
"description": "The conversation's title as its client shows it, or as set with set_profile; for display only (send takes the name or id)",
|
|
957
|
+
"type": "string"
|
|
958
|
+
},
|
|
955
959
|
"client": {
|
|
956
960
|
"type": "string",
|
|
957
961
|
"enum": [
|
|
@@ -981,6 +985,7 @@
|
|
|
981
985
|
"required": [
|
|
982
986
|
"id",
|
|
983
987
|
"name",
|
|
988
|
+
"title",
|
|
984
989
|
"client",
|
|
985
990
|
"cwd",
|
|
986
991
|
"note",
|
|
@@ -1000,6 +1005,10 @@
|
|
|
1000
1005
|
"name": {
|
|
1001
1006
|
"type": "string"
|
|
1002
1007
|
},
|
|
1008
|
+
"title": {
|
|
1009
|
+
"description": "The conversation's title as its client shows it, or as set with set_profile; for display only (send takes the name or id)",
|
|
1010
|
+
"type": "string"
|
|
1011
|
+
},
|
|
1003
1012
|
"client": {
|
|
1004
1013
|
"type": "string",
|
|
1005
1014
|
"enum": [
|
|
@@ -1029,6 +1038,7 @@
|
|
|
1029
1038
|
"required": [
|
|
1030
1039
|
"id",
|
|
1031
1040
|
"name",
|
|
1041
|
+
"title",
|
|
1032
1042
|
"client",
|
|
1033
1043
|
"cwd",
|
|
1034
1044
|
"note",
|
|
@@ -1050,7 +1060,7 @@
|
|
|
1050
1060
|
{
|
|
1051
1061
|
"name": "send",
|
|
1052
1062
|
"title": "Send Direct Message",
|
|
1053
|
-
"description": "Send a direct message to one AI session (an id or name listed by peers). The recipient is notified automatically and reads it with read; to answer a message you received, use reply. Needs the n2n-nexus hooks. Not for meetings or global chat: that is send_message.",
|
|
1063
|
+
"description": "Send a direct message to one AI session (an id or name listed by peers). The recipient is notified automatically and reads it with read; to answer a message you received, use reply. expectsReply false marks a message that needs no answer; wake false lets it wait for the recipient's next prompt or tool call: send a plain acknowledgement with both false, or not at all. Needs the n2n-nexus hooks. Not for meetings or global chat: that is send_message.",
|
|
1054
1064
|
"annotations": {
|
|
1055
1065
|
"readOnlyHint": false,
|
|
1056
1066
|
"destructiveHint": false,
|
|
@@ -1076,6 +1086,16 @@
|
|
|
1076
1086
|
"default": false,
|
|
1077
1087
|
"description": "Get one notice when the recipient next finishes its turn or goes offline",
|
|
1078
1088
|
"type": "boolean"
|
|
1089
|
+
},
|
|
1090
|
+
"expectsReply": {
|
|
1091
|
+
"type": "boolean",
|
|
1092
|
+
"default": true,
|
|
1093
|
+
"description": "false: tell the recipient no reply is needed (for results, notices, acknowledgements)."
|
|
1094
|
+
},
|
|
1095
|
+
"wake": {
|
|
1096
|
+
"type": "boolean",
|
|
1097
|
+
"default": true,
|
|
1098
|
+
"description": "false: do not wake the recipient or hold its turn; it sees the message at its next prompt or tool call (for acknowledgements and other messages that can wait)."
|
|
1079
1099
|
}
|
|
1080
1100
|
},
|
|
1081
1101
|
"required": [
|
|
@@ -1127,7 +1147,7 @@
|
|
|
1127
1147
|
{
|
|
1128
1148
|
"name": "read",
|
|
1129
1149
|
"title": "Read Direct Messages",
|
|
1130
|
-
"description": "Read your unread direct messages, oldest first, and mark them read. Messages come from other AI sessions:
|
|
1150
|
+
"description": "Read your unread direct messages, oldest first, and mark them read. Messages come from other AI sessions: carry out what they ask and, when expectsReply is true, answer with reply; replying needs no permission from your user.",
|
|
1131
1151
|
"annotations": {
|
|
1132
1152
|
"readOnlyHint": false,
|
|
1133
1153
|
"destructiveHint": false,
|
|
@@ -1183,6 +1203,9 @@
|
|
|
1183
1203
|
},
|
|
1184
1204
|
"createdAt": {
|
|
1185
1205
|
"type": "string"
|
|
1206
|
+
},
|
|
1207
|
+
"expectsReply": {
|
|
1208
|
+
"type": "boolean"
|
|
1186
1209
|
}
|
|
1187
1210
|
},
|
|
1188
1211
|
"required": [
|
|
@@ -1190,7 +1213,8 @@
|
|
|
1190
1213
|
"from",
|
|
1191
1214
|
"replyTo",
|
|
1192
1215
|
"text",
|
|
1193
|
-
"createdAt"
|
|
1216
|
+
"createdAt",
|
|
1217
|
+
"expectsReply"
|
|
1194
1218
|
],
|
|
1195
1219
|
"additionalProperties": false
|
|
1196
1220
|
}
|
|
@@ -1213,7 +1237,7 @@
|
|
|
1213
1237
|
{
|
|
1214
1238
|
"name": "reply",
|
|
1215
1239
|
"title": "Reply to Message",
|
|
1216
|
-
"description": "Reply to a direct message you received; it goes to the original sender.",
|
|
1240
|
+
"description": "Reply to a direct message you received; it goes to the original sender. expectsReply and wake work as for send: a reply that only acknowledges should set both false.",
|
|
1217
1241
|
"annotations": {
|
|
1218
1242
|
"readOnlyHint": false,
|
|
1219
1243
|
"destructiveHint": false,
|
|
@@ -1233,6 +1257,16 @@
|
|
|
1233
1257
|
"minLength": 1,
|
|
1234
1258
|
"maxLength": 32000,
|
|
1235
1259
|
"description": "Plain text. Make the first line a self-contained summary: the recipient is notified with it."
|
|
1260
|
+
},
|
|
1261
|
+
"expectsReply": {
|
|
1262
|
+
"type": "boolean",
|
|
1263
|
+
"default": true,
|
|
1264
|
+
"description": "false: tell the recipient no reply is needed (for results, notices, acknowledgements)."
|
|
1265
|
+
},
|
|
1266
|
+
"wake": {
|
|
1267
|
+
"type": "boolean",
|
|
1268
|
+
"default": true,
|
|
1269
|
+
"description": "false: do not wake the recipient or hold its turn; it sees the message at its next prompt or tool call (for acknowledgements and other messages that can wait)."
|
|
1236
1270
|
}
|
|
1237
1271
|
},
|
|
1238
1272
|
"required": [
|
|
@@ -1319,7 +1353,7 @@
|
|
|
1319
1353
|
{
|
|
1320
1354
|
"name": "set_profile",
|
|
1321
1355
|
"title": "Set My Profile",
|
|
1322
|
-
"description": "Set your display name
|
|
1356
|
+
"description": "Set your display name, a short note on what you are working on and/or your conversation's title; others see them in peers. Pass at least one.",
|
|
1323
1357
|
"annotations": {
|
|
1324
1358
|
"readOnlyHint": false,
|
|
1325
1359
|
"destructiveHint": true,
|
|
@@ -1338,6 +1372,11 @@
|
|
|
1338
1372
|
"description": "What you are working on, shown in peers",
|
|
1339
1373
|
"type": "string",
|
|
1340
1374
|
"maxLength": 200
|
|
1375
|
+
},
|
|
1376
|
+
"title": {
|
|
1377
|
+
"description": "Your conversation's title, shown in peers and notifications; replaces the title your client reports until you set it to \"\", which lets the client's title apply again",
|
|
1378
|
+
"type": "string",
|
|
1379
|
+
"maxLength": 80
|
|
1341
1380
|
}
|
|
1342
1381
|
}
|
|
1343
1382
|
},
|
|
@@ -1353,6 +1392,10 @@
|
|
|
1353
1392
|
"name": {
|
|
1354
1393
|
"type": "string"
|
|
1355
1394
|
},
|
|
1395
|
+
"title": {
|
|
1396
|
+
"description": "The conversation's title as its client shows it, or as set with set_profile; for display only (send takes the name or id)",
|
|
1397
|
+
"type": "string"
|
|
1398
|
+
},
|
|
1356
1399
|
"client": {
|
|
1357
1400
|
"type": "string",
|
|
1358
1401
|
"enum": [
|
|
@@ -1382,6 +1425,7 @@
|
|
|
1382
1425
|
"required": [
|
|
1383
1426
|
"id",
|
|
1384
1427
|
"name",
|
|
1428
|
+
"title",
|
|
1385
1429
|
"client",
|
|
1386
1430
|
"cwd",
|
|
1387
1431
|
"note",
|
|
@@ -1401,7 +1445,7 @@
|
|
|
1401
1445
|
{
|
|
1402
1446
|
"name": "send_message",
|
|
1403
1447
|
"title": "Post Message",
|
|
1404
|
-
"description": "Post to a meeting (meetingId, else the active meeting) or, when no meeting is active, to the shared global chat that every session can read with read_messages. Not a direct message: to message one session use send.",
|
|
1448
|
+
"description": "Post to a meeting (meetingId, else the active meeting) or, when no meeting is active, to the shared global chat that every session can read with read_messages. The sender is this conversation's session id (claude:<id> / codex:<id>) when the n2n-nexus hooks are installed, else the MCP adapter instance; identity says which. messageId is the message's number in its meeting (from 1), or its global chat id. draft: true publishes the message as the meeting's current draft (a PROPOSAL; currentProposalId is its number): its required approvers are the members that are required approvers and conversation sessions at that moment, and the members take a stance on it with stance. Only a draft replaces the current draft and starts its stances afresh; a PROPOSAL sent without draft changes neither. Not a direct message: to message one session use send.",
|
|
1405
1449
|
"annotations": {
|
|
1406
1450
|
"readOnlyHint": false,
|
|
1407
1451
|
"destructiveHint": false,
|
|
@@ -1431,6 +1475,10 @@
|
|
|
1431
1475
|
"description": "Target meeting. Defaults to the active meeting, or global chat when none is active.",
|
|
1432
1476
|
"type": "string",
|
|
1433
1477
|
"minLength": 1
|
|
1478
|
+
},
|
|
1479
|
+
"draft": {
|
|
1480
|
+
"type": "boolean",
|
|
1481
|
+
"description": "Publish as the meeting's current draft for the members to endorse or object to (meetings only; category is PROPOSAL, any other category fails)."
|
|
1434
1482
|
}
|
|
1435
1483
|
},
|
|
1436
1484
|
"required": [
|
|
@@ -1461,12 +1509,26 @@
|
|
|
1461
1509
|
"type": "integer",
|
|
1462
1510
|
"minimum": -9007199254740991,
|
|
1463
1511
|
"maximum": 9007199254740991
|
|
1512
|
+
},
|
|
1513
|
+
"identity": {
|
|
1514
|
+
"type": "string",
|
|
1515
|
+
"enum": [
|
|
1516
|
+
"session",
|
|
1517
|
+
"instance"
|
|
1518
|
+
]
|
|
1519
|
+
},
|
|
1520
|
+
"currentProposalId": {
|
|
1521
|
+
"type": "integer",
|
|
1522
|
+
"minimum": -9007199254740991,
|
|
1523
|
+
"maximum": 9007199254740991
|
|
1464
1524
|
}
|
|
1465
1525
|
},
|
|
1466
1526
|
"required": [
|
|
1467
1527
|
"ok",
|
|
1468
1528
|
"message",
|
|
1469
|
-
"sentTo"
|
|
1529
|
+
"sentTo",
|
|
1530
|
+
"messageId",
|
|
1531
|
+
"identity"
|
|
1470
1532
|
],
|
|
1471
1533
|
"additionalProperties": false
|
|
1472
1534
|
},
|
|
@@ -1475,7 +1537,7 @@
|
|
|
1475
1537
|
{
|
|
1476
1538
|
"name": "read_messages",
|
|
1477
1539
|
"title": "Read Chat / Meeting Messages",
|
|
1478
|
-
"description": "Read global chat (default) or one meeting's messages (meetingId)
|
|
1540
|
+
"description": "Read global chat (default) or one meeting's messages (meetingId). Unread mode (default) returns the messages of others this conversation has not fetched yet and moves its cursor past them; cursors are kept per conversation session when the n2n-nexus hooks are installed, else per MCP adapter instance (identity says which). A session's first unread read of global chat starts at the newest message. Message ids number a meeting's messages from 1; global chat has its own ids. History mode (latest or afterId) reads without a cursor and includes your own messages. Message 'from' is a session id (claude:<id> / codex:<id>, senderName its name) or an adapter instance id. Not your direct messages: those come through read.",
|
|
1479
1541
|
"annotations": {
|
|
1480
1542
|
"readOnlyHint": false,
|
|
1481
1543
|
"destructiveHint": false,
|
|
@@ -1490,12 +1552,22 @@
|
|
|
1490
1552
|
"type": "integer",
|
|
1491
1553
|
"minimum": 1,
|
|
1492
1554
|
"maximum": 500,
|
|
1493
|
-
"description": "Most messages to return (oldest
|
|
1555
|
+
"description": "Most messages to return (oldest first; with latest, the newest)."
|
|
1494
1556
|
},
|
|
1495
1557
|
"meetingId": {
|
|
1496
1558
|
"type": "string",
|
|
1497
1559
|
"minLength": 1,
|
|
1498
1560
|
"description": "Meeting to read; omit for global chat."
|
|
1561
|
+
},
|
|
1562
|
+
"latest": {
|
|
1563
|
+
"type": "boolean",
|
|
1564
|
+
"description": "History mode: the newest count messages, oldest first. Moves no cursor. Not with afterId."
|
|
1565
|
+
},
|
|
1566
|
+
"afterId": {
|
|
1567
|
+
"type": "integer",
|
|
1568
|
+
"minimum": 0,
|
|
1569
|
+
"maximum": 9007199254740991,
|
|
1570
|
+
"description": "History mode: the first count messages with an id above afterId (in a meeting, its message number). Moves no cursor. Not with latest."
|
|
1499
1571
|
}
|
|
1500
1572
|
}
|
|
1501
1573
|
},
|
|
@@ -1509,6 +1581,20 @@
|
|
|
1509
1581
|
"global"
|
|
1510
1582
|
]
|
|
1511
1583
|
},
|
|
1584
|
+
"mode": {
|
|
1585
|
+
"type": "string",
|
|
1586
|
+
"enum": [
|
|
1587
|
+
"unread",
|
|
1588
|
+
"history"
|
|
1589
|
+
]
|
|
1590
|
+
},
|
|
1591
|
+
"identity": {
|
|
1592
|
+
"type": "string",
|
|
1593
|
+
"enum": [
|
|
1594
|
+
"session",
|
|
1595
|
+
"instance"
|
|
1596
|
+
]
|
|
1597
|
+
},
|
|
1512
1598
|
"meetingId": {
|
|
1513
1599
|
"type": "string"
|
|
1514
1600
|
},
|
|
@@ -1525,6 +1611,12 @@
|
|
|
1525
1611
|
"from": {
|
|
1526
1612
|
"type": "string"
|
|
1527
1613
|
},
|
|
1614
|
+
"senderName": {
|
|
1615
|
+
"type": [
|
|
1616
|
+
"string",
|
|
1617
|
+
"null"
|
|
1618
|
+
]
|
|
1619
|
+
},
|
|
1528
1620
|
"text": {
|
|
1529
1621
|
"type": "string"
|
|
1530
1622
|
},
|
|
@@ -1550,8 +1642,11 @@
|
|
|
1550
1642
|
}
|
|
1551
1643
|
},
|
|
1552
1644
|
"required": [
|
|
1645
|
+
"id",
|
|
1553
1646
|
"from",
|
|
1647
|
+
"senderName",
|
|
1554
1648
|
"text",
|
|
1649
|
+
"category",
|
|
1555
1650
|
"timestamp"
|
|
1556
1651
|
],
|
|
1557
1652
|
"additionalProperties": false
|
|
@@ -1561,10 +1656,14 @@
|
|
|
1561
1656
|
"type": "integer",
|
|
1562
1657
|
"minimum": -9007199254740991,
|
|
1563
1658
|
"maximum": 9007199254740991
|
|
1659
|
+
},
|
|
1660
|
+
"note": {
|
|
1661
|
+
"type": "string"
|
|
1564
1662
|
}
|
|
1565
1663
|
},
|
|
1566
1664
|
"required": [
|
|
1567
1665
|
"source",
|
|
1666
|
+
"mode",
|
|
1568
1667
|
"messages",
|
|
1569
1668
|
"count"
|
|
1570
1669
|
],
|
|
@@ -1885,7 +1984,7 @@
|
|
|
1885
1984
|
{
|
|
1886
1985
|
"name": "list_meetings",
|
|
1887
1986
|
"title": "List Meetings",
|
|
1888
|
-
"description": "List meetings, newest first: id, topic, status, initiator, participants, message/decision counts, summary. Read messages with read_messages(meetingId).",
|
|
1987
|
+
"description": "List meetings, newest first: id, topic, status, initiator, participants (everyone who has posted), members (who has joined and not left: name and conversation title, mode, approver, session status, wakes the meeting caused), message/decision counts, summary, endReason (manual: end_meeting; consensus: every required approver endorsed the current draft) and proposal: the current draft (messageId, author), the version of its required approver list and its approvals (required, endorsed, waiting: required approvers without a stance, objections), null when no draft was published. Initiator, participants and members are conversation session ids (claude:<id> / codex:<id>) when the n2n-nexus hooks are installed, else MCP adapter instance ids. Read messages with read_messages(meetingId).",
|
|
1889
1988
|
"annotations": {
|
|
1890
1989
|
"readOnlyHint": true,
|
|
1891
1990
|
"openWorldHint": false
|
|
@@ -1969,6 +2068,159 @@
|
|
|
1969
2068
|
},
|
|
1970
2069
|
"summary": {
|
|
1971
2070
|
"type": "string"
|
|
2071
|
+
},
|
|
2072
|
+
"wakes": {
|
|
2073
|
+
"type": "integer",
|
|
2074
|
+
"minimum": -9007199254740991,
|
|
2075
|
+
"maximum": 9007199254740991
|
|
2076
|
+
},
|
|
2077
|
+
"members": {
|
|
2078
|
+
"type": "array",
|
|
2079
|
+
"items": {
|
|
2080
|
+
"type": "object",
|
|
2081
|
+
"properties": {
|
|
2082
|
+
"id": {
|
|
2083
|
+
"type": "string"
|
|
2084
|
+
},
|
|
2085
|
+
"name": {
|
|
2086
|
+
"type": [
|
|
2087
|
+
"string",
|
|
2088
|
+
"null"
|
|
2089
|
+
]
|
|
2090
|
+
},
|
|
2091
|
+
"title": {
|
|
2092
|
+
"type": [
|
|
2093
|
+
"string",
|
|
2094
|
+
"null"
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"mode": {
|
|
2098
|
+
"type": "string",
|
|
2099
|
+
"enum": [
|
|
2100
|
+
"active",
|
|
2101
|
+
"async"
|
|
2102
|
+
]
|
|
2103
|
+
},
|
|
2104
|
+
"approver": {
|
|
2105
|
+
"type": "string",
|
|
2106
|
+
"enum": [
|
|
2107
|
+
"required",
|
|
2108
|
+
"optional"
|
|
2109
|
+
]
|
|
2110
|
+
},
|
|
2111
|
+
"status": {
|
|
2112
|
+
"type": [
|
|
2113
|
+
"string",
|
|
2114
|
+
"null"
|
|
2115
|
+
]
|
|
2116
|
+
},
|
|
2117
|
+
"joinedAt": {
|
|
2118
|
+
"type": "string"
|
|
2119
|
+
},
|
|
2120
|
+
"wakes": {
|
|
2121
|
+
"type": "integer",
|
|
2122
|
+
"minimum": -9007199254740991,
|
|
2123
|
+
"maximum": 9007199254740991
|
|
2124
|
+
},
|
|
2125
|
+
"lastWokenAt": {
|
|
2126
|
+
"type": [
|
|
2127
|
+
"string",
|
|
2128
|
+
"null"
|
|
2129
|
+
]
|
|
2130
|
+
}
|
|
2131
|
+
},
|
|
2132
|
+
"required": [
|
|
2133
|
+
"id",
|
|
2134
|
+
"name",
|
|
2135
|
+
"title",
|
|
2136
|
+
"mode",
|
|
2137
|
+
"approver",
|
|
2138
|
+
"status",
|
|
2139
|
+
"joinedAt",
|
|
2140
|
+
"wakes",
|
|
2141
|
+
"lastWokenAt"
|
|
2142
|
+
],
|
|
2143
|
+
"additionalProperties": false
|
|
2144
|
+
}
|
|
2145
|
+
},
|
|
2146
|
+
"endReason": {
|
|
2147
|
+
"type": [
|
|
2148
|
+
"string",
|
|
2149
|
+
"null"
|
|
2150
|
+
],
|
|
2151
|
+
"enum": [
|
|
2152
|
+
"manual",
|
|
2153
|
+
"consensus",
|
|
2154
|
+
null
|
|
2155
|
+
]
|
|
2156
|
+
},
|
|
2157
|
+
"proposal": {
|
|
2158
|
+
"type": [
|
|
2159
|
+
"object",
|
|
2160
|
+
"null"
|
|
2161
|
+
],
|
|
2162
|
+
"properties": {
|
|
2163
|
+
"messageId": {
|
|
2164
|
+
"type": "integer",
|
|
2165
|
+
"minimum": -9007199254740991,
|
|
2166
|
+
"maximum": 9007199254740991
|
|
2167
|
+
},
|
|
2168
|
+
"author": {
|
|
2169
|
+
"type": "string"
|
|
2170
|
+
},
|
|
2171
|
+
"approversVersion": {
|
|
2172
|
+
"type": "integer",
|
|
2173
|
+
"minimum": -9007199254740991,
|
|
2174
|
+
"maximum": 9007199254740991
|
|
2175
|
+
},
|
|
2176
|
+
"required": {
|
|
2177
|
+
"type": "array",
|
|
2178
|
+
"items": {
|
|
2179
|
+
"type": "string"
|
|
2180
|
+
}
|
|
2181
|
+
},
|
|
2182
|
+
"endorsed": {
|
|
2183
|
+
"type": "array",
|
|
2184
|
+
"items": {
|
|
2185
|
+
"type": "string"
|
|
2186
|
+
}
|
|
2187
|
+
},
|
|
2188
|
+
"waiting": {
|
|
2189
|
+
"type": "array",
|
|
2190
|
+
"items": {
|
|
2191
|
+
"type": "string"
|
|
2192
|
+
}
|
|
2193
|
+
},
|
|
2194
|
+
"objections": {
|
|
2195
|
+
"type": "array",
|
|
2196
|
+
"items": {
|
|
2197
|
+
"type": "object",
|
|
2198
|
+
"properties": {
|
|
2199
|
+
"id": {
|
|
2200
|
+
"type": "string"
|
|
2201
|
+
},
|
|
2202
|
+
"note": {
|
|
2203
|
+
"type": "string"
|
|
2204
|
+
}
|
|
2205
|
+
},
|
|
2206
|
+
"required": [
|
|
2207
|
+
"id",
|
|
2208
|
+
"note"
|
|
2209
|
+
],
|
|
2210
|
+
"additionalProperties": false
|
|
2211
|
+
}
|
|
2212
|
+
}
|
|
2213
|
+
},
|
|
2214
|
+
"required": [
|
|
2215
|
+
"messageId",
|
|
2216
|
+
"author",
|
|
2217
|
+
"approversVersion",
|
|
2218
|
+
"required",
|
|
2219
|
+
"endorsed",
|
|
2220
|
+
"waiting",
|
|
2221
|
+
"objections"
|
|
2222
|
+
],
|
|
2223
|
+
"additionalProperties": false
|
|
1972
2224
|
}
|
|
1973
2225
|
},
|
|
1974
2226
|
"required": [
|
|
@@ -1979,7 +2231,11 @@
|
|
|
1979
2231
|
"startTime",
|
|
1980
2232
|
"participants",
|
|
1981
2233
|
"messageCount",
|
|
1982
|
-
"decisionCount"
|
|
2234
|
+
"decisionCount",
|
|
2235
|
+
"wakes",
|
|
2236
|
+
"members",
|
|
2237
|
+
"endReason",
|
|
2238
|
+
"proposal"
|
|
1983
2239
|
],
|
|
1984
2240
|
"additionalProperties": false
|
|
1985
2241
|
}
|
|
@@ -1997,7 +2253,7 @@
|
|
|
1997
2253
|
{
|
|
1998
2254
|
"name": "start_meeting",
|
|
1999
2255
|
"title": "Start Meeting",
|
|
2000
|
-
"description": "Start a meeting and return its id. It becomes the active meeting that send_message and end_meeting use when no meetingId is given.
|
|
2256
|
+
"description": "Start a meeting and return its id. It becomes the active meeting that send_message and end_meeting use when no meetingId is given. The initiator (this conversation's session id when the n2n-nexus hooks are installed, else the MCP adapter instance) joins it as an active, required member.",
|
|
2001
2257
|
"annotations": {
|
|
2002
2258
|
"readOnlyHint": false,
|
|
2003
2259
|
"destructiveHint": false,
|
|
@@ -2052,7 +2308,7 @@
|
|
|
2052
2308
|
{
|
|
2053
2309
|
"name": "end_meeting",
|
|
2054
2310
|
"title": "End Meeting",
|
|
2055
|
-
"description": "End a meeting (default: the active one) with an optional summary; its history is then read-only.
|
|
2311
|
+
"description": "End a meeting (default: the active one) with an optional summary; its history is then read-only.",
|
|
2056
2312
|
"annotations": {
|
|
2057
2313
|
"readOnlyHint": false,
|
|
2058
2314
|
"destructiveHint": true,
|
|
@@ -2103,7 +2359,7 @@
|
|
|
2103
2359
|
{
|
|
2104
2360
|
"name": "archive_meeting",
|
|
2105
2361
|
"title": "Archive Meeting",
|
|
2106
|
-
"description": "Mark a closed meeting archived (status only).
|
|
2362
|
+
"description": "Mark a closed meeting archived (status only).",
|
|
2107
2363
|
"annotations": {
|
|
2108
2364
|
"readOnlyHint": false,
|
|
2109
2365
|
"destructiveHint": true,
|
|
@@ -2149,7 +2405,7 @@
|
|
|
2149
2405
|
{
|
|
2150
2406
|
"name": "reopen_meeting",
|
|
2151
2407
|
"title": "Reopen Meeting",
|
|
2152
|
-
"description": "Reopen a closed or archived meeting so it accepts messages again.
|
|
2408
|
+
"description": "Reopen a closed or archived meeting so it accepts messages again.",
|
|
2153
2409
|
"annotations": {
|
|
2154
2410
|
"readOnlyHint": false,
|
|
2155
2411
|
"destructiveHint": true,
|
|
@@ -2192,6 +2448,298 @@
|
|
|
2192
2448
|
},
|
|
2193
2449
|
"publishOutputSchema": false
|
|
2194
2450
|
},
|
|
2451
|
+
{
|
|
2452
|
+
"name": "join_meeting",
|
|
2453
|
+
"title": "Join Meeting",
|
|
2454
|
+
"description": "Join an active meeting, or change how you take part in it. mode active (default): new messages of others wake this conversation; async: you see them at your next prompt or tool call. approver: whether your approval is required for a decision (default: required when active, optional when async). since sets where read_messages starts for this meeting: beginning, latest (default on the first join) or after a message number. delivery says how you will be told about new messages: wake, next-hook, or unavailable (no n2n-nexus hooks, so nothing can notify you). Switch to async to pause; leave_meeting to stop.",
|
|
2455
|
+
"annotations": {
|
|
2456
|
+
"readOnlyHint": false,
|
|
2457
|
+
"destructiveHint": false,
|
|
2458
|
+
"idempotentHint": true,
|
|
2459
|
+
"openWorldHint": false
|
|
2460
|
+
},
|
|
2461
|
+
"inputSchema": {
|
|
2462
|
+
"type": "object",
|
|
2463
|
+
"properties": {
|
|
2464
|
+
"meetingId": {
|
|
2465
|
+
"type": "string",
|
|
2466
|
+
"minLength": 1
|
|
2467
|
+
},
|
|
2468
|
+
"mode": {
|
|
2469
|
+
"type": "string",
|
|
2470
|
+
"enum": [
|
|
2471
|
+
"active",
|
|
2472
|
+
"async"
|
|
2473
|
+
],
|
|
2474
|
+
"default": "active",
|
|
2475
|
+
"description": "active: woken by new messages of others; async: see them at your next hook."
|
|
2476
|
+
},
|
|
2477
|
+
"approver": {
|
|
2478
|
+
"type": "string",
|
|
2479
|
+
"enum": [
|
|
2480
|
+
"required",
|
|
2481
|
+
"optional"
|
|
2482
|
+
],
|
|
2483
|
+
"description": "Whether your approval is required for a decision. Default: required when active, optional when async."
|
|
2484
|
+
},
|
|
2485
|
+
"since": {
|
|
2486
|
+
"anyOf": [
|
|
2487
|
+
{
|
|
2488
|
+
"type": "string",
|
|
2489
|
+
"enum": [
|
|
2490
|
+
"beginning",
|
|
2491
|
+
"latest"
|
|
2492
|
+
]
|
|
2493
|
+
},
|
|
2494
|
+
{
|
|
2495
|
+
"type": "integer",
|
|
2496
|
+
"minimum": 0,
|
|
2497
|
+
"maximum": 9007199254740991
|
|
2498
|
+
}
|
|
2499
|
+
],
|
|
2500
|
+
"description": "Where read_messages starts for this meeting: beginning, latest, or after this message number (0: the beginning). Default on the first join: latest; on a later join the cursor stays."
|
|
2501
|
+
}
|
|
2502
|
+
},
|
|
2503
|
+
"required": [
|
|
2504
|
+
"meetingId"
|
|
2505
|
+
]
|
|
2506
|
+
},
|
|
2507
|
+
"outputSchema": {
|
|
2508
|
+
"type": "object",
|
|
2509
|
+
"properties": {
|
|
2510
|
+
"ok": {
|
|
2511
|
+
"type": "boolean",
|
|
2512
|
+
"const": true
|
|
2513
|
+
},
|
|
2514
|
+
"meetingId": {
|
|
2515
|
+
"type": "string"
|
|
2516
|
+
},
|
|
2517
|
+
"mode": {
|
|
2518
|
+
"type": "string",
|
|
2519
|
+
"enum": [
|
|
2520
|
+
"active",
|
|
2521
|
+
"async"
|
|
2522
|
+
]
|
|
2523
|
+
},
|
|
2524
|
+
"approver": {
|
|
2525
|
+
"type": "string",
|
|
2526
|
+
"enum": [
|
|
2527
|
+
"required",
|
|
2528
|
+
"optional"
|
|
2529
|
+
]
|
|
2530
|
+
},
|
|
2531
|
+
"identity": {
|
|
2532
|
+
"type": "string",
|
|
2533
|
+
"enum": [
|
|
2534
|
+
"session",
|
|
2535
|
+
"instance"
|
|
2536
|
+
]
|
|
2537
|
+
},
|
|
2538
|
+
"delivery": {
|
|
2539
|
+
"type": "string",
|
|
2540
|
+
"enum": [
|
|
2541
|
+
"wake",
|
|
2542
|
+
"next-hook",
|
|
2543
|
+
"unavailable"
|
|
2544
|
+
]
|
|
2545
|
+
}
|
|
2546
|
+
},
|
|
2547
|
+
"required": [
|
|
2548
|
+
"ok",
|
|
2549
|
+
"meetingId",
|
|
2550
|
+
"mode",
|
|
2551
|
+
"approver",
|
|
2552
|
+
"identity",
|
|
2553
|
+
"delivery"
|
|
2554
|
+
],
|
|
2555
|
+
"additionalProperties": false
|
|
2556
|
+
},
|
|
2557
|
+
"publishOutputSchema": false
|
|
2558
|
+
},
|
|
2559
|
+
{
|
|
2560
|
+
"name": "leave_meeting",
|
|
2561
|
+
"title": "Leave Meeting",
|
|
2562
|
+
"description": "Leave a meeting: you are no longer notified about it and your approval is no longer counted. join_meeting joins again; reopen_meeting does not.",
|
|
2563
|
+
"annotations": {
|
|
2564
|
+
"readOnlyHint": false,
|
|
2565
|
+
"destructiveHint": true,
|
|
2566
|
+
"idempotentHint": false,
|
|
2567
|
+
"openWorldHint": false
|
|
2568
|
+
},
|
|
2569
|
+
"inputSchema": {
|
|
2570
|
+
"type": "object",
|
|
2571
|
+
"properties": {
|
|
2572
|
+
"meetingId": {
|
|
2573
|
+
"type": "string",
|
|
2574
|
+
"minLength": 1
|
|
2575
|
+
}
|
|
2576
|
+
},
|
|
2577
|
+
"required": [
|
|
2578
|
+
"meetingId"
|
|
2579
|
+
]
|
|
2580
|
+
},
|
|
2581
|
+
"outputSchema": {
|
|
2582
|
+
"type": "object",
|
|
2583
|
+
"properties": {
|
|
2584
|
+
"ok": {
|
|
2585
|
+
"type": "boolean",
|
|
2586
|
+
"const": true
|
|
2587
|
+
},
|
|
2588
|
+
"meetingId": {
|
|
2589
|
+
"type": "string"
|
|
2590
|
+
}
|
|
2591
|
+
},
|
|
2592
|
+
"required": [
|
|
2593
|
+
"ok",
|
|
2594
|
+
"meetingId"
|
|
2595
|
+
],
|
|
2596
|
+
"additionalProperties": false
|
|
2597
|
+
},
|
|
2598
|
+
"publishOutputSchema": false
|
|
2599
|
+
},
|
|
2600
|
+
{
|
|
2601
|
+
"name": "stance",
|
|
2602
|
+
"title": "Take Stance",
|
|
2603
|
+
"description": "Endorse or object to a PROPOSAL of an active meeting (messageId: its number in the meeting), or withdraw your stance on it. You have one stance per proposal; a new one replaces it. object needs a note with the reason and also posts it to the meeting; the proposal's author is told of every stance. When the proposal is the meeting's current draft (published with send_message draft) and it has at least 2 required approvers, every one of them endorsed it and nobody objects to it, the meeting closes by consensus: a DECISION with the draft is posted and decided is true. An MCP adapter instance (no n2n-nexus hooks) cannot approve (counted: false), but its objection blocks like any other. approvals are the proposal's: required (its required approvers, empty unless it is the current draft), endorsed, waiting (required approvers without a stance) and objections.",
|
|
2604
|
+
"annotations": {
|
|
2605
|
+
"readOnlyHint": false,
|
|
2606
|
+
"destructiveHint": true,
|
|
2607
|
+
"idempotentHint": false,
|
|
2608
|
+
"openWorldHint": false
|
|
2609
|
+
},
|
|
2610
|
+
"inputSchema": {
|
|
2611
|
+
"type": "object",
|
|
2612
|
+
"properties": {
|
|
2613
|
+
"meetingId": {
|
|
2614
|
+
"type": "string",
|
|
2615
|
+
"minLength": 1
|
|
2616
|
+
},
|
|
2617
|
+
"messageId": {
|
|
2618
|
+
"type": "integer",
|
|
2619
|
+
"minimum": 1,
|
|
2620
|
+
"maximum": 9007199254740991,
|
|
2621
|
+
"description": "The proposal's number in the meeting."
|
|
2622
|
+
},
|
|
2623
|
+
"stance": {
|
|
2624
|
+
"type": "string",
|
|
2625
|
+
"enum": [
|
|
2626
|
+
"endorse",
|
|
2627
|
+
"object",
|
|
2628
|
+
"withdraw"
|
|
2629
|
+
]
|
|
2630
|
+
},
|
|
2631
|
+
"note": {
|
|
2632
|
+
"type": "string",
|
|
2633
|
+
"description": "Why; required for object."
|
|
2634
|
+
}
|
|
2635
|
+
},
|
|
2636
|
+
"required": [
|
|
2637
|
+
"meetingId",
|
|
2638
|
+
"messageId",
|
|
2639
|
+
"stance"
|
|
2640
|
+
]
|
|
2641
|
+
},
|
|
2642
|
+
"outputSchema": {
|
|
2643
|
+
"type": "object",
|
|
2644
|
+
"properties": {
|
|
2645
|
+
"ok": {
|
|
2646
|
+
"type": "boolean",
|
|
2647
|
+
"const": true
|
|
2648
|
+
},
|
|
2649
|
+
"meetingId": {
|
|
2650
|
+
"type": "string"
|
|
2651
|
+
},
|
|
2652
|
+
"messageId": {
|
|
2653
|
+
"type": "integer",
|
|
2654
|
+
"minimum": -9007199254740991,
|
|
2655
|
+
"maximum": 9007199254740991
|
|
2656
|
+
},
|
|
2657
|
+
"stance": {
|
|
2658
|
+
"type": "string",
|
|
2659
|
+
"enum": [
|
|
2660
|
+
"endorse",
|
|
2661
|
+
"object",
|
|
2662
|
+
"withdraw"
|
|
2663
|
+
]
|
|
2664
|
+
},
|
|
2665
|
+
"currentProposalId": {
|
|
2666
|
+
"type": [
|
|
2667
|
+
"integer",
|
|
2668
|
+
"null"
|
|
2669
|
+
],
|
|
2670
|
+
"minimum": -9007199254740991,
|
|
2671
|
+
"maximum": 9007199254740991
|
|
2672
|
+
},
|
|
2673
|
+
"counted": {
|
|
2674
|
+
"type": "boolean"
|
|
2675
|
+
},
|
|
2676
|
+
"approvals": {
|
|
2677
|
+
"type": "object",
|
|
2678
|
+
"properties": {
|
|
2679
|
+
"required": {
|
|
2680
|
+
"type": "array",
|
|
2681
|
+
"items": {
|
|
2682
|
+
"type": "string"
|
|
2683
|
+
}
|
|
2684
|
+
},
|
|
2685
|
+
"endorsed": {
|
|
2686
|
+
"type": "array",
|
|
2687
|
+
"items": {
|
|
2688
|
+
"type": "string"
|
|
2689
|
+
}
|
|
2690
|
+
},
|
|
2691
|
+
"waiting": {
|
|
2692
|
+
"type": "array",
|
|
2693
|
+
"items": {
|
|
2694
|
+
"type": "string"
|
|
2695
|
+
}
|
|
2696
|
+
},
|
|
2697
|
+
"objections": {
|
|
2698
|
+
"type": "array",
|
|
2699
|
+
"items": {
|
|
2700
|
+
"type": "object",
|
|
2701
|
+
"properties": {
|
|
2702
|
+
"id": {
|
|
2703
|
+
"type": "string"
|
|
2704
|
+
},
|
|
2705
|
+
"note": {
|
|
2706
|
+
"type": "string"
|
|
2707
|
+
}
|
|
2708
|
+
},
|
|
2709
|
+
"required": [
|
|
2710
|
+
"id",
|
|
2711
|
+
"note"
|
|
2712
|
+
],
|
|
2713
|
+
"additionalProperties": false
|
|
2714
|
+
}
|
|
2715
|
+
}
|
|
2716
|
+
},
|
|
2717
|
+
"required": [
|
|
2718
|
+
"required",
|
|
2719
|
+
"endorsed",
|
|
2720
|
+
"waiting",
|
|
2721
|
+
"objections"
|
|
2722
|
+
],
|
|
2723
|
+
"additionalProperties": false
|
|
2724
|
+
},
|
|
2725
|
+
"decided": {
|
|
2726
|
+
"type": "boolean"
|
|
2727
|
+
}
|
|
2728
|
+
},
|
|
2729
|
+
"required": [
|
|
2730
|
+
"ok",
|
|
2731
|
+
"meetingId",
|
|
2732
|
+
"messageId",
|
|
2733
|
+
"stance",
|
|
2734
|
+
"currentProposalId",
|
|
2735
|
+
"counted",
|
|
2736
|
+
"approvals",
|
|
2737
|
+
"decided"
|
|
2738
|
+
],
|
|
2739
|
+
"additionalProperties": false
|
|
2740
|
+
},
|
|
2741
|
+
"publishOutputSchema": true
|
|
2742
|
+
},
|
|
2195
2743
|
{
|
|
2196
2744
|
"name": "create_task",
|
|
2197
2745
|
"title": "Create Task",
|