pybao-cli 1.4.93 → 1.4.94
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/cli-acp.js +6 -0
- package/dist/REPL-AXGFSFGU.js +49 -0
- package/dist/{acp-IFDRVEVD.js → acp-LL5UW7NR.js} +30 -30
- package/dist/{agentsValidate-NLKKR63Z.js → agentsValidate-PZA3NXC7.js} +7 -7
- package/dist/{ask-BPNSCPL2.js → ask-3HG7FW27.js} +29 -29
- package/dist/{autoUpdater-X7UZO52V.js → autoUpdater-KKROLFYM.js} +3 -3
- package/dist/{chunk-MOVZMUD6.js → chunk-2I3SSZQJ.js} +1 -1
- package/dist/{chunk-XGMO47U3.js → chunk-3RBQCL7S.js} +2 -2
- package/dist/{chunk-P5YDC2EK.js → chunk-3WEFOYHX.js} +4 -4
- package/dist/{chunk-L2XTP46M.js → chunk-5DKFC3LS.js} +1 -1
- package/dist/{chunk-OVGWUG4F.js → chunk-6O5XYV7G.js} +2 -2
- package/dist/{chunk-HUWECBUJ.js → chunk-6ZZJGF7W.js} +1 -1
- package/dist/{chunk-FMRYBHES.js → chunk-AKOR7LY4.js} +3 -3
- package/dist/{chunk-AOJIVTHB.js → chunk-ARI6POM7.js} +2 -2
- package/dist/{chunk-6P4GKIIM.js → chunk-C3HQN7AW.js} +2 -1
- package/dist/chunk-C3HQN7AW.js.map +7 -0
- package/dist/{chunk-VGIACBUA.js → chunk-C62NYRK3.js} +3 -3
- package/dist/{chunk-FSO2NLLB.js → chunk-DAJ3TBNT.js} +4 -4
- package/dist/{chunk-4GS4UYFZ.js → chunk-EK6ANNY6.js} +3 -3
- package/dist/{chunk-ELCV7OGP.js → chunk-F3K3SJFT.js} +1 -1
- package/dist/{chunk-3EEKA3PW.js → chunk-INFVDDHG.js} +3 -3
- package/dist/{chunk-TCYQXT33.js → chunk-KR2MX5WZ.js} +1 -1
- package/dist/{chunk-KLIULCCQ.js → chunk-KVXEA4L5.js} +3 -3
- package/dist/{chunk-RDQP4CNA.js → chunk-KW2CWUJO.js} +1 -1
- package/dist/{chunk-4Z7ZFLJE.js → chunk-PTZUDCNB.js} +4 -4
- package/dist/{chunk-RAXHDDAZ.js → chunk-PUPISMZN.js} +3 -3
- package/dist/{chunk-UEPMT7NR.js → chunk-PVDARHIF.js} +2 -2
- package/dist/{chunk-GEYT4VK5.js → chunk-QTRMTKJM.js} +36 -36
- package/dist/{chunk-ZSO6BUJO.js → chunk-THZYKZXQ.js} +78 -9
- package/dist/chunk-THZYKZXQ.js.map +7 -0
- package/dist/{chunk-3LE7X33P.js → chunk-UBMZOGHN.js} +3 -3
- package/dist/{chunk-ZJNQVTJF.js → chunk-UEJFVTUZ.js} +1 -1
- package/dist/{chunk-IFD72SBL.js → chunk-UPZWRK67.js} +16 -16
- package/dist/{chunk-JPCDQXGW.js → chunk-UQNXHJMM.js} +2 -2
- package/dist/{chunk-LLKDGDD7.js → chunk-V3Y26JD4.js} +1 -1
- package/dist/{chunk-GKZ5PM7Y.js → chunk-VGMEYSLX.js} +2 -2
- package/dist/{chunk-ESXVE7ZG.js → chunk-WGEY5O2I.js} +4 -4
- package/dist/{chunk-2KPO7BHJ.js → chunk-Y7GZ5W2P.js} +1 -1
- package/dist/{chunk-VGZHYWCJ.js → chunk-ZPIRAKGC.js} +2 -2
- package/dist/{cli-D5URAOBT.js → cli-SYUV2OFD.js} +89 -89
- package/dist/commands-D43WDW2T.js +53 -0
- package/dist/{config-KCO6ID4C.js → config-JHNCXVOB.js} +4 -4
- package/dist/{context-OFTQAGFN.js → context-V2WAI7FZ.js} +6 -6
- package/dist/{conversationTracker-ZRFTBBBY.js → conversationTracker-TA7TCZ4N.js} +3 -3
- package/dist/{customCommands-7KPSK7J5.js → customCommands-UE64P47Y.js} +4 -4
- package/dist/{env-4LNTP2LM.js → env-K2PDVE6O.js} +2 -2
- package/dist/{file-ZTWX2CUQ.js → file-4J54VRPY.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-JP65EYSX.js → llm-W44XPBXA.js} +30 -30
- package/dist/{llmLazy-XNXLZ2WZ.js → llmLazy-JY26HHD2.js} +1 -1
- package/dist/{loader-FE5JXKAU.js → loader-2FWOQF6B.js} +4 -4
- package/dist/{lsp-O7CDITZI.js → lsp-K5GMTLQ3.js} +6 -6
- package/dist/{lspAnchor-YBUVOJ2I.js → lspAnchor-FFN4HTAE.js} +6 -6
- package/dist/{mcp-TMRCCADF.js → mcp-BEGCMCMJ.js} +7 -7
- package/dist/{mentionProcessor-LB5G5ZGM.js → mentionProcessor-DP3LJQSY.js} +5 -5
- package/dist/{messages-GADU5YZW.js → messages-VITJ5CVX.js} +1 -1
- package/dist/{model-Q6PPTO6W.js → model-N4HOF2SI.js} +5 -5
- package/dist/{openai-OZMPSVAE.js → openai-Y335NU4V.js} +5 -5
- package/dist/{outputStyles-HUZ6NW2H.js → outputStyles-ZOAFW5HT.js} +4 -4
- package/dist/{pluginRuntime-UFVSIRTV.js → pluginRuntime-SZQ464L4.js} +6 -6
- package/dist/{pluginValidation-NV3NHI6L.js → pluginValidation-WWBESF4D.js} +6 -6
- package/dist/prompts-TNZPD4OL.js +55 -0
- package/dist/{pybAgentSessionLoad-WELRPZYK.js → pybAgentSessionLoad-4ZRFGEBT.js} +4 -4
- package/dist/{pybAgentSessionResume-HSSPHCZS.js → pybAgentSessionResume-2CQXPUDZ.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-24IXJFWM.js → pybAgentStreamJsonSession-3E5Z53JN.js} +1 -1
- package/dist/{pybHooks-YSCKBABP.js → pybHooks-25H73VEX.js} +4 -4
- package/dist/query-MLM5JREI.js +57 -0
- package/dist/{registry-IK2DTN2W.js → registry-CO2UWLMO.js} +5 -5
- package/dist/{ripgrep-O3FG3DKA.js → ripgrep-7G5ML73I.js} +5 -3
- package/dist/{skillMarketplace-LYSDCOXI.js → skillMarketplace-SHXUU6U2.js} +3 -3
- package/dist/{state-LJ34T5SZ.js → state-NNMNADWT.js} +2 -2
- package/dist/{theme-H2F7NV72.js → theme-WYARLHVT.js} +5 -5
- package/dist/{toolPermissionSettings-GFCBBW5T.js → toolPermissionSettings-P3VCQIYM.js} +6 -6
- package/dist/tools-SBX6BLEB.js +54 -0
- package/dist/{userInput-OLKCYBMY.js → userInput-YZC5IXZW.js} +31 -31
- package/package.json +2 -1
- package/scripts/cli-acp-wrapper.cjs +6 -0
- package/dist/REPL-ZXWXW5RG.js +0 -49
- package/dist/chunk-6P4GKIIM.js.map +0 -7
- package/dist/chunk-ZSO6BUJO.js.map +0 -7
- package/dist/commands-CBY5GYB6.js +0 -53
- package/dist/prompts-FTCUNDW4.js +0 -55
- package/dist/query-W5AJQBY5.js +0 -57
- package/dist/tools-V7VYBNAT.js +0 -54
- /package/dist/{REPL-ZXWXW5RG.js.map → REPL-AXGFSFGU.js.map} +0 -0
- /package/dist/{acp-IFDRVEVD.js.map → acp-LL5UW7NR.js.map} +0 -0
- /package/dist/{agentsValidate-NLKKR63Z.js.map → agentsValidate-PZA3NXC7.js.map} +0 -0
- /package/dist/{ask-BPNSCPL2.js.map → ask-3HG7FW27.js.map} +0 -0
- /package/dist/{autoUpdater-X7UZO52V.js.map → autoUpdater-KKROLFYM.js.map} +0 -0
- /package/dist/{chunk-MOVZMUD6.js.map → chunk-2I3SSZQJ.js.map} +0 -0
- /package/dist/{chunk-XGMO47U3.js.map → chunk-3RBQCL7S.js.map} +0 -0
- /package/dist/{chunk-P5YDC2EK.js.map → chunk-3WEFOYHX.js.map} +0 -0
- /package/dist/{chunk-L2XTP46M.js.map → chunk-5DKFC3LS.js.map} +0 -0
- /package/dist/{chunk-OVGWUG4F.js.map → chunk-6O5XYV7G.js.map} +0 -0
- /package/dist/{chunk-HUWECBUJ.js.map → chunk-6ZZJGF7W.js.map} +0 -0
- /package/dist/{chunk-FMRYBHES.js.map → chunk-AKOR7LY4.js.map} +0 -0
- /package/dist/{chunk-AOJIVTHB.js.map → chunk-ARI6POM7.js.map} +0 -0
- /package/dist/{chunk-VGIACBUA.js.map → chunk-C62NYRK3.js.map} +0 -0
- /package/dist/{chunk-FSO2NLLB.js.map → chunk-DAJ3TBNT.js.map} +0 -0
- /package/dist/{chunk-4GS4UYFZ.js.map → chunk-EK6ANNY6.js.map} +0 -0
- /package/dist/{chunk-ELCV7OGP.js.map → chunk-F3K3SJFT.js.map} +0 -0
- /package/dist/{chunk-3EEKA3PW.js.map → chunk-INFVDDHG.js.map} +0 -0
- /package/dist/{chunk-TCYQXT33.js.map → chunk-KR2MX5WZ.js.map} +0 -0
- /package/dist/{chunk-KLIULCCQ.js.map → chunk-KVXEA4L5.js.map} +0 -0
- /package/dist/{chunk-RDQP4CNA.js.map → chunk-KW2CWUJO.js.map} +0 -0
- /package/dist/{chunk-4Z7ZFLJE.js.map → chunk-PTZUDCNB.js.map} +0 -0
- /package/dist/{chunk-RAXHDDAZ.js.map → chunk-PUPISMZN.js.map} +0 -0
- /package/dist/{chunk-UEPMT7NR.js.map → chunk-PVDARHIF.js.map} +0 -0
- /package/dist/{chunk-GEYT4VK5.js.map → chunk-QTRMTKJM.js.map} +0 -0
- /package/dist/{chunk-3LE7X33P.js.map → chunk-UBMZOGHN.js.map} +0 -0
- /package/dist/{chunk-ZJNQVTJF.js.map → chunk-UEJFVTUZ.js.map} +0 -0
- /package/dist/{chunk-IFD72SBL.js.map → chunk-UPZWRK67.js.map} +0 -0
- /package/dist/{chunk-JPCDQXGW.js.map → chunk-UQNXHJMM.js.map} +0 -0
- /package/dist/{chunk-LLKDGDD7.js.map → chunk-V3Y26JD4.js.map} +0 -0
- /package/dist/{chunk-GKZ5PM7Y.js.map → chunk-VGMEYSLX.js.map} +0 -0
- /package/dist/{chunk-ESXVE7ZG.js.map → chunk-WGEY5O2I.js.map} +0 -0
- /package/dist/{chunk-2KPO7BHJ.js.map → chunk-Y7GZ5W2P.js.map} +0 -0
- /package/dist/{chunk-VGZHYWCJ.js.map → chunk-ZPIRAKGC.js.map} +0 -0
- /package/dist/{cli-D5URAOBT.js.map → cli-SYUV2OFD.js.map} +0 -0
- /package/dist/{commands-CBY5GYB6.js.map → commands-D43WDW2T.js.map} +0 -0
- /package/dist/{config-KCO6ID4C.js.map → config-JHNCXVOB.js.map} +0 -0
- /package/dist/{context-OFTQAGFN.js.map → context-V2WAI7FZ.js.map} +0 -0
- /package/dist/{conversationTracker-ZRFTBBBY.js.map → conversationTracker-TA7TCZ4N.js.map} +0 -0
- /package/dist/{customCommands-7KPSK7J5.js.map → customCommands-UE64P47Y.js.map} +0 -0
- /package/dist/{env-4LNTP2LM.js.map → env-K2PDVE6O.js.map} +0 -0
- /package/dist/{file-ZTWX2CUQ.js.map → file-4J54VRPY.js.map} +0 -0
- /package/dist/{llm-JP65EYSX.js.map → llm-W44XPBXA.js.map} +0 -0
- /package/dist/{llmLazy-XNXLZ2WZ.js.map → llmLazy-JY26HHD2.js.map} +0 -0
- /package/dist/{loader-FE5JXKAU.js.map → loader-2FWOQF6B.js.map} +0 -0
- /package/dist/{lsp-O7CDITZI.js.map → lsp-K5GMTLQ3.js.map} +0 -0
- /package/dist/{lspAnchor-YBUVOJ2I.js.map → lspAnchor-FFN4HTAE.js.map} +0 -0
- /package/dist/{mcp-TMRCCADF.js.map → mcp-BEGCMCMJ.js.map} +0 -0
- /package/dist/{mentionProcessor-LB5G5ZGM.js.map → mentionProcessor-DP3LJQSY.js.map} +0 -0
- /package/dist/{messages-GADU5YZW.js.map → messages-VITJ5CVX.js.map} +0 -0
- /package/dist/{model-Q6PPTO6W.js.map → model-N4HOF2SI.js.map} +0 -0
- /package/dist/{openai-OZMPSVAE.js.map → openai-Y335NU4V.js.map} +0 -0
- /package/dist/{outputStyles-HUZ6NW2H.js.map → outputStyles-ZOAFW5HT.js.map} +0 -0
- /package/dist/{pluginRuntime-UFVSIRTV.js.map → pluginRuntime-SZQ464L4.js.map} +0 -0
- /package/dist/{pluginValidation-NV3NHI6L.js.map → pluginValidation-WWBESF4D.js.map} +0 -0
- /package/dist/{prompts-FTCUNDW4.js.map → prompts-TNZPD4OL.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-WELRPZYK.js.map → pybAgentSessionLoad-4ZRFGEBT.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-HSSPHCZS.js.map → pybAgentSessionResume-2CQXPUDZ.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-24IXJFWM.js.map → pybAgentStreamJsonSession-3E5Z53JN.js.map} +0 -0
- /package/dist/{pybHooks-YSCKBABP.js.map → pybHooks-25H73VEX.js.map} +0 -0
- /package/dist/{query-W5AJQBY5.js.map → query-MLM5JREI.js.map} +0 -0
- /package/dist/{registry-IK2DTN2W.js.map → registry-CO2UWLMO.js.map} +0 -0
- /package/dist/{ripgrep-O3FG3DKA.js.map → ripgrep-7G5ML73I.js.map} +0 -0
- /package/dist/{skillMarketplace-LYSDCOXI.js.map → skillMarketplace-SHXUU6U2.js.map} +0 -0
- /package/dist/{state-LJ34T5SZ.js.map → state-NNMNADWT.js.map} +0 -0
- /package/dist/{theme-H2F7NV72.js.map → theme-WYARLHVT.js.map} +0 -0
- /package/dist/{toolPermissionSettings-GFCBBW5T.js.map → toolPermissionSettings-P3VCQIYM.js.map} +0 -0
- /package/dist/{tools-V7VYBNAT.js.map → tools-SBX6BLEB.js.map} +0 -0
- /package/dist/{userInput-OLKCYBMY.js.map → userInput-YZC5IXZW.js.map} +0 -0
|
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
getSettingsFileCandidates,
|
|
5
5
|
loadSettingsWithLegacyFallback
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-F3K3SJFT.js";
|
|
7
7
|
import {
|
|
8
8
|
getSessionPlugins
|
|
9
9
|
} from "./chunk-BJSWTHRM.js";
|
|
10
10
|
import {
|
|
11
11
|
getTheme
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KR2MX5WZ.js";
|
|
13
13
|
import {
|
|
14
14
|
addMcprcServerForTesting,
|
|
15
15
|
getCurrentProjectConfig,
|
|
@@ -19,13 +19,13 @@ import {
|
|
|
19
19
|
safeParseJSON,
|
|
20
20
|
saveCurrentProjectConfig,
|
|
21
21
|
saveGlobalConfig
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EK6ANNY6.js";
|
|
23
23
|
import {
|
|
24
24
|
PRODUCT_COMMAND,
|
|
25
25
|
PRODUCT_NAME,
|
|
26
26
|
getCwd,
|
|
27
27
|
logMCPError
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-5DKFC3LS.js";
|
|
29
29
|
|
|
30
30
|
// src/services/mcp/client.ts
|
|
31
31
|
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
} from "./chunk-B6IMQJZM.js";
|
|
6
6
|
import {
|
|
7
7
|
loadSettingsWithLegacyFallback
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-F3K3SJFT.js";
|
|
9
9
|
import {
|
|
10
10
|
getSessionPlugins
|
|
11
11
|
} from "./chunk-BJSWTHRM.js";
|
|
12
12
|
import {
|
|
13
13
|
getCwd,
|
|
14
14
|
logError
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-5DKFC3LS.js";
|
|
16
16
|
|
|
17
17
|
// src/utils/session/pybHooks.ts
|
|
18
18
|
import { spawn } from "child_process";
|
|
@@ -496,7 +496,7 @@ async function runPromptHook(args) {
|
|
|
496
496
|
fallbackTimeoutMs: args.fallbackTimeoutMs
|
|
497
497
|
});
|
|
498
498
|
try {
|
|
499
|
-
const { queryQuick } = await import("./llmLazy-
|
|
499
|
+
const { queryQuick } = await import("./llmLazy-JY26HHD2.js");
|
|
500
500
|
const systemPrompt = [
|
|
501
501
|
"You are executing a Pyb prompt hook.",
|
|
502
502
|
"Return a single JSON object only (no markdown, no prose).",
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
} from "./chunk-BJSWTHRM.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-Y7GZ5W2P.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd,
|
|
11
11
|
logError,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5DKFC3LS.js";
|
|
14
14
|
|
|
15
15
|
// src/services/plugins/customCommands.ts
|
|
16
16
|
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
@@ -2,11 +2,11 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
listPybAgentSessions
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UEJFVTUZ.js";
|
|
6
6
|
import {
|
|
7
7
|
formatValidationResult,
|
|
8
8
|
validatePluginOrMarketplacePath
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UBMZOGHN.js";
|
|
10
10
|
import {
|
|
11
11
|
ConversationTracker,
|
|
12
12
|
appendFinishState,
|
|
@@ -14,18 +14,18 @@ import {
|
|
|
14
14
|
getConversationTrackerForContext,
|
|
15
15
|
isFinishComplete,
|
|
16
16
|
mapFinishReason
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-6ZZJGF7W.js";
|
|
18
18
|
import {
|
|
19
19
|
beginReplSessionScope
|
|
20
20
|
} from "./chunk-F4AXICO7.js";
|
|
21
21
|
import {
|
|
22
22
|
loadPybAgentSessionMessages
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-V3Y26JD4.js";
|
|
24
24
|
import {
|
|
25
25
|
appendSessionCustomTitleRecord,
|
|
26
26
|
appendSessionJsonlFromMessage,
|
|
27
27
|
appendSessionTagRecord
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-VGMEYSLX.js";
|
|
29
29
|
import {
|
|
30
30
|
drainHookSystemPromptAdditions,
|
|
31
31
|
getHookTranscriptPath,
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
runStopHooks,
|
|
38
38
|
runUserPromptSubmitHooks,
|
|
39
39
|
updateHookTranscriptForMessages
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-PUPISMZN.js";
|
|
41
41
|
import {
|
|
42
42
|
DEFAULT_OUTPUT_STYLE,
|
|
43
43
|
getAvailableOutputStyles,
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
getOutputStyleSystemPromptAdditions,
|
|
47
47
|
resolveOutputStyleName,
|
|
48
48
|
setCurrentOutputStyle
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-6O5XYV7G.js";
|
|
50
50
|
import {
|
|
51
51
|
fetchCustomModels,
|
|
52
52
|
getModelFeatures
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-UQNXHJMM.js";
|
|
54
54
|
import {
|
|
55
55
|
getSessionState
|
|
56
56
|
} from "./chunk-XKYHFZEC.js";
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
queryLLM,
|
|
59
59
|
queryQuick,
|
|
60
60
|
verifyApiKey
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-WGEY5O2I.js";
|
|
62
62
|
import {
|
|
63
63
|
DEFAULT_TIMEOUT_MS,
|
|
64
64
|
FallbackToolUseRejectedMessage,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
listMCPServers,
|
|
73
73
|
loadMergedSettings,
|
|
74
74
|
normalizeSandboxRuntimeConfigFromSettings
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-PTZUDCNB.js";
|
|
76
76
|
import {
|
|
77
77
|
addMarketplace,
|
|
78
78
|
disableSkillPlugin,
|
|
@@ -85,11 +85,11 @@ import {
|
|
|
85
85
|
refreshMarketplaceAsync,
|
|
86
86
|
removeMarketplace,
|
|
87
87
|
uninstallSkillPlugin
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-2I3SSZQJ.js";
|
|
89
89
|
import {
|
|
90
90
|
loadToolPermissionContextFromDisk,
|
|
91
91
|
persistToolPermissionUpdateToDisk
|
|
92
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-KVXEA4L5.js";
|
|
93
93
|
import {
|
|
94
94
|
applyToolPermissionContextUpdate,
|
|
95
95
|
applyToolPermissionContextUpdates,
|
|
@@ -100,13 +100,13 @@ import {
|
|
|
100
100
|
generateSystemReminders,
|
|
101
101
|
resetReminderSession,
|
|
102
102
|
systemReminderService
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-3RBQCL7S.js";
|
|
104
104
|
import {
|
|
105
105
|
clearAgentCache,
|
|
106
106
|
getActiveAgents,
|
|
107
107
|
getAgentByType,
|
|
108
108
|
getAllAgents
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-ZPIRAKGC.js";
|
|
110
110
|
import {
|
|
111
111
|
API_ERROR_MESSAGE_PREFIX,
|
|
112
112
|
CANCEL_MESSAGE,
|
|
@@ -137,7 +137,7 @@ import {
|
|
|
137
137
|
processUserInput,
|
|
138
138
|
reorderMessages,
|
|
139
139
|
stripSystemMessages
|
|
140
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-KW2CWUJO.js";
|
|
141
141
|
import {
|
|
142
142
|
getRequestStatus,
|
|
143
143
|
setRequestStatus,
|
|
@@ -167,7 +167,7 @@ import {
|
|
|
167
167
|
normalizeFilePath,
|
|
168
168
|
readTextContent,
|
|
169
169
|
writeTextContent
|
|
170
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-ARI6POM7.js";
|
|
171
171
|
import {
|
|
172
172
|
parseBlockEdits
|
|
173
173
|
} from "./chunk-QWIBSCDN.js";
|
|
@@ -177,18 +177,18 @@ import {
|
|
|
177
177
|
ParserRegistry,
|
|
178
178
|
initParser,
|
|
179
179
|
loadLanguage
|
|
180
|
-
} from "./chunk-
|
|
180
|
+
} from "./chunk-3WEFOYHX.js";
|
|
181
181
|
import {
|
|
182
182
|
getSettingsFileCandidates,
|
|
183
183
|
loadSettingsWithLegacyFallback,
|
|
184
184
|
readSettingsFile
|
|
185
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-F3K3SJFT.js";
|
|
186
186
|
import {
|
|
187
187
|
getCustomCommandDirectories,
|
|
188
188
|
hasCustomCommands,
|
|
189
189
|
loadCustomCommands,
|
|
190
190
|
reloadCustomCommands
|
|
191
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-PVDARHIF.js";
|
|
192
192
|
import {
|
|
193
193
|
getSessionPlugins
|
|
194
194
|
} from "./chunk-BJSWTHRM.js";
|
|
@@ -196,7 +196,7 @@ import {
|
|
|
196
196
|
ModelManager,
|
|
197
197
|
getModelManager,
|
|
198
198
|
isDefaultSlowAndCapableModel
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-AKOR7LY4.js";
|
|
200
200
|
import {
|
|
201
201
|
getCodeStyle,
|
|
202
202
|
getContext,
|
|
@@ -204,16 +204,16 @@ import {
|
|
|
204
204
|
getIsGit,
|
|
205
205
|
getProjectDocs,
|
|
206
206
|
getProjectStructureStatisticsBlock
|
|
207
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-DAJ3TBNT.js";
|
|
208
208
|
import {
|
|
209
209
|
getRipgrepPath,
|
|
210
210
|
getRipgrepPolicyMode,
|
|
211
211
|
resolveRipgrepPolicy,
|
|
212
212
|
ripGrep
|
|
213
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-THZYKZXQ.js";
|
|
214
214
|
import {
|
|
215
215
|
getTheme
|
|
216
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-KR2MX5WZ.js";
|
|
217
217
|
import {
|
|
218
218
|
DEFAULT_GLOBAL_CONFIG,
|
|
219
219
|
enableConfigs,
|
|
@@ -226,7 +226,7 @@ import {
|
|
|
226
226
|
saveGlobalConfig,
|
|
227
227
|
setAllPointersToModel,
|
|
228
228
|
setModelPointer
|
|
229
|
-
} from "./chunk-
|
|
229
|
+
} from "./chunk-EK6ANNY6.js";
|
|
230
230
|
import {
|
|
231
231
|
AbortError
|
|
232
232
|
} from "./chunk-RQVLBMP7.js";
|
|
@@ -235,7 +235,7 @@ import {
|
|
|
235
235
|
getCurrentRequest,
|
|
236
236
|
logUserFriendly,
|
|
237
237
|
markPhase
|
|
238
|
-
} from "./chunk-
|
|
238
|
+
} from "./chunk-Y7GZ5W2P.js";
|
|
239
239
|
import {
|
|
240
240
|
ASCII_LOGO,
|
|
241
241
|
BunShell,
|
|
@@ -275,10 +275,10 @@ import {
|
|
|
275
275
|
setCwd,
|
|
276
276
|
shouldApplyToolOutputTruncation,
|
|
277
277
|
truncateToolOutput
|
|
278
|
-
} from "./chunk-
|
|
278
|
+
} from "./chunk-5DKFC3LS.js";
|
|
279
279
|
import {
|
|
280
280
|
MACRO
|
|
281
|
-
} from "./chunk-
|
|
281
|
+
} from "./chunk-C3HQN7AW.js";
|
|
282
282
|
import {
|
|
283
283
|
__export
|
|
284
284
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -459,7 +459,7 @@ var getCommandSubcommandPrefix = memoize(
|
|
|
459
459
|
var getCommandPrefix = memoize(
|
|
460
460
|
async (command4, abortSignal) => {
|
|
461
461
|
const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
|
|
462
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-
|
|
462
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-W44XPBXA.js");
|
|
463
463
|
const response = await queryQuick2({
|
|
464
464
|
systemPrompt,
|
|
465
465
|
userPrompt,
|
|
@@ -4261,7 +4261,7 @@ function formatParseError(error) {
|
|
|
4261
4261
|
return error instanceof Error ? error.message : String(error);
|
|
4262
4262
|
}
|
|
4263
4263
|
async function defaultGateQuery(args) {
|
|
4264
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-
|
|
4264
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-W44XPBXA.js");
|
|
4265
4265
|
const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
|
|
4266
4266
|
const messages = [
|
|
4267
4267
|
{
|
|
@@ -6658,7 +6658,7 @@ var FileEditTool = {
|
|
|
6658
6658
|
const originalFileContent = currentFileContent;
|
|
6659
6659
|
let totalPatch = [];
|
|
6660
6660
|
const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
|
|
6661
|
-
const { findLspAnchor } = await import("./lspAnchor-
|
|
6661
|
+
const { findLspAnchor } = await import("./lspAnchor-FFN4HTAE.js");
|
|
6662
6662
|
for (const op of editOperations) {
|
|
6663
6663
|
const normalizedSearch = normalizeLineEndings(op.search);
|
|
6664
6664
|
const normalizedReplace = normalizeLineEndings(op.replace);
|
|
@@ -11940,7 +11940,7 @@ async function createAndStoreApiKey(accessToken) {
|
|
|
11940
11940
|
}
|
|
11941
11941
|
saveGlobalConfig(config2);
|
|
11942
11942
|
try {
|
|
11943
|
-
const { resetAnthropicClient } = await import("./llm-
|
|
11943
|
+
const { resetAnthropicClient } = await import("./llm-W44XPBXA.js");
|
|
11944
11944
|
resetAnthropicClient();
|
|
11945
11945
|
} catch {
|
|
11946
11946
|
}
|
|
@@ -16307,7 +16307,7 @@ async function refreshPluginRuntimeFromInstalls() {
|
|
|
16307
16307
|
const existingRoots = getSessionPlugins().map((p) => p.rootDir);
|
|
16308
16308
|
const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
|
|
16309
16309
|
if (dirs.length === 0) return [];
|
|
16310
|
-
const { configureSessionPlugins } = await import("./pluginRuntime-
|
|
16310
|
+
const { configureSessionPlugins } = await import("./pluginRuntime-SZQ464L4.js");
|
|
16311
16311
|
const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
|
|
16312
16312
|
return errors;
|
|
16313
16313
|
}
|
|
@@ -16976,7 +16976,7 @@ async function call(onDone, context) {
|
|
|
16976
16976
|
ModelConfig,
|
|
16977
16977
|
{
|
|
16978
16978
|
onClose: () => {
|
|
16979
|
-
import("./model-
|
|
16979
|
+
import("./model-N4HOF2SI.js").then(({ reloadModelManager: reloadModelManager2 }) => {
|
|
16980
16980
|
reloadModelManager2();
|
|
16981
16981
|
triggerModelConfigChange();
|
|
16982
16982
|
onDone();
|
|
@@ -25180,7 +25180,7 @@ function useStatusLine() {
|
|
|
25180
25180
|
// src/ui/components/PromptInput.tsx
|
|
25181
25181
|
async function interpretHashCommand(input) {
|
|
25182
25182
|
try {
|
|
25183
|
-
const { queryQuick: queryQuick2 } = await import("./llm-
|
|
25183
|
+
const { queryQuick: queryQuick2 } = await import("./llm-W44XPBXA.js");
|
|
25184
25184
|
const systemPrompt = [
|
|
25185
25185
|
"You're helping the user structure notes that will be added to their PYB.md file.",
|
|
25186
25186
|
"Format the user's input into a well-structured note that will be useful for later reference.",
|
|
@@ -25493,7 +25493,7 @@ function PromptInput({
|
|
|
25493
25493
|
if (messages2.length) {
|
|
25494
25494
|
if (mode === "bash") {
|
|
25495
25495
|
onQuery(messages2, newAbortController).then(async () => {
|
|
25496
|
-
const { getCwd: getCwd2 } = await import("./state-
|
|
25496
|
+
const { getCwd: getCwd2 } = await import("./state-NNMNADWT.js");
|
|
25497
25497
|
setCurrentPwd(getCwd2());
|
|
25498
25498
|
});
|
|
25499
25499
|
} else {
|
|
@@ -29948,7 +29948,7 @@ import { homedir as homedir8 } from "os";
|
|
|
29948
29948
|
// src/commands/agents/generation.ts
|
|
29949
29949
|
import { randomUUID as randomUUID6 } from "crypto";
|
|
29950
29950
|
async function generateAgentWithClaude(prompt) {
|
|
29951
|
-
const { queryModel } = await import("./llm-
|
|
29951
|
+
const { queryModel } = await import("./llm-W44XPBXA.js");
|
|
29952
29952
|
const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
|
|
29953
29953
|
|
|
29954
29954
|
Return your response as a JSON object with exactly these fields:
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
BunShell,
|
|
5
5
|
execFileNoThrow,
|
|
6
6
|
logError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-5DKFC3LS.js";
|
|
8
8
|
|
|
9
9
|
// src/utils/system/ripgrep.ts
|
|
10
10
|
import { findActualExecutable } from "spawn-rx";
|
|
@@ -65,12 +65,67 @@ function getDirname() {
|
|
|
65
65
|
return dirname(fileURLToPath(import.meta.url));
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
+
function normalizePath(value) {
|
|
69
|
+
return value.replaceAll("/", sep).replaceAll("\\", sep);
|
|
70
|
+
}
|
|
71
|
+
function findPackageRootFrom(start) {
|
|
72
|
+
let cur = start;
|
|
73
|
+
for (let i = 0; i < 30; i += 1) {
|
|
74
|
+
if (existsSync(join(cur, "package.json"))) return cur;
|
|
75
|
+
const next = dirname(cur);
|
|
76
|
+
if (next === cur) break;
|
|
77
|
+
cur = next;
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
function getRipgrepResourcesDirCandidates(input) {
|
|
82
|
+
const env = input?.env ?? process.env;
|
|
83
|
+
const candidates = [];
|
|
84
|
+
const explicitDir = env.PYB_RIPGREP_RESOURCE_DIR?.trim();
|
|
85
|
+
if (explicitDir) {
|
|
86
|
+
candidates.push(explicitDir);
|
|
87
|
+
}
|
|
88
|
+
const packageRoot = env.PYB_PACKAGE_ROOT?.trim();
|
|
89
|
+
if (packageRoot) {
|
|
90
|
+
candidates.push(join(packageRoot, "resources", "ripgrep"));
|
|
91
|
+
}
|
|
92
|
+
const dirnameValue = input?.runtimeDir ?? getDirname();
|
|
93
|
+
candidates.push(join(dirnameValue, "../../../resources/ripgrep"));
|
|
94
|
+
candidates.push(join(dirnameValue, "../../../../resources/ripgrep"));
|
|
95
|
+
candidates.push(join(dirnameValue, "../../resources/ripgrep"));
|
|
96
|
+
candidates.push(join(dirnameValue, "../../../../../resources/ripgrep"));
|
|
97
|
+
const argv1 = input?.argvEntry ?? process.argv?.[1];
|
|
98
|
+
if (argv1) {
|
|
99
|
+
const argvDir = dirname(argv1);
|
|
100
|
+
const root = findPackageRootFrom(argvDir);
|
|
101
|
+
if (root) {
|
|
102
|
+
candidates.push(join(root, "resources", "ripgrep"));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const unique = [];
|
|
106
|
+
const seen = /* @__PURE__ */ new Set();
|
|
107
|
+
for (const item of candidates) {
|
|
108
|
+
const normalized = normalizePath(item);
|
|
109
|
+
if (!seen.has(normalized)) {
|
|
110
|
+
seen.add(normalized);
|
|
111
|
+
unique.push(item);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return unique;
|
|
115
|
+
}
|
|
68
116
|
function resolveRipgrepResourcesDir() {
|
|
69
|
-
const
|
|
70
|
-
if (
|
|
71
|
-
return
|
|
117
|
+
const explicitDir = process.env.PYB_RIPGREP_RESOURCE_DIR?.trim();
|
|
118
|
+
if (explicitDir) {
|
|
119
|
+
return explicitDir;
|
|
120
|
+
}
|
|
121
|
+
const candidates = getRipgrepResourcesDirCandidates();
|
|
122
|
+
for (const candidate of candidates) {
|
|
123
|
+
const manifestPath = join(candidate, "manifest.json");
|
|
124
|
+
if (existsSync(manifestPath)) {
|
|
125
|
+
return candidate;
|
|
126
|
+
}
|
|
72
127
|
}
|
|
73
|
-
return join(
|
|
128
|
+
return candidates[0] ?? join(getDirname(), "../../../resources/ripgrep");
|
|
74
129
|
}
|
|
75
130
|
function getRipgrepManifestPath() {
|
|
76
131
|
return join(resolveRipgrepResourcesDir(), "manifest.json");
|
|
@@ -113,7 +168,12 @@ function getRipgrepPolicyMode(policy) {
|
|
|
113
168
|
function loadRipgrepManifest() {
|
|
114
169
|
const manifestPath = getRipgrepManifestPath();
|
|
115
170
|
if (!existsSync(manifestPath)) {
|
|
116
|
-
|
|
171
|
+
const tried = getRipgrepResourcesDirCandidates().map(
|
|
172
|
+
(dir) => join(dir, "manifest.json")
|
|
173
|
+
);
|
|
174
|
+
throw new Error(
|
|
175
|
+
`ripgrep checksum mismatch: manifest missing at ${manifestPath}; tried=${tried.join(" | ")}`
|
|
176
|
+
);
|
|
117
177
|
}
|
|
118
178
|
const rawBuffer = readFileSync(manifestPath);
|
|
119
179
|
const raw = decodeManifestContent(rawBuffer);
|
|
@@ -326,13 +386,21 @@ async function resolveRipgrepPathOrThrow() {
|
|
|
326
386
|
}
|
|
327
387
|
const policy = resolveRipgrepPolicy();
|
|
328
388
|
const resolutionErrors = [];
|
|
389
|
+
const resolutionErrorSet = /* @__PURE__ */ new Set();
|
|
390
|
+
const pushResolutionError = (error) => {
|
|
391
|
+
const message = String(error instanceof Error ? error.message : error);
|
|
392
|
+
if (!resolutionErrorSet.has(message)) {
|
|
393
|
+
resolutionErrorSet.add(message);
|
|
394
|
+
resolutionErrors.push(message);
|
|
395
|
+
}
|
|
396
|
+
};
|
|
329
397
|
if (policy.allowVendorFallback && (policy.vendorFirst || policy.offlineStrict)) {
|
|
330
398
|
try {
|
|
331
399
|
const vendorBinaryPath = resolveVendorRipgrepBinaryPath();
|
|
332
400
|
d("Using vendor ripgrep: %s", vendorBinaryPath);
|
|
333
401
|
return vendorBinaryPath;
|
|
334
402
|
} catch (error) {
|
|
335
|
-
|
|
403
|
+
pushResolutionError(error);
|
|
336
404
|
if (policy.offlineStrict) {
|
|
337
405
|
throw new Error(
|
|
338
406
|
`ripgrep strict offline mode: vendor resolution failed: ${resolutionErrors.join("; ")}`
|
|
@@ -353,7 +421,7 @@ async function resolveRipgrepPathOrThrow() {
|
|
|
353
421
|
d("Using cached ripgrep: %s", cached);
|
|
354
422
|
return cached;
|
|
355
423
|
} catch (error) {
|
|
356
|
-
|
|
424
|
+
pushResolutionError(error);
|
|
357
425
|
}
|
|
358
426
|
}
|
|
359
427
|
if (policy.allowVendorFallback) {
|
|
@@ -362,7 +430,7 @@ async function resolveRipgrepPathOrThrow() {
|
|
|
362
430
|
d("Using vendor ripgrep fallback: %s", vendorBinaryPath);
|
|
363
431
|
return vendorBinaryPath;
|
|
364
432
|
} catch (error) {
|
|
365
|
-
|
|
433
|
+
pushResolutionError(error);
|
|
366
434
|
}
|
|
367
435
|
}
|
|
368
436
|
throw new Error(
|
|
@@ -620,6 +688,7 @@ async function tree(cwd, limit = 50, abortSignal) {
|
|
|
620
688
|
}
|
|
621
689
|
|
|
622
690
|
export {
|
|
691
|
+
getRipgrepResourcesDirCandidates,
|
|
623
692
|
resolveRipgrepPolicy,
|
|
624
693
|
getRipgrepPolicyMode,
|
|
625
694
|
verifyRipgrepBinaryIntegrity,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/system/ripgrep.ts"],
|
|
4
|
+
"sourcesContent": ["import { findActualExecutable } from 'spawn-rx'\nimport { memoize } from 'lodash-es'\nimport {\n chmodSync,\n closeSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n mkdtempSync,\n openSync,\n readdirSync,\n readFileSync,\n rmSync,\n statSync,\n writeFileSync,\n} from 'node:fs'\nimport { createHash } from 'node:crypto'\nimport { execFile, spawn } 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 { basename, dirname, isAbsolute, join, relative, sep } from 'path'\nimport envPaths from 'env-paths'\nimport { unzipSync } from 'fflate'\nimport { fileURLToPath } from 'node:url'\n\nconst d = debug('pyb:ripgrep')\n\nconst DEFAULT_RIPGREP_VERSION = '14.1.1'\nconst PLATFORM_CONFIG = {\n 'arm64-darwin': { platform: 'aarch64-apple-darwin', extension: 'tar.gz' },\n 'arm64-linux': { platform: 'aarch64-unknown-linux-gnu', extension: 'tar.gz' },\n 'x64-darwin': { platform: 'x86_64-apple-darwin', extension: 'tar.gz' },\n 'x64-linux': { platform: 'x86_64-unknown-linux-musl', extension: 'tar.gz' },\n 'x64-win32': { platform: 'x86_64-pc-windows-msvc', extension: 'zip' },\n} as const\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 getRipgrepVersion(): string {\n const override = process.env.PYB_RIPGREP_VERSION?.trim()\n return override || DEFAULT_RIPGREP_VERSION\n}\n\nfunction getRipgrepBinaryName(): string {\n return process.platform === 'win32' ? 'rg.exe' : 'rg'\n}\n\nfunction getPlatformConfig() {\n const platformKey = `${process.arch}-${process.platform}` as keyof typeof PLATFORM_CONFIG\n const config = PLATFORM_CONFIG[platformKey]\n if (!config) {\n throw new Error(`Unsupported ripgrep platform: ${platformKey}`)\n }\n return { platformKey, ...config }\n}\n\nfunction getDirname() {\n try {\n return __dirname\n } catch {\n return dirname(fileURLToPath(import.meta.url))\n }\n}\n\nfunction normalizePath(value: string) {\n return value.replaceAll('/', sep).replaceAll('\\\\', sep)\n}\n\nfunction parentDir(path: string, levels: number) {\n let cur = path\n for (let i = 0; i < levels; i += 1) {\n cur = dirname(cur)\n }\n return cur\n}\n\nfunction findPackageRootFrom(start: string): string | null {\n let cur = start\n for (let i = 0; i < 30; i += 1) {\n if (existsSync(join(cur, 'package.json'))) return cur\n const next = dirname(cur)\n if (next === cur) break\n cur = next\n }\n return null\n}\n\nexport function getRipgrepResourcesDirCandidates(input?: {\n env?: NodeJS.ProcessEnv\n runtimeDir?: string\n argvEntry?: string\n}): string[] {\n const env = input?.env ?? process.env\n const candidates: string[] = []\n\n const explicitDir = env.PYB_RIPGREP_RESOURCE_DIR?.trim()\n if (explicitDir) {\n candidates.push(explicitDir)\n }\n\n const packageRoot = env.PYB_PACKAGE_ROOT?.trim()\n if (packageRoot) {\n candidates.push(join(packageRoot, 'resources', 'ripgrep'))\n }\n\n const dirnameValue = input?.runtimeDir ?? getDirname()\n candidates.push(join(dirnameValue, '../../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../../../../resources/ripgrep'))\n\n const argv1 = input?.argvEntry ?? process.argv?.[1]\n if (argv1) {\n const argvDir = dirname(argv1)\n const root = findPackageRootFrom(argvDir)\n if (root) {\n candidates.push(join(root, 'resources', 'ripgrep'))\n }\n }\n\n const unique: string[] = []\n const seen = new Set<string>()\n for (const item of candidates) {\n const normalized = normalizePath(item)\n if (!seen.has(normalized)) {\n seen.add(normalized)\n unique.push(item)\n }\n }\n return unique\n}\n\nfunction resolveRipgrepResourcesDir() {\n const explicitDir = process.env.PYB_RIPGREP_RESOURCE_DIR?.trim()\n if (explicitDir) {\n return explicitDir\n }\n const candidates = getRipgrepResourcesDirCandidates()\n for (const candidate of candidates) {\n const manifestPath = join(candidate, 'manifest.json')\n if (existsSync(manifestPath)) {\n return candidate\n }\n }\n return candidates[0] ?? join(getDirname(), '../../../resources/ripgrep')\n}\n\nfunction getRipgrepManifestPath() {\n return join(resolveRipgrepResourcesDir(), 'manifest.json')\n}\n\nfunction isVendorFallbackEnabled(env: NodeJS.ProcessEnv = process.env) {\n return isTruthyEnv(env.PYB_RIPGREP_VENDOR_ENABLED)\n}\n\nfunction isFalsyEnv(value: string | undefined): boolean {\n if (!value) return false\n return ['0', 'false', 'no', 'off'].includes(value.trim().toLowerCase())\n}\n\nfunction readBooleanEnv(\n env: NodeJS.ProcessEnv,\n key: string,\n defaultValue: boolean,\n): boolean {\n const raw = env[key]\n if (raw === undefined) return defaultValue\n if (isTruthyEnv(raw)) return true\n if (isFalsyEnv(raw)) return false\n return defaultValue\n}\n\nexport type RipgrepPolicy = {\n vendorFirst: boolean\n offlineStrict: boolean\n allowNetworkFallback: boolean\n allowPathFallback: boolean\n allowVendorFallback: boolean\n}\n\nexport function resolveRipgrepPolicy(\n env: NodeJS.ProcessEnv = process.env,\n): RipgrepPolicy {\n const offlineStrict = readBooleanEnv(env, 'PYB_OFFLINE_STRICT', false)\n const vendorFirst = readBooleanEnv(env, 'PYB_VENDOR_FIRST', true)\n const allowNetworkFallback =\n !offlineStrict && readBooleanEnv(env, 'PYB_ALLOW_NETWORK_FALLBACK', false)\n const preferBundled = isTruthyEnv(env.USE_BUILTIN_RIPGREP)\n const allowPathFallback = !offlineStrict && !preferBundled\n const allowVendorFallback = vendorFirst || isVendorFallbackEnabled(env) || offlineStrict\n return {\n vendorFirst,\n offlineStrict,\n allowNetworkFallback,\n allowPathFallback,\n allowVendorFallback,\n }\n}\n\nexport function getRipgrepPolicyMode(policy: RipgrepPolicy): string {\n if (policy.offlineStrict) {\n return 'strict-offline'\n }\n return policy.vendorFirst ? 'vendor-first' : 'path-first'\n}\n\ntype RipgrepManifest = {\n version?: string\n platforms?: Record<string, { binary?: string; sha256?: string }>\n}\n\nfunction loadRipgrepManifest(): RipgrepManifest {\n const manifestPath = getRipgrepManifestPath()\n if (!existsSync(manifestPath)) {\n const tried = getRipgrepResourcesDirCandidates().map(dir =>\n join(dir, 'manifest.json'),\n )\n throw new Error(\n `ripgrep checksum mismatch: manifest missing at ${manifestPath}; tried=${tried.join(' | ')}`,\n )\n }\n const rawBuffer = readFileSync(manifestPath)\n const raw = decodeManifestContent(rawBuffer)\n const parsed = JSON.parse(raw) as RipgrepManifest\n if (!parsed.platforms || typeof parsed.platforms !== 'object') {\n throw new Error('ripgrep checksum mismatch: manifest platforms missing')\n }\n return parsed\n}\n\nfunction decodeManifestContent(buffer: Buffer) {\n if (buffer.length >= 2) {\n if (buffer[0] === 0xff && buffer[1] === 0xfe) {\n return buffer.subarray(2).toString('utf16le')\n }\n if (buffer[0] === 0xfe && buffer[1] === 0xff) {\n throw new Error('ripgrep checksum mismatch: utf16be manifest is not supported')\n }\n }\n return buffer.toString('utf8').replace(/^\\uFEFF/, '')\n}\n\nfunction sha256File(filePath: string) {\n return createHash('sha256').update(readFileSync(filePath)).digest('hex')\n}\n\nexport function verifyRipgrepBinaryIntegrity(input: {\n binaryPath: string\n platformKey: keyof typeof PLATFORM_CONFIG\n}) {\n const manifest = loadRipgrepManifest()\n const platformEntry = manifest.platforms?.[input.platformKey]\n if (!platformEntry?.sha256) {\n throw new Error(\n `ripgrep checksum mismatch: sha256 missing for platform ${input.platformKey}`,\n )\n }\n const actualSha256 = sha256File(input.binaryPath)\n if (actualSha256 !== platformEntry.sha256) {\n throw new Error(\n `ripgrep checksum mismatch for ${input.platformKey}: expected ${platformEntry.sha256}, got ${actualSha256}`,\n )\n }\n}\n\nexport function resolveVendorRipgrepBinaryPath() {\n const { platformKey } = getPlatformConfig()\n const manifest = loadRipgrepManifest()\n const platformEntry = manifest.platforms?.[platformKey]\n if (!platformEntry?.binary) {\n throw new Error(`vendor ripgrep binary missing for ${platformKey}`)\n }\n const vendorBinaryPath = join(\n resolveRipgrepResourcesDir(),\n platformKey,\n platformEntry.binary,\n )\n if (!existsSync(vendorBinaryPath)) {\n throw new Error(`vendor ripgrep binary missing for ${platformKey}`)\n }\n verifyRipgrepBinaryIntegrity({ binaryPath: vendorBinaryPath, platformKey })\n return vendorBinaryPath\n}\n\nfunction getRipgrepCacheRoot(): string {\n const override = process.env.PYB_RIPGREP_CACHE_DIR?.trim()\n if (override) return override\n const paths = envPaths('pyb')\n return join(paths.cache, 'ripgrep')\n}\n\nfunction getDownloadBaseUrl(version: string): string {\n const override = process.env.PYB_RIPGREP_DOWNLOAD_BASE_URL?.trim()\n if (!override) {\n return `https://github.com/BurntSushi/ripgrep/releases/download/${version}`\n }\n if (override.includes('{version}')) {\n return override.replace('{version}', version)\n }\n return `${override.replace(/\\/$/, '')}/${version}`\n}\n\nasync function delay(ms: number): Promise<void> {\n await new Promise(resolve => setTimeout(resolve, ms))\n}\n\nfunction findFileRecursive(root: string, filename: string): string | null {\n const entries = readdirSync(root, { withFileTypes: true })\n for (const entry of entries) {\n const full = join(root, entry.name)\n if (entry.isDirectory()) {\n const found = findFileRecursive(full, filename)\n if (found) return found\n } else if (entry.isFile() && entry.name === filename) {\n return full\n }\n }\n return null\n}\n\nasync function execFileChecked(\n command: string,\n args: string[],\n options: { cwd: string },\n): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n execFile(\n command,\n args,\n { cwd: options.cwd, maxBuffer: 1_000_000 },\n (error, _stdout, stderr) => {\n if (error) {\n reject(\n new Error(\n `${command} ${args.join(' ')} failed: ${stderr || error.message}`,\n ),\n )\n } else {\n resolve()\n }\n },\n )\n })\n}\n\nasync function acquireLock(\n lockPath: string,\n readyPath: string,\n): Promise<number | null> {\n const start = Date.now()\n while (true) {\n try {\n return openSync(lockPath, 'wx')\n } catch (error: any) {\n if (error?.code !== 'EEXIST') {\n throw error\n }\n if (existsSync(readyPath)) return null\n if (Date.now() - start > 20000) {\n throw new Error('Timed out waiting for ripgrep download lock')\n }\n await delay(100)\n }\n }\n}\n\nasync function downloadRipgrepTo(cacheDir: string): Promise<string> {\n const { platform, extension, platformKey } = getPlatformConfig()\n const version = getRipgrepVersion()\n const filename = `ripgrep-${version}-${platform}.${extension}`\n const url = `${getDownloadBaseUrl(version)}/${filename}`\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to download ripgrep (${response.status}): ${url}`,\n )\n }\n const buffer = new Uint8Array(await response.arrayBuffer())\n const tempDir = mkdtempSync(join(cacheDir, 'tmp-'))\n try {\n const binaryName = getRipgrepBinaryName()\n const targetPath = join(cacheDir, binaryName)\n if (extension === 'zip') {\n const files = unzipSync(buffer)\n const entryName = Object.keys(files).find(name =>\n name.endsWith(binaryName),\n )\n if (!entryName) {\n throw new Error(`ripgrep binary not found in zip: ${filename}`)\n }\n writeFileSync(targetPath, files[entryName]!)\n } else {\n const archivePath = join(tempDir, filename)\n const extractDir = join(tempDir, 'extract')\n mkdirSync(extractDir, { recursive: true })\n writeFileSync(archivePath, buffer)\n await execFileChecked('tar', ['-xzf', archivePath, '-C', extractDir], {\n cwd: tempDir,\n })\n const extracted = findFileRecursive(extractDir, binaryName)\n if (!extracted) {\n throw new Error(\n `ripgrep binary not found after extraction: ${platformKey}`,\n )\n }\n copyFileSync(extracted, targetPath)\n }\n if (process.platform !== 'win32') {\n chmodSync(targetPath, 0o755)\n }\n return targetPath\n } finally {\n rmSync(tempDir, { recursive: true, force: true })\n }\n}\n\nasync function ensureCachedRipgrep(): Promise<string> {\n const version = getRipgrepVersion()\n const { platformKey } = getPlatformConfig()\n const cacheRoot = getRipgrepCacheRoot()\n const cacheDir = join(cacheRoot, version, platformKey)\n const binaryPath = join(cacheDir, getRipgrepBinaryName())\n if (existsSync(binaryPath)) {\n verifyRipgrepBinaryIntegrity({ binaryPath, platformKey })\n return binaryPath\n }\n mkdirSync(cacheDir, { recursive: true })\n const lockPath = join(cacheDir, '.lock')\n const lockFd = await acquireLock(lockPath, binaryPath)\n if (!lockFd) return binaryPath\n try {\n if (!existsSync(binaryPath)) {\n await downloadRipgrepTo(cacheDir)\n }\n verifyRipgrepBinaryIntegrity({ binaryPath, platformKey })\n return binaryPath\n } finally {\n try {\n closeSync(lockFd)\n } catch {}\n rmSync(lockPath, { force: true })\n }\n}\n\nasync function resolveRipgrepPathOrThrow(): Promise<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 const policy = resolveRipgrepPolicy()\n const resolutionErrors: string[] = []\n const resolutionErrorSet = new Set<string>()\n const pushResolutionError = (error: unknown) => {\n const message = String(error instanceof Error ? error.message : error)\n if (!resolutionErrorSet.has(message)) {\n resolutionErrorSet.add(message)\n resolutionErrors.push(message)\n }\n }\n\n if (policy.allowVendorFallback && (policy.vendorFirst || policy.offlineStrict)) {\n try {\n const vendorBinaryPath = resolveVendorRipgrepBinaryPath()\n d('Using vendor ripgrep: %s', vendorBinaryPath)\n return vendorBinaryPath\n } catch (error) {\n pushResolutionError(error)\n if (policy.offlineStrict) {\n throw new Error(\n `ripgrep strict offline mode: vendor resolution failed: ${resolutionErrors.join('; ')}`,\n )\n }\n }\n }\n\n if (policy.allowPathFallback) {\n const { cmd } = findActualExecutable('rg', [])\n d(`ripgrep initially resolved as: ${cmd}`)\n if (cmd !== 'rg') {\n return cmd\n }\n }\n\n if (policy.allowNetworkFallback) {\n try {\n const cached = await ensureCachedRipgrep()\n d('Using cached ripgrep: %s', cached)\n return cached\n } catch (error) {\n pushResolutionError(error)\n }\n }\n\n if (policy.allowVendorFallback) {\n try {\n const vendorBinaryPath = resolveVendorRipgrepBinaryPath()\n d('Using vendor ripgrep fallback: %s', vendorBinaryPath)\n return vendorBinaryPath\n } catch (error) {\n pushResolutionError(error)\n }\n }\n\n throw new Error(\n `Unable to resolve ripgrep path under current policy (${getRipgrepPolicyMode(policy)}): ${resolutionErrors.join('; ') || 'no eligible fallback'}`,\n )\n}\n\nexport const getRipgrepPath = memoize(\n async (): Promise<string> => resolveRipgrepPathOrThrow(),\n)\n\ntype RipGrepStatus = {\n files: string[]\n status: 'ok' | 'error'\n code?: number\n}\n\nexport async function ripGrepWithStatus(\n args: string[],\n target: string,\n abortSignal: AbortSignal,\n options?: { sandbox?: BunShellSandboxOptions },\n): Promise<RipGrepStatus> {\n await codesignRipgrepIfNecessary()\n const rg = await 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 { files: [], status: 'ok', code: 1 }\n if (result.code !== 0) {\n logError(`ripgrep failed with exit code ${result.code}: ${result.stderr}`)\n return { files: [], status: 'error', code: result.code }\n }\n return {\n files: result.stdout.trim().split('\\n').filter(Boolean),\n status: 'ok',\n code: 0,\n }\n }\n\n return new Promise(resolve => {\n const bun = (globalThis as any).Bun\n if (bun?.spawn && typeof bun.spawn === 'function') {\n const files: string[] = []\n let buffer = ''\n let stderr = ''\n const decoder = new TextDecoder()\n const proc = bun.spawn([rg, ...args, target], {\n stdout: 'pipe',\n stderr: 'pipe',\n signal: abortSignal,\n })\n const readStdout = async () => {\n const reader = proc.stdout.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n const parts = buffer.split(/\\r?\\n/)\n buffer = parts.pop() ?? ''\n for (const line of parts) {\n if (line) files.push(line)\n }\n }\n reader.releaseLock()\n }\n const readStderr = async () => {\n const reader = proc.stderr.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n stderr += decoder.decode(value, { stream: true })\n }\n reader.releaseLock()\n }\n Promise.all([readStdout(), readStderr(), proc.exited])\n .then(([_, __, exitCode]) => {\n if (buffer) files.push(buffer)\n if (exitCode && exitCode !== 1) {\n if (stderr) {\n logError(`ripgrep failed with exit code ${exitCode}: ${stderr}`)\n }\n resolve({ files: [], status: 'error', code: exitCode })\n return\n }\n resolve({ files, status: 'ok', code: exitCode ?? 0 })\n })\n .catch(error => {\n d('ripgrep error: %o', error)\n logError(error)\n resolve({ files: [], status: 'error' })\n })\n return\n }\n const proc = spawn(rg, [...args, target], {\n signal: abortSignal,\n timeout: 10_000,\n })\n const files: string[] = []\n let buffer = ''\n let stderr = ''\n proc.stdout?.on('data', chunk => {\n buffer += chunk.toString()\n const parts = buffer.split(/\\r?\\n/)\n buffer = parts.pop() ?? ''\n for (const line of parts) {\n if (line) files.push(line)\n }\n })\n proc.stderr?.on('data', chunk => {\n stderr += chunk.toString()\n })\n proc.on('error', error => {\n d('ripgrep error: %o', error)\n logError(error)\n })\n proc.on('close', code => {\n if (buffer.trim().length > 0) files.push(buffer.trim())\n if (code && code !== 1) {\n if (stderr) {\n logError(`ripgrep failed with exit code ${code}: ${stderr}`)\n }\n resolve({ files: [], status: 'error', code })\n return\n }\n resolve({\n files,\n status: 'ok',\n code: code ?? 0,\n })\n })\n })\n}\n\nexport async function ripGrep(\n args: string[],\n target: string,\n abortSignal: AbortSignal,\n options?: { sandbox?: BunShellSandboxOptions },\n): Promise<string[]> {\n const result = await ripGrepWithStatus(args, target, abortSignal, options)\n return result.files\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', await 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 await 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 await 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 function filesToTree(\n files: string[],\n cwd: string,\n limit: number = 50,\n): string {\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 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 =\n 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 // If we have hidden children, we append truncation info.\n // The connector depends on whether we showed any children.\n // If visibleChildren.length > 0, the last one used \u251C\u2500\u2500, so we use \u2514\u2500\u2500.\n // If visibleChildren.length == 0, we use \u2514\u2500\u2500.\n const connector = '\u2514\u2500\u2500 '\n output += `${childPrefix}${connector}... [${hiddenCount} truncated]\\n`\n }\n }\n\n render(treeRoot, '', true, basename(cwd) || '.')\n return output\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 return filesToTree(files, cwd, limit)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["files", "buffer", "stderr", "proc"]
|
|
7
|
+
}
|
|
@@ -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-2I3SSZQJ.js";
|
|
6
6
|
import {
|
|
7
7
|
parseFrontmatter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PVDARHIF.js";
|
|
9
9
|
import {
|
|
10
10
|
getCwd
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5DKFC3LS.js";
|
|
12
12
|
|
|
13
13
|
// src/services/plugins/pluginValidation.ts
|
|
14
14
|
import { existsSync, lstatSync, readFileSync } from "node:fs";
|