dominds 1.26.2 → 1.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +2 -0
  2. package/README.zh.md +2 -0
  3. package/dist/docs/cli-usage.md +1 -1
  4. package/dist/docs/cli-usage.zh.md +1 -1
  5. package/dist/llm/gen/mock.js +11 -3
  6. package/dist/llm/kernel-driver/context-health.d.ts +1 -0
  7. package/dist/llm/kernel-driver/context-health.js +7 -0
  8. package/dist/llm/kernel-driver/drive.js +23 -30
  9. package/dist/llm/kernel-driver/idle-reminder-wake.js +6 -2
  10. package/dist/llm/kernel-driver/reminder-context.d.ts +25 -0
  11. package/dist/llm/kernel-driver/reminder-context.js +81 -0
  12. package/dist/llm/kernel-driver/reply-guidance.js +10 -4
  13. package/dist/llm/kernel-driver/tellask-special.js +50 -35
  14. package/dist/mcp/supervisor.js +2 -2
  15. package/dist/minds/system-prompt-parts.js +30 -30
  16. package/dist/minds/system-prompt.js +55 -40
  17. package/dist/persistence.js +15 -1
  18. package/dist/runtime/driver-messages.d.ts +32 -7
  19. package/dist/runtime/driver-messages.js +279 -118
  20. package/dist/runtime/inter-dialog-format.js +24 -12
  21. package/dist/runtime/reply-prompt-copy.d.ts +8 -8
  22. package/dist/runtime/reply-prompt-copy.js +69 -38
  23. package/dist/server/certificates.js +65 -25
  24. package/dist/tools/mcp.js +12 -12
  25. package/dist/tools/prompts/control/en/index.md +2 -2
  26. package/dist/tools/prompts/control/en/principles.md +12 -12
  27. package/dist/tools/prompts/control/en/scenarios.md +5 -5
  28. package/dist/tools/prompts/control/en/tools.md +10 -10
  29. package/dist/tools/prompts/control/zh/index.md +3 -3
  30. package/dist/tools/prompts/control/zh/principles.md +12 -12
  31. package/dist/tools/prompts/control/zh/scenarios.md +7 -7
  32. package/dist/tools/prompts/control/zh/tools.md +11 -11
  33. package/dist/tools/prompts/mcp_admin/en/principles.md +4 -4
  34. package/dist/tools/prompts/mcp_admin/en/scenarios.md +1 -1
  35. package/dist/tools/prompts/mcp_admin/en/tools.md +3 -3
  36. package/dist/tools/prompts/mcp_admin/zh/principles.md +4 -4
  37. package/dist/tools/prompts/mcp_admin/zh/scenarios.md +1 -1
  38. package/dist/tools/prompts/mcp_admin/zh/tools.md +3 -3
  39. package/dist/tools/team_mgmt-mcp-manual.js +12 -12
  40. package/package.json +4 -3
  41. package/webapp/dist/assets/{_basePickBy-DUivPKf7.js → _basePickBy-DTJFxmut.js} +3 -3
  42. package/webapp/dist/assets/{_basePickBy-DUivPKf7.js.map → _basePickBy-DTJFxmut.js.map} +1 -1
  43. package/webapp/dist/assets/{_baseUniq-hcs024vD.js → _baseUniq-CVu4lo4P.js} +2 -2
  44. package/webapp/dist/assets/{_baseUniq-hcs024vD.js.map → _baseUniq-CVu4lo4P.js.map} +1 -1
  45. package/webapp/dist/assets/{arc-Dr6-FXp5.js → arc-4mEKx1Qr.js} +2 -2
  46. package/webapp/dist/assets/{arc-Dr6-FXp5.js.map → arc-4mEKx1Qr.js.map} +1 -1
  47. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js → architectureDiagram-2XIMDMQ5-CmUkdSiN.js} +7 -7
  48. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DXqcDq4R.js.map → architectureDiagram-2XIMDMQ5-CmUkdSiN.js.map} +1 -1
  49. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js → blockDiagram-WCTKOSBZ-CijmZ89y.js} +7 -7
  50. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-IIP6LGXS.js.map → blockDiagram-WCTKOSBZ-CijmZ89y.js.map} +1 -1
  51. package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js → c4Diagram-IC4MRINW-D0GcQMKs.js} +3 -3
  52. package/webapp/dist/assets/{c4Diagram-IC4MRINW-D_d3F9XD.js.map → c4Diagram-IC4MRINW-D0GcQMKs.js.map} +1 -1
  53. package/webapp/dist/assets/{channel-CWWjsXtU.js → channel-6pgfGez4.js} +2 -2
  54. package/webapp/dist/assets/{channel-CWWjsXtU.js.map → channel-6pgfGez4.js.map} +1 -1
  55. package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js → chunk-4BX2VUAB-BQDAaqXK.js} +2 -2
  56. package/webapp/dist/assets/{chunk-4BX2VUAB-BF4yph2W.js.map → chunk-4BX2VUAB-BQDAaqXK.js.map} +1 -1
  57. package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js → chunk-55IACEB6-DGYbZ_6j.js} +2 -2
  58. package/webapp/dist/assets/{chunk-55IACEB6-Hn3CmDYz.js.map → chunk-55IACEB6-DGYbZ_6j.js.map} +1 -1
  59. package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js → chunk-FMBD7UC4-EVNnQ_SU.js} +2 -2
  60. package/webapp/dist/assets/{chunk-FMBD7UC4-C05pl9Ov.js.map → chunk-FMBD7UC4-EVNnQ_SU.js.map} +1 -1
  61. package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js → chunk-JSJVCQXG-BSQe2NHw.js} +2 -2
  62. package/webapp/dist/assets/{chunk-JSJVCQXG-BVlq_BAS.js.map → chunk-JSJVCQXG-BSQe2NHw.js.map} +1 -1
  63. package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js → chunk-KX2RTZJC-I1LMYfrr.js} +2 -2
  64. package/webapp/dist/assets/{chunk-KX2RTZJC-BQoaRWif.js.map → chunk-KX2RTZJC-I1LMYfrr.js.map} +1 -1
  65. package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js → chunk-NQ4KR5QH-C9HmN9dA.js} +4 -4
  66. package/webapp/dist/assets/{chunk-NQ4KR5QH-0okCAXtW.js.map → chunk-NQ4KR5QH-C9HmN9dA.js.map} +1 -1
  67. package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js → chunk-QZHKN3VN-73ijGXNd.js} +2 -2
  68. package/webapp/dist/assets/{chunk-QZHKN3VN-DEiprgz-.js.map → chunk-QZHKN3VN-73ijGXNd.js.map} +1 -1
  69. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js → chunk-WL4C6EOR-DeVu-9ac.js} +6 -6
  70. package/webapp/dist/assets/{chunk-WL4C6EOR-B-Xkb3lo.js.map → chunk-WL4C6EOR-DeVu-9ac.js.map} +1 -1
  71. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js → classDiagram-VBA2DB6C-2HURCFLk.js} +7 -7
  72. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DCCQrdwF.js.map → classDiagram-VBA2DB6C-2HURCFLk.js.map} +1 -1
  73. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js → classDiagram-v2-RAHNMMFH-2HURCFLk.js} +7 -7
  74. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DCCQrdwF.js.map → classDiagram-v2-RAHNMMFH-2HURCFLk.js.map} +1 -1
  75. package/webapp/dist/assets/{clone-Drtik9pk.js → clone-BNPlfGMh.js} +2 -2
  76. package/webapp/dist/assets/{clone-Drtik9pk.js.map → clone-BNPlfGMh.js.map} +1 -1
  77. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js → cose-bilkent-S5V4N54A-BeoZCFA5.js} +2 -2
  78. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-BBWvHErL.js.map → cose-bilkent-S5V4N54A-BeoZCFA5.js.map} +1 -1
  79. package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js → dagre-KLK3FWXG-DYxCt50h.js} +7 -7
  80. package/webapp/dist/assets/{dagre-KLK3FWXG-2qk0ikdt.js.map → dagre-KLK3FWXG-DYxCt50h.js.map} +1 -1
  81. package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js → diagram-E7M64L7V-BWxcTI3B.js} +8 -8
  82. package/webapp/dist/assets/{diagram-E7M64L7V-C1DbHDbf.js.map → diagram-E7M64L7V-BWxcTI3B.js.map} +1 -1
  83. package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js → diagram-IFDJBPK2-BAIPE4Rn.js} +7 -7
  84. package/webapp/dist/assets/{diagram-IFDJBPK2-DToz8zk9.js.map → diagram-IFDJBPK2-BAIPE4Rn.js.map} +1 -1
  85. package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js → diagram-P4PSJMXO-CvcxPsVp.js} +7 -7
  86. package/webapp/dist/assets/{diagram-P4PSJMXO-B9V-tQMe.js.map → diagram-P4PSJMXO-CvcxPsVp.js.map} +1 -1
  87. package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js → erDiagram-INFDFZHY-BDO90e-f.js} +5 -5
  88. package/webapp/dist/assets/{erDiagram-INFDFZHY-CV68FwGf.js.map → erDiagram-INFDFZHY-BDO90e-f.js.map} +1 -1
  89. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js → flowDiagram-PKNHOUZH-hd4TorKR.js} +7 -7
  90. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-CW06almb.js.map → flowDiagram-PKNHOUZH-hd4TorKR.js.map} +1 -1
  91. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js → ganttDiagram-A5KZAMGK-mID1sFSl.js} +3 -3
  92. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-C96NncCU.js.map → ganttDiagram-A5KZAMGK-mID1sFSl.js.map} +1 -1
  93. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js} +8 -8
  94. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-CAuIexWi.js.map → gitGraphDiagram-K3NZZRJ6-DaA7yodM.js.map} +1 -1
  95. package/webapp/dist/assets/{graph-CvhwAY6w.js → graph-B86JxOkQ.js} +3 -3
  96. package/webapp/dist/assets/{graph-CvhwAY6w.js.map → graph-B86JxOkQ.js.map} +1 -1
  97. package/webapp/dist/assets/{index-BOO_zFrI.js → index-DYO4ZL8y.js} +369 -389
  98. package/webapp/dist/assets/{index-BOO_zFrI.js.map → index-DYO4ZL8y.js.map} +1 -1
  99. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js → infoDiagram-LFFYTUFH-DxF36W9g.js} +6 -6
  100. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-C16Sckpz.js.map → infoDiagram-LFFYTUFH-DxF36W9g.js.map} +1 -1
  101. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js → ishikawaDiagram-PHBUUO56-wvAzRzSO.js} +2 -2
  102. package/webapp/dist/assets/{ishikawaDiagram-PHBUUO56-oNG6I0p3.js.map → ishikawaDiagram-PHBUUO56-wvAzRzSO.js.map} +1 -1
  103. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js → journeyDiagram-4ABVD52K-CIBXsttK.js} +5 -5
  104. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-437hhFHC.js.map → journeyDiagram-4ABVD52K-CIBXsttK.js.map} +1 -1
  105. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js → kanban-definition-K7BYSVSG-DQTPyM5m.js} +3 -3
  106. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-DsCV_Tpx.js.map → kanban-definition-K7BYSVSG-DQTPyM5m.js.map} +1 -1
  107. package/webapp/dist/assets/{layout-BttZf7fQ.js → layout-BG7IzQAG.js} +5 -5
  108. package/webapp/dist/assets/{layout-BttZf7fQ.js.map → layout-BG7IzQAG.js.map} +1 -1
  109. package/webapp/dist/assets/{linear-B75vD4Ho.js → linear-5XR-mXYw.js} +2 -2
  110. package/webapp/dist/assets/{linear-B75vD4Ho.js.map → linear-5XR-mXYw.js.map} +1 -1
  111. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js → mindmap-definition-YRQLILUH-BwTQE6uN.js} +4 -4
  112. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-DA1-XaNi.js.map → mindmap-definition-YRQLILUH-BwTQE6uN.js.map} +1 -1
  113. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js → pieDiagram-SKSYHLDU-ZYB35zd5.js} +8 -8
  114. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-Bx6hUJ4Q.js.map → pieDiagram-SKSYHLDU-ZYB35zd5.js.map} +1 -1
  115. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js → quadrantDiagram-337W2JSQ-BM041Q-W.js} +3 -3
  116. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-zyduIle0.js.map → quadrantDiagram-337W2JSQ-BM041Q-W.js.map} +1 -1
  117. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js → requirementDiagram-Z7DCOOCP-r_xMoroM.js} +4 -4
  118. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-BgfjyEJM.js.map → requirementDiagram-Z7DCOOCP-r_xMoroM.js.map} +1 -1
  119. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js} +2 -2
  120. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-lmOWaczS.js.map → sankeyDiagram-WA2Y5GQK-Ju2-t24N.js.map} +1 -1
  121. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js → sequenceDiagram-2WXFIKYE-D83Bocd1.js} +4 -4
  122. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DqJz-iYI.js.map → sequenceDiagram-2WXFIKYE-D83Bocd1.js.map} +1 -1
  123. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js → stateDiagram-RAJIS63D-mTmpZzpU.js} +9 -9
  124. package/webapp/dist/assets/{stateDiagram-RAJIS63D-CngWYuX-.js.map → stateDiagram-RAJIS63D-mTmpZzpU.js.map} +1 -1
  125. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js} +5 -5
  126. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-BxyHvrvU.js.map → stateDiagram-v2-FVOUBMTO-BCn7mFeH.js.map} +1 -1
  127. package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js → timeline-definition-YZTLITO2-C1QBcYz8.js} +3 -3
  128. package/webapp/dist/assets/{timeline-definition-YZTLITO2-C7t6WVS3.js.map → timeline-definition-YZTLITO2-C1QBcYz8.js.map} +1 -1
  129. package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js → treemap-KZPCXAKY-BEyfK-Fo.js} +5 -5
  130. package/webapp/dist/assets/{treemap-KZPCXAKY-BDZ3n5TC.js.map → treemap-KZPCXAKY-BEyfK-Fo.js.map} +1 -1
  131. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js → vennDiagram-LZ73GAT5-C6SZhLMq.js} +2 -2
  132. package/webapp/dist/assets/{vennDiagram-LZ73GAT5-CEw7GPed.js.map → vennDiagram-LZ73GAT5-C6SZhLMq.js.map} +1 -1
  133. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js → xychartDiagram-JWTSCODW-BUlvexnm.js} +3 -3
  134. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-DmS8BiaA.js.map → xychartDiagram-JWTSCODW-BUlvexnm.js.map} +1 -1
  135. package/webapp/dist/index.html +1 -1
@@ -57,11 +57,11 @@ delete_reminder({
57
57
  - If the information should synchronize the whole team's current effective state, put it in Taskdoc `progress` instead
58
58
  - If the note is durable knowledge rather than an active current-work cue, move it to `personal_memory` instead
59
59
 
60
- ## Scenario 2: Side Dialog is complete, and the assignment header requires replyTellask
60
+ ## Scenario 2: Side Dialog is complete, and the task header requires replyTellask
61
61
 
62
62
  ### Scenario Description
63
63
 
64
- The current Side Dialog is finished, and the assignment header explicitly says "when complete, call `replyTellask`".
64
+ The current Side Dialog is finished, and the task header explicitly says "when complete, call `replyTellask`".
65
65
 
66
66
  ### Example
67
67
 
@@ -74,7 +74,7 @@ replyTellask({
74
74
 
75
75
  ### Key Points
76
76
 
77
- - Do not replace this with a plain final message; direct-reply fallback is only a temporary runtime transition safeguard, not a valid planned completion method
77
+ - Do not replace this with a plain final message; formal delivery must use the reply tool named by Dominds, or the other dialog may not receive a formal reply
78
78
  - Put the final deliverable body directly in `replyContent`
79
79
  - If the header says `replyTellaskSessionless`, use the same shape with that exact function name
80
80
 
@@ -97,13 +97,13 @@ tellaskBack({
97
97
 
98
98
  - This example uses `tellaskBack` because tellasker input is specifically required
99
99
  - If team SOP / role ownership already identifies the responsible executor, directly use `tellask` / `tellaskSessionless` for that owner instead of mapping every unfinished state to `tellaskBack`
100
- - Do not use `replyTellask*` for intermediate clarifications
100
+ - Do not use reply tools for intermediate clarifications
101
101
 
102
102
  ## Scenario 4: Tellasker answered the ask-back, so use replyTellaskBack to close
103
103
 
104
104
  ### Scenario Description
105
105
 
106
- You previously sent a `tellaskBack`, the tellasker has now replied, and runtime exposes `replyTellaskBack`.
106
+ You previously sent a `tellaskBack`, the tellasker has now replied, and Dominds shows `replyTellaskBack`.
107
107
 
108
108
  ### Example
109
109
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  The **tool descriptions themselves** for these functions intentionally stay minimal and spec-like. This section carries the smallest practical lookup for when they appear and how to choose among them.
25
25
 
26
- | Function | Minimal parameter contract | When runtime exposes it | Effect |
26
+ | Function | Minimal parameter contract | When Dominds shows it | Effect |
27
27
  | ------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
28
28
  | `replyTellask` | `{ replyContent: string }` | Current Side Dialog comes from a sessioned `tellask` and is ready for final delivery | Delivers the final result for the current tellask session |
29
29
  | `replyTellaskSessionless` | `{ replyContent: string }` | Current Side Dialog comes from a one-shot `tellaskSessionless` and is ready for final delivery | Delivers the final result for the current one-shot tellask |
@@ -32,11 +32,11 @@ The **tool descriptions themselves** for these functions intentionally stay mini
32
32
 
33
33
  ### Minimal Usage Rules
34
34
 
35
- - Focus on doing the current task correctly first; only move into `reply*` closure when final tellasker delivery is actually ready
36
- - Call whichever `reply*` runtime currently exposes; do not switch to another reply variant by yourself
37
- - If the assignment header explicitly names a reply function, follow that exact name
35
+ - Focus on doing the current task correctly first; send the final reply only when the final content is ready and Dominds names a reply tool
36
+ - Call whichever reply tool Dominds currently shows; do not switch to another reply tool by yourself
37
+ - If the task header explicitly names a reply tool, follow that exact name
38
38
  - Put only the final deliverable body in `replyContent`; do not wrap it in meta-explanations like "I am now calling replyTellask"
39
- - If you produce final deliverable content instead of the reply tool, runtime may inject a temporary `role=user` reminder telling you to use the correct reply function; do not rely on direct-reply fallback, which is only a temporary runtime transition safeguard, not the formal reply mechanism
39
+ - If you write final deliverable content but do not send it through the reply tool named by Dominds, Dominds may temporarily remind you to use that tool; do not treat plain text as the formal reply path, because the other dialog may not receive a formal reply that way
40
40
 
41
41
  ### 1. add_reminder
42
42
 
@@ -45,8 +45,8 @@ Add reminder.
45
45
  Use when:
46
46
 
47
47
  - Adding a new temporary current-work item
48
- - Before `clear_mind`, the Main Dialog first records undocumented discussion details the next course needs to know into Taskdoc, then creates continuation-package notes; a Side Dialog directly maintains sufficiently detailed continuation-package reminders. When the current course is already under caution/critical remediation, Side Dialog reminder length has no technical limit and rough bridge notes are acceptable
49
- - Record only manually maintained current-work / continuation details; do not put runtime-maintained environment state such as background process status, in-flight background asks, or session attachment state into manual reminders
48
+ - Before `clear_mind`, the Main Dialog first records undocumented discussion details the next course needs to know into Taskdoc, then creates continuation-package notes; a Side Dialog directly maintains sufficiently detailed continuation-package reminders. When Dominds has already warned that context is tight or critical, Side Dialog reminders have no fixed length limit and rough bridge notes are acceptable
49
+ - Record only manually maintained current-work / continuation details; do not put environment state automatically maintained by Dominds, such as background process status, in-flight background asks, or session attachment state, into manual reminders
50
50
 
51
51
  **Parameters:**
52
52
 
@@ -92,7 +92,7 @@ Use when:
92
92
  - Compressing / merging existing reminders
93
93
  - Rewriting pre-clear resume info into continuation-package notes
94
94
  - Removing details that have already been promoted into Taskdoc
95
- - Removing or rewriting system environment state that was mistakenly captured in a manual reminder; runtime-managed reminders, panels, and tool outputs are the single source of truth for that state
95
+ - Removing or rewriting system environment state that was mistakenly captured in a manual reminder; Dominds-managed reminders, panels, and tool outputs are the authoritative place for that state
96
96
 
97
97
  **Parameters:**
98
98
 
@@ -360,7 +360,7 @@ message: <error message>
360
360
 
361
361
  - Normal reminders should stay concise, fresh, and directly actionable; often 1-3 items total
362
362
  - For a continuation package, use structured notes by default: next step, key pointers, run/verify, easy-to-lose volatile details
363
- - If the current course is already under caution/critical remediation: the Main Dialog first records undocumented discussion details the next course needs to know into the appropriate Taskdoc sections, then keeps necessary continuation-package reminders; a Side Dialog must not maintain Taskdoc or draft Taskdoc update proposals, and should directly maintain sufficiently detailed continuation-package reminders with no technical length limit. Rough multi-reminder bridge notes are acceptable and should be reconciled as the first step only after the system actually starts the new course
363
+ - If Dominds has already warned that context is tight or critical: the Main Dialog first records undocumented discussion details the next course needs to know into the appropriate Taskdoc sections, then keeps necessary continuation-package reminders; a Side Dialog must not maintain Taskdoc or draft Taskdoc update proposals, and should directly maintain sufficiently detailed continuation-package reminders with no fixed length limit. Rough multi-reminder bridge notes are acceptable and should be reconciled as the first step only after Dominds actually starts the new course
364
364
  - Keep only details still not covered by Taskdoc; do not repeat team-shared status. If the team needs “where we are now / which decisions are in effect / what is next / which blockers still hold”, write it back to Taskdoc `progress`
365
- - Do not manually record Dominds runtime-maintained environment state, such as whether background processes are still running, in-flight background asks/collaboration, or browser/session attachment state. Manual copies go stale easily and conflict with the runtime-maintained single source of truth, creating cognitive noise
365
+ - Do not manually record environment state automatically maintained by Dominds, such as whether background processes are still running, in-flight background asks/collaboration, or browser/session attachment state. Manual copies go stale easily and conflict with the Dominds-managed status, creating cognitive noise
366
366
  - Do not paste long logs, large tool outputs, or raw material into reminders
@@ -29,7 +29,7 @@ control 是 Dominds 的**对话控制工具集**,用于管理对话状态、
29
29
  - **提醒管理**:提醒分 `dialog` / `task` / `agent` 三个 scope;默认是 `task`,用于同一差遣牒任务下的手头工作;`dialog` 只用于真正对话局部的提醒;`agent` 只用于紧急、短期、全局刺眼提醒
30
30
  - **差遣牒操作**:追加、替换或删除任务契约章节(goals/constraints/progress);其中 `progress` 是全队共享、准实时、可扫读的任务公告牌
31
31
  - **上下文维护**:在不丢关键恢复线索的前提下降低认知负载
32
- - **回复路由**:在支线/回问语境下,区分 `tellaskBack`、`replyTellask*` 与普通文本的职责边界
32
+ - **回复路由**:在支线/回问语境下,区分回问诉请者、发送最终回贴与普通文本的职责边界
33
33
 
34
34
  ## 快速导航
35
35
 
@@ -56,9 +56,9 @@ control 是 Dominds 的**对话控制工具集**,用于管理对话状态、
56
56
  - 标记待处理事项
57
57
  - 追踪当前下一步/阻塞
58
58
  - 记录阻塞问题
59
- - 在 `clear_mind` 前承载接续包;若当前程已被系统置于吃紧/告急处置态,可先带多条粗略提醒项过桥
59
+ - 在 `clear_mind` 前承载接续包;若 Dominds 已提醒当前程吃紧/告急,可先带多条粗略提醒项过桥
60
60
 
61
- 提醒不用于手工复制 Dominds 系统环境会自动维护的状态,例如后台进程状态、后台进行中诉请/协作、浏览器/会话附件状态等。这些状态以 runtime 自动维护的提醒/面板/工具输出为 single source of truth;手工记录很容易过时并造成认知干扰。
61
+ 提醒不用于手工复制 Dominds 会自动维护的系统状态,例如后台进程状态、后台进行中诉请/协作、浏览器/会话附件状态等。这些状态以 Dominds 自动维护的提醒、面板和工具输出为准;手工记录很容易过时并造成认知干扰。
62
62
 
63
63
  scope 规则:
64
64
 
@@ -42,7 +42,7 @@
42
42
  - `agent` 提醒会在所有由你主理的后续对话里继续可见
43
43
  - 可随时添加、修改、删除
44
44
  - 默认应保持少量、可扫读、可直接指导下一步
45
- - 准备 `clear_mind` 时,主线对话先把应由下一程知会的未落文档讨论细节补进差遣牒,再压缩成结构化接续包提醒项;支线对话直接维护足够详尽的接续包提醒项。若当前程已被系统置于吃紧/告急处置态,支线提醒项长度没有技术限制,也可先保留多条粗略提醒项过桥
45
+ - 准备 `clear_mind` 时,主线对话先把应由下一程知会的未落文档讨论细节补进差遣牒,再压缩成结构化接续包提醒项;支线对话直接维护足够详尽的接续包提醒项。若 Dominds 已提醒上下文吃紧/告急,支线提醒项没有固定长度限制,也可先保留多条粗略提醒项过桥
46
46
 
47
47
  **与 memory 的区别:**
48
48
  | 特性 | dialog reminder | task reminder | agent reminder | personal memory |
@@ -103,17 +103,17 @@
103
103
  - 不要把智能体队友当成真人同事:祂不会因为你又发一条诉请而被打扰。同一个队友 + 同一个 `sessionSlug` = 接着同一件事说,并更新那件正在做的事;`tellaskSessionless` 或不同 `sessionSlug` = 另一件独立任务
104
104
  - 只有当必须向诉请者补需求、澄清目标、裁决取舍、确认验收口径、提供缺失输入,或现有规程无法明确判责时:调用 `tellaskBack({ tellaskContent })`
105
105
  - 需要人类亲自登录 / GUI / 验证码 / 高风险授权时:调用 `askHuman({ tellaskContent })`
106
- - 当前支线已经完成,且当前 assignment 明确要求 `replyTellask`:调用 `replyTellask({ replyContent })`
107
- - 当前支线已经完成,且当前 assignment 明确要求 `replyTellaskSessionless`:调用 `replyTellaskSessionless({ replyContent })`
108
- - 当前是在回复一条诉请者发来的 `tellaskBack` 续诉请,且 runtime 暴露了 `replyTellaskBack`:调用 `replyTellaskBack({ replyContent })`
109
- - 普通文本不是跨对话完成交付通道;如果你直接产出可作为最终回贴的内容而没调 reply 工具,runtime 可能临时插入一条 `role=user` 的提醒要求你改用正确的 reply 函数。不要依赖 direct-reply fallback;它只是运行时临时过渡兜底,不是正式回复机制
106
+ - 当前支线已经完成,且当前任务开头明确要求 `replyTellask`:调用 `replyTellask({ replyContent })`
107
+ - 当前支线已经完成,且当前任务开头明确要求 `replyTellaskSessionless`:调用 `replyTellaskSessionless({ replyContent })`
108
+ - 当前是在回复一条诉请者发来的 `tellaskBack` 续诉请,且 Dominds 显示了 `replyTellaskBack`:调用 `replyTellaskBack({ replyContent })`
109
+ - 普通文本不是跨对话完成交付通道;如果你直接写出了可回给诉请者的最终内容但没按 Dominds 点名的回复工具发送,Dominds 可能临时提醒你改用那个工具。不要把普通文本当成正式回贴路径;对方可能收不到正式回贴。
110
110
 
111
111
  ### 心智负担最小化规则
112
112
 
113
- - 先专注把当前任务做对;`reply*` 只在最终对诉请者交付时用于收口
114
- - 不要靠记忆硬选 reply 变体;以当前 assignment 头部和 runtime 当前暴露的函数名为准
115
- - `reply*` 函数自身说明文案故意保持极简,只承载最小规格;情景判断看本手册的 principles / scenarios
116
- - 若 runtime 只暴露一个 `reply*`,那就是当前应调用的唯一完成路径
113
+ - 先专注把当前任务做对;只有最终内容准备好、且 Dominds 点名了回复工具时,才发送最终回贴
114
+ - 不要靠记忆硬选回复工具;以当前任务开头和 Dominds 当前点名/显示的回复工具为准
115
+ - 回复工具自身说明文案故意保持极简,只承载最小规格;情景判断看本手册的 principles / scenarios
116
+ - 若 Dominds 只点名/显示一个回复工具,那就是当前应调用的唯一完成路径
117
117
  - `tellaskBack` 只在“无法按现有规程明确判责,或必须回问诉请者”时成立,不是所有阻塞的默认第一动作
118
118
 
119
119
  ## 最佳实践
@@ -122,7 +122,7 @@
122
122
 
123
123
  - **当前手头工作**:当前下一步、阻塞、关键定位信息
124
124
  - **易丢细节**:临时路径、id、命令、样例输入
125
- - **换程接续**:在 `clear_mind` 前整理接续包;若当前程已被系统置于吃紧/告急处置态,可先保留多条粗略提醒项
125
+ - **换程接续**:在 `clear_mind` 前整理接续包;若 Dominds 已提醒当前程吃紧/告急,可先保留多条粗略提醒项
126
126
  - **任务延续提示**:如果在当前差遣牒任务内都应该继续看到它,用 `task`
127
127
  - **全局刺眼提示**:如果它应该在所有由你主理的后续对话里继续看到,而且是短期、紧急、全局刺眼提醒,用 `agent`
128
128
 
@@ -136,10 +136,10 @@
136
136
 
137
137
  - 保持简洁:默认提醒项常见 1–3 条,优先 `update_reminder` 压缩/合并
138
138
  - 区分载体:需要向全队同步的当前有效状态、关键决策、下一步与仍成立阻塞,写入 `progress` 这一准实时任务公告牌;提醒项只留个人/当前对话恢复所需细节
139
- - 避免重复系统状态:后台进程状态、后台进行中诉请/协作、浏览器/会话附件状态等 Dominds 系统环境会自动维护的信息,不要写进手工提醒项;这些状态以 runtime 自动维护的提醒/面板/工具输出为 single source of truth,手工副本容易过时并造成认知干扰
139
+ - 避免重复系统状态:后台进程状态、后台进行中诉请/协作、浏览器/会话附件状态等 Dominds 会自动维护的信息,不要写进手工提醒项;这些状态以 Dominds 自动维护的提醒、面板和工具输出为准,手工副本容易过时并造成认知干扰
140
140
  - 面向全队:`progress` 应保持可扫读、以“当前仍有效”为准,不要退化成个人日志、流水账、临时便签或历史残影堆积;少量新增用 `mind_more`,需要清旧/重排/压缩时先调用 `recall_taskdoc`,再用 `change_mind` 并携带返回的 `content_hash` 作为 `previous_content_hash`
141
141
  - 按需整理:`mind_more` 不是默认记账动作。若同一主题已有多条阶段性记录,优先用 `change_mind` 合并成当前摘要;把细节放进 rtws 正式文档,并在差遣牒里保留文档定位 pointer。若会冲掉原有内容,必须有直接人类确认,或已按人类认可 SOP/验收标准充分考虑原有内容后再改写
142
- - 换程前收束:主线对话先把尚未落实到文档、且下一程需要知会的讨论细节写入差遣牒合适章节,再整理结构化接续包提醒项;支线对话不要维护差遣牒,也不要整理差遣牒更新提案,直接维护足够详尽的接续包提醒项。若系统已把当前程切到吃紧/告急处置态,则先保留多条粗略提醒项过桥也可以;当前程只做落文档/保信息 + `clear_mind`(支线只做保信息 + `clear_mind`),系统真正开启新一程后第一步再收敛
142
+ - 换程前收束:主线对话先把尚未落实到文档、且下一程需要知会的讨论细节写入差遣牒合适章节,再整理结构化接续包提醒项;支线对话不要维护差遣牒,也不要整理差遣牒更新提案,直接维护足够详尽的接续包提醒项。若 Dominds 已提醒上下文吃紧/告急,则先保留多条粗略提醒项过桥也可以;当前程只做落文档/保信息 + `clear_mind`(支线只做保信息 + `clear_mind`),Dominds 真正开启新一程后第一步再收敛
143
143
  - 拒绝原料堆积:不要把长日志/大段 tool output 直接塞进提醒项
144
144
  - 文档分层:差遣牒写“现在应如何同步/推进”,正式文档写“为什么、怎么做、详细证据和完整过程”。差遣牒需要引用正式文档时,写稳定路径/章节名/相关命令,而不是复制整段内容
145
145
 
@@ -57,11 +57,11 @@ delete_reminder({
57
57
  - 如果信息需要向全队同步当前有效状态、关键决策、下一步或仍成立阻塞,应写入 Taskdoc `progress`
58
58
  - 如果内容本质上是长期知识而不是当前手头工作提示,应改存到 `personal_memory`
59
59
 
60
- ## 场景 2:支线已完成,按 assignment 头部要求调用 replyTellask
60
+ ## 场景 2:支线已完成,按任务开头要求调用 replyTellask
61
61
 
62
62
  ### 场景描述
63
63
 
64
- 当前支线处理完毕,assignment 头部明确写着“完成任务时必须调用 `replyTellask`”。
64
+ 当前支线处理完毕,任务开头明确写着“完成任务时必须调用 `replyTellask`”。
65
65
 
66
66
  ### 示例
67
67
 
@@ -73,9 +73,9 @@ replyTellask({
73
73
 
74
74
  ### 关键点
75
75
 
76
- - 不要再发一条普通最终消息代替;direct-reply fallback 只是运行时临时过渡兜底,不是可规划使用的收口方式
76
+ - 不要再发一条普通最终消息代替;正式回贴必须走 Dominds 点名的回复工具,否则对方可能收不到正式回贴
77
77
  - `replyContent` 直接放最终交付正文
78
- - assignment 头部写的是 `replyTellaskSessionless`,则同结构替换函数名
78
+ - 若任务开头写的是 `replyTellaskSessionless`,则同结构替换函数名
79
79
 
80
80
  ## 场景 3:当前未完成,需要回问诉请者
81
81
 
@@ -90,20 +90,20 @@ tellaskBack({
90
90
  tellaskContent: '还缺少生产环境端口与部署入口信息。请补充这两项后我再继续给出最终方案。',
91
91
  });
92
92
 
93
- // 等诉请者补充后,runtime 会在当前对话里继续推进
93
+ // 等诉请者补充后,Dominds 会在当前对话里继续推进
94
94
  ```
95
95
 
96
96
  ### 关键点
97
97
 
98
98
  - 这里只是“必须向诉请者补输入”的例子,所以用 `tellaskBack`
99
99
  - 若团队规程 / SOP / 职责卡已经能明确执行负责人,应直接 `tellask` / `tellaskSessionless` 对应负责人,而不是机械因为“未完成态”就用 `tellaskBack`
100
- - `tellaskBack` 只负责把问题问回去,不负责最终交付
100
+ - `tellaskBack` 只负责把问题问回去,不负责最终交付;中间澄清不要调用回复工具
101
101
 
102
102
  ## 场景 4:收到 ask-back 续诉请后,用 replyTellaskBack 收口
103
103
 
104
104
  ### 场景描述
105
105
 
106
- 你之前发过 `tellaskBack`,诉请者现在补回了所需信息,runtime 暴露了 `replyTellaskBack`。
106
+ 你之前发过 `tellaskBack`,诉请者现在补回了所需信息,Dominds 显示了 `replyTellaskBack`。
107
107
 
108
108
  ### 示例
109
109
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  这些函数的**工具自身说明**刻意保持最小规格风格;这里负责补充“何时会出现、出现后怎么选”的最小速查。
25
25
 
26
- | 函数 | 最小参数契约 | runtime 何时暴露 | 调用后语义 |
26
+ | 函数 | 最小参数契约 | Dominds 何时显示 | 调用后语义 |
27
27
  | ------------------------- | ---------------------------- | -------------------------------------------------------------------- | ----------------------------------- |
28
28
  | `replyTellask` | `{ replyContent: string }` | 当前支线承接的是 sessioned `tellask`,且已进入可交付完成态 | 把最终结果回复给当前 `tellask` 会话 |
29
29
  | `replyTellaskSessionless` | `{ replyContent: string }` | 当前支线承接的是 one-shot `tellaskSessionless`,且已进入可交付完成态 | 把最终结果回复给当前一次性诉请 |
@@ -32,11 +32,11 @@
32
32
 
33
33
  ### 最小使用规则
34
34
 
35
- - 先专注把当前任务做对;只有真到最终对诉请者交付时,才进入 `reply*` 收口
36
- - 看见哪一个 `reply*` 被 runtime 暴露,就调用哪一个;不要自行改选别的 reply 变体
37
- - assignment 头部若已点名 reply 函数名,以那个名字为准
35
+ - 先专注把当前任务做对;只有最终内容准备好、且 Dominds 点名了回复工具时,才发送最终回贴
36
+ - 看见 Dominds 当前显示哪一个回复工具,就调用哪一个;不要自行改选别的回复工具
37
+ - 任务开头若已点名回复工具名,以那个名字为准
38
38
  - `replyContent` 只放最终交付正文,不要再包一层“我现在调用了 replyXXX”
39
- - 如果你直接产出最终回贴内容而没调 reply 工具,runtime 可能插入一条 `role=user` 的 runtime reminder 纠正你;不要依赖 direct-reply fallback,它只是运行时临时过渡兜底,不是正式回复机制
39
+ - 如果你直接写出了最终回贴内容但没按 Dominds 点名的回复工具发送,Dominds 可能临时提醒你改用那个工具;不要把普通文本当成正式回贴路径,对方可能收不到正式回贴
40
40
 
41
41
  ### 1. add_reminder
42
42
 
@@ -45,8 +45,8 @@
45
45
  **适用:**
46
46
 
47
47
  - 添加新的临时手头工作条目
48
- - 若准备 `clear_mind`,主线对话先把应由下一程知会的未落文档讨论细节补进差遣牒,再新建接续包提醒项;支线对话直接维护足够详尽的接续包提醒项。若当前程已被系统置于吃紧/告急处置态,支线提醒项长度没有技术限制,先记粗略过桥信息也可以
49
- - 只记录需要你手工维护的手头工作/接续细节;不要在手工提醒项里记录后台进程状态、后台进行中诉请、会话附件状态等 Dominds 系统环境会自动维护的信息
48
+ - 若准备 `clear_mind`,主线对话先把应由下一程知会的未落文档讨论细节补进差遣牒,再新建接续包提醒项;支线对话直接维护足够详尽的接续包提醒项。若 Dominds 已提醒上下文吃紧/告急,支线提醒项没有固定长度限制,先记粗略过桥信息也可以
49
+ - 只记录需要你手工维护的手头工作/接续细节;不要在手工提醒项里记录后台进程状态、后台进行中诉请、会话附件状态等 Dominds 会自动维护的信息
50
50
 
51
51
  **参数:**
52
52
 
@@ -90,9 +90,9 @@ deleted_at: <删除时间戳>
90
90
  **适用:**
91
91
 
92
92
  - 压缩/合并现有提醒项
93
- - 把换程前需要保留的信息整理成接续包;若当前程已被系统置于吃紧/告急处置态,也可先保留多条粗略提醒项
93
+ - 把换程前需要保留的信息整理成接续包;若 Dominds 已提醒当前程吃紧/告急,也可先保留多条粗略提醒项
94
94
  - 删除已写入差遣牒、无需在提醒项重复保留的内容
95
- - 删除/改写手工提醒项里误记录的系统环境状态;这类状态以 runtime 自动维护的提醒/面板/工具输出为 single source of truth
95
+ - 删除/改写手工提醒项里误记录的系统环境状态;这类状态以 Dominds 自动维护的提醒、面板和工具输出为准
96
96
 
97
97
  **参数:**
98
98
 
@@ -353,7 +353,7 @@ message: <错误消息>
353
353
 
354
354
  - 默认提醒项应保持短、新、能直接指导下一步,常见 1–3 条
355
355
  - 若用于接续包,默认优先结构化内容:下一步行动、关键定位、运行/验证、容易丢的临时细节
356
- - 若已吃紧/告急:主线对话先把尚未落实到文档、且下一程需要知会的讨论细节写入差遣牒合适章节,再保留必要的接续包提醒项;支线对话不要维护差遣牒,也不要整理差遣牒更新提案,直接维护足够详尽的接续包提醒项,长度没有技术限制;多条粗略提醒项也可以,系统真正开启新一程后第一步再收敛整理
356
+ - 若 Dominds 已提醒上下文吃紧/告急:主线对话先把尚未落实到文档、且下一程需要知会的讨论细节写入差遣牒合适章节,再保留必要的接续包提醒项;支线对话不要维护差遣牒,也不要整理差遣牒更新提案,直接维护足够详尽的接续包提醒项,没有固定长度限制;多条粗略提醒项也可以,Dominds 真正开启新一程后第一步再收敛整理
357
357
  - 接续包只保留差遣牒仍未覆盖的细节;不要重复团队共享状态。要向全队同步“现在到哪了 / 哪些决策已生效 / 下一步是什么 / 哪些阻塞仍成立”,请写回 Taskdoc `progress`
358
- - 不要手工记录 Dominds 系统环境会自动维护的状态,例如后台进程是否仍在运行、后台进行中的诉请/协作、浏览器/会话附件状态等;手工记录很容易过时,并与 runtime 自动维护的 single source of truth 冲突,造成认知干扰
358
+ - 不要手工记录 Dominds 会自动维护的系统状态,例如后台进程是否仍在运行、后台进行中的诉请/协作、浏览器/会话附件状态等;手工记录很容易过时,并与 Dominds 自动维护的状态冲突,造成认知干扰
359
359
  - 不要把长日志、大段 tool output、原始材料直接塞进提醒项
@@ -37,15 +37,15 @@ MCP (Model Context Protocol) is a protocol for connecting to external services.
37
37
 
38
38
  ### 2. MCP Lease
39
39
 
40
- MCP uses a lease mechanism to manage runtime resources such as HTTP connections and stdio processes. Lease ownership is about who holds a runtime instance; it does not define global MCP tool registration or visibility.
40
+ MCP uses a lease mechanism to manage connection/process resources such as HTTP connections and stdio processes. Lease ownership is about who holds a connection/process; it does not define global MCP tool registration or visibility.
41
41
 
42
42
  **Lifecycle:**
43
43
 
44
- - **Acquire lease**: Establish or hold a runtime instance
45
- - **Hold lease**: Keep using that runtime instance
44
+ - **Acquire lease**: Establish or hold a connection/process
45
+ - **Hold lease**: Keep using that connection/process
46
46
  - **Release lease**: Stop/disconnect and release resources
47
47
 
48
- `mcp_restart` changes the target server from `enabled: false` back to `enabled: true`, then tries to start it. When it succeeds, it replaces the global MCP runtime and clears all dialog leases on the old runtime; you do not need to call `mcp_release` first. To force a server into the disabled state, use `mcp_disable`.
48
+ `mcp_restart` changes the target server from `enabled: false` back to `enabled: true`, then tries to start it. When it succeeds, it replaces the global MCP service connection and clears all dialog leases on the old connection/process; you do not need to call `mcp_release` first. To force a server into the disabled state, use `mcp_disable`.
49
49
 
50
50
  ### 3. Environment Variables
51
51
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  When an MCP service has issues, needs to refresh the connection, or is currently disabled with `enabled: false`, enable and restart the MCP service.
19
19
 
20
- `mcp_restart` writes `enabled: true` when the server is currently `enabled: false`, then tries to start it. After it succeeds, it clears every dialog lease on the old runtime; you do not need to call `mcp_release` first.
20
+ `mcp_restart` writes `enabled: true` when the server is currently `enabled: false`, then tries to start it. After it succeeds, it clears every dialog lease on the old connection/process; you do not need to call `mcp_release` first.
21
21
 
22
22
  ### Example
23
23
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ### 1. mcp_restart
23
23
 
24
- Enable and rebuild an MCP service using the current `.minds/mcp.yaml` config. If the target server is currently `enabled: false`, this writes `enabled: true` before trying to start it. After a successful restart, Dominds replaces the global MCP runtime/tool registration and clears all dialog leases held on the old runtime. If restart fails, the old runtime/leases are kept so troubleshooting does not tear down a still-working connection.
24
+ Enable and rebuild an MCP service using the current `.minds/mcp.yaml` config. If the target server is currently `enabled: false`, this writes `enabled: true` before trying to start it. After a successful restart, Dominds replaces the global MCP tool registration and clears all dialog leases held on the old connection/process. If restart fails, the old connection/process and leases are kept so troubleshooting does not tear down a still-working connection.
25
25
 
26
26
  **Parameters:**
27
27
 
@@ -39,7 +39,7 @@ ok: restarted <MCP service identifier>
39
39
 
40
40
  ### 2. mcp_release
41
41
 
42
- Release the current dialog's leased MCP runtime instance for a server. This stops/releases the underlying HTTP connection or stdio process, but does not define global tool registration/visibility.
42
+ Release the current dialog's leased MCP connection/process for a server. This stops/releases the underlying HTTP connection or stdio process, but does not define global tool registration/visibility.
43
43
 
44
44
  **Parameters:**
45
45
 
@@ -64,7 +64,7 @@ ok: no active lease for <MCP service identifier> (or server is truely-stateless)
64
64
 
65
65
  ### 3. mcp_disable
66
66
 
67
- Disable an MCP service and write `enabled: false` for that server in `.minds/mcp.yaml`. This does not wait for a replacement service to become available: it unconditionally clears the loaded runtime/leases. The disabled server remains visible as a zero-tool MCP toolset, with its manual clearly marked disabled.
67
+ Disable an MCP service and write `enabled: false` for that server in `.minds/mcp.yaml`. This does not wait for a replacement service to become available: it unconditionally clears the loaded MCP connection/leases. The disabled server remains visible as a zero-tool MCP toolset, with its manual clearly marked disabled.
68
68
 
69
69
  **Parameters:**
70
70
 
@@ -37,15 +37,15 @@ MCP(Model Context Protocol)是连接外部服务的协议。
37
37
 
38
38
  ### 2. MCP 租约
39
39
 
40
- MCP 使用租约机制管理运行时资源,例如 HTTP 连接和 stdio 进程。租约只表示谁持有某个运行时实例,不决定 MCP 工具的全局注册或可见性。
40
+ MCP 使用租约机制管理连接/进程资源,例如 HTTP 连接和 stdio 进程。租约只表示谁持有某个连接/进程,不决定 MCP 工具的全局注册或可见性。
41
41
 
42
42
  **生命周期:**
43
43
 
44
- - **获取租约**:建立或持有一个运行时实例
45
- - **持有租约**:继续使用该运行时实例
44
+ - **获取租约**:建立或持有一个连接/进程
45
+ - **持有租约**:继续使用该连接/进程
46
46
  - **释放租约**:停止/断开并释放资源
47
47
 
48
- `mcp_restart` 会把目标 server 的 `enabled: false` 改回 `enabled: true`,然后尝试启动;成功时会替换全局 MCP runtime 并清掉旧 runtime 的所有对话 lease;不需要先逐个 `mcp_release`。如果需要强制禁用某个 server,使用 `mcp_disable`。
48
+ `mcp_restart` 会把目标 server 的 `enabled: false` 改回 `enabled: true`,然后尝试启动;成功时会替换全局 MCP 服务连接,并清掉旧连接/进程的所有对话 lease;不需要先逐个 `mcp_release`。如果需要强制禁用某个 server,使用 `mcp_disable`。
49
49
 
50
50
  ### 3. 环境变量
51
51
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  当 MCP 服务出现故障、需要刷新连接,或当前被 `enabled: false` 禁用时,启用并重启 MCP 服务。
19
19
 
20
- `mcp_restart` 会把 `enabled: false` 写回 `enabled: true` 后尝试启动;成功后会清理旧 runtime 的全部对话 lease,不需要先 `mcp_release`。
20
+ `mcp_restart` 会把 `enabled: false` 写回 `enabled: true` 后尝试启动;成功后会清理旧连接/进程 的全部对话 lease,不需要先 `mcp_release`。
21
21
 
22
22
  ### 示例
23
23
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ### 1. mcp_restart
23
23
 
24
- 按当前 `.minds/mcp.yaml` 配置启用并重建 MCP 服务。如果目标 server 当前是 `enabled: false`,会先写回 `enabled: true` 再尝试启动。重启成功后会替换全局 MCP runtime/tool 注册,并清理旧 runtime 上所有对话持有的 lease;重启失败时保留旧 runtime/lease,避免排障过程中把仍可用的连接拆掉。
24
+ 按当前 `.minds/mcp.yaml` 配置启用并重建 MCP 服务。如果目标 server 当前是 `enabled: false`,会先写回 `enabled: true` 再尝试启动。重启成功后会替换全局 MCP 工具注册,并清理旧连接/进程上所有对话持有的 lease;重启失败时保留旧连接/进程和 lease,避免排障过程中把仍可用的连接拆掉。
25
25
 
26
26
  **参数:**
27
27
 
@@ -39,7 +39,7 @@ ok: restarted <MCP 服务标识符>
39
39
 
40
40
  ### 2. mcp_release
41
41
 
42
- 释放当前对话为某个 server 持有的 MCP 运行时实例。它会停止/释放底层 HTTP 连接或 stdio 进程,但不决定工具的全局注册或可见性。
42
+ 释放当前对话为某个 server 持有的 MCP 连接/进程。它会停止/释放底层 HTTP 连接或 stdio 进程,但不决定工具的全局注册或可见性。
43
43
 
44
44
  **参数:**
45
45
 
@@ -64,7 +64,7 @@ ok: no active lease for <MCP 服务标识符> (or server is truely-stateless)
64
64
 
65
65
  ### 3. mcp_disable
66
66
 
67
- 禁用 MCP 服务并将 `.minds/mcp.yaml` 中对应 server 写为 `enabled: false`。该操作不等待新服务可用:会无条件清理已加载 runtime/lease。禁用后的 server 仍作为 0 工具 MCP toolset 可见,并在手册中明确标记为 disabled。
67
+ 禁用 MCP 服务并将 `.minds/mcp.yaml` 中对应 server 写为 `enabled: false`。该操作不等待新服务可用:会无条件清理已加载 MCP 连接/lease。禁用后的 server 仍作为 0 工具 MCP toolset 可见,并在手册中明确标记为 disabled。
68
68
 
69
69
  **参数:**
70
70
 
@@ -76,14 +76,14 @@ function renderMcpManualPresentBlock(language, serverId, manual) {
76
76
  if (manual.contentFile && manual.contentFile.trim() !== '') {
77
77
  out += fmtList([
78
78
  language === 'zh'
79
- ? `运行时手册文件前缀(\`contentFile\`):\`${manual.contentFile}\``
80
- : `Runtime manual file prefix (\`contentFile\`): \`${manual.contentFile}\``,
79
+ ? `手册文件前缀(\`contentFile\`):\`${manual.contentFile}\``
80
+ : `Manual file prefix (\`contentFile\`): \`${manual.contentFile}\``,
81
81
  ]);
82
82
  if ((!manual.content || manual.content.trim() === '') && manual.sections.length === 0) {
83
83
  out += fmtList([
84
84
  language === 'zh'
85
- ? `该 toolset 的最终 \`man({ "toolsetId": "${serverId}" })\` 正文会在运行时从该前缀下的 topic 文件加载;这里不直接内嵌正文。`
86
- : `The final \`man({ "toolsetId": "${serverId}" })\` body is loaded at runtime from topic files under this prefix; it is not inlined here.`,
85
+ ? `该 toolset 的最终 \`man({ "toolsetId": "${serverId}" })\` 正文会从该前缀下的 topic 文件加载;这里不直接内嵌正文。`
86
+ : `The final \`man({ "toolsetId": "${serverId}" })\` body is loaded from topic files under this prefix; it is not inlined here.`,
87
87
  ]);
88
88
  }
89
89
  }
@@ -189,8 +189,8 @@ function renderRawMcpAutomaticBaselineSection(language, entry) {
189
189
  ? '未配置 `servers.<serverId>.manual`;以下为标准 Raw MCP 接入的自动基础说明。'
190
190
  : '`servers.<serverId>.manual` is not configured; below is the automatic baseline for this standard Raw MCP integration.',
191
191
  language === 'zh'
192
- ? `运行时状态:status=${statusText},transport=${transportText}。`
193
- : `Runtime status: status=${statusText}, transport=${transportText}.`,
192
+ ? `当前连接状态:status=${statusText},transport=${transportText}。`
193
+ : `Current connection status: status=${statusText}, transport=${transportText}.`,
194
194
  language === 'zh'
195
195
  ? '说明:MCP 工具名称、description 与参数 schema 已由 server 通过 `tools/list` 自动提供,并随工具函数说明进入 LLM 上下文;手册应列出工具名清单以澄清“哪些工具属于该 toolset”,但不要复制参数 schema 或长篇工具契约。'
196
196
  : 'Note: MCP tool names, descriptions, and parameter schemas are already provided by the server through `tools/list` and enter LLM context as function-tool metadata; manuals should list tool names to clarify which tools belong to this toolset, but should not copy parameter schemas or long tool-contract prose.',
@@ -515,8 +515,8 @@ async function renderMcpManual(language) {
515
515
  return (fmtHeader('.minds/mcp.yaml') +
516
516
  fmtList([
517
517
  '每个 MCP `serverId` 注册一个 toolset,toolset 名称 = `serverId`(不加 `mcp_` 前缀)。成员通过 `members.<id>.toolsets` 选择能用哪些 MCP toolset。',
518
- '支持热重载:编辑 `.minds/mcp.yaml` 后通常无需重启 Dominds;必要时用 `mcp_restart`。`mcp_restart` 会把目标 server 的 `enabled: false` 写回 `enabled: true` 后尝试启动;成功后替换全局 runtime 并清掉旧 runtime 的全部对话 lease。',
519
- '默认按“每个对话租用一个 MCP 运行时实例”运行(更安全):某个对话首次使用该 server 时,可能为它启动/持有一个运行时实例(HTTP 连接或 stdio 进程),并添加 sticky reminder。确认当前对话不再需要该运行时实例后,用 `mcp_release` 释放。租约只表达运行时资源归属,不决定该 server 的全局工具注册/可见性;如确实是无状态服务器,可配置 `truely-stateless: true` 允许跨对话共享。若需停用某 server,用 `mcp_disable` 写入 `enabled: false`;禁用后仍会保留 0 工具 toolset 与 Raw MCP 基线/手册可见性。',
518
+ '支持热重载:编辑 `.minds/mcp.yaml` 后通常无需重启 Dominds;必要时用 `mcp_restart`。`mcp_restart` 会把目标 server 的 `enabled: false` 写回 `enabled: true` 后尝试启动;成功后替换全局 MCP 工具注册,并清掉旧连接上的全部对话 lease。',
519
+ '默认按“每个对话租用一个 MCP 连接/进程”运行(更安全):某个对话首次使用该 server 时,可能为它启动/持有一个连接或进程(HTTP 连接或 stdio 进程),并添加 sticky reminder。确认当前对话不再需要该连接/进程后,用 `mcp_release` 释放。租约只表达连接/进程资源归属,不决定该 server 的全局工具注册/可见性;如确实是无状态服务器,可配置 `truely-stateless: true` 允许跨对话共享。若需停用某 server,用 `mcp_disable` 写入 `enabled: false`;禁用后仍会保留 0 工具 toolset 与 Raw MCP 基线/手册可见性。',
520
520
  'stdio 配置格式:`command` 必须是字符串(可执行命令),参数放在 `args`(string[],可省略,默认空数组)。`cwd` 可选(字符串):用于固定相对路径解析目录。',
521
521
  'HTTP headers 支持三种值:字面量字符串、`{ env: NAME }`、`{ prefix: "Bearer ", env: NAME }`;认证 token 建议从环境变量读取,不要写死在 YAML。',
522
522
  '用 `tools.whitelist/blacklist` 控制暴露的工具。顶层 `transform` 是 tools/prompts/resources/resource skills 的默认 ID 转换;内层 `tools.transform`、`prompts.transform`、`resources.transform`、`resources.skills.transform` 会覆盖外层转换,不会叠加;显式 `transform: []` 表示该层不转换。',
@@ -524,7 +524,7 @@ async function renderMcpManual(language) {
524
524
  '高频坑(stdio 路径):若未设置 `cwd`,相对路径按 Dominds 进程工作目录(通常 rtws 根目录)解析;建议显式配置 `cwd` 或直接使用绝对路径。`cwd` 必须存在且是目录。',
525
525
  '可选手册字段:`servers.<serverId>.manual` 是增强说明,不是标准 MCP 接入的必填项。',
526
526
  '如果你要控制最终 `man({ "toolsetId": "<serverId>" })` 给 LLM 看的正式手册,请使用 `manual.contentFile` 指向 topic 文件目录前缀。',
527
- '如果你只是想在 `team_mgmt` 的 MCP 章节里补充团队管理说明,也可以使用 inline `content`(总说明)+ `sections`(章节列表)。这类 inline 内容会展示在 `team_mgmt` 指南里,但不会替代运行时 `contentFile` 手册。',
527
+ '如果你只是想在 `team_mgmt` 的 MCP 章节里补充团队管理说明,也可以使用 inline `content`(总说明)+ `sections`(章节列表)。这类 inline 内容会展示在 `team_mgmt` 指南里,但不会替代 `contentFile` 手册。',
528
528
  '重要:未配置 `manual` 并不代表 MCP toolset 不可用;但 Dominds 会在 Problems 中给 warning,提醒补充整体定位说明。标准工具元数据来自 MCP `tools/list`,智能体应继续依据各工具函数说明判断并使用。',
529
529
  '团队管理者建议:配置并验证 MCP 后,优先依赖 MCP server 暴露的工具 description/参数;同时给每个 MCP server 的手册写一段简短整体定位,并列出工具名清单,明确“哪些工具属于这个 toolset”。只有当团队需要补充更完整的使用场景、安全边界、故障处置或协作规范时,再写 `manual.contentFile` 或更详细的 inline `content + sections`。',
530
530
  '工具列表写法:列工具名即可,必要时补一句用途归类;不要复制参数 schema 或长篇工具 description,因为这些契约由系统提示里的函数工具定义提供。',
@@ -602,8 +602,8 @@ async function renderMcpManual(language) {
602
602
  return (fmtHeader('.minds/mcp.yaml') +
603
603
  fmtList([
604
604
  'Each MCP `serverId` registers one toolset, and the toolset name is exactly `serverId` (no `mcp_` prefix). Members choose MCP access via `members.<id>.toolsets`.',
605
- 'Hot reload: edits usually apply without restarting Dominds; use `mcp_restart` when needed. `mcp_restart` writes `enabled: true` when the target server is currently `enabled: false`, then tries to start it; after success it replaces the global runtime and clears all dialog leases on the old runtime.',
606
- "Default is per-dialog MCP runtime leasing (safer): a dialog's first use may start/hold one runtime instance for that server (an HTTP connection or stdio process), and first use adds a sticky reminder. Call `mcp_release` when you're sure the current dialog no longer needs that runtime instance. This lease is about runtime resource ownership only; tool registration/visibility still follows the latest global server instance. If the server is truly stateless, set `truely-stateless: true` to allow cross-dialog sharing. To disable a server, use `mcp_disable` to write `enabled: false`; disabled servers remain visible as zero-tool toolsets with Raw MCP baseline/manual visibility.",
605
+ 'Hot reload: edits usually apply without restarting Dominds; use `mcp_restart` when needed. `mcp_restart` writes `enabled: true` when the target server is currently `enabled: false`, then tries to start it; after success it replaces the global MCP tool registration and clears all dialog leases on the old connection/process.',
606
+ "Default is per-dialog MCP connection/process leasing (safer): a dialog's first use may start/hold one connection or process for that server (an HTTP connection or stdio process), and first use adds a sticky reminder. Call `mcp_release` when you're sure the current dialog no longer needs that connection/process. This lease is about connection/process resource ownership only; tool registration/visibility still follows the latest global server connection. If the server is truly stateless, set `truely-stateless: true` to allow cross-dialog sharing. To disable a server, use `mcp_disable` to write `enabled: false`; disabled servers remain visible as zero-tool toolsets with Raw MCP baseline/manual visibility.",
607
607
  'Stdio shape: `command` must be a string executable; parameters go in `args` (string[], optional, defaults to empty). Optional `cwd` (string) fixes the working directory used for relative paths.',
608
608
  'HTTP headers support three value forms: literal strings, `{ env: NAME }`, and `{ prefix: "Bearer ", env: NAME }`; keep auth tokens in env instead of hardcoding them in YAML.',
609
609
  'Use `tools.whitelist/blacklist` for exposure control. Top-level `transform` is the default ID transform for tools/prompts/resources/resource skills; nested `tools.transform`, `prompts.transform`, `resources.transform`, and `resources.skills.transform` override the enclosing transform instead of stacking with it. Explicit `transform: []` means no transform for that layer.',
@@ -611,7 +611,7 @@ async function renderMcpManual(language) {
611
611
  'High-frequency pitfall (stdio paths): if `cwd` is omitted, relative paths are resolved from Dominds process cwd (usually rtws root). Prefer setting `cwd` explicitly or use absolute paths. `cwd` must exist and be a directory.',
612
612
  'Optional manual field: `servers.<serverId>.manual` is enhancement guidance, not required for standard MCP use.',
613
613
  'To control the final formal manual shown to the LLM by `man({ "toolsetId": "<serverId>" })`, use `manual.contentFile` and point it at the topic-file directory prefix.',
614
- 'If you only want extra team-management guidance inside the `team_mgmt` MCP chapter, you may also use inline `content` (overview) + `sections` (chapter list). That inline content is shown in the `team_mgmt` guide, but it does not replace runtime `contentFile` manuals.',
614
+ 'If you only want extra team-management guidance inside the `team_mgmt` MCP chapter, you may also use inline `content` (overview) + `sections` (chapter list). That inline content is shown in the `team_mgmt` guide, but it does not replace `contentFile` manuals.',
615
615
  'Important: an unconfigured `manual` does not mean the MCP toolset is unavailable, but Dominds reports a Problems warning to encourage an overall positioning note. Standard tool metadata comes from MCP `tools/list`; continue by reading each function-tool description.',
616
616
  'Team-manager recommendation: after MCP config is validated, rely on MCP-provided descriptions/arguments first; also write a short overall positioning note for each MCP server manual and list tool names to make clear which tools belong to this toolset. Add `manual.contentFile` or more detailed inline `content + sections` only when the team needs fuller guidance about use cases, safety boundaries, failure handling, or coordination norms.',
617
617
  'Tool-list writing rule: list tool names, with a short purpose group when useful; do not copy parameter schemas or long tool descriptions, because those contracts are provided by function-tool definitions in the system prompt.',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dominds",
3
- "version": "1.26.2",
3
+ "version": "1.26.3",
4
4
  "description": "Dominds CLI and aggregation shell for the LongRun AI kernel/runtime packages.",
5
5
  "type": "commonjs",
6
6
  "publishConfig": {
@@ -50,12 +50,13 @@
50
50
  "@modelcontextprotocol/sdk": "^1.27.1",
51
51
  "async-mutex": "^0.5.0",
52
52
  "openai": "^6.35.0",
53
+ "selfsigned": "^5.5.0",
53
54
  "ws": "^8.19.0",
54
55
  "yaml": "^2.8.2",
55
56
  "zod": "^4.3.6",
56
57
  "@longrun-ai/codex-auth": "0.13.0",
57
- "@longrun-ai/shell": "1.16.0",
58
- "@longrun-ai/kernel": "1.16.0"
58
+ "@longrun-ai/kernel": "1.16.0",
59
+ "@longrun-ai/shell": "1.16.0"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@types/node": "^25.3.5",
@@ -1,5 +1,5 @@
1
- import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-hcs024vD.js";
2
- import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-BOO_zFrI.js";
1
+ import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-CVu4lo4P.js";
2
+ import { aU as isObject, aC as baseRest, aV as isIterateeCall, aW as keysIn, aX as eq, aY as isArrayLike, aZ as isArray, a_ as identity, a$ as isIndex, b0 as assignValue } from "./index-DYO4ZL8y.js";
3
3
  var reWhitespace = /\s/;
4
4
  function trimmedEndIndex(string) {
5
5
  var index = string.length;
@@ -193,4 +193,4 @@ export {
193
193
  map as m,
194
194
  toFinite as t
195
195
  };
196
- //# sourceMappingURL=_basePickBy-DUivPKf7.js.map
196
+ //# sourceMappingURL=_basePickBy-DTJFxmut.js.map