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.
- package/dist/REPL-MBQCMFZU.js +42 -0
- package/dist/{acp-MMQAVZSI.js → acp-QKD5VUCV.js} +26 -26
- package/dist/{agentsValidate-GKX72444.js → agentsValidate-KGXQRAJZ.js} +7 -7
- package/dist/{ask-JYHJGOR7.js → ask-NG2DSJRD.js} +25 -25
- package/dist/{autoUpdater-6X4XBXUM.js → autoUpdater-PBGQE65K.js} +3 -3
- package/dist/{chunk-ZHO7QM4T.js → chunk-2WZBP3E6.js} +3 -3
- package/dist/{chunk-7LGLVWA2.js → chunk-323DBFRU.js} +1 -1
- package/dist/{chunk-H25WLJL5.js → chunk-3PVOXGE5.js} +3 -3
- package/dist/{chunk-OLJMCGOM.js → chunk-6C2CNJRZ.js} +3 -3
- package/dist/{chunk-VPZNB2PC.js → chunk-7GCGTI7J.js} +1 -1
- package/dist/{chunk-XRSPSKD2.js → chunk-AMVMTW6J.js} +1 -1
- package/dist/{chunk-2DIPMQNX.js → chunk-CBTG3DDM.js} +4 -4
- package/dist/{chunk-MCGN2JAC.js → chunk-E6MRBVMZ.js} +4 -4
- package/dist/chunk-E6MRBVMZ.js.map +7 -0
- package/dist/{chunk-SO4BZNGU.js → chunk-F6SGOSTZ.js} +3 -3
- package/dist/{chunk-UEICVY3V.js → chunk-FLAFIEJY.js} +2 -2
- package/dist/{chunk-OOFOAF52.js → chunk-G5EEYVNM.js} +1 -1
- package/dist/{chunk-OOFOAF52.js.map → chunk-G5EEYVNM.js.map} +1 -1
- package/dist/{chunk-BDAZUS5O.js → chunk-GDOGPXE6.js} +2 -2
- package/dist/{chunk-LJWW46VF.js → chunk-GU7DR4Q6.js} +4 -4
- package/dist/{chunk-LO5MI3KR.js → chunk-GY3JVIGB.js} +1 -1
- package/dist/{chunk-VBXDG4VM.js → chunk-IVDZ5RFK.js} +11 -11
- package/dist/{chunk-IAPV5WM5.js → chunk-JNQ5X6FY.js} +1 -1
- package/dist/{chunk-E7A75K25.js → chunk-KLT3BL7D.js} +2 -2
- package/dist/{chunk-IOO7P5IB.js → chunk-L2STOSKP.js} +3 -3
- package/dist/{chunk-VZRHTIRE.js → chunk-PDFPZAVP.js} +2 -2
- package/dist/{chunk-A3MLUB5D.js → chunk-TFNPGJGI.js} +3 -3
- package/dist/{chunk-SKVLB6S5.js → chunk-TGOTYPGA.js} +594 -530
- package/dist/chunk-TGOTYPGA.js.map +7 -0
- package/dist/{chunk-XBG2XNDZ.js → chunk-VIFUYXF3.js} +2 -2
- package/dist/{chunk-7SXTU6UC.js → chunk-VOXTBNUO.js} +1 -1
- package/dist/{chunk-OYIT5CZF.js → chunk-W7JREM72.js} +3 -3
- package/dist/{chunk-3O7QI3XX.js → chunk-WIFBEJAS.js} +1 -1
- package/dist/{chunk-LPCUW7AG.js → chunk-YHZXXFBV.js} +66 -2
- package/dist/chunk-YHZXXFBV.js.map +7 -0
- package/dist/{chunk-3ZXI2HJJ.js → chunk-YPLS7OWH.js} +2 -2
- package/dist/{cli-TDTHQXX3.js → cli-KKDAWCY2.js} +85 -79
- package/dist/cli-KKDAWCY2.js.map +7 -0
- package/dist/commands-TJ4JH5Y6.js +46 -0
- package/dist/{config-TN7XQLZF.js → config-WUL7I6UC.js} +4 -4
- package/dist/{context-6VFUVFIZ.js → context-HY6Z3A5M.js} +5 -5
- package/dist/{customCommands-IPJJDGX4.js → customCommands-AUI43OH4.js} +4 -4
- package/dist/{env-NO6SO4AW.js → env-6DF67ZM4.js} +2 -2
- package/dist/index.js +3 -3
- package/dist/{llm-RSNULBI3.js → llm-5SVIGJOW.js} +26 -26
- package/dist/{llmLazy-3ECMFIJ4.js → llmLazy-23OYBTCV.js} +1 -1
- package/dist/{loader-UWE2BAO5.js → loader-ALO5SB6E.js} +4 -4
- package/dist/{mcp-SJXIBGMG.js → mcp-IUJFQINE.js} +7 -7
- package/dist/{mentionProcessor-DZKLVJJP.js → mentionProcessor-6WZPWT57.js} +5 -5
- package/dist/{messages-IAXQKOPI.js → messages-DI4VAVMF.js} +1 -1
- package/dist/{model-MQXPZCUI.js → model-M5RQC5M4.js} +5 -5
- package/dist/{openai-BLKW3RIQ.js → openai-WE5G54EO.js} +5 -5
- package/dist/{outputStyles-PLWESN36.js → outputStyles-SOEAXDKX.js} +4 -4
- package/dist/{pluginRuntime-VXIXTKJ6.js → pluginRuntime-IZ3VID66.js} +6 -6
- package/dist/{pluginValidation-D4MHYMBZ.js → pluginValidation-K6LGPOD6.js} +6 -6
- package/dist/prompts-45RRJ63H.js +48 -0
- package/dist/{pybAgentSessionLoad-F57TUUA5.js → pybAgentSessionLoad-C2Q2ENOC.js} +4 -4
- package/dist/{pybAgentSessionResume-DCU2U5KH.js → pybAgentSessionResume-PFDYZVEA.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-KCABET6K.js → pybAgentStreamJsonSession-CXNTLW6O.js} +1 -1
- package/dist/{pybHooks-WPV7ALQ5.js → pybHooks-256H2DVZ.js} +4 -4
- package/dist/query-GDNDZELU.js +50 -0
- package/dist/{ripgrep-BLMPGNZM.js → ripgrep-UY2H3NIW.js} +7 -5
- package/dist/{skillMarketplace-QKU2BQE4.js → skillMarketplace-FHDM3WVC.js} +3 -3
- package/dist/{state-B7H3FFWJ.js → state-CVX5CCDE.js} +2 -2
- package/dist/{theme-LFCG6LZB.js → theme-26CQI4Q2.js} +5 -5
- package/dist/{toolPermissionSettings-CTXLHUK3.js → toolPermissionSettings-5OSMDFQI.js} +6 -6
- package/dist/tools-QG2SSBXM.js +47 -0
- package/dist/{userInput-SDNANTJY.js → userInput-H2BNPDZZ.js} +27 -27
- package/package.json +1 -1
- package/dist/REPL-VMSIO4BE.js +0 -42
- package/dist/chunk-LPCUW7AG.js.map +0 -7
- package/dist/chunk-MCGN2JAC.js.map +0 -7
- package/dist/chunk-SKVLB6S5.js.map +0 -7
- package/dist/cli-TDTHQXX3.js.map +0 -7
- package/dist/commands-6MZYMLG3.js +0 -46
- package/dist/prompts-AIW5LR2J.js +0 -48
- package/dist/query-6R7G4TM5.js +0 -50
- package/dist/tools-HVPKHQI2.js +0 -47
- /package/dist/{REPL-VMSIO4BE.js.map → REPL-MBQCMFZU.js.map} +0 -0
- /package/dist/{acp-MMQAVZSI.js.map → acp-QKD5VUCV.js.map} +0 -0
- /package/dist/{agentsValidate-GKX72444.js.map → agentsValidate-KGXQRAJZ.js.map} +0 -0
- /package/dist/{ask-JYHJGOR7.js.map → ask-NG2DSJRD.js.map} +0 -0
- /package/dist/{autoUpdater-6X4XBXUM.js.map → autoUpdater-PBGQE65K.js.map} +0 -0
- /package/dist/{chunk-ZHO7QM4T.js.map → chunk-2WZBP3E6.js.map} +0 -0
- /package/dist/{chunk-7LGLVWA2.js.map → chunk-323DBFRU.js.map} +0 -0
- /package/dist/{chunk-H25WLJL5.js.map → chunk-3PVOXGE5.js.map} +0 -0
- /package/dist/{chunk-OLJMCGOM.js.map → chunk-6C2CNJRZ.js.map} +0 -0
- /package/dist/{chunk-VPZNB2PC.js.map → chunk-7GCGTI7J.js.map} +0 -0
- /package/dist/{chunk-XRSPSKD2.js.map → chunk-AMVMTW6J.js.map} +0 -0
- /package/dist/{chunk-2DIPMQNX.js.map → chunk-CBTG3DDM.js.map} +0 -0
- /package/dist/{chunk-SO4BZNGU.js.map → chunk-F6SGOSTZ.js.map} +0 -0
- /package/dist/{chunk-UEICVY3V.js.map → chunk-FLAFIEJY.js.map} +0 -0
- /package/dist/{chunk-BDAZUS5O.js.map → chunk-GDOGPXE6.js.map} +0 -0
- /package/dist/{chunk-LJWW46VF.js.map → chunk-GU7DR4Q6.js.map} +0 -0
- /package/dist/{chunk-LO5MI3KR.js.map → chunk-GY3JVIGB.js.map} +0 -0
- /package/dist/{chunk-VBXDG4VM.js.map → chunk-IVDZ5RFK.js.map} +0 -0
- /package/dist/{chunk-IAPV5WM5.js.map → chunk-JNQ5X6FY.js.map} +0 -0
- /package/dist/{chunk-E7A75K25.js.map → chunk-KLT3BL7D.js.map} +0 -0
- /package/dist/{chunk-IOO7P5IB.js.map → chunk-L2STOSKP.js.map} +0 -0
- /package/dist/{chunk-VZRHTIRE.js.map → chunk-PDFPZAVP.js.map} +0 -0
- /package/dist/{chunk-A3MLUB5D.js.map → chunk-TFNPGJGI.js.map} +0 -0
- /package/dist/{chunk-XBG2XNDZ.js.map → chunk-VIFUYXF3.js.map} +0 -0
- /package/dist/{chunk-7SXTU6UC.js.map → chunk-VOXTBNUO.js.map} +0 -0
- /package/dist/{chunk-OYIT5CZF.js.map → chunk-W7JREM72.js.map} +0 -0
- /package/dist/{chunk-3O7QI3XX.js.map → chunk-WIFBEJAS.js.map} +0 -0
- /package/dist/{chunk-3ZXI2HJJ.js.map → chunk-YPLS7OWH.js.map} +0 -0
- /package/dist/{commands-6MZYMLG3.js.map → commands-TJ4JH5Y6.js.map} +0 -0
- /package/dist/{config-TN7XQLZF.js.map → config-WUL7I6UC.js.map} +0 -0
- /package/dist/{context-6VFUVFIZ.js.map → context-HY6Z3A5M.js.map} +0 -0
- /package/dist/{customCommands-IPJJDGX4.js.map → customCommands-AUI43OH4.js.map} +0 -0
- /package/dist/{env-NO6SO4AW.js.map → env-6DF67ZM4.js.map} +0 -0
- /package/dist/{llm-RSNULBI3.js.map → llm-5SVIGJOW.js.map} +0 -0
- /package/dist/{llmLazy-3ECMFIJ4.js.map → llmLazy-23OYBTCV.js.map} +0 -0
- /package/dist/{loader-UWE2BAO5.js.map → loader-ALO5SB6E.js.map} +0 -0
- /package/dist/{mcp-SJXIBGMG.js.map → mcp-IUJFQINE.js.map} +0 -0
- /package/dist/{mentionProcessor-DZKLVJJP.js.map → mentionProcessor-6WZPWT57.js.map} +0 -0
- /package/dist/{messages-IAXQKOPI.js.map → messages-DI4VAVMF.js.map} +0 -0
- /package/dist/{model-MQXPZCUI.js.map → model-M5RQC5M4.js.map} +0 -0
- /package/dist/{openai-BLKW3RIQ.js.map → openai-WE5G54EO.js.map} +0 -0
- /package/dist/{outputStyles-PLWESN36.js.map → outputStyles-SOEAXDKX.js.map} +0 -0
- /package/dist/{pluginRuntime-VXIXTKJ6.js.map → pluginRuntime-IZ3VID66.js.map} +0 -0
- /package/dist/{pluginValidation-D4MHYMBZ.js.map → pluginValidation-K6LGPOD6.js.map} +0 -0
- /package/dist/{prompts-AIW5LR2J.js.map → prompts-45RRJ63H.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-F57TUUA5.js.map → pybAgentSessionLoad-C2Q2ENOC.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-DCU2U5KH.js.map → pybAgentSessionResume-PFDYZVEA.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-KCABET6K.js.map → pybAgentStreamJsonSession-CXNTLW6O.js.map} +0 -0
- /package/dist/{pybHooks-WPV7ALQ5.js.map → pybHooks-256H2DVZ.js.map} +0 -0
- /package/dist/{query-6R7G4TM5.js.map → query-GDNDZELU.js.map} +0 -0
- /package/dist/{ripgrep-BLMPGNZM.js.map → ripgrep-UY2H3NIW.js.map} +0 -0
- /package/dist/{skillMarketplace-QKU2BQE4.js.map → skillMarketplace-FHDM3WVC.js.map} +0 -0
- /package/dist/{state-B7H3FFWJ.js.map → state-CVX5CCDE.js.map} +0 -0
- /package/dist/{theme-LFCG6LZB.js.map → theme-26CQI4Q2.js.map} +0 -0
- /package/dist/{toolPermissionSettings-CTXLHUK3.js.map → toolPermissionSettings-5OSMDFQI.js.map} +0 -0
- /package/dist/{tools-HVPKHQI2.js.map → tools-QG2SSBXM.js.map} +0 -0
- /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-
|
|
12
|
+
} from "./chunk-E6MRBVMZ.js";
|
|
13
13
|
import {
|
|
14
14
|
MACRO
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-G5EEYVNM.js";
|
|
16
16
|
|
|
17
17
|
// src/utils/protocol/pybAgentSessionLog.ts
|
|
18
18
|
import { execFileSync } from "child_process";
|
|
@@ -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-
|
|
5
|
+
} from "./chunk-VOXTBNUO.js";
|
|
6
6
|
import {
|
|
7
7
|
parseFrontmatter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PDFPZAVP.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd
|
|
11
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
11
|
+
} from "./chunk-JNQ5X6FY.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
14
|
logError
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-E6MRBVMZ.js";
|
|
16
16
|
|
|
17
17
|
// src/utils/agent/loader.ts
|
|
18
18
|
import {
|