dominds 1.18.2 → 1.19.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 (251) hide show
  1. package/dist/access-control.js +6 -6
  2. package/dist/apps/runtime.d.ts +2 -2
  3. package/dist/apps/runtime.js +28 -28
  4. package/dist/apps-host/client.d.ts +1 -1
  5. package/dist/apps-host/host.js +7 -7
  6. package/dist/apps-host/ipc-types.d.ts +2 -2
  7. package/dist/apps-host/ipc-types.js +10 -10
  8. package/dist/cli/read.d.ts +0 -1
  9. package/dist/cli/read.js +1 -6
  10. package/dist/cli/team-definition-audit.d.ts +2 -1
  11. package/dist/cli/team-definition-audit.js +20 -8
  12. package/dist/cli/validate-team-def.js +3 -3
  13. package/dist/dialog-display-state.d.ts +6 -6
  14. package/dist/dialog-display-state.js +46 -46
  15. package/dist/dialog-factory.d.ts +12 -12
  16. package/dist/dialog-factory.js +33 -30
  17. package/dist/dialog-fork.d.ts +2 -2
  18. package/dist/dialog-fork.js +140 -115
  19. package/dist/dialog-global-registry.d.ts +5 -5
  20. package/dist/dialog-global-registry.js +11 -11
  21. package/dist/dialog-instance-registry.d.ts +3 -3
  22. package/dist/dialog-instance-registry.js +52 -41
  23. package/dist/dialog.d.ts +100 -113
  24. package/dist/dialog.js +274 -229
  25. package/dist/docs/agent-priming.md +5 -5
  26. package/dist/docs/agent-priming.zh.md +5 -5
  27. package/dist/docs/app-constitution.md +1 -1
  28. package/dist/docs/app-constitution.zh.md +1 -1
  29. package/dist/docs/cli-usage.md +1 -1
  30. package/dist/docs/cli-usage.zh.md +1 -1
  31. package/dist/docs/design.md +14 -14
  32. package/dist/docs/design.zh.md +14 -14
  33. package/dist/docs/dialog-persistence.md +58 -58
  34. package/dist/docs/dialog-persistence.zh.md +61 -61
  35. package/dist/docs/dialog-system.md +363 -367
  36. package/dist/docs/dialog-system.zh.md +355 -357
  37. package/dist/docs/diligence-push.md +18 -18
  38. package/dist/docs/diligence-push.zh.md +17 -17
  39. package/dist/docs/dominds-agent-collaboration.zh.md +3 -3
  40. package/dist/docs/dominds-terminology.md +46 -47
  41. package/dist/docs/encapsulated-taskdoc.md +4 -4
  42. package/dist/docs/encapsulated-taskdoc.zh.md +3 -3
  43. package/dist/docs/fbr.md +30 -30
  44. package/dist/docs/fbr.zh.md +15 -15
  45. package/dist/docs/i18n.md +2 -2
  46. package/dist/docs/i18n.zh.md +2 -2
  47. package/dist/docs/mcp-support.md +16 -4
  48. package/dist/docs/mcp-support.zh.md +10 -2
  49. package/dist/docs/memory-system.md +4 -4
  50. package/dist/docs/memory-system.zh.md +1 -1
  51. package/dist/docs/mottos.md +1 -1
  52. package/dist/docs/mottos.zh.md +1 -1
  53. package/dist/docs/q4h.md +3 -3
  54. package/dist/docs/q4h.zh.md +1 -1
  55. package/dist/docs/roadmap.md +2 -2
  56. package/dist/docs/team_mgmt-toolset.md +16 -5
  57. package/dist/docs/team_mgmt-toolset.zh.md +13 -4
  58. package/dist/docs/tellask-collab.md +18 -18
  59. package/dist/docs/tellask-collab.zh.md +8 -8
  60. package/dist/docs/tellask-revive-context-refactor.zh.md +591 -0
  61. package/dist/docs/tool-availability-protocol.md +4 -2
  62. package/dist/evt-registry.d.ts +1 -2
  63. package/dist/evt-registry.js +2 -7
  64. package/dist/llm/gen/mock.js +9 -0
  65. package/dist/llm/kernel-driver/context.d.ts +1 -2
  66. package/dist/llm/kernel-driver/context.js +12 -26
  67. package/dist/llm/kernel-driver/drive.js +99 -75
  68. package/dist/llm/kernel-driver/engine.d.ts +2 -2
  69. package/dist/llm/kernel-driver/engine.js +10 -10
  70. package/dist/llm/kernel-driver/fbr.js +6 -6
  71. package/dist/llm/kernel-driver/flow.d.ts +1 -1
  72. package/dist/llm/kernel-driver/flow.js +129 -93
  73. package/dist/llm/kernel-driver/guardrails.js +4 -4
  74. package/dist/llm/kernel-driver/index.d.ts +1 -1
  75. package/dist/llm/kernel-driver/index.js +2 -2
  76. package/dist/llm/kernel-driver/loop.js +30 -30
  77. package/dist/llm/kernel-driver/reply-guidance.js +47 -52
  78. package/dist/llm/kernel-driver/restore.d.ts +3 -3
  79. package/dist/llm/kernel-driver/restore.js +23 -28
  80. package/dist/llm/kernel-driver/runtime.d.ts +1 -1
  81. package/dist/llm/kernel-driver/runtime.js +1 -1
  82. package/dist/llm/kernel-driver/sideDialog-txn.d.ts +8 -0
  83. package/dist/llm/kernel-driver/{subdialog-txn.js → sideDialog-txn.js} +13 -13
  84. package/dist/llm/kernel-driver/{subdialog.d.ts → sideDialog.d.ts} +13 -13
  85. package/dist/llm/kernel-driver/{subdialog.js → sideDialog.js} +203 -170
  86. package/dist/llm/kernel-driver/tellask-special.d.ts +7 -3
  87. package/dist/llm/kernel-driver/tellask-special.js +474 -497
  88. package/dist/llm/kernel-driver/types.d.ts +25 -9
  89. package/dist/mcp/config.d.ts +2 -0
  90. package/dist/mcp/config.js +23 -2
  91. package/dist/mcp/supervisor.d.ts +9 -1
  92. package/dist/mcp/supervisor.js +300 -17
  93. package/dist/minds/builtin/pangu/persona.en.md +4 -4
  94. package/dist/minds/load.js +11 -6
  95. package/dist/minds/system-prompt-parts.d.ts +1 -1
  96. package/dist/minds/system-prompt-parts.js +12 -12
  97. package/dist/minds/system-prompt.d.ts +2 -1
  98. package/dist/minds/system-prompt.js +70 -62
  99. package/dist/persistence-errors.d.ts +1 -1
  100. package/dist/persistence.d.ts +126 -121
  101. package/dist/persistence.js +1190 -786
  102. package/dist/priming.d.ts +3 -3
  103. package/dist/priming.js +62 -61
  104. package/dist/recovery/reply-special.js +5 -5
  105. package/dist/runtime/driver-messages.d.ts +3 -2
  106. package/dist/runtime/driver-messages.js +68 -57
  107. package/dist/runtime/inter-dialog-format.d.ts +12 -10
  108. package/dist/runtime/inter-dialog-format.js +80 -35
  109. package/dist/runtime/interjection-pause-stop.js +1 -1
  110. package/dist/runtime/reply-prompt-copy.d.ts +7 -3
  111. package/dist/runtime/reply-prompt-copy.js +39 -14
  112. package/dist/server/api-routes.js +87 -83
  113. package/dist/server/static-server.js +1 -1
  114. package/dist/server/websocket-handler.js +163 -153
  115. package/dist/tool-availability.js +1 -1
  116. package/dist/tools/app-reminders.js +17 -4
  117. package/dist/tools/builtins.js +2 -0
  118. package/dist/tools/ctrl.js +5 -5
  119. package/dist/tools/env.js +10 -58
  120. package/dist/tools/manual/render.js +4 -0
  121. package/dist/tools/mcp.d.ts +1 -0
  122. package/dist/tools/mcp.js +55 -5
  123. package/dist/tools/os.js +16 -16
  124. package/dist/tools/pending-tellask-reminder.js +20 -14
  125. package/dist/tools/prompts/control/en/index.md +1 -1
  126. package/dist/tools/prompts/control/en/principles.md +8 -8
  127. package/dist/tools/prompts/control/en/scenarios.md +7 -7
  128. package/dist/tools/prompts/control/en/tools.md +7 -7
  129. package/dist/tools/prompts/control/zh/principles.md +4 -4
  130. package/dist/tools/prompts/control/zh/scenarios.md +5 -5
  131. package/dist/tools/prompts/control/zh/tools.md +3 -3
  132. package/dist/tools/prompts/mcp_admin/en/errors.md +0 -14
  133. package/dist/tools/prompts/mcp_admin/en/index.md +5 -3
  134. package/dist/tools/prompts/mcp_admin/en/principles.md +11 -5
  135. package/dist/tools/prompts/mcp_admin/en/scenarios.md +19 -3
  136. package/dist/tools/prompts/mcp_admin/en/tools.md +85 -21
  137. package/dist/tools/prompts/mcp_admin/zh/errors.md +0 -14
  138. package/dist/tools/prompts/mcp_admin/zh/index.md +5 -3
  139. package/dist/tools/prompts/mcp_admin/zh/principles.md +11 -5
  140. package/dist/tools/prompts/mcp_admin/zh/scenarios.md +19 -3
  141. package/dist/tools/prompts/mcp_admin/zh/tools.md +85 -21
  142. package/dist/tools/prompts/os/en/errors.md +0 -28
  143. package/dist/tools/prompts/os/en/scenarios.md +1 -1
  144. package/dist/tools/prompts/os/en/tools.md +8 -17
  145. package/dist/tools/prompts/os/zh/errors.md +0 -28
  146. package/dist/tools/prompts/os/zh/scenarios.md +1 -1
  147. package/dist/tools/prompts/os/zh/tools.md +8 -17
  148. package/dist/tools/prompts/team_memory/en/scenarios.md +1 -1
  149. package/dist/tools/prompts/team_memory/zh/scenarios.md +1 -1
  150. package/dist/tools/registry.d.ts +5 -0
  151. package/dist/tools/team_mgmt-manual.js +2 -2
  152. package/dist/tools/team_mgmt-mcp-manual.d.ts +2 -2
  153. package/dist/tools/team_mgmt-mcp-manual.js +67 -16
  154. package/dist/tools/team_mgmt.js +8 -8
  155. package/dist/utils/taskdoc.js +12 -12
  156. package/package.json +3 -3
  157. package/webapp/dist/assets/{_basePickBy-BPJaiZdW.js → _basePickBy-Dnh413xT.js} +3 -3
  158. package/webapp/dist/assets/{_basePickBy-BPJaiZdW.js.map → _basePickBy-Dnh413xT.js.map} +1 -1
  159. package/webapp/dist/assets/{_baseUniq-BEetT15i.js → _baseUniq-DWzYqpN_.js} +2 -2
  160. package/webapp/dist/assets/{_baseUniq-BEetT15i.js.map → _baseUniq-DWzYqpN_.js.map} +1 -1
  161. package/webapp/dist/assets/{arc-Dm7Zf36f.js → arc-vfBkNCOx.js} +2 -2
  162. package/webapp/dist/assets/{arc-Dm7Zf36f.js.map → arc-vfBkNCOx.js.map} +1 -1
  163. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-BpTPtkuo.js → architectureDiagram-VXUJARFQ-DiUEBXOa.js} +7 -7
  164. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-BpTPtkuo.js.map → architectureDiagram-VXUJARFQ-DiUEBXOa.js.map} +1 -1
  165. package/webapp/dist/assets/{blockDiagram-VD42YOAC-C8fLN0iu.js → blockDiagram-VD42YOAC-BqK1KM2m.js} +7 -7
  166. package/webapp/dist/assets/{blockDiagram-VD42YOAC-C8fLN0iu.js.map → blockDiagram-VD42YOAC-BqK1KM2m.js.map} +1 -1
  167. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BpPr62CH.js → c4Diagram-YG6GDRKO-ClHNu1Uo.js} +3 -3
  168. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-BpPr62CH.js.map → c4Diagram-YG6GDRKO-ClHNu1Uo.js.map} +1 -1
  169. package/webapp/dist/assets/{channel-EMYoPjW3.js → channel-BbWLVc8W.js} +2 -2
  170. package/webapp/dist/assets/{channel-EMYoPjW3.js.map → channel-BbWLVc8W.js.map} +1 -1
  171. package/webapp/dist/assets/{chunk-4BX2VUAB-CefNtjWG.js → chunk-4BX2VUAB-CItdSmZH.js} +2 -2
  172. package/webapp/dist/assets/{chunk-4BX2VUAB-CefNtjWG.js.map → chunk-4BX2VUAB-CItdSmZH.js.map} +1 -1
  173. package/webapp/dist/assets/{chunk-55IACEB6-C_X7T43V.js → chunk-55IACEB6-DSCX9WCf.js} +2 -2
  174. package/webapp/dist/assets/{chunk-55IACEB6-C_X7T43V.js.map → chunk-55IACEB6-DSCX9WCf.js.map} +1 -1
  175. package/webapp/dist/assets/{chunk-B4BG7PRW-BRe3_2oA.js → chunk-B4BG7PRW-5CRXFeD9.js} +5 -5
  176. package/webapp/dist/assets/{chunk-B4BG7PRW-BRe3_2oA.js.map → chunk-B4BG7PRW-5CRXFeD9.js.map} +1 -1
  177. package/webapp/dist/assets/{chunk-DI55MBZ5-CbvrsI_w.js → chunk-DI55MBZ5-CRMf6XZu.js} +4 -4
  178. package/webapp/dist/assets/{chunk-DI55MBZ5-CbvrsI_w.js.map → chunk-DI55MBZ5-CRMf6XZu.js.map} +1 -1
  179. package/webapp/dist/assets/{chunk-FMBD7UC4-ORmtkrtS.js → chunk-FMBD7UC4-BJ1vT2se.js} +2 -2
  180. package/webapp/dist/assets/{chunk-FMBD7UC4-ORmtkrtS.js.map → chunk-FMBD7UC4-BJ1vT2se.js.map} +1 -1
  181. package/webapp/dist/assets/{chunk-QN33PNHL-LTAOVhWu.js → chunk-QN33PNHL-CGyezTSD.js} +2 -2
  182. package/webapp/dist/assets/{chunk-QN33PNHL-LTAOVhWu.js.map → chunk-QN33PNHL-CGyezTSD.js.map} +1 -1
  183. package/webapp/dist/assets/{chunk-QZHKN3VN-ZoUM_4u5.js → chunk-QZHKN3VN-9xs15j8C.js} +2 -2
  184. package/webapp/dist/assets/{chunk-QZHKN3VN-ZoUM_4u5.js.map → chunk-QZHKN3VN-9xs15j8C.js.map} +1 -1
  185. package/webapp/dist/assets/{chunk-TZMSLE5B-Gao4qrq7.js → chunk-TZMSLE5B-D2g6Tj7Z.js} +2 -2
  186. package/webapp/dist/assets/{chunk-TZMSLE5B-Gao4qrq7.js.map → chunk-TZMSLE5B-D2g6Tj7Z.js.map} +1 -1
  187. package/webapp/dist/assets/{classDiagram-2ON5EDUG-uha1vIGN.js → classDiagram-2ON5EDUG-BQFGGJNm.js} +6 -6
  188. package/webapp/dist/assets/{classDiagram-2ON5EDUG-uha1vIGN.js.map → classDiagram-2ON5EDUG-BQFGGJNm.js.map} +1 -1
  189. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-uha1vIGN.js → classDiagram-v2-WZHVMYZB-BQFGGJNm.js} +6 -6
  190. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-uha1vIGN.js.map → classDiagram-v2-WZHVMYZB-BQFGGJNm.js.map} +1 -1
  191. package/webapp/dist/assets/{clone-_9Ayb1Gp.js → clone-DOfPd4cz.js} +2 -2
  192. package/webapp/dist/assets/{clone-_9Ayb1Gp.js.map → clone-DOfPd4cz.js.map} +1 -1
  193. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-C8wDw3NY.js → cose-bilkent-S5V4N54A-BYN-vqm8.js} +2 -2
  194. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-C8wDw3NY.js.map → cose-bilkent-S5V4N54A-BYN-vqm8.js.map} +1 -1
  195. package/webapp/dist/assets/{dagre-6UL2VRFP-BUSeNot0.js → dagre-6UL2VRFP-ClEaFABE.js} +7 -7
  196. package/webapp/dist/assets/{dagre-6UL2VRFP-BUSeNot0.js.map → dagre-6UL2VRFP-ClEaFABE.js.map} +1 -1
  197. package/webapp/dist/assets/{diagram-PSM6KHXK-CMZAksVC.js → diagram-PSM6KHXK-CM4hLE_0.js} +8 -8
  198. package/webapp/dist/assets/{diagram-PSM6KHXK-CMZAksVC.js.map → diagram-PSM6KHXK-CM4hLE_0.js.map} +1 -1
  199. package/webapp/dist/assets/{diagram-QEK2KX5R-BQKoRtwy.js → diagram-QEK2KX5R-BZjGFX-2.js} +7 -7
  200. package/webapp/dist/assets/{diagram-QEK2KX5R-BQKoRtwy.js.map → diagram-QEK2KX5R-BZjGFX-2.js.map} +1 -1
  201. package/webapp/dist/assets/{diagram-S2PKOQOG-DjMG97kd.js → diagram-S2PKOQOG-Bvw01OOG.js} +7 -7
  202. package/webapp/dist/assets/{diagram-S2PKOQOG-DjMG97kd.js.map → diagram-S2PKOQOG-Bvw01OOG.js.map} +1 -1
  203. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-BujwA137.js → erDiagram-Q2GNP2WA-ctHu5zQL.js} +5 -5
  204. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-BujwA137.js.map → erDiagram-Q2GNP2WA-ctHu5zQL.js.map} +1 -1
  205. package/webapp/dist/assets/{flowDiagram-NV44I4VS-DgwPjg4y.js → flowDiagram-NV44I4VS-m7ofIhri.js} +6 -6
  206. package/webapp/dist/assets/{flowDiagram-NV44I4VS-DgwPjg4y.js.map → flowDiagram-NV44I4VS-m7ofIhri.js.map} +1 -1
  207. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Db2ykf3E.js → ganttDiagram-JELNMOA3-D9wS5Veb.js} +3 -3
  208. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-Db2ykf3E.js.map → ganttDiagram-JELNMOA3-D9wS5Veb.js.map} +1 -1
  209. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_gSifkv.js → gitGraphDiagram-V2S2FVAM-B86qqJx7.js} +8 -8
  210. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-D_gSifkv.js.map → gitGraphDiagram-V2S2FVAM-B86qqJx7.js.map} +1 -1
  211. package/webapp/dist/assets/{graph-BHjCU5xP.js → graph-u844GGQC.js} +3 -3
  212. package/webapp/dist/assets/{graph-BHjCU5xP.js.map → graph-u844GGQC.js.map} +1 -1
  213. package/webapp/dist/assets/{index-xvYYeHuy.css → index-BGdI3lWA.css} +17 -9
  214. package/webapp/dist/assets/{index-DLajsIDJ.js → index-tinPEZoH.js} +1211 -995
  215. package/webapp/dist/assets/index-tinPEZoH.js.map +1 -0
  216. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BDba5pKs.js → infoDiagram-HS3SLOUP-DwRPUctP.js} +6 -6
  217. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-BDba5pKs.js.map → infoDiagram-HS3SLOUP-DwRPUctP.js.map} +1 -1
  218. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CmJAbmlm.js → journeyDiagram-XKPGCS4Q-B91ZO-ec.js} +5 -5
  219. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-CmJAbmlm.js.map → journeyDiagram-XKPGCS4Q-B91ZO-ec.js.map} +1 -1
  220. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-DxQeBTDk.js → kanban-definition-3W4ZIXB7-CoogrZ07.js} +3 -3
  221. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-DxQeBTDk.js.map → kanban-definition-3W4ZIXB7-CoogrZ07.js.map} +1 -1
  222. package/webapp/dist/assets/{layout-DteV_yE8.js → layout-BrzQmqFJ.js} +5 -5
  223. package/webapp/dist/assets/{layout-DteV_yE8.js.map → layout-BrzQmqFJ.js.map} +1 -1
  224. package/webapp/dist/assets/{linear-zItbPrND.js → linear-C6H7K9Zy.js} +2 -2
  225. package/webapp/dist/assets/{linear-zItbPrND.js.map → linear-C6H7K9Zy.js.map} +1 -1
  226. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-BJXI7UqO.js → mindmap-definition-VGOIOE7T-UDHZQkNZ.js} +4 -4
  227. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-BJXI7UqO.js.map → mindmap-definition-VGOIOE7T-UDHZQkNZ.js.map} +1 -1
  228. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BpM-aH2p.js → pieDiagram-ADFJNKIX-M81uyQ1J.js} +8 -8
  229. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-BpM-aH2p.js.map → pieDiagram-ADFJNKIX-M81uyQ1J.js.map} +1 -1
  230. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-NXdIpA15.js → quadrantDiagram-AYHSOK5B-ClzIh9Gb.js} +3 -3
  231. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-NXdIpA15.js.map → quadrantDiagram-AYHSOK5B-ClzIh9Gb.js.map} +1 -1
  232. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-D1AICAA0.js → requirementDiagram-UZGBJVZJ-DLK3A-pn.js} +4 -4
  233. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-D1AICAA0.js.map → requirementDiagram-UZGBJVZJ-DLK3A-pn.js.map} +1 -1
  234. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-WiReDPfo.js → sankeyDiagram-TZEHDZUN-CYqju8I1.js} +2 -2
  235. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-WiReDPfo.js.map → sankeyDiagram-TZEHDZUN-CYqju8I1.js.map} +1 -1
  236. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Cw76oP8t.js → sequenceDiagram-WL72ISMW-2guv6eOd.js} +4 -4
  237. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-Cw76oP8t.js.map → sequenceDiagram-WL72ISMW-2guv6eOd.js.map} +1 -1
  238. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-QjCeRczs.js → stateDiagram-FKZM4ZOC-iujqSp0X.js} +9 -9
  239. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-QjCeRczs.js.map → stateDiagram-FKZM4ZOC-iujqSp0X.js.map} +1 -1
  240. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-IClqxQ4s.js → stateDiagram-v2-4FDKWEC3-BxzY81ky.js} +5 -5
  241. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-IClqxQ4s.js.map → stateDiagram-v2-4FDKWEC3-BxzY81ky.js.map} +1 -1
  242. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BfyfTY7m.js → timeline-definition-IT6M3QCI-DjCFSC8d.js} +3 -3
  243. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-BfyfTY7m.js.map → timeline-definition-IT6M3QCI-DjCFSC8d.js.map} +1 -1
  244. package/webapp/dist/assets/{treemap-GDKQZRPO-C5MiL6--.js → treemap-GDKQZRPO-iaBzDWCP.js} +5 -5
  245. package/webapp/dist/assets/{treemap-GDKQZRPO-C5MiL6--.js.map → treemap-GDKQZRPO-iaBzDWCP.js.map} +1 -1
  246. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-ybaJrSry.js → xychartDiagram-PRI3JC2R-R6Jl1c89.js} +3 -3
  247. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-ybaJrSry.js.map → xychartDiagram-PRI3JC2R-R6Jl1c89.js.map} +1 -1
  248. package/webapp/dist/index.html +2 -2
  249. package/dist/docs/issues/global-dialog-event-broadcaster-missing.md +0 -128
  250. package/dist/llm/kernel-driver/subdialog-txn.d.ts +0 -8
  251. package/webapp/dist/assets/index-DLajsIDJ.js.map +0 -1
@@ -51,11 +51,11 @@ delete_reminder({
51
51
  - If the information should synchronize the whole team's current effective state, put it in Taskdoc `progress` instead
52
52
  - If the note is durable knowledge rather than an active working-set cue, move it to `personal_memory` instead
53
53
 
54
- ## Scenario 2: Sideline is complete, and the assignment header requires replyTellask
54
+ ## Scenario 2: Side Dialog is complete, and the assignment header requires replyTellask
55
55
 
56
56
  ### Scenario Description
57
57
 
58
- The current sideline is finished, and the assignment header explicitly says "when complete, call `replyTellask`".
58
+ The current Side Dialog is finished, and the assignment header explicitly says "when complete, call `replyTellask`".
59
59
 
60
60
  ### Example
61
61
 
@@ -72,11 +72,11 @@ replyTellask({
72
72
  - Put the final deliverable body directly in `replyContent`
73
73
  - If the header says `replyTellaskSessionless`, use the same shape with that exact function name
74
74
 
75
- ## Scenario 3: Work is not finished yet, and an upstream clarification is required
75
+ ## Scenario 3: Work is not finished yet, and tellasker clarification is required
76
76
 
77
77
  ### Scenario Description
78
78
 
79
- The sideline is still blocked or incomplete, so you need to ask upstream for missing information.
79
+ The Side Dialog is still blocked or incomplete, so you need to ask the tellasker for missing information.
80
80
 
81
81
  ### Example
82
82
 
@@ -89,15 +89,15 @@ tellaskBack({
89
89
 
90
90
  ### Key Points
91
91
 
92
- - This example uses `tellaskBack` because upstream input is specifically required
92
+ - This example uses `tellaskBack` because tellasker input is specifically required
93
93
  - 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`
94
94
  - Do not use `replyTellask*` for intermediate clarifications
95
95
 
96
- ## Scenario 4: Upstream answered the ask-back, so use replyTellaskBack to close
96
+ ## Scenario 4: Tellasker answered the ask-back, so use replyTellaskBack to close
97
97
 
98
98
  ### Scenario Description
99
99
 
100
- You previously sent a `tellaskBack`, upstream has now replied, and runtime exposes `replyTellaskBack`.
100
+ You previously sent a `tellaskBack`, the tellasker has now replied, and runtime exposes `replyTellaskBack`.
101
101
 
102
102
  ### Example
103
103
 
@@ -23,16 +23,16 @@
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 |
27
- | ------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
28
- | `replyTellask` | `{ replyContent: string }` | Current sideline comes from a sessioned `tellask` and is ready for final delivery | Delivers the final result for the current tellask session |
29
- | `replyTellaskSessionless` | `{ replyContent: string }` | Current sideline comes from a one-shot `tellaskSessionless` and is ready for final delivery | Delivers the final result for the current one-shot tellask |
30
- | `replyTellaskBack` | `{ replyContent: string }` | Current dialog holds an unresolved `tellaskBack` reply directive | Delivers the final answer to the upstream ask-back |
31
- | `tellaskBack` | `{ tellaskContent: string }` | Current sideline must ask upstream back, and existing team SOP cannot directly assign another owner | Sends a follow-up request upstream; not final delivery |
26
+ | Function | Minimal parameter contract | When runtime exposes it | Effect |
27
+ | ------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
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
+ | `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 |
30
+ | `replyTellaskBack` | `{ replyContent: string }` | Current dialog holds an unresolved `tellaskBack` reply directive | Delivers the final answer to the tellasker ask-back |
31
+ | `tellaskBack` | `{ tellaskContent: string }` | Current Side Dialog must ask the tellasker back, and existing team SOP cannot directly assign another owner | Sends a follow-up request to the tellasker; not final delivery |
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 upstream delivery is actually ready
35
+ - Focus on doing the current task correctly first; only move into `reply*` closure when final tellasker delivery is actually ready
36
36
  - Call whichever `reply*` runtime currently exposes; do not switch to another reply variant by yourself
37
37
  - If the assignment header explicitly names a reply function, 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"
@@ -93,20 +93,20 @@
93
93
  ### 决策规则
94
94
 
95
95
  - 当前支线未完成时,先判断团队规程 / SOP / 职责卡能否明确负责人;若能明确且属于执行性处理,直接 `tellask` / `tellaskSessionless` 对应负责人
96
- - 只有当必须向上游补需求、澄清目标、裁决取舍、确认验收口径、提供缺失输入,或现有规程无法明确判责时:调用 `tellaskBack({ tellaskContent })`
96
+ - 只有当必须向诉请者补需求、澄清目标、裁决取舍、确认验收口径、提供缺失输入,或现有规程无法明确判责时:调用 `tellaskBack({ tellaskContent })`
97
97
  - 需要人类亲自登录 / GUI / 验证码 / 高风险授权时:调用 `askHuman({ tellaskContent })`
98
98
  - 当前支线已经完成,且当前 assignment 明确要求 `replyTellask`:调用 `replyTellask({ replyContent })`
99
99
  - 当前支线已经完成,且当前 assignment 明确要求 `replyTellaskSessionless`:调用 `replyTellaskSessionless({ replyContent })`
100
- - 当前是在回复一条上游发来的 `tellaskBack` 续诉请,且 runtime 暴露了 `replyTellaskBack`:调用 `replyTellaskBack({ replyContent })`
100
+ - 当前是在回复一条诉请者发来的 `tellaskBack` 续诉请,且 runtime 暴露了 `replyTellaskBack`:调用 `replyTellaskBack({ replyContent })`
101
101
  - 普通文本不是跨对话完成交付通道;如果你直接输出正文而没调 reply 工具,runtime 可能临时插入一条 `role=user` 的提醒要求你改用正确的 reply 函数
102
102
 
103
103
  ### 心智负担最小化规则
104
104
 
105
- - 先专注把当前任务做对;`reply*` 只在最终对上游交付时用于收口
105
+ - 先专注把当前任务做对;`reply*` 只在最终对诉请者交付时用于收口
106
106
  - 不要靠记忆硬选 reply 变体;以当前 assignment 头部和 runtime 当前暴露的函数名为准
107
107
  - `reply*` 函数自身说明文案故意保持极简,只承载最小规格;情景判断看本手册的 principles / scenarios
108
108
  - 若 runtime 只暴露一个 `reply*`,那就是当前应调用的唯一完成路径
109
- - `tellaskBack` 是“无法按现有规程明确判责,或必须回问上游”的兜底动作,不是所有阻塞的默认第一动作
109
+ - `tellaskBack` 只在“无法按现有规程明确判责,或必须回问诉请者”时成立,不是所有阻塞的默认第一动作
110
110
 
111
111
  ## 最佳实践
112
112
 
@@ -71,11 +71,11 @@ replyTellask({
71
71
  - `replyContent` 直接放最终交付正文
72
72
  - 若 assignment 头部写的是 `replyTellaskSessionless`,则同结构替换函数名
73
73
 
74
- ## 场景 3:当前未完成,需要回问上游
74
+ ## 场景 3:当前未完成,需要回问诉请者
75
75
 
76
76
  ### 场景描述
77
77
 
78
- 当前支线仍未完成,因此需要向上游补问缺失信息。
78
+ 当前支线仍未完成,因此需要向诉请者补问缺失信息。
79
79
 
80
80
  ### 示例
81
81
 
@@ -84,12 +84,12 @@ tellaskBack({
84
84
  tellaskContent: '还缺少生产环境端口与部署入口信息。请补充这两项后我再继续给出最终方案。',
85
85
  });
86
86
 
87
- // 等上游补充后,runtime 会在当前对话里继续推进
87
+ // 等诉请者补充后,runtime 会在当前对话里继续推进
88
88
  ```
89
89
 
90
90
  ### 关键点
91
91
 
92
- - 这里只是“必须向上游补输入”的例子,所以用 `tellaskBack`
92
+ - 这里只是“必须向诉请者补输入”的例子,所以用 `tellaskBack`
93
93
  - 若团队规程 / SOP / 职责卡已经能明确执行负责人,应直接 `tellask` / `tellaskSessionless` 对应负责人,而不是机械因为“未完成态”就用 `tellaskBack`
94
94
  - `tellaskBack` 只负责把问题问回去,不负责最终交付
95
95
 
@@ -97,7 +97,7 @@ tellaskBack({
97
97
 
98
98
  ### 场景描述
99
99
 
100
- 你之前发过 `tellaskBack`,上游现在补回了所需信息,runtime 暴露了 `replyTellaskBack`。
100
+ 你之前发过 `tellaskBack`,诉请者现在补回了所需信息,runtime 暴露了 `replyTellaskBack`。
101
101
 
102
102
  ### 示例
103
103
 
@@ -27,12 +27,12 @@
27
27
  | ------------------------- | ---------------------------- | -------------------------------------------------------------------- | ----------------------------------- |
28
28
  | `replyTellask` | `{ replyContent: string }` | 当前支线承接的是 sessioned `tellask`,且已进入可交付完成态 | 把最终结果回复给当前 `tellask` 会话 |
29
29
  | `replyTellaskSessionless` | `{ replyContent: string }` | 当前支线承接的是 one-shot `tellaskSessionless`,且已进入可交付完成态 | 把最终结果回复给当前一次性诉请 |
30
- | `replyTellaskBack` | `{ replyContent: string }` | 当前对话持有一条未完成的 `tellaskBack` 回复指令 | 把对上一条回问的最终答复送回上游 |
31
- | `tellaskBack` | `{ tellaskContent: string }` | 当前支线必须回问上游,且现有团队规程无法直接判责到其他负责人 | 向上游发起续诉请,不算最终交付 |
30
+ | `replyTellaskBack` | `{ replyContent: string }` | 当前对话持有一条未完成的 `tellaskBack` 回复指令 | 把对上一条回问的最终答复送回诉请者 |
31
+ | `tellaskBack` | `{ tellaskContent: string }` | 当前支线必须回问诉请者,且现有团队规程无法直接判责到其他负责人 | 向诉请者发起续诉请,不算最终交付 |
32
32
 
33
33
  ### 最小使用规则
34
34
 
35
- - 先专注把当前任务做对;只有真到最终对上游交付时,才进入 `reply*` 收口
35
+ - 先专注把当前任务做对;只有真到最终对诉请者交付时,才进入 `reply*` 收口
36
36
  - 看见哪一个 `reply*` 被 runtime 暴露,就调用哪一个;不要自行改选别的 reply 变体
37
37
  - assignment 头部若已点名 reply 函数名,以那个名字为准
38
38
  - `replyContent` 只放最终交付正文,不要再包一层“我现在调用了 replyXXX”
@@ -68,20 +68,6 @@
68
68
  - Check lease status
69
69
  - Contact administrator
70
70
 
71
- ### ENV_NOT_FOUND
72
-
73
- **Description:** Environment variable doesn't exist.
74
-
75
- **Cause:**
76
-
77
- - Environment variable not set
78
- - Environment variable name is incorrect
79
-
80
- **Solution:**
81
-
82
- - Check environment variable name
83
- - Set required environment variable
84
-
85
71
  ## Frequently Asked Questions
86
72
 
87
73
  ### Q: What is an MCP lease?
@@ -26,9 +26,10 @@
26
26
 
27
27
  mcp_admin is Dominds' **MCP administration toolset** for managing MCP (Model Context Protocol) connections and resources:
28
28
 
29
- - **MCP restart**: Restart MCP service
29
+ - **MCP restart/enable**: Enable and restart MCP service
30
30
  - **MCP release**: Release MCP lease
31
- - **Environment variables**: Read environment variables
31
+ - **MCP disable**: Disable MCP service while keeping a zero-tool toolset/manual visible
32
+ - **Environment variables**: Read, set, and delete local environment variables
32
33
 
33
34
  ## Quick Navigation
34
35
 
@@ -43,7 +44,8 @@ mcp_admin is Dominds' **MCP administration toolset** for managing MCP (Model Con
43
44
 
44
45
  - Status: Implemented
45
46
  - Main implementation files:
46
- - Tool implementation: `dominds/main/tools/mcp-admin.ts`
47
+ - MCP tool implementation: `dominds/main/tools/mcp.ts`
48
+ - Environment variable tool implementation: `dominds/main/tools/env.ts`
47
49
  - Toolset metadata: `dominds/main/tools/builtins.ts`, `dominds/main/tools/registry.ts`
48
50
 
49
51
  ## Core Concepts
@@ -45,17 +45,22 @@ MCP uses a lease mechanism to manage runtime resources such as HTTP connections
45
45
  - **Hold lease**: Keep using that runtime instance
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`.
49
+
48
50
  ### 3. Environment Variables
49
51
 
50
52
  Shared with os toolset for environment variable functionality.
51
53
 
52
54
  ## Tool Overview
53
55
 
54
- | Tool | Function |
55
- | ----------- | ------------------------ |
56
- | mcp_restart | Restart MCP service |
57
- | mcp_release | Release MCP lease |
58
- | env_get | Get environment variable |
56
+ | Tool | Function |
57
+ | ----------- | ------------------------------ |
58
+ | mcp_restart | Enable and restart MCP service |
59
+ | mcp_release | Release MCP lease |
60
+ | mcp_disable | Disable MCP service |
61
+ | env_get | Get environment variable |
62
+ | env_set | Set environment variable |
63
+ | env_unset | Delete environment variable |
59
64
 
60
65
  ## Best Practices
61
66
 
@@ -64,6 +69,7 @@ Shared with os toolset for environment variable functionality.
64
69
  - **Release timely**: Release lease when MCP is no longer used
65
70
  - **Monitor status**: Regularly check MCP connection status
66
71
  - **Error handling**: Handle connection failures
72
+ - **Responsibility routing**: teammates without the `mcp_admin` toolset should use the team responsibility quick table / routing cards to ask the MCP troubleshooter or administrator for help when MCP tools stop working; they should not improvise a bypass.
67
73
 
68
74
  ### 2. Resource Management
69
75
 
@@ -15,7 +15,9 @@
15
15
 
16
16
  ### Scenario Description
17
17
 
18
- When MCP service has issues or needs to refresh the connection, restart the MCP service.
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
+
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.
19
21
 
20
22
  ### Example
21
23
 
@@ -53,7 +55,21 @@ env_get({
53
55
  });
54
56
  ```
55
57
 
56
- ## Scenario 4: MCP Connection Failure Handling
58
+ ## Scenario 4: Disable MCP Service
59
+
60
+ ### Scenario Description
61
+
62
+ When an MCP server should stop providing tools, or troubleshooting needs to force it offline, disable that server and write `enabled: false`. A disabled server is still exposed as a zero-tool toolset, and its manual clearly marks it as disabled.
63
+
64
+ ### Example
65
+
66
+ ```typescript
67
+ mcp_disable({
68
+ serverId: 'filesystem',
69
+ });
70
+ ```
71
+
72
+ ## Scenario 5: MCP Connection Failure Handling
57
73
 
58
74
  ### Scenario Description
59
75
 
@@ -69,7 +85,7 @@ mcp_restart({
69
85
  });
70
86
  ```
71
87
 
72
- ## Scenario 5: Resource Cleanup
88
+ ## Scenario 6: Resource Cleanup
73
89
 
74
90
  ### Scenario Description
75
91
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  ### 1. mcp_restart
23
23
 
24
- Restart MCP service.
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.
25
25
 
26
26
  **Parameters:**
27
27
 
@@ -30,9 +30,7 @@ Restart MCP service.
30
30
  **Returns:**
31
31
 
32
32
  ```yaml
33
- status: ok|error
34
- serverId: <MCP service identifier>
35
- restarted_at: <restart timestamp>
33
+ ok: restarted <MCP service identifier>
36
34
  ```
37
35
 
38
36
  **Errors:**
@@ -50,9 +48,13 @@ Release the current dialog's leased MCP runtime instance for a server. This stop
50
48
  **Returns:**
51
49
 
52
50
  ```yaml
53
- status: ok|error
54
- serverId: <MCP service identifier>
55
- released_at: <release timestamp>
51
+ ok: released <MCP service identifier> for dialog <dialog identifier>
52
+ ```
53
+
54
+ If the current dialog has no releasable lease, returns:
55
+
56
+ ```yaml
57
+ ok: no active lease for <MCP service identifier> (or server is truely-stateless)
56
58
  ```
57
59
 
58
60
  **Errors:**
@@ -60,7 +62,21 @@ released_at: <release timestamp>
60
62
  - `MCP_NOT_FOUND`: MCP service doesn't exist
61
63
  - `MCP_NOT_RUNNING`: MCP service not running
62
64
 
63
- ### 3. env_get
65
+ ### 3. mcp_disable
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.
68
+
69
+ **Parameters:**
70
+
71
+ - `serverId` (required): MCP service identifier
72
+
73
+ **Returns:**
74
+
75
+ ```yaml
76
+ ok: disabled <MCP service identifier> and set enabled=false
77
+ ```
78
+
79
+ ### 4. env_get
64
80
 
65
81
  Get environment variable (shared with os toolset).
66
82
 
@@ -70,16 +86,41 @@ Get environment variable (shared with os toolset).
70
86
 
71
87
  **Returns:**
72
88
 
89
+ - Set: returns the environment variable value directly
90
+ - Unset: returns `(unset)`
91
+
92
+ ### 5. env_set
93
+
94
+ Set an environment variable in the Dominds server process (shared with os toolset).
95
+
96
+ **Parameters:**
97
+
98
+ - `key` (required): Environment variable name
99
+ - `value` (required): Environment variable value
100
+
101
+ **Returns:**
102
+
73
103
  ```yaml
74
- status: ok|error
75
- key: <environment variable name>
76
- value: <environment variable value>
77
- retrieved_at: <retrieval timestamp>
104
+ ok: <environment variable name>
105
+ prev: <previous value or (unset)>
106
+ next: <new value>
78
107
  ```
79
108
 
80
- **Errors:**
109
+ ### 6. env_unset
81
110
 
82
- - `ENV_NOT_FOUND`: Environment variable doesn't exist
111
+ Delete an environment variable from the Dominds server process (shared with os toolset).
112
+
113
+ **Parameters:**
114
+
115
+ - `key` (required): Environment variable name
116
+
117
+ **Returns:**
118
+
119
+ ```yaml
120
+ ok: <environment variable name>
121
+ prev: <previous value or (unset)>
122
+ next: (unset)
123
+ ```
83
124
 
84
125
  ## Usage Examples
85
126
 
@@ -99,6 +140,14 @@ mcp_release({
99
140
  });
100
141
  ```
101
142
 
143
+ ### Disable MCP Service
144
+
145
+ ```typescript
146
+ mcp_disable({
147
+ serverId: 'browser',
148
+ });
149
+ ```
150
+
102
151
  ### Get Environment Variable
103
152
 
104
153
  ```typescript
@@ -107,17 +156,32 @@ env_get({
107
156
  });
108
157
  ```
109
158
 
110
- ## YAML Output Contract
159
+ ### Set Environment Variable
160
+
161
+ ```typescript
162
+ env_set({
163
+ key: 'MCP_AUTH_TOKEN',
164
+ value: 'local-token',
165
+ });
166
+ ```
167
+
168
+ ### Delete Environment Variable
169
+
170
+ ```typescript
171
+ env_unset({
172
+ key: 'MCP_AUTH_TOKEN',
173
+ });
174
+ ```
175
+
176
+ ## Output Contract
111
177
 
112
- All tool outputs use YAML format for programmatic processing:
178
+ These tools use the short text return formats described in their own sections:
113
179
 
114
- - `status`: Operation status, `ok` for success, `error` for failure
115
- - Other fields: Additional information for specific operations
180
+ - Success: starts with `ok:`
181
+ - Failure: starts with `error:`
116
182
 
117
183
  On error, returns:
118
184
 
119
185
  ```yaml
120
- status: error
121
- error_code: <error code>
122
- message: <error message>
186
+ error: <error message>
123
187
  ```
@@ -68,20 +68,6 @@
68
68
  - 检查租约状态
69
69
  - 联系管理员
70
70
 
71
- ### ENV_NOT_FOUND
72
-
73
- **描述:** 环境变量不存在。
74
-
75
- **原因:**
76
-
77
- - 环境变量未被设置
78
- - 环境变量名称错误
79
-
80
- **解决方案:**
81
-
82
- - 检查环境变量名称
83
- - 设置所需的环境变量
84
-
85
71
  ## 常见问题
86
72
 
87
73
  ### Q: MCP 租约是什么?
@@ -26,9 +26,10 @@
26
26
 
27
27
  mcp_admin 是 Dominds 的 **MCP 管理工具集**,用于管理 MCP(Model Context Protocol)连接和资源:
28
28
 
29
- - **MCP 重启**:重启 MCP 服务
29
+ - **MCP 重启/启用**:启用并重启 MCP 服务
30
30
  - **MCP 释放**:释放 MCP 租约
31
- - **环境变量**:读取环境变量
31
+ - **MCP 禁用**:禁用 MCP 服务,并保留 0 工具 toolset/手册可见性
32
+ - **环境变量**:读取、设置、删除本地环境变量
32
33
 
33
34
  ## 快速导航
34
35
 
@@ -43,7 +44,8 @@ mcp_admin 是 Dominds 的 **MCP 管理工具集**,用于管理 MCP(Model Con
43
44
 
44
45
  - 状态:已实现
45
46
  - 主要实现文件:
46
- - 工具实现:`dominds/main/tools/mcp-admin.ts`
47
+ - MCP 工具实现:`dominds/main/tools/mcp.ts`
48
+ - 环境变量工具实现:`dominds/main/tools/env.ts`
47
49
  - toolset 元信息:`dominds/main/tools/builtins.ts`、`dominds/main/tools/registry.ts`
48
50
 
49
51
  ## 核心概念
@@ -45,17 +45,22 @@ MCP 使用租约机制管理运行时资源,例如 HTTP 连接和 stdio 进程
45
45
  - **持有租约**:继续使用该运行时实例
46
46
  - **释放租约**:停止/断开并释放资源
47
47
 
48
+ `mcp_restart` 会把目标 server 的 `enabled: false` 改回 `enabled: true`,然后尝试启动;成功时会替换全局 MCP runtime 并清掉旧 runtime 的所有对话 lease;不需要先逐个 `mcp_release`。如果需要强制禁用某个 server,使用 `mcp_disable`。
49
+
48
50
  ### 3. 环境变量
49
51
 
50
52
  与 os 工具集共享环境变量功能。
51
53
 
52
54
  ## 工具概览
53
55
 
54
- | 工具 | 功能 |
55
- | ----------- | ------------- |
56
- | mcp_restart | 重启 MCP 服务 |
57
- | mcp_release | 释放 MCP 租约 |
58
- | env_get | 获取环境变量 |
56
+ | 工具 | 功能 |
57
+ | ----------- | ------------------- |
58
+ | mcp_restart | 启用并重启 MCP 服务 |
59
+ | mcp_release | 释放 MCP 租约 |
60
+ | mcp_disable | 禁用 MCP 服务 |
61
+ | env_get | 获取环境变量 |
62
+ | env_set | 设置环境变量 |
63
+ | env_unset | 删除环境变量 |
59
64
 
60
65
  ## 最佳实践
61
66
 
@@ -64,6 +69,7 @@ MCP 使用租约机制管理运行时资源,例如 HTTP 连接和 stdio 进程
64
69
  - **及时释放**:不再使用 MCP 时及时释放租约
65
70
  - **监控状态**:定期检查 MCP 连接状态
66
71
  - **错误处理**:处理连接失败的情况
72
+ - **职责路由**:没有 `mcp_admin` 工具集的队友遇到 MCP 工具异常时,应按团队职责速查表/路由卡找到 MCP 排障或管理员队友协助,不要自行绕过。
67
73
 
68
74
  ### 2. 资源管理
69
75
 
@@ -15,7 +15,9 @@
15
15
 
16
16
  ### 场景描述
17
17
 
18
- 当 MCP 服务出现故障或需要刷新连接时,重启 MCP 服务。
18
+ 当 MCP 服务出现故障、需要刷新连接,或当前被 `enabled: false` 禁用时,启用并重启 MCP 服务。
19
+
20
+ `mcp_restart` 会把 `enabled: false` 写回 `enabled: true` 后尝试启动;成功后会清理旧 runtime 的全部对话 lease,不需要先 `mcp_release`。
19
21
 
20
22
  ### 示例
21
23
 
@@ -53,7 +55,21 @@ env_get({
53
55
  });
54
56
  ```
55
57
 
56
- ## 场景 4MCP 连接故障处理
58
+ ## 场景 4:禁用 MCP 服务
59
+
60
+ ### 场景描述
61
+
62
+ 当某个 MCP server 不应继续提供工具,或排障时需要强制下线它,禁用该 server 并写入 `enabled: false`。禁用后的 server 仍会作为 0 工具 toolset 暴露,手册会明确标记已禁用。
63
+
64
+ ### 示例
65
+
66
+ ```typescript
67
+ mcp_disable({
68
+ serverId: 'filesystem',
69
+ });
70
+ ```
71
+
72
+ ## 场景 5:MCP 连接故障处理
57
73
 
58
74
  ### 场景描述
59
75
 
@@ -69,7 +85,7 @@ mcp_restart({
69
85
  });
70
86
  ```
71
87
 
72
- ## 场景 5:资源清理
88
+ ## 场景 6:资源清理
73
89
 
74
90
  ### 场景描述
75
91