pybao-cli 1.3.93 → 1.3.95
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-7WPVB4IF.js +47 -0
- package/dist/{acp-EVHOGBLR.js → acp-IP2EUY3O.js} +29 -29
- package/dist/{agentsValidate-SX5WCTHD.js → agentsValidate-YGYIFZ2Q.js} +7 -7
- package/dist/{ask-5256RCJR.js → ask-RXRDLJ2Q.js} +28 -28
- package/dist/{autoUpdater-62OEX27S.js → autoUpdater-WXXGD5CW.js} +3 -3
- package/dist/{chunk-ARHVL4GY.js → chunk-2CQ6B2EF.js} +4 -4
- package/dist/{chunk-D5GRAD3G.js → chunk-2OZWUTJN.js} +3 -3
- package/dist/{chunk-B55DFBEO.js → chunk-3ZXF2UHD.js} +2 -2
- package/dist/{chunk-PBKTN6PS.js → chunk-7VDXI7AR.js} +1 -1
- package/dist/{chunk-RCEEY77V.js → chunk-BKPUVKNL.js} +1 -1
- package/dist/{chunk-OUXWQ5VS.js → chunk-CH6GH2PY.js} +2 -2
- package/dist/{chunk-P5OMB2NR.js → chunk-DNDIMOXI.js} +1 -1
- package/dist/{chunk-TATJD3PS.js → chunk-EYQDSK5K.js} +1 -1
- package/dist/{chunk-HQU5FX5A.js → chunk-G75MDYMO.js} +2 -2
- package/dist/{chunk-BKLDKPLL.js → chunk-GQTOTLSY.js} +6 -3
- package/dist/chunk-GQTOTLSY.js.map +7 -0
- package/dist/{chunk-NQNSJDW7.js → chunk-GZJWX5KE.js} +3 -3
- package/dist/{chunk-DKLWXWL2.js → chunk-KOFUHO7S.js} +28 -11
- package/dist/{chunk-DKLWXWL2.js.map → chunk-KOFUHO7S.js.map} +2 -2
- package/dist/{chunk-JDY2JDD3.js → chunk-L66UZNNO.js} +125 -45
- package/dist/chunk-L66UZNNO.js.map +7 -0
- package/dist/{chunk-ZJIMLKMQ.js → chunk-NH77UCWT.js} +3 -3
- package/dist/{chunk-APVX3GSP.js → chunk-NPBMF2YV.js} +136 -62
- package/dist/chunk-NPBMF2YV.js.map +7 -0
- package/dist/{chunk-NCHRQKJP.js → chunk-O6BHLPRE.js} +1 -1
- package/dist/{chunk-NCHRQKJP.js.map → chunk-O6BHLPRE.js.map} +1 -1
- package/dist/{chunk-GGBJ6RZQ.js → chunk-OM6GCBT3.js} +3 -3
- package/dist/{chunk-UKADBDTZ.js → chunk-QSZWYMPZ.js} +7 -4
- package/dist/chunk-QSZWYMPZ.js.map +7 -0
- package/dist/{chunk-PWRCPRYF.js → chunk-R4AG75VT.js} +2 -2
- package/dist/{chunk-53LR6LMF.js → chunk-RIHUVOTZ.js} +2 -2
- package/dist/{chunk-JDEWLQHH.js → chunk-RQBIHTZO.js} +1 -1
- package/dist/{chunk-TNMW3LIC.js → chunk-RYCR3HAC.js} +4 -4
- package/dist/{chunk-2SDOBAYI.js → chunk-TC56HMSX.js} +2 -2
- package/dist/{chunk-A6332THM.js → chunk-UBJFL3ZW.js} +3 -3
- package/dist/{chunk-AI356RID.js → chunk-UQL55KPP.js} +3 -3
- package/dist/{chunk-SR3SWOX7.js → chunk-V77NDZPE.js} +1 -1
- package/dist/{chunk-ZZX3RSJM.js → chunk-VQ6RVQVH.js} +1 -1
- package/dist/{chunk-AKK6NTGD.js → chunk-XF3KOCXY.js} +1 -1
- package/dist/{chunk-A4LZLJ4E.js → chunk-ZC2N4I37.js} +2 -2
- package/dist/{chunk-Y5WRSDBM.js → chunk-ZPCPWVPN.js} +3 -3
- package/dist/{cli-LOINYVA4.js → cli-4G4Z26BL.js} +87 -87
- package/dist/commands-JPUDJKNX.js +51 -0
- package/dist/{config-ESCUISGA.js → config-YZNZQLXL.js} +4 -4
- package/dist/{context-A6RYVYH3.js → context-EZ47E5Q5.js} +7 -5
- package/dist/{customCommands-NP3YOHBP.js → customCommands-G527FNNJ.js} +4 -4
- package/dist/{env-QM2GQKSL.js → env-MZGL75G3.js} +2 -2
- package/dist/{file-COGPZQB2.js → file-MUZCEO7B.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-DZMLOCDR.js → llm-NC2ZA7BQ.js} +29 -29
- package/dist/{llmLazy-L4VAGXRS.js → llmLazy-XNMS7UPG.js} +1 -1
- package/dist/{loader-J7FDM25W.js → loader-W35B3CAM.js} +4 -4
- package/dist/{lsp-ZJDBSAGL.js → lsp-VUBIB4E2.js} +6 -6
- package/dist/{lspAnchor-QUM3YKRZ.js → lspAnchor-4WXOLJUM.js} +6 -6
- package/dist/{mcp-TYRRTRZO.js → mcp-5P3ONWR7.js} +7 -7
- package/dist/{mentionProcessor-VBRYWNJ6.js → mentionProcessor-GCQ5NHV3.js} +5 -5
- package/dist/{messages-TI35HRUJ.js → messages-YTLYB5DI.js} +1 -1
- package/dist/{model-CYQGPU6S.js → model-HBR6OZOT.js} +5 -5
- package/dist/{openai-YJXPABCZ.js → openai-MS35XWNU.js} +5 -5
- package/dist/{outputStyles-54CH4AXQ.js → outputStyles-OWR2UZBL.js} +4 -4
- package/dist/{pluginRuntime-HUH43L3E.js → pluginRuntime-SN4Y5PIT.js} +6 -6
- package/dist/{pluginValidation-YZQAIFOB.js → pluginValidation-6DFK5G6T.js} +6 -6
- package/dist/prompts-ILVJ75E2.js +53 -0
- package/dist/{pybAgentSessionLoad-IDX6CZ7W.js → pybAgentSessionLoad-OLPYFTYS.js} +4 -4
- package/dist/{pybAgentSessionResume-G7CNXIM2.js → pybAgentSessionResume-VJ6G5ZUT.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-4DK6ZF6D.js → pybAgentStreamJsonSession-GGISSUF3.js} +1 -1
- package/dist/{pybHooks-6NZEXF2Y.js → pybHooks-TFWZEUMM.js} +4 -4
- package/dist/query-DEBIJVZX.js +61 -0
- package/dist/{registry-MYSH5C4A.js → registry-U3FUZUBO.js} +5 -5
- package/dist/{ripgrep-UDJTJUDM.js → ripgrep-EMJZZFWK.js} +3 -3
- package/dist/{skillMarketplace-QUB6SCI3.js → skillMarketplace-FXCBEE6R.js} +3 -3
- package/dist/{state-H3ASL5UP.js → state-BMWIIFPG.js} +2 -2
- package/dist/{theme-N2PDKHSA.js → theme-J6RWKV4W.js} +5 -5
- package/dist/{toolPermissionSettings-H3A4FEPL.js → toolPermissionSettings-DSH46ML7.js} +6 -6
- package/dist/tools-LFQ5NCA7.js +52 -0
- package/dist/{userInput-2C2HUFUT.js → userInput-JGJXNAKY.js} +30 -30
- package/package.json +1 -1
- package/dist/REPL-YIK4SNUK.js +0 -47
- package/dist/chunk-APVX3GSP.js.map +0 -7
- package/dist/chunk-BKLDKPLL.js.map +0 -7
- package/dist/chunk-JDY2JDD3.js.map +0 -7
- package/dist/chunk-UKADBDTZ.js.map +0 -7
- package/dist/commands-5MM7DHYR.js +0 -51
- package/dist/prompts-MKDGNXMZ.js +0 -53
- package/dist/query-3JMCOSE3.js +0 -59
- package/dist/tools-JKFSGTP2.js +0 -52
- /package/dist/{REPL-YIK4SNUK.js.map → REPL-7WPVB4IF.js.map} +0 -0
- /package/dist/{acp-EVHOGBLR.js.map → acp-IP2EUY3O.js.map} +0 -0
- /package/dist/{agentsValidate-SX5WCTHD.js.map → agentsValidate-YGYIFZ2Q.js.map} +0 -0
- /package/dist/{ask-5256RCJR.js.map → ask-RXRDLJ2Q.js.map} +0 -0
- /package/dist/{autoUpdater-62OEX27S.js.map → autoUpdater-WXXGD5CW.js.map} +0 -0
- /package/dist/{chunk-ARHVL4GY.js.map → chunk-2CQ6B2EF.js.map} +0 -0
- /package/dist/{chunk-D5GRAD3G.js.map → chunk-2OZWUTJN.js.map} +0 -0
- /package/dist/{chunk-B55DFBEO.js.map → chunk-3ZXF2UHD.js.map} +0 -0
- /package/dist/{chunk-PBKTN6PS.js.map → chunk-7VDXI7AR.js.map} +0 -0
- /package/dist/{chunk-RCEEY77V.js.map → chunk-BKPUVKNL.js.map} +0 -0
- /package/dist/{chunk-OUXWQ5VS.js.map → chunk-CH6GH2PY.js.map} +0 -0
- /package/dist/{chunk-P5OMB2NR.js.map → chunk-DNDIMOXI.js.map} +0 -0
- /package/dist/{chunk-TATJD3PS.js.map → chunk-EYQDSK5K.js.map} +0 -0
- /package/dist/{chunk-HQU5FX5A.js.map → chunk-G75MDYMO.js.map} +0 -0
- /package/dist/{chunk-NQNSJDW7.js.map → chunk-GZJWX5KE.js.map} +0 -0
- /package/dist/{chunk-ZJIMLKMQ.js.map → chunk-NH77UCWT.js.map} +0 -0
- /package/dist/{chunk-GGBJ6RZQ.js.map → chunk-OM6GCBT3.js.map} +0 -0
- /package/dist/{chunk-PWRCPRYF.js.map → chunk-R4AG75VT.js.map} +0 -0
- /package/dist/{chunk-53LR6LMF.js.map → chunk-RIHUVOTZ.js.map} +0 -0
- /package/dist/{chunk-JDEWLQHH.js.map → chunk-RQBIHTZO.js.map} +0 -0
- /package/dist/{chunk-TNMW3LIC.js.map → chunk-RYCR3HAC.js.map} +0 -0
- /package/dist/{chunk-2SDOBAYI.js.map → chunk-TC56HMSX.js.map} +0 -0
- /package/dist/{chunk-A6332THM.js.map → chunk-UBJFL3ZW.js.map} +0 -0
- /package/dist/{chunk-AI356RID.js.map → chunk-UQL55KPP.js.map} +0 -0
- /package/dist/{chunk-SR3SWOX7.js.map → chunk-V77NDZPE.js.map} +0 -0
- /package/dist/{chunk-ZZX3RSJM.js.map → chunk-VQ6RVQVH.js.map} +0 -0
- /package/dist/{chunk-AKK6NTGD.js.map → chunk-XF3KOCXY.js.map} +0 -0
- /package/dist/{chunk-A4LZLJ4E.js.map → chunk-ZC2N4I37.js.map} +0 -0
- /package/dist/{chunk-Y5WRSDBM.js.map → chunk-ZPCPWVPN.js.map} +0 -0
- /package/dist/{cli-LOINYVA4.js.map → cli-4G4Z26BL.js.map} +0 -0
- /package/dist/{commands-5MM7DHYR.js.map → commands-JPUDJKNX.js.map} +0 -0
- /package/dist/{config-ESCUISGA.js.map → config-YZNZQLXL.js.map} +0 -0
- /package/dist/{context-A6RYVYH3.js.map → context-EZ47E5Q5.js.map} +0 -0
- /package/dist/{customCommands-NP3YOHBP.js.map → customCommands-G527FNNJ.js.map} +0 -0
- /package/dist/{env-QM2GQKSL.js.map → env-MZGL75G3.js.map} +0 -0
- /package/dist/{file-COGPZQB2.js.map → file-MUZCEO7B.js.map} +0 -0
- /package/dist/{llm-DZMLOCDR.js.map → llm-NC2ZA7BQ.js.map} +0 -0
- /package/dist/{llmLazy-L4VAGXRS.js.map → llmLazy-XNMS7UPG.js.map} +0 -0
- /package/dist/{loader-J7FDM25W.js.map → loader-W35B3CAM.js.map} +0 -0
- /package/dist/{lsp-ZJDBSAGL.js.map → lsp-VUBIB4E2.js.map} +0 -0
- /package/dist/{lspAnchor-QUM3YKRZ.js.map → lspAnchor-4WXOLJUM.js.map} +0 -0
- /package/dist/{mcp-TYRRTRZO.js.map → mcp-5P3ONWR7.js.map} +0 -0
- /package/dist/{mentionProcessor-VBRYWNJ6.js.map → mentionProcessor-GCQ5NHV3.js.map} +0 -0
- /package/dist/{messages-TI35HRUJ.js.map → messages-YTLYB5DI.js.map} +0 -0
- /package/dist/{model-CYQGPU6S.js.map → model-HBR6OZOT.js.map} +0 -0
- /package/dist/{openai-YJXPABCZ.js.map → openai-MS35XWNU.js.map} +0 -0
- /package/dist/{outputStyles-54CH4AXQ.js.map → outputStyles-OWR2UZBL.js.map} +0 -0
- /package/dist/{pluginRuntime-HUH43L3E.js.map → pluginRuntime-SN4Y5PIT.js.map} +0 -0
- /package/dist/{pluginValidation-YZQAIFOB.js.map → pluginValidation-6DFK5G6T.js.map} +0 -0
- /package/dist/{prompts-MKDGNXMZ.js.map → prompts-ILVJ75E2.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-IDX6CZ7W.js.map → pybAgentSessionLoad-OLPYFTYS.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-G7CNXIM2.js.map → pybAgentSessionResume-VJ6G5ZUT.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-4DK6ZF6D.js.map → pybAgentStreamJsonSession-GGISSUF3.js.map} +0 -0
- /package/dist/{pybHooks-6NZEXF2Y.js.map → pybHooks-TFWZEUMM.js.map} +0 -0
- /package/dist/{query-3JMCOSE3.js.map → query-DEBIJVZX.js.map} +0 -0
- /package/dist/{registry-MYSH5C4A.js.map → registry-U3FUZUBO.js.map} +0 -0
- /package/dist/{ripgrep-UDJTJUDM.js.map → ripgrep-EMJZZFWK.js.map} +0 -0
- /package/dist/{skillMarketplace-QUB6SCI3.js.map → skillMarketplace-FXCBEE6R.js.map} +0 -0
- /package/dist/{state-H3ASL5UP.js.map → state-BMWIIFPG.js.map} +0 -0
- /package/dist/{theme-N2PDKHSA.js.map → theme-J6RWKV4W.js.map} +0 -0
- /package/dist/{toolPermissionSettings-H3A4FEPL.js.map → toolPermissionSettings-DSH46ML7.js.map} +0 -0
- /package/dist/{tools-JKFSGTP2.js.map → tools-LFQ5NCA7.js.map} +0 -0
- /package/dist/{userInput-2C2HUFUT.js.map → userInput-JGJXNAKY.js.map} +0 -0
|
@@ -3,18 +3,18 @@ const require = __pybCreateRequire(import.meta.url);
|
|
|
3
3
|
import {
|
|
4
4
|
formatValidationResult,
|
|
5
5
|
validatePluginOrMarketplacePath
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UQL55KPP.js";
|
|
7
7
|
import {
|
|
8
8
|
loadPybAgentSessionMessages
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7VDXI7AR.js";
|
|
10
10
|
import {
|
|
11
11
|
listPybAgentSessions
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-BKPUVKNL.js";
|
|
13
13
|
import {
|
|
14
14
|
appendSessionCustomTitleRecord,
|
|
15
15
|
appendSessionJsonlFromMessage,
|
|
16
16
|
appendSessionTagRecord
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RIHUVOTZ.js";
|
|
18
18
|
import {
|
|
19
19
|
drainHookSystemPromptAdditions,
|
|
20
20
|
getHookTranscriptPath,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
runStopHooks,
|
|
27
27
|
runUserPromptSubmitHooks,
|
|
28
28
|
updateHookTranscriptForMessages
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-OM6GCBT3.js";
|
|
30
30
|
import {
|
|
31
31
|
DEFAULT_OUTPUT_STYLE,
|
|
32
32
|
getAvailableOutputStyles,
|
|
@@ -35,16 +35,16 @@ import {
|
|
|
35
35
|
getOutputStyleSystemPromptAdditions,
|
|
36
36
|
resolveOutputStyleName,
|
|
37
37
|
setCurrentOutputStyle
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-CH6GH2PY.js";
|
|
39
39
|
import {
|
|
40
40
|
fetchCustomModels,
|
|
41
41
|
getModelFeatures
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-G75MDYMO.js";
|
|
43
43
|
import {
|
|
44
44
|
queryLLM,
|
|
45
45
|
queryQuick,
|
|
46
46
|
verifyApiKey
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-2CQ6B2EF.js";
|
|
48
48
|
import {
|
|
49
49
|
DEFAULT_TIMEOUT_MS,
|
|
50
50
|
FallbackToolUseRejectedMessage,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
listMCPServers,
|
|
59
59
|
loadMergedSettings,
|
|
60
60
|
normalizeSandboxRuntimeConfigFromSettings
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-RYCR3HAC.js";
|
|
62
62
|
import {
|
|
63
63
|
addMarketplace,
|
|
64
64
|
disableSkillPlugin,
|
|
@@ -71,11 +71,11 @@ import {
|
|
|
71
71
|
refreshMarketplaceAsync,
|
|
72
72
|
removeMarketplace,
|
|
73
73
|
uninstallSkillPlugin
|
|
74
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-EYQDSK5K.js";
|
|
75
75
|
import {
|
|
76
76
|
loadToolPermissionContextFromDisk,
|
|
77
77
|
persistToolPermissionUpdateToDisk
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-NH77UCWT.js";
|
|
79
79
|
import {
|
|
80
80
|
applyToolPermissionContextUpdate,
|
|
81
81
|
createDefaultToolPermissionContext
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
resetReminderSession,
|
|
89
89
|
setTodos,
|
|
90
90
|
systemReminderService
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-3ZXF2UHD.js";
|
|
92
92
|
import {
|
|
93
93
|
getSessionState
|
|
94
94
|
} from "./chunk-ERMQRV55.js";
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
getActiveAgents,
|
|
98
98
|
getAgentByType,
|
|
99
99
|
getAllAgents
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-R4AG75VT.js";
|
|
101
101
|
import {
|
|
102
102
|
API_ERROR_MESSAGE_PREFIX,
|
|
103
103
|
CANCEL_MESSAGE,
|
|
@@ -127,7 +127,7 @@ import {
|
|
|
127
127
|
processUserInput,
|
|
128
128
|
reorderMessages,
|
|
129
129
|
stripSystemMessages
|
|
130
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-DNDIMOXI.js";
|
|
131
131
|
import {
|
|
132
132
|
getRequestStatus,
|
|
133
133
|
setRequestStatus,
|
|
@@ -150,10 +150,10 @@ import {
|
|
|
150
150
|
normalizeFilePath,
|
|
151
151
|
readTextContent,
|
|
152
152
|
writeTextContent
|
|
153
|
-
} from "./chunk-
|
|
153
|
+
} from "./chunk-ZC2N4I37.js";
|
|
154
154
|
import {
|
|
155
155
|
ripGrep
|
|
156
|
-
} from "./chunk-
|
|
156
|
+
} from "./chunk-QSZWYMPZ.js";
|
|
157
157
|
import {
|
|
158
158
|
parseBlockEdits
|
|
159
159
|
} from "./chunk-QWIBSCDN.js";
|
|
@@ -163,17 +163,17 @@ import {
|
|
|
163
163
|
ParserRegistry,
|
|
164
164
|
initParser,
|
|
165
165
|
loadLanguage
|
|
166
|
-
} from "./chunk-
|
|
166
|
+
} from "./chunk-ZPCPWVPN.js";
|
|
167
167
|
import {
|
|
168
168
|
getSettingsFileCandidates,
|
|
169
169
|
loadSettingsWithLegacyFallback
|
|
170
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-XF3KOCXY.js";
|
|
171
171
|
import {
|
|
172
172
|
getCustomCommandDirectories,
|
|
173
173
|
hasCustomCommands,
|
|
174
174
|
loadCustomCommands,
|
|
175
175
|
reloadCustomCommands
|
|
176
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-TC56HMSX.js";
|
|
177
177
|
import {
|
|
178
178
|
getSessionPlugins
|
|
179
179
|
} from "./chunk-BJSWTHRM.js";
|
|
@@ -181,7 +181,7 @@ import {
|
|
|
181
181
|
ModelManager,
|
|
182
182
|
getModelManager,
|
|
183
183
|
isDefaultSlowAndCapableModel
|
|
184
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-UBJFL3ZW.js";
|
|
185
185
|
import {
|
|
186
186
|
clearContextCache,
|
|
187
187
|
getCodeStyle,
|
|
@@ -189,10 +189,10 @@ import {
|
|
|
189
189
|
getGitState,
|
|
190
190
|
getIsGit,
|
|
191
191
|
getProjectDocs
|
|
192
|
-
} from "./chunk-
|
|
192
|
+
} from "./chunk-KOFUHO7S.js";
|
|
193
193
|
import {
|
|
194
194
|
getTheme
|
|
195
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-V77NDZPE.js";
|
|
196
196
|
import {
|
|
197
197
|
DEFAULT_GLOBAL_CONFIG,
|
|
198
198
|
enableConfigs,
|
|
@@ -205,7 +205,7 @@ import {
|
|
|
205
205
|
saveGlobalConfig,
|
|
206
206
|
setAllPointersToModel,
|
|
207
207
|
setModelPointer
|
|
208
|
-
} from "./chunk-
|
|
208
|
+
} from "./chunk-GQTOTLSY.js";
|
|
209
209
|
import {
|
|
210
210
|
AbortError
|
|
211
211
|
} from "./chunk-RQVLBMP7.js";
|
|
@@ -214,7 +214,7 @@ import {
|
|
|
214
214
|
getCurrentRequest,
|
|
215
215
|
logUserFriendly,
|
|
216
216
|
markPhase
|
|
217
|
-
} from "./chunk-
|
|
217
|
+
} from "./chunk-RQBIHTZO.js";
|
|
218
218
|
import {
|
|
219
219
|
ASCII_LOGO,
|
|
220
220
|
BunShell,
|
|
@@ -253,10 +253,10 @@ import {
|
|
|
253
253
|
setCwd,
|
|
254
254
|
shouldApplyToolOutputTruncation,
|
|
255
255
|
truncateToolOutput
|
|
256
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-VQ6RVQVH.js";
|
|
257
257
|
import {
|
|
258
258
|
MACRO
|
|
259
|
-
} from "./chunk-
|
|
259
|
+
} from "./chunk-O6BHLPRE.js";
|
|
260
260
|
import {
|
|
261
261
|
formatTotalCost,
|
|
262
262
|
getTotalAPIDuration,
|
|
@@ -444,7 +444,7 @@ var getCommandSubcommandPrefix = memoize(
|
|
|
444
444
|
var getCommandPrefix = memoize(
|
|
445
445
|
async (command4, abortSignal) => {
|
|
446
446
|
const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
|
|
447
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-
|
|
447
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-NC2ZA7BQ.js");
|
|
448
448
|
const response = await queryQuick2({
|
|
449
449
|
systemPrompt,
|
|
450
450
|
userPrompt,
|
|
@@ -4246,7 +4246,7 @@ function formatParseError(error) {
|
|
|
4246
4246
|
return error instanceof Error ? error.message : String(error);
|
|
4247
4247
|
}
|
|
4248
4248
|
async function defaultGateQuery(args) {
|
|
4249
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-
|
|
4249
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-NC2ZA7BQ.js");
|
|
4250
4250
|
const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
|
|
4251
4251
|
const messages = [
|
|
4252
4252
|
{
|
|
@@ -6355,7 +6355,7 @@ Usage:
|
|
|
6355
6355
|
\`\`\`
|
|
6356
6356
|
3. **Multiple Edits**: You can provide multiple blocks in a single turn to perform batch edits.
|
|
6357
6357
|
4. **Context**: Include enough surrounding lines in the SEARCH block to ensure uniqueness.
|
|
6358
|
-
5. **Indentation**: Preserve the exact indentation (tabs/spaces) of the original file in your SEARCH block.
|
|
6358
|
+
5. **Indentation**: Preserve the exact indentation (tabs/spaces) of the original file in your SEARCH block. When copying lines from Read output, only copy the text after the line-number prefix. The prefix format is: spaces + line number + tab.
|
|
6359
6359
|
6. **Smart Matching**: The tool uses a fuzzy matching engine and LSP anchoring. It can locate code even if there are minor differences in whitespace or indentation.
|
|
6360
6360
|
7. **Verification (Recommended)**: Set \`verify: true\` to enable atomic verification. The tool will check for syntax errors after editing and automatically ROLLBACK if errors are detected. Use this for complex edits or when ensuring stability.
|
|
6361
6361
|
8. **Thinking**: You can include "thinking" text between blocks; the tool will ignore it.
|
|
@@ -6560,7 +6560,7 @@ var FileEditTool = {
|
|
|
6560
6560
|
const originalFileContent = currentFileContent;
|
|
6561
6561
|
let totalPatch = [];
|
|
6562
6562
|
const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
|
|
6563
|
-
const { findLspAnchor } = await import("./lspAnchor-
|
|
6563
|
+
const { findLspAnchor } = await import("./lspAnchor-4WXOLJUM.js");
|
|
6564
6564
|
for (const op of editOperations) {
|
|
6565
6565
|
const normalizedSearch = normalizeLineEndings(op.search);
|
|
6566
6566
|
const normalizedReplace = normalizeLineEndings(op.replace);
|
|
@@ -7830,15 +7830,14 @@ var TOOL_NAME_FOR_PROMPT2 = "Glob";
|
|
|
7830
7830
|
var DESCRIPTION4 = `- Fast file pattern matching tool that works with any codebase size
|
|
7831
7831
|
- Supports glob patterns like "**/*.js" or "src/**/*.ts"
|
|
7832
7832
|
- Returns matching file paths sorted by modification time
|
|
7833
|
-
- Use this tool when you need to
|
|
7834
|
-
- **Semantic Search**: \`semantic\` defaults to true to search for code symbols (classes, functions, variables) when name matching finds nothing. This is powered by LSP and can find files based on their *content* definitions even if the filename is different.
|
|
7833
|
+
- Use this tool when you need to confirm file or directory existence by name patterns after building the index tree with LS
|
|
7835
7834
|
- Layered enumeration enables multi-level directory/file discovery: use \`*/\` for directories, then for each directory run \`dir/*\` and \`dir/*/\` to expand level by level
|
|
7836
7835
|
- Layered glob example: run \`*/\` to get top-level directories, then run \`src/*\` and \`src/*/\` to get second-level files and folders
|
|
7837
7836
|
- You can combine Batch to run multiple Globs in parallel for faster locating, but Glob only matches paths/filenames; use Grep or LSP for content keyword searches
|
|
7838
7837
|
- Parallel examples: \`*\` + \`*/\` + \`**/package.json\` + \`**/pyproject.toml\` + \`**/README*\`
|
|
7839
7838
|
- Partition scan: run \`src/*\`, \`docs/*\`, \`tests/*\` in parallel to build a first-level structure snapshot
|
|
7840
7839
|
- Multi-repo filtering: run \`*/.git\` and \`*/package.json\` in parallel to locate candidate repos
|
|
7841
|
-
- Combination strategy: use
|
|
7840
|
+
- Combination strategy: use LS to build the index tree, Glob to confirm existence, then Grep/LSP for content
|
|
7842
7841
|
- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead
|
|
7843
7842
|
- You can call multiple tools in a single response. It is always better to speculatively perform multiple searches in parallel if they are potentially useful.
|
|
7844
7843
|
`;
|
|
@@ -7991,7 +7990,7 @@ var TOOL_NAME_FOR_PROMPT3 = "Grep";
|
|
|
7991
7990
|
var DESCRIPTION5 = `A powerful search tool built on ripgrep
|
|
7992
7991
|
|
|
7993
7992
|
Usage:
|
|
7994
|
-
-
|
|
7993
|
+
- Use Grep for content search after an index tree is built with LS and paths are confirmed with Glob. NEVER invoke \`grep\` or \`rg\` as a Bash command. The Grep tool has been optimized for correct permissions and access.
|
|
7995
7994
|
- Supports full regex syntax (e.g., "log.*Error", "function\\s+\\w+")
|
|
7996
7995
|
- Filter files with glob parameter (e.g., "*.js", "**/*.tsx") or type parameter (e.g., "js", "py", "rust")
|
|
7997
7996
|
- Output modes: "content" shows matching lines, "files_with_matches" shows only file paths (default), "count" shows match counts
|
|
@@ -8002,7 +8001,7 @@ var DESCRIPTION5 = `A powerful search tool built on ripgrep
|
|
|
8002
8001
|
- Batch parallel Grep: run multiple independent keywords in parallel when they target different scopes, file types, or regexes.
|
|
8003
8002
|
- Multi-keyword single pass: for the same scope, use OR regex (e.g., \`foo|bar|baz\`) to reduce IO.
|
|
8004
8003
|
- Tradeoff: parallel Grep speeds discovery but increases IO pressure on large repos.
|
|
8005
|
-
- Practical flow:
|
|
8004
|
+
- Practical flow: map with LS, confirm with Glob, then Grep in parallel or OR regex within the scoped paths.
|
|
8006
8005
|
- Common usage examples:
|
|
8007
8006
|
- Keyword: \`TODO\` in TS files with context: \`pattern="TODO"\`, \`glob="**/*.ts"\`, \`output_mode="content"\`, \`-C=2\`
|
|
8008
8007
|
- Regex: find function declarations: \`pattern="function\\s+\\w+"\`, \`glob="**/*.js"\`
|
|
@@ -11099,7 +11098,7 @@ async function createAndStoreApiKey(accessToken) {
|
|
|
11099
11098
|
}
|
|
11100
11099
|
saveGlobalConfig(config2);
|
|
11101
11100
|
try {
|
|
11102
|
-
const { resetAnthropicClient } = await import("./llm-
|
|
11101
|
+
const { resetAnthropicClient } = await import("./llm-NC2ZA7BQ.js");
|
|
11103
11102
|
resetAnthropicClient();
|
|
11104
11103
|
} catch {
|
|
11105
11104
|
}
|
|
@@ -15381,7 +15380,7 @@ async function refreshPluginRuntimeFromInstalls() {
|
|
|
15381
15380
|
const existingRoots = getSessionPlugins().map((p) => p.rootDir);
|
|
15382
15381
|
const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
|
|
15383
15382
|
if (dirs.length === 0) return [];
|
|
15384
|
-
const { configureSessionPlugins } = await import("./pluginRuntime-
|
|
15383
|
+
const { configureSessionPlugins } = await import("./pluginRuntime-SN4Y5PIT.js");
|
|
15385
15384
|
const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
|
|
15386
15385
|
return errors;
|
|
15387
15386
|
}
|
|
@@ -16050,7 +16049,7 @@ async function call(onDone, context) {
|
|
|
16050
16049
|
ModelConfig,
|
|
16051
16050
|
{
|
|
16052
16051
|
onClose: () => {
|
|
16053
|
-
import("./model-
|
|
16052
|
+
import("./model-HBR6OZOT.js").then(({ reloadModelManager: reloadModelManager2 }) => {
|
|
16054
16053
|
reloadModelManager2();
|
|
16055
16054
|
triggerModelConfigChange();
|
|
16056
16055
|
onDone();
|
|
@@ -23494,7 +23493,7 @@ function useStatusLine() {
|
|
|
23494
23493
|
// src/ui/components/PromptInput.tsx
|
|
23495
23494
|
async function interpretHashCommand(input) {
|
|
23496
23495
|
try {
|
|
23497
|
-
const { queryQuick: queryQuick2 } = await import("./llm-
|
|
23496
|
+
const { queryQuick: queryQuick2 } = await import("./llm-NC2ZA7BQ.js");
|
|
23498
23497
|
const systemPrompt = [
|
|
23499
23498
|
"You're helping the user structure notes that will be added to their PYB.md file.",
|
|
23500
23499
|
"Format the user's input into a well-structured note that will be useful for later reference.",
|
|
@@ -23807,7 +23806,7 @@ function PromptInput({
|
|
|
23807
23806
|
if (messages2.length) {
|
|
23808
23807
|
if (mode === "bash") {
|
|
23809
23808
|
onQuery(messages2, newAbortController).then(async () => {
|
|
23810
|
-
const { getCwd: getCwd2 } = await import("./state-
|
|
23809
|
+
const { getCwd: getCwd2 } = await import("./state-BMWIIFPG.js");
|
|
23811
23810
|
setCurrentPwd(getCwd2());
|
|
23812
23811
|
});
|
|
23813
23812
|
} else {
|
|
@@ -24707,6 +24706,33 @@ function createAutoBatchToolUse(toolUses, batchIndex) {
|
|
|
24707
24706
|
}
|
|
24708
24707
|
};
|
|
24709
24708
|
}
|
|
24709
|
+
function isAutoBatchToolUse(toolUse) {
|
|
24710
|
+
const resolvedName = resolveToolNameAlias(toolUse.name).resolvedName;
|
|
24711
|
+
return isBatchToolName(resolvedName) && typeof toolUse.id === "string" && toolUse.id.startsWith("batch_auto_");
|
|
24712
|
+
}
|
|
24713
|
+
function getAutoBatchAggregationSummary(toolUseMessages, tools, output, enabled) {
|
|
24714
|
+
const inputCount = toolUseMessages.length;
|
|
24715
|
+
const eligibleCount = toolUseMessages.reduce(
|
|
24716
|
+
(count, toolUse) => count + (canAutoBatchToolUse(toolUse, tools) ? 1 : 0),
|
|
24717
|
+
0
|
|
24718
|
+
);
|
|
24719
|
+
const ineligibleCount = inputCount - eligibleCount;
|
|
24720
|
+
const autoBatchToolUses = output.filter(isAutoBatchToolUse);
|
|
24721
|
+
const autoBatchedToolCount = autoBatchToolUses.reduce((sum, toolUse) => {
|
|
24722
|
+
const input = toolUse.input;
|
|
24723
|
+
const toolCalls = Array.isArray(input?.tool_calls) ? input.tool_calls : [];
|
|
24724
|
+
return sum + toolCalls.length;
|
|
24725
|
+
}, 0);
|
|
24726
|
+
return {
|
|
24727
|
+
enabled,
|
|
24728
|
+
inputCount,
|
|
24729
|
+
eligibleCount,
|
|
24730
|
+
ineligibleCount,
|
|
24731
|
+
outputCount: output.length,
|
|
24732
|
+
autoBatchCount: autoBatchToolUses.length,
|
|
24733
|
+
autoBatchedToolCount
|
|
24734
|
+
};
|
|
24735
|
+
}
|
|
24710
24736
|
function canAutoBatchToolUse(toolUse, tools) {
|
|
24711
24737
|
const resolvedName = resolveToolNameAlias(toolUse.name).resolvedName;
|
|
24712
24738
|
if (isBatchToolName(resolvedName) || isMcpToolName(resolvedName) || isMarketplaceToolName(resolvedName) || isSkillToolName(resolvedName)) {
|
|
@@ -24759,6 +24785,66 @@ function autoBatchToolUseBlocks(toolUseMessages, tools) {
|
|
|
24759
24785
|
return output;
|
|
24760
24786
|
}
|
|
24761
24787
|
var __autoBatchToolUseBlocksForTests = autoBatchToolUseBlocks;
|
|
24788
|
+
function shouldAutoBatchAggregation() {
|
|
24789
|
+
const config2 = getCurrentProjectConfig();
|
|
24790
|
+
const enabled = config2.experimental?.auto_batch_aggregation;
|
|
24791
|
+
return enabled !== false;
|
|
24792
|
+
}
|
|
24793
|
+
function applyAutoBatchAggregation(toolUseMessages, tools, options) {
|
|
24794
|
+
const enabled = shouldAutoBatchAggregation();
|
|
24795
|
+
const requestId = getCurrentRequest()?.id;
|
|
24796
|
+
if (!enabled) {
|
|
24797
|
+
const summary = getAutoBatchAggregationSummary(
|
|
24798
|
+
toolUseMessages,
|
|
24799
|
+
tools,
|
|
24800
|
+
toolUseMessages,
|
|
24801
|
+
false
|
|
24802
|
+
);
|
|
24803
|
+
debug.flow(
|
|
24804
|
+
"AUTO_BATCH_AGGREGATION",
|
|
24805
|
+
{
|
|
24806
|
+
...summary,
|
|
24807
|
+
reason: "disabled"
|
|
24808
|
+
},
|
|
24809
|
+
requestId
|
|
24810
|
+
);
|
|
24811
|
+
return toolUseMessages;
|
|
24812
|
+
}
|
|
24813
|
+
try {
|
|
24814
|
+
if (options?.forceThrow) {
|
|
24815
|
+
throw new Error("forced auto batch failure");
|
|
24816
|
+
}
|
|
24817
|
+
const aggregated = autoBatchToolUseBlocks(toolUseMessages, tools);
|
|
24818
|
+
const summary = getAutoBatchAggregationSummary(
|
|
24819
|
+
toolUseMessages,
|
|
24820
|
+
tools,
|
|
24821
|
+
aggregated,
|
|
24822
|
+
true
|
|
24823
|
+
);
|
|
24824
|
+
debug.flow("AUTO_BATCH_AGGREGATION", summary, requestId);
|
|
24825
|
+
return aggregated;
|
|
24826
|
+
} catch (error) {
|
|
24827
|
+
const summary = getAutoBatchAggregationSummary(
|
|
24828
|
+
toolUseMessages,
|
|
24829
|
+
tools,
|
|
24830
|
+
toolUseMessages,
|
|
24831
|
+
true
|
|
24832
|
+
);
|
|
24833
|
+
debug.flow(
|
|
24834
|
+
"AUTO_BATCH_AGGREGATION_FALLBACK",
|
|
24835
|
+
{
|
|
24836
|
+
...summary,
|
|
24837
|
+
error: error instanceof Error ? error.message : String(error)
|
|
24838
|
+
},
|
|
24839
|
+
requestId
|
|
24840
|
+
);
|
|
24841
|
+
if (!options?.forceThrow) {
|
|
24842
|
+
logError(error);
|
|
24843
|
+
}
|
|
24844
|
+
return toolUseMessages;
|
|
24845
|
+
}
|
|
24846
|
+
}
|
|
24847
|
+
var __applyAutoBatchAggregationForTests = applyAutoBatchAggregation;
|
|
24762
24848
|
function rewriteToolUseBlocksInAssistantMessage(assistantMessage, toolUseMessages) {
|
|
24763
24849
|
if (!Array.isArray(assistantMessage.message.content)) return assistantMessage;
|
|
24764
24850
|
let nextToolUseIndex = 0;
|
|
@@ -25185,7 +25271,7 @@ async function* queryCore(messages, systemPrompt, context, canUseTool, toolUseCo
|
|
|
25185
25271
|
const assistantMessage = result.message;
|
|
25186
25272
|
const shouldSkipPermissionCheck = result.shouldSkipPermissionCheck;
|
|
25187
25273
|
const rawToolUseMessages = assistantMessage.message.content.filter(isToolUseLikeBlock);
|
|
25188
|
-
const toolUseMessages =
|
|
25274
|
+
const toolUseMessages = applyAutoBatchAggregation(
|
|
25189
25275
|
rawToolUseMessages,
|
|
25190
25276
|
toolUseContext.options?.tools ?? []
|
|
25191
25277
|
);
|
|
@@ -26714,7 +26800,7 @@ import { homedir as homedir7 } from "os";
|
|
|
26714
26800
|
// src/commands/agents/generation.ts
|
|
26715
26801
|
import { randomUUID as randomUUID5 } from "crypto";
|
|
26716
26802
|
async function generateAgentWithClaude(prompt) {
|
|
26717
|
-
const { queryModel } = await import("./llm-
|
|
26803
|
+
const { queryModel } = await import("./llm-NC2ZA7BQ.js");
|
|
26718
26804
|
const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
|
|
26719
26805
|
|
|
26720
26806
|
Return your response as a JSON object with exactly these fields:
|
|
@@ -30719,26 +30805,12 @@ It is critical that you mark todos as completed as soon as you are done with a t
|
|
|
30719
30805
|
6. **Semantic Search**: When searching for code concepts (e.g. "AuthLogic", "UserHandler") rather than exact filenames, prefer using \`Glob\` with \`semantic: true\`. This leverages LSP to find files by their content definitions.
|
|
30720
30806
|
7. **Reference Guard**: Be aware that deleting files might be blocked if they are referenced elsewhere. If the \`Delete\` blocks you, check the references it reports. Only use \`force: true\` if you are refactoring and intentionally removing those references.
|
|
30721
30807
|
|
|
30722
|
-
#
|
|
30723
|
-
-
|
|
30724
|
-
- \
|
|
30725
|
-
-
|
|
30726
|
-
-
|
|
30727
|
-
-
|
|
30728
|
-
|
|
30729
|
-
# BatchTool \u4F7F\u7528\u7B56\u7565
|
|
30730
|
-
- \u4F55\u65F6\u4F7F\u7528\uFF1A\u591A\u4E2A\u4E92\u4E0D\u4F9D\u8D56\u3001\u53EA\u8BFB\u4E14\u5E76\u53D1\u5B89\u5168\u7684\u5DE5\u5177\u8C03\u7528\uFF0C\u5E0C\u671B\u5E76\u884C\u52A0\u901F\u5E76\u6C47\u603B\u7ED3\u679C
|
|
30731
|
-
- \u4F55\u65F6\u4E0D\u4F7F\u7528\uFF1A\u5B58\u5728\u4F9D\u8D56\u6216\u5171\u4EAB\u72B6\u6001\u3001\u9700\u8981\u987A\u5E8F\u3001\u6216\u5DE5\u5177\u975E\u53EA\u8BFB/\u975E\u5E76\u53D1\u5B89\u5168
|
|
30732
|
-
- \u62C6\u5206\u89C4\u5219\uFF1A\u6709\u4F9D\u8D56\u7684\u8C03\u7528\u62C6\u6210\u987A\u5E8F batch\uFF08\u524D\u4E00\u6279\u5B8C\u6210\u540E\u518D\u53D1\u4E0B\u4E00\u6279\uFF09
|
|
30733
|
-
- \u8303\u56F4\u9650\u5236\uFF1A\u4EC5\u9650\u53EA\u8BFB\u5E76\u53D1\u5B89\u5168\u5DE5\u5177\uFF1BMCP/\u5E02\u573A\u5DE5\u5177\u4E0D\u53EF\u8FDB\u5165 batch
|
|
30734
|
-
- \u5E76\u53D1\u9650\u5236\uFF1A\u7981\u6B62 batch \u5D4C\u5957\uFF0C\u53EF\u591A\u6279\u6B21\u8C03\u7528\u5E76\u53D1\uFF0C\u5355\u6279\u6B21\u5E76\u53D1\u6570\u4E0A\u9650\u6700\u591A 10 \u4E2A\uFF0C\u4E0D\u662F\u5168\u5C40\u5E76\u53D1\u4E0A\u9650\uFF1B
|
|
30735
|
-
- \u4EE3\u7801\u4F4D\u7F6E\uFF1Asrc/app/query.ts\u3001src/tools/system/BatchTool/BatchTool.tsx\u3001src/utils/tooling/toolExecutionController.ts
|
|
30736
|
-
- \u4F18\u5148\u7EA7\uFF1A\u5B58\u5728\u591A\u4E2A\u53EF batch \u7684\u8C03\u7528\u65F6\uFF0C\u4F18\u5148\u4F7F\u7528 BatchTool \u5355\u6B21\u6267\u884C\u800C\u4E0D\u662F\u591A\u6761\u5E76\u884C tool \u8C03\u7528
|
|
30737
|
-
- \u53EA\u8BFB\u5E76\u53D1\u4F18\u5148\u4F7F\u7528 BatchTool\uFF0C\u4E0D\u8981\u8F93\u51FA\u591A\u4E2A\u72EC\u7ACB\u7684 Read/Grep
|
|
30738
|
-
|
|
30739
|
-
# \u8DEF\u5F84\u5206\u7247\u7B56\u7565
|
|
30740
|
-
- \u6839\u2192\u6838\u5FC3\u76EE\u5F55\u2192\u4E8C\u7EA7\u6A21\u5757
|
|
30741
|
-
- \u7ED3\u6784\u626B\u63CF\u6309\u4E0A\u8FF0\u987A\u5E8F\u5206\u7247\u6267\u884C
|
|
30808
|
+
# Index Tree First Strategy
|
|
30809
|
+
- Every analysis must be grounded in a verifiable index tree; avoid blind matching
|
|
30810
|
+
- Build the tree in layers: Root \u2192 Core Directories \u2192 Secondary Modules
|
|
30811
|
+
- Use LS to map layers, then confirm with Glob before Grep/Read
|
|
30812
|
+
- Treat truncated trees as hints only, not for precise paths
|
|
30813
|
+
- Use the tree to narrow scope, then locate exact files and symbols
|
|
30742
30814
|
|
|
30743
30815
|
# LSP \u540E\u7F6E\u4E0E\u8303\u56F4\u9650\u5236
|
|
30744
30816
|
- \u4F18\u5148\u987A\u5E8F\uFF1A\u7ED3\u6784\u6811 -> \u70ED\u70B9\u5B9A\u4F4D -> Read -> LSP
|
|
@@ -30862,6 +30934,7 @@ NEVER commit changes unless the user explicitly asks you to. It is VERY IMPORTAN
|
|
|
30862
30934
|
- Example: \`Glob(pattern: "tests", semantic: true)\` will find test files based on project structure.
|
|
30863
30935
|
2. **Exact Identifier**: WHEN you know the precise class/function name (e.g., "UserProfile", "initDatabase"), use standard Grep/Glob without \`semantic\` flag.
|
|
30864
30936
|
3. **Exploration**: If standard search returns 0 results, AUTOMATICALLY retry with \`semantic: true\`.
|
|
30937
|
+
4. **Path Discovery**: If the path is unclear, start from top-level tree, then \`Glob */\`, then \`Glob dir/*\` and \`Glob dir/*/\` to confirm paths before Grep/Read.
|
|
30865
30938
|
|
|
30866
30939
|
# File Modification Strategy (The Universal Edit Tool)
|
|
30867
30940
|
When you need to modify files, rely on the **Edit Tool** for almost all tasks.
|
|
@@ -30958,6 +31031,7 @@ export {
|
|
|
30958
31031
|
countTokens,
|
|
30959
31032
|
__isToolUseLikeBlockForTests,
|
|
30960
31033
|
__autoBatchToolUseBlocksForTests,
|
|
31034
|
+
__applyAutoBatchAggregationForTests,
|
|
30961
31035
|
__rewriteToolUseBlocksForTests,
|
|
30962
31036
|
__ToolUseQueueForTests,
|
|
30963
31037
|
query,
|