deepfish-ai 2.0.5 → 2.0.7

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.
@@ -8703,8 +8703,8 @@ var import_fs_extra17 = __toESM(require("fs-extra"));
8703
8703
  var import_path12 = __toESM(require("path"));
8704
8704
 
8705
8705
  // src/agent/AIAgent/index.ts
8706
- var import_langchain16 = require("langchain");
8707
- var import_deepagents = require("deepagents");
8706
+ var import_langchain18 = require("langchain");
8707
+ var import_deepagents2 = require("deepagents");
8708
8708
 
8709
8709
  // src/agent/AIAgent/utils/langgraph-checkpoint-filesystem/filesystem-saver.ts
8710
8710
  var import_runnables = require("@langchain/core/runnables");
@@ -23265,7 +23265,7 @@ function date4(params) {
23265
23265
  config(en_default());
23266
23266
 
23267
23267
  // src/agent/AIAgent/index.ts
23268
- var import_eventemitter_super = require("eventemitter-super");
23268
+ var import_eventemitter_super2 = require("eventemitter-super");
23269
23269
 
23270
23270
  // src/agent/AIAgent/middleware/eventEmitMiddleware.ts
23271
23271
  var import_langchain = require("langchain");
@@ -23496,11 +23496,33 @@ var executeCommandTool = (0, import_langchain3.tool)(({ command, timeout }) => s
23496
23496
  });
23497
23497
 
23498
23498
  // src/agent/tools/executeJSCode.ts
23499
- var import_langchain4 = require("langchain");
23499
+ var import_langchain5 = require("langchain");
23500
23500
  var import_path6 = __toESM(require("path"));
23501
23501
  var import_fs_extra7 = __toESM(require("fs-extra"));
23502
- var _require = require;
23503
- async function executeJSCode(code) {
23502
+
23503
+ // src/agent/tools/subAgent.ts
23504
+ var import_langchain4 = require("langchain");
23505
+ async function subAgentExec(prompt, runtime) {
23506
+ const curAgent = runtime.context?.curAgent;
23507
+ if (!curAgent || typeof curAgent.createSubAgent !== "function") {
23508
+ throw new Error("\u5F53\u524D\u8FD0\u884C\u4E0A\u4E0B\u6587\u4E0D\u652F\u6301\u521B\u5EFA\u5B50 agent");
23509
+ }
23510
+ const subAgent = await curAgent.createSubAgent();
23511
+ return subAgent.execute(prompt);
23512
+ }
23513
+ var subAgentTool = (0, import_langchain4.tool)(
23514
+ async ({ prompt }, runtime) => safeTool(() => subAgentExec(prompt, runtime)),
23515
+ {
23516
+ name: "subAgent_exec",
23517
+ description: "\u521B\u5EFA\u4E00\u4E2A\u901A\u7528\u5B50 agent \u6765\u6267\u884C\u72EC\u7ACB\u4EFB\u52A1\uFF0C\u5E76\u8FD4\u56DE\u5B50 agent \u7684\u6267\u884C\u7ED3\u679C\u3002\u9002\u5408\u62C6\u5206\u590D\u6742\u4EFB\u52A1\u3001\u5E76\u884C\u8C03\u7814\u6216\u59D4\u6D3E\u5B50\u4EFB\u52A1\u3002",
23518
+ schema: external_exports.object({
23519
+ prompt: external_exports.string().min(1).describe("\u4EA4\u7ED9\u901A\u7528\u5B50 agent \u6267\u884C\u7684\u5B8C\u6574\u4EFB\u52A1\u63CF\u8FF0")
23520
+ })
23521
+ }
23522
+ );
23523
+
23524
+ // src/agent/tools/executeJSCode.ts
23525
+ async function executeJSCode(code, runtime) {
23504
23526
  logInfo("Executing JavaScript code: ");
23505
23527
  logInfo(code);
23506
23528
  try {
@@ -23509,15 +23531,26 @@ async function executeJSCode(code) {
23509
23531
  const result = await __main()
23510
23532
  return result || "Code executed successfully, but __main() did not return anything."
23511
23533
  })()`;
23512
- const fn = new Function("require", wrapped);
23513
- const result = await fn(_require);
23534
+ const fn = new Function("require", "agentExec", wrapped);
23535
+ const _require = require;
23536
+ const newRequire = (modulePath) => {
23537
+ if (modulePath.startsWith("./")) {
23538
+ const resolvedPath = import_path6.default.resolve(process.cwd(), modulePath);
23539
+ return _require(resolvedPath);
23540
+ }
23541
+ return _require(modulePath);
23542
+ };
23543
+ const agentExec = async (prompt) => {
23544
+ return subAgentExec(prompt, runtime);
23545
+ };
23546
+ const result = await fn(newRequire, agentExec);
23514
23547
  return result;
23515
23548
  } catch (error51) {
23516
23549
  logError(`Error executing code: ${error51.stack}`);
23517
23550
  throw error51;
23518
23551
  }
23519
23552
  }
23520
- var getInstalledPackagesTool = (0, import_langchain4.tool)(
23553
+ var getInstalledPackagesTool = (0, import_langchain5.tool)(
23521
23554
  async () => safeTool(() => {
23522
23555
  const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23523
23556
  const pkg = import_fs_extra7.default.readJsonSync(packageJson);
@@ -23529,7 +23562,7 @@ var getInstalledPackagesTool = (0, import_langchain4.tool)(
23529
23562
  schema: external_exports.object({})
23530
23563
  }
23531
23564
  );
23532
- var checkPackageInstalledTool = (0, import_langchain4.tool)(
23565
+ var checkPackageInstalledTool = (0, import_langchain5.tool)(
23533
23566
  async ({ packageName }) => safeTool(() => {
23534
23567
  const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23535
23568
  const pkg = import_fs_extra7.default.readJsonSync(packageJson);
@@ -23544,7 +23577,7 @@ var checkPackageInstalledTool = (0, import_langchain4.tool)(
23544
23577
  })
23545
23578
  }
23546
23579
  );
23547
- var installPackageTool = (0, import_langchain4.tool)(
23580
+ var installPackageTool = (0, import_langchain5.tool)(
23548
23581
  async ({ packageName }) => safeTool(() => {
23549
23582
  const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23550
23583
  const pkg = import_fs_extra7.default.readJsonSync(packageJson);
@@ -23561,12 +23594,16 @@ var installPackageTool = (0, import_langchain4.tool)(
23561
23594
  })
23562
23595
  }
23563
23596
  );
23564
- var executeJSCodeTool = (0, import_langchain4.tool)(async ({ code }) => safeTool(() => executeJSCode(code)), {
23597
+ var executeJSCodeTool = (0, import_langchain5.tool)(async ({ code }, runtime) => safeTool(() => executeJSCode(code, runtime)), {
23565
23598
  name: "execute_js_code",
23566
- description: `\u6267\u884C\u4E00\u6BB5Node.js\u4EE3\u7801\u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C\u3002\u6CE8\u610F\uFF1A\u4EE3\u7801\u5FC5\u987B\u5305\u542B\u4E00\u4E2A__main()\u51FD\u6570\u4F5C\u4E3A\u6267\u884C\u5165\u53E3\uFF0C__main()\u51FD\u6570\u5185\u5FC5\u987B\u662F\u4E00\u4E2A\u4F7F\u7528async\u524D\u7F00\u7684\u51FD\u6570\u3002\u793A\u4F8B\u4EE3\u7801\uFF1A
23599
+ description: `\u6267\u884C\u4E00\u6BB5Node.js\u4EE3\u7801\u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C\u3002\u6CE8\u610F\uFF1A\u4EE3\u7801\u5FC5\u987B\u5305\u542B\u4E00\u4E2A__main()\u51FD\u6570\u4F5C\u4E3A\u6267\u884C\u5165\u53E3\uFF0C__main()\u51FD\u6570\u5185\u5FC5\u987B\u662F\u4E00\u4E2A\u4F7F\u7528async\u524D\u7F00\u7684\u51FD\u6570\u3002
23600
+ \u53EF\u7528\u5185\u7F6E\u51FD\u6570\uFF1A
23601
+ - agentExec(prompt: string): Promise<string>\uFF0C\u521B\u5EFA\u4E00\u4E2A\u901A\u7528\u5B50 agent \u6267\u884C\u6307\u5B9A\u4EFB\u52A1\u5E76\u8FD4\u56DE\u7ED3\u679C\uFF0C\u9002\u5408\u5C06\u590D\u6742\u4EFB\u52A1\u62C6\u5206\u7ED9\u5B50 agent \u5B8C\u6210\u3002
23602
+ \u793A\u4F8B\u4EE3\u7801\uFF1A
23567
23603
  async function __main() {
23568
23604
  const data = await fs.readFile("data.txt", "utf-8")
23569
- return data
23605
+ const analysis = await agentExec("\u8BF7\u5206\u6790\u8FD9\u6BB5\u6587\u4EF6\u5185\u5BB9\u5E76\u603B\u7ED3\u91CD\u70B9\uFF1A" + data)
23606
+ return analysis
23570
23607
  }
23571
23608
  `,
23572
23609
  schema: external_exports.object({
@@ -23662,9 +23699,9 @@ var UserCache = class {
23662
23699
  };
23663
23700
 
23664
23701
  // src/agent/tools/learn-self.ts
23665
- var import_langchain5 = require("langchain");
23702
+ var import_langchain6 = require("langchain");
23666
23703
  var userCache = new UserCache();
23667
- var learnSelfTool = (0, import_langchain5.tool)(
23704
+ var learnSelfTool = (0, import_langchain6.tool)(
23668
23705
  ({ description, content }) => safeTool(() => {
23669
23706
  userCache.add(description, content);
23670
23707
  return `\u5DF2\u7F13\u5B58\u89E3\u51B3\u65B9\u6848: ${description}`;
@@ -23678,7 +23715,7 @@ var learnSelfTool = (0, import_langchain5.tool)(
23678
23715
  })
23679
23716
  }
23680
23717
  );
23681
- var getLearnedDetailTool = (0, import_langchain5.tool)(
23718
+ var getLearnedDetailTool = (0, import_langchain6.tool)(
23682
23719
  ({ indexOrId }) => safeTool(() => {
23683
23720
  const index = Number(indexOrId);
23684
23721
  let item;
@@ -23707,7 +23744,7 @@ ${detail.content}`;
23707
23744
  })
23708
23745
  }
23709
23746
  );
23710
- var updateLearnContentTool = (0, import_langchain5.tool)(
23747
+ var updateLearnContentTool = (0, import_langchain6.tool)(
23711
23748
  ({ id, content }) => safeTool(() => {
23712
23749
  const success2 = userCache.update(id, content);
23713
23750
  if (!success2) {
@@ -23724,7 +23761,7 @@ var updateLearnContentTool = (0, import_langchain5.tool)(
23724
23761
  })
23725
23762
  }
23726
23763
  );
23727
- var getCatalogFilePathTool = (0, import_langchain5.tool)(() => safeTool(() => userCache.getCatalogFilePath()), {
23764
+ var getCatalogFilePathTool = (0, import_langchain6.tool)(() => safeTool(() => userCache.getCatalogFilePath()), {
23728
23765
  name: "get_catalog_file_path",
23729
23766
  description: "\u83B7\u53D6\u7F13\u5B58\u7D22\u5F15\u6587\u4EF6 catalog.json \u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\u8BE5\u6587\u4EF6\u5305\u542B\u6240\u6709\u5DF2\u7F13\u5B58\u65B9\u6848\u7684 id \u548C description \u5217\u8868\u3002\u83B7\u53D6\u8DEF\u5F84\u540E\uFF0C\u4F7F\u7528 read_file \u5DE5\u5177\u8BFB\u53D6\u8BE5\u6587\u4EF6\u5373\u53EF\u67E5\u770B\u6240\u6709\u7F13\u5B58\u9879\u3002",
23730
23767
  schema: external_exports.object({})
@@ -23734,11 +23771,11 @@ var learnTools = [learnSelfTool, getLearnedDetailTool, updateLearnContentTool, g
23734
23771
  // src/agent/tools/mcp.ts
23735
23772
  var import_mcp_adapters = require("@langchain/mcp-adapters");
23736
23773
  var import_fs_extra9 = __toESM(require("fs-extra"));
23737
- var import_langchain6 = require("langchain");
23774
+ var import_langchain7 = require("langchain");
23738
23775
 
23739
23776
  // src/agent/tools/edit.ts
23740
23777
  var import_fs_extra10 = __toESM(require("fs-extra"));
23741
- var import_langchain7 = require("langchain");
23778
+ var import_langchain8 = require("langchain");
23742
23779
  async function editFileByReplace(filePath, oldString, newString, replaceAll = false) {
23743
23780
  const absPath = resolveWorkspacePath(filePath);
23744
23781
  if (!await import_fs_extra10.default.pathExists(absPath)) {
@@ -23759,7 +23796,7 @@ async function editFileByReplace(filePath, oldString, newString, replaceAll = fa
23759
23796
  await import_fs_extra10.default.writeFile(absPath, nextContent, "utf-8");
23760
23797
  return `\u5DF2\u7F16\u8F91\u6587\u4EF6: ${absPath}\uFF0C\u66FF\u6362 ${replaceAll ? matches : 1} \u5904`;
23761
23798
  }
23762
- var editFileTool = (0, import_langchain7.tool)(
23799
+ var editFileTool = (0, import_langchain8.tool)(
23763
23800
  async ({ filePath, oldString, newString, replaceAll }) => safeTool(() => editFileByReplace(filePath, oldString, newString, replaceAll)),
23764
23801
  {
23765
23802
  name: "edit_file",
@@ -23775,7 +23812,7 @@ var editFileTool = (0, import_langchain7.tool)(
23775
23812
 
23776
23813
  // src/agent/tools/glob.ts
23777
23814
  var import_path8 = __toESM(require("path"));
23778
- var import_langchain8 = require("langchain");
23815
+ var import_langchain9 = require("langchain");
23779
23816
  async function globFiles(pattern, cwd, maxResults = 200, includeHidden = false) {
23780
23817
  const rootDir = resolveWorkspacePath(cwd || ".");
23781
23818
  const allFiles = await walkFiles(rootDir, { includeHidden, maxFiles: Math.max(maxResults * 20, 1e3) });
@@ -23783,7 +23820,7 @@ async function globFiles(pattern, cwd, maxResults = 200, includeHidden = false)
23783
23820
  const matches = allFiles.map((file2) => normalizePathForMatch(import_path8.default.relative(rootDir, file2))).filter((relativePath) => matchesGlob(relativePath, normalizedPattern)).slice(0, maxResults);
23784
23821
  return truncateOutput(formatJson({ cwd: rootDir, pattern, count: matches.length, files: matches }));
23785
23822
  }
23786
- var globTool = (0, import_langchain8.tool)(
23823
+ var globTool = (0, import_langchain9.tool)(
23787
23824
  async ({ pattern, cwd, maxResults, includeHidden }) => safeTool(() => globFiles(pattern, cwd, maxResults, includeHidden)),
23788
23825
  {
23789
23826
  name: "glob_files",
@@ -23800,7 +23837,7 @@ var globTool = (0, import_langchain8.tool)(
23800
23837
  // src/agent/tools/grep.ts
23801
23838
  var import_fs_extra11 = __toESM(require("fs-extra"));
23802
23839
  var import_path9 = __toESM(require("path"));
23803
- var import_langchain9 = require("langchain");
23840
+ var import_langchain10 = require("langchain");
23804
23841
  async function grepFiles(query, cwd, includePattern = "**/*", isRegexp = false, maxResults = 100, includeHidden = false) {
23805
23842
  const rootDir = resolveWorkspacePath(cwd || ".");
23806
23843
  const matcher = isRegexp ? new RegExp(query, "i") : null;
@@ -23825,7 +23862,7 @@ async function grepFiles(query, cwd, includePattern = "**/*", isRegexp = false,
23825
23862
  }
23826
23863
  return truncateOutput(formatJson({ cwd: rootDir, query, includePattern, count: matches.length, matches }));
23827
23864
  }
23828
- var grepTool = (0, import_langchain9.tool)(
23865
+ var grepTool = (0, import_langchain10.tool)(
23829
23866
  async ({ query, pattern, cwd, includePattern, isRegexp, maxResults, includeHidden }) => safeTool(() => {
23830
23867
  const searchQuery = query || pattern;
23831
23868
  if (!searchQuery) {
@@ -23853,7 +23890,7 @@ var grepTool = (0, import_langchain9.tool)(
23853
23890
 
23854
23891
  // src/agent/tools/question.ts
23855
23892
  var import_inquirer = __toESM(require("inquirer"));
23856
- var import_langchain10 = require("langchain");
23893
+ var import_langchain11 = require("langchain");
23857
23894
  async function askQuestion(question, type = "input", choices = []) {
23858
23895
  const promptType = type === "select" ? "list" : type;
23859
23896
  const answer = await import_inquirer.default.prompt([
@@ -23867,7 +23904,7 @@ async function askQuestion(question, type = "input", choices = []) {
23867
23904
  const value = answer["value"];
23868
23905
  return typeof value === "string" ? value : JSON.stringify(value);
23869
23906
  }
23870
- var questionTool = (0, import_langchain10.tool)(async ({ question, type, choices }) => safeTool(() => askQuestion(question, type, choices)), {
23907
+ var questionTool = (0, import_langchain11.tool)(async ({ question, type, choices }) => safeTool(() => askQuestion(question, type, choices)), {
23871
23908
  name: "ask_question",
23872
23909
  description: "\u5F53\u7EE7\u7EED\u4EFB\u52A1\u5FC5\u987B\u83B7\u53D6\u7528\u6237\u6F84\u6E05\u3001\u786E\u8BA4\u6216\u9009\u62E9\u65F6\uFF0C\u5411\u7528\u6237\u53D1\u8D77\u547D\u4EE4\u884C\u63D0\u95EE\u5E76\u8FD4\u56DE\u7B54\u6848\u3002\u4E0D\u8981\u8BE2\u95EE\u5BC6\u7801\u3001\u5BC6\u94A5\u7B49\u654F\u611F\u4FE1\u606F\u3002",
23873
23910
  schema: external_exports.object({
@@ -23880,7 +23917,7 @@ var questionTool = (0, import_langchain10.tool)(async ({ question, type, choices
23880
23917
  // src/agent/tools/read.ts
23881
23918
  var import_fs_extra12 = __toESM(require("fs-extra"));
23882
23919
  var import_iconv_lite2 = __toESM(require("iconv-lite"));
23883
- var import_langchain11 = require("langchain");
23920
+ var import_langchain12 = require("langchain");
23884
23921
  async function readFile(filePath, startLine = 1, endLine = -1, encoding) {
23885
23922
  const absPath = resolveWorkspacePath(filePath);
23886
23923
  if (!await import_fs_extra12.default.pathExists(absPath)) {
@@ -23902,7 +23939,7 @@ async function readFile(filePath, startLine = 1, endLine = -1, encoding) {
23902
23939
  const selected = lines.slice(safeStart - 1, safeEnd).map((line, index) => `${safeStart + index}: ${line}`).join("\n");
23903
23940
  return truncateOutput(formatJson({ filePath: absPath, totalLines: lines.length, startLine: safeStart, endLine: safeEnd, content: selected }));
23904
23941
  }
23905
- var readFileTool = (0, import_langchain11.tool)(
23942
+ var readFileTool = (0, import_langchain12.tool)(
23906
23943
  async ({ filePath, startLine, endLine, encoding }) => safeTool(() => readFile(filePath, startLine, endLine, encoding)),
23907
23944
  {
23908
23945
  name: "read_file",
@@ -23919,7 +23956,7 @@ var readFileTool = (0, import_langchain11.tool)(
23919
23956
  // src/agent/tools/semanticMemory.ts
23920
23957
  var import_fs_extra13 = __toESM(require("fs-extra"));
23921
23958
  var import_path10 = __toESM(require("path"));
23922
- var import_langchain12 = require("langchain");
23959
+ var import_langchain13 = require("langchain");
23923
23960
  var DEFAULT_MEMORY_MARKDOWN = `# \u7528\u6237\u8BED\u4E49\u8BB0\u5FC6
23924
23961
 
23925
23962
  > \u8BE5\u6587\u4EF6\u7531\u8BED\u4E49\u8BB0\u5FC6\u5DE5\u5177\u7EF4\u62A4\u3002\u4EC5\u8BB0\u5F55\u53EF\u957F\u671F\u590D\u7528\u7684\u7528\u6237\u4FE1\u606F\u3001\u4E60\u60EF\u548C\u504F\u597D\uFF1B\u4E0D\u8981\u8BB0\u5F55\u5BC6\u7801\u3001\u5BC6\u94A5\u3001\u4EE4\u724C\u7B49\u654F\u611F\u4FE1\u606F\u3002
@@ -23955,7 +23992,7 @@ async function updateSemanticMemory(memoryFilePath, content) {
23955
23992
  `, "utf-8");
23956
23993
  return `\u5DF2\u66F4\u65B0\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6: ${memoryFilePath}`;
23957
23994
  }
23958
- var readSemanticMemoryTool = (0, import_langchain12.tool)(
23995
+ var readSemanticMemoryTool = (0, import_langchain13.tool)(
23959
23996
  async (_input, runtime) => safeTool(() => readSemanticMemory(getMemoryFilePath(runtime.context?.memoryFilePath))),
23960
23997
  {
23961
23998
  name: "read_user_semantic_memory",
@@ -23963,7 +24000,7 @@ var readSemanticMemoryTool = (0, import_langchain12.tool)(
23963
24000
  schema: external_exports.object({})
23964
24001
  }
23965
24002
  );
23966
- var updateSemanticMemoryTool = (0, import_langchain12.tool)(
24003
+ var updateSemanticMemoryTool = (0, import_langchain13.tool)(
23967
24004
  async ({ content }, runtime) => safeTool(() => updateSemanticMemory(getMemoryFilePath(runtime.context?.memoryFilePath), content)),
23968
24005
  {
23969
24006
  name: "update_user_semantic_memory",
@@ -24023,7 +24060,7 @@ var TaskQueue = class {
24023
24060
  };
24024
24061
 
24025
24062
  // src/agent/tools/task.ts
24026
- var import_langchain13 = require("langchain");
24063
+ var import_langchain14 = require("langchain");
24027
24064
  function getCurrentTaskQueue(agentId) {
24028
24065
  return agentId ? new TaskQueue(agentId) : null;
24029
24066
  }
@@ -24055,7 +24092,7 @@ function manageTaskQueue(agentId, action, task, index) {
24055
24092
  queue.clearTasks();
24056
24093
  return "\u5DF2\u6E05\u7A7A\u4EFB\u52A1\u961F\u5217";
24057
24094
  }
24058
- var taskTool = (0, import_langchain13.tool)(
24095
+ var taskTool = (0, import_langchain14.tool)(
24059
24096
  async ({ action, task, index }, runtime) => safeTool(() => {
24060
24097
  const agentId = runtime.context?.agentId || getAgentId();
24061
24098
  return manageTaskQueue(agentId, action, task, index);
@@ -24072,7 +24109,7 @@ var taskTool = (0, import_langchain13.tool)(
24072
24109
  );
24073
24110
 
24074
24111
  // src/agent/tools/webfetch.ts
24075
- var import_langchain14 = require("langchain");
24112
+ var import_langchain15 = require("langchain");
24076
24113
  async function webFetch(url2, timeout = 3e4, maxLength = 6e4) {
24077
24114
  const controller = new AbortController();
24078
24115
  const timer = setTimeout(() => controller.abort(), timeout);
@@ -24105,7 +24142,7 @@ async function webFetch(url2, timeout = 3e4, maxLength = 6e4) {
24105
24142
  clearTimeout(timer);
24106
24143
  }
24107
24144
  }
24108
- var webFetchTool = (0, import_langchain14.tool)(async ({ url: url2, timeout, maxLength }) => safeTool(() => webFetch(url2, timeout, maxLength)), {
24145
+ var webFetchTool = (0, import_langchain15.tool)(async ({ url: url2, timeout, maxLength }) => safeTool(() => webFetch(url2, timeout, maxLength)), {
24109
24146
  name: "web_fetch",
24110
24147
  description: "\u901A\u8FC7 HTTP GET \u83B7\u53D6\u7F51\u9875\u3001\u63A5\u53E3\u6216\u8FDC\u7A0B\u6587\u672C\u5185\u5BB9\uFF0C\u5E76\u8FD4\u56DE\u72B6\u6001\u7801\u3001content-type \u548C\u54CD\u5E94\u6B63\u6587\u3002",
24111
24148
  schema: external_exports.object({
@@ -24118,7 +24155,7 @@ var webFetchTool = (0, import_langchain14.tool)(async ({ url: url2, timeout, max
24118
24155
  // src/agent/tools/write.ts
24119
24156
  var import_fs_extra15 = __toESM(require("fs-extra"));
24120
24157
  var import_path11 = __toESM(require("path"));
24121
- var import_langchain15 = require("langchain");
24158
+ var import_langchain16 = require("langchain");
24122
24159
  async function writeFile(filePath, content, mode = "overwrite") {
24123
24160
  const absPath = resolveWorkspacePath(filePath);
24124
24161
  const exists = await import_fs_extra15.default.pathExists(absPath);
@@ -24133,7 +24170,7 @@ async function writeFile(filePath, content, mode = "overwrite") {
24133
24170
  await import_fs_extra15.default.writeFile(absPath, content, "utf-8");
24134
24171
  return `${exists ? "\u5DF2\u8986\u76D6\u5199\u5165\u6587\u4EF6" : "\u5DF2\u521B\u5EFA\u6587\u4EF6"}: ${absPath}`;
24135
24172
  }
24136
- var writeFileTool = (0, import_langchain15.tool)(async ({ filePath, content, mode }) => safeTool(() => writeFile(filePath, content, mode)), {
24173
+ var writeFileTool = (0, import_langchain16.tool)(async ({ filePath, content, mode }) => safeTool(() => writeFile(filePath, content, mode)), {
24137
24174
  name: "write_file",
24138
24175
  description: "\u5411\u672C\u5730\u6587\u4EF6\u5199\u5165\u6587\u672C\u5185\u5BB9\u3002\u53EF\u521B\u5EFA\u65B0\u6587\u4EF6\u3001\u8986\u76D6\u5DF2\u6709\u6587\u4EF6\u6216\u8FFD\u52A0\u5185\u5BB9\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u7236\u76EE\u5F55\u3002",
24139
24176
  schema: external_exports.object({
@@ -24146,6 +24183,7 @@ var writeFileTool = (0, import_langchain15.tool)(async ({ filePath, content, mod
24146
24183
  // src/agent/tools/index.ts
24147
24184
  var builtinTools = [
24148
24185
  taskTool,
24186
+ subAgentTool,
24149
24187
  executeCommandTool,
24150
24188
  readFileTool,
24151
24189
  editFileTool,
@@ -24163,6 +24201,15 @@ var builtinTools = [
24163
24201
  var import_inquirer2 = __toESM(require("inquirer"));
24164
24202
  var import_fs_extra16 = __toESM(require("fs-extra"));
24165
24203
 
24204
+ // src/agent/AIAgent/SubAgents/SubAIAgent.ts
24205
+ var import_langchain17 = require("langchain");
24206
+ var import_deepagents = require("deepagents");
24207
+ var import_eventemitter_super = require("eventemitter-super");
24208
+ var import_lodash = require("lodash");
24209
+
24210
+ // src/agent/AIAgent/index.ts
24211
+ var import_lodash2 = require("lodash");
24212
+
24166
24213
  // src/serve/service/agent-room/agent-client.ts
24167
24214
  var import_ws = __toESM(require("ws"));
24168
24215
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepfish-ai",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
4
4
  "private": false,
5
5
  "description": "An efficient AI-driven command-line tool designed to bridge the gap between natural language and operating system commands, file operations, and more. It enables non-developers to quickly generate executable instructions through simple natural language descriptions, significantly improving terminal operation efficiency.",
6
6
  "repository": {
@@ -55,6 +55,7 @@
55
55
  "inquirer": "^14.0.2",
56
56
  "json5": "^2.2.3",
57
57
  "langchain": "^1.4.4",
58
+ "lodash": "^4.18.1",
58
59
  "pm2": "^7.0.1",
59
60
  "solid-js": "^1.9.13",
60
61
  "tsx": "^4.19.0",
@@ -64,6 +65,7 @@
64
65
  "@types/adm-zip": "^0.5.8",
65
66
  "@types/express": "^5.0.6",
66
67
  "@types/fs-extra": "^11.0.4",
68
+ "@types/lodash": "^4.17.24",
67
69
  "@types/node": "^22.0.0",
68
70
  "@types/ws": "^8.18.1",
69
71
  "less": "^4.6.6",