dominds 1.8.11 → 1.8.12

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 (157) hide show
  1. package/dist/mcp/config.d.ts +11 -0
  2. package/dist/mcp/config.js +17 -0
  3. package/dist/mcp/supervisor.js +5 -0
  4. package/dist/tools/builtins.js +17 -4
  5. package/dist/tools/manual/render.js +6 -2
  6. package/dist/tools/manual/spec.d.ts +32 -2
  7. package/dist/tools/manual/spec.js +104 -14
  8. package/dist/tools/prompts/team_mgmt/en/index.md +37 -0
  9. package/dist/tools/prompts/team_mgmt/zh/index.md +37 -0
  10. package/dist/tools/team_mgmt.js +4 -7
  11. package/dist/tools/txt.js +8 -8
  12. package/package.json +1 -1
  13. package/webapp/dist/assets/{_basePickBy-DG1QTE8n.js → _basePickBy-p_FLYxUB.js} +3 -3
  14. package/webapp/dist/assets/_basePickBy-p_FLYxUB.js.map +1 -0
  15. package/webapp/dist/assets/{_baseUniq-D2LbmGtl.js → _baseUniq-DOyVMmph.js} +2 -2
  16. package/webapp/dist/assets/_baseUniq-DOyVMmph.js.map +1 -0
  17. package/webapp/dist/assets/{arc-C9t8aGIF.js → arc-CGiesLhn.js} +2 -2
  18. package/webapp/dist/assets/arc-CGiesLhn.js.map +1 -0
  19. package/webapp/dist/assets/{architectureDiagram-VXUJARFQ-JbonIB12.js → architectureDiagram-2XIMDMQ5-BHAsFH7p.js} +26 -8
  20. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-BHAsFH7p.js.map +1 -0
  21. package/webapp/dist/assets/{blockDiagram-VD42YOAC-CcipRrJd.js → blockDiagram-WCTKOSBZ-D5twe3l4.js} +187 -170
  22. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-D5twe3l4.js.map +1 -0
  23. package/webapp/dist/assets/{c4Diagram-YG6GDRKO-yqrIM2R1.js → c4Diagram-IC4MRINW-BlYpIPtB.js} +4 -4
  24. package/webapp/dist/assets/c4Diagram-IC4MRINW-BlYpIPtB.js.map +1 -0
  25. package/webapp/dist/assets/{channel-DIBQDm_A.js → channel-B17KbYat.js} +2 -2
  26. package/webapp/dist/assets/channel-B17KbYat.js.map +1 -0
  27. package/webapp/dist/assets/{chunk-4BX2VUAB-DZXxZ8yl.js → chunk-4BX2VUAB-lrScLXR8.js} +2 -2
  28. package/webapp/dist/assets/chunk-4BX2VUAB-lrScLXR8.js.map +1 -0
  29. package/webapp/dist/assets/{chunk-55IACEB6-BUyghx2N.js → chunk-55IACEB6-gQXchNSL.js} +2 -2
  30. package/webapp/dist/assets/chunk-55IACEB6-gQXchNSL.js.map +1 -0
  31. package/webapp/dist/assets/{chunk-FMBD7UC4-B4jkxTOS.js → chunk-FMBD7UC4-DNrvbONw.js} +2 -2
  32. package/webapp/dist/assets/chunk-FMBD7UC4-DNrvbONw.js.map +1 -0
  33. package/webapp/dist/assets/{chunk-TZMSLE5B-CQ77jWEa.js → chunk-JSJVCQXG-Bl5wBjOA.js} +14 -6
  34. package/webapp/dist/assets/chunk-JSJVCQXG-Bl5wBjOA.js.map +1 -0
  35. package/webapp/dist/assets/{chunk-QN33PNHL-Da7wDGy5.js → chunk-KX2RTZJC-BiyIObsM.js} +2 -2
  36. package/webapp/dist/assets/chunk-KX2RTZJC-BiyIObsM.js.map +1 -0
  37. package/webapp/dist/assets/{chunk-DI55MBZ5-WXYYUPwz.js → chunk-NQ4KR5QH-D06lLk1n.js} +9 -7
  38. package/webapp/dist/assets/chunk-NQ4KR5QH-D06lLk1n.js.map +1 -0
  39. package/webapp/dist/assets/{chunk-QZHKN3VN-tIIrQvRJ.js → chunk-QZHKN3VN-BWfa3ZSp.js} +2 -2
  40. package/webapp/dist/assets/chunk-QZHKN3VN-BWfa3ZSp.js.map +1 -0
  41. package/webapp/dist/assets/{chunk-B4BG7PRW-wDPTThCF.js → chunk-WL4C6EOR-B88KZXwP.js} +171 -121
  42. package/webapp/dist/assets/chunk-WL4C6EOR-B88KZXwP.js.map +1 -0
  43. package/webapp/dist/assets/{classDiagram-2ON5EDUG-C7QbOVXO.js → classDiagram-VBA2DB6C-Do2CJG-b.js} +7 -6
  44. package/webapp/dist/assets/classDiagram-VBA2DB6C-Do2CJG-b.js.map +1 -0
  45. package/webapp/dist/assets/{classDiagram-v2-WZHVMYZB-C7QbOVXO.js → classDiagram-v2-RAHNMMFH-Do2CJG-b.js} +7 -6
  46. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-Do2CJG-b.js.map +1 -0
  47. package/webapp/dist/assets/{clone-CfEeXMBD.js → clone-2_rmaZjp.js} +2 -2
  48. package/webapp/dist/assets/clone-2_rmaZjp.js.map +1 -0
  49. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-DYUD07XC.js → cose-bilkent-S5V4N54A-CKqz88LV.js} +2 -2
  50. package/webapp/dist/assets/cose-bilkent-S5V4N54A-CKqz88LV.js.map +1 -0
  51. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  52. package/webapp/dist/assets/{dagre-6UL2VRFP-ByP6tuKY.js → dagre-KLK3FWXG-CDPJqGYU.js} +7 -7
  53. package/webapp/dist/assets/dagre-KLK3FWXG-CDPJqGYU.js.map +1 -0
  54. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  55. package/webapp/dist/assets/{diagram-PSM6KHXK-Cy8Pv31D.js → diagram-E7M64L7V-6hBHJ24w.js} +10 -10
  56. package/webapp/dist/assets/diagram-E7M64L7V-6hBHJ24w.js.map +1 -0
  57. package/webapp/dist/assets/{diagram-QEK2KX5R-DSIBvajB.js → diagram-IFDJBPK2-CcHFXWUK.js} +9 -8
  58. package/webapp/dist/assets/diagram-IFDJBPK2-CcHFXWUK.js.map +1 -0
  59. package/webapp/dist/assets/{diagram-S2PKOQOG-BWeoKMM5.js → diagram-P4PSJMXO-BUnW3ZXQ.js} +8 -8
  60. package/webapp/dist/assets/diagram-P4PSJMXO-BUnW3ZXQ.js.map +1 -0
  61. package/webapp/dist/assets/{erDiagram-Q2GNP2WA-WyM4XxG5.js → erDiagram-INFDFZHY-DPXabBgU.js} +96 -75
  62. package/webapp/dist/assets/erDiagram-INFDFZHY-DPXabBgU.js.map +1 -0
  63. package/webapp/dist/assets/{flowDiagram-NV44I4VS-BPcojI0F.js → flowDiagram-PKNHOUZH-BvWvbd03.js} +98 -81
  64. package/webapp/dist/assets/flowDiagram-PKNHOUZH-BvWvbd03.js.map +1 -0
  65. package/webapp/dist/assets/{ganttDiagram-JELNMOA3-BZ_OjxIx.js → ganttDiagram-A5KZAMGK-vkN5mDwT.js} +28 -3
  66. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-vkN5mDwT.js.map +1 -0
  67. package/webapp/dist/assets/{gitGraphDiagram-V2S2FVAM-9EhnjL-y.js → gitGraphDiagram-K3NZZRJ6-LW5Kz-rM.js} +38 -46
  68. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-LW5Kz-rM.js.map +1 -0
  69. package/webapp/dist/assets/graph-B2Hdw72q.js +782 -0
  70. package/webapp/dist/assets/graph-B2Hdw72q.js.map +1 -0
  71. package/webapp/dist/assets/{index-CD5wtC_i.css → index-BPqdTDdm.css} +1 -1
  72. package/webapp/dist/assets/{index-BRgQnAkx.js → index-Dzo3pRxk.js} +1021 -1046
  73. package/webapp/dist/assets/{index-BRgQnAkx.js.map → index-Dzo3pRxk.js.map} +1 -1
  74. package/webapp/dist/assets/{infoDiagram-HS3SLOUP-ENDcix2A.js → infoDiagram-LFFYTUFH-DvIbffvQ.js} +7 -7
  75. package/webapp/dist/assets/infoDiagram-LFFYTUFH-DvIbffvQ.js.map +1 -0
  76. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  77. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-sGhcEObJ.js +966 -0
  78. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-sGhcEObJ.js.map +1 -0
  79. package/webapp/dist/assets/{journeyDiagram-XKPGCS4Q-DadnPokT.js → journeyDiagram-4ABVD52K-CpYH21tW.js} +5 -5
  80. package/webapp/dist/assets/journeyDiagram-4ABVD52K-CpYH21tW.js.map +1 -0
  81. package/webapp/dist/assets/{kanban-definition-3W4ZIXB7-BXzaQjPo.js → kanban-definition-K7BYSVSG-BiRYQ0uj.js} +5 -3
  82. package/webapp/dist/assets/kanban-definition-K7BYSVSG-BiRYQ0uj.js.map +1 -0
  83. package/webapp/dist/assets/{layout-CRhyA_vK.js → layout-okihjLBI.js} +5 -5
  84. package/webapp/dist/assets/layout-okihjLBI.js.map +1 -0
  85. package/webapp/dist/assets/{linear-BeMCt_k6.js → linear-DYaYsDyY.js} +2 -2
  86. package/webapp/dist/assets/linear-DYaYsDyY.js.map +1 -0
  87. package/webapp/dist/assets/{mindmap-definition-VGOIOE7T-DTyAPUbU.js → mindmap-definition-YRQLILUH-CSrZmIYT.js} +7 -5
  88. package/webapp/dist/assets/mindmap-definition-YRQLILUH-CSrZmIYT.js.map +1 -0
  89. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  90. package/webapp/dist/assets/{pieDiagram-ADFJNKIX-yEqBgoUh.js → pieDiagram-SKSYHLDU-DpEvc7ey.js} +8 -8
  91. package/webapp/dist/assets/pieDiagram-SKSYHLDU-DpEvc7ey.js.map +1 -0
  92. package/webapp/dist/assets/{quadrantDiagram-AYHSOK5B-DCIfL1qA.js → quadrantDiagram-337W2JSQ-A1Evs-qI.js} +3 -3
  93. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-A1Evs-qI.js.map +1 -0
  94. package/webapp/dist/assets/{requirementDiagram-UZGBJVZJ-BpGpyEPo.js → requirementDiagram-Z7DCOOCP-Da-TuLlB.js} +16 -6
  95. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-Da-TuLlB.js.map +1 -0
  96. package/webapp/dist/assets/{sankeyDiagram-TZEHDZUN-BnLvkpsc.js → sankeyDiagram-WA2Y5GQK-DH24Lrug.js} +2 -2
  97. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-DH24Lrug.js.map +1 -0
  98. package/webapp/dist/assets/{sequenceDiagram-WL72ISMW-BIRSMXkN.js → sequenceDiagram-2WXFIKYE-BayDtOQN.js} +601 -201
  99. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-BayDtOQN.js.map +1 -0
  100. package/webapp/dist/assets/{stateDiagram-FKZM4ZOC-BHl5d1jD.js → stateDiagram-RAJIS63D-C88pKwCL.js} +9 -9
  101. package/webapp/dist/assets/stateDiagram-RAJIS63D-C88pKwCL.js.map +1 -0
  102. package/webapp/dist/assets/{stateDiagram-v2-4FDKWEC3-CBk1peEJ.js → stateDiagram-v2-FVOUBMTO-BH48Boiw.js} +5 -5
  103. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-BH48Boiw.js.map +1 -0
  104. package/webapp/dist/assets/{timeline-definition-IT6M3QCI-DByp3MyR.js → timeline-definition-YZTLITO2-Co73nLWa.js} +3 -3
  105. package/webapp/dist/assets/timeline-definition-YZTLITO2-Co73nLWa.js.map +1 -0
  106. package/webapp/dist/assets/{treemap-GDKQZRPO-BiX6BP5A.js → treemap-KZPCXAKY-BZvYsHrD.js} +37 -24
  107. package/webapp/dist/assets/treemap-KZPCXAKY-BZvYsHrD.js.map +1 -0
  108. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CaNMvHKJ.js +2487 -0
  109. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CaNMvHKJ.js.map +1 -0
  110. package/webapp/dist/assets/{xychartDiagram-PRI3JC2R-DOgxhO-R.js → xychartDiagram-JWTSCODW-L1MT4IU4.js} +4 -4
  111. package/webapp/dist/assets/xychartDiagram-JWTSCODW-L1MT4IU4.js.map +1 -0
  112. package/webapp/dist/index.html +2 -2
  113. package/webapp/dist/assets/_basePickBy-DG1QTE8n.js.map +0 -1
  114. package/webapp/dist/assets/_baseUniq-D2LbmGtl.js.map +0 -1
  115. package/webapp/dist/assets/arc-C9t8aGIF.js.map +0 -1
  116. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-JbonIB12.js.map +0 -1
  117. package/webapp/dist/assets/blockDiagram-VD42YOAC-CcipRrJd.js.map +0 -1
  118. package/webapp/dist/assets/c4Diagram-YG6GDRKO-yqrIM2R1.js.map +0 -1
  119. package/webapp/dist/assets/channel-DIBQDm_A.js.map +0 -1
  120. package/webapp/dist/assets/chunk-4BX2VUAB-DZXxZ8yl.js.map +0 -1
  121. package/webapp/dist/assets/chunk-55IACEB6-BUyghx2N.js.map +0 -1
  122. package/webapp/dist/assets/chunk-B4BG7PRW-wDPTThCF.js.map +0 -1
  123. package/webapp/dist/assets/chunk-DI55MBZ5-WXYYUPwz.js.map +0 -1
  124. package/webapp/dist/assets/chunk-FMBD7UC4-B4jkxTOS.js.map +0 -1
  125. package/webapp/dist/assets/chunk-QN33PNHL-Da7wDGy5.js.map +0 -1
  126. package/webapp/dist/assets/chunk-QZHKN3VN-tIIrQvRJ.js.map +0 -1
  127. package/webapp/dist/assets/chunk-TZMSLE5B-CQ77jWEa.js.map +0 -1
  128. package/webapp/dist/assets/classDiagram-2ON5EDUG-C7QbOVXO.js.map +0 -1
  129. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-C7QbOVXO.js.map +0 -1
  130. package/webapp/dist/assets/clone-CfEeXMBD.js.map +0 -1
  131. package/webapp/dist/assets/cose-bilkent-S5V4N54A-DYUD07XC.js.map +0 -1
  132. package/webapp/dist/assets/dagre-6UL2VRFP-ByP6tuKY.js.map +0 -1
  133. package/webapp/dist/assets/diagram-PSM6KHXK-Cy8Pv31D.js.map +0 -1
  134. package/webapp/dist/assets/diagram-QEK2KX5R-DSIBvajB.js.map +0 -1
  135. package/webapp/dist/assets/diagram-S2PKOQOG-BWeoKMM5.js.map +0 -1
  136. package/webapp/dist/assets/erDiagram-Q2GNP2WA-WyM4XxG5.js.map +0 -1
  137. package/webapp/dist/assets/flowDiagram-NV44I4VS-BPcojI0F.js.map +0 -1
  138. package/webapp/dist/assets/ganttDiagram-JELNMOA3-BZ_OjxIx.js.map +0 -1
  139. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-9EhnjL-y.js.map +0 -1
  140. package/webapp/dist/assets/graph-DGSAVvxQ.js +0 -425
  141. package/webapp/dist/assets/graph-DGSAVvxQ.js.map +0 -1
  142. package/webapp/dist/assets/infoDiagram-HS3SLOUP-ENDcix2A.js.map +0 -1
  143. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-DadnPokT.js.map +0 -1
  144. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-BXzaQjPo.js.map +0 -1
  145. package/webapp/dist/assets/layout-CRhyA_vK.js.map +0 -1
  146. package/webapp/dist/assets/linear-BeMCt_k6.js.map +0 -1
  147. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-DTyAPUbU.js.map +0 -1
  148. package/webapp/dist/assets/pieDiagram-ADFJNKIX-yEqBgoUh.js.map +0 -1
  149. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-DCIfL1qA.js.map +0 -1
  150. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-BpGpyEPo.js.map +0 -1
  151. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-BnLvkpsc.js.map +0 -1
  152. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BIRSMXkN.js.map +0 -1
  153. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BHl5d1jD.js.map +0 -1
  154. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3-CBk1peEJ.js.map +0 -1
  155. package/webapp/dist/assets/timeline-definition-IT6M3QCI-DByp3MyR.js.map +0 -1
  156. package/webapp/dist/assets/treemap-GDKQZRPO-BiX6BP5A.js.map +0 -1
  157. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-DOgxhO-R.js.map +0 -1
@@ -22,6 +22,17 @@ type McpServerConfigBase = {
22
22
  blacklist: string[];
23
23
  };
24
24
  transform: ToolNameTransform[];
25
+ /**
26
+ * Optional manual metadata for this MCP server.
27
+ * When `manual.contentFile` is set, the runtime builds a ManualSpec from the
28
+ * i18n files alongside the entry point:
29
+ * - zh: <baseDir>/index.md (semantic baseline)
30
+ * - en: <baseDir>/index.en.md
31
+ * The `contentFile` value is a rtws-relative path.
32
+ */
33
+ manual?: {
34
+ contentFile?: string;
35
+ };
25
36
  };
26
37
  export type McpStdioServerConfig = McpServerConfigBase & {
27
38
  transport: 'stdio';
@@ -85,6 +85,21 @@ function parseServerConfig(serverId, value) {
85
85
  const blacklist = parseStringArrayOptional(toolsObj.blacklist, `servers.${serverId}.tools.blacklist`);
86
86
  const transformVal = obj.transform;
87
87
  const transform = transformVal === undefined ? [] : parseTransformArray(transformVal, serverId);
88
+ const manualVal = obj.manual;
89
+ const manual = manualVal === undefined
90
+ ? undefined
91
+ : (() => {
92
+ const m = asRecord(manualVal, `servers.${serverId}.manual`);
93
+ const contentFileVal = m.contentFile;
94
+ const contentFile = contentFileVal === undefined
95
+ ? undefined
96
+ : typeof contentFileVal === 'string' && contentFileVal.trim().length > 0
97
+ ? contentFileVal.trim()
98
+ : (() => {
99
+ throw new Error(`Invalid mcp.yaml: servers.${serverId}.manual.contentFile must be a non-empty string`);
100
+ })();
101
+ return contentFile !== undefined ? { contentFile } : undefined;
102
+ })();
88
103
  if (transport === 'stdio') {
89
104
  const command = obj.command;
90
105
  if (typeof command !== 'string' || !command.trim()) {
@@ -131,6 +146,7 @@ function parseServerConfig(serverId, value) {
131
146
  env,
132
147
  tools: { whitelist, blacklist },
133
148
  transform,
149
+ manual,
134
150
  };
135
151
  }
136
152
  const url = obj.url;
@@ -173,6 +189,7 @@ function parseServerConfig(serverId, value) {
173
189
  sessionId,
174
190
  tools: { whitelist, blacklist },
175
191
  transform,
192
+ manual,
176
193
  };
177
194
  }
178
195
  function parseTransformArray(value, serverId) {
@@ -47,6 +47,7 @@ const persistence_1 = require("../persistence");
47
47
  const problems_1 = require("../problems");
48
48
  const runtime_language_1 = require("../shared/runtime-language");
49
49
  const time_1 = require("../shared/utils/time");
50
+ const spec_1 = require("../tools/manual/spec");
50
51
  const registry_1 = require("../tools/registry");
51
52
  const config_1 = require("./config");
52
53
  const sdk_client_1 = require("./sdk-client");
@@ -779,12 +780,16 @@ function registerServer(state) {
779
780
  toolOwnerByName.set(t.name, { kind: 'mcp', serverId: state.serverId });
780
781
  }
781
782
  (0, registry_1.registerToolset)(state.toolsetName, state.tools);
783
+ const manualSpec = state.cfg.manual?.contentFile
784
+ ? (0, spec_1.buildMcpManualSpec)(state.cfg.manual.contentFile)
785
+ : undefined;
782
786
  (0, registry_1.setToolsetMeta)(state.toolsetName, {
783
787
  source: 'mcp',
784
788
  descriptionI18n: {
785
789
  en: `MCP server: ${state.serverId}`,
786
790
  zh: `MCP 服务器:${state.serverId}`,
787
791
  },
792
+ ...(manualSpec !== undefined ? { manualSpec } : {}),
788
793
  });
789
794
  toolsetOwnerByName.set(state.toolsetName, { kind: 'mcp', serverId: state.serverId });
790
795
  }
@@ -22,17 +22,30 @@ const ripgrep_1 = require("./ripgrep");
22
22
  const team_mgmt_1 = require("./team_mgmt");
23
23
  const txt_1 = require("./txt");
24
24
  function promptFilesFor(toolsetId) {
25
+ if (toolsetId === 'ws_mod') {
26
+ // ws_mod uses flat single-file format, not subdirectory structure.
27
+ return {
28
+ en: 'prompts/ws_mod.en.md',
29
+ zh: 'prompts/ws_mod.zh.md',
30
+ };
31
+ }
25
32
  return {
26
- en: `./prompts/${toolsetId}/en/index.md`,
27
- zh: `./prompts/${toolsetId}/zh/index.md`,
33
+ en: `prompts/${toolsetId}/en/index.md`,
34
+ zh: `prompts/${toolsetId}/zh/index.md`,
28
35
  };
29
36
  }
30
37
  function manualSpecFor(toolsetId) {
31
- return (0, spec_1.buildStandardManualSpec)({ baseDir: `./prompts/${toolsetId}` });
38
+ if (toolsetId === 'ws_mod') {
39
+ return (0, spec_1.buildBuiltinManualSpec)({
40
+ toolsetId: 'ws_mod',
41
+ warnOnMissing: false,
42
+ includeSchemaToolsSection: false,
43
+ });
44
+ }
45
+ return (0, spec_1.buildBuiltinManualSpec)({ toolsetId });
32
46
  }
33
47
  (0, registry_1.registerTool)(fs_1.listDirTool);
34
48
  (0, registry_1.registerTool)(fs_1.rmDirTool);
35
- (0, registry_1.registerTool)(fs_1.rmFileTool);
36
49
  (0, registry_1.registerTool)(fs_1.mkDirTool);
37
50
  (0, registry_1.registerTool)(fs_1.moveFileTool);
38
51
  (0, registry_1.registerTool)(fs_1.moveDirTool);
@@ -141,9 +141,13 @@ function loadTopicDoc(params) {
141
141
  if (!topicPath) {
142
142
  return { status: 'missing', filePath: '', content: '' };
143
143
  }
144
- const absPathFromToolsRoot = path.resolve(__dirname, '..', topicPath);
144
+ // rtws-relative paths (start with '.') are resolved from rtws root (cwd);
145
+ // package-relative paths (used by builtin toolsets) are resolved from __dirname.
146
+ const absPath = topicPath.startsWith('.')
147
+ ? path.resolve(process.cwd(), topicPath)
148
+ : path.resolve(__dirname, '..', topicPath);
145
149
  try {
146
- const content = fs.readFileSync(absPathFromToolsRoot, 'utf8');
150
+ const content = fs.readFileSync(absPath, 'utf8');
147
151
  return { status: 'ok', filePath: topicPath, content };
148
152
  }
149
153
  catch (error) {
@@ -15,8 +15,38 @@ export declare function getManualSpecTopics(spec?: ManualSpec): readonly ManualT
15
15
  export declare function getManualTopicTitle(topic: ManualTopic, language: LanguageCode, spec?: ManualSpec): string;
16
16
  export declare function shouldWarnMissingSection(spec?: ManualSpec): boolean;
17
17
  export declare function shouldIncludeSchemaToolsSection(spec?: ManualSpec): boolean;
18
- export declare function buildStandardManualSpec(options: {
19
- baseDir: string;
18
+ /**
19
+ * Build manual topic file paths for a built-in toolset.
20
+ * Format: `prompts/<toolsetId>/<lang>/<topic>.md`
21
+ *
22
+ * No heuristics — `toolsetId` is an explicit parameter.
23
+ */
24
+ export declare function builtinManualTopicPaths(toolsetId: string, language: LanguageCode): Record<ManualTopic, string>;
25
+ /**
26
+ * Build manual topic file paths for an MCP toolset.
27
+ * Format: `<contentFilePrefix>/<topic>.<lang>.md`
28
+ *
29
+ * `contentFilePrefix` comes directly from the MCP server's mcp.yaml
30
+ * `manual.contentFile` field — no hardcoded serverId paths.
31
+ */
32
+ export declare function mcpManualTopicPaths(contentFilePrefix: string, language: LanguageCode): Record<ManualTopic, string>;
33
+ /**
34
+ * Build a ManualSpec for a built-in toolset.
35
+ * Calls `builtinManualTopicPaths` internally — no hardcoded path inspection.
36
+ */
37
+ export declare function buildBuiltinManualSpec(options?: {
38
+ topics?: readonly ManualTopic[];
39
+ warnOnMissing?: boolean;
40
+ includeSchemaToolsSection?: boolean;
41
+ } & ({
42
+ toolsetId: string;
43
+ } | Record<string, never>)): ManualSpec;
44
+ /**
45
+ * Build a ManualSpec for an MCP toolset.
46
+ * Calls `mcpManualTopicPaths` internally — no hardcoded serverId paths.
47
+ * `contentFilePrefix` is sourced from mcp.yaml `manual.contentFile`.
48
+ */
49
+ export declare function buildMcpManualSpec(contentFilePrefix: string, options?: {
20
50
  topics?: readonly ManualTopic[];
21
51
  warnOnMissing?: boolean;
22
52
  includeSchemaToolsSection?: boolean;
@@ -1,11 +1,48 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.MANUAL_TOPIC_TITLES = exports.DEFAULT_MANUAL_TOPICS = exports.MANUAL_TOPICS = void 0;
4
37
  exports.getManualSpecTopics = getManualSpecTopics;
5
38
  exports.getManualTopicTitle = getManualTopicTitle;
6
39
  exports.shouldWarnMissingSection = shouldWarnMissingSection;
7
40
  exports.shouldIncludeSchemaToolsSection = shouldIncludeSchemaToolsSection;
8
- exports.buildStandardManualSpec = buildStandardManualSpec;
41
+ exports.builtinManualTopicPaths = builtinManualTopicPaths;
42
+ exports.mcpManualTopicPaths = mcpManualTopicPaths;
43
+ exports.buildBuiltinManualSpec = buildBuiltinManualSpec;
44
+ exports.buildMcpManualSpec = buildMcpManualSpec;
45
+ const path = __importStar(require("path"));
9
46
  exports.MANUAL_TOPICS = ['index', 'principles', 'tools', 'scenarios', 'errors'];
10
47
  exports.DEFAULT_MANUAL_TOPICS = ['index', 'tools'];
11
48
  exports.MANUAL_TOPIC_TITLES = {
@@ -35,26 +72,79 @@ function shouldWarnMissingSection(spec) {
35
72
  function shouldIncludeSchemaToolsSection(spec) {
36
73
  return spec?.includeSchemaToolsSection ?? true;
37
74
  }
38
- function buildStandardManualSpec(options) {
39
- const baseDir = stripTrailingSlash(options.baseDir);
40
- const topics = options.topics && options.topics.length > 0 ? [...options.topics] : [...exports.MANUAL_TOPICS];
75
+ // ---------------------------------------------------------------------------
76
+ // Path builders (no hardcoded toolsetId / serverId strings)
77
+ // ---------------------------------------------------------------------------
78
+ /**
79
+ * Build manual topic file paths for a built-in toolset.
80
+ * Format: `prompts/<toolsetId>/<lang>/<topic>.md`
81
+ *
82
+ * No heuristics — `toolsetId` is an explicit parameter.
83
+ */
84
+ function builtinManualTopicPaths(toolsetId, language) {
85
+ const suffix = language === 'en' ? '.en' : '';
86
+ const langDir = language;
87
+ const baseDir = `prompts/${toolsetId}`;
88
+ return {
89
+ index: path.join(baseDir, langDir, `index${suffix}.md`),
90
+ principles: path.join(baseDir, langDir, `principles${suffix}.md`),
91
+ tools: path.join(baseDir, langDir, `tools${suffix}.md`),
92
+ scenarios: path.join(baseDir, langDir, `scenarios${suffix}.md`),
93
+ errors: path.join(baseDir, langDir, `errors${suffix}.md`),
94
+ };
95
+ }
96
+ /**
97
+ * Build manual topic file paths for an MCP toolset.
98
+ * Format: `<contentFilePrefix>/<topic>.<lang>.md`
99
+ *
100
+ * `contentFilePrefix` comes directly from the MCP server's mcp.yaml
101
+ * `manual.contentFile` field — no hardcoded serverId paths.
102
+ */
103
+ function mcpManualTopicPaths(contentFilePrefix, language) {
104
+ const prefix = stripTrailingSlash(contentFilePrefix);
105
+ const suffix = language === 'en' ? '.en' : '';
106
+ return {
107
+ index: `${prefix}/index${suffix}.md`,
108
+ principles: `${prefix}/principles${suffix}.md`,
109
+ tools: `${prefix}/tools${suffix}.md`,
110
+ scenarios: `${prefix}/scenarios${suffix}.md`,
111
+ errors: `${prefix}/errors${suffix}.md`,
112
+ };
113
+ }
114
+ // ---------------------------------------------------------------------------
115
+ // Factory functions (selected by call site, not by path inspection)
116
+ // ---------------------------------------------------------------------------
117
+ /**
118
+ * Build a ManualSpec for a built-in toolset.
119
+ * Calls `builtinManualTopicPaths` internally — no hardcoded path inspection.
120
+ */
121
+ function buildBuiltinManualSpec(options) {
122
+ const topics = options?.topics && options.topics.length > 0 ? [...options.topics] : [...exports.MANUAL_TOPICS];
41
123
  return {
42
124
  topics,
43
- warnOnMissing: options.warnOnMissing ?? true,
44
- includeSchemaToolsSection: options.includeSchemaToolsSection ?? true,
125
+ warnOnMissing: options?.warnOnMissing ?? true,
126
+ includeSchemaToolsSection: options?.includeSchemaToolsSection ?? true,
45
127
  topicFilesI18n: {
46
- en: topicPathsFor(baseDir, 'en'),
47
- zh: topicPathsFor(baseDir, 'zh'),
128
+ en: builtinManualTopicPaths(options?.toolsetId ?? '', 'en'),
129
+ zh: builtinManualTopicPaths(options?.toolsetId ?? '', 'zh'),
48
130
  },
49
131
  };
50
132
  }
51
- function topicPathsFor(baseDir, language) {
133
+ /**
134
+ * Build a ManualSpec for an MCP toolset.
135
+ * Calls `mcpManualTopicPaths` internally — no hardcoded serverId paths.
136
+ * `contentFilePrefix` is sourced from mcp.yaml `manual.contentFile`.
137
+ */
138
+ function buildMcpManualSpec(contentFilePrefix, options) {
139
+ const topics = options?.topics && options.topics.length > 0 ? [...options.topics] : [...exports.MANUAL_TOPICS];
52
140
  return {
53
- index: `${baseDir}/${language}/index.md`,
54
- principles: `${baseDir}/${language}/principles.md`,
55
- tools: `${baseDir}/${language}/tools.md`,
56
- scenarios: `${baseDir}/${language}/scenarios.md`,
57
- errors: `${baseDir}/${language}/errors.md`,
141
+ topics,
142
+ warnOnMissing: options?.warnOnMissing ?? true,
143
+ includeSchemaToolsSection: options?.includeSchemaToolsSection ?? true,
144
+ topicFilesI18n: {
145
+ en: mcpManualTopicPaths(contentFilePrefix, 'en'),
146
+ zh: mcpManualTopicPaths(contentFilePrefix, 'zh'),
147
+ },
58
148
  };
59
149
  }
60
150
  function stripTrailingSlash(input) {
@@ -43,6 +43,43 @@ team_mgmt is Dominds' toolset for managing `.minds/` (team configuration and rtw
43
43
 
44
44
  ## Relationship with ws_mod
45
45
 
46
+ ## MCP Toolset Manual i18n Mechanism
47
+
48
+ Dominds supports mounting toolset manuals via the `manual.contentFile` field in MCP server configuration, with multi-language support (zh/en).
49
+
50
+ ### Path Convention
51
+
52
+ | Language | File Path |
53
+ | ---------------------- | ------------------------------------------- |
54
+ | zh (semantic baseline) | `.minds/mcp/manuals/<serverId>/index.md` |
55
+ | en | `.minds/mcp/manuals/<serverId>/index.en.md` |
56
+
57
+ ### mcp.yaml Configuration Example
58
+
59
+ ```yaml
60
+ servers:
61
+ my-server:
62
+ transport: stdio
63
+ command: ...
64
+ manual:
65
+ contentFile: .minds/mcp/manuals/my-server
66
+ ```
67
+
68
+ - `manual.contentFile` is mutually exclusive with `manual.content` / `manual.sections`; `contentFile` takes priority
69
+ - Path is rtws-relative (starts with `.` → resolved relative to runtime workspace root)
70
+ - Early-fail validation on load: if the path is invalid or not found, the server config is marked as invalid
71
+
72
+ ### Rendering Behavior
73
+
74
+ - `render.ts` `loadTopicDoc()` determines resolution strategy by path prefix:
75
+ - **rtws-relative path** (starts with `.`): resolved relative to `process.cwd()`
76
+ - **Package-internal path** (other): resolved relative to `__dirname`
77
+ - Runtime language is determined by the dialog's `getLastUserLanguageCode()`; zh is the semantic baseline
78
+
79
+ ### auto-draft Behavior
80
+
81
+ - auto-draft is unaffected by `contentFile`; tool names in tool calling output follow actual runtime registration
82
+
46
83
  This toolset has the same mental model as `ws_mod` (text editing tools), but:
47
84
 
48
85
  - Path resolves under `.minds/` (e.g., `team.yaml` → `.minds/team.yaml`)
@@ -43,6 +43,43 @@ team_mgmt 是 Dominds 用于管理 `.minds/`(团队配置与 rtws 记忆)的
43
43
 
44
44
  ## 与 ws_mod 的关系
45
45
 
46
+ ## MCP 工具集手册 i18n 机制
47
+
48
+ Dominds 支持通过 MCP server 配置的 `manual.contentFile` 字段指定 rtws 相对路径来挂载工具集手册,支持多语言(zh/en)。
49
+
50
+ ### 路径约定
51
+
52
+ | 语言 | 文件路径 |
53
+ | -------------- | ------------------------------------------- |
54
+ | zh(语义基准) | `.minds/mcp/manuals/<serverId>/index.md` |
55
+ | en | `.minds/mcp/manuals/<serverId>/index.en.md` |
56
+
57
+ ### mcp.yaml 配置示例
58
+
59
+ ```yaml
60
+ servers:
61
+ my-server:
62
+ transport: stdio
63
+ command: ...
64
+ manual:
65
+ contentFile: .minds/mcp/manuals/my-server
66
+ ```
67
+
68
+ - `manual.contentFile` 与 `manual.content` / `manual.sections` 互斥,`contentFile` 优先级更高
69
+ - 路径为 rtws 相对路径(以 `.` 开头时相对于运行时工作区根目录解析)
70
+ - 加载时做 early fail 校验:若指定路径不存在或不合法,server 配置将标记为 invalid
71
+
72
+ ### 渲染行为
73
+
74
+ - `render.ts` 的 `loadTopicDoc()` 函数通过路径前缀判断解析方式:
75
+ - **rtws 相对路径**(以 `.` 开头):相对于 `process.cwd()` 解析
76
+ - **包内路径**(其他情况):相对于 `__dirname` 解析
77
+ - 运行时语言由对话的 `getLastUserLanguageCode()` 决定,zh 为语义基准
78
+
79
+ ### auto-draft 行为
80
+
81
+ - auto-draft 不受 `contentFile` 影响;tool calling 输出中的工具名仍以运行时实际注册为准
82
+
46
83
  本工具集与 `ws_mod`(文本编辑工具)的心智模型一致,但:
47
84
 
48
85
  - 路径解析到 `.minds/` 下(如 `team.yaml` → `.minds/team.yaml`)
@@ -1894,7 +1894,7 @@ exports.teamMgmtApplyFileModificationTool = {
1894
1894
  if (relPath) {
1895
1895
  await refreshDerivedStateAfterTeamMgmtWrite({
1896
1896
  relPaths: [relPath],
1897
- trigger: 'apply_file_modification',
1897
+ trigger: 'team_mgmt_apply_file_modification',
1898
1898
  });
1899
1899
  }
1900
1900
  }
@@ -3708,12 +3708,9 @@ function parseMcpManualField(serverId, value) {
3708
3708
  };
3709
3709
  }
3710
3710
  }
3711
- if (!content && sections.length === 0) {
3712
- return {
3713
- kind: 'invalid',
3714
- errorText: `${fieldPath} must include at least one of content or sections`,
3715
- };
3716
- }
3711
+ // Note: contentFile is handled by the runtime in config.ts (separate from this validation).
3712
+ // We simply accept the descriptor without requiring content/sections so that contentFile-based
3713
+ // manuals are not flagged as invalid here.
3717
3714
  return { kind: 'present', manual: { content, sections } };
3718
3715
  }
3719
3716
  function describeMcpManualState(language, state) {
package/dist/tools/txt.js CHANGED
@@ -1202,7 +1202,7 @@ async function runPrepareFileRangeEdit(caller, filePath, rangeSpec, requestedId,
1202
1202
  rangeRequired: '错误:需要提供行号范围(例如 10~20 或 ~)。',
1203
1203
  fileDoesNotExist: (p) => `错误:文件 \`${p}\` 不存在。`,
1204
1204
  planned: (id, p) => `✅ 已规划:\`${id}\` → \`${p}\``,
1205
- next: (id) => `下一步:调用函数工具 \`apply_file_modification\`,参数:{ \"hunk_id\": \"${id}\" }`,
1205
+ next: (id) => `下一步:调用函数工具 \`team_mgmt_apply_file_modification\`,参数:{ \"hunk_id\": \"${id}\" }`,
1206
1206
  invalidHunkId: '错误:hunk id 格式无效(例如 `a1b2c3d4`)。',
1207
1207
  unknownHunkId: (id) => `错误:hunk id \`${id}\` 不存在(可能已过期/已被应用)。不支持自定义新 id;要生成新 id,请将 \`existing_hunk_id\` 设为空字符串。`,
1208
1208
  wrongOwner: (id) => `错误:hunk id \`${id}\` 不是由当前成员规划的,不能覆写。`,
@@ -1214,7 +1214,7 @@ async function runPrepareFileRangeEdit(caller, filePath, rangeSpec, requestedId,
1214
1214
  rangeRequired: 'Error: Line range is required (e.g. 10~20 or ~).',
1215
1215
  fileDoesNotExist: (p) => `Error: File \`${p}\` does not exist.`,
1216
1216
  planned: (id, p) => `✅ Planned \`${id}\` for \`${p}\``,
1217
- next: (id) => `Next: call function tool \`apply_file_modification\` with { \"hunk_id\": \"${id}\" }.`,
1217
+ next: (id) => `Next: call function tool \`team_mgmt_apply_file_modification\` with { "hunk_id": "${id}" }.`,
1218
1218
  invalidHunkId: 'Error: invalid hunk id format (e.g. `a1b2c3d4`).',
1219
1219
  unknownHunkId: (id) => `Error: hunk id \`${id}\` not found (expired or already applied). Custom new ids are not allowed; set \`existing_hunk_id\` to an empty string to generate a new one.`,
1220
1220
  wrongOwner: (id) => `Error: hunk id \`${id}\` was planned by a different member; cannot overwrite.`,
@@ -1590,8 +1590,8 @@ async function runPrepareFileAppend(caller, filePath, inputBody, options) {
1590
1590
  const content = `${formatYamlCodeBlock(yaml)}\n\n` +
1591
1591
  `\`\`\`diff\n${unifiedDiff}\`\`\`\n\n` +
1592
1592
  (language === 'zh'
1593
- ? `下一步:调用函数工具 \`apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
1594
- : `Next: call function tool \`apply_file_modification\` with { \"hunk_id\": \"${hunkId}\" }.`);
1593
+ ? `下一步:调用函数工具 \`team_mgmt_apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
1594
+ : `Next: call function tool \`team_mgmt_apply_file_modification\` with { "hunk_id": "${hunkId}" }.`);
1595
1595
  return ok(content, [{ type: 'environment_msg', role: 'user', content }]);
1596
1596
  }
1597
1597
  catch (error) {
@@ -1886,8 +1886,8 @@ async function planInsertionCommon(position, caller, options) {
1886
1886
  const content = `${formatYamlCodeBlock(yaml)}\n\n` +
1887
1887
  `\`\`\`diff\n${unifiedDiff}\`\`\`\n\n` +
1888
1888
  (language === 'zh'
1889
- ? `下一步:调用函数工具 \`apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
1890
- : `Next: call function tool \`apply_file_modification\` with { \"hunk_id\": \"${hunkId}\" }.`);
1889
+ ? `下一步:调用函数工具 \`team_mgmt_apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
1890
+ : `Next: call function tool \`team_mgmt_apply_file_modification\` with { "hunk_id": "${hunkId}" }.`);
1891
1891
  return ok(content, [{ type: 'environment_msg', role: 'user', content }]);
1892
1892
  }
1893
1893
  catch (error) {
@@ -3179,8 +3179,8 @@ async function runPrepareBlockReplace(caller, options) {
3179
3179
  const content = `${formatYamlCodeBlock(yaml)}\n\n` +
3180
3180
  `\`\`\`diff\n${unifiedDiff}\`\`\`\n\n` +
3181
3181
  (language === 'zh'
3182
- ? `下一步:调用函数工具 \`apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
3183
- : `Next: call function tool \`apply_file_modification\` with { \"hunk_id\": \"${hunkId}\" }.`);
3182
+ ? `下一步:调用函数工具 \`team_mgmt_apply_file_modification\`,参数:{ \"hunk_id\": \"${hunkId}\" }`
3183
+ : `Next: call function tool \`team_mgmt_apply_file_modification\` with { "hunk_id": "${hunkId}" }.`);
3184
3184
  return ok(content, [{ type: 'environment_msg', role: 'user', content }]);
3185
3185
  }
3186
3186
  catch (error) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dominds",
3
- "version": "1.8.11",
3
+ "version": "1.8.12",
4
4
  "description": "Dominds CLI and aggregation shell for the LongRun AI kernel/runtime packages.",
5
5
  "type": "commonjs",
6
6
  "publishConfig": {
@@ -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-D2LbmGtl.js";
2
- import { aR as isObject, aA as baseRest, aS as isIterateeCall, aT as keysIn, aU as eq, aV as isArrayLike, aW as isArray, aX as identity, aY as isIndex, aZ as assignValue } from "./index-BRgQnAkx.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-DOyVMmph.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-Dzo3pRxk.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-DG1QTE8n.js.map
196
+ //# sourceMappingURL=_basePickBy-p_FLYxUB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_basePickBy-p_FLYxUB.js","sources":["../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_trimmedEndIndex.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseTrim.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toNumber.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toFinite.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/toInteger.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/flatten.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/defaults.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/last.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_createFind.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/findIndex.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/find.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseMap.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/map.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseHas.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/has.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseLt.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseExtremum.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/min.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_baseSet.js","../../../../node_modules/.pnpm/lodash-es@4.17.23/node_modules/lodash-es/_basePickBy.js"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import toNumber from './toNumber.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nexport default toFinite;\n","import toFinite from './toFinite.js';\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nexport default toInteger;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import baseRest from './_baseRest.js';\nimport eq from './eq.js';\nimport isIterateeCall from './_isIterateeCall.js';\nimport keysIn from './keysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nexport default defaults;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport isArray from './isArray.js';\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nexport default map;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nexport default baseHas;\n","import baseHas from './_baseHas.js';\nimport hasPath from './_hasPath.js';\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nexport default has;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nexport default baseLt;\n","import isSymbol from './isSymbol.js';\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nexport default baseExtremum;\n","import baseExtremum from './_baseExtremum.js';\nimport baseLt from './_baseLt.js';\nimport identity from './identity.js';\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nexport default min;\n","import assignValue from './_assignValue.js';\nimport castPath from './_castPath.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nexport default baseSet;\n","import baseGet from './_baseGet.js';\nimport baseSet from './_baseSet.js';\nimport castPath from './_castPath.js';\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nexport default basePickBy;\n"],"names":["objectProto","hasOwnProperty","collection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
@@ -1,4 +1,4 @@
1
- import { be as isObjectLike, bf as baseGetTag, aW as isArray, bg as Symbol$1, aV as isArrayLike, bh as arrayLikeKeys, bi as baseKeys, bj as memoize, bk as isArguments, bl as copyObject, aT as keysIn, bm as getPrototype, bn as cloneArrayBuffer, bo as cloneTypedArray, bp as getTag, bc as baseUnary, bq as nodeUtil, aR as isObject, br as copyArray, bs as isBuffer, bt as cloneBuffer, bu as initCloneObject, bv as Stack, aZ as assignValue, bw as MapCache, aU as eq, bx as Uint8Array, by as isTypedArray, bz as isLength, aY as isIndex, aX as identity, ba as baseFor, bA as Set } from "./index-BRgQnAkx.js";
1
+ import { bh as isObjectLike, bi as baseGetTag, aZ as isArray, bj as Symbol$1, aY as isArrayLike, bk as arrayLikeKeys, bl as baseKeys, bm as memoize, bn as isArguments, bo as copyObject, aW as keysIn, bp as getPrototype, bq as cloneArrayBuffer, br as cloneTypedArray, bs as getTag, bf as baseUnary, bt as nodeUtil, aU as isObject, bu as copyArray, bv as isBuffer, bw as cloneBuffer, bx as initCloneObject, by as Stack, b0 as assignValue, bz as MapCache, aX as eq, bA as Uint8Array, bB as isTypedArray, bC as isLength, a$ as isIndex, a_ as identity, bd as baseFor, bD as Set } from "./index-Dzo3pRxk.js";
2
2
  var symbolTag$3 = "[object Symbol]";
3
3
  function isSymbol(value) {
4
4
  return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
@@ -833,4 +833,4 @@ export {
833
833
  baseIndexOf as y,
834
834
  getAllKeysIn as z
835
835
  };
836
- //# sourceMappingURL=_baseUniq-D2LbmGtl.js.map
836
+ //# sourceMappingURL=_baseUniq-DOyVMmph.js.map