dominds 1.25.1 → 1.25.2

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 (181) hide show
  1. package/README.md +4 -3
  2. package/README.zh.md +4 -3
  3. package/dist/team.js +4 -1
  4. package/dist/tools/builtins.js +30 -0
  5. package/dist/tools/fs.d.ts +2 -0
  6. package/dist/tools/fs.js +281 -2
  7. package/dist/tools/os.d.ts +11 -0
  8. package/dist/tools/os.js +20 -9
  9. package/dist/tools/picture.d.ts +1 -0
  10. package/dist/tools/picture.js +64 -1
  11. package/dist/tools/prompts/codex_inspect_and_patch_tools/en/tools.md +5 -0
  12. package/dist/tools/prompts/codex_inspect_and_patch_tools/zh/tools.md +5 -0
  13. package/dist/tools/prompts/fs_read/en/errors.md +6 -0
  14. package/dist/tools/prompts/fs_read/en/index.md +17 -0
  15. package/dist/tools/prompts/fs_read/en/principles.md +5 -0
  16. package/dist/tools/prompts/fs_read/en/scenarios.md +3 -0
  17. package/dist/tools/prompts/fs_read/en/tools.md +11 -0
  18. package/dist/tools/prompts/fs_read/zh/errors.md +6 -0
  19. package/dist/tools/prompts/fs_read/zh/index.md +17 -0
  20. package/dist/tools/prompts/fs_read/zh/principles.md +5 -0
  21. package/dist/tools/prompts/fs_read/zh/scenarios.md +3 -0
  22. package/dist/tools/prompts/fs_read/zh/tools.md +11 -0
  23. package/dist/tools/prompts/os/en/index.md +1 -1
  24. package/dist/tools/prompts/os/en/principles.md +1 -1
  25. package/dist/tools/prompts/os/en/scenarios.md +21 -0
  26. package/dist/tools/prompts/os/en/tools.md +6 -0
  27. package/dist/tools/prompts/os/zh/index.md +1 -1
  28. package/dist/tools/prompts/os/zh/principles.md +1 -1
  29. package/dist/tools/prompts/os/zh/scenarios.md +21 -0
  30. package/dist/tools/prompts/os/zh/tools.md +6 -0
  31. package/dist/tools/registry.d.ts +6 -0
  32. package/dist/tools/ripgrep.d.ts +5 -0
  33. package/dist/tools/ripgrep.js +482 -1
  34. package/dist/tools/txt.d.ts +34 -0
  35. package/dist/tools/txt.js +221 -1
  36. package/package.json +3 -3
  37. package/webapp/dist/assets/{_basePickBy-CG55qWp2.js → _basePickBy-CbWZ8qnS.js} +3 -3
  38. package/webapp/dist/assets/_basePickBy-CbWZ8qnS.js.map +1 -0
  39. package/webapp/dist/assets/{_baseUniq-Dd4UGB2O.js → _baseUniq-IY-Vfzx1.js} +2 -2
  40. package/webapp/dist/assets/_baseUniq-IY-Vfzx1.js.map +1 -0
  41. package/webapp/dist/assets/{arc-C2qiF4r3.js → arc--U2Vks6y.js} +2 -2
  42. package/webapp/dist/assets/arc--U2Vks6y.js.map +1 -0
  43. package/webapp/dist/assets/{architectureDiagram-2XIMDMQ5-DQ4Z8fy_.js → architectureDiagram-VXUJARFQ-DpryGqjy.js} +8 -26
  44. package/webapp/dist/assets/architectureDiagram-VXUJARFQ-DpryGqjy.js.map +1 -0
  45. package/webapp/dist/assets/{blockDiagram-WCTKOSBZ-CPvOuMZA.js → blockDiagram-VD42YOAC-TTufCfiE.js} +170 -187
  46. package/webapp/dist/assets/blockDiagram-VD42YOAC-TTufCfiE.js.map +1 -0
  47. package/webapp/dist/assets/{c4Diagram-IC4MRINW-DElaFpnJ.js → c4Diagram-YG6GDRKO-B4RPsw5H.js} +4 -4
  48. package/webapp/dist/assets/c4Diagram-YG6GDRKO-B4RPsw5H.js.map +1 -0
  49. package/webapp/dist/assets/{channel-BR7mZa90.js → channel-DAtGYJHZ.js} +2 -2
  50. package/webapp/dist/assets/channel-DAtGYJHZ.js.map +1 -0
  51. package/webapp/dist/assets/{chunk-4BX2VUAB-DTmXCBYX.js → chunk-4BX2VUAB-JtO__vAF.js} +2 -2
  52. package/webapp/dist/assets/chunk-4BX2VUAB-JtO__vAF.js.map +1 -0
  53. package/webapp/dist/assets/{chunk-55IACEB6-DeBB4aJ4.js → chunk-55IACEB6-JMRC8yG1.js} +2 -2
  54. package/webapp/dist/assets/chunk-55IACEB6-JMRC8yG1.js.map +1 -0
  55. package/webapp/dist/assets/{chunk-WL4C6EOR-V3Fq1ULq.js → chunk-B4BG7PRW-BDIpf8Iz.js} +121 -171
  56. package/webapp/dist/assets/chunk-B4BG7PRW-BDIpf8Iz.js.map +1 -0
  57. package/webapp/dist/assets/{chunk-NQ4KR5QH-DRcsqoac.js → chunk-DI55MBZ5-j9B4rifK.js} +7 -9
  58. package/webapp/dist/assets/chunk-DI55MBZ5-j9B4rifK.js.map +1 -0
  59. package/webapp/dist/assets/{chunk-FMBD7UC4-CXpgeev4.js → chunk-FMBD7UC4-DFXKLjHC.js} +2 -2
  60. package/webapp/dist/assets/chunk-FMBD7UC4-DFXKLjHC.js.map +1 -0
  61. package/webapp/dist/assets/{chunk-KX2RTZJC-DWG_wpHB.js → chunk-QN33PNHL-BKzkeJ-b.js} +2 -2
  62. package/webapp/dist/assets/chunk-QN33PNHL-BKzkeJ-b.js.map +1 -0
  63. package/webapp/dist/assets/{chunk-QZHKN3VN-B9GPAJ2s.js → chunk-QZHKN3VN-DiZd3UNl.js} +2 -2
  64. package/webapp/dist/assets/chunk-QZHKN3VN-DiZd3UNl.js.map +1 -0
  65. package/webapp/dist/assets/{chunk-JSJVCQXG-DWfckfhO.js → chunk-TZMSLE5B-BaE4C244.js} +6 -14
  66. package/webapp/dist/assets/chunk-TZMSLE5B-BaE4C244.js.map +1 -0
  67. package/webapp/dist/assets/{classDiagram-VBA2DB6C-DspG486Z.js → classDiagram-2ON5EDUG-CNF8ZohD.js} +6 -7
  68. package/webapp/dist/assets/classDiagram-2ON5EDUG-CNF8ZohD.js.map +1 -0
  69. package/webapp/dist/assets/{classDiagram-v2-RAHNMMFH-DspG486Z.js → classDiagram-v2-WZHVMYZB-CNF8ZohD.js} +6 -7
  70. package/webapp/dist/assets/classDiagram-v2-WZHVMYZB-CNF8ZohD.js.map +1 -0
  71. package/webapp/dist/assets/{clone-M8ztABN5.js → clone-Nq0Ko0Gv.js} +2 -2
  72. package/webapp/dist/assets/clone-Nq0Ko0Gv.js.map +1 -0
  73. package/webapp/dist/assets/{cose-bilkent-S5V4N54A-DZihobe3.js → cose-bilkent-S5V4N54A-uHPLSeKv.js} +2 -2
  74. package/webapp/dist/assets/cose-bilkent-S5V4N54A-uHPLSeKv.js.map +1 -0
  75. package/webapp/dist/assets/cytoscape.esm-Bm8DJGmZ.js.map +1 -1
  76. package/webapp/dist/assets/{dagre-KLK3FWXG-DBLWy3vi.js → dagre-6UL2VRFP-C1awWpU3.js} +7 -7
  77. package/webapp/dist/assets/dagre-6UL2VRFP-C1awWpU3.js.map +1 -0
  78. package/webapp/dist/assets/defaultLocale-B2RvLBDe.js.map +1 -1
  79. package/webapp/dist/assets/{diagram-E7M64L7V-D7IrPWaY.js → diagram-PSM6KHXK-Bf69p76M.js} +10 -10
  80. package/webapp/dist/assets/diagram-PSM6KHXK-Bf69p76M.js.map +1 -0
  81. package/webapp/dist/assets/{diagram-IFDJBPK2-DbF-vN3U.js → diagram-QEK2KX5R-Bvlbx8Jp.js} +8 -9
  82. package/webapp/dist/assets/diagram-QEK2KX5R-Bvlbx8Jp.js.map +1 -0
  83. package/webapp/dist/assets/{diagram-P4PSJMXO-BxBVRVaM.js → diagram-S2PKOQOG-CGjGalBu.js} +8 -8
  84. package/webapp/dist/assets/diagram-S2PKOQOG-CGjGalBu.js.map +1 -0
  85. package/webapp/dist/assets/{erDiagram-INFDFZHY-ny9JoOhV.js → erDiagram-Q2GNP2WA-Ds3qhwkG.js} +75 -96
  86. package/webapp/dist/assets/erDiagram-Q2GNP2WA-Ds3qhwkG.js.map +1 -0
  87. package/webapp/dist/assets/{flowDiagram-PKNHOUZH-BMgWUlvY.js → flowDiagram-NV44I4VS-B1wDG_l5.js} +81 -98
  88. package/webapp/dist/assets/flowDiagram-NV44I4VS-B1wDG_l5.js.map +1 -0
  89. package/webapp/dist/assets/{ganttDiagram-A5KZAMGK-CCYpj3PM.js → ganttDiagram-JELNMOA3-BwuYt2bO.js} +3 -28
  90. package/webapp/dist/assets/ganttDiagram-JELNMOA3-BwuYt2bO.js.map +1 -0
  91. package/webapp/dist/assets/{gitGraphDiagram-K3NZZRJ6-BFJGaDtk.js → gitGraphDiagram-V2S2FVAM-B2Tw773z.js} +46 -38
  92. package/webapp/dist/assets/gitGraphDiagram-V2S2FVAM-B2Tw773z.js.map +1 -0
  93. package/webapp/dist/assets/graph-CS_H7jBi.js +425 -0
  94. package/webapp/dist/assets/graph-CS_H7jBi.js.map +1 -0
  95. package/webapp/dist/assets/{index-EvfDN91D.js → index-arD81Nnh.js} +1056 -1031
  96. package/webapp/dist/assets/{index-EvfDN91D.js.map → index-arD81Nnh.js.map} +1 -1
  97. package/webapp/dist/assets/{index-BQoNJEGT.css → index-yycTJNYb.css} +1 -1
  98. package/webapp/dist/assets/{infoDiagram-LFFYTUFH-Dnve0aOc.js → infoDiagram-HS3SLOUP-C9_JKYhm.js} +7 -7
  99. package/webapp/dist/assets/infoDiagram-HS3SLOUP-C9_JKYhm.js.map +1 -0
  100. package/webapp/dist/assets/init-ZxktEp_H.js.map +1 -1
  101. package/webapp/dist/assets/{journeyDiagram-4ABVD52K-D8_2EbDV.js → journeyDiagram-XKPGCS4Q-BhZggYOL.js} +5 -5
  102. package/webapp/dist/assets/journeyDiagram-XKPGCS4Q-BhZggYOL.js.map +1 -0
  103. package/webapp/dist/assets/{kanban-definition-K7BYSVSG-BdmMXQQk.js → kanban-definition-3W4ZIXB7-B-R2Xm4Y.js} +3 -5
  104. package/webapp/dist/assets/kanban-definition-3W4ZIXB7-B-R2Xm4Y.js.map +1 -0
  105. package/webapp/dist/assets/{layout-3tA84hoP.js → layout-BzMatxDa.js} +5 -5
  106. package/webapp/dist/assets/layout-BzMatxDa.js.map +1 -0
  107. package/webapp/dist/assets/{linear-CpN6Japh.js → linear-BuuJkw_U.js} +2 -2
  108. package/webapp/dist/assets/linear-BuuJkw_U.js.map +1 -0
  109. package/webapp/dist/assets/{mindmap-definition-YRQLILUH-HiYNz7qL.js → mindmap-definition-VGOIOE7T-BR7oDKBR.js} +5 -7
  110. package/webapp/dist/assets/mindmap-definition-VGOIOE7T-BR7oDKBR.js.map +1 -0
  111. package/webapp/dist/assets/ordinal-CxptdPJm.js.map +1 -1
  112. package/webapp/dist/assets/{pieDiagram-SKSYHLDU-DCVp50CX.js → pieDiagram-ADFJNKIX--QWeT2vZ.js} +8 -8
  113. package/webapp/dist/assets/pieDiagram-ADFJNKIX--QWeT2vZ.js.map +1 -0
  114. package/webapp/dist/assets/{quadrantDiagram-337W2JSQ-CCX7dwY0.js → quadrantDiagram-AYHSOK5B-BpqtmN3r.js} +3 -3
  115. package/webapp/dist/assets/quadrantDiagram-AYHSOK5B-BpqtmN3r.js.map +1 -0
  116. package/webapp/dist/assets/{requirementDiagram-Z7DCOOCP-Cba7jjkf.js → requirementDiagram-UZGBJVZJ-CIXjIi4F.js} +6 -16
  117. package/webapp/dist/assets/requirementDiagram-UZGBJVZJ-CIXjIi4F.js.map +1 -0
  118. package/webapp/dist/assets/{sankeyDiagram-WA2Y5GQK-Bz4iUubD.js → sankeyDiagram-TZEHDZUN-DJIt7SRz.js} +2 -2
  119. package/webapp/dist/assets/sankeyDiagram-TZEHDZUN-DJIt7SRz.js.map +1 -0
  120. package/webapp/dist/assets/{sequenceDiagram-2WXFIKYE-DsFI9bic.js → sequenceDiagram-WL72ISMW-BpDK1ROT.js} +201 -601
  121. package/webapp/dist/assets/sequenceDiagram-WL72ISMW-BpDK1ROT.js.map +1 -0
  122. package/webapp/dist/assets/{stateDiagram-RAJIS63D-DLv9OSg4.js → stateDiagram-FKZM4ZOC-BoKGfmHf.js} +9 -9
  123. package/webapp/dist/assets/stateDiagram-FKZM4ZOC-BoKGfmHf.js.map +1 -0
  124. package/webapp/dist/assets/{stateDiagram-v2-FVOUBMTO-DVlwzCvy.js → stateDiagram-v2-4FDKWEC3--haXC2JK.js} +5 -5
  125. package/webapp/dist/assets/stateDiagram-v2-4FDKWEC3--haXC2JK.js.map +1 -0
  126. package/webapp/dist/assets/{timeline-definition-YZTLITO2-DnKbq6n0.js → timeline-definition-IT6M3QCI-BmSg3Hjf.js} +3 -3
  127. package/webapp/dist/assets/timeline-definition-IT6M3QCI-BmSg3Hjf.js.map +1 -0
  128. package/webapp/dist/assets/{treemap-KZPCXAKY-D9fYHZ__.js → treemap-GDKQZRPO-D9OuyDVA.js} +24 -37
  129. package/webapp/dist/assets/treemap-GDKQZRPO-D9OuyDVA.js.map +1 -0
  130. package/webapp/dist/assets/{xychartDiagram-JWTSCODW-Bt-gKvam.js → xychartDiagram-PRI3JC2R-CVqSvO_S.js} +4 -4
  131. package/webapp/dist/assets/xychartDiagram-PRI3JC2R-CVqSvO_S.js.map +1 -0
  132. package/webapp/dist/index.html +2 -2
  133. package/webapp/dist/assets/_basePickBy-CG55qWp2.js.map +0 -1
  134. package/webapp/dist/assets/_baseUniq-Dd4UGB2O.js.map +0 -1
  135. package/webapp/dist/assets/arc-C2qiF4r3.js.map +0 -1
  136. package/webapp/dist/assets/architectureDiagram-2XIMDMQ5-DQ4Z8fy_.js.map +0 -1
  137. package/webapp/dist/assets/blockDiagram-WCTKOSBZ-CPvOuMZA.js.map +0 -1
  138. package/webapp/dist/assets/c4Diagram-IC4MRINW-DElaFpnJ.js.map +0 -1
  139. package/webapp/dist/assets/channel-BR7mZa90.js.map +0 -1
  140. package/webapp/dist/assets/chunk-4BX2VUAB-DTmXCBYX.js.map +0 -1
  141. package/webapp/dist/assets/chunk-55IACEB6-DeBB4aJ4.js.map +0 -1
  142. package/webapp/dist/assets/chunk-FMBD7UC4-CXpgeev4.js.map +0 -1
  143. package/webapp/dist/assets/chunk-JSJVCQXG-DWfckfhO.js.map +0 -1
  144. package/webapp/dist/assets/chunk-KX2RTZJC-DWG_wpHB.js.map +0 -1
  145. package/webapp/dist/assets/chunk-NQ4KR5QH-DRcsqoac.js.map +0 -1
  146. package/webapp/dist/assets/chunk-QZHKN3VN-B9GPAJ2s.js.map +0 -1
  147. package/webapp/dist/assets/chunk-WL4C6EOR-V3Fq1ULq.js.map +0 -1
  148. package/webapp/dist/assets/classDiagram-VBA2DB6C-DspG486Z.js.map +0 -1
  149. package/webapp/dist/assets/classDiagram-v2-RAHNMMFH-DspG486Z.js.map +0 -1
  150. package/webapp/dist/assets/clone-M8ztABN5.js.map +0 -1
  151. package/webapp/dist/assets/cose-bilkent-S5V4N54A-DZihobe3.js.map +0 -1
  152. package/webapp/dist/assets/dagre-KLK3FWXG-DBLWy3vi.js.map +0 -1
  153. package/webapp/dist/assets/diagram-E7M64L7V-D7IrPWaY.js.map +0 -1
  154. package/webapp/dist/assets/diagram-IFDJBPK2-DbF-vN3U.js.map +0 -1
  155. package/webapp/dist/assets/diagram-P4PSJMXO-BxBVRVaM.js.map +0 -1
  156. package/webapp/dist/assets/erDiagram-INFDFZHY-ny9JoOhV.js.map +0 -1
  157. package/webapp/dist/assets/flowDiagram-PKNHOUZH-BMgWUlvY.js.map +0 -1
  158. package/webapp/dist/assets/ganttDiagram-A5KZAMGK-CCYpj3PM.js.map +0 -1
  159. package/webapp/dist/assets/gitGraphDiagram-K3NZZRJ6-BFJGaDtk.js.map +0 -1
  160. package/webapp/dist/assets/graph-Cp0m7fHH.js +0 -782
  161. package/webapp/dist/assets/graph-Cp0m7fHH.js.map +0 -1
  162. package/webapp/dist/assets/infoDiagram-LFFYTUFH-Dnve0aOc.js.map +0 -1
  163. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DkSZM5sz.js +0 -966
  164. package/webapp/dist/assets/ishikawaDiagram-PHBUUO56-DkSZM5sz.js.map +0 -1
  165. package/webapp/dist/assets/journeyDiagram-4ABVD52K-D8_2EbDV.js.map +0 -1
  166. package/webapp/dist/assets/kanban-definition-K7BYSVSG-BdmMXQQk.js.map +0 -1
  167. package/webapp/dist/assets/layout-3tA84hoP.js.map +0 -1
  168. package/webapp/dist/assets/linear-CpN6Japh.js.map +0 -1
  169. package/webapp/dist/assets/mindmap-definition-YRQLILUH-HiYNz7qL.js.map +0 -1
  170. package/webapp/dist/assets/pieDiagram-SKSYHLDU-DCVp50CX.js.map +0 -1
  171. package/webapp/dist/assets/quadrantDiagram-337W2JSQ-CCX7dwY0.js.map +0 -1
  172. package/webapp/dist/assets/requirementDiagram-Z7DCOOCP-Cba7jjkf.js.map +0 -1
  173. package/webapp/dist/assets/sankeyDiagram-WA2Y5GQK-Bz4iUubD.js.map +0 -1
  174. package/webapp/dist/assets/sequenceDiagram-2WXFIKYE-DsFI9bic.js.map +0 -1
  175. package/webapp/dist/assets/stateDiagram-RAJIS63D-DLv9OSg4.js.map +0 -1
  176. package/webapp/dist/assets/stateDiagram-v2-FVOUBMTO-DVlwzCvy.js.map +0 -1
  177. package/webapp/dist/assets/timeline-definition-YZTLITO2-DnKbq6n0.js.map +0 -1
  178. package/webapp/dist/assets/treemap-KZPCXAKY-D9fYHZ__.js.map +0 -1
  179. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CzKI47Ba.js +0 -2487
  180. package/webapp/dist/assets/vennDiagram-LZ73GAT5-CzKI47Ba.js.map +0 -1
  181. package/webapp/dist/assets/xychartDiagram-JWTSCODW-Bt-gKvam.js.map +0 -1
package/dist/tools/txt.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.prepareFileAppendTool = exports.prepareFileBlockReplaceTool = exports.applyFileModificationTool = exports.prepareFileInsertBeforeTool = exports.prepareFileInsertAfterTool = exports.prepareFileRangeEditTool = exports.overwriteEntireFileTool = exports.createNewFileTool = exports.readFileTool = void 0;
6
+ exports.prepareFileAppendTool = exports.prepareFileBlockReplaceTool = exports.applyFileModificationTool = exports.prepareFileInsertBeforeTool = exports.prepareFileInsertAfterTool = exports.prepareFileRangeEditTool = exports.overwriteEntireFileTool = exports.createNewFileTool = exports.fsReadFileTool = exports.readFileTool = void 0;
7
7
  const crypto_1 = __importDefault(require("crypto"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const promises_1 = __importDefault(require("fs/promises"));
@@ -25,6 +25,12 @@ function ensureInsideWorkspace(rel) {
25
25
  }
26
26
  return file;
27
27
  }
28
+ function resolveLocalFilesystemPath(inputPath) {
29
+ return path_1.default.resolve(process.cwd(), inputPath);
30
+ }
31
+ function displayLocalFilesystemPath(inputPath, absPath) {
32
+ return path_1.default.isAbsolute(inputPath) ? absPath : inputPath;
33
+ }
28
34
  function normalizeFileWriteBody(inputBody) {
29
35
  if (inputBody === '' || inputBody.endsWith('\n')) {
30
36
  return { normalizedBody: inputBody, addedTrailingNewlineToContent: false };
@@ -773,6 +779,220 @@ exports.readFileTool = {
773
779
  }
774
780
  },
775
781
  };
782
+ exports.fsReadFileTool = {
783
+ type: 'func',
784
+ name: 'fs_read_file',
785
+ description: 'Read a bounded local filesystem text file without restricting paths to rtws (runtime workspace).',
786
+ descriptionI18n: {
787
+ en: 'Read a bounded local filesystem text file without restricting paths to rtws (runtime workspace).',
788
+ zh: '读取本机文件系统文本文件(有上限/可截断),不限制路径必须位于 rtws(运行时工作区)内。',
789
+ },
790
+ parameters: {
791
+ type: 'object',
792
+ additionalProperties: false,
793
+ properties: {
794
+ path: {
795
+ type: 'string',
796
+ description: 'File path. Absolute paths are accepted; relative paths resolve from the current process cwd.',
797
+ },
798
+ range: {
799
+ type: 'string',
800
+ description: "Optional line range string: '10~50' | '300~' | '~20' | '~' (1-based, inclusive).",
801
+ },
802
+ max_lines: { type: 'integer', description: 'Max lines to show (default: 500).' },
803
+ show_linenos: {
804
+ type: 'boolean',
805
+ description: 'Whether to show line numbers (default: true).',
806
+ },
807
+ },
808
+ required: ['path'],
809
+ },
810
+ argsValidation: 'dominds',
811
+ call: async (_dlg, _caller, args) => {
812
+ const language = (0, work_language_1.getWorkLanguage)();
813
+ const labels = language === 'zh'
814
+ ? {
815
+ formatError: '请使用正确的函数工具参数调用 `fs_read_file`。\n\n' +
816
+ '**期望格式:** `fs_read_file({ path, range, max_lines, show_linenos })`\n\n' +
817
+ '注意:`path` 可为绝对路径,或相对当前进程 cwd 的路径;可选字段可直接省略。若你显式传入“未指定/默认”,可使用:`range: ""`(不指定范围)、`max_lines: 0`(默认 500)。',
818
+ formatErrorWithReason: (msg) => `❌ **错误:** ${msg}\n\n请使用正确的函数工具参数调用 \`fs_read_file\`。`,
819
+ fileLabel: '文件',
820
+ warningTruncatedByMaxLines: (shown, maxLines) => `⚠️ **警告:** 输出已截断(最多显示 ${maxLines} 行,当前显示 ${shown} 行)\n\n`,
821
+ warningTruncatedByCharLimit: (shown, maxChars) => `⚠️ **警告:** 输出已截断(字符总数上限约 ${maxChars},当前显示 ${shown} 行)\n\n`,
822
+ warningTruncatedByMaxLinesWithRange: (maxLines, rangeLines, used) => `⚠️ **警告:** 输出将被 \`max_lines\`(${maxLines})截断:\`range\` 共 ${rangeLines} 行,仅返回前 ${used} 行。\n\n`,
823
+ hintUseRangeNext: (filePath, start, end) => `💡 **提示:** 可继续调用 \`fs_read_file\` 读取下一段,例如:\`fs_read_file({ "path": "${filePath}", "range": "${start}~${end}", "max_lines": 0, "show_linenos": true })\`\n\n`,
824
+ hintLargeFileStrategy: (filePath) => `💡 **大文件策略:** 建议分多程分析,每程读取一段并整理接续信息,再继续读取下一段(例如:\`fs_read_file({ "path": "${filePath}", "range": "1~500", "max_lines": 0, "show_linenos": true })\`)。\n\n`,
825
+ sizeLabel: '大小',
826
+ totalLinesLabel: '总行数',
827
+ emptyFileLabel: '<空文件>',
828
+ failedToRead: (msg) => `❌ **错误**\n\n读取文件失败:${msg}`,
829
+ invalidFormatMultiToolCalls: (toolName) => `INVALID_FORMAT:检测到疑似把多个工具调用文本混入了 \`fs_read_file\` 的输入(例如出现 \`${toolName}\`)。\n\n请把不同工具拆分为独立调用。`,
830
+ }
831
+ : {
832
+ formatError: 'Please call the function tool `fs_read_file` with valid arguments.\n\n' +
833
+ '**Expected:** `fs_read_file({ path, range, max_lines, show_linenos })`\n\n' +
834
+ 'Note: `path` may be absolute or relative to the current process cwd. Optional fields can be omitted. If you explicitly pass “unset/default”, use `range: ""` (unset range) and `max_lines: 0` (default 500).',
835
+ formatErrorWithReason: (msg) => `❌ **Error:** ${msg}\n\nPlease call the function tool \`fs_read_file\` with valid arguments.`,
836
+ fileLabel: 'File',
837
+ warningTruncatedByMaxLines: (shown, maxLines) => `⚠️ **Warning:** Output was truncated (max ${maxLines} lines; showing ${shown})\n\n`,
838
+ warningTruncatedByCharLimit: (shown, maxChars) => `⚠️ **Warning:** Output was truncated (~${maxChars} character cap; showing ${shown} lines)\n\n`,
839
+ warningTruncatedByMaxLinesWithRange: (maxLines, rangeLines, used) => `⚠️ **Warning:** Output will be truncated by \`max_lines\` (${maxLines}): \`range\` has ${rangeLines} lines; returning only the first ${used}.\n\n`,
840
+ hintUseRangeNext: (filePath, start, end) => `💡 **Hint:** Call \`fs_read_file\` again to continue reading, e.g. \`fs_read_file({ "path": "${filePath}", "range": "${start}~${end}", "max_lines": 0, "show_linenos": true })\`\n\n`,
841
+ hintLargeFileStrategy: (filePath) => `💡 **Large file strategy:** Analyze in slices and continue with another \`fs_read_file\` range, e.g. \`fs_read_file({ "path": "${filePath}", "range": "1~500", "max_lines": 0, "show_linenos": true })\`.\n\n`,
842
+ sizeLabel: 'Size',
843
+ totalLinesLabel: 'Total lines',
844
+ emptyFileLabel: '<empty file>',
845
+ failedToRead: (msg) => `❌ **Error**\n\nFailed to read file: ${msg}`,
846
+ invalidFormatMultiToolCalls: (toolName) => `INVALID_FORMAT: Detected what looks like function tool call text mixed into \`fs_read_file\` input (e.g. \`${toolName}\`).\n\nSplit different tools into separate calls.`,
847
+ };
848
+ const errorMsg = (zh, en) => (language === 'zh' ? zh : en);
849
+ const pathValue = args['path'];
850
+ if (typeof pathValue !== 'string' || pathValue.trim() === '') {
851
+ return (0, tool_1.toolFailure)(labels.formatError);
852
+ }
853
+ const requestedPath = pathValue.trim();
854
+ const absPath = resolveLocalFilesystemPath(requestedPath);
855
+ const displayPath = displayLocalFilesystemPath(requestedPath, absPath);
856
+ const showLinenosValue = args['show_linenos'];
857
+ const showLinenos = showLinenosValue === undefined
858
+ ? true
859
+ : typeof showLinenosValue === 'boolean'
860
+ ? showLinenosValue
861
+ : null;
862
+ if (showLinenos === null) {
863
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`show_linenos` 必须是 boolean', '`show_linenos` must be a boolean')));
864
+ }
865
+ const maxLinesValue = args['max_lines'];
866
+ const maxLinesSpecified = maxLinesValue !== undefined && maxLinesValue !== 0;
867
+ const maxLines = maxLinesValue === undefined || maxLinesValue === 0
868
+ ? 500
869
+ : typeof maxLinesValue === 'number' && Number.isInteger(maxLinesValue) && maxLinesValue > 0
870
+ ? maxLinesValue
871
+ : null;
872
+ if (maxLines === null) {
873
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`max_lines` 必须是正整数(或传 0 表示默认值)', '`max_lines` must be a positive integer (or 0 for default)')));
874
+ }
875
+ const rangeValue = args['range'];
876
+ const rangeStr = rangeValue === undefined ? '' : typeof rangeValue === 'string' ? rangeValue.trim() : null;
877
+ if (rangeStr === null) {
878
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`range` 必须是 string(传 "" 表示不指定)', '`range` must be a string (use "" for unset)')));
879
+ }
880
+ const rangeSpecified = rangeStr !== '';
881
+ const detectMultiToolCalls = (input) => {
882
+ const trimmed = input.trimEnd();
883
+ const lines = trimmed.split(/\r?\n/);
884
+ if (lines.length <= 1)
885
+ return null;
886
+ const suspicious = lines.slice(1).find((l) => l.trimStart().startsWith('@'));
887
+ if (!suspicious)
888
+ return null;
889
+ return suspicious.trimStart().split(/\s+/)[0] ?? null;
890
+ };
891
+ const suspiciousTool = detectMultiToolCalls(requestedPath) ??
892
+ (rangeSpecified ? detectMultiToolCalls(rangeStr) : null);
893
+ if (suspiciousTool) {
894
+ return (0, tool_1.toolFailure)(labels.invalidFormatMultiToolCalls(suspiciousTool));
895
+ }
896
+ const options = { decorateLinenos: showLinenos, maxLines };
897
+ if (rangeSpecified) {
898
+ const match = rangeStr.match(/^(\d+)?~(\d+)?$/);
899
+ if (!match) {
900
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`range` 无效(期望:"start~end" / "start~" / "~end" / "~")', 'Invalid `range` (expected "start~end" / "start~" / "~end" / "~")')));
901
+ }
902
+ const [, startStr, endStr] = match;
903
+ if (startStr) {
904
+ const start = Number.parseInt(startStr, 10);
905
+ if (!Number.isFinite(start) || start <= 0) {
906
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`range` 起始行号无效(必须是正整数)', 'Invalid `range` start (must be a positive integer)')));
907
+ }
908
+ options.rangeStart = start;
909
+ }
910
+ if (endStr) {
911
+ const end = Number.parseInt(endStr, 10);
912
+ if (!Number.isFinite(end) || end <= 0) {
913
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`range` 结束行号无效(必须是正整数)', 'Invalid `range` end (must be a positive integer)')));
914
+ }
915
+ options.rangeEnd = end;
916
+ }
917
+ if (options.rangeStart !== undefined &&
918
+ options.rangeEnd !== undefined &&
919
+ options.rangeStart > options.rangeEnd) {
920
+ return (0, tool_1.toolFailure)(labels.formatErrorWithReason(errorMsg('`range` 无效(start 必须 <= end)', 'Invalid `range` (start must be <= end)')));
921
+ }
922
+ }
923
+ try {
924
+ const stat = await promises_1.default.stat(absPath);
925
+ const contentSummary = await readFileContentBounded(absPath, options);
926
+ const maxLinesRangeMismatch = contentSummary.truncatedByMaxLines &&
927
+ maxLinesSpecified &&
928
+ rangeSpecified &&
929
+ options.rangeEnd !== undefined
930
+ ? (() => {
931
+ const rangeStart = options.rangeStart ?? 1;
932
+ const rangeLines = options.rangeEnd - rangeStart + 1;
933
+ if (rangeLines > options.maxLines) {
934
+ return { maxLines: options.maxLines, rangeLines, used: options.maxLines };
935
+ }
936
+ return null;
937
+ })()
938
+ : null;
939
+ const headerSummary = language === 'zh'
940
+ ? `fs_read_file:${displayPath};size=${stat.size} bytes;total_lines=${contentSummary.totalLines};shown=${contentSummary.shownLines}.`
941
+ : `fs_read_file: ${displayPath}; size=${stat.size} bytes; total_lines=${contentSummary.totalLines}; shown=${contentSummary.shownLines}.`;
942
+ const yaml = [
943
+ `status: ok`,
944
+ `mode: fs_read_file`,
945
+ `path: ${yamlQuote(displayPath)}`,
946
+ `size_bytes: ${stat.size}`,
947
+ `total_lines: ${contentSummary.totalLines}`,
948
+ `shown_lines: ${contentSummary.shownLines}`,
949
+ `truncated_by_max_lines: ${contentSummary.truncatedByMaxLines}`,
950
+ `truncated_by_char_limit: ${contentSummary.truncatedByCharLimit}`,
951
+ `summary: ${yamlQuote(headerSummary)}`,
952
+ ].join('\n');
953
+ let markdown = `${formatYamlCodeBlock(yaml)}\n\n`;
954
+ markdown += `📄 **${labels.fileLabel}:** \`${displayPath}\`\n`;
955
+ if (maxLinesRangeMismatch) {
956
+ markdown += labels.warningTruncatedByMaxLinesWithRange(maxLinesRangeMismatch.maxLines, maxLinesRangeMismatch.rangeLines, maxLinesRangeMismatch.used);
957
+ }
958
+ if (contentSummary.truncatedByCharLimit) {
959
+ markdown += labels.warningTruncatedByCharLimit(contentSummary.shownLines, READ_FILE_CONTENT_CHAR_LIMIT);
960
+ }
961
+ else if (contentSummary.truncatedByMaxLines && !maxLinesRangeMismatch) {
962
+ markdown += labels.warningTruncatedByMaxLines(contentSummary.shownLines, options.maxLines);
963
+ }
964
+ if ((contentSummary.truncatedByCharLimit || contentSummary.truncatedByMaxLines) &&
965
+ !maxLinesSpecified &&
966
+ !rangeSpecified) {
967
+ const start = contentSummary.shownLines + 1;
968
+ const end = start + 199;
969
+ markdown += labels.hintUseRangeNext(displayPath, start, end);
970
+ }
971
+ if (contentSummary.truncatedByCharLimit) {
972
+ markdown += labels.hintLargeFileStrategy(displayPath);
973
+ }
974
+ markdown += `**${labels.sizeLabel}:** ${stat.size} bytes\n`;
975
+ markdown += `**${labels.totalLinesLabel}:** ${contentSummary.totalLines}\n`;
976
+ if (contentSummary.totalLines === 0) {
977
+ markdown += `\n${labels.emptyFileLabel}\n`;
978
+ }
979
+ markdown += '\n';
980
+ if (contentSummary.totalLines > 0) {
981
+ markdown += '```\n';
982
+ markdown += contentSummary.formattedContent;
983
+ if (!contentSummary.formattedContent.endsWith('\n')) {
984
+ markdown += '\n';
985
+ }
986
+ markdown += '```';
987
+ }
988
+ return (0, tool_1.toolSuccess)(markdown);
989
+ }
990
+ catch (error) {
991
+ const msg = error instanceof Error ? error.message : String(error);
992
+ return (0, tool_1.toolFailure)(labels.failedToRead(msg));
993
+ }
994
+ },
995
+ };
776
996
  const overwriteEntireFileSchema = {
777
997
  type: 'object',
778
998
  additionalProperties: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dominds",
3
- "version": "1.25.1",
3
+ "version": "1.25.2",
4
4
  "description": "Dominds CLI and aggregation shell for the LongRun AI kernel/runtime packages.",
5
5
  "type": "commonjs",
6
6
  "publishConfig": {
@@ -53,8 +53,8 @@
53
53
  "yaml": "^2.8.2",
54
54
  "zod": "^4.3.6",
55
55
  "@longrun-ai/codex-auth": "0.13.0",
56
- "@longrun-ai/kernel": "1.15.1",
57
- "@longrun-ai/shell": "1.15.1"
56
+ "@longrun-ai/kernel": "1.15.2",
57
+ "@longrun-ai/shell": "1.15.2"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@types/node": "^25.3.5",
@@ -1,5 +1,5 @@
1
- import { e as isSymbol, c as baseFlatten, g as baseIteratee, k as keys, h as baseFindIndex, j as baseEach, l as arrayMap, m as hasPath, n as castPath, t as toKey, o as baseGet } from "./_baseUniq-Dd4UGB2O.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-EvfDN91D.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-IY-Vfzx1.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-arD81Nnh.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-CG55qWp2.js.map
196
+ //# sourceMappingURL=_basePickBy-CbWZ8qnS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_basePickBy-CbWZ8qnS.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 { 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-EvfDN91D.js";
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-arD81Nnh.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-Dd4UGB2O.js.map
836
+ //# sourceMappingURL=_baseUniq-IY-Vfzx1.js.map