pybao-cli 1.3.39 → 1.3.41

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 (135) hide show
  1. package/dist/REPL-MBQCMFZU.js +42 -0
  2. package/dist/{acp-MMQAVZSI.js → acp-QKD5VUCV.js} +26 -26
  3. package/dist/{agentsValidate-GKX72444.js → agentsValidate-KGXQRAJZ.js} +7 -7
  4. package/dist/{ask-JYHJGOR7.js → ask-NG2DSJRD.js} +25 -25
  5. package/dist/{autoUpdater-6X4XBXUM.js → autoUpdater-PBGQE65K.js} +3 -3
  6. package/dist/{chunk-ZHO7QM4T.js → chunk-2WZBP3E6.js} +3 -3
  7. package/dist/{chunk-7LGLVWA2.js → chunk-323DBFRU.js} +1 -1
  8. package/dist/{chunk-H25WLJL5.js → chunk-3PVOXGE5.js} +3 -3
  9. package/dist/{chunk-OLJMCGOM.js → chunk-6C2CNJRZ.js} +3 -3
  10. package/dist/{chunk-VPZNB2PC.js → chunk-7GCGTI7J.js} +1 -1
  11. package/dist/{chunk-XRSPSKD2.js → chunk-AMVMTW6J.js} +1 -1
  12. package/dist/{chunk-2DIPMQNX.js → chunk-CBTG3DDM.js} +4 -4
  13. package/dist/{chunk-MCGN2JAC.js → chunk-E6MRBVMZ.js} +4 -4
  14. package/dist/chunk-E6MRBVMZ.js.map +7 -0
  15. package/dist/{chunk-SO4BZNGU.js → chunk-F6SGOSTZ.js} +3 -3
  16. package/dist/{chunk-UEICVY3V.js → chunk-FLAFIEJY.js} +2 -2
  17. package/dist/{chunk-OOFOAF52.js → chunk-G5EEYVNM.js} +1 -1
  18. package/dist/{chunk-OOFOAF52.js.map → chunk-G5EEYVNM.js.map} +1 -1
  19. package/dist/{chunk-BDAZUS5O.js → chunk-GDOGPXE6.js} +2 -2
  20. package/dist/{chunk-LJWW46VF.js → chunk-GU7DR4Q6.js} +4 -4
  21. package/dist/{chunk-LO5MI3KR.js → chunk-GY3JVIGB.js} +1 -1
  22. package/dist/{chunk-VBXDG4VM.js → chunk-IVDZ5RFK.js} +11 -11
  23. package/dist/{chunk-IAPV5WM5.js → chunk-JNQ5X6FY.js} +1 -1
  24. package/dist/{chunk-E7A75K25.js → chunk-KLT3BL7D.js} +2 -2
  25. package/dist/{chunk-IOO7P5IB.js → chunk-L2STOSKP.js} +3 -3
  26. package/dist/{chunk-VZRHTIRE.js → chunk-PDFPZAVP.js} +2 -2
  27. package/dist/{chunk-A3MLUB5D.js → chunk-TFNPGJGI.js} +3 -3
  28. package/dist/{chunk-SKVLB6S5.js → chunk-TGOTYPGA.js} +594 -530
  29. package/dist/chunk-TGOTYPGA.js.map +7 -0
  30. package/dist/{chunk-XBG2XNDZ.js → chunk-VIFUYXF3.js} +2 -2
  31. package/dist/{chunk-7SXTU6UC.js → chunk-VOXTBNUO.js} +1 -1
  32. package/dist/{chunk-OYIT5CZF.js → chunk-W7JREM72.js} +3 -3
  33. package/dist/{chunk-3O7QI3XX.js → chunk-WIFBEJAS.js} +1 -1
  34. package/dist/{chunk-LPCUW7AG.js → chunk-YHZXXFBV.js} +66 -2
  35. package/dist/chunk-YHZXXFBV.js.map +7 -0
  36. package/dist/{chunk-3ZXI2HJJ.js → chunk-YPLS7OWH.js} +2 -2
  37. package/dist/{cli-TDTHQXX3.js → cli-KKDAWCY2.js} +85 -79
  38. package/dist/cli-KKDAWCY2.js.map +7 -0
  39. package/dist/commands-TJ4JH5Y6.js +46 -0
  40. package/dist/{config-TN7XQLZF.js → config-WUL7I6UC.js} +4 -4
  41. package/dist/{context-6VFUVFIZ.js → context-HY6Z3A5M.js} +5 -5
  42. package/dist/{customCommands-IPJJDGX4.js → customCommands-AUI43OH4.js} +4 -4
  43. package/dist/{env-NO6SO4AW.js → env-6DF67ZM4.js} +2 -2
  44. package/dist/index.js +3 -3
  45. package/dist/{llm-RSNULBI3.js → llm-5SVIGJOW.js} +26 -26
  46. package/dist/{llmLazy-3ECMFIJ4.js → llmLazy-23OYBTCV.js} +1 -1
  47. package/dist/{loader-UWE2BAO5.js → loader-ALO5SB6E.js} +4 -4
  48. package/dist/{mcp-SJXIBGMG.js → mcp-IUJFQINE.js} +7 -7
  49. package/dist/{mentionProcessor-DZKLVJJP.js → mentionProcessor-6WZPWT57.js} +5 -5
  50. package/dist/{messages-IAXQKOPI.js → messages-DI4VAVMF.js} +1 -1
  51. package/dist/{model-MQXPZCUI.js → model-M5RQC5M4.js} +5 -5
  52. package/dist/{openai-BLKW3RIQ.js → openai-WE5G54EO.js} +5 -5
  53. package/dist/{outputStyles-PLWESN36.js → outputStyles-SOEAXDKX.js} +4 -4
  54. package/dist/{pluginRuntime-VXIXTKJ6.js → pluginRuntime-IZ3VID66.js} +6 -6
  55. package/dist/{pluginValidation-D4MHYMBZ.js → pluginValidation-K6LGPOD6.js} +6 -6
  56. package/dist/prompts-45RRJ63H.js +48 -0
  57. package/dist/{pybAgentSessionLoad-F57TUUA5.js → pybAgentSessionLoad-C2Q2ENOC.js} +4 -4
  58. package/dist/{pybAgentSessionResume-DCU2U5KH.js → pybAgentSessionResume-PFDYZVEA.js} +4 -4
  59. package/dist/{pybAgentStreamJsonSession-KCABET6K.js → pybAgentStreamJsonSession-CXNTLW6O.js} +1 -1
  60. package/dist/{pybHooks-WPV7ALQ5.js → pybHooks-256H2DVZ.js} +4 -4
  61. package/dist/query-GDNDZELU.js +50 -0
  62. package/dist/{ripgrep-BLMPGNZM.js → ripgrep-UY2H3NIW.js} +7 -5
  63. package/dist/{skillMarketplace-QKU2BQE4.js → skillMarketplace-FHDM3WVC.js} +3 -3
  64. package/dist/{state-B7H3FFWJ.js → state-CVX5CCDE.js} +2 -2
  65. package/dist/{theme-LFCG6LZB.js → theme-26CQI4Q2.js} +5 -5
  66. package/dist/{toolPermissionSettings-CTXLHUK3.js → toolPermissionSettings-5OSMDFQI.js} +6 -6
  67. package/dist/tools-QG2SSBXM.js +47 -0
  68. package/dist/{userInput-SDNANTJY.js → userInput-H2BNPDZZ.js} +27 -27
  69. package/package.json +1 -1
  70. package/dist/REPL-VMSIO4BE.js +0 -42
  71. package/dist/chunk-LPCUW7AG.js.map +0 -7
  72. package/dist/chunk-MCGN2JAC.js.map +0 -7
  73. package/dist/chunk-SKVLB6S5.js.map +0 -7
  74. package/dist/cli-TDTHQXX3.js.map +0 -7
  75. package/dist/commands-6MZYMLG3.js +0 -46
  76. package/dist/prompts-AIW5LR2J.js +0 -48
  77. package/dist/query-6R7G4TM5.js +0 -50
  78. package/dist/tools-HVPKHQI2.js +0 -47
  79. /package/dist/{REPL-VMSIO4BE.js.map → REPL-MBQCMFZU.js.map} +0 -0
  80. /package/dist/{acp-MMQAVZSI.js.map → acp-QKD5VUCV.js.map} +0 -0
  81. /package/dist/{agentsValidate-GKX72444.js.map → agentsValidate-KGXQRAJZ.js.map} +0 -0
  82. /package/dist/{ask-JYHJGOR7.js.map → ask-NG2DSJRD.js.map} +0 -0
  83. /package/dist/{autoUpdater-6X4XBXUM.js.map → autoUpdater-PBGQE65K.js.map} +0 -0
  84. /package/dist/{chunk-ZHO7QM4T.js.map → chunk-2WZBP3E6.js.map} +0 -0
  85. /package/dist/{chunk-7LGLVWA2.js.map → chunk-323DBFRU.js.map} +0 -0
  86. /package/dist/{chunk-H25WLJL5.js.map → chunk-3PVOXGE5.js.map} +0 -0
  87. /package/dist/{chunk-OLJMCGOM.js.map → chunk-6C2CNJRZ.js.map} +0 -0
  88. /package/dist/{chunk-VPZNB2PC.js.map → chunk-7GCGTI7J.js.map} +0 -0
  89. /package/dist/{chunk-XRSPSKD2.js.map → chunk-AMVMTW6J.js.map} +0 -0
  90. /package/dist/{chunk-2DIPMQNX.js.map → chunk-CBTG3DDM.js.map} +0 -0
  91. /package/dist/{chunk-SO4BZNGU.js.map → chunk-F6SGOSTZ.js.map} +0 -0
  92. /package/dist/{chunk-UEICVY3V.js.map → chunk-FLAFIEJY.js.map} +0 -0
  93. /package/dist/{chunk-BDAZUS5O.js.map → chunk-GDOGPXE6.js.map} +0 -0
  94. /package/dist/{chunk-LJWW46VF.js.map → chunk-GU7DR4Q6.js.map} +0 -0
  95. /package/dist/{chunk-LO5MI3KR.js.map → chunk-GY3JVIGB.js.map} +0 -0
  96. /package/dist/{chunk-VBXDG4VM.js.map → chunk-IVDZ5RFK.js.map} +0 -0
  97. /package/dist/{chunk-IAPV5WM5.js.map → chunk-JNQ5X6FY.js.map} +0 -0
  98. /package/dist/{chunk-E7A75K25.js.map → chunk-KLT3BL7D.js.map} +0 -0
  99. /package/dist/{chunk-IOO7P5IB.js.map → chunk-L2STOSKP.js.map} +0 -0
  100. /package/dist/{chunk-VZRHTIRE.js.map → chunk-PDFPZAVP.js.map} +0 -0
  101. /package/dist/{chunk-A3MLUB5D.js.map → chunk-TFNPGJGI.js.map} +0 -0
  102. /package/dist/{chunk-XBG2XNDZ.js.map → chunk-VIFUYXF3.js.map} +0 -0
  103. /package/dist/{chunk-7SXTU6UC.js.map → chunk-VOXTBNUO.js.map} +0 -0
  104. /package/dist/{chunk-OYIT5CZF.js.map → chunk-W7JREM72.js.map} +0 -0
  105. /package/dist/{chunk-3O7QI3XX.js.map → chunk-WIFBEJAS.js.map} +0 -0
  106. /package/dist/{chunk-3ZXI2HJJ.js.map → chunk-YPLS7OWH.js.map} +0 -0
  107. /package/dist/{commands-6MZYMLG3.js.map → commands-TJ4JH5Y6.js.map} +0 -0
  108. /package/dist/{config-TN7XQLZF.js.map → config-WUL7I6UC.js.map} +0 -0
  109. /package/dist/{context-6VFUVFIZ.js.map → context-HY6Z3A5M.js.map} +0 -0
  110. /package/dist/{customCommands-IPJJDGX4.js.map → customCommands-AUI43OH4.js.map} +0 -0
  111. /package/dist/{env-NO6SO4AW.js.map → env-6DF67ZM4.js.map} +0 -0
  112. /package/dist/{llm-RSNULBI3.js.map → llm-5SVIGJOW.js.map} +0 -0
  113. /package/dist/{llmLazy-3ECMFIJ4.js.map → llmLazy-23OYBTCV.js.map} +0 -0
  114. /package/dist/{loader-UWE2BAO5.js.map → loader-ALO5SB6E.js.map} +0 -0
  115. /package/dist/{mcp-SJXIBGMG.js.map → mcp-IUJFQINE.js.map} +0 -0
  116. /package/dist/{mentionProcessor-DZKLVJJP.js.map → mentionProcessor-6WZPWT57.js.map} +0 -0
  117. /package/dist/{messages-IAXQKOPI.js.map → messages-DI4VAVMF.js.map} +0 -0
  118. /package/dist/{model-MQXPZCUI.js.map → model-M5RQC5M4.js.map} +0 -0
  119. /package/dist/{openai-BLKW3RIQ.js.map → openai-WE5G54EO.js.map} +0 -0
  120. /package/dist/{outputStyles-PLWESN36.js.map → outputStyles-SOEAXDKX.js.map} +0 -0
  121. /package/dist/{pluginRuntime-VXIXTKJ6.js.map → pluginRuntime-IZ3VID66.js.map} +0 -0
  122. /package/dist/{pluginValidation-D4MHYMBZ.js.map → pluginValidation-K6LGPOD6.js.map} +0 -0
  123. /package/dist/{prompts-AIW5LR2J.js.map → prompts-45RRJ63H.js.map} +0 -0
  124. /package/dist/{pybAgentSessionLoad-F57TUUA5.js.map → pybAgentSessionLoad-C2Q2ENOC.js.map} +0 -0
  125. /package/dist/{pybAgentSessionResume-DCU2U5KH.js.map → pybAgentSessionResume-PFDYZVEA.js.map} +0 -0
  126. /package/dist/{pybAgentStreamJsonSession-KCABET6K.js.map → pybAgentStreamJsonSession-CXNTLW6O.js.map} +0 -0
  127. /package/dist/{pybHooks-WPV7ALQ5.js.map → pybHooks-256H2DVZ.js.map} +0 -0
  128. /package/dist/{query-6R7G4TM5.js.map → query-GDNDZELU.js.map} +0 -0
  129. /package/dist/{ripgrep-BLMPGNZM.js.map → ripgrep-UY2H3NIW.js.map} +0 -0
  130. /package/dist/{skillMarketplace-QKU2BQE4.js.map → skillMarketplace-FHDM3WVC.js.map} +0 -0
  131. /package/dist/{state-B7H3FFWJ.js.map → state-CVX5CCDE.js.map} +0 -0
  132. /package/dist/{theme-LFCG6LZB.js.map → theme-26CQI4Q2.js.map} +0 -0
  133. /package/dist/{toolPermissionSettings-CTXLHUK3.js.map → toolPermissionSettings-5OSMDFQI.js.map} +0 -0
  134. /package/dist/{tools-HVPKHQI2.js.map → tools-QG2SSBXM.js.map} +0 -0
  135. /package/dist/{userInput-SDNANTJY.js.map → userInput-H2BNPDZZ.js.map} +0 -0
@@ -9,10 +9,10 @@ import {
9
9
  PLAN_SLUG_VERBS,
10
10
  getCwd,
11
11
  getPybBaseDir
12
- } from "./chunk-MCGN2JAC.js";
12
+ } from "./chunk-E6MRBVMZ.js";
13
13
  import {
14
14
  MACRO
15
- } from "./chunk-OOFOAF52.js";
15
+ } from "./chunk-G5EEYVNM.js";
16
16
 
17
17
  // src/utils/protocol/pybAgentSessionLog.ts
18
18
  import { execFileSync } from "child_process";
@@ -4,7 +4,7 @@ import {
4
4
  CONFIG_BASE_DIR,
5
5
  getCwd,
6
6
  getPybBaseDir
7
- } from "./chunk-MCGN2JAC.js";
7
+ } from "./chunk-E6MRBVMZ.js";
8
8
 
9
9
  // src/services/plugins/skillMarketplace.ts
10
10
  import {
@@ -2,13 +2,13 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  MarketplaceManifestSchema
5
- } from "./chunk-7SXTU6UC.js";
5
+ } from "./chunk-VOXTBNUO.js";
6
6
  import {
7
7
  parseFrontmatter
8
- } from "./chunk-VZRHTIRE.js";
8
+ } from "./chunk-PDFPZAVP.js";
9
9
  import {
10
10
  getCwd
11
- } from "./chunk-MCGN2JAC.js";
11
+ } from "./chunk-E6MRBVMZ.js";
12
12
 
13
13
  // src/services/plugins/pluginValidation.ts
14
14
  import { existsSync, lstatSync, readFileSync } from "node:fs";
@@ -448,7 +448,7 @@ function getLastAssistantMessageId(messages) {
448
448
 
449
449
  // src/utils/messages/index.ts
450
450
  async function processUserInput(input, mode, setToolJSX, context, pastedImages) {
451
- const impl = await import("./userInput-SDNANTJY.js");
451
+ const impl = await import("./userInput-H2BNPDZZ.js");
452
452
  return impl.processUserInput(input, mode, setToolJSX, context, pastedImages);
453
453
  }
454
454
 
@@ -4,7 +4,7 @@ import {
4
4
  BunShell,
5
5
  execFileNoThrow,
6
6
  logError
7
- } from "./chunk-MCGN2JAC.js";
7
+ } from "./chunk-E6MRBVMZ.js";
8
8
 
9
9
  // src/utils/system/ripgrep.ts
10
10
  import { rgPath } from "@vscode/ripgrep";
@@ -14,6 +14,7 @@ import { existsSync } from "node:fs";
14
14
  import { execFile } from "child_process";
15
15
  import debug from "debug";
16
16
  import { quote } from "shell-quote";
17
+ import { relative, sep, isAbsolute, basename } from "path";
17
18
  var d = debug("pyb:ripgrep");
18
19
  function isTruthyEnv(value) {
19
20
  if (!value) return false;
@@ -155,10 +156,73 @@ function resetRipgrepPathCacheForTests() {
155
156
  getRipgrepPath.cache?.clear?.();
156
157
  alreadyDoneSignCheck = false;
157
158
  }
159
+ async function tree(cwd, limit = 50, abortSignal) {
160
+ const files = await ripGrep(["--files"], cwd, abortSignal);
161
+ if (files.length === 0) return "";
162
+ const relFiles = files.map((f) => {
163
+ if (isAbsolute(f)) return relative(cwd, f);
164
+ return f;
165
+ });
166
+ const treeRoot = {};
167
+ for (const f of relFiles) {
168
+ const parts = f.split(sep);
169
+ let cur = treeRoot;
170
+ for (const p of parts) {
171
+ if (!cur[p]) cur[p] = {};
172
+ cur = cur[p];
173
+ }
174
+ }
175
+ const visible = /* @__PURE__ */ new Set();
176
+ const queue = [treeRoot];
177
+ visible.add(treeRoot);
178
+ let visibleCount = 0;
179
+ while (queue.length > 0) {
180
+ const node = queue.shift();
181
+ const children = Object.values(node);
182
+ for (const child of children) {
183
+ if (visibleCount < limit) {
184
+ visible.add(child);
185
+ visibleCount++;
186
+ queue.push(child);
187
+ } else {
188
+ break;
189
+ }
190
+ }
191
+ if (visibleCount >= limit) break;
192
+ }
193
+ let output = "";
194
+ function render(node, prefix, isLast, name) {
195
+ if (node !== treeRoot) {
196
+ const connector = isLast ? "\u2514\u2500\u2500 " : "\u251C\u2500\u2500 ";
197
+ output += `${prefix}${connector}${name}
198
+ `;
199
+ } else {
200
+ output += `${name}
201
+ `;
202
+ }
203
+ const childrenKeys = Object.keys(node).sort();
204
+ const visibleChildren = childrenKeys.filter((k) => visible.has(node[k]));
205
+ const hiddenCount = childrenKeys.length - visibleChildren.length;
206
+ const childPrefix = node === treeRoot ? "" : prefix + (isLast ? " " : "\u2502 ");
207
+ for (let i = 0; i < visibleChildren.length; i++) {
208
+ const key = visibleChildren[i];
209
+ const isChildLast = i === visibleChildren.length - 1 && hiddenCount === 0;
210
+ render(node[key], childPrefix, isChildLast, key);
211
+ }
212
+ if (hiddenCount > 0) {
213
+ const connector = visibleChildren.length === 0 ? "\u2514\u2500\u2500 " : "\u2514\u2500\u2500 ";
214
+ output += `${childPrefix}\u2514\u2500\u2500 ... [${hiddenCount} truncated]
215
+ `;
216
+ }
217
+ }
218
+ render(treeRoot, "", true, basename(cwd) || ".");
219
+ return output;
220
+ }
158
221
 
159
222
  export {
160
223
  getRipgrepPath,
161
224
  ripGrep,
162
225
  listAllContentFiles,
163
- resetRipgrepPathCacheForTests
226
+ resetRipgrepPathCacheForTests,
227
+ tree
164
228
  };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/system/ripgrep.ts"],
4
+ "sourcesContent": ["import { rgPath } from '@vscode/ripgrep'\nimport { findActualExecutable } from 'spawn-rx'\nimport { memoize } from 'lodash-es'\nimport { existsSync } from 'node:fs'\nimport { execFile } from 'child_process'\nimport debug from 'debug'\nimport { quote } from 'shell-quote'\nimport { logError } from '@utils/log'\nimport { execFileNoThrow } from '@utils/system/execFileNoThrow'\nimport type { BunShellSandboxOptions } from '@utils/bun/shell'\nimport { BunShell } from '@utils/bun/shell'\nimport { relative, sep, isAbsolute, basename } from 'path'\n\nconst d = debug('pyb:ripgrep')\n\nfunction isTruthyEnv(value: string | undefined): boolean {\n if (!value) return false\n return ['1', 'true', 'yes', 'on'].includes(value.trim().toLowerCase())\n}\n\nfunction resolveRipgrepPathOrThrow(): string {\n const explicit = process.env.PYB_RIPGREP_PATH\n if (explicit) {\n if (!existsSync(explicit)) {\n throw new Error(`PYB_RIPGREP_PATH points to a missing file: ${explicit}`)\n }\n return explicit\n }\n\n const preferBundled = isTruthyEnv(process.env.USE_BUILTIN_RIPGREP)\n if (!preferBundled) {\n const { cmd } = findActualExecutable('rg', [])\n d(`ripgrep initially resolved as: ${cmd}`)\n if (cmd !== 'rg') {\n return cmd\n }\n }\n\n if (!rgPath || !existsSync(rgPath)) {\n throw new Error(\n [\n 'ripgrep (rg) was not found on PATH, and @vscode/ripgrep is missing.',\n 'Fix:',\n '- Install ripgrep: https://github.com/BurntSushi/ripgrep',\n '- Or reinstall pyb (ensure dependencies are present)',\n ].join('\\n'),\n )\n }\n\n d('Using @vscode/ripgrep fallback: %s', rgPath)\n return rgPath\n}\n\nexport const getRipgrepPath = memoize((): string => resolveRipgrepPathOrThrow())\n\nexport async function ripGrep(\n args: string[],\n target: string,\n abortSignal: AbortSignal,\n options?: { sandbox?: BunShellSandboxOptions },\n): Promise<string[]> {\n await codesignRipgrepIfNecessary()\n const rg = getRipgrepPath()\n d('ripgrep called: %s %o', rg, target, args)\n\n if (options?.sandbox?.enabled === true) {\n const cmd = quote([rg, ...args, target])\n const result = await BunShell.getInstance().exec(cmd, abortSignal, 10_000, {\n sandbox: options.sandbox,\n })\n if (result.code === 1) return []\n if (result.code !== 0) {\n logError(`ripgrep failed with exit code ${result.code}: ${result.stderr}`)\n return []\n }\n return result.stdout.trim().split('\\n').filter(Boolean)\n }\n\n return new Promise(resolve => {\n execFile(\n rg,\n [...args, target],\n {\n maxBuffer: 1_000_000,\n signal: abortSignal,\n timeout: 10_000,\n },\n (error, stdout) => {\n if (error) {\n if (error.code !== 1) {\n d('ripgrep error: %o', error)\n logError(error)\n }\n resolve([])\n } else {\n d('ripgrep succeeded with %s', stdout)\n resolve(stdout.trim().split('\\n').filter(Boolean))\n }\n },\n )\n })\n}\n\nexport async function listAllContentFiles(\n path: string,\n abortSignal: AbortSignal,\n limit: number,\n): Promise<string[]> {\n try {\n d('listAllContentFiles called: %s', path)\n return (await ripGrep(['-l', '.', path], path, abortSignal)).slice(0, limit)\n } catch (e) {\n d('listAllContentFiles failed: %o', e)\n\n logError(e)\n return []\n }\n}\n\nlet alreadyDoneSignCheck = false\nasync function codesignRipgrepIfNecessary(): Promise<void> {\n if (process.platform !== 'darwin' || alreadyDoneSignCheck) {\n return\n }\n\n alreadyDoneSignCheck = true\n\n d('checking if ripgrep is already signed')\n const lines = (\n await execFileNoThrow(\n 'codesign',\n ['-vv', '-d', getRipgrepPath()],\n undefined,\n undefined,\n false,\n )\n ).stdout.split('\\n')\n\n const needsSigned = lines.find(line => line.includes('linker-signed'))\n if (!needsSigned) {\n d('seems to be already signed')\n return\n }\n\n try {\n d('signing ripgrep')\n const signResult = await execFileNoThrow('codesign', [\n '--sign',\n '-',\n '--force',\n '--preserve-metadata=entitlements,requirements,flags,runtime',\n getRipgrepPath(),\n ])\n\n if (signResult.code !== 0) {\n d('failed to sign ripgrep: %o', signResult)\n logError(\n `Failed to sign ripgrep: ${signResult.stdout} ${signResult.stderr}`,\n )\n }\n\n d('removing quarantine')\n const quarantineResult = await execFileNoThrow('xattr', [\n '-d',\n 'com.apple.quarantine',\n getRipgrepPath(),\n ])\n\n if (quarantineResult.code !== 0) {\n d('failed to remove quarantine: %o', quarantineResult)\n logError(\n `Failed to remove quarantine: ${quarantineResult.stdout} ${quarantineResult.stderr}`,\n )\n }\n } catch (e) {\n d('failed during sign: %o', e)\n logError(e)\n }\n}\n\nexport function resetRipgrepPathCacheForTests(): void {\n ;(getRipgrepPath as any).cache?.clear?.()\n alreadyDoneSignCheck = false\n}\n\nexport async function tree(\n cwd: string,\n limit: number = 50,\n abortSignal: AbortSignal,\n): Promise<string> {\n const files = await ripGrep(['--files'], cwd, abortSignal)\n if (files.length === 0) return ''\n\n const relFiles = files.map(f => {\n if (isAbsolute(f)) return relative(cwd, f)\n return f\n })\n\n // Build Trie\n type Node = { [key: string]: Node }\n const treeRoot: Node = {}\n for (const f of relFiles) {\n const parts = f.split(sep)\n let cur = treeRoot\n for (const p of parts) {\n if (!cur[p]) cur[p] = {}\n cur = cur[p]\n }\n }\n\n // BFS to mark visible nodes\n const visible = new Set<Node>()\n const queue: Node[] = [treeRoot]\n visible.add(treeRoot)\n let visibleCount = 0\n\n while (queue.length > 0) {\n const node = queue.shift()!\n const children = Object.values(node)\n \n // Check if we can add children\n // We assume if we expand a node, we want to show its children if possible\n // But strict count limit might cut off mid-directory.\n \n for (const child of children) {\n if (visibleCount < limit) {\n visible.add(child)\n visibleCount++\n queue.push(child)\n } else {\n break\n }\n }\n if (visibleCount >= limit) break\n }\n\n // Render DFS\n let output = ''\n\n function render(node: Node, prefix: string, isLast: boolean, name: string) {\n if (node !== treeRoot) {\n const connector = isLast ? '\u2514\u2500\u2500 ' : '\u251C\u2500\u2500 '\n output += `${prefix}${connector}${name}\\n`\n } else {\n output += `${name}\\n`\n }\n\n const childrenKeys = Object.keys(node).sort()\n const visibleChildren = childrenKeys.filter(k => visible.has(node[k]))\n const hiddenCount = childrenKeys.length - visibleChildren.length\n\n const childPrefix = node === treeRoot ? '' : prefix + (isLast ? ' ' : '\u2502 ')\n\n for (let i = 0; i < visibleChildren.length; i++) {\n const key = visibleChildren[i]\n const isChildLast = i === visibleChildren.length - 1 && hiddenCount === 0\n render(node[key], childPrefix, isChildLast, key)\n }\n\n if (hiddenCount > 0) {\n const connector = visibleChildren.length === 0 ? '\u2514\u2500\u2500 ' : '\u2514\u2500\u2500 '\n // If we had visible children, the last one used \u251C\u2500\u2500 or \u2514\u2500\u2500.\n // If hiddenCount > 0, we append truncation info.\n // Wait, if visibleChildren > 0, the last visible child should use \u251C\u2500\u2500 because there is \"more\" (the truncated part).\n // My logic above: `isChildLast = i === visibleChildren.length - 1 && hiddenCount === 0`\n // So if hiddenCount > 0, isChildLast is false. So it uses \u251C\u2500\u2500. Correct.\n // Then we append truncation.\n \n output += `${childPrefix}\u2514\u2500\u2500 ... [${hiddenCount} truncated]\\n`\n }\n }\n\n render(treeRoot, '', true, basename(cwd) || '.')\n return output\n}\n\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -8,11 +8,11 @@ import {
8
8
  } from "./chunk-BJSWTHRM.js";
9
9
  import {
10
10
  debug
11
- } from "./chunk-IAPV5WM5.js";
11
+ } from "./chunk-JNQ5X6FY.js";
12
12
  import {
13
13
  getCwd,
14
14
  logError
15
- } from "./chunk-MCGN2JAC.js";
15
+ } from "./chunk-E6MRBVMZ.js";
16
16
 
17
17
  // src/utils/agent/loader.ts
18
18
  import {