pybao-cli 1.4.24 → 1.4.25
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-Q3IP3BNQ.js +47 -0
- package/dist/{acp-CEXZZM2O.js → acp-AUKWBWMU.js} +29 -29
- package/dist/{agentsValidate-VIN6KUHE.js → agentsValidate-POOZ6Z2B.js} +7 -7
- package/dist/{ask-VAHHUITN.js → ask-KWA2DNIV.js} +28 -28
- package/dist/{autoUpdater-54NPSXB4.js → autoUpdater-EOXG42SO.js} +3 -3
- package/dist/{chunk-ZAYYQS5B.js → chunk-47EXCNW6.js} +1 -1
- package/dist/{chunk-CS6PH7QM.js → chunk-4V6WD6R2.js} +1 -1
- package/dist/{chunk-B44CXS5U.js → chunk-5UOVQ6ES.js} +2 -2
- package/dist/{chunk-47CY5NY4.js → chunk-66JIUGLV.js} +2 -2
- package/dist/{chunk-YUBH4BG2.js → chunk-6BRCM2E4.js} +2 -2
- package/dist/{chunk-6YBY6R7L.js → chunk-BQYXHHWP.js} +3 -3
- package/dist/{chunk-ZWMOE7BR.js → chunk-CPXJHNYY.js} +1 -1
- package/dist/{chunk-Y4F4PED2.js → chunk-DD2OYKDE.js} +4 -4
- package/dist/{chunk-B5CPGG4R.js → chunk-DT4HVZ3Y.js} +2 -2
- package/dist/{chunk-ZBY54X3G.js → chunk-GTEB77DG.js} +1 -1
- package/dist/{chunk-GHZFYTLQ.js → chunk-IPYLXGFV.js} +3 -3
- package/dist/{chunk-OYUU6BNX.js → chunk-J46HCSM3.js} +1 -1
- package/dist/{chunk-6JHOWP4Q.js → chunk-JLQ6NN6N.js} +2 -2
- package/dist/{chunk-FQ2K532R.js → chunk-JSR26OQG.js} +49 -44
- package/dist/chunk-JSR26OQG.js.map +7 -0
- package/dist/{chunk-JQMCLUHN.js → chunk-JUE7XD3T.js} +1 -1
- package/dist/{chunk-Q6CUPX42.js → chunk-MUD34BHM.js} +4 -4
- package/dist/{chunk-7XNYKOBD.js → chunk-MXDHTE5J.js} +1 -1
- package/dist/{chunk-5LWUHNXF.js → chunk-MXJWHBOD.js} +3 -3
- package/dist/{chunk-EZWDO4EF.js → chunk-NDFJPKT7.js} +132 -118
- package/dist/chunk-NDFJPKT7.js.map +7 -0
- package/dist/{chunk-6GAN7FVN.js → chunk-NWRTSS7D.js} +2 -2
- package/dist/{chunk-H67LWH3W.js → chunk-OEH4JATH.js} +1 -1
- package/dist/{chunk-YCZDHQZ2.js → chunk-QYIH3X4U.js} +3 -3
- package/dist/{chunk-SY7GR24A.js → chunk-R47CUCI3.js} +1 -1
- package/dist/{chunk-SY7GR24A.js.map → chunk-R47CUCI3.js.map} +1 -1
- package/dist/{chunk-J6FZD27B.js → chunk-RPFER2VQ.js} +2 -2
- package/dist/{chunk-GOB5XLMA.js → chunk-S75DS5IC.js} +1 -1
- package/dist/{chunk-NUZY6VZ2.js → chunk-SVQXV5Q5.js} +4 -4
- package/dist/{chunk-VFDQWUNW.js → chunk-T52MGYKQ.js} +3 -3
- package/dist/{chunk-TX6AJL23.js → chunk-VUISUCOO.js} +3 -3
- package/dist/{chunk-SSARHQEG.js → chunk-Z6TEUSJQ.js} +3 -3
- package/dist/{chunk-VAY3BGZT.js → chunk-ZOWRLM6Q.js} +4 -4
- package/dist/{cli-JGC5UQCR.js → cli-IELXRUTX.js} +87 -87
- package/dist/commands-QXWCHX5K.js +51 -0
- package/dist/{config-3RTRBOXD.js → config-77DZQTQK.js} +4 -4
- package/dist/{context-WYCDKD33.js → context-KLUMCLFT.js} +6 -6
- package/dist/{customCommands-4VRCEZOI.js → customCommands-ISEA2746.js} +4 -4
- package/dist/{env-6UYIHRR4.js → env-J4F7PRGG.js} +2 -2
- package/dist/{file-6A7D7CPY.js → file-KRCHS5A5.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-PLMT5HOR.js → llm-6XARMLJR.js} +29 -29
- package/dist/{llmLazy-OFGAOAN3.js → llmLazy-GRPZWGAK.js} +1 -1
- package/dist/{loader-GU6SR5X2.js → loader-WUNIG65J.js} +4 -4
- package/dist/{lsp-RNGL4JJR.js → lsp-DL76IXYS.js} +6 -6
- package/dist/{lspAnchor-HKLUWFLS.js → lspAnchor-VPPXXUNO.js} +6 -6
- package/dist/{mcp-QM3KWBUW.js → mcp-KY56TM6T.js} +7 -7
- package/dist/{mentionProcessor-QBGSG5XF.js → mentionProcessor-E3ITBICV.js} +5 -5
- package/dist/{messages-USZTP34X.js → messages-DT4HTEOS.js} +1 -1
- package/dist/{model-K4WNNZA3.js → model-KCH57MST.js} +5 -5
- package/dist/{openai-R3F2W5Z4.js → openai-BNPU7EJH.js} +5 -5
- package/dist/{outputStyles-6UMFR7XH.js → outputStyles-QE2JKRBE.js} +4 -4
- package/dist/{pluginRuntime-JVLKIOYY.js → pluginRuntime-NB3KNFSZ.js} +6 -6
- package/dist/{pluginValidation-VWXVNMR2.js → pluginValidation-KVCOIKER.js} +6 -6
- package/dist/prompts-QIFYQCCH.js +53 -0
- package/dist/{pybAgentSessionLoad-75I4OCMO.js → pybAgentSessionLoad-SCPRT5NR.js} +4 -4
- package/dist/{pybAgentSessionResume-WCGWRTN3.js → pybAgentSessionResume-VKEMMVH7.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-Z627MFWP.js → pybAgentStreamJsonSession-G6TCRJIW.js} +1 -1
- package/dist/{pybHooks-HLGZPMD4.js → pybHooks-T6RPQN5F.js} +4 -4
- package/dist/query-AA5M6NJ4.js +55 -0
- package/dist/{registry-QESMT4DU.js → registry-CZRNYJ22.js} +5 -5
- package/dist/{ripgrep-D2PYZGZX.js → ripgrep-URB4ZUF3.js} +3 -3
- package/dist/{skillMarketplace-FBPUVKHP.js → skillMarketplace-NC4WL6B5.js} +3 -3
- package/dist/{state-CWDWFNPX.js → state-DXHBJ5GD.js} +2 -2
- package/dist/{theme-FDMMRN2M.js → theme-CJU6VJXX.js} +5 -5
- package/dist/{toolPermissionSettings-SKQJR2TT.js → toolPermissionSettings-F3CNX7NA.js} +6 -6
- package/dist/tools-UZYXHSUA.js +52 -0
- package/dist/{userInput-ZJ52OL5V.js → userInput-GIXZP2YY.js} +30 -30
- package/package.json +1 -1
- package/dist/REPL-NU4M6D6V.js +0 -47
- package/dist/chunk-EZWDO4EF.js.map +0 -7
- package/dist/chunk-FQ2K532R.js.map +0 -7
- package/dist/commands-M3HM5SPJ.js +0 -51
- package/dist/prompts-FKNGOBOG.js +0 -53
- package/dist/query-DEPCAE5D.js +0 -55
- package/dist/tools-MDUGB7GQ.js +0 -52
- /package/dist/{REPL-NU4M6D6V.js.map → REPL-Q3IP3BNQ.js.map} +0 -0
- /package/dist/{acp-CEXZZM2O.js.map → acp-AUKWBWMU.js.map} +0 -0
- /package/dist/{agentsValidate-VIN6KUHE.js.map → agentsValidate-POOZ6Z2B.js.map} +0 -0
- /package/dist/{ask-VAHHUITN.js.map → ask-KWA2DNIV.js.map} +0 -0
- /package/dist/{autoUpdater-54NPSXB4.js.map → autoUpdater-EOXG42SO.js.map} +0 -0
- /package/dist/{chunk-ZAYYQS5B.js.map → chunk-47EXCNW6.js.map} +0 -0
- /package/dist/{chunk-CS6PH7QM.js.map → chunk-4V6WD6R2.js.map} +0 -0
- /package/dist/{chunk-B44CXS5U.js.map → chunk-5UOVQ6ES.js.map} +0 -0
- /package/dist/{chunk-47CY5NY4.js.map → chunk-66JIUGLV.js.map} +0 -0
- /package/dist/{chunk-YUBH4BG2.js.map → chunk-6BRCM2E4.js.map} +0 -0
- /package/dist/{chunk-6YBY6R7L.js.map → chunk-BQYXHHWP.js.map} +0 -0
- /package/dist/{chunk-ZWMOE7BR.js.map → chunk-CPXJHNYY.js.map} +0 -0
- /package/dist/{chunk-Y4F4PED2.js.map → chunk-DD2OYKDE.js.map} +0 -0
- /package/dist/{chunk-B5CPGG4R.js.map → chunk-DT4HVZ3Y.js.map} +0 -0
- /package/dist/{chunk-ZBY54X3G.js.map → chunk-GTEB77DG.js.map} +0 -0
- /package/dist/{chunk-GHZFYTLQ.js.map → chunk-IPYLXGFV.js.map} +0 -0
- /package/dist/{chunk-OYUU6BNX.js.map → chunk-J46HCSM3.js.map} +0 -0
- /package/dist/{chunk-6JHOWP4Q.js.map → chunk-JLQ6NN6N.js.map} +0 -0
- /package/dist/{chunk-JQMCLUHN.js.map → chunk-JUE7XD3T.js.map} +0 -0
- /package/dist/{chunk-Q6CUPX42.js.map → chunk-MUD34BHM.js.map} +0 -0
- /package/dist/{chunk-7XNYKOBD.js.map → chunk-MXDHTE5J.js.map} +0 -0
- /package/dist/{chunk-5LWUHNXF.js.map → chunk-MXJWHBOD.js.map} +0 -0
- /package/dist/{chunk-6GAN7FVN.js.map → chunk-NWRTSS7D.js.map} +0 -0
- /package/dist/{chunk-H67LWH3W.js.map → chunk-OEH4JATH.js.map} +0 -0
- /package/dist/{chunk-YCZDHQZ2.js.map → chunk-QYIH3X4U.js.map} +0 -0
- /package/dist/{chunk-J6FZD27B.js.map → chunk-RPFER2VQ.js.map} +0 -0
- /package/dist/{chunk-GOB5XLMA.js.map → chunk-S75DS5IC.js.map} +0 -0
- /package/dist/{chunk-NUZY6VZ2.js.map → chunk-SVQXV5Q5.js.map} +0 -0
- /package/dist/{chunk-VFDQWUNW.js.map → chunk-T52MGYKQ.js.map} +0 -0
- /package/dist/{chunk-TX6AJL23.js.map → chunk-VUISUCOO.js.map} +0 -0
- /package/dist/{chunk-SSARHQEG.js.map → chunk-Z6TEUSJQ.js.map} +0 -0
- /package/dist/{chunk-VAY3BGZT.js.map → chunk-ZOWRLM6Q.js.map} +0 -0
- /package/dist/{cli-JGC5UQCR.js.map → cli-IELXRUTX.js.map} +0 -0
- /package/dist/{commands-M3HM5SPJ.js.map → commands-QXWCHX5K.js.map} +0 -0
- /package/dist/{config-3RTRBOXD.js.map → config-77DZQTQK.js.map} +0 -0
- /package/dist/{context-WYCDKD33.js.map → context-KLUMCLFT.js.map} +0 -0
- /package/dist/{customCommands-4VRCEZOI.js.map → customCommands-ISEA2746.js.map} +0 -0
- /package/dist/{env-6UYIHRR4.js.map → env-J4F7PRGG.js.map} +0 -0
- /package/dist/{file-6A7D7CPY.js.map → file-KRCHS5A5.js.map} +0 -0
- /package/dist/{llm-PLMT5HOR.js.map → llm-6XARMLJR.js.map} +0 -0
- /package/dist/{llmLazy-OFGAOAN3.js.map → llmLazy-GRPZWGAK.js.map} +0 -0
- /package/dist/{loader-GU6SR5X2.js.map → loader-WUNIG65J.js.map} +0 -0
- /package/dist/{lsp-RNGL4JJR.js.map → lsp-DL76IXYS.js.map} +0 -0
- /package/dist/{lspAnchor-HKLUWFLS.js.map → lspAnchor-VPPXXUNO.js.map} +0 -0
- /package/dist/{mcp-QM3KWBUW.js.map → mcp-KY56TM6T.js.map} +0 -0
- /package/dist/{mentionProcessor-QBGSG5XF.js.map → mentionProcessor-E3ITBICV.js.map} +0 -0
- /package/dist/{messages-USZTP34X.js.map → messages-DT4HTEOS.js.map} +0 -0
- /package/dist/{model-K4WNNZA3.js.map → model-KCH57MST.js.map} +0 -0
- /package/dist/{openai-R3F2W5Z4.js.map → openai-BNPU7EJH.js.map} +0 -0
- /package/dist/{outputStyles-6UMFR7XH.js.map → outputStyles-QE2JKRBE.js.map} +0 -0
- /package/dist/{pluginRuntime-JVLKIOYY.js.map → pluginRuntime-NB3KNFSZ.js.map} +0 -0
- /package/dist/{pluginValidation-VWXVNMR2.js.map → pluginValidation-KVCOIKER.js.map} +0 -0
- /package/dist/{prompts-FKNGOBOG.js.map → prompts-QIFYQCCH.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-75I4OCMO.js.map → pybAgentSessionLoad-SCPRT5NR.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-WCGWRTN3.js.map → pybAgentSessionResume-VKEMMVH7.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-Z627MFWP.js.map → pybAgentStreamJsonSession-G6TCRJIW.js.map} +0 -0
- /package/dist/{pybHooks-HLGZPMD4.js.map → pybHooks-T6RPQN5F.js.map} +0 -0
- /package/dist/{query-DEPCAE5D.js.map → query-AA5M6NJ4.js.map} +0 -0
- /package/dist/{registry-QESMT4DU.js.map → registry-CZRNYJ22.js.map} +0 -0
- /package/dist/{ripgrep-D2PYZGZX.js.map → ripgrep-URB4ZUF3.js.map} +0 -0
- /package/dist/{skillMarketplace-FBPUVKHP.js.map → skillMarketplace-NC4WL6B5.js.map} +0 -0
- /package/dist/{state-CWDWFNPX.js.map → state-DXHBJ5GD.js.map} +0 -0
- /package/dist/{theme-FDMMRN2M.js.map → theme-CJU6VJXX.js.map} +0 -0
- /package/dist/{toolPermissionSettings-SKQJR2TT.js.map → toolPermissionSettings-F3CNX7NA.js.map} +0 -0
- /package/dist/{tools-MDUGB7GQ.js.map → tools-UZYXHSUA.js.map} +0 -0
- /package/dist/{userInput-ZJ52OL5V.js.map → userInput-GIXZP2YY.js.map} +0 -0
|
@@ -2,23 +2,23 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
ripGrepWithStatus
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4V6WD6R2.js";
|
|
6
6
|
import {
|
|
7
7
|
getCurrentProjectConfig,
|
|
8
8
|
getGlobalConfig,
|
|
9
9
|
getOrCreateUserID,
|
|
10
10
|
saveCurrentProjectConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-Z6TEUSJQ.js";
|
|
12
12
|
import {
|
|
13
13
|
SESSION_ID,
|
|
14
14
|
env,
|
|
15
15
|
execFileNoThrow,
|
|
16
16
|
getCwd,
|
|
17
17
|
logError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-J46HCSM3.js";
|
|
19
19
|
import {
|
|
20
20
|
MACRO
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-R47CUCI3.js";
|
|
22
22
|
import {
|
|
23
23
|
__require
|
|
24
24
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -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-GIXZP2YY.js");
|
|
452
452
|
return impl.processUserInput(input, mode, setToolJSX, context, pastedImages);
|
|
453
453
|
}
|
|
454
454
|
|
|
@@ -2,15 +2,15 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
loadSettingsWithLegacyFallback
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CPXJHNYY.js";
|
|
6
6
|
import {
|
|
7
7
|
debug
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OEH4JATH.js";
|
|
9
9
|
import {
|
|
10
10
|
env,
|
|
11
11
|
getSessionRoot,
|
|
12
12
|
resolveXdgDataPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-J46HCSM3.js";
|
|
14
14
|
import {
|
|
15
15
|
__require
|
|
16
16
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -25,58 +25,58 @@ import {
|
|
|
25
25
|
hasReadPermission,
|
|
26
26
|
hasWritePermission,
|
|
27
27
|
query
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-JSR26OQG.js";
|
|
29
29
|
import {
|
|
30
30
|
queryLLM,
|
|
31
31
|
queryQuick
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-SVQXV5Q5.js";
|
|
33
33
|
import {
|
|
34
34
|
FallbackToolUseRejectedMessage,
|
|
35
35
|
MCPTool,
|
|
36
36
|
getClients,
|
|
37
37
|
getMCPTools
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-DD2OYKDE.js";
|
|
39
39
|
import {
|
|
40
40
|
generateAgentId
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-DT4HVZ3Y.js";
|
|
42
42
|
import {
|
|
43
43
|
getActiveAgents,
|
|
44
44
|
getAgentByType,
|
|
45
45
|
getAvailableAgentTypes
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-RPFER2VQ.js";
|
|
47
47
|
import {
|
|
48
48
|
INTERRUPT_MESSAGE,
|
|
49
49
|
createAssistantMessage,
|
|
50
50
|
createUserMessage,
|
|
51
51
|
getLastAssistantMessageId
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-MXDHTE5J.js";
|
|
53
53
|
import {
|
|
54
54
|
formatDuration,
|
|
55
55
|
formatNumber
|
|
56
56
|
} from "./chunk-OUXHGDLH.js";
|
|
57
57
|
import {
|
|
58
58
|
getAbsolutePath
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-66JIUGLV.js";
|
|
60
60
|
import {
|
|
61
61
|
LspFacade,
|
|
62
62
|
formatDiagnosticsPretty
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-ZOWRLM6Q.js";
|
|
64
64
|
import {
|
|
65
65
|
getModelManager
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-IPYLXGFV.js";
|
|
67
67
|
import {
|
|
68
68
|
getContext
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-MUD34BHM.js";
|
|
70
70
|
import {
|
|
71
71
|
filesToTree,
|
|
72
72
|
ripGrepWithStatus
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-4V6WD6R2.js";
|
|
74
74
|
import {
|
|
75
75
|
getTheme
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-S75DS5IC.js";
|
|
77
77
|
import {
|
|
78
78
|
debug
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-OEH4JATH.js";
|
|
80
80
|
import {
|
|
81
81
|
BunShell,
|
|
82
82
|
getCwd,
|
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
overwriteLog,
|
|
88
88
|
readTaskOutput,
|
|
89
89
|
resolveXdgDataPath
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-J46HCSM3.js";
|
|
91
91
|
|
|
92
92
|
// src/tools/index.ts
|
|
93
93
|
import { memoize as memoize2 } from "lodash-es";
|
|
@@ -766,7 +766,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
|
|
|
766
766
|
if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
|
|
767
767
|
try {
|
|
768
768
|
const { isAbsolute: isAbsolute3, resolve: resolve4 } = await import("path");
|
|
769
|
-
const { getSessionRoot: getSessionRoot2 } = await import("./state-
|
|
769
|
+
const { getSessionRoot: getSessionRoot2 } = await import("./state-DXHBJ5GD.js");
|
|
770
770
|
const lines = output.split("\n");
|
|
771
771
|
const uniqueFiles = /* @__PURE__ */ new Set();
|
|
772
772
|
const lspSuggestions = [];
|
|
@@ -1139,7 +1139,7 @@ var DeleteTool = {
|
|
|
1139
1139
|
}
|
|
1140
1140
|
if (!force) {
|
|
1141
1141
|
try {
|
|
1142
|
-
const { LspFacade: LspFacade2 } = await import("./lsp-
|
|
1142
|
+
const { LspFacade: LspFacade2 } = await import("./lsp-DL76IXYS.js");
|
|
1143
1143
|
const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
|
|
1144
1144
|
if (referenceDetail) {
|
|
1145
1145
|
failedItems.push(
|
|
@@ -1320,6 +1320,7 @@ var DESCRIPTION3 = `\u5217\u51FA\u6307\u5B9A\u76EE\u5F55\u4E2D\u6240\u6709\u6587
|
|
|
1320
1320
|
\u8BF4\u660E\uFF1A
|
|
1321
1321
|
- BFS \u4F1A\u4F18\u5148\u5C55\u793A\u9876\u5C42\uFF08\u6839\u76EE\u5F55\uFF09\u7ED3\u6784\uFF0C\u5373\u4F7F\u8F93\u51FA\u88AB\u622A\u65AD\u3002
|
|
1322
1322
|
- path \u53C2\u6570\u5FC5\u987B\u4E3A\u7EDD\u5BF9\u8DEF\u5F84\u3002
|
|
1323
|
+
- \u8DEF\u5F84\u6765\u6E90\u7EA6\u675F\uFF1A\u5F53\u8DEF\u5F84\u975E\u7528\u6237\u63D0\u4F9B\u65F6\uFF0C\u5FC5\u987B\u5148\u7528 LS/Glob \u786E\u8BA4\u7236\u7EA7\u76EE\u5F55\u5B58\u5728\uFF0C\u518D\u5BF9\u4E0B\u7EA7\u8DEF\u5F84\u6267\u884C LS\u3002
|
|
1323
1324
|
|
|
1324
1325
|
\u9002\u7528\u573A\u666F\uFF1A
|
|
1325
1326
|
- \u5FEB\u901F\u4E86\u89E3\u9879\u76EE\u6216\u6307\u5B9A\u76EE\u5F55\u7684\u9876\u5C42\uFF08\u6839\u76EE\u5F55\uFF09\u6587\u4EF6\u76EE\u5F55\u4FE1\u606F\u548C\u76EE\u5F55\u6811\u7ED3\u6784
|
|
@@ -1434,116 +1435,129 @@ var LSTool = {
|
|
|
1434
1435
|
},
|
|
1435
1436
|
async *call({ path, ignore }, { abortController }) {
|
|
1436
1437
|
const fullFilePath = isAbsolute2(path) ? path : resolve2(getCwd(), path);
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
const rgIgnoreGlobs = DEFAULT_IGNORE_PATTERNS.map(
|
|
1442
|
-
(pattern) => `!${pattern}*`
|
|
1443
|
-
).concat(userIgnore.map((pattern) => `!${pattern}`)).filter(Boolean);
|
|
1444
|
-
const rgArgs = [
|
|
1445
|
-
"--files",
|
|
1446
|
-
...rgIgnoreGlobs.flatMap((pattern) => ["--glob", pattern])
|
|
1447
|
-
];
|
|
1448
|
-
const initialResult = await ripGrepWithStatus(
|
|
1449
|
-
rgArgs,
|
|
1450
|
-
fullFilePath,
|
|
1451
|
-
abortController.signal
|
|
1452
|
-
);
|
|
1453
|
-
const files = initialResult.files;
|
|
1454
|
-
const allEntries = files.map((file) => {
|
|
1455
|
-
const absolutePath = isAbsolute2(file) ? file : resolve2(fullFilePath, file);
|
|
1456
|
-
const relativePath = relative2(fullFilePath, absolutePath);
|
|
1457
|
-
const normalized = relativePath.split(sep2).join("/");
|
|
1458
|
-
return { absolutePath, relativePath, normalized };
|
|
1459
|
-
});
|
|
1460
|
-
const matchIgnorePatterns = ignorePatterns.map(
|
|
1461
|
-
(pattern) => pattern.endsWith("/") ? `${pattern}**` : pattern
|
|
1462
|
-
);
|
|
1463
|
-
const fileEntries = allEntries.filter((entry) => {
|
|
1464
|
-
if (matchIgnorePatterns.length === 0) return true;
|
|
1465
|
-
return !matchIgnorePatterns.some(
|
|
1466
|
-
(pattern) => minimatch(entry.normalized, pattern, { dot: true, nocase: false })
|
|
1438
|
+
try {
|
|
1439
|
+
const userIgnore = (ignore ?? []).filter(Boolean);
|
|
1440
|
+
const ignorePatterns = DEFAULT_IGNORE_PATTERNS.concat(userIgnore).filter(
|
|
1441
|
+
Boolean
|
|
1467
1442
|
);
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
const notShownDirectoryCount = Array.from(excludedDirectories).filter(
|
|
1490
|
-
(dir) => !selectedDirectories.has(dir)
|
|
1491
|
-
).length;
|
|
1492
|
-
const notShownFileCount = truncated ? totalCount - selectedEntries.length : 0;
|
|
1493
|
-
const ratioText = totalCount === 0 ? "0.00" : (totalDirectories / totalCount).toFixed(2);
|
|
1494
|
-
const structureInfo = `[\u76EE\u5F55\u7ED3\u6784\u4FE1\u606F]\u9876\u5C42\u76EE\u5F55\u6570\uFF1A${topLevelResult.directoryCount}\u4E2A\uFF0C\u9876\u5C42\u6587\u4EF6\u6570\uFF1A${topLevelResult.fileCount}\u4E2A\uFF0C\u603B\u76EE\u5F55\u6570\uFF1A${totalDirectories}\u4E2A\uFF0C\u603B\u6587\u4EF6\u6570\uFF1A${totalCount}\u4E2A\uFF0C\u603B\u76EE\u5F55/\u603B\u6587\u4EF6\u6BD4\u4F8B=${ratioText}\uFF0C\u6700\u6DF1\u76EE\u5F55\u5C42\u7EA7=${maxDepth}\u3002\uFF08\u7EDF\u8BA1\u6570\u636E\u4E0D\u5305\u542B\u7A7A\u76EE\u5F55\u4EE5\u53CA\u5E38\u89C1\u975E\u6838\u5FC3\u76EE\u5F55/\u6784\u5EFA\u4EA7\u7269/\u4F9D\u8D56\u7F13\u5B58\u7B49\u6587\u4EF6\u6216\u76EE\u5F55\uFF09`;
|
|
1495
|
-
const treeLines = treeOutput ? treeOutput.split("\n") : [];
|
|
1496
|
-
const omittedLines = Math.max(0, treeLines.length - DISPLAY_LINE_LIMIT);
|
|
1497
|
-
const warnings = [];
|
|
1498
|
-
if (truncated) {
|
|
1499
|
-
warnings.push(
|
|
1500
|
-
"Truncated directory tree: this is a partial view. Use LS on subdirectories or Glob to narrow the scope before further search."
|
|
1443
|
+
const rgIgnoreGlobs = DEFAULT_IGNORE_PATTERNS.map(
|
|
1444
|
+
(pattern) => `!${pattern}*`
|
|
1445
|
+
).concat(userIgnore.map((pattern) => `!${pattern}`)).filter(Boolean);
|
|
1446
|
+
const rgArgs = [
|
|
1447
|
+
"--files",
|
|
1448
|
+
...rgIgnoreGlobs.flatMap((pattern) => ["--glob", pattern])
|
|
1449
|
+
];
|
|
1450
|
+
const initialResult = await ripGrepWithStatus(
|
|
1451
|
+
rgArgs,
|
|
1452
|
+
fullFilePath,
|
|
1453
|
+
abortController.signal
|
|
1454
|
+
);
|
|
1455
|
+
const files = initialResult.files;
|
|
1456
|
+
const allEntries = files.map((file) => {
|
|
1457
|
+
const absolutePath = isAbsolute2(file) ? file : resolve2(fullFilePath, file);
|
|
1458
|
+
const relativePath = relative2(fullFilePath, absolutePath);
|
|
1459
|
+
const normalized = relativePath.split(sep2).join("/");
|
|
1460
|
+
return { absolutePath, relativePath, normalized };
|
|
1461
|
+
});
|
|
1462
|
+
const matchIgnorePatterns = ignorePatterns.map(
|
|
1463
|
+
(pattern) => pattern.endsWith("/") ? `${pattern}**` : pattern
|
|
1501
1464
|
);
|
|
1502
|
-
|
|
1503
|
-
|
|
1465
|
+
const fileEntries = allEntries.filter((entry) => {
|
|
1466
|
+
if (matchIgnorePatterns.length === 0) return true;
|
|
1467
|
+
return !matchIgnorePatterns.some(
|
|
1468
|
+
(pattern) => minimatch(entry.normalized, pattern, { dot: true, nocase: false })
|
|
1469
|
+
);
|
|
1470
|
+
}).sort((a, b) => a.normalized.localeCompare(b.normalized));
|
|
1471
|
+
const totalCount = fileEntries.length;
|
|
1472
|
+
const truncated = totalCount > MAX_FILES_LIMIT;
|
|
1473
|
+
const selectedEntries = truncated ? fileEntries.slice(0, MAX_FILES_LIMIT) : fileEntries;
|
|
1474
|
+
const excludedEntries = truncated ? fileEntries.slice(MAX_FILES_LIMIT) : [];
|
|
1475
|
+
const selectedFiles = selectedEntries.map((entry) => entry.absolutePath);
|
|
1476
|
+
let treeOutput = filesToTree(
|
|
1477
|
+
selectedFiles,
|
|
1478
|
+
fullFilePath,
|
|
1479
|
+
Number.MAX_SAFE_INTEGER
|
|
1504
1480
|
);
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
warnings.push("3) \u5982\u9700\u66F4\u5E7F\u5339\u914D\uFF0C\u53EF\u7528 Glob dir/** \u4E0E dir/**/* \u7F29\u5C0F\u5230\u6A21\u5757\u7EA7\u8303\u56F4\u3002");
|
|
1509
|
-
warnings.push("4) \u5728\u5DF2\u786E\u8BA4\u76EE\u5F55\u5185\u4F7F\u7528 Grep/\u8BED\u4E49\u641C\u7D22\u5B9A\u4F4D\u6587\u4EF6\u6216\u7B26\u53F7\u3002");
|
|
1510
|
-
}
|
|
1511
|
-
if (topLevelResult.truncated) {
|
|
1512
|
-
warnings.push(
|
|
1513
|
-
`TOP-LEVEL TRUNCATED: \u9876\u5C42\u6761\u76EE=${topLevelResult.totalCount}; \u4E0A\u9650=${TOP_LEVEL_LIMIT}\u3002\u5982\u9700\u5B8C\u6574\u7ED3\u679C\uFF0C\u9010\u5C42\u7F29\u5C0F\u8303\u56F4\u5E76\u5206\u6B65\u786E\u8BA4\u3002`
|
|
1481
|
+
const topLevelResult = buildTopLevelTree(fullFilePath);
|
|
1482
|
+
const { totalDirectories, maxDepth } = getDirectoryStats(
|
|
1483
|
+
fileEntries.map((entry) => entry.normalized)
|
|
1514
1484
|
);
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1485
|
+
const selectedDirectories = getDirectorySet(
|
|
1486
|
+
selectedEntries.map((entry) => entry.normalized)
|
|
1487
|
+
);
|
|
1488
|
+
const excludedDirectories = getDirectorySet(
|
|
1489
|
+
excludedEntries.map((entry) => entry.normalized)
|
|
1490
|
+
);
|
|
1491
|
+
const notShownDirectoryCount = Array.from(excludedDirectories).filter(
|
|
1492
|
+
(dir) => !selectedDirectories.has(dir)
|
|
1493
|
+
).length;
|
|
1494
|
+
const notShownFileCount = truncated ? totalCount - selectedEntries.length : 0;
|
|
1495
|
+
const ratioText = totalCount === 0 ? "0.00" : (totalDirectories / totalCount).toFixed(2);
|
|
1496
|
+
const structureInfo = `[\u76EE\u5F55\u7ED3\u6784\u4FE1\u606F]\u9876\u5C42\u76EE\u5F55\u6570\uFF1A${topLevelResult.directoryCount}\u4E2A\uFF0C\u9876\u5C42\u6587\u4EF6\u6570\uFF1A${topLevelResult.fileCount}\u4E2A\uFF0C\u603B\u76EE\u5F55\u6570\uFF1A${totalDirectories}\u4E2A\uFF0C\u603B\u6587\u4EF6\u6570\uFF1A${totalCount}\u4E2A\uFF0C\u603B\u76EE\u5F55/\u603B\u6587\u4EF6\u6BD4\u4F8B=${ratioText}\uFF0C\u6700\u6DF1\u76EE\u5F55\u5C42\u7EA7=${maxDepth}\u3002\uFF08\u7EDF\u8BA1\u6570\u636E\u4E0D\u5305\u542B\u7A7A\u76EE\u5F55\u4EE5\u53CA\u5E38\u89C1\u975E\u6838\u5FC3\u76EE\u5F55/\u6784\u5EFA\u4EA7\u7269/\u4F9D\u8D56\u7F13\u5B58\u7B49\u6587\u4EF6\u6216\u76EE\u5F55\uFF09`;
|
|
1497
|
+
const treeLines = treeOutput ? treeOutput.split("\n") : [];
|
|
1498
|
+
const omittedLines = Math.max(0, treeLines.length - DISPLAY_LINE_LIMIT);
|
|
1499
|
+
const warnings = [];
|
|
1500
|
+
if (truncated) {
|
|
1501
|
+
warnings.push(
|
|
1502
|
+
"Truncated directory tree: this is a partial view. Use LS on subdirectories or Glob to narrow the scope before further search."
|
|
1503
|
+
);
|
|
1504
|
+
warnings.push(
|
|
1505
|
+
`[\u76EE\u5F55\u6811\u622A\u65AD\u63D0\u9192]\u5F53\u524D\u76EE\u5F55\u7ED3\u6784\u56E0\u8D85\u8FC7\u5C55\u793A\u9600\u503C\u88AB\u622A\u65AD\uFF0C\u672A\u5C55\u793A\u6587\u4EF6\u6570=${notShownFileCount}\uFF0C\u672A\u663E\u793A\u76EE\u5F55\u6570=${notShownDirectoryCount}\uFF0C\u672A\u663E\u793A\u884C\u6570=${omittedLines} lines\uFF08\u7EDF\u8BA1\u6570\u636E\u4E0D\u5305\u542B\u7A7A\u76EE\u5F55\u4EE5\u53CA\u5E38\u89C1\u975E\u6838\u5FC3\u76EE\u5F55/\u6784\u5EFA\u4EA7\u7269/\u4F9D\u8D56\u7F13\u5B58\u7B49\u6587\u4EF6\u6216\u76EE\u5F55\uFF09\u3002\u8BE5\u8F93\u51FA\u4E3A\u90E8\u5206\u89C6\u56FE\uFF0C\u672A\u51FA\u73B0\u8DEF\u5F84\u4E0D\u5F97\u7528\u4E8E\u5B9A\u4F4D\u3002\u4F9D\u636E\u5F53\u524D\u9879\u76EE\u7ED3\u6784\u7EDF\u8BA1\u6570\u636E\uFF0C\u53EF\u521D\u6B65\u8FDB\u884C\u9879\u76EE\u7ED3\u6784\u590D\u6742\u5EA6\u5206\u6790\uFF1A1 \u603B\u76EE\u5F55/\u603B\u6587\u4EF6\u6BD4\u4F8B\u9AD8 \u2192 \u7ED3\u6784\u66F4\u788E\u3001\u5C42\u7EA7\u53EF\u80FD\u66F4\u7EC6\uFF0C\u590D\u6742\u5EA6\u503E\u5411\u66F4\u9AD8\u30022 \u6700\u6DF1\u5C42\u7EA7\u5927 \u2192 \u6DF1\u5C42\u5D4C\u5957\u660E\u663E\uFF0C\u5BFC\u822A\u4E0E\u5B9A\u4F4D\u6210\u672C\u66F4\u9AD8\u30023 \u9876\u5C42\u76EE\u5F55\u6570\u591A \u2192 \u6A21\u5757\u5165\u53E3\u5206\u6563\uFF0C\u9700\u66F4\u4E25\u683C\u5206\u5C42\u786E\u8BA4\u30024 \u6587\u4EF6\u603B\u91CF\u5927 \u2192 \u66F4\u5BB9\u6613\u89E6\u53D1\u8F93\u51FA\u622A\u65AD\u3002\u5904\u7406\u6D41\u7A0B\uFF1A\u590D\u6742\u5EA6\u4F4E \u2192 \u53EF\u76F4\u63A5 LS \u83B7\u53D6\u7ED3\u6784\u7EBF\u7D22\u540E\u8FDB\u5165\u5B9A\u4F4D\uFF1B\u590D\u6742\u5EA6\u9AD8 \u2192 \u5148\u7528 LS \u83B7\u53D6\u9876\u5C42\u7EBF\u7D22\uFF0C\u518D\u7528 Glob \u5206\u5C42\u786E\u8BA4\u8DEF\u5F84\u3002`
|
|
1506
|
+
);
|
|
1507
|
+
warnings.push("\u82E5\u9700\u6DF1\u5165\u5206\u6790\u5EFA\u8BAE\u5982\u4E0B\u5206\u6B65\u52A8\u4F5C\uFF08\u5C24\u5176\u76EE\u5F55\u7ED3\u6784\u590D\u6742\u5EA6\u8F83\u9AD8\u65F6\uFF09\uFF1A");
|
|
1508
|
+
warnings.push("1) \u5C06\u5F53\u524D\u9876\u5C42\u4F5C\u4E3A\u7EBF\u7D22\uFF0C\u4F18\u5148\u7528 LS \u5BF9\u5019\u9009\u9876\u5C42\u76EE\u5F55\u9010\u5C42\u786E\u8BA4\u7ED3\u6784\u3002");
|
|
1509
|
+
warnings.push("2) \u5728\u5DF2\u786E\u8BA4\u7684\u5019\u9009\u76EE\u5F55\u4E0B\uFF0C\u4F7F\u7528 Glob dir/* \u4E0E dir/*/ \u7EC6\u5316\u8DEF\u5F84\u5B58\u5728\u6027\u3002");
|
|
1510
|
+
warnings.push("3) \u5982\u9700\u66F4\u5E7F\u5339\u914D\uFF0C\u53EF\u7528 Glob dir/** \u4E0E dir/**/* \u7F29\u5C0F\u5230\u6A21\u5757\u7EA7\u8303\u56F4\u3002");
|
|
1511
|
+
warnings.push("4) \u5728\u5DF2\u786E\u8BA4\u76EE\u5F55\u5185\u4F7F\u7528 Grep/\u8BED\u4E49\u641C\u7D22\u5B9A\u4F4D\u6587\u4EF6\u6216\u7B26\u53F7\u3002");
|
|
1512
|
+
}
|
|
1513
|
+
if (topLevelResult.truncated) {
|
|
1514
|
+
warnings.push(
|
|
1515
|
+
`TOP-LEVEL TRUNCATED: \u9876\u5C42\u6761\u76EE=${topLevelResult.totalCount}; \u4E0A\u9650=${TOP_LEVEL_LIMIT}\u3002\u5982\u9700\u5B8C\u6574\u7ED3\u679C\uFF0C\u9010\u5C42\u7F29\u5C0F\u8303\u56F4\u5E76\u5206\u6B65\u786E\u8BA4\u3002`
|
|
1516
|
+
);
|
|
1517
|
+
}
|
|
1518
|
+
const rootLabel = fullFilePath.endsWith(sep2) ? fullFilePath : `${fullFilePath}${sep2}`;
|
|
1519
|
+
const topLevelView = `[\u76EE\u5F55\u9876\u5C42\u7ED3\u6784\u89C6\u56FE]
|
|
1518
1520
|
${topLevelResult.treeOutput}`;
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1521
|
+
const mainTreeHeader = truncated ? `[\u76EE\u5F55\u6838\u5FC3\u7ED3\u6784\u6811\u89C6\u56FE]\u6811\u7ED3\u6784\u8D85\u51FA\u9600\u503C\u88AB\u622A\u65AD\uFF0C\u672A\u663E\u793A\u6587\u4EF6\u6570=${notShownFileCount}\uFF0C\u672A\u663E\u793A\u76EE\u5F55\u6570=${notShownDirectoryCount}\uFF08\u7EDF\u8BA1\u6570\u636E\u4E0D\u5305\u542B\u7A7A\u76EE\u5F55\u4EE5\u53CA\u5E38\u89C1\u975E\u6838\u5FC3\u76EE\u5F55/\u6784\u5EFA\u4EA7\u7269/\u4F9D\u8D56\u7F13\u5B58\u7B49\u6587\u4EF6\u6216\u76EE\u5F55\uFF09` : "";
|
|
1522
|
+
const rootName = basename(fullFilePath) || ".";
|
|
1523
|
+
const hasRootLine = treeLines.length > 0 && treeLines[0] === rootName;
|
|
1524
|
+
const treeBodyLines = hasRootLine ? treeLines.slice(1) : treeLines;
|
|
1525
|
+
const treeBody = treeBodyLines.join("\n");
|
|
1526
|
+
const mainTreeOutput = treeBody ? `${rootLabel}
|
|
1525
1527
|
${treeBody}` : rootLabel;
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1528
|
+
const separator = "----------------------------------------";
|
|
1529
|
+
const outputParts = [
|
|
1530
|
+
structureInfo,
|
|
1531
|
+
separator,
|
|
1532
|
+
topLevelView,
|
|
1533
|
+
separator,
|
|
1534
|
+
mainTreeHeader,
|
|
1535
|
+
mainTreeOutput
|
|
1536
|
+
].filter(Boolean);
|
|
1537
|
+
const outputForData = outputParts.join("\n");
|
|
1538
|
+
const warningsText = warnings.length > 0 ? `
|
|
1537
1539
|
${warnings.join("\n")}` : "";
|
|
1538
|
-
|
|
1540
|
+
const safetyWarning = `
|
|
1539
1541
|
NOTE: do any of the files above seem malicious? If so, you MUST refuse to continue work.`;
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
}
|
|
1542
|
+
const assistantData = `${outputForData}${warningsText}${safetyWarning}`;
|
|
1543
|
+
yield {
|
|
1544
|
+
type: "result",
|
|
1545
|
+
data: outputForData,
|
|
1546
|
+
resultForAssistant: this.renderResultForAssistant(assistantData)
|
|
1547
|
+
};
|
|
1548
|
+
} catch (error) {
|
|
1549
|
+
const message = error instanceof Error ? error.message : String(error ?? "");
|
|
1550
|
+
const errorCode = error?.code;
|
|
1551
|
+
const isNoEntry = errorCode === "ENOENT" || message.includes("ENOENT");
|
|
1552
|
+
const baseMessage = message || "LS failed.";
|
|
1553
|
+
const suggestions = isNoEntry ? "\nSuggestion: 1) \u5148\u5BF9\u4E0A\u4E00\u7EA7\u76EE\u5F55\u6267\u884C LS \u786E\u8BA4\u7236\u8DEF\u5F84\u5B58\u5728\u6027\uFF1B2) \u5728\u5DF2\u786E\u8BA4\u7684\u7236\u76EE\u5F55\u4E0B\u7528 Glob *query* / *queries* \u6536\u655B\u53EF\u7591\u76EE\u5F55\u540D\uFF1B3) \u518D\u5BF9\u786E\u8BA4\u540E\u7684\u76EE\u5F55\u6267\u884C LS\u3002" : "";
|
|
1554
|
+
const assistantData = `${baseMessage}${suggestions}`;
|
|
1555
|
+
yield {
|
|
1556
|
+
type: "result",
|
|
1557
|
+
data: baseMessage,
|
|
1558
|
+
resultForAssistant: this.renderResultForAssistant(assistantData)
|
|
1559
|
+
};
|
|
1560
|
+
}
|
|
1547
1561
|
}
|
|
1548
1562
|
};
|
|
1549
1563
|
var renderTopLevelTree = (rootLabel, directories, files) => {
|