dominds 0.8.8 → 0.8.9

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 (195) hide show
  1. package/dist/cli/manual.js +5 -2
  2. package/dist/dialog-run-state.js +18 -1
  3. package/dist/docs/dialog-system.md +1 -1
  4. package/dist/docs/dialog-system.zh.md +1 -1
  5. package/dist/docs/keep-going.zh.md +162 -0
  6. package/dist/docs/showing-by-doing.md +208 -0
  7. package/dist/docs/showing-by-doing.zh.md +177 -0
  8. package/dist/docs/team-mgmt-toolset.md +12 -12
  9. package/dist/docs/team-mgmt-toolset.zh.md +12 -12
  10. package/dist/minds/promptdocs.js +263 -0
  11. package/dist/server/api-routes.js +1 -1
  12. package/dist/showing-by-doing.js +34 -31
  13. package/dist/snippets/README.en.md +3 -0
  14. package/dist/static/assets/{_baseUniq-D14YtKr6.js → _baseUniq-rwtkYcxR.js} +2 -2
  15. package/dist/static/assets/{_baseUniq-D14YtKr6.js.map → _baseUniq-rwtkYcxR.js.map} +1 -1
  16. package/dist/static/assets/{arc-BogWhQin.js → arc-BTyYupKm.js} +2 -2
  17. package/dist/static/assets/{arc-BogWhQin.js.map → arc-BTyYupKm.js.map} +1 -1
  18. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CXcFF-FS.js → architectureDiagram-VXUJARFQ-D4-EEDYn.js} +6 -6
  19. package/dist/static/assets/{architectureDiagram-VXUJARFQ-CXcFF-FS.js.map → architectureDiagram-VXUJARFQ-D4-EEDYn.js.map} +1 -1
  20. package/dist/static/assets/{blockDiagram-VD42YOAC-C8CkYBvD.js → blockDiagram-VD42YOAC-lp1hslWH.js} +7 -7
  21. package/dist/static/assets/{blockDiagram-VD42YOAC-C8CkYBvD.js.map → blockDiagram-VD42YOAC-lp1hslWH.js.map} +1 -1
  22. package/dist/static/assets/{c4Diagram-YG6GDRKO-CEkjLhJE.js → c4Diagram-YG6GDRKO-CzfjUT-v.js} +3 -3
  23. package/dist/static/assets/{c4Diagram-YG6GDRKO-CEkjLhJE.js.map → c4Diagram-YG6GDRKO-CzfjUT-v.js.map} +1 -1
  24. package/dist/static/assets/{channel-mScKmP53.js → channel-JDsHVrdu.js} +2 -2
  25. package/dist/static/assets/{channel-mScKmP53.js.map → channel-JDsHVrdu.js.map} +1 -1
  26. package/dist/static/assets/{chunk-4BX2VUAB-DRCehITY.js → chunk-4BX2VUAB-D_AEpkik.js} +2 -2
  27. package/dist/static/assets/{chunk-4BX2VUAB-DRCehITY.js.map → chunk-4BX2VUAB-D_AEpkik.js.map} +1 -1
  28. package/dist/static/assets/{chunk-55IACEB6-BDFuTtkR.js → chunk-55IACEB6-3UliSZil.js} +2 -2
  29. package/dist/static/assets/{chunk-55IACEB6-BDFuTtkR.js.map → chunk-55IACEB6-3UliSZil.js.map} +1 -1
  30. package/dist/static/assets/{chunk-B4BG7PRW-BZe-vFwf.js → chunk-B4BG7PRW-CCSPITb4.js} +5 -5
  31. package/dist/static/assets/{chunk-B4BG7PRW-BZe-vFwf.js.map → chunk-B4BG7PRW-CCSPITb4.js.map} +1 -1
  32. package/dist/static/assets/{chunk-DI55MBZ5-TF02rYZe.js → chunk-DI55MBZ5-C8yHXGlB.js} +4 -4
  33. package/dist/static/assets/{chunk-DI55MBZ5-TF02rYZe.js.map → chunk-DI55MBZ5-C8yHXGlB.js.map} +1 -1
  34. package/dist/static/assets/{chunk-FMBD7UC4-BwTcGAxy.js → chunk-FMBD7UC4-DxXHAkjy.js} +2 -2
  35. package/dist/static/assets/{chunk-FMBD7UC4-BwTcGAxy.js.map → chunk-FMBD7UC4-DxXHAkjy.js.map} +1 -1
  36. package/dist/static/assets/{chunk-QN33PNHL-D7bryks7.js → chunk-QN33PNHL-DCAYEM3a.js} +2 -2
  37. package/dist/static/assets/{chunk-QN33PNHL-D7bryks7.js.map → chunk-QN33PNHL-DCAYEM3a.js.map} +1 -1
  38. package/dist/static/assets/{chunk-QZHKN3VN-e-lJgN6U.js → chunk-QZHKN3VN-DeUpec6F.js} +2 -2
  39. package/dist/static/assets/{chunk-QZHKN3VN-e-lJgN6U.js.map → chunk-QZHKN3VN-DeUpec6F.js.map} +1 -1
  40. package/dist/static/assets/{chunk-TZMSLE5B-DaEE37qC.js → chunk-TZMSLE5B-CBqy05uj.js} +2 -2
  41. package/dist/static/assets/{chunk-TZMSLE5B-DaEE37qC.js.map → chunk-TZMSLE5B-CBqy05uj.js.map} +1 -1
  42. package/dist/static/assets/{classDiagram-2ON5EDUG-BOUhAJ3a.js → classDiagram-2ON5EDUG-DNPFStZY.js} +6 -6
  43. package/dist/static/assets/{classDiagram-2ON5EDUG-BOUhAJ3a.js.map → classDiagram-2ON5EDUG-DNPFStZY.js.map} +1 -1
  44. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BOUhAJ3a.js → classDiagram-v2-WZHVMYZB-DNPFStZY.js} +6 -6
  45. package/dist/static/assets/{classDiagram-v2-WZHVMYZB-BOUhAJ3a.js.map → classDiagram-v2-WZHVMYZB-DNPFStZY.js.map} +1 -1
  46. package/dist/static/assets/{clone-WEoHCv1v.js → clone-BAGTZpbL.js} +2 -2
  47. package/dist/static/assets/{clone-WEoHCv1v.js.map → clone-BAGTZpbL.js.map} +1 -1
  48. package/dist/static/assets/{cose-bilkent-S5V4N54A-BypHhSR3.js → cose-bilkent-S5V4N54A-B9NEtdLi.js} +2 -2
  49. package/dist/static/assets/{cose-bilkent-S5V4N54A-BypHhSR3.js.map → cose-bilkent-S5V4N54A-B9NEtdLi.js.map} +1 -1
  50. package/dist/static/assets/{dagre-6UL2VRFP-DFBCJAGs.js → dagre-6UL2VRFP-BnofEgY-.js} +7 -7
  51. package/dist/static/assets/{dagre-6UL2VRFP-DFBCJAGs.js.map → dagre-6UL2VRFP-BnofEgY-.js.map} +1 -1
  52. package/dist/static/assets/{diagram-PSM6KHXK-BP1Ej_-e.js → diagram-PSM6KHXK-CXN3JGnX.js} +7 -7
  53. package/dist/static/assets/{diagram-PSM6KHXK-BP1Ej_-e.js.map → diagram-PSM6KHXK-CXN3JGnX.js.map} +1 -1
  54. package/dist/static/assets/{diagram-QEK2KX5R-CHO4B5dl.js → diagram-QEK2KX5R-Bpf_NUSv.js} +6 -6
  55. package/dist/static/assets/{diagram-QEK2KX5R-CHO4B5dl.js.map → diagram-QEK2KX5R-Bpf_NUSv.js.map} +1 -1
  56. package/dist/static/assets/{diagram-S2PKOQOG-feY4jjjY.js → diagram-S2PKOQOG-D_SIAoY9.js} +6 -6
  57. package/dist/static/assets/{diagram-S2PKOQOG-feY4jjjY.js.map → diagram-S2PKOQOG-D_SIAoY9.js.map} +1 -1
  58. package/dist/static/assets/{erDiagram-Q2GNP2WA-KA_SlHEz.js → erDiagram-Q2GNP2WA-dzhjooSh.js} +5 -5
  59. package/dist/static/assets/{erDiagram-Q2GNP2WA-KA_SlHEz.js.map → erDiagram-Q2GNP2WA-dzhjooSh.js.map} +1 -1
  60. package/dist/static/assets/{flowDiagram-NV44I4VS-CsxMHjrE.js → flowDiagram-NV44I4VS-BXhfqZju.js} +6 -6
  61. package/dist/static/assets/{flowDiagram-NV44I4VS-CsxMHjrE.js.map → flowDiagram-NV44I4VS-BXhfqZju.js.map} +1 -1
  62. package/dist/static/assets/{ganttDiagram-JELNMOA3-BJ3PDO7l.js → ganttDiagram-JELNMOA3-D05vcZ4f.js} +3 -3
  63. package/dist/static/assets/{ganttDiagram-JELNMOA3-BJ3PDO7l.js.map → ganttDiagram-JELNMOA3-D05vcZ4f.js.map} +1 -1
  64. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-F7Jx8FgF.js → gitGraphDiagram-NY62KEGX-CQe5stSg.js} +7 -7
  65. package/dist/static/assets/{gitGraphDiagram-NY62KEGX-F7Jx8FgF.js.map → gitGraphDiagram-NY62KEGX-CQe5stSg.js.map} +1 -1
  66. package/dist/static/assets/{graph-BlmDCWvL.js → graph-KwgPFpCM.js} +3 -3
  67. package/dist/static/assets/{graph-BlmDCWvL.js.map → graph-KwgPFpCM.js.map} +1 -1
  68. package/dist/static/assets/{index-CUGcPcXL.js → index-B2yxi4rE.js} +63 -53
  69. package/dist/static/assets/index-B2yxi4rE.js.map +1 -0
  70. package/dist/static/assets/{infoDiagram-WHAUD3N6-BIpdDPrb.js → infoDiagram-WHAUD3N6-BeYGZtD7.js} +5 -5
  71. package/dist/static/assets/{infoDiagram-WHAUD3N6-BIpdDPrb.js.map → infoDiagram-WHAUD3N6-BeYGZtD7.js.map} +1 -1
  72. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-BF1STnaT.js → journeyDiagram-XKPGCS4Q-Cds1EaPv.js} +5 -5
  73. package/dist/static/assets/{journeyDiagram-XKPGCS4Q-BF1STnaT.js.map → journeyDiagram-XKPGCS4Q-Cds1EaPv.js.map} +1 -1
  74. package/dist/static/assets/{kanban-definition-3W4ZIXB7-cyFqqvhg.js → kanban-definition-3W4ZIXB7-PVug-7Ew.js} +3 -3
  75. package/dist/static/assets/{kanban-definition-3W4ZIXB7-cyFqqvhg.js.map → kanban-definition-3W4ZIXB7-PVug-7Ew.js.map} +1 -1
  76. package/dist/static/assets/{layout-DMgcIorQ.js → layout-CYmyvr8n.js} +5 -5
  77. package/dist/static/assets/{layout-DMgcIorQ.js.map → layout-CYmyvr8n.js.map} +1 -1
  78. package/dist/static/assets/{linear-Coji9s5a.js → linear-DAZdg4CR.js} +2 -2
  79. package/dist/static/assets/{linear-Coji9s5a.js.map → linear-DAZdg4CR.js.map} +1 -1
  80. package/dist/static/assets/{min-B1_8WNcy.js → min-BFZBB1Eh.js} +3 -3
  81. package/dist/static/assets/{min-B1_8WNcy.js.map → min-BFZBB1Eh.js.map} +1 -1
  82. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CeKoOV-c.js → mindmap-definition-VGOIOE7T-CwOzFU9Z.js} +4 -4
  83. package/dist/static/assets/{mindmap-definition-VGOIOE7T-CeKoOV-c.js.map → mindmap-definition-VGOIOE7T-CwOzFU9Z.js.map} +1 -1
  84. package/dist/static/assets/{pieDiagram-ADFJNKIX-BGa8BmFH.js → pieDiagram-ADFJNKIX-m3-_s56r.js} +7 -7
  85. package/dist/static/assets/{pieDiagram-ADFJNKIX-BGa8BmFH.js.map → pieDiagram-ADFJNKIX-m3-_s56r.js.map} +1 -1
  86. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-Cr_hh2B6.js → quadrantDiagram-AYHSOK5B-CgsN9Zih.js} +3 -3
  87. package/dist/static/assets/{quadrantDiagram-AYHSOK5B-Cr_hh2B6.js.map → quadrantDiagram-AYHSOK5B-CgsN9Zih.js.map} +1 -1
  88. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-7tZ14LaJ.js → requirementDiagram-UZGBJVZJ-gCVOVHjp.js} +4 -4
  89. package/dist/static/assets/{requirementDiagram-UZGBJVZJ-7tZ14LaJ.js.map → requirementDiagram-UZGBJVZJ-gCVOVHjp.js.map} +1 -1
  90. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-PPE9oDbG.js → sankeyDiagram-TZEHDZUN-B2MQ4SbV.js} +2 -2
  91. package/dist/static/assets/{sankeyDiagram-TZEHDZUN-PPE9oDbG.js.map → sankeyDiagram-TZEHDZUN-B2MQ4SbV.js.map} +1 -1
  92. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DzHE1j4P.js → sequenceDiagram-WL72ISMW-DzKBb9NP.js} +4 -4
  93. package/dist/static/assets/{sequenceDiagram-WL72ISMW-DzHE1j4P.js.map → sequenceDiagram-WL72ISMW-DzKBb9NP.js.map} +1 -1
  94. package/dist/static/assets/{stateDiagram-FKZM4ZOC-ByVF3RFY.js → stateDiagram-FKZM4ZOC-CUis_SbN.js} +9 -9
  95. package/dist/static/assets/{stateDiagram-FKZM4ZOC-ByVF3RFY.js.map → stateDiagram-FKZM4ZOC-CUis_SbN.js.map} +1 -1
  96. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DYxiq1fR.js → stateDiagram-v2-4FDKWEC3-DyrlNAib.js} +5 -5
  97. package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-DYxiq1fR.js.map → stateDiagram-v2-4FDKWEC3-DyrlNAib.js.map} +1 -1
  98. package/dist/static/assets/{timeline-definition-IT6M3QCI-Cs4HgZ6x.js → timeline-definition-IT6M3QCI-Cbncr0Ri.js} +3 -3
  99. package/dist/static/assets/{timeline-definition-IT6M3QCI-Cs4HgZ6x.js.map → timeline-definition-IT6M3QCI-Cbncr0Ri.js.map} +1 -1
  100. package/dist/static/assets/{treemap-KMMF4GRG-PozDEtNJ.js → treemap-KMMF4GRG-WK9byIa9.js} +4 -4
  101. package/dist/static/assets/{treemap-KMMF4GRG-PozDEtNJ.js.map → treemap-KMMF4GRG-WK9byIa9.js.map} +1 -1
  102. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BwYnuA29.js → xychartDiagram-PRI3JC2R-B2Du-Xj7.js} +3 -3
  103. package/dist/static/assets/{xychartDiagram-PRI3JC2R-BwYnuA29.js.map → xychartDiagram-PRI3JC2R-B2Du-Xj7.js.map} +1 -1
  104. package/dist/static/index.html +1 -1
  105. package/dist/tools/builtins.js +1 -1
  106. package/dist/tools/context-health.js +7 -7
  107. package/dist/tools/manual/render.js +11 -3
  108. package/dist/tools/manual/schema.js +18 -6
  109. package/dist/tools/prompts/codex_style_tools/en/errors.md +7 -5
  110. package/dist/tools/prompts/codex_style_tools/en/index.md +13 -3
  111. package/dist/tools/prompts/codex_style_tools/en/principles.md +10 -0
  112. package/dist/tools/prompts/codex_style_tools/en/scenarios.md +2 -0
  113. package/dist/tools/prompts/codex_style_tools/en/tools.md +12 -8
  114. package/dist/tools/prompts/codex_style_tools/zh/errors.md +7 -5
  115. package/dist/tools/prompts/codex_style_tools/zh/index.md +13 -3
  116. package/dist/tools/prompts/codex_style_tools/zh/principles.md +10 -0
  117. package/dist/tools/prompts/codex_style_tools/zh/scenarios.md +2 -0
  118. package/dist/tools/prompts/codex_style_tools/zh/tools.md +12 -8
  119. package/dist/tools/prompts/control/en/errors.md +7 -5
  120. package/dist/tools/prompts/control/en/index.md +13 -3
  121. package/dist/tools/prompts/control/en/principles.md +10 -0
  122. package/dist/tools/prompts/control/en/scenarios.md +2 -0
  123. package/dist/tools/prompts/control/en/tools.md +12 -8
  124. package/dist/tools/prompts/control/zh/errors.md +7 -5
  125. package/dist/tools/prompts/control/zh/index.md +13 -3
  126. package/dist/tools/prompts/control/zh/principles.md +10 -0
  127. package/dist/tools/prompts/control/zh/scenarios.md +2 -0
  128. package/dist/tools/prompts/control/zh/tools.md +12 -8
  129. package/dist/tools/prompts/mcp_admin/en/errors.md +7 -5
  130. package/dist/tools/prompts/mcp_admin/en/index.md +13 -3
  131. package/dist/tools/prompts/mcp_admin/en/principles.md +10 -0
  132. package/dist/tools/prompts/mcp_admin/en/scenarios.md +2 -0
  133. package/dist/tools/prompts/mcp_admin/en/tools.md +12 -8
  134. package/dist/tools/prompts/mcp_admin/zh/errors.md +7 -5
  135. package/dist/tools/prompts/mcp_admin/zh/index.md +13 -3
  136. package/dist/tools/prompts/mcp_admin/zh/principles.md +10 -0
  137. package/dist/tools/prompts/mcp_admin/zh/scenarios.md +2 -0
  138. package/dist/tools/prompts/mcp_admin/zh/tools.md +12 -8
  139. package/dist/tools/prompts/memory/en/errors.md +7 -5
  140. package/dist/tools/prompts/memory/en/index.md +13 -3
  141. package/dist/tools/prompts/memory/en/principles.md +10 -0
  142. package/dist/tools/prompts/memory/en/scenarios.md +2 -0
  143. package/dist/tools/prompts/memory/en/tools.md +12 -8
  144. package/dist/tools/prompts/memory/zh/errors.md +7 -5
  145. package/dist/tools/prompts/memory/zh/index.md +13 -3
  146. package/dist/tools/prompts/memory/zh/principles.md +10 -0
  147. package/dist/tools/prompts/memory/zh/scenarios.md +2 -0
  148. package/dist/tools/prompts/memory/zh/tools.md +12 -8
  149. package/dist/tools/prompts/os/en/errors.md +7 -5
  150. package/dist/tools/prompts/os/en/index.md +13 -3
  151. package/dist/tools/prompts/os/en/principles.md +10 -0
  152. package/dist/tools/prompts/os/en/scenarios.md +2 -0
  153. package/dist/tools/prompts/os/en/tools.md +12 -8
  154. package/dist/tools/prompts/os/zh/errors.md +7 -5
  155. package/dist/tools/prompts/os/zh/index.md +13 -3
  156. package/dist/tools/prompts/os/zh/principles.md +10 -0
  157. package/dist/tools/prompts/os/zh/scenarios.md +2 -0
  158. package/dist/tools/prompts/os/zh/tools.md +12 -8
  159. package/dist/tools/prompts/team_memory/en/errors.md +7 -5
  160. package/dist/tools/prompts/team_memory/en/index.md +13 -3
  161. package/dist/tools/prompts/team_memory/en/principles.md +10 -0
  162. package/dist/tools/prompts/team_memory/en/scenarios.md +2 -0
  163. package/dist/tools/prompts/team_memory/en/tools.md +12 -8
  164. package/dist/tools/prompts/team_memory/zh/errors.md +7 -5
  165. package/dist/tools/prompts/team_memory/zh/index.md +13 -3
  166. package/dist/tools/prompts/team_memory/zh/principles.md +10 -0
  167. package/dist/tools/prompts/team_memory/zh/scenarios.md +2 -0
  168. package/dist/tools/prompts/team_memory/zh/tools.md +12 -8
  169. package/dist/tools/prompts/team_mgmt/en/errors.md +7 -5
  170. package/dist/tools/prompts/team_mgmt/en/index.md +13 -3
  171. package/dist/tools/prompts/team_mgmt/en/principles.md +10 -0
  172. package/dist/tools/prompts/team_mgmt/en/scenarios.md +2 -0
  173. package/dist/tools/prompts/team_mgmt/en/tools.md +12 -8
  174. package/dist/tools/prompts/team_mgmt/zh/errors.md +7 -5
  175. package/dist/tools/prompts/team_mgmt/zh/index.md +13 -3
  176. package/dist/tools/prompts/team_mgmt/zh/principles.md +10 -0
  177. package/dist/tools/prompts/team_mgmt/zh/scenarios.md +2 -0
  178. package/dist/tools/prompts/team_mgmt/zh/tools.md +12 -8
  179. package/dist/tools/prompts/ws_mod/en/errors.md +7 -5
  180. package/dist/tools/prompts/ws_mod/en/index.md +13 -3
  181. package/dist/tools/prompts/ws_mod/en/principles.md +10 -0
  182. package/dist/tools/prompts/ws_mod/en/scenarios.md +2 -0
  183. package/dist/tools/prompts/ws_mod/en/tools.md +12 -8
  184. package/dist/tools/prompts/ws_mod/zh/errors.md +7 -5
  185. package/dist/tools/prompts/ws_mod/zh/index.md +13 -3
  186. package/dist/tools/prompts/ws_mod/zh/principles.md +10 -0
  187. package/dist/tools/prompts/ws_mod/zh/scenarios.md +2 -0
  188. package/dist/tools/prompts/ws_mod/zh/tools.md +12 -8
  189. package/dist/tools/toolset-manual.js +2 -4
  190. package/dist/utils/task-doc.js +16 -16
  191. package/package.json +1 -1
  192. package/dist/minds/builtin/cmdr/persona.md +0 -3
  193. package/dist/minds/builtin/dijiang/knowledge.md +0 -287
  194. package/dist/minds/builtin/dijiang/persona.md +0 -7
  195. package/dist/static/assets/index-CUGcPcXL.js.map +0 -1
@@ -1,6 +1,6 @@
1
- # Team Management Toolset (`team_mgmt`)
1
+ # Team Management Toolset (`team-mgmt`)
2
2
 
3
- Chinese version: [中文版](./team_mgmt-toolset.zh.md)
3
+ Chinese version: [中文版](./team-mgmt-toolset.zh.md)
4
4
 
5
5
  This document specifies a dedicated **team management toolset** whose only job is managing the
6
6
  rtws’s “mindset” configuration files under `.minds/` (team roster, LLM providers, and agent
@@ -29,7 +29,7 @@ equivalent of the `ws_mod` toolset + unrestricted `read_dirs`/`write_dirs`), bec
29
29
 
30
30
  ## Migration Plan (Replacing legacy builtin team-manager knowledge)
31
31
 
32
- This document is a **design spec** for the new `team_mgmt` toolset. It is not something we should
32
+ This document is a **design spec** for the new `team-mgmt` toolset. It is not something we should
33
33
  ever tell an agent to “look up” at runtime.
34
34
 
35
35
  Instead, the runtime “single source of truth” for team management guidance should be
@@ -75,9 +75,9 @@ This makes sense for “normal” agents, but it blocks the team manager from do
75
75
  - Providing general-purpose file editing across the repo.
76
76
  - Making `.minds/` broadly writable by default team members.
77
77
 
78
- ## Proposed `team_mgmt` Toolset
78
+ ## Proposed `team-mgmt` Toolset
79
79
 
80
- The `team_mgmt` toolset mirrors a minimal subset of `fs`/`txt`, but **hard-scopes** all operations to
80
+ The `team-mgmt` toolset mirrors a minimal subset of `fs`/`txt`, but **hard-scopes** all operations to
81
81
  `.minds/` and rejects anything outside.
82
82
 
83
83
  ### Naming Conventions (Human / UI)
@@ -124,7 +124,7 @@ Notes:
124
124
  - Reject paths containing `..`.
125
125
  - Reject any path that resolves outside `.minds/` after normalization.
126
126
  - Prefer an explicit allowlist over “anything in the rtws”.
127
- - For `team_mgmt`, that explicit allowlist is `.minds/**` (including `.minds/memory/**`) so the
127
+ - For `team-mgmt`, that explicit allowlist is `.minds/**` (including `.minds/memory/**`) so the
128
128
  team manager can repair accidental corruptions made by other tools (even though `.minds/memory/**`
129
129
  already has dedicated `memory` / `team_memory` tools for normal use).
130
130
  - Require explicit `.minds/...` paths and validate them; do not support “implicitly scoped” paths
@@ -133,7 +133,7 @@ Notes:
133
133
  ### Why a dedicated toolset (instead of only `read_dirs` / `write_dirs`)?
134
134
 
135
135
  `read_dirs` / `write_dirs` are still valuable, but they are configured in `.minds/team.yaml`, which
136
- may not exist during bootstrap. A dedicated `team_mgmt` toolset:
136
+ may not exist during bootstrap. A dedicated `team-mgmt` toolset:
137
137
 
138
138
  - Lets the team manager create `.minds/team.yaml` safely from “zero state”.
139
139
  - Keeps the scope bounded even if the member’s directory allow/deny lists are empty.
@@ -387,7 +387,7 @@ member_defaults:
387
387
  - ws_read
388
388
  - memory
389
389
  # Default posture: deny `.minds/` edits for normal members.
390
- # (Team management should be done via `team_mgmt` tools, not general file tools.)
390
+ # (Team management should be done via `team-mgmt` tools, not general file tools.)
391
391
  no_read_dirs:
392
392
  - .minds/team.yaml
393
393
  - .minds/llm.yaml
@@ -426,7 +426,7 @@ Best practices:
426
426
  - Keep `.minds/team.yaml` ownership tight; only the team manager should be able to edit it.
427
427
  - Avoid repeating built-in constraints in `team.yaml`:
428
428
  - `*.tsk/**` (encapsulated Taskdocs) are hard-denied for all general file tools.
429
- - `.minds/**` is hard-denied for general file tools; only the dedicated `team_mgmt` toolset can access it.
429
+ - `.minds/**` is hard-denied for general file tools; only the dedicated `team-mgmt` toolset can access it.
430
430
  Put these in `no_*` only when you need extra explicitness; they are enforced regardless.
431
431
 
432
432
  ## Managing `.minds/team/<member>/*.md` (agent minds)
@@ -460,8 +460,8 @@ Suggested structure:
460
460
 
461
461
  Preferred behavior for initial bootstrap:
462
462
 
463
- - The shadow `fuxi` instance should get `team_mgmt` (and the manual tool), not broad `ws_mod`.
464
- - The shadow `pangu` instance should get broad rtws toolsets (e.g. `ws_read`, `ws_mod`, `os`), but not `team_mgmt`.
463
+ - The shadow `fuxi` instance should get `team-mgmt` (and the manual tool), not broad `ws_mod`.
464
+ - The shadow `pangu` instance should get broad rtws toolsets (e.g. `ws_read`, `ws_mod`, `os`), but not `team-mgmt`.
465
465
  - After `.minds/team.yaml` is created, the team definition becomes the source of truth.
466
466
 
467
467
  This avoids needing to grant full rtws access to configure the team.
@@ -472,7 +472,7 @@ This avoids needing to grant full rtws access to configure the team.
472
472
  `member_defaults.model`.
473
473
  - **Provider not found**: Ensure `.minds/team.yaml` `provider` keys exist in merged provider config
474
474
  (`dominds/main/llm/defaults.yaml` + `.minds/llm.yaml`).
475
- - **Access denied when editing `.minds/`**: Intended for general file tools; use `team_mgmt` tools.
475
+ - **Access denied when editing `.minds/`**: Intended for general file tools; use `team-mgmt` tools.
476
476
  - **MCP tools not visible in Tools view**:
477
477
  - Confirm `.minds/mcp.yaml` exists and is valid.
478
478
  - Open **Problems** and look for MCP-related errors.
@@ -1,6 +1,6 @@
1
- # 团队管理工具集(`team_mgmt`)
1
+ # 团队管理工具集(`team-mgmt`)
2
2
 
3
- 英文版:[English](./team_mgmt-toolset.md)
3
+ 英文版:[English](./team-mgmt-toolset.md)
4
4
 
5
5
  本文档指定了一个专用的**团队管理工具集**,其唯一职责是管理 rtws(运行时工作区)`.minds/` 下的"心智"配置文件(团队名单、LLM 提供商和智能体心智文件),而不授予广泛的运行时工作区访问权限。
6
6
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  ## 迁移计划(替换传统的内置团队管理者知识)
25
25
 
26
- 本文档是新的 `team_mgmt` 工具集的**设计规范**。这不是我们应该在运行时让智能体"查阅"的内容。
26
+ 本文档是新的 `team-mgmt` 工具集的**设计规范**。这不是我们应该在运行时让智能体"查阅"的内容。
27
27
 
28
28
  相反,运行时团队管理的"单一事实来源"应该是函数工具 `team_mgmt_manual` 的输出。
29
29
 
@@ -61,9 +61,9 @@
61
61
  - 提供跨仓库的通用文件编辑
62
62
  - 默认让 `.minds/` 可广泛写入
63
63
 
64
- ## 提议的 `team_mgmt` 工具集
64
+ ## 提议的 `team-mgmt` 工具集
65
65
 
66
- `team_mgmt` 工具集镜像 `fs`/`txt` 的最小子集,但**硬作用域**所有操作到 `.minds/` 并拒绝任何外部操作。
66
+ `team-mgmt` 工具集镜像 `fs`/`txt` 的最小子集,但**硬作用域**所有操作到 `.minds/` 并拒绝任何外部操作。
67
67
 
68
68
  ### 命名约定(人类 / UI)
69
69
 
@@ -104,12 +104,12 @@
104
104
  - 拒绝包含 `..` 的路径
105
105
  - 拒绝规范化后解析到 `.minds/` 之外的任何路径
106
106
  - 优先使用显式白名单而非" rtws 中的任何内容"
107
- - 对于 `team_mgmt`,该显式白名单是 `.minds/**`(包括 `.minds/memory/**`),以便团队管理者可以修复其他工具造成的意外损坏(即使 `.minds/memory/**` 已有专用的 `memory` / `team_memory` 工具供正常使用)
107
+ - 对于 `team-mgmt`,该显式白名单是 `.minds/**`(包括 `.minds/memory/**`),以便团队管理者可以修复其他工具造成的意外损坏(即使 `.minds/memory/**` 已有专用的 `memory` / `team_memory` 工具供正常使用)
108
108
  - 需要显式的 `.minds/...` 路径并验证它们;不支持像 `team.yaml` 这样的"隐式作用域"路径
109
109
 
110
110
  ### 为什么需要专用工具集(而不是仅 `read_dirs` / `write_dirs`)?
111
111
 
112
- `read_dirs` / `write_dirs` 仍然很有价值,但它们配置在 `.minds/team.yaml` 中,在引导期间可能不存在。专用的 `team_mgmt` 工具集:
112
+ `read_dirs` / `write_dirs` 仍然很有价值,但它们配置在 `.minds/team.yaml` 中,在引导期间可能不存在。专用的 `team-mgmt` 工具集:
113
113
 
114
114
  - 让团队管理者能够从"零状态"安全地创建 `.minds/team.yaml`
115
115
  - 即使成员的目录允许/拒绝列表为空,也保持作用域边界
@@ -335,7 +335,7 @@ member_defaults:
335
335
  - ws_read
336
336
  - memory
337
337
  # 默认姿态:拒绝普通成员的 `.minds/` 编辑
338
- #(团队管理应通过 `team_mgmt` 工具完成,而非通用文件工具)
338
+ #(团队管理应通过 `team-mgmt` 工具完成,而非通用文件工具)
339
339
  no_read_dirs:
340
340
  - .minds/team.yaml
341
341
  - .minds/llm.yaml
@@ -372,7 +372,7 @@ members:
372
372
  - 保持 `.minds/team.yaml` 的所有权严格;只有团队管理者应该能够编辑它
373
373
  - 避免在 `team.yaml` 中重复内置约束:
374
374
  - `*.tsk/**`(封装的 Taskdocs)对所有通用文件工具被硬性拒绝
375
- - `.minds/**` 对通用文件工具被硬性拒绝;只有专用的 `team_mgmt` 工具集可以访问它
375
+ - `.minds/**` 对通用文件工具被硬性拒绝;只有专用的 `team-mgmt` 工具集可以访问它
376
376
  - 只有当你需要额外的显式性时才将这些放入 `no_*`;无论如何都会强制执行
377
377
 
378
378
  ## 管理 `.minds/team/<member>/*.md`(智能体心智)
@@ -406,8 +406,8 @@ members:
406
406
 
407
407
  初始引导的首选行为:
408
408
 
409
- - 影子成员 `fuxi` 实例应该获得 `team_mgmt`(和手册工具),而不是广泛的 `ws_mod`
410
- - 影子成员 `pangu` 实例应该获得广泛的 rtws 工具集(例如 `ws_read`、`ws_mod`、`os`),但不获得 `team_mgmt`
409
+ - 影子成员 `fuxi` 实例应该获得 `team-mgmt`(和手册工具),而不是广泛的 `ws_mod`
410
+ - 影子成员 `pangu` 实例应该获得广泛的 rtws 工具集(例如 `ws_read`、`ws_mod`、`os`),但不获得 `team-mgmt`
411
411
  - 在创建 `.minds/team.yaml` 后,团队定义成为事实来源
412
412
 
413
413
  这避免了需要授予完整的 rtws 访问权限来配置团队。
@@ -416,7 +416,7 @@ members:
416
416
 
417
417
  - **"缺少必需的 provider/model"**:确保 `.minds/team.yaml` 有 `member_defaults.provider` 和 `member_defaults.model`
418
418
  - **找不到提供商**:确保 `.minds/team.yaml` 的 `provider` 键存在于合并的提供商配置中(`dominds/main/llm/defaults.yaml` + `.minds/llm.yaml`)
419
- - **编辑 `.minds/` 时访问被拒绝**:通用文件工具的预期行为;使用 `team_mgmt` 工具
419
+ - **编辑 `.minds/` 时访问被拒绝**:通用文件工具的预期行为;使用 `team-mgmt` 工具
420
420
  - **MCP 工具在工具视图中不可见**:
421
421
  - 确认 `.minds/mcp.yaml` 存在且有效
422
422
  - 打开**问题**并查找 MCP 相关错误
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildNoToolsNotice = buildNoToolsNotice;
4
+ exports.buildShellPolicyPrompt = buildShellPolicyPrompt;
5
+ exports.buildMemorySystemPrompt = buildMemorySystemPrompt;
6
+ exports.buildIntrinsicToolUsageText = buildIntrinsicToolUsageText;
7
+ const minds_i18n_1 = require("./minds-i18n");
8
+ function buildNoToolsNotice(language) {
9
+ return language === 'zh'
10
+ ? '无工具:不能调用任何工具,也不能访问 rtws / 文件 / 浏览器 / shell。'
11
+ : 'No tools: do not call any tools, and do not access the rtws, files, browser, or shell.';
12
+ }
13
+ function buildShellPolicyPrompt(ctx) {
14
+ const { language, agentIsShellSpecialist, agentHasShellTools, agentHasReadonlyShell, shellSpecialistMemberIds, } = ctx;
15
+ const title = language === 'zh' ? '### Shell 执行策略(重要)' : '### Shell Execution Policy (Important)';
16
+ const devopsScriptPolicy = language === 'zh'
17
+ ? 'DevOps 场景:忌讳临时脚本。不要用临时脚本完成工作;如需工具脚本,请与队友和人类讨论并在 rtws 中正式设计/命名/规范化后使用。'
18
+ : 'DevOps context: ad-hoc temp scripts are a taboo. Do not rely on temp scripts; if a tool script is needed, align with teammates and the human and formalize it in the rtws before use.';
19
+ const shellSpecialists = shellSpecialistMemberIds.length > 0
20
+ ? shellSpecialistMemberIds.map((id) => `@${id}`).join(', ')
21
+ : language === 'zh'
22
+ ? '(未配置 shell 专员)'
23
+ : '(no shell specialists configured)';
24
+ if (agentIsShellSpecialist && agentHasShellTools) {
25
+ const body = language === 'zh'
26
+ ? [
27
+ '你是本队的 shell 专员,具备 shell 执行能力(高风险)。使用前必须先做风险识别与最小化:',
28
+ '- 说明目的、预期输出/验证方式、预期工作目录与影响面。',
29
+ '- 优先选择只读命令;写入/删除/网络/权限相关操作必须解释理由与安全边界。',
30
+ '- 如果不确定命令后果,先提出更安全的替代方案或向人类/队友确认。',
31
+ '',
32
+ '当队友请求你执行命令时:请先复述你将执行的命令与风险边界,再执行,并按结构化格式回传 command/exit_code/stdout/stderr。',
33
+ '',
34
+ `本队 shell 专员列表:${shellSpecialists}`,
35
+ ].join('\n')
36
+ : [
37
+ 'You are a designated shell specialist and have shell execution capability (high-risk). Before using it, do risk identification and minimize blast radius:',
38
+ '- State intent, expected output/verification, expected working directory, and scope of impact.',
39
+ '- Prefer read-only commands; for writes/deletes/network/privilege-related actions, justify and state safety boundaries.',
40
+ '- If unsure about consequences, propose a safer alternative or confirm with a human/teammate first.',
41
+ '',
42
+ 'When teammates ask you to run commands: restate the exact command and guardrails, then execute, and report back with a structured receipt: command/exit_code/stdout/stderr.',
43
+ '',
44
+ `Shell specialists in this team: ${shellSpecialists}`,
45
+ '',
46
+ devopsScriptPolicy,
47
+ ].join('\n');
48
+ return `${title}\n\n${body}`.trim();
49
+ }
50
+ if (agentIsShellSpecialist && !agentHasShellTools) {
51
+ const body = language === 'zh'
52
+ ? [
53
+ '你被配置为 shell 专员,但当前没有可用的 shell 工具(团队配置错误)。',
54
+ '在未修复配置前:不要声称自己执行过命令;如需验证,请让人类修复 team.yaml 或把 shell 能力授予正确的成员。',
55
+ '',
56
+ `本队 shell 专员列表:${shellSpecialists}`,
57
+ ].join('\n')
58
+ : [
59
+ 'You are configured as a shell specialist, but you do not currently have shell tools available (team configuration error).',
60
+ 'Until it is fixed: do not claim you ran any command; ask a human to fix team.yaml or grant shell tools to the correct specialist member.',
61
+ '',
62
+ `Shell specialists in this team: ${shellSpecialists}`,
63
+ '',
64
+ devopsScriptPolicy,
65
+ ].join('\n');
66
+ return `${title}\n\n${body}`.trim();
67
+ }
68
+ const body = language === 'zh'
69
+ ? agentHasReadonlyShell
70
+ ? [
71
+ '你不具备高权限 shell 工具(shell_cmd/stop_daemon/get_daemon_output)。',
72
+ '你已被明确授权使用 `readonly_shell` 自行执行只读命令(仅允许白名单命令前缀):请直接调用,不要去寻找 shell 专员代跑。',
73
+ '',
74
+ '当你需要的命令不在白名单内,或需要写入/删除/网络/长时间运行/进程管理等高风险能力时:再转交给具备 shell 工具的专员队友,并提供充分理由与可审查的命令提案:',
75
+ '- 你要达成的目标(why)',
76
+ '- 建议命令(what)+ 预期工作目录(cwd)+ 预期输出/验证方式(how to verify)',
77
+ '- 风险评估与安全边界(risk & guardrails)',
78
+ `可转交的 shell 专员队友:${shellSpecialists}`,
79
+ '',
80
+ devopsScriptPolicy,
81
+ '',
82
+ '重要:如果你打算让队友执行命令,请在同一条消息里给出完整的 tellask 诉请块(以第 0 列开头的 `!?@<shell-specialist>` 行),不要只说“我会请某人运行”。',
83
+ '重要:在你看到 shell 专员的回执(command/exit_code/stdout/stderr)之前,不要声称“已运行/已通过/无错”。',
84
+ ].join('\n')
85
+ : [
86
+ '你不具备 shell 工具(本环境仅 shell 专员可执行 shell):不要尝试“编造/假设”命令输出,也不要要求系统直接执行。',
87
+ '当你确实需要 shell 执行时:请转交给具备 shell 能力的专员队友,并提供充分理由与可审查的命令提案:',
88
+ '- 你要达成的目标(why)',
89
+ '- 建议命令(what)+ 预期工作目录(cwd)+ 预期输出/验证方式(how to verify)',
90
+ '- 风险评估与安全边界(risk & guardrails)',
91
+ `可转交的 shell 专员队友:${shellSpecialists}`,
92
+ '',
93
+ devopsScriptPolicy,
94
+ '',
95
+ '重要:如果你打算让队友执行命令,请在同一条消息里给出完整的 tellask 诉请块(以第 0 列开头的 `!?@<shell-specialist>` 行),不要只说“我会请某人运行”。',
96
+ '重要:在你看到 shell 专员的回执(command/exit_code/stdout/stderr)之前,不要声称“已运行/已通过/无错”。',
97
+ ].join('\n')
98
+ : agentHasReadonlyShell
99
+ ? [
100
+ 'You do not have high-risk shell tools (shell_cmd/stop_daemon/get_daemon_output).',
101
+ 'You are explicitly authorized to use `readonly_shell` yourself for read-only inspection via its small allowlist. Call it directly; do not go looking for a shell specialist to run it for you.',
102
+ '',
103
+ 'When the command you need is not in the allowlist, or you need high-risk capabilities like writes/deletes/network/long-running jobs/process management: delegate to a shell specialist teammate with a justified, reviewable proposal:',
104
+ '- Goal (why)',
105
+ '- Proposed command (what) + expected working directory (cwd) + expected output/verification (how to verify)',
106
+ '- Risk assessment and guardrails (risk & guardrails)',
107
+ '',
108
+ `Shell specialist teammates: ${shellSpecialists}`,
109
+ '',
110
+ devopsScriptPolicy,
111
+ '',
112
+ 'Important: if you intend to delegate, include the full tellask block (a column-0 `!?@<shell-specialist>` line) in the same message; do not just say “I will ask someone to run it”.',
113
+ 'Important: do not claim “ran/passed/no errors” until you see the shell specialist’s receipt (command/exit_code/stdout/stderr).',
114
+ ].join('\n')
115
+ : [
116
+ 'You do not have shell tools configured (shell execution is restricted to designated specialists): do not fabricate/assume command output, and do not ask the system to execute commands directly.',
117
+ 'When you truly need shell execution, delegate to a shell specialist teammate with a justified, reviewable proposal:',
118
+ '- Goal (why)',
119
+ '- Proposed command (what) + expected working directory (cwd) + expected output/verification (how to verify)',
120
+ '- Risk assessment and guardrails (risk & guardrails)',
121
+ '',
122
+ `Shell specialist teammates: ${shellSpecialists}`,
123
+ '',
124
+ devopsScriptPolicy,
125
+ '',
126
+ 'Important: if you intend to delegate, include the full tellask block (a column-0 `!?@<shell-specialist>` line) in the same message; do not just say “I will ask someone to run it”.',
127
+ 'Important: do not claim “ran/passed/no errors” until you see the shell specialist’s receipt (command/exit_code/stdout/stderr).',
128
+ ].join('\n');
129
+ return `${title}\n\n${body}`.trim();
130
+ }
131
+ function buildMemorySystemPrompt(ctx) {
132
+ const { language } = ctx;
133
+ const title = language === 'zh' ? '### 记忆系统(重要)' : '### Memory System (Important)';
134
+ if (language === 'zh') {
135
+ const teamMemoryLine = '- 团队记忆:稳定的团队约定/工程规约(跨任务共享)。';
136
+ const personalMemoryLine = '- 个人记忆:稳定的个人习惯/偏好与职责域知识;可维护你职责范围内的“rtws 索引”(关键文档/代码的准确路径 + 必要要点),以减少重复读文件;不要记录具体任务状态。';
137
+ const body = [
138
+ '你的聊天记录与工具输出是临时信息:会快速累积、很快过时,并增加你的认知负担。在同一轮对话中,除了 `clear_mind` 以外你无法真正丢弃这些历史。',
139
+ '`clear_mind` 会开启新一程对话(保留差遣牒、提醒项与记忆层),从而卸掉这部分认知负载并继续推进。因此你必须先把关键信息提炼到高价值载体:',
140
+ '- 差遣牒(Taskdoc,`*.tsk/`):全队共享的任务契约(goals/constraints/progress);保持足够短,每轮都应可通读。',
141
+ `- 更新差遣牒的任意分段时:每次调用会替换该分段全文;你必须先对照“上下文中注入的当前内容”做合并/压缩;禁止覆盖/抹掉他人条目;自己负责维护的条目必须标注责任人(例如 \`- [owner:@${ctx.agentId}] ...\` 或用 \`### @${ctx.agentId}\` 分块)。`,
142
+ '- 其中 `progress` 是全队共享公告牌:用于“阶段性进度快照”(关键决策/当前状态/下一步),不是流水账。',
143
+ '- 重要:差遣牒内容会被系统以内联形式注入到上下文中(本轮生成视角下即为最新)。需要回顾时请直接基于上下文里的差遣牒内容回顾与决策,不要试图用通用文件工具读取 `*.tsk/` 下的文件(会被拒绝)。',
144
+ '- 约定:`constraints` 尽量只写任务特有的硬要求。系统提示/工具文档里已明确且由系统强制执行的通用规则(例如 `*.tsk/` 封装禁止通用文件工具)无需重复写入 `constraints.md`。',
145
+ '- 提醒项(工作集):当前对话的高频工作记录/关键细节(偏私有,不作为全队公告);保持少量(常见 1–3 条),优先 `update_reminder` 压缩/合并,不再需要就 `delete_reminder`。',
146
+ teamMemoryLine,
147
+ personalMemoryLine,
148
+ '',
149
+ ...(ctx.isSubdialog
150
+ ? [
151
+ `你当前处于支线对话:此处不允许 \`change_mind\`。当你判断需要更新差遣牒(尤其是 progress 公告牌)时,请在合适时机直接诉请差遣牒维护人 \`@${ctx.taskdocMaintainerId}\` 执行更新,并给出你已合并好的“新全文/替换稿”(用于替换对应章节全文)。不要声称已更新,除非看到回执。`,
152
+ ]
153
+ : [
154
+ '你当前处于主线对话:你负责综合维护全队共享差遣牒(尤其是 progress 公告牌)。当队友/支线对话提出更新建议时,及时合并、压缩并保持清晰。',
155
+ ]),
156
+ ...(ctx.agentHasTeamMemoryTools
157
+ ? [
158
+ '提示:你具备团队记忆工具(`add_team_memory` / `replace_team_memory` / `drop_team_memory` / `clear_team_memory`),可在必要时维护团队记忆(谨慎、少量、只写稳定约定)。',
159
+ ]
160
+ : []),
161
+ ...(ctx.agentHasPersonalMemoryTools
162
+ ? [
163
+ '提示:你具备个人记忆工具(`add_memory` / `replace_memory` / `drop_memory` / `clear_memory`)。目标:维护你职责域的“rtws 索引”(关键文档/代码的准确路径 + 最小必要要点,如入口文件/关键符号/约定),让你在职责范围内尽量做到“0 次 ripgrep 就能开始干活”;一旦你修改了相关文件或发现记忆有过期/冲突,必须立刻用 `replace_memory` 把对应条目更新为最新事实。',
164
+ ]
165
+ : []),
166
+ ...(ctx.isSubdialog
167
+ ? [
168
+ `工作流:先做事 → 再提炼(\`update_reminder\`;必要时整理差遣牒更新提案并诉请 \`@${ctx.taskdocMaintainerId}\` 合并写入)→ 然后 \`clear_mind\` 清空噪音。`,
169
+ ]
170
+ : [
171
+ '工作流:先做事 → 再提炼(`update_reminder` + `change_mind(progress)`)→ 然后 `clear_mind` 清空噪音。',
172
+ ]),
173
+ '当 context health 变黄/红:立刻停止继续大实现/大阅读;先提炼,再 clear。',
174
+ '不要把长日志/大段 tool output 直接塞进差遣牒;差遣牒只写结论+下一步;细节只保留必要摘录放提醒项。',
175
+ ].join('\n');
176
+ return `${title}\n\n${body}`.trim();
177
+ }
178
+ const teamMemoryLine = '- Team memory: stable shared conventions (cross-task).';
179
+ const personalMemoryLine = '- Personal memory: stable personal habits/preferences and responsibility-scope knowledge. Maintain a compact responsibility-area rtws index (exact key doc/code paths + minimal key facts) to reduce repeat file reads; do not store per-task state.';
180
+ const body = [
181
+ 'Dialog history and tool outputs are temporary: they accumulate quickly, become stale, and increase cognitive load. Within a course, you cannot truly drop that history except via `clear_mind`.',
182
+ '`clear_mind` starts a new course while preserving Taskdoc, reminders, and memory layers. Therefore, before clearing, distill key information into durable layers:',
183
+ '- Taskdoc (`*.tsk/`): team-shared task contract (goals/constraints/progress). Keep it small enough to read every course.',
184
+ `- When updating any Taskdoc section: each call replaces the entire section; always start from the current injected content and merge/compress; do not overwrite other contributors; add an explicit owner tag for entries you maintain (e.g., \`- [owner:@${ctx.agentId}] ...\` or a \`### @${ctx.agentId}\` block).`,
185
+ '- Taskdoc `progress` is the team’s shared bulletin board: distilled milestone snapshots (key decisions/current status/next steps), not raw logs.',
186
+ '- Important: the Taskdoc content is injected inline into the context (the latest as of this generation). Review the injected Taskdoc instead of trying to read files under `*.tsk/` via general file tools (they will be rejected).',
187
+ '- Convention: keep Taskdoc `constraints` focused on task-specific requirements. Do not duplicate global, system-enforced rules already stated in system prompt/tool docs (e.g. `.tsk/` encapsulation bans general file tools).',
188
+ '- Reminders (working set): your high-frequency per-dialog worklog + critical details (not a team bulletin board); keep it small (often 1–3 items), prefer `update_reminder` to compress/merge; delete when obsolete.',
189
+ teamMemoryLine,
190
+ personalMemoryLine,
191
+ '',
192
+ ...(ctx.isSubdialog
193
+ ? [
194
+ `You are currently in a subdialog: \`change_mind\` is not allowed here. When Taskdoc should be updated (especially the shared progress bulletin board), tellask the Taskdoc maintainer \`@${ctx.taskdocMaintainerId}\` with a fully merged replacement draft (full-section replacement). Do not claim it is updated until you see a receipt.`,
195
+ ]
196
+ : [
197
+ 'You are currently in the main dialog: you are responsible for keeping the team-shared Taskdoc coherent and up to date (especially the progress bulletin board). Merge proposals from teammates/subdialogs promptly and keep it concise.',
198
+ ]),
199
+ ...(ctx.agentHasTeamMemoryTools
200
+ ? [
201
+ 'Hint: you have team-memory tools (`add_team_memory` / `replace_team_memory` / `drop_team_memory` / `clear_team_memory`) and may maintain team memory when it is truly stable and worth sharing.',
202
+ ]
203
+ : []),
204
+ ...(ctx.agentHasPersonalMemoryTools
205
+ ? [
206
+ 'Hint: you have personal-memory tools (`add_memory` / `replace_memory` / `drop_memory` / `clear_memory`). Goal: maintain a compact responsibility-area rtws index (exact key doc/code paths + minimal key facts) so you can start work with 0 ripgrep within your scope. If you changed those files or detect staleness/conflicts, immediately `replace_memory` to keep it accurate.',
207
+ ]
208
+ : []),
209
+ ...(ctx.isSubdialog
210
+ ? [
211
+ `Workflow: do work → distill (\`update_reminder\`; when Taskdoc needs updates, draft a merged replacement and ask \`@${ctx.taskdocMaintainerId}\`) → then \`clear_mind\` to drop noise.`,
212
+ ]
213
+ : [
214
+ 'Workflow: do work → distill (`update_reminder` + `change_mind(progress)`) → then `clear_mind` to drop noise.',
215
+ ]),
216
+ 'When context health turns yellow/red: treat it as a hard stop; distill first, then clear.',
217
+ 'Do not paste long logs/tool outputs into Taskdoc; Taskdoc should record decisions + next steps; keep only essential excerpts in reminders.',
218
+ ].join('\n');
219
+ return `${title}\n\n${body}`.trim();
220
+ }
221
+ function buildFuncToolUsageText(language, funcTools) {
222
+ if (funcTools.length === 0) {
223
+ return language === 'zh' ? '没有可用的函数工具。' : 'No function tools available.';
224
+ }
225
+ return funcTools
226
+ .map((tool) => {
227
+ const schema = tool.parameters;
228
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
229
+ const requiredValue = schema['required'];
230
+ const required = Array.isArray(requiredValue) && requiredValue.every((v) => typeof v === 'string')
231
+ ? requiredValue
232
+ : [];
233
+ const req = required.length > 0 ? required.join(', ') : (0, minds_i18n_1.noneRequiredFieldsText)(language);
234
+ const propsValue = schema['properties'];
235
+ const propsRecord = isRecord(propsValue) ? propsValue : {};
236
+ const props = Object.entries(propsRecord)
237
+ .map(([k, v]) => {
238
+ const desc = isRecord(v) && 'description' in v && typeof v.description === 'string'
239
+ ? v.description
240
+ : 'parameter';
241
+ return `- ${k}: ${desc}`;
242
+ })
243
+ .join('\n');
244
+ const labels = (0, minds_i18n_1.funcToolUsageLabels)(language);
245
+ let toolDesc = tool.descriptionI18n
246
+ ? (tool.descriptionI18n[language] ?? tool.descriptionI18n.en ?? tool.description)
247
+ : (tool.description ?? '');
248
+ if (tool.name === 'readonly_shell') {
249
+ toolDesc =
250
+ language === 'zh'
251
+ ? '只读白名单 shell。node/python 仅允许版本探针,脚本执行一律拒绝。'
252
+ : 'Read-only allowlist shell. Node/python version probes only; scripts are rejected.';
253
+ }
254
+ return `#### ${labels.toolLabel}: ${tool.name}\n\n${toolDesc}\n\n- ${labels.invocationLabel}: ${labels.invocationBody}\n- ${labels.requiredLabel}: ${req}\n- ${labels.parametersLabel}:\n${props}`.trim();
255
+ })
256
+ .join('\n\n');
257
+ }
258
+ function buildIntrinsicToolUsageText(language, funcTools) {
259
+ const usage = buildFuncToolUsageText(language, funcTools).trim();
260
+ if (usage === '')
261
+ return language === 'zh' ? '(无)' : '(none)';
262
+ return usage;
263
+ }
@@ -45,9 +45,9 @@ exports.handleApiRoute = handleApiRoute;
45
45
  const promises_1 = __importDefault(require("fs/promises"));
46
46
  const path = __importStar(require("path"));
47
47
  const agent_priming_1 = require("../agent-priming");
48
- const dialog_run_state_1 = require("../dialog-run-state");
49
48
  const dialog_1 = require("../dialog");
50
49
  const dialog_global_registry_1 = require("../dialog-global-registry");
50
+ const dialog_run_state_1 = require("../dialog-run-state");
51
51
  const log_1 = require("../log");
52
52
  const persistence_1 = require("../persistence");
53
53
  const diligence_1 = require("../shared/diligence");
@@ -36,8 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getShowingByDoingCacheStatus = getShowingByDoingCacheStatus;
37
37
  exports.scheduleShowingByDoingForNewDialog = scheduleShowingByDoingForNewDialog;
38
38
  const dialog_run_state_1 = require("./dialog-run-state");
39
+ const client_1 = require("./llm/client");
39
40
  const driver_1 = require("./llm/driver");
41
+ const registry_1 = require("./llm/gen/registry");
40
42
  const log_1 = require("./log");
43
+ const load_1 = require("./minds/load");
41
44
  const runtime_language_1 = require("./shared/runtime-language");
42
45
  const id_1 = require("./shared/utils/id");
43
46
  const inter_dialog_format_1 = require("./shared/utils/inter-dialog-format");
@@ -555,11 +558,29 @@ async function generatePrimingNoteViaMainlineAgent(options) {
555
558
  const { dlg, snapshotCmd, snapshotText, fbrResponses, shellPolicy, fbrEffort } = options;
556
559
  const language = (0, runtime_language_1.getWorkLanguage)();
557
560
  try {
558
- // Use the normal dialog driver (streaming/non-streaming selection, retries, etc.) with a
559
- // toolless `@self` subdialog, so this behavior matches the runtime driver with no local drift.
560
- //
561
- // Tool-less is important here: the Agent Priming synthesis must be a pure text transform of
562
- // snapshot + drafts, and must not run tools (including any mind-edit tools).
561
+ const minds = await (0, load_1.loadAgentMinds)(dlg.agentId, dlg);
562
+ const team = minds.team;
563
+ const agent = minds.agent;
564
+ const systemPrompt = minds.systemPrompt;
565
+ const provider = agent.provider ?? team.memberDefaults.provider;
566
+ const model = agent.model ?? team.memberDefaults.model;
567
+ if (!provider || !model) {
568
+ throw new Error(`Missing provider/model for agent '${dlg.agentId}'`);
569
+ }
570
+ const llmCfg = await client_1.LlmConfig.load();
571
+ const providerCfg = llmCfg.getProvider(provider);
572
+ if (!providerCfg) {
573
+ throw new Error(`Provider configuration not found: '${provider}'`);
574
+ }
575
+ const llmGen = (0, registry_1.getLlmGenerator)(providerCfg.apiType);
576
+ if (!llmGen) {
577
+ throw new Error(`LLM generator not found for apiType='${providerCfg.apiType}'`);
578
+ }
579
+ // Force non-streaming for this synthetic summary generation.
580
+ const agentForGen = Object.create(agent);
581
+ agentForGen.streaming = false;
582
+ // Intentionally pass zero tools: we want a pure text synthesis and must avoid accidental
583
+ // `clear_mind` / `change_mind` calls during dialog creation.
563
584
  const prompt = formatPrimingSynthesisPrompt({
564
585
  language,
565
586
  snapshotCmd,
@@ -568,35 +589,17 @@ async function generatePrimingNoteViaMainlineAgent(options) {
568
589
  fbrDrafts: fbrResponses,
569
590
  shellPolicy,
570
591
  });
571
- const tellaskHead = '@self (agent priming synthesis)';
572
- const tellaskBody = prompt;
573
- const sub = await dlg.createSubDialog(dlg.agentId, tellaskHead, tellaskBody, {
574
- originMemberId: dlg.agentId,
575
- callerDialogId: dlg.id.selfId,
576
- callId: (0, id_1.generateShortId)(),
577
- collectiveTargets: [dlg.agentId],
578
- });
579
- const initPrompt = (0, inter_dialog_format_1.formatAssignmentFromSupdialog)({
580
- fromAgentId: dlg.agentId,
581
- toAgentId: sub.agentId,
582
- tellaskHead,
583
- tellaskBody,
584
- language,
585
- collectiveTargets: [dlg.agentId],
586
- });
587
- await (0, driver_1.driveDialogStream)(sub, { content: initPrompt, msgId: (0, id_1.generateShortId)(), grammar: 'markdown' }, true);
588
- const saying = extractLastAssistantSaying(sub.msgs).trim();
589
- if (saying) {
592
+ const ctxMsgs = [{ type: 'environment_msg', role: 'user', content: prompt }];
593
+ const result = await llmGen.genMoreMessages(providerCfg, agentForGen, systemPrompt, [], ctxMsgs, dlg.activeGenSeq, undefined);
594
+ const saying = result.messages
595
+ .filter((m) => m.type === 'saying_msg')
596
+ .map((m) => m.content)
597
+ .join('\n')
598
+ .trim();
599
+ if (saying)
590
600
  return saying;
591
- }
592
601
  }
593
602
  catch (err) {
594
- const message = err instanceof Error ? err.message : String(err);
595
- // Do not silently fall back for known severe configuration errors (e.g. Codex requires
596
- // streaming=true).
597
- if (message.includes('apiType=codex requires streaming=true')) {
598
- throw err;
599
- }
600
603
  log_1.log.warn('Failed to generate Agent Priming note via mainline agent (best-effort)', err, {
601
604
  dialogId: dlg.id.valueOf(),
602
605
  });
@@ -0,0 +1,3 @@
1
+ # Prompt Templates
2
+
3
+ This directory stores bilingual system prompt templates (Snippets).
@@ -1,4 +1,4 @@
1
- import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-CUGcPcXL.js";
1
+ import { aV as isObjectLike, br as baseGetTag, aE as isArray, aT as Symbol$1, bs as arrayLikeKeys, bt as baseKeys, aD as isArrayLike, bu as memoize, bv as isArguments, bw as MapCache, bm as eq, bx as Uint8Array, aW as getTag, a$ as isBuffer, b2 as Stack, by as isTypedArray, aZ as isObject, bz as isLength, bp as isIndex, aF as identity, bn as baseFor, bA as Set } from "./index-B2yxi4rE.js";
2
2
  var symbolTag$1 = "[object Symbol]";
3
3
  function isSymbol(value) {
4
4
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$1;
@@ -658,4 +658,4 @@ export {
658
658
  hasIn as x,
659
659
  toString as y
660
660
  };
661
- //# sourceMappingURL=_baseUniq-D14YtKr6.js.map
661
+ //# sourceMappingURL=_baseUniq-rwtkYcxR.js.map