pybao-cli 1.5.47 → 1.5.50
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-5XUDCAF4.js +53 -0
- package/dist/{acp-KELESOXO.js → acp-VXAHCMQ4.js} +30 -30
- package/dist/{agentsValidate-J7PHU22S.js → agentsValidate-PFVCK6ZC.js} +7 -7
- package/dist/{ask-ZICPHRGR.js → ask-7RQ2G5S3.js} +30 -30
- package/dist/{autoUpdater-6KGZQTW5.js → autoUpdater-TDN3ABMG.js} +3 -3
- package/dist/{chunk-OTMVCWZ2.js → chunk-3IPEAISZ.js} +3 -3
- package/dist/{chunk-5OJHTSFR.js → chunk-5ITEAEJC.js} +2 -1
- package/dist/chunk-5ITEAEJC.js.map +7 -0
- package/dist/{chunk-Q4WANADY.js → chunk-5P4A6TN2.js} +2 -2
- package/dist/{chunk-XIAHHC4E.js → chunk-7MR3XX5X.js} +2 -2
- package/dist/{chunk-MWL7Q5HG.js → chunk-A45A3UUU.js} +1 -1
- package/dist/{chunk-57BVHCH3.js → chunk-BQCQ3DEN.js} +2 -2
- package/dist/{chunk-5OBGGU2O.js → chunk-C7BUAPKP.js} +3 -3
- package/dist/{chunk-GHNPBDR6.js → chunk-CHH6TEXB.js} +1 -1
- package/dist/{chunk-7WPBMV6W.js → chunk-CNBKKQSV.js} +1 -1
- package/dist/{chunk-2AU4PKSQ.js → chunk-CNW45NOZ.js} +3 -3
- package/dist/{chunk-6JVCLWCU.js → chunk-DBMDQEQO.js} +3 -3
- package/dist/{chunk-N2W52I56.js → chunk-EY3ZOE75.js} +1 -1
- package/dist/{chunk-SD3VNTAR.js → chunk-FNDIHEBT.js} +616 -28
- package/dist/chunk-FNDIHEBT.js.map +7 -0
- package/dist/{chunk-T6S6TXIY.js → chunk-IXFDCJ25.js} +3 -3
- package/dist/{chunk-V6W537PO.js → chunk-J6HKEIL2.js} +1 -1
- package/dist/{chunk-IAIXAB4N.js → chunk-K3QEELFX.js} +3 -3
- package/dist/{chunk-J3TM7T3W.js → chunk-KKNO6B2K.js} +199 -712
- package/dist/chunk-KKNO6B2K.js.map +7 -0
- package/dist/{chunk-ITD4GQ6O.js → chunk-L4CGYTJQ.js} +1 -1
- package/dist/{chunk-OPEQBEHZ.js → chunk-LE5VGGP6.js} +4 -4
- package/dist/{chunk-US6EALFL.js → chunk-NBDDIZNJ.js} +2 -2
- package/dist/{chunk-VDLMXEHU.js → chunk-NQGIALRP.js} +4 -4
- package/dist/{chunk-RRLBQ3XD.js → chunk-NRORTICH.js} +2 -2
- package/dist/{chunk-TLMCXAET.js → chunk-NSFU6Y4R.js} +1 -1
- package/dist/{chunk-UUTMXSER.js → chunk-PXRUNRK7.js} +1 -1
- package/dist/{chunk-CN443EB5.js → chunk-UJRT7VK2.js} +1 -1
- package/dist/{chunk-K3AQYDRJ.js → chunk-VAZ4VRTA.js} +3 -3
- package/dist/{chunk-4VVWAA6O.js → chunk-XHAEEYYH.js} +1 -1
- package/dist/{chunk-Q2FTNJHH.js → chunk-Y7I4XTJJ.js} +3 -3
- package/dist/{chunk-A5O2MBVW.js → chunk-YFVKGHW2.js} +2 -2
- package/dist/{chunk-ZLNJ6XFU.js → chunk-ZDDVFBS4.js} +4 -4
- package/dist/{chunk-7UF7PBUR.js → chunk-ZKW5V7MR.js} +1 -1
- package/dist/{cli-P7N4INGY.js → cli-PMOATR2H.js} +90 -90
- package/dist/commands-HA2TW7NU.js +57 -0
- package/dist/{config-XVX25KIN.js → config-PQYZDDGW.js} +4 -4
- package/dist/{context-OBZ5CNGA.js → context-BWXP2WB4.js} +6 -6
- package/dist/{conversationPersistence-CB3RZIY7.js → conversationPersistence-CS2SQ6Z6.js} +3 -3
- package/dist/{conversationTracker-HDEFZTDC.js → conversationTracker-3OLKEYWM.js} +4 -4
- package/dist/{customCommands-ELEQAM5Y.js → customCommands-VPTXXYYR.js} +4 -4
- package/dist/{env-FMH4AH2H.js → env-G5ZYCG5S.js} +2 -2
- package/dist/{file-6TB2IASX.js → file-2I2KXCVN.js} +4 -4
- package/dist/index.js +3 -3
- package/dist/{llm-QPAHJ643.js → llm-KXF74SNS.js} +31 -31
- package/dist/{llmLazy-RYJWZZ7Y.js → llmLazy-L3IJUBN2.js} +1 -1
- package/dist/{loader-EPUS22XU.js → loader-CJOJNOV7.js} +4 -4
- package/dist/{lsp-WIEWEHYU.js → lsp-OKPL75YW.js} +6 -6
- package/dist/{lspAnchor-YI3SOGER.js → lspAnchor-7Z5YNXX3.js} +6 -6
- package/dist/{mcp-Q6UOFMLT.js → mcp-C65V4JYM.js} +7 -7
- package/dist/{mentionProcessor-3IV63BZT.js → mentionProcessor-EDZBHP7Y.js} +5 -5
- package/dist/{messages-XU4LSUWY.js → messages-YBAYUMKL.js} +1 -1
- package/dist/{model-JFUZ777G.js → model-7WMFC6F7.js} +5 -5
- package/dist/{openai-PQN2VFKQ.js → openai-YWEX6G4I.js} +5 -5
- package/dist/{outputStyles-PJNN6AH4.js → outputStyles-N6S27KGD.js} +4 -4
- package/dist/{pluginRuntime-TLFHDTDH.js → pluginRuntime-3XWIAPQ7.js} +6 -6
- package/dist/{pluginValidation-TZUKRIFW.js → pluginValidation-2JLTTMJL.js} +6 -6
- package/dist/prompts-HCGQPTDJ.js +59 -0
- package/dist/{pybAgentSessionLoad-EFAWFGRE.js → pybAgentSessionLoad-XJ6XWCK5.js} +4 -4
- package/dist/{pybAgentSessionResume-YQSKGG3W.js → pybAgentSessionResume-SMNXFGFB.js} +4 -4
- package/dist/{pybAgentStreamJsonSession-BYHCDZXV.js → pybAgentStreamJsonSession-33YU7WNJ.js} +1 -1
- package/dist/{pybHooks-ZH3DUHNO.js → pybHooks-6JRPW3VW.js} +4 -4
- package/dist/query-GGJC3XT2.js +57 -0
- package/dist/{registry-A2AB7N66.js → registry-67P26WKJ.js} +5 -5
- package/dist/{ripgrep-CYA5VVPU.js → ripgrep-DPLWHL7O.js} +3 -3
- package/dist/{skillMarketplace-6CDVELA7.js → skillMarketplace-MGU4KRUF.js} +3 -3
- package/dist/{state-MDP57623.js → state-NZVNNCHH.js} +2 -2
- package/dist/{theme-MYY4MVK7.js → theme-XV4CTBG6.js} +5 -5
- package/dist/{toolPermissionSettings-ALND7SVQ.js → toolPermissionSettings-NEXN25B3.js} +6 -6
- package/dist/tools-R7EDLOFS.js +57 -0
- package/dist/{userInput-FBVWRPOG.js → userInput-PHXM4ITY.js} +32 -32
- package/package.json +2 -1
- package/dist/REPL-45IVQWUI.js +0 -53
- package/dist/chunk-5OJHTSFR.js.map +0 -7
- package/dist/chunk-J3TM7T3W.js.map +0 -7
- package/dist/chunk-SD3VNTAR.js.map +0 -7
- package/dist/commands-BTSWDZVO.js +0 -57
- package/dist/prompts-Y4JPHIGG.js +0 -59
- package/dist/query-SA5YQRDP.js +0 -57
- package/dist/tools-6M5WFR3S.js +0 -57
- /package/dist/{REPL-45IVQWUI.js.map → REPL-5XUDCAF4.js.map} +0 -0
- /package/dist/{acp-KELESOXO.js.map → acp-VXAHCMQ4.js.map} +0 -0
- /package/dist/{agentsValidate-J7PHU22S.js.map → agentsValidate-PFVCK6ZC.js.map} +0 -0
- /package/dist/{ask-ZICPHRGR.js.map → ask-7RQ2G5S3.js.map} +0 -0
- /package/dist/{autoUpdater-6KGZQTW5.js.map → autoUpdater-TDN3ABMG.js.map} +0 -0
- /package/dist/{chunk-OTMVCWZ2.js.map → chunk-3IPEAISZ.js.map} +0 -0
- /package/dist/{chunk-Q4WANADY.js.map → chunk-5P4A6TN2.js.map} +0 -0
- /package/dist/{chunk-XIAHHC4E.js.map → chunk-7MR3XX5X.js.map} +0 -0
- /package/dist/{chunk-MWL7Q5HG.js.map → chunk-A45A3UUU.js.map} +0 -0
- /package/dist/{chunk-57BVHCH3.js.map → chunk-BQCQ3DEN.js.map} +0 -0
- /package/dist/{chunk-5OBGGU2O.js.map → chunk-C7BUAPKP.js.map} +0 -0
- /package/dist/{chunk-GHNPBDR6.js.map → chunk-CHH6TEXB.js.map} +0 -0
- /package/dist/{chunk-7WPBMV6W.js.map → chunk-CNBKKQSV.js.map} +0 -0
- /package/dist/{chunk-2AU4PKSQ.js.map → chunk-CNW45NOZ.js.map} +0 -0
- /package/dist/{chunk-6JVCLWCU.js.map → chunk-DBMDQEQO.js.map} +0 -0
- /package/dist/{chunk-N2W52I56.js.map → chunk-EY3ZOE75.js.map} +0 -0
- /package/dist/{chunk-T6S6TXIY.js.map → chunk-IXFDCJ25.js.map} +0 -0
- /package/dist/{chunk-V6W537PO.js.map → chunk-J6HKEIL2.js.map} +0 -0
- /package/dist/{chunk-IAIXAB4N.js.map → chunk-K3QEELFX.js.map} +0 -0
- /package/dist/{chunk-ITD4GQ6O.js.map → chunk-L4CGYTJQ.js.map} +0 -0
- /package/dist/{chunk-OPEQBEHZ.js.map → chunk-LE5VGGP6.js.map} +0 -0
- /package/dist/{chunk-US6EALFL.js.map → chunk-NBDDIZNJ.js.map} +0 -0
- /package/dist/{chunk-VDLMXEHU.js.map → chunk-NQGIALRP.js.map} +0 -0
- /package/dist/{chunk-RRLBQ3XD.js.map → chunk-NRORTICH.js.map} +0 -0
- /package/dist/{chunk-TLMCXAET.js.map → chunk-NSFU6Y4R.js.map} +0 -0
- /package/dist/{chunk-UUTMXSER.js.map → chunk-PXRUNRK7.js.map} +0 -0
- /package/dist/{chunk-CN443EB5.js.map → chunk-UJRT7VK2.js.map} +0 -0
- /package/dist/{chunk-K3AQYDRJ.js.map → chunk-VAZ4VRTA.js.map} +0 -0
- /package/dist/{chunk-4VVWAA6O.js.map → chunk-XHAEEYYH.js.map} +0 -0
- /package/dist/{chunk-Q2FTNJHH.js.map → chunk-Y7I4XTJJ.js.map} +0 -0
- /package/dist/{chunk-A5O2MBVW.js.map → chunk-YFVKGHW2.js.map} +0 -0
- /package/dist/{chunk-ZLNJ6XFU.js.map → chunk-ZDDVFBS4.js.map} +0 -0
- /package/dist/{chunk-7UF7PBUR.js.map → chunk-ZKW5V7MR.js.map} +0 -0
- /package/dist/{cli-P7N4INGY.js.map → cli-PMOATR2H.js.map} +0 -0
- /package/dist/{commands-BTSWDZVO.js.map → commands-HA2TW7NU.js.map} +0 -0
- /package/dist/{config-XVX25KIN.js.map → config-PQYZDDGW.js.map} +0 -0
- /package/dist/{context-OBZ5CNGA.js.map → context-BWXP2WB4.js.map} +0 -0
- /package/dist/{conversationPersistence-CB3RZIY7.js.map → conversationPersistence-CS2SQ6Z6.js.map} +0 -0
- /package/dist/{conversationTracker-HDEFZTDC.js.map → conversationTracker-3OLKEYWM.js.map} +0 -0
- /package/dist/{customCommands-ELEQAM5Y.js.map → customCommands-VPTXXYYR.js.map} +0 -0
- /package/dist/{env-FMH4AH2H.js.map → env-G5ZYCG5S.js.map} +0 -0
- /package/dist/{file-6TB2IASX.js.map → file-2I2KXCVN.js.map} +0 -0
- /package/dist/{llm-QPAHJ643.js.map → llm-KXF74SNS.js.map} +0 -0
- /package/dist/{llmLazy-RYJWZZ7Y.js.map → llmLazy-L3IJUBN2.js.map} +0 -0
- /package/dist/{loader-EPUS22XU.js.map → loader-CJOJNOV7.js.map} +0 -0
- /package/dist/{lsp-WIEWEHYU.js.map → lsp-OKPL75YW.js.map} +0 -0
- /package/dist/{lspAnchor-YI3SOGER.js.map → lspAnchor-7Z5YNXX3.js.map} +0 -0
- /package/dist/{mcp-Q6UOFMLT.js.map → mcp-C65V4JYM.js.map} +0 -0
- /package/dist/{mentionProcessor-3IV63BZT.js.map → mentionProcessor-EDZBHP7Y.js.map} +0 -0
- /package/dist/{messages-XU4LSUWY.js.map → messages-YBAYUMKL.js.map} +0 -0
- /package/dist/{model-JFUZ777G.js.map → model-7WMFC6F7.js.map} +0 -0
- /package/dist/{openai-PQN2VFKQ.js.map → openai-YWEX6G4I.js.map} +0 -0
- /package/dist/{outputStyles-PJNN6AH4.js.map → outputStyles-N6S27KGD.js.map} +0 -0
- /package/dist/{pluginRuntime-TLFHDTDH.js.map → pluginRuntime-3XWIAPQ7.js.map} +0 -0
- /package/dist/{pluginValidation-TZUKRIFW.js.map → pluginValidation-2JLTTMJL.js.map} +0 -0
- /package/dist/{prompts-Y4JPHIGG.js.map → prompts-HCGQPTDJ.js.map} +0 -0
- /package/dist/{pybAgentSessionLoad-EFAWFGRE.js.map → pybAgentSessionLoad-XJ6XWCK5.js.map} +0 -0
- /package/dist/{pybAgentSessionResume-YQSKGG3W.js.map → pybAgentSessionResume-SMNXFGFB.js.map} +0 -0
- /package/dist/{pybAgentStreamJsonSession-BYHCDZXV.js.map → pybAgentStreamJsonSession-33YU7WNJ.js.map} +0 -0
- /package/dist/{pybHooks-ZH3DUHNO.js.map → pybHooks-6JRPW3VW.js.map} +0 -0
- /package/dist/{query-SA5YQRDP.js.map → query-GGJC3XT2.js.map} +0 -0
- /package/dist/{registry-A2AB7N66.js.map → registry-67P26WKJ.js.map} +0 -0
- /package/dist/{ripgrep-CYA5VVPU.js.map → ripgrep-DPLWHL7O.js.map} +0 -0
- /package/dist/{skillMarketplace-6CDVELA7.js.map → skillMarketplace-MGU4KRUF.js.map} +0 -0
- /package/dist/{state-MDP57623.js.map → state-NZVNNCHH.js.map} +0 -0
- /package/dist/{theme-MYY4MVK7.js.map → theme-XV4CTBG6.js.map} +0 -0
- /package/dist/{toolPermissionSettings-ALND7SVQ.js.map → toolPermissionSettings-NEXN25B3.js.map} +0 -0
- /package/dist/{tools-6M5WFR3S.js.map → tools-R7EDLOFS.js.map} +0 -0
- /package/dist/{userInput-FBVWRPOG.js.map → userInput-PHXM4ITY.js.map} +0 -0
|
@@ -2,17 +2,17 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
2
2
|
const require = __pybCreateRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
4
|
loadPybAgentSessionMessages
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-NSFU6Y4R.js";
|
|
6
6
|
import {
|
|
7
7
|
appendSessionCustomTitleRecord,
|
|
8
8
|
appendSessionJsonlFromMessage,
|
|
9
9
|
appendSessionTagRecord,
|
|
10
10
|
listPybAgentSessions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-IXFDCJ25.js";
|
|
12
12
|
import {
|
|
13
13
|
formatValidationResult,
|
|
14
14
|
validatePluginOrMarketplacePath
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-K3QEELFX.js";
|
|
16
16
|
import {
|
|
17
17
|
ConversationTracker,
|
|
18
18
|
appendFinishState,
|
|
@@ -20,10 +20,10 @@ import {
|
|
|
20
20
|
getConversationTrackerForContext,
|
|
21
21
|
isFinishComplete,
|
|
22
22
|
mapFinishReason
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-L4CGYTJQ.js";
|
|
24
24
|
import {
|
|
25
25
|
FileSystemConversationPersistence
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-J6HKEIL2.js";
|
|
27
27
|
import {
|
|
28
28
|
beginReplSessionScope
|
|
29
29
|
} from "./chunk-F4AXICO7.js";
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
runStopHooks,
|
|
39
39
|
runUserPromptSubmitHooks,
|
|
40
40
|
updateHookTranscriptForMessages
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-DBMDQEQO.js";
|
|
42
42
|
import {
|
|
43
43
|
DEFAULT_OUTPUT_STYLE,
|
|
44
44
|
getAvailableOutputStyles,
|
|
@@ -47,11 +47,11 @@ import {
|
|
|
47
47
|
getOutputStyleSystemPromptAdditions,
|
|
48
48
|
resolveOutputStyleName,
|
|
49
49
|
setCurrentOutputStyle
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-BQCQ3DEN.js";
|
|
51
51
|
import {
|
|
52
52
|
fetchCustomModels,
|
|
53
53
|
getModelFeatures
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-5P4A6TN2.js";
|
|
55
55
|
import {
|
|
56
56
|
getCurrentSessionId,
|
|
57
57
|
getSessionState
|
|
@@ -60,13 +60,30 @@ import {
|
|
|
60
60
|
queryLLM,
|
|
61
61
|
queryQuick,
|
|
62
62
|
verifyApiKey
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-ZDDVFBS4.js";
|
|
64
64
|
import {
|
|
65
65
|
DEFAULT_TIMEOUT_MS,
|
|
66
|
+
DESCRIPTION,
|
|
67
|
+
DESCRIPTION2,
|
|
68
|
+
DESCRIPTION3,
|
|
69
|
+
DESCRIPTION4,
|
|
70
|
+
DESCRIPTION5,
|
|
71
|
+
DESCRIPTION6,
|
|
66
72
|
FallbackToolUseRejectedMessage,
|
|
67
73
|
MAX_OUTPUT_LENGTH,
|
|
68
74
|
MCPTool,
|
|
69
75
|
OutputLine,
|
|
76
|
+
PROMPT,
|
|
77
|
+
PROMPT2,
|
|
78
|
+
PROMPT3,
|
|
79
|
+
TOOL_NAME,
|
|
80
|
+
TOOL_NAME2,
|
|
81
|
+
TOOL_NAME3,
|
|
82
|
+
TOOL_NAME4,
|
|
83
|
+
TOOL_NAME5,
|
|
84
|
+
TOOL_NAME6,
|
|
85
|
+
TOOL_NAME7,
|
|
86
|
+
TOOL_NAME8,
|
|
70
87
|
getBashToolPrompt,
|
|
71
88
|
getClients,
|
|
72
89
|
getMCPCommands,
|
|
@@ -75,7 +92,7 @@ import {
|
|
|
75
92
|
listMCPServers,
|
|
76
93
|
loadMergedSettings,
|
|
77
94
|
normalizeSandboxRuntimeConfigFromSettings
|
|
78
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-FNDIHEBT.js";
|
|
79
96
|
import {
|
|
80
97
|
addMarketplace,
|
|
81
98
|
disableSkillPlugin,
|
|
@@ -88,11 +105,11 @@ import {
|
|
|
88
105
|
refreshMarketplaceAsync,
|
|
89
106
|
removeMarketplace,
|
|
90
107
|
uninstallSkillPlugin
|
|
91
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-CHH6TEXB.js";
|
|
92
109
|
import {
|
|
93
110
|
loadToolPermissionContextFromDisk,
|
|
94
111
|
persistToolPermissionUpdateToDisk
|
|
95
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-Y7I4XTJJ.js";
|
|
96
113
|
import {
|
|
97
114
|
applyToolPermissionContextUpdate,
|
|
98
115
|
applyToolPermissionContextUpdates,
|
|
@@ -103,14 +120,14 @@ import {
|
|
|
103
120
|
generateSystemReminders,
|
|
104
121
|
resetReminderSession,
|
|
105
122
|
systemReminderService
|
|
106
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-NRORTICH.js";
|
|
107
124
|
import {
|
|
108
125
|
clearAgentCache,
|
|
109
126
|
getActiveAgents,
|
|
110
127
|
getAgentByType,
|
|
111
128
|
getAllAgents,
|
|
112
129
|
getAvailableAgentTypes
|
|
113
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-YFVKGHW2.js";
|
|
114
131
|
import {
|
|
115
132
|
API_ERROR_MESSAGE_PREFIX,
|
|
116
133
|
CANCEL_MESSAGE,
|
|
@@ -145,7 +162,7 @@ import {
|
|
|
145
162
|
reorderMessages,
|
|
146
163
|
resetAutoCompactTelemetry,
|
|
147
164
|
stripSystemMessages
|
|
148
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-PXRUNRK7.js";
|
|
149
166
|
import {
|
|
150
167
|
getRequestStatus,
|
|
151
168
|
setRequestStatus,
|
|
@@ -177,7 +194,7 @@ import {
|
|
|
177
194
|
normalizeFilePath,
|
|
178
195
|
readTextContent,
|
|
179
196
|
writeTextContent
|
|
180
|
-
} from "./chunk-
|
|
197
|
+
} from "./chunk-NBDDIZNJ.js";
|
|
181
198
|
import {
|
|
182
199
|
parseBlockEdits
|
|
183
200
|
} from "./chunk-QWIBSCDN.js";
|
|
@@ -191,7 +208,7 @@ import {
|
|
|
191
208
|
formatDiagnosticsPretty,
|
|
192
209
|
initParser,
|
|
193
210
|
loadLanguage
|
|
194
|
-
} from "./chunk-
|
|
211
|
+
} from "./chunk-NQGIALRP.js";
|
|
195
212
|
import {
|
|
196
213
|
emitTelemetryEvent,
|
|
197
214
|
registerTelemetryListener
|
|
@@ -200,13 +217,13 @@ import {
|
|
|
200
217
|
getSettingsFileCandidates,
|
|
201
218
|
loadSettingsWithLegacyFallback,
|
|
202
219
|
readSettingsFile
|
|
203
|
-
} from "./chunk-
|
|
220
|
+
} from "./chunk-CNBKKQSV.js";
|
|
204
221
|
import {
|
|
205
222
|
getCustomCommandDirectories,
|
|
206
223
|
hasCustomCommands,
|
|
207
224
|
loadCustomCommands,
|
|
208
225
|
reloadCustomCommands
|
|
209
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-7MR3XX5X.js";
|
|
210
227
|
import {
|
|
211
228
|
getSessionPlugins
|
|
212
229
|
} from "./chunk-BJSWTHRM.js";
|
|
@@ -215,7 +232,7 @@ import {
|
|
|
215
232
|
buildModelProfileKey,
|
|
216
233
|
getModelManager,
|
|
217
234
|
isDefaultSlowAndCapableModel
|
|
218
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-VAZ4VRTA.js";
|
|
219
236
|
import {
|
|
220
237
|
getCodeStyle,
|
|
221
238
|
getContext,
|
|
@@ -223,16 +240,16 @@ import {
|
|
|
223
240
|
getIsGit,
|
|
224
241
|
getProjectDocs,
|
|
225
242
|
getProjectStructureStatisticsBlock
|
|
226
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-LE5VGGP6.js";
|
|
227
244
|
import {
|
|
228
245
|
getRipgrepPath,
|
|
229
246
|
getRipgrepPolicyMode,
|
|
230
247
|
resolveRipgrepPolicy,
|
|
231
248
|
ripGrep
|
|
232
|
-
} from "./chunk-
|
|
249
|
+
} from "./chunk-ZKW5V7MR.js";
|
|
233
250
|
import {
|
|
234
251
|
getTheme
|
|
235
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-EY3ZOE75.js";
|
|
236
253
|
import {
|
|
237
254
|
DEFAULT_GLOBAL_CONFIG,
|
|
238
255
|
enableConfigs,
|
|
@@ -245,7 +262,7 @@ import {
|
|
|
245
262
|
saveGlobalConfig,
|
|
246
263
|
setAllPointersToModel,
|
|
247
264
|
setModelPointer
|
|
248
|
-
} from "./chunk-
|
|
265
|
+
} from "./chunk-CNW45NOZ.js";
|
|
249
266
|
import {
|
|
250
267
|
AbortError
|
|
251
268
|
} from "./chunk-RQVLBMP7.js";
|
|
@@ -254,7 +271,7 @@ import {
|
|
|
254
271
|
getCurrentRequest,
|
|
255
272
|
logUserFriendly,
|
|
256
273
|
markPhase
|
|
257
|
-
} from "./chunk-
|
|
274
|
+
} from "./chunk-A45A3UUU.js";
|
|
258
275
|
import {
|
|
259
276
|
ASCII_LOGO,
|
|
260
277
|
BunShell,
|
|
@@ -298,10 +315,10 @@ import {
|
|
|
298
315
|
setCwd,
|
|
299
316
|
shouldApplyToolOutputTruncation,
|
|
300
317
|
truncateToolOutput
|
|
301
|
-
} from "./chunk-
|
|
318
|
+
} from "./chunk-UJRT7VK2.js";
|
|
302
319
|
import {
|
|
303
320
|
MACRO
|
|
304
|
-
} from "./chunk-
|
|
321
|
+
} from "./chunk-5ITEAEJC.js";
|
|
305
322
|
import {
|
|
306
323
|
__export
|
|
307
324
|
} from "./chunk-I3J4JYES.js";
|
|
@@ -482,7 +499,7 @@ var getCommandSubcommandPrefix = memoize(
|
|
|
482
499
|
var getCommandPrefix = memoize(
|
|
483
500
|
async (command4, abortSignal) => {
|
|
484
501
|
const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
|
|
485
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-
|
|
502
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-KXF74SNS.js");
|
|
486
503
|
const response = await queryQuick2({
|
|
487
504
|
systemPrompt,
|
|
488
505
|
userPrompt,
|
|
@@ -4284,7 +4301,7 @@ function formatParseError(error) {
|
|
|
4284
4301
|
return error instanceof Error ? error.message : String(error);
|
|
4285
4302
|
}
|
|
4286
4303
|
async function defaultGateQuery(args) {
|
|
4287
|
-
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-
|
|
4304
|
+
const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-KXF74SNS.js");
|
|
4288
4305
|
const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
|
|
4289
4306
|
const messages = [
|
|
4290
4307
|
{
|
|
@@ -4678,8 +4695,8 @@ function Cost({ costUSD, durationMs, debug: debug2 }) {
|
|
|
4678
4695
|
}
|
|
4679
4696
|
|
|
4680
4697
|
// src/tools/network/WebFetchTool/prompt.ts
|
|
4681
|
-
var
|
|
4682
|
-
var
|
|
4698
|
+
var TOOL_NAME9 = "WebFetch";
|
|
4699
|
+
var PROMPT4 = `
|
|
4683
4700
|
- Fetches content from a specified URL
|
|
4684
4701
|
- Takes a URL and optional prompt/format as input
|
|
4685
4702
|
- Fetches the URL content, converts HTML to the requested format
|
|
@@ -5098,7 +5115,7 @@ async function fetchWithRedirectDetection(url2, signal, connectTimeoutMs) {
|
|
|
5098
5115
|
}
|
|
5099
5116
|
}
|
|
5100
5117
|
var WebFetchTool = {
|
|
5101
|
-
name:
|
|
5118
|
+
name: TOOL_NAME9,
|
|
5102
5119
|
async description(input) {
|
|
5103
5120
|
const url2 = input?.url;
|
|
5104
5121
|
try {
|
|
@@ -5118,7 +5135,7 @@ var WebFetchTool = {
|
|
|
5118
5135
|
return true;
|
|
5119
5136
|
},
|
|
5120
5137
|
async prompt() {
|
|
5121
|
-
return
|
|
5138
|
+
return PROMPT4;
|
|
5122
5139
|
},
|
|
5123
5140
|
async validateInput({ url: url2 }) {
|
|
5124
5141
|
if (url2.length > MAX_URL_LENGTH) {
|
|
@@ -6120,8 +6137,9 @@ function HighlightedCode({ code, language }) {
|
|
|
6120
6137
|
}
|
|
6121
6138
|
|
|
6122
6139
|
// src/tools/filesystem/NotebookEditTool/prompt.ts
|
|
6123
|
-
var
|
|
6124
|
-
var
|
|
6140
|
+
var TOOL_NAME10 = "NotebookEdit";
|
|
6141
|
+
var DESCRIPTION7 = "Replace the contents of a specific cell in a Jupyter notebook.";
|
|
6142
|
+
var PROMPT5 = `Completely replaces the contents of a specific cell in a Jupyter notebook (.ipynb file) with new source. Jupyter notebooks are interactive documents that combine code, text, and visualizations, commonly used for data analysis and scientific computing. The notebook_path parameter must be an absolute path, not a relative path. The cell_number is 0-indexed. Use edit_mode=insert to add a new cell at the index specified by cell_number. Use edit_mode=delete to delete the cell at the index specified by cell_number.
|
|
6125
6143
|
`.trim();
|
|
6126
6144
|
|
|
6127
6145
|
// src/utils/permissions/filesystem.ts
|
|
@@ -6233,12 +6251,12 @@ var inputSchema2 = z2.strictObject({
|
|
|
6233
6251
|
)
|
|
6234
6252
|
});
|
|
6235
6253
|
var NotebookEditTool = {
|
|
6236
|
-
name:
|
|
6254
|
+
name: TOOL_NAME10,
|
|
6237
6255
|
async description() {
|
|
6238
|
-
return
|
|
6256
|
+
return DESCRIPTION7;
|
|
6239
6257
|
},
|
|
6240
6258
|
async prompt() {
|
|
6241
|
-
return
|
|
6259
|
+
return PROMPT5;
|
|
6242
6260
|
},
|
|
6243
6261
|
inputSchema: inputSchema2,
|
|
6244
6262
|
userFacingName() {
|
|
@@ -6455,71 +6473,6 @@ var NotebookEditTool = {
|
|
|
6455
6473
|
}
|
|
6456
6474
|
};
|
|
6457
6475
|
|
|
6458
|
-
// src/tools/filesystem/FileEditTool/prompt.ts
|
|
6459
|
-
var DESCRIPTION2 = `Performs smart string replacements in files using SEARCH/REPLACE blocks.
|
|
6460
|
-
|
|
6461
|
-
Usage:
|
|
6462
|
-
1. **Read First**: You must use your \`Read\` tool at least once before editing.
|
|
6463
|
-
2. **Block Format**: Provide changes as one or more SEARCH/REPLACE blocks.
|
|
6464
|
-
\`\`\`
|
|
6465
|
-
<<<<<<< SEARCH
|
|
6466
|
-
[original code to replace]
|
|
6467
|
-
=======
|
|
6468
|
-
[new code to insert]
|
|
6469
|
-
>>>>>>> REPLACE
|
|
6470
|
-
\`\`\`
|
|
6471
|
-
3. **Multiple Edits**: You can provide multiple blocks in a single turn to perform batch edits.
|
|
6472
|
-
4. **Context**: Include enough surrounding lines in the SEARCH block to ensure uniqueness.
|
|
6473
|
-
5. **Indentation**: Preserve the exact indentation (tabs/spaces) of the original file in your SEARCH block.
|
|
6474
|
-
6. **Smart Matching**: The tool uses a fuzzy matching engine. It can locate code even if there are minor differences in whitespace or indentation.
|
|
6475
|
-
7. **Conditional Edit**: Use \`if_not_contains\` to skip the edit if the file already contains a specific string.
|
|
6476
|
-
8. **Thinking**: You can include "thinking" text between blocks; the tool will ignore it.
|
|
6477
|
-
|
|
6478
|
-
## LSP-Integrated Behavior
|
|
6479
|
-
- **Semantic Anchor Assist**: Before fuzzy replacement, Edit tries LSP anchor matching to narrow replacement to the most relevant symbol range.
|
|
6480
|
-
- **When It Helps**: Especially useful when the same snippet appears multiple times and plain text matching may hit the wrong block.
|
|
6481
|
-
- **Fallback**: If LSP anchor is unavailable, Edit falls back to normal SEARCH/REPLACE matching.
|
|
6482
|
-
- **Post-Edit Verification**: Set \`verify: true\` to run LSP diagnostics after applying edits.
|
|
6483
|
-
- **Verification Guardrail**: If syntax/type diagnostics contain errors after edit, Edit reverts changes and returns a verification failure.
|
|
6484
|
-
- **When LSP Is Unavailable**: You may receive verification unavailable; retry with \`verify: false\` only when you have high confidence in edit safety.
|
|
6485
|
-
|
|
6486
|
-
Notes:
|
|
6487
|
-
- The edit will FAIL if the SEARCH block matches multiple locations(ambiguous). Provide more context.
|
|
6488
|
-
- To delete code, leave the REPLACE section empty.
|
|
6489
|
-
- To create a new file, use an empty SEARCH block with the desired content in REPLACE.
|
|
6490
|
-
- ALWAYS prefer editing existing files. NEVER write new files unless explicitly required.
|
|
6491
|
-
- For Jupyter Notebooks (.ipynb), use the NotebookEditTool instead.
|
|
6492
|
-
|
|
6493
|
-
## Typical Usage Examples
|
|
6494
|
-
### Example 1: Ambiguous Duplicate Snippet with LSP Anchor
|
|
6495
|
-
<example>
|
|
6496
|
-
user: Update the constructor guard in UserService, not the test helper copy
|
|
6497
|
-
assistant: [uses Read on UserService file to confirm target block]
|
|
6498
|
-
[uses Edit with SEARCH/REPLACE block and verify=true]
|
|
6499
|
-
[relies on LSP anchor assist to prefer semantic symbol region when duplicate text exists]
|
|
6500
|
-
<reasoning>
|
|
6501
|
-
The assistant enabled semantic-safe editing because:
|
|
6502
|
-
1. Duplicate snippets can cause ambiguous fuzzy matches
|
|
6503
|
-
2. LSP anchor narrows replacement to the intended symbol scope
|
|
6504
|
-
3. verify=true adds post-edit diagnostics guardrail and auto-revert on syntax errors
|
|
6505
|
-
</reasoning>
|
|
6506
|
-
</example>
|
|
6507
|
-
|
|
6508
|
-
### Example 2: Verification-Unavailable Recovery
|
|
6509
|
-
<example>
|
|
6510
|
-
user: Apply this quick rename in a generated file
|
|
6511
|
-
assistant: [uses Read to confirm exact path and block]
|
|
6512
|
-
[uses Edit with verify=true]
|
|
6513
|
-
[if response says verification unavailable, retries with verify=false and tighter SEARCH context]
|
|
6514
|
-
<reasoning>
|
|
6515
|
-
The assistant keeps verification first, then degrades safely because:
|
|
6516
|
-
1. LSP verification is preferred for correctness
|
|
6517
|
-
2. Generated or unsupported files may not have active LSP diagnostics
|
|
6518
|
-
3. Retrying with verify=false is acceptable only after narrowing context
|
|
6519
|
-
</reasoning>
|
|
6520
|
-
</example>
|
|
6521
|
-
`.trim();
|
|
6522
|
-
|
|
6523
6476
|
// src/utils/terminal/paste.ts
|
|
6524
6477
|
function normalizeLineEndings(text) {
|
|
6525
6478
|
return text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
@@ -6724,7 +6677,7 @@ var inputSchema3 = z3.strictObject({
|
|
|
6724
6677
|
)
|
|
6725
6678
|
});
|
|
6726
6679
|
var FileEditTool = {
|
|
6727
|
-
name:
|
|
6680
|
+
name: TOOL_NAME2,
|
|
6728
6681
|
async description() {
|
|
6729
6682
|
return "A tool for editing files using SEARCH/REPLACE blocks";
|
|
6730
6683
|
},
|
|
@@ -6847,7 +6800,7 @@ var FileEditTool = {
|
|
|
6847
6800
|
const originalFileContent = currentFileContent;
|
|
6848
6801
|
let totalPatch = [];
|
|
6849
6802
|
const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
|
|
6850
|
-
const { findLspAnchor } = await import("./lspAnchor-
|
|
6803
|
+
const { findLspAnchor } = await import("./lspAnchor-7Z5YNXX3.js");
|
|
6851
6804
|
for (const op of editOperations) {
|
|
6852
6805
|
const normalizedSearch = normalizeLineEndings(op.search);
|
|
6853
6806
|
const normalizedReplace = normalizeLineEndings(op.replace);
|
|
@@ -6972,102 +6925,6 @@ import { extname as extname4, relative as relative6 } from "node:path";
|
|
|
6972
6925
|
import * as React13 from "react";
|
|
6973
6926
|
import { z as z4 } from "zod";
|
|
6974
6927
|
|
|
6975
|
-
// src/tools/filesystem/FileReadTool/prompt.ts
|
|
6976
|
-
var MAX_LINES_TO_READ = 2e3;
|
|
6977
|
-
var MAX_LINE_LENGTH = 2e3;
|
|
6978
|
-
var DESCRIPTION3 = "Read a file or directory from the local filesystem.";
|
|
6979
|
-
var PROMPT3 = `Reads a file or directory from the local filesystem. You can access any file or directory directly by using this tool.Assume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid; otherwise, Ensure the path is confirmed by Glob/Grep before reading.
|
|
6980
|
-
|
|
6981
|
-
## Best Practice
|
|
6982
|
-
- **Read vs Analyze**: Use this tool when you need to inspect full implementation details.
|
|
6983
|
-
- **Workflow**: Locate file (Glob/Grep) -> Read file (FileRead) -> Edit file.
|
|
6984
|
-
- **Avoid**: Do not use this to 'search' for code strings; use 'Grep' or 'Glob' for that.
|
|
6985
|
-
|
|
6986
|
-
## When NOT to Use Read Tool
|
|
6987
|
-
- **Unverified Paths**: Do NOT read a file if the path was inferred or guessed from context. Always verify the path exists using Glob/Grep first.
|
|
6988
|
-
- **Exploration Phase**: When exploring unfamiliar code, do NOT assume file locations. Use Glob/Grep to discover actual paths before reading.
|
|
6989
|
-
- It is okay to read a file that does not exist; an error will be returned.
|
|
6990
|
-
|
|
6991
|
-
## Usage Details
|
|
6992
|
-
- The file_path parameter must be an absolute path, not a relative path
|
|
6993
|
-
- This tool supports both file mode and directory mode
|
|
6994
|
-
- In directory mode, offset/limit are 1-based entry pagination and offset>=1 is required
|
|
6995
|
-
- In file mode, offset/limit are 1-based line pagination; offset=1 starts from the first line shown in cat -n output
|
|
6996
|
-
- By default, file mode reads up to ${MAX_LINES_TO_READ} lines starting from the beginning of the file
|
|
6997
|
-
- You can optionally specify a line offset and limit (especially handy for long files). **Smart Truncation is active** only in file mode when \`limit\` is provided and \`symbol_name\` is not provided: if your limit cuts a function or class in the middle, the tool will automatically extend the read range to include the full semantic block (up to 500 extra lines).
|
|
6998
|
-
- Smart Truncation is a best-effort semantic boundary repair (Tree-sitter). If semantic parsing fails, Read falls back to the original offset/limit window.
|
|
6999
|
-
- symbol_name enables LSP-assisted symbol read: provide an exact symbol name to resolve the symbol range and read that block directly
|
|
7000
|
-
- When \`symbol_name\` is provided, Read resolves symbol range via LSP and reads that block directly (offset/limit are ignored for range selection).
|
|
7001
|
-
- Use symbol_name only after file path is confirmed and when you need a specific class/function definition; if symbol is missing, unresolved, or LSP is unavailable, fallback to offset/limit or use LspTool for semantic discovery first.
|
|
7002
|
-
- Directory mode returns a one-level tree structure using \u251C\u2500\u2500/\u2514\u2500\u2500 and supports pagination continuation hints
|
|
7003
|
-
- For large files, iterate in chunks: offset=1 limit=200, then offset=201 limit=200, and so on until the needed region is covered
|
|
7004
|
-
- File text truncation is capped at 50KB per result and 2000 lines; 50KB is file text truncation and not a directory access gate
|
|
7005
|
-
- Any lines longer than ${MAX_LINE_LENGTH} characters will be truncated
|
|
7006
|
-
- Results are returned using cat -n format, with line numbers starting at 1
|
|
7007
|
-
- This tool allows reading images (eg PNG, JPG, etc). When reading an image file the contents are presented visually.
|
|
7008
|
-
- This tool can read PDF files and return them as document blocks for analysis.
|
|
7009
|
-
- This tool can read Jupyter notebooks (.ipynb files) and returns all cells with their outputs, combining code, text, and visualizations.
|
|
7010
|
-
- For wide repository exploration, still prefer Glob first, then use Read for focused file/directory inspection.
|
|
7011
|
-
- You can call multiple tools in a single response. It is always better to speculatively read multiple potentially useful files in parallel.
|
|
7012
|
-
- You will regularly be asked to read screenshots. If the user provides a path to a screenshot, ALWAYS use this tool to view the file at the path. This tool will work with all temporary file paths.
|
|
7013
|
-
- If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.
|
|
7014
|
-
|
|
7015
|
-
## Typical Usage Examples
|
|
7016
|
-
### Example 1: Exploring Unfamiliar Codebase
|
|
7017
|
-
<example>
|
|
7018
|
-
user: How does authentication work in this project?
|
|
7019
|
-
assistant: [uses Grep tool with pattern="auth|login" to find relevant files]
|
|
7020
|
-
[uses Glob tool with pattern="**/auth*.{ts,js}" to locate auth modules]
|
|
7021
|
-
[reads the matched files after confirming their paths]
|
|
7022
|
-
</example>
|
|
7023
|
-
|
|
7024
|
-
### Example 2: User Mentions a Concept Without Path
|
|
7025
|
-
<example>
|
|
7026
|
-
user: Check the database configuration
|
|
7027
|
-
assistant: [uses Glob tool with pattern="**/config*.{ts,js,json}"]
|
|
7028
|
-
[uses Grep tool with pattern="database|db_" to find config files with db settings]
|
|
7029
|
-
[reads the confirmed config file]
|
|
7030
|
-
</example>
|
|
7031
|
-
|
|
7032
|
-
### Example 3: Read Directory Structure Then Read File
|
|
7033
|
-
<example>
|
|
7034
|
-
user: Check the API module layout and read router implementation
|
|
7035
|
-
assistant: [uses Glob tool with pattern="**/api*"]
|
|
7036
|
-
[reads the confirmed api directory path to get one-level tree structure with Read]
|
|
7037
|
-
[reads the router file path found in that directory tree]
|
|
7038
|
-
</example>
|
|
7039
|
-
|
|
7040
|
-
### Example 4: LSP-Assisted Symbol Read
|
|
7041
|
-
<example>
|
|
7042
|
-
user: I only need the function that actually executes file reading, not the whole file
|
|
7043
|
-
assistant: [uses Glob/Grep to confirm FileReadTool file path]
|
|
7044
|
-
[uses Read with file_path="<absolute path>/FileReadTool.tsx" symbol_name="call"]
|
|
7045
|
-
[if symbol is missing or unresolved, uses LspTool documentSymbol to discover exact symbol names, then retries]
|
|
7046
|
-
[if LSP is unavailable, falls back to offset/limit chunked reads around likely implementation area]
|
|
7047
|
-
<reasoning>
|
|
7048
|
-
The assistant used symbol_name-based Read because:
|
|
7049
|
-
1. User intent is a specific implementation block, not whole-file browsing
|
|
7050
|
-
2. symbol_name gives precise semantic range selection and avoids noisy context
|
|
7051
|
-
3. LspTool is used only for symbol discovery fallback, while Read remains the code retrieval tool
|
|
7052
|
-
</reasoning>
|
|
7053
|
-
</example>
|
|
7054
|
-
|
|
7055
|
-
### Example 5: Smart Truncation on Partial Window
|
|
7056
|
-
<example>
|
|
7057
|
-
user: Please read this file section for me; I do not know where the function ends
|
|
7058
|
-
assistant: [uses Read with file_path="<absolute path>/service.ts" offset=120 limit=30]
|
|
7059
|
-
[relies on Smart Truncation to auto-extend when the requested window cuts a function/class boundary]
|
|
7060
|
-
[checks returned startLine/numLines and continues with adjacent chunks if more context is needed]
|
|
7061
|
-
[if semantic parsing fails, falls back to original offset/limit and continues chunked reading]
|
|
7062
|
-
<reasoning>
|
|
7063
|
-
The assistant used offset/limit Read with Smart Truncation because:
|
|
7064
|
-
1. User asked for a local section without symbol-level knowledge
|
|
7065
|
-
2. Pagination windows can split semantic containers, causing misleading partial code
|
|
7066
|
-
3. Smart Truncation repairs semantic boundaries while preserving pagination workflow
|
|
7067
|
-
</reasoning>
|
|
7068
|
-
</example>
|
|
7069
|
-
`.trim();
|
|
7070
|
-
|
|
7071
6928
|
// src/utils/fs/secureFile.ts
|
|
7072
6929
|
import {
|
|
7073
6930
|
existsSync as existsSync4,
|
|
@@ -7702,7 +7559,7 @@ function toSmartTruncationFallbackEvent(input) {
|
|
|
7702
7559
|
|
|
7703
7560
|
// src/tools/filesystem/FileReadTool/FileReadTool.tsx
|
|
7704
7561
|
var MAX_LINES_TO_RENDER = 0;
|
|
7705
|
-
var
|
|
7562
|
+
var MAX_LINE_LENGTH = 2e3;
|
|
7706
7563
|
var MAX_TEXT_OUTPUT_BYTES = 50 * 1024;
|
|
7707
7564
|
var MAX_TEXT_OUTPUT_LINES = 2e3;
|
|
7708
7565
|
var DIRECTORY_DEFAULT_LIMIT = 200;
|
|
@@ -7824,12 +7681,12 @@ var inputSchema4 = z4.strictObject({
|
|
|
7824
7681
|
)
|
|
7825
7682
|
});
|
|
7826
7683
|
var FileReadTool = {
|
|
7827
|
-
name:
|
|
7684
|
+
name: TOOL_NAME,
|
|
7828
7685
|
async description() {
|
|
7829
|
-
return
|
|
7686
|
+
return DESCRIPTION;
|
|
7830
7687
|
},
|
|
7831
7688
|
async prompt() {
|
|
7832
|
-
return
|
|
7689
|
+
return PROMPT;
|
|
7833
7690
|
},
|
|
7834
7691
|
inputSchema: inputSchema4,
|
|
7835
7692
|
isReadOnly() {
|
|
@@ -8113,7 +7970,7 @@ var FileReadTool = {
|
|
|
8113
7970
|
finalLimit
|
|
8114
7971
|
);
|
|
8115
7972
|
const truncatedLines = content.split(/\r?\n/).map(
|
|
8116
|
-
(line) => line.length >
|
|
7973
|
+
(line) => line.length > MAX_LINE_LENGTH ? line.slice(0, MAX_LINE_LENGTH) : line
|
|
8117
7974
|
).join("\n");
|
|
8118
7975
|
const textPage = capTextOutput(truncatedLines, {
|
|
8119
7976
|
startLine,
|
|
@@ -8462,19 +8319,6 @@ import { EOL } from "os";
|
|
|
8462
8319
|
import { dirname as dirname4, extname as extname5, isAbsolute as isAbsolute5, relative as relative7, resolve as resolve5 } from "path";
|
|
8463
8320
|
import * as React14 from "react";
|
|
8464
8321
|
import { z as z5 } from "zod";
|
|
8465
|
-
|
|
8466
|
-
// src/tools/filesystem/FileWriteTool/prompt.ts
|
|
8467
|
-
var PROMPT4 = `Writes a file to the local filesystem.
|
|
8468
|
-
|
|
8469
|
-
Usage:
|
|
8470
|
-
- This tool will overwrite the existing file if there is one at the provided path.
|
|
8471
|
-
- If this is an existing file, you MUST use the ${FileReadTool.name} tool first to read the file's contents. This tool will fail if you did not read the file first.
|
|
8472
|
-
- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.
|
|
8473
|
-
- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
|
|
8474
|
-
- Only use emojis if the user explicitly requests it. Avoid writing emojis to files unless asked.
|
|
8475
|
-
`.trim();
|
|
8476
|
-
|
|
8477
|
-
// src/tools/filesystem/FileWriteTool/FileWriteTool.tsx
|
|
8478
8322
|
var MAX_LINES_TO_RENDER2 = 5;
|
|
8479
8323
|
var MAX_LINES_TO_RENDER_FOR_ASSISTANT = 16e3;
|
|
8480
8324
|
var TRUNCATED_MESSAGE = "<response clipped><NOTE>To save on context only part of this file has been shown to you. You should retry this tool after you have searched inside the file with Grep in order to find the line numbers of what you are looking for.</NOTE>";
|
|
@@ -8485,13 +8329,13 @@ var inputSchema5 = z5.strictObject({
|
|
|
8485
8329
|
content: z5.string().describe("The content to write to the file")
|
|
8486
8330
|
});
|
|
8487
8331
|
var FileWriteTool = {
|
|
8488
|
-
name:
|
|
8332
|
+
name: TOOL_NAME3,
|
|
8489
8333
|
async description() {
|
|
8490
|
-
return
|
|
8334
|
+
return DESCRIPTION3;
|
|
8491
8335
|
},
|
|
8492
8336
|
userFacingName: () => "Write",
|
|
8493
8337
|
async prompt() {
|
|
8494
|
-
return
|
|
8338
|
+
return PROMPT2;
|
|
8495
8339
|
},
|
|
8496
8340
|
inputSchema: inputSchema5,
|
|
8497
8341
|
async isEnabled() {
|
|
@@ -8664,116 +8508,6 @@ ${addLineNumbers({
|
|
|
8664
8508
|
import { Box as Box14, Text as Text15 } from "ink";
|
|
8665
8509
|
import React15 from "react";
|
|
8666
8510
|
import { z as z6 } from "zod";
|
|
8667
|
-
|
|
8668
|
-
// src/tools/filesystem/GlobTool/prompt.ts
|
|
8669
|
-
var TOOL_NAME_FOR_PROMPT2 = "Glob";
|
|
8670
|
-
var DESCRIPTION4 = `Fast file pattern matching tool that works with any codebase size
|
|
8671
|
-
|
|
8672
|
-
## WhenToUse & Best Practice
|
|
8673
|
-
- If you have keywords or fuzzy paths, use Glob first to narrow candidates.
|
|
8674
|
-
- When you are doing an open ended search that may require multiple rounds of globbing and grepping, use the Agent tool instead
|
|
8675
|
-
- 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.
|
|
8676
|
-
- This tool is for FINDING files.
|
|
8677
|
-
|
|
8678
|
-
## Directory Structure Guidance
|
|
8679
|
-
- For one-level directory structure, use Read directly on the directory path (offset>=1, optional limit)
|
|
8680
|
-
- Use Glob for file-path discovery and candidate narrowing, not as the primary one-level directory listing workflow
|
|
8681
|
-
|
|
8682
|
-
## Search Strategy
|
|
8683
|
-
- **Broad-to-Narrow Pattern**: Start with a broad pattern, then narrow based on results.
|
|
8684
|
-
- Step 1: Use broad patterns like \`**/*.ts\` or \`src/**/*\` to get an overview
|
|
8685
|
-
- Step 2: Analyze results and refine with more specific patterns
|
|
8686
|
-
- Example: "\`**/*.test.ts\`" \u2192 too many results \u2192 "src/**/auth*.test.ts"
|
|
8687
|
-
- **Pattern Selection Guide**:
|
|
8688
|
-
- Unknown structure? Start with \`**/*.{ext}\` to discover layout, then use Read on specific directory paths for one-level structure
|
|
8689
|
-
- Looking for specific type? Use descriptive names: \`**/test*\`, \`**/config*\`
|
|
8690
|
-
- In a specific area? Combine path + pattern: \`src/auth/**/*.ts\`
|
|
8691
|
-
- **Discovery Workflow**: For unfamiliar codebases, run these in parallel:
|
|
8692
|
-
- \`**/package.json\`, \`**/*.{ts,js,tsx,jsx}\`, \`**/README*\`, \`**/*config*.{ts,js,json}\`
|
|
8693
|
-
- Analyze structure \u2192 refine search \u2192 read key files
|
|
8694
|
-
- **Tool Collaboration**:
|
|
8695
|
-
- Read \`directory_path\` \u2192 Get one-level directory tree structure
|
|
8696
|
-
- Grep \u2192 After Glob finds files, use Grep to search content
|
|
8697
|
-
- Read \u2192 Read the found file contents
|
|
8698
|
-
|
|
8699
|
-
## Usage Details
|
|
8700
|
-
- Supports glob patterns like "**/*.js" or "src/**/*.ts"
|
|
8701
|
-
- Returns absolute file paths sorted by modification time (most recent first)
|
|
8702
|
-
- Use this tool when you need to find files by name patterns
|
|
8703
|
-
- Powered by ripgrep with \`--files\` mode for fast pattern matching
|
|
8704
|
-
- \`path\` parameter: Specify the directory to search in. If omitted, uses the current working directory. IMPORTANT: Omit this field to use the default directory. DO NOT enter "undefined" or "null" - simply omit it for the default behavior. Supports both relative and absolute paths.
|
|
8705
|
-
- Results are limited to 100 files by default. If truncated, use a more specific path or pattern to narrow results.
|
|
8706
|
-
- Search ignores .gitignore rules and includes hidden files by default.
|
|
8707
|
-
- **Empty Results**: When no files are found, try broader patterns (e.g., src/**/*) or verify path exists.
|
|
8708
|
-
- **Error Handling**: Returns error if \`path\` does not exist or is not a valid directory.
|
|
8709
|
-
- **LSP Semantic Mode**: \`semantic: true\` enables workspace symbol fallback when file globbing returns empty.
|
|
8710
|
-
- **Semantic search is opt-in**: Only set \`semantic: true\` when you intentionally want LSP-assisted fallback.
|
|
8711
|
-
- Semantic output may include:
|
|
8712
|
-
- \`semanticNotice\`: human-readable semantic fallback note
|
|
8713
|
-
- \`semanticReason\`: structured reason code (e.g., \`SYMBOLS_ADDED\`, \`NO_SYMBOL_MATCH\`, \`LSP_UNAVAILABLE\`)
|
|
8714
|
-
- \`semanticSuggestion\`: suggested next action aligned to reason code
|
|
8715
|
-
- **Truncated Results**: When results are truncated (limited to 100 files), narrow down using:
|
|
8716
|
-
1. Add a more specific path: \`src/core/**/*.ts\` instead of \`**/*.ts\`
|
|
8717
|
-
2. Use file extension filter: \`src/**/*.test.ts\` instead of \`src/**/*.ts\`
|
|
8718
|
-
3. Use Read on a specific directory path to confirm one-level structure, then target specific directories with Glob
|
|
8719
|
-
|
|
8720
|
-
## Typical Usage Examples
|
|
8721
|
-
|
|
8722
|
-
### Example 1: Project Structure Discovery (Unknown Codebase)
|
|
8723
|
-
<example>
|
|
8724
|
-
user: I'm new to this project, what's the structure?
|
|
8725
|
-
assistant: [uses Glob tool with pattern="**/package.json" to find project roots]
|
|
8726
|
-
[reads the confirmed source directory path to inspect one-level tree structure]
|
|
8727
|
-
[uses Glob tool with pattern="**/*.{ts,tsx,js,jsx}" to locate major source areas]
|
|
8728
|
-
</example>
|
|
8729
|
-
|
|
8730
|
-
### Example 2: Find Files by Type in Specific Area
|
|
8731
|
-
<example>
|
|
8732
|
-
user: Find all test files in the auth module
|
|
8733
|
-
assistant: [uses Glob tool with pattern="src/auth/**/*.test.ts"]
|
|
8734
|
-
[uses Read tool to examine specific test files]
|
|
8735
|
-
</example>
|
|
8736
|
-
|
|
8737
|
-
### Example 3: Config File Location (Deterministic)
|
|
8738
|
-
<example>
|
|
8739
|
-
user: Where is the webpack configuration?
|
|
8740
|
-
assistant: [uses Glob tool with pattern="**/webpack*.{js,ts,json}"]
|
|
8741
|
-
[uses Read tool on the matched config file]
|
|
8742
|
-
</example>
|
|
8743
|
-
|
|
8744
|
-
### Example 4: Parallel Discovery for Entry Points
|
|
8745
|
-
<example>
|
|
8746
|
-
user: What are the main entry points of this application?
|
|
8747
|
-
assistant: [uses Glob tool with pattern="**/index.{ts,js}"]
|
|
8748
|
-
[uses Glob tool with pattern="**/main.{ts,js}"]
|
|
8749
|
-
[uses Glob tool with pattern="**/app.{ts,js}"]
|
|
8750
|
-
[uses Read tool to examine the entry point files]
|
|
8751
|
-
</example>
|
|
8752
|
-
|
|
8753
|
-
### Example 5: Narrow Down After Broad Results
|
|
8754
|
-
<example>
|
|
8755
|
-
user: Find all TypeScript files in the project
|
|
8756
|
-
assistant: [uses Glob tool with pattern="**/*.ts" - returns 500+ files, truncated]
|
|
8757
|
-
[uses Glob tool with pattern="src/**/*.ts" to focus on source code]
|
|
8758
|
-
[uses Glob tool with pattern="src/core/**/*.ts" to narrow further if needed]
|
|
8759
|
-
</example>
|
|
8760
|
-
|
|
8761
|
-
### Example 6: Semantic Fallback for Unknown File Path
|
|
8762
|
-
<example>
|
|
8763
|
-
user: Find where AuthService is implemented, I do not know the file name
|
|
8764
|
-
assistant: [uses Glob tool with pattern="**/*AuthService*" semantic=false first]
|
|
8765
|
-
[if no files found, retries with semantic=true]
|
|
8766
|
-
[reads semanticReason and semanticSuggestion to decide next step]
|
|
8767
|
-
<reasoning>
|
|
8768
|
-
The assistant switches to semantic mode because:
|
|
8769
|
-
1. Filename-based glob failed and user intent is symbol-oriented
|
|
8770
|
-
2. semantic=true allows LSP workspace symbols to recover likely file paths
|
|
8771
|
-
3. semanticReason + semanticSuggestion provide explicit fallback diagnostics
|
|
8772
|
-
</reasoning>
|
|
8773
|
-
</example>
|
|
8774
|
-
`.trim();
|
|
8775
|
-
|
|
8776
|
-
// src/tools/filesystem/GlobTool/GlobTool.tsx
|
|
8777
8511
|
import { existsSync as existsSync6, statSync as statSync9 } from "fs";
|
|
8778
8512
|
import { isAbsolute as isAbsolute6, join as join5, relative as relative8, resolve as resolve6 } from "path";
|
|
8779
8513
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
@@ -8821,7 +8555,7 @@ var inputSchema6 = z6.strictObject({
|
|
|
8821
8555
|
});
|
|
8822
8556
|
var DEFAULT_LIMIT = 100;
|
|
8823
8557
|
var GlobTool = {
|
|
8824
|
-
name:
|
|
8558
|
+
name: TOOL_NAME4,
|
|
8825
8559
|
async description() {
|
|
8826
8560
|
return DESCRIPTION4;
|
|
8827
8561
|
},
|
|
@@ -8975,130 +8709,6 @@ import React16 from "react";
|
|
|
8975
8709
|
import { existsSync as existsSync7 } from "fs";
|
|
8976
8710
|
import { stat as statAsync } from "fs/promises";
|
|
8977
8711
|
import { z as z7 } from "zod";
|
|
8978
|
-
|
|
8979
|
-
// src/tools/search/GrepTool/prompt.ts
|
|
8980
|
-
var TOOL_NAME_FOR_PROMPT3 = "Grep";
|
|
8981
|
-
var DESCRIPTION5 = `A powerful fast content search tool that works with any codebase size
|
|
8982
|
-
|
|
8983
|
-
## Best Practice
|
|
8984
|
-
- Use Grep as a "Scout" to *find* entry points based on text patterns.
|
|
8985
|
-
- STEP 1: Search for a unique string (e.g., error message, URL route, specific variable name).
|
|
8986
|
-
- STEP 2: Once you get a match (File + Line Number), STOP grepping.
|
|
8987
|
-
- STEP 3: Use Read to get the exact line + character, then call LspTool for definition or references.
|
|
8988
|
-
- AVOID: Do not use Grep to trace execution flow (e.g., searching for "functionName" manually). Use LSP for that.
|
|
8989
|
-
- Hotspot strategy: narrow the path scope first, then paginate or refine the search; after truncation, focus on high-signal directories to avoid full-repo scans.
|
|
8990
|
-
|
|
8991
|
-
## Search Strategy
|
|
8992
|
-
- **Pattern Refinement Workflow**:
|
|
8993
|
-
- Start broad: simple keyword first, observe results
|
|
8994
|
-
- Narrow down: add constraints (type, glob, path) if too many matches
|
|
8995
|
-
- Switch mode: \`files_with_matches\` for discovery, \`content\` for details
|
|
8996
|
-
- **From Vague Intent to Precise Pattern**:
|
|
8997
|
-
- "How does auth work?" \u2192 Start with Grep("auth", type="ts") \u2192 Analyze results \u2192 Refine pattern
|
|
8998
|
-
- "Find the API endpoints" \u2192 Grep("router|route|endpoint", type="ts") \u2192 Read key files
|
|
8999
|
-
- "Where is this error from?" \u2192 Grep(exact error message) \u2192 Trace back to source
|
|
9000
|
-
- **Iterative Narrowing**:
|
|
9001
|
-
- Too many results? Add \`glob\`, \`type\`, or narrower \`path\`
|
|
9002
|
-
- No results? Broaden pattern, try case-insensitive (\`-i\`), or try alternative keywords
|
|
9003
|
-
- Wrong results? Adjust pattern, check regex syntax, try alternative keywords
|
|
9004
|
-
- **Tool Collaboration**:
|
|
9005
|
-
- Read "directory_path" \u2192 Confirm one-level directory structure for search scope
|
|
9006
|
-
- Glob "file_path" \u2192 Confirm file path existence
|
|
9007
|
-
- Read \u2192 Read specific content of matched files
|
|
9008
|
-
- LspTool \u2192 Trace definitions and references (replace manual Grep tracing)
|
|
9009
|
-
|
|
9010
|
-
## Usage Details
|
|
9011
|
-
- ALWAYS use Grep for search tasks. NEVER invoke \`grep\` or \`rg\` as a Bash command. The Grep tool has been optimized for correct permissions and access.
|
|
9012
|
-
- Powered by ripgrep for fast text search with full regex support (e.g., "log.*Error", "function\\s+\\w+")
|
|
9013
|
-
- Pattern syntax: Uses ripgrep - literal braces need escaping (use \`interface\\{\\}\` to find \`interface{}\` in Go code)
|
|
9014
|
-
- Excludes version control directories (.git, .svn, .hg, .bzr) automatically
|
|
9015
|
-
- Includes hidden files by default
|
|
9016
|
-
|
|
9017
|
-
**Path & Scope**:
|
|
9018
|
-
- \`path\` parameter: File or directory to search in. Defaults to current working directory.
|
|
9019
|
-
- \`glob\` parameter: Filter files by glob pattern (e.g., "*.js", "*.{ts,tsx}") - maps to rg --glob
|
|
9020
|
-
- \`type\` parameter: Filter by file type (e.g., "js", "py", "rust", "go", "java") - more efficient than glob for standard types
|
|
9021
|
-
- Path guidance: If user provides a path, use it directly. If uncertain, confirm with Glob first.
|
|
9022
|
-
|
|
9023
|
-
**Output Modes**:
|
|
9024
|
-
- \`files_with_matches\` (default): Returns file paths sorted by modification time
|
|
9025
|
-
- \`content\`: Shows matching lines with line numbers (supports -A/-B/-C context)
|
|
9026
|
-
- \`count\`: Shows match counts per file
|
|
9027
|
-
|
|
9028
|
-
**Context & Pagination**:
|
|
9029
|
-
- \`-B\`, \`-A\`, \`-C\`: Context lines before/after/around matches (requires output_mode: "content")
|
|
9030
|
-
- \`-n\`: Show line numbers (default: true, requires output_mode: "content")
|
|
9031
|
-
- \`head_limit\`: Limit output to first N entries (works across all modes)
|
|
9032
|
-
- \`offset\`: Skip first N entries before applying head_limit
|
|
9033
|
-
- \`multiline\`: Enable multiline mode where . matches newlines (default: false)
|
|
9034
|
-
|
|
9035
|
-
**Case Sensitivity**:
|
|
9036
|
-
- \`-i\`: Enable case-insensitive search
|
|
9037
|
-
|
|
9038
|
-
**Result Handling**:
|
|
9039
|
-
- Results are truncated at 20,000 characters if too large
|
|
9040
|
-
- Use Task tool for open-ended searches requiring multiple rounds
|
|
9041
|
-
- **Semantic Fallback** (\`semantic: true\`): when text grep has no hit (or \`symbol_type\` is provided), Grep can query LSP workspace symbols.
|
|
9042
|
-
- Semantic-enhanced outputs may include:
|
|
9043
|
-
- \`semanticNotice\`: fallback summary
|
|
9044
|
-
- \`semanticReason\`: structured reason code (e.g., \`SYMBOLS_ADDED\`, \`NO_SYMBOL_MATCH\`, \`LSP_UNAVAILABLE\`)
|
|
9045
|
-
- \`semanticSuggestion\`: suggested next action by reason code
|
|
9046
|
-
- Keep deterministic workflow: text search first, semantic fallback second.
|
|
9047
|
-
|
|
9048
|
-
**Typical Usage Examples**:
|
|
9049
|
-
|
|
9050
|
-
Example 1: Exact Error Message Tracing (Deterministic)
|
|
9051
|
-
<example>
|
|
9052
|
-
user: Where does the error "Connection timeout after 30s" come from?
|
|
9053
|
-
assistant: [uses Grep tool with pattern="Connection timeout after 30s"output_mode="content"]
|
|
9054
|
-
[uses Read tool to examine the error source and surrounding context]
|
|
9055
|
-
</example>
|
|
9056
|
-
|
|
9057
|
-
Example 2: Precise Function Definition Lookup (Deterministic)
|
|
9058
|
-
<example>
|
|
9059
|
-
user: Find the implementation of \`calculateCompoundInterest\` function
|
|
9060
|
-
assistant: [uses Grep tool with pattern="calculateCompoundInterest" type="ts"output_mode="content"]
|
|
9061
|
-
[uses Read tool on the matched file to read the full implementation]
|
|
9062
|
-
</example>
|
|
9063
|
-
|
|
9064
|
-
Example 3: Iterative Narrowing for Broad Patterns
|
|
9065
|
-
<example>
|
|
9066
|
-
user: Find all API route definitions
|
|
9067
|
-
assistant: [uses Grep tool with pattern="router\\.(get|post|put|delete)" type="ts"]
|
|
9068
|
-
[if too many results: adds path="src/routes" to narrow scope]
|
|
9069
|
-
[uses Read tool to inspect specific route handlers]
|
|
9070
|
-
</example>
|
|
9071
|
-
|
|
9072
|
-
Example 4: Handoff to LSP After Entry Point Found
|
|
9073
|
-
<example>
|
|
9074
|
-
user: Find all usages of the \`PaymentService\` class
|
|
9075
|
-
assistant: [uses Grep tool with pattern="class PaymentService" type="ts"output_mode="content"]
|
|
9076
|
-
[uses LSP findReferences at the class definition location to get all references]
|
|
9077
|
-
</example>
|
|
9078
|
-
|
|
9079
|
-
Example 5: Case-Insensitive Search for Config Values
|
|
9080
|
-
<example>
|
|
9081
|
-
user: Where is the database host configured?
|
|
9082
|
-
assistant: [uses Grep tool with pattern="database.*host|db_host|DB_HOST" -i: true]
|
|
9083
|
-
[uses Read tool to examine configuration files]
|
|
9084
|
-
</example>
|
|
9085
|
-
|
|
9086
|
-
Example 6: Semantic Fallback with Structured Reason
|
|
9087
|
-
<example>
|
|
9088
|
-
user: Find usages of PaymentSrvce (name might be misspelled)
|
|
9089
|
-
assistant: [uses Grep tool with pattern="PaymentSrvce" output_mode="files_with_matches"]
|
|
9090
|
-
[if no hit, retries with semantic=true]
|
|
9091
|
-
[uses semanticReason and semanticSuggestion to decide whether to broaden query or switch to LspTool]
|
|
9092
|
-
<reasoning>
|
|
9093
|
-
The assistant uses semantic fallback because:
|
|
9094
|
-
1. Text grep may miss typo-tolerant symbol matches
|
|
9095
|
-
2. LSP workspace symbols can recover intended semantic targets
|
|
9096
|
-
3. Structured reason fields make fallback outcomes explicit and actionable
|
|
9097
|
-
</reasoning>
|
|
9098
|
-
</example>
|
|
9099
|
-
`.trim();
|
|
9100
|
-
|
|
9101
|
-
// src/tools/search/GrepTool/GrepTool.tsx
|
|
9102
8712
|
import { isAbsolute as isAbsolute7, relative as relative9, resolve as resolve7 } from "path";
|
|
9103
8713
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
9104
8714
|
var inputSchema7 = z7.strictObject({
|
|
@@ -9188,7 +8798,7 @@ function parseGlobString(glob) {
|
|
|
9188
8798
|
return expanded;
|
|
9189
8799
|
}
|
|
9190
8800
|
var GrepTool = {
|
|
9191
|
-
name:
|
|
8801
|
+
name: TOOL_NAME5,
|
|
9192
8802
|
async description() {
|
|
9193
8803
|
return DESCRIPTION5;
|
|
9194
8804
|
},
|
|
@@ -9637,7 +9247,7 @@ var TASK_FORK_CONTEXT_POLICY = [
|
|
|
9637
9247
|
].join("\n");
|
|
9638
9248
|
|
|
9639
9249
|
// src/tools/network/WebSearchTool/prompt.ts
|
|
9640
|
-
var
|
|
9250
|
+
var TOOL_NAME11 = "WebSearch";
|
|
9641
9251
|
function todayISO() {
|
|
9642
9252
|
const now = /* @__PURE__ */ new Date();
|
|
9643
9253
|
const year = now.getFullYear();
|
|
@@ -9645,7 +9255,7 @@ function todayISO() {
|
|
|
9645
9255
|
const day = String(now.getDate()).padStart(2, "0");
|
|
9646
9256
|
return `${year}-${month}-${day}`;
|
|
9647
9257
|
}
|
|
9648
|
-
var
|
|
9258
|
+
var PROMPT6 = `
|
|
9649
9259
|
- Allows the assistant to search the web and use the results to inform responses
|
|
9650
9260
|
- Provides up-to-date information for current events and recent data
|
|
9651
9261
|
- Returns search result information formatted as search result blocks, including links as markdown hyperlinks
|
|
@@ -9800,7 +9410,7 @@ function resolveWebSearchProvider() {
|
|
|
9800
9410
|
};
|
|
9801
9411
|
}
|
|
9802
9412
|
var WebSearchTool = {
|
|
9803
|
-
name:
|
|
9413
|
+
name: TOOL_NAME11,
|
|
9804
9414
|
async description(input) {
|
|
9805
9415
|
const query2 = input?.query ?? "";
|
|
9806
9416
|
return `Requesting web search for: ${query2}`;
|
|
@@ -9816,7 +9426,7 @@ var WebSearchTool = {
|
|
|
9816
9426
|
return true;
|
|
9817
9427
|
},
|
|
9818
9428
|
async prompt() {
|
|
9819
|
-
return
|
|
9429
|
+
return PROMPT6;
|
|
9820
9430
|
},
|
|
9821
9431
|
renderToolUseMessage({ query: query2, allowed_domains, blocked_domains }, { verbose }) {
|
|
9822
9432
|
let summary = `"${query2}"`;
|
|
@@ -12792,7 +12402,7 @@ async function createAndStoreApiKey(accessToken) {
|
|
|
12792
12402
|
}
|
|
12793
12403
|
saveGlobalConfig(config2);
|
|
12794
12404
|
try {
|
|
12795
|
-
const { resetAnthropicClient } = await import("./llm-
|
|
12405
|
+
const { resetAnthropicClient } = await import("./llm-KXF74SNS.js");
|
|
12796
12406
|
resetAnthropicClient();
|
|
12797
12407
|
} catch {
|
|
12798
12408
|
}
|
|
@@ -17216,7 +16826,7 @@ async function refreshPluginRuntimeFromInstalls() {
|
|
|
17216
16826
|
const existingRoots = getSessionPlugins().map((p) => p.rootDir);
|
|
17217
16827
|
const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
|
|
17218
16828
|
if (dirs.length === 0) return [];
|
|
17219
|
-
const { configureSessionPlugins } = await import("./pluginRuntime-
|
|
16829
|
+
const { configureSessionPlugins } = await import("./pluginRuntime-3XWIAPQ7.js");
|
|
17220
16830
|
const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
|
|
17221
16831
|
return errors;
|
|
17222
16832
|
}
|
|
@@ -17891,7 +17501,7 @@ async function call(onDone, context) {
|
|
|
17891
17501
|
ModelConfig,
|
|
17892
17502
|
{
|
|
17893
17503
|
onClose: () => {
|
|
17894
|
-
import("./model-
|
|
17504
|
+
import("./model-7WMFC6F7.js").then(({ reloadModelManager: reloadModelManager2 }) => {
|
|
17895
17505
|
reloadModelManager2();
|
|
17896
17506
|
triggerModelConfigChange();
|
|
17897
17507
|
onDone();
|
|
@@ -27233,25 +26843,10 @@ function getListNumber(listDepth, orderedListNumber) {
|
|
|
27233
26843
|
}
|
|
27234
26844
|
}
|
|
27235
26845
|
|
|
27236
|
-
// src/tools/ai/AskExpertModelTool/
|
|
27237
|
-
var
|
|
27238
|
-
|
|
27239
|
-
|
|
27240
|
-
),
|
|
27241
|
-
expert_model: z11.string().describe(
|
|
27242
|
-
"The expert model to use (e.g., gpt-5, claude-3-5-sonnet-20241022)"
|
|
27243
|
-
),
|
|
27244
|
-
chat_session_id: z11.string().describe(
|
|
27245
|
-
'Chat session ID: use "new" for new session or existing session ID'
|
|
27246
|
-
)
|
|
27247
|
-
});
|
|
27248
|
-
var AskExpertModelTool = {
|
|
27249
|
-
name: "AskExpertModel",
|
|
27250
|
-
async description() {
|
|
27251
|
-
return "Consult external AI models for expert opinions and analysis";
|
|
27252
|
-
},
|
|
27253
|
-
async prompt() {
|
|
27254
|
-
return `Ask a question to a specific external AI model for expert analysis.
|
|
26846
|
+
// src/tools/ai/AskExpertModelTool/prompt.ts
|
|
26847
|
+
var TOOL_NAME12 = "AskExpertModel";
|
|
26848
|
+
var DESCRIPTION8 = "Consult external AI models for expert opinions and analysis";
|
|
26849
|
+
var PROMPT7 = `Ask a question to a specific external AI model for expert analysis.
|
|
27255
26850
|
|
|
27256
26851
|
This tool allows you to consult different AI models for their unique perspectives and expertise.
|
|
27257
26852
|
|
|
@@ -27262,7 +26857,7 @@ The question MUST be completely self-contained and include:
|
|
|
27262
26857
|
3. INDEPENDENT QUESTION - What exactly you want the expert to analyze/answer
|
|
27263
26858
|
|
|
27264
26859
|
The expert model receives ONLY your question content with NO access to:
|
|
27265
|
-
- Previous conversation history (unless using existing session)
|
|
26860
|
+
- Previous conversation history (unless using existing session)
|
|
27266
26861
|
- Current codebase or file context
|
|
27267
26862
|
- User's current task or project details
|
|
27268
26863
|
|
|
@@ -27273,7 +26868,7 @@ IMPORTANT: This tool is for asking questions to models, not for task execution.
|
|
|
27273
26868
|
|
|
27274
26869
|
The expert_model parameter accepts:
|
|
27275
26870
|
- OpenAI: gpt-4, gpt-5, o1-preview
|
|
27276
|
-
- Messages API: claude-3-5-sonnet, claude-3-opus
|
|
26871
|
+
- Messages API: claude-3-5-sonnet, claude-3-opus
|
|
27277
26872
|
- Others: kimi, gemini-pro, mixtral
|
|
27278
26873
|
|
|
27279
26874
|
Example of well-structured question:
|
|
@@ -27282,6 +26877,26 @@ Example of well-structured question:
|
|
|
27282
26877
|
Current situation: Users report 3-5 second delays when scrolling through the list. The component re-renders the entire list on every state change.
|
|
27283
26878
|
|
|
27284
26879
|
Question: What are the most effective React optimization techniques for handling large lists, and how should I prioritize implementing virtualization vs memoization vs other approaches?"`;
|
|
26880
|
+
|
|
26881
|
+
// src/tools/ai/AskExpertModelTool/AskExpertModelTool.tsx
|
|
26882
|
+
var inputSchema9 = z11.strictObject({
|
|
26883
|
+
question: z11.string().describe(
|
|
26884
|
+
"COMPLETE SELF-CONTAINED QUESTION: Must include full background context, relevant details, and a clear independent question. The expert model will receive ONLY this content with no access to previous conversation or external context. Structure as: 1) Background/Context 2) Specific situation/problem 3) Clear question. Ensure the expert can fully understand and respond without needing additional information."
|
|
26885
|
+
),
|
|
26886
|
+
expert_model: z11.string().describe(
|
|
26887
|
+
"The expert model to use (e.g., gpt-5, claude-3-5-sonnet-20241022)"
|
|
26888
|
+
),
|
|
26889
|
+
chat_session_id: z11.string().describe(
|
|
26890
|
+
'Chat session ID: use "new" for new session or existing session ID'
|
|
26891
|
+
)
|
|
26892
|
+
});
|
|
26893
|
+
var AskExpertModelTool = {
|
|
26894
|
+
name: TOOL_NAME12,
|
|
26895
|
+
async description() {
|
|
26896
|
+
return DESCRIPTION8;
|
|
26897
|
+
},
|
|
26898
|
+
async prompt() {
|
|
26899
|
+
return PROMPT7;
|
|
27285
26900
|
},
|
|
27286
26901
|
isReadOnly() {
|
|
27287
26902
|
return true;
|
|
@@ -27629,9 +27244,9 @@ import { z as z12 } from "zod";
|
|
|
27629
27244
|
var BLACK_CIRCLE = env.platform === "macos" ? "\u23FA" : "\u25CF";
|
|
27630
27245
|
|
|
27631
27246
|
// src/tools/interaction/AskUserQuestionTool/prompt.ts
|
|
27632
|
-
var
|
|
27633
|
-
var
|
|
27634
|
-
var
|
|
27247
|
+
var TOOL_NAME13 = "AskUserQuestion";
|
|
27248
|
+
var DESCRIPTION9 = "Asks the user multiple choice questions to gather information, clarify ambiguity, understand preferences, make decisions or offer them choices.";
|
|
27249
|
+
var PROMPT8 = `Use this tool when you need to ask the user questions during execution. This allows you to:
|
|
27635
27250
|
1. Gather user preferences or requirements
|
|
27636
27251
|
2. Clarify ambiguous instructions
|
|
27637
27252
|
3. Get decisions on implementation choices as you work
|
|
@@ -27671,9 +27286,9 @@ var inputSchema10 = z12.strictObject({
|
|
|
27671
27286
|
}
|
|
27672
27287
|
);
|
|
27673
27288
|
var AskUserQuestionTool = {
|
|
27674
|
-
name:
|
|
27289
|
+
name: TOOL_NAME13,
|
|
27675
27290
|
async description() {
|
|
27676
|
-
return
|
|
27291
|
+
return DESCRIPTION9;
|
|
27677
27292
|
},
|
|
27678
27293
|
userFacingName() {
|
|
27679
27294
|
return "";
|
|
@@ -27695,7 +27310,7 @@ var AskUserQuestionTool = {
|
|
|
27695
27310
|
return true;
|
|
27696
27311
|
},
|
|
27697
27312
|
async prompt() {
|
|
27698
|
-
return
|
|
27313
|
+
return PROMPT8;
|
|
27699
27314
|
},
|
|
27700
27315
|
renderToolUseMessage() {
|
|
27701
27316
|
return null;
|
|
@@ -27840,9 +27455,9 @@ function maybeTruncateVerboseToolOutput(text, options) {
|
|
|
27840
27455
|
}
|
|
27841
27456
|
|
|
27842
27457
|
// src/tools/system/TaskOutputTool/prompt.ts
|
|
27843
|
-
var
|
|
27844
|
-
var
|
|
27845
|
-
var
|
|
27458
|
+
var TOOL_NAME14 = "TaskOutput";
|
|
27459
|
+
var DESCRIPTION10 = "Retrieves output from a running or completed task";
|
|
27460
|
+
var PROMPT9 = `- Retrieves output from a running or completed task (background shell, agent, or remote session)
|
|
27846
27461
|
- Takes a task_id parameter identifying the task
|
|
27847
27462
|
- Returns the task output along with status information
|
|
27848
27463
|
- Use block=true (default) to wait for task completion
|
|
@@ -27968,7 +27583,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
|
|
|
27968
27583
|
if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
|
|
27969
27584
|
try {
|
|
27970
27585
|
const { isAbsolute: isAbsolute11, resolve: resolve16 } = await import("path");
|
|
27971
|
-
const { getSessionRoot: getSessionRoot2 } = await import("./state-
|
|
27586
|
+
const { getSessionRoot: getSessionRoot2 } = await import("./state-NZVNNCHH.js");
|
|
27972
27587
|
const lines = output.split("\n");
|
|
27973
27588
|
const uniqueFiles = /* @__PURE__ */ new Set();
|
|
27974
27589
|
const lspSuggestions = [];
|
|
@@ -28055,9 +27670,9 @@ async function waitForBashTaskCompletion(args) {
|
|
|
28055
27670
|
return buildTaskSummary(taskId);
|
|
28056
27671
|
}
|
|
28057
27672
|
var TaskOutputTool = {
|
|
28058
|
-
name:
|
|
27673
|
+
name: TOOL_NAME14,
|
|
28059
27674
|
async description() {
|
|
28060
|
-
return
|
|
27675
|
+
return DESCRIPTION10;
|
|
28061
27676
|
},
|
|
28062
27677
|
userFacingName() {
|
|
28063
27678
|
return "Task Output";
|
|
@@ -28076,7 +27691,7 @@ var TaskOutputTool = {
|
|
|
28076
27691
|
return false;
|
|
28077
27692
|
},
|
|
28078
27693
|
async prompt() {
|
|
28079
|
-
return
|
|
27694
|
+
return PROMPT9;
|
|
28080
27695
|
},
|
|
28081
27696
|
renderToolUseMessage(input) {
|
|
28082
27697
|
const normalized = normalizeTaskOutputInput(input);
|
|
@@ -28243,7 +27858,8 @@ import { z as z14 } from "zod";
|
|
|
28243
27858
|
import { isAbsolute as isAbsolute9, relative as relative11, resolve as resolve10 } from "path";
|
|
28244
27859
|
|
|
28245
27860
|
// src/tools/filesystem/DeleteTool/prompt.ts
|
|
28246
|
-
var
|
|
27861
|
+
var TOOL_NAME15 = "Delete";
|
|
27862
|
+
var PROMPT10 = `You can use this tool to delete files (regular file or directory), you can delete multi files in one toolcall, and you MUST make sure the files is exist before deleting.
|
|
28247
27863
|
When you need to delete file, you MUST use this tool to delete file instead of using shell.
|
|
28248
27864
|
|
|
28249
27865
|
Usage:
|
|
@@ -28314,13 +27930,13 @@ var inputSchema12 = z14.strictObject({
|
|
|
28314
27930
|
)
|
|
28315
27931
|
});
|
|
28316
27932
|
var DeleteTool = {
|
|
28317
|
-
name:
|
|
27933
|
+
name: TOOL_NAME15,
|
|
28318
27934
|
async description() {
|
|
28319
27935
|
return "Use this tool to delete files or directories. ALWAYS use this tool instead of running shell commands (like 'rm', 'del') to ensure cross-platform compatibility and safety. Supports deleting multiple paths at once.";
|
|
28320
27936
|
},
|
|
28321
27937
|
userFacingName: () => "Delete",
|
|
28322
27938
|
async prompt() {
|
|
28323
|
-
return
|
|
27939
|
+
return PROMPT10;
|
|
28324
27940
|
},
|
|
28325
27941
|
inputSchema: inputSchema12,
|
|
28326
27942
|
async isEnabled() {
|
|
@@ -28369,7 +27985,7 @@ var DeleteTool = {
|
|
|
28369
27985
|
}
|
|
28370
27986
|
if (!force) {
|
|
28371
27987
|
try {
|
|
28372
|
-
const { LspFacade: LspFacade2 } = await import("./lsp-
|
|
27988
|
+
const { LspFacade: LspFacade2 } = await import("./lsp-OKPL75YW.js");
|
|
28373
27989
|
const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
|
|
28374
27990
|
if (referenceDetail) {
|
|
28375
27991
|
failedItems.push(
|
|
@@ -28432,9 +28048,9 @@ import React51 from "react";
|
|
|
28432
28048
|
import { z as z15 } from "zod";
|
|
28433
28049
|
|
|
28434
28050
|
// src/tools/system/KillShellTool/prompt.ts
|
|
28435
|
-
var
|
|
28436
|
-
var
|
|
28437
|
-
var
|
|
28051
|
+
var TOOL_NAME16 = "KillShell";
|
|
28052
|
+
var DESCRIPTION11 = "Kill a background bash shell by ID";
|
|
28053
|
+
var PROMPT11 = `
|
|
28438
28054
|
- Kills a running background bash shell by its ID
|
|
28439
28055
|
- Takes a shell_id parameter identifying the shell to kill
|
|
28440
28056
|
- Returns a success or failure status
|
|
@@ -28447,9 +28063,9 @@ var inputSchema13 = z15.strictObject({
|
|
|
28447
28063
|
shell_id: z15.string().describe("The ID of the background shell to kill")
|
|
28448
28064
|
});
|
|
28449
28065
|
var KillShellTool = {
|
|
28450
|
-
name:
|
|
28066
|
+
name: TOOL_NAME16,
|
|
28451
28067
|
async description() {
|
|
28452
|
-
return
|
|
28068
|
+
return DESCRIPTION11;
|
|
28453
28069
|
},
|
|
28454
28070
|
userFacingName() {
|
|
28455
28071
|
return "Kill Shell";
|
|
@@ -28468,7 +28084,7 @@ var KillShellTool = {
|
|
|
28468
28084
|
return false;
|
|
28469
28085
|
},
|
|
28470
28086
|
async prompt() {
|
|
28471
|
-
return
|
|
28087
|
+
return PROMPT11;
|
|
28472
28088
|
},
|
|
28473
28089
|
renderToolUseMessage({ shell_id }) {
|
|
28474
28090
|
return `Kill shell: ${shell_id}`;
|
|
@@ -28524,14 +28140,14 @@ import { z as z16 } from "zod";
|
|
|
28524
28140
|
import { ListResourcesResultSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
28525
28141
|
|
|
28526
28142
|
// src/tools/mcp/ListMcpResourcesTool/prompt.ts
|
|
28527
|
-
var
|
|
28528
|
-
var
|
|
28143
|
+
var TOOL_NAME17 = "ListMcpResourcesTool";
|
|
28144
|
+
var DESCRIPTION12 = `Lists available resources from configured MCP servers.
|
|
28529
28145
|
Each resource object includes a 'server' field indicating which server it's from.
|
|
28530
28146
|
|
|
28531
28147
|
Usage examples:
|
|
28532
28148
|
- List all resources from all servers: \`listMcpResources\`
|
|
28533
28149
|
- List resources from a specific server: \`listMcpResources({ server: "myserver" })\``;
|
|
28534
|
-
var
|
|
28150
|
+
var PROMPT12 = `List available resources from configured MCP servers.
|
|
28535
28151
|
Each returned resource will include all standard MCP resource fields plus a 'server' field
|
|
28536
28152
|
indicating which server the resource belongs to.
|
|
28537
28153
|
|
|
@@ -28544,12 +28160,12 @@ var inputSchema14 = z16.strictObject({
|
|
|
28544
28160
|
server: z16.string().optional().describe("Optional server name to filter resources by")
|
|
28545
28161
|
});
|
|
28546
28162
|
var ListMcpResourcesTool = {
|
|
28547
|
-
name:
|
|
28163
|
+
name: TOOL_NAME17,
|
|
28548
28164
|
async description() {
|
|
28549
|
-
return
|
|
28165
|
+
return DESCRIPTION12;
|
|
28550
28166
|
},
|
|
28551
28167
|
async prompt() {
|
|
28552
|
-
return
|
|
28168
|
+
return PROMPT12;
|
|
28553
28169
|
},
|
|
28554
28170
|
inputSchema: inputSchema14,
|
|
28555
28171
|
userFacingName() {
|
|
@@ -28641,138 +28257,6 @@ import { Box as Box42, Text as Text46 } from "ink";
|
|
|
28641
28257
|
import { relative as relative12, resolve as resolve11 } from "path";
|
|
28642
28258
|
import React53 from "react";
|
|
28643
28259
|
import { z as z17 } from "zod";
|
|
28644
|
-
|
|
28645
|
-
// src/tools/search/LspTool/prompt.ts
|
|
28646
|
-
var TOOL_NAME_FOR_PROMPT8 = "LSP";
|
|
28647
|
-
var PROMPT11 = `Interact with Language Server Protocol (LSP) servers to get code intelligence features.Supports all languages.
|
|
28648
|
-
|
|
28649
|
-
## Capabilities & Scenarios
|
|
28650
|
-
This tool acts as your "Code Analyst". Use it to understand the codebase semantically, rather than just matching text.
|
|
28651
|
-
|
|
28652
|
-
### 1. Tracing Logic (Where does this go?)
|
|
28653
|
-
- **Scenario**: You see a function call \`calculateTax(amount)\` and need to know its formula.
|
|
28654
|
-
- **Action**: Use \`goToDefinition\` on the function name.
|
|
28655
|
-
- **Why**: It jumps directly to the implementation, even if it's imported from another file.
|
|
28656
|
-
|
|
28657
|
-
### 2. Impact Analysis (What uses this?)
|
|
28658
|
-
- **Scenario**: You are planning to rename or modify the \`User\` class.
|
|
28659
|
-
- **Action**: Use \`findReferences\` at the symbol position (line + character) in the file where \`User\` is declared or used.
|
|
28660
|
-
- **Why**: It lists every file and line where \`User\` is referenced, ensuring you don't break dependents.
|
|
28661
|
-
|
|
28662
|
-
### 3. Exploring New Files (What's in here?)
|
|
28663
|
-
- **Scenario**: You just opened a large file \`utils.ts\` and want a quick overview.
|
|
28664
|
-
- **Action**: Use \`documentSymbol\`.
|
|
28665
|
-
- **Why**: It returns a structured outline (Classes, Functions, Variables) using LspFacade policy: LSP-first for accuracy, Tree-Sitter fallback for speed when needed.
|
|
28666
|
-
|
|
28667
|
-
### 4. Interface Implementation (Who implements this?)
|
|
28668
|
-
- **Scenario**: You see an interface \`IStorage\` and want to find the concrete class (e.g., \`S3Storage\`).
|
|
28669
|
-
- **Action**: Use \`goToImplementation\`.
|
|
28670
|
-
- **Why**: Grep might just find the import; LSP finds the actual code that implements the interface.
|
|
28671
|
-
|
|
28672
|
-
### 5. Scope Analysis (What is visible here?)
|
|
28673
|
-
- **Scenario**: You are debugging a closure or nested function and want to know which variables are captured or locally defined.
|
|
28674
|
-
- **Action**: Use \`getScope\`.
|
|
28675
|
-
- **Why**: It returns the local variables and closure captures at the current position. Essential for debugging Python closures or JavaScript lexical scopes.
|
|
28676
|
-
|
|
28677
|
-
### 6. Real-time Diagnostics (Is this correct?)
|
|
28678
|
-
- **Scenario**: You just edited a file and want to verify if you introduced any syntax errors.
|
|
28679
|
-
- **Action**: Use \`diagnostics\` with \`waitForDiagnostics: true\`.
|
|
28680
|
-
- **Why**: It waits for the language server to re-analyze the file and returns fresh errors/warnings. This is your "Self-Correction" mechanism.
|
|
28681
|
-
|
|
28682
|
-
### 7. Workspace Symbol Search (Where is this symbol?)
|
|
28683
|
-
- **Scenario**: You need to find a class or function across the entire project.
|
|
28684
|
-
- **Action**: Use \`workspaceSymbol\` with a query string and a scoped filePath (module or directory).
|
|
28685
|
-
- **Why**: It searches across all files in the scope. **Important**: Must provide a scoped path to avoid unbounded full-repo queries.
|
|
28686
|
-
|
|
28687
|
-
## Supported Operations
|
|
28688
|
-
|
|
28689
|
-
### Location-Based Operations (require line + character)
|
|
28690
|
-
These 8 operations require precise symbol position:
|
|
28691
|
-
- \`goToDefinition\`: Find where a symbol is defined
|
|
28692
|
-
- \`findReferences\`: Find all references to a symbol
|
|
28693
|
-
- \`hover\`: Get hover information (documentation, type info) for a symbol
|
|
28694
|
-
- \`goToImplementation\`: Find implementations of an interface or abstract method
|
|
28695
|
-
- \`prepareCallHierarchy\`: Get call hierarchy item at a position (functions/methods)
|
|
28696
|
-
- \`incomingCalls\`: Find all functions/methods that call the function at a position
|
|
28697
|
-
- \`outgoingCalls\`: Find all functions/methods called by the function at a position
|
|
28698
|
-
- \`getScope\`: Get local variables and closure captures at a position
|
|
28699
|
-
|
|
28700
|
-
### Document-Level Operations (no position required)
|
|
28701
|
-
- \`documentSymbol\`: Get all symbols (functions, classes, variables) in a document
|
|
28702
|
-
- \`diagnostics\`: Get validation errors and warnings for a file (supports waiting for fresh results)
|
|
28703
|
-
|
|
28704
|
-
### Workspace-Level Operations
|
|
28705
|
-
- \`workspaceSymbol\`: Search for symbols across the entire workspace (requires query + scoped filePath)
|
|
28706
|
-
|
|
28707
|
-
## Parameters
|
|
28708
|
-
|
|
28709
|
-
All operations require:
|
|
28710
|
-
- \`filePath\`: The file or directory to operate on
|
|
28711
|
-
|
|
28712
|
-
Location-based operations require:
|
|
28713
|
-
- \`line\`: The line number (1-based, as shown in editors)
|
|
28714
|
-
- \`character\`: The character offset (1-based, as shown in editors)
|
|
28715
|
-
|
|
28716
|
-
\`workspaceSymbol\` requires:
|
|
28717
|
-
- \`query\`: The symbol name or keyword to search for
|
|
28718
|
-
|
|
28719
|
-
Optional:
|
|
28720
|
-
- \`waitForDiagnostics\`: If true, wait for fresh diagnostics (used with "diagnostics" operation)
|
|
28721
|
-
- \`timeout\`: Timeout in milliseconds for waiting operations (default: 5000)
|
|
28722
|
-
|
|
28723
|
-
## Intelligent Position Handling
|
|
28724
|
-
|
|
28725
|
-
**Do not pass a symbol name.** LSPTool works on positions, not names. Use Read to locate the symbol and derive line + character first.
|
|
28726
|
-
|
|
28727
|
-
### Auto-Adjustment Mechanism
|
|
28728
|
-
If the specified position is not on a valid symbol, the tool automatically searches for the nearest valid token:
|
|
28729
|
-
- **Search scope**: Current line, then previous line, then next line
|
|
28730
|
-
- **Priority**: Current line tokens are preferred (lower score)
|
|
28731
|
-
- **Skipped tokens**: Keywords (function, class, if, for, return, etc.) and operators (=, =>, +, -, &&, ||, etc.) are automatically skipped
|
|
28732
|
-
- **If no valid token found**: Returns an error message
|
|
28733
|
-
|
|
28734
|
-
### Best Practice for Position
|
|
28735
|
-
1. Use Read to open the file and locate the symbol
|
|
28736
|
-
2. Provide accurate 1-based line and character offset
|
|
28737
|
-
3. Position should be on the symbol name itself, not on keywords/operators
|
|
28738
|
-
4. If unsure, position at the start of the symbol name
|
|
28739
|
-
|
|
28740
|
-
## Workflow & Scope Guidelines
|
|
28741
|
-
- **Priority order**: documentSymbol \u2192 hotspot detection \u2192 Read \u2192 LSP (ensure line + character)
|
|
28742
|
-
- **workspaceSymbol**: Must provide scoped filePath (module or directory), avoid unbounded full-repo queries
|
|
28743
|
-
- **documentSymbol**: Uses LspFacade policy (LSP-first for accuracy, Tree-Sitter fallback for speed)
|
|
28744
|
-
|
|
28745
|
-
## Typical Usage Examples
|
|
28746
|
-
### Example 1: Find Symbol Then Read Precise Block
|
|
28747
|
-
<example>
|
|
28748
|
-
user: Locate JWT validation implementation quickly
|
|
28749
|
-
assistant: [uses LSP workspaceSymbol with query="jwt validate" and scoped filePath]
|
|
28750
|
-
[uses Read on the discovered file and then LSP documentSymbol/definition as needed]
|
|
28751
|
-
<reasoning>
|
|
28752
|
-
The assistant starts semantically because:
|
|
28753
|
-
1. User asks for implementation location, not broad text grep
|
|
28754
|
-
2. workspaceSymbol narrows candidate files efficiently
|
|
28755
|
-
3. Read is then used for exact code extraction once target is known
|
|
28756
|
-
</reasoning>
|
|
28757
|
-
</example>
|
|
28758
|
-
|
|
28759
|
-
### Example 2: Diagnostics-First Debugging
|
|
28760
|
-
<example>
|
|
28761
|
-
user: Build failed in api package, tell me real code errors
|
|
28762
|
-
assistant: [uses LSP diagnostics with waitForDiagnostics=true on scoped filePath]
|
|
28763
|
-
[uses goToDefinition/findReferences for follow-up impact tracing]
|
|
28764
|
-
<reasoning>
|
|
28765
|
-
The assistant prioritizes diagnostics because:
|
|
28766
|
-
1. Diagnostics provide direct semantic errors from language tooling
|
|
28767
|
-
2. Scoped path avoids unbounded workspace queries
|
|
28768
|
-
3. Follow-up LSP ops can trace root-cause dependencies
|
|
28769
|
-
</reasoning>
|
|
28770
|
-
</example>
|
|
28771
|
-
|
|
28772
|
-
Note: LSP servers are automatically managed and installed for most languages. For system-level languages (like C++, Java), ensure the corresponding tools (clangd, jdtls) are in your PATH.`;
|
|
28773
|
-
var DESCRIPTION10 = PROMPT11;
|
|
28774
|
-
|
|
28775
|
-
// src/tools/search/LspTool/LspTool.tsx
|
|
28776
28260
|
var inputSchema15 = z17.strictObject({
|
|
28777
28261
|
operation: z17.enum([
|
|
28778
28262
|
"goToDefinition",
|
|
@@ -29021,12 +28505,12 @@ function summarizeToolResult(operation, resultCount, fileCount) {
|
|
|
29021
28505
|
return /* @__PURE__ */ React53.createElement(Text46, null, "Found ", /* @__PURE__ */ React53.createElement(Text46, { bold: true }, resultCount), " ", noun, fileCount > 1 ? /* @__PURE__ */ React53.createElement(React53.Fragment, null, " ", "across ", /* @__PURE__ */ React53.createElement(Text46, { bold: true }, fileCount), " files") : null);
|
|
29022
28506
|
}
|
|
29023
28507
|
var LspTool = {
|
|
29024
|
-
name:
|
|
28508
|
+
name: TOOL_NAME6,
|
|
29025
28509
|
async description() {
|
|
29026
|
-
return
|
|
28510
|
+
return DESCRIPTION6;
|
|
29027
28511
|
},
|
|
29028
28512
|
async prompt() {
|
|
29029
|
-
return
|
|
28513
|
+
return PROMPT3;
|
|
29030
28514
|
},
|
|
29031
28515
|
inputSchema: inputSchema15,
|
|
29032
28516
|
userFacingName() {
|
|
@@ -29238,14 +28722,14 @@ import { z as z18 } from "zod";
|
|
|
29238
28722
|
import { ReadResourceResultSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
29239
28723
|
|
|
29240
28724
|
// src/tools/mcp/ReadMcpResourceTool/prompt.ts
|
|
29241
|
-
var
|
|
29242
|
-
var
|
|
28725
|
+
var TOOL_NAME18 = "ReadMcpResourceTool";
|
|
28726
|
+
var DESCRIPTION13 = `Reads a specific resource from an MCP server.
|
|
29243
28727
|
- server: The name of the MCP server to read from
|
|
29244
28728
|
- uri: The URI of the resource to read
|
|
29245
28729
|
|
|
29246
28730
|
Usage examples:
|
|
29247
28731
|
- Read a resource from a server: \`readMcpResource({ server: "myserver", uri: "my-resource-uri" })\``;
|
|
29248
|
-
var
|
|
28732
|
+
var PROMPT13 = `Reads a specific resource from an MCP server, identified by server name and resource URI.
|
|
29249
28733
|
|
|
29250
28734
|
Parameters:
|
|
29251
28735
|
- server (required): The name of the MCP server from which to read the resource
|
|
@@ -29257,12 +28741,12 @@ var inputSchema16 = z18.strictObject({
|
|
|
29257
28741
|
uri: z18.string().describe("The resource URI to read")
|
|
29258
28742
|
});
|
|
29259
28743
|
var ReadMcpResourceTool = {
|
|
29260
|
-
name:
|
|
28744
|
+
name: TOOL_NAME18,
|
|
29261
28745
|
async description() {
|
|
29262
|
-
return
|
|
28746
|
+
return DESCRIPTION13;
|
|
29263
28747
|
},
|
|
29264
28748
|
async prompt() {
|
|
29265
|
-
return
|
|
28749
|
+
return PROMPT13;
|
|
29266
28750
|
},
|
|
29267
28751
|
inputSchema: inputSchema16,
|
|
29268
28752
|
userFacingName() {
|
|
@@ -29367,7 +28851,7 @@ import { z as z19 } from "zod";
|
|
|
29367
28851
|
import * as React55 from "react";
|
|
29368
28852
|
|
|
29369
28853
|
// src/tools/ai/SkillTool/prompt.ts
|
|
29370
|
-
var
|
|
28854
|
+
var TOOL_NAME19 = "Skill";
|
|
29371
28855
|
|
|
29372
28856
|
// src/tools/ai/SkillTool/SkillTool.tsx
|
|
29373
28857
|
var inputSchema17 = z19.strictObject({
|
|
@@ -29386,7 +28870,7 @@ function normalizeCommandModelName(model) {
|
|
|
29386
28870
|
return trimmed;
|
|
29387
28871
|
}
|
|
29388
28872
|
var SkillTool = {
|
|
29389
|
-
name:
|
|
28873
|
+
name: TOOL_NAME19,
|
|
29390
28874
|
async description({ skill }) {
|
|
29391
28875
|
return `Execute skill: ${skill}`;
|
|
29392
28876
|
},
|
|
@@ -29488,7 +28972,7 @@ ${availableSkills}${truncatedNotice}
|
|
|
29488
28972
|
if (cmd.disableModelInvocation) {
|
|
29489
28973
|
return {
|
|
29490
28974
|
result: false,
|
|
29491
|
-
message: `Skill ${skillName} cannot be used with ${
|
|
28975
|
+
message: `Skill ${skillName} cannot be used with ${TOOL_NAME19} tool due to disable-model-invocation`,
|
|
29492
28976
|
errorCode: 4
|
|
29493
28977
|
};
|
|
29494
28978
|
}
|
|
@@ -29511,7 +28995,7 @@ ${availableSkills}${truncatedNotice}
|
|
|
29511
28995
|
}
|
|
29512
28996
|
if (cmd.disableModelInvocation) {
|
|
29513
28997
|
throw new Error(
|
|
29514
|
-
`Skill ${skillName} cannot be used with ${
|
|
28998
|
+
`Skill ${skillName} cannot be used with ${TOOL_NAME19} tool due to disable-model-invocation`
|
|
29515
28999
|
);
|
|
29516
29000
|
}
|
|
29517
29001
|
if (cmd.type !== "prompt") {
|
|
@@ -29758,9 +29242,6 @@ assistant: "I'm going to use the Task tool to launch the with the greeting-respo
|
|
|
29758
29242
|
</example>`;
|
|
29759
29243
|
}
|
|
29760
29244
|
|
|
29761
|
-
// src/tools/agent/TaskTool/constants.ts
|
|
29762
|
-
var TOOL_NAME3 = "Task";
|
|
29763
|
-
|
|
29764
29245
|
// src/tools/agent/TaskTool/TaskTool.tsx
|
|
29765
29246
|
var inputSchema18 = z20.object({
|
|
29766
29247
|
description: z20.string().describe("A short (3-5 word) description of the task"),
|
|
@@ -29921,7 +29402,7 @@ function buildForkContextForAgent(options) {
|
|
|
29921
29402
|
};
|
|
29922
29403
|
}
|
|
29923
29404
|
var TaskTool = {
|
|
29924
|
-
name:
|
|
29405
|
+
name: TOOL_NAME7,
|
|
29925
29406
|
inputSchema: inputSchema18,
|
|
29926
29407
|
async description() {
|
|
29927
29408
|
return "Delegate complex, multi-step work to specialized agents";
|
|
@@ -30387,8 +29868,9 @@ function createTaskToolError(params) {
|
|
|
30387
29868
|
}
|
|
30388
29869
|
|
|
30389
29870
|
// src/tools/interaction/TaskCreateTool/prompt.ts
|
|
30390
|
-
var
|
|
30391
|
-
var
|
|
29871
|
+
var TOOL_NAME20 = "TaskCreate";
|
|
29872
|
+
var DESCRIPTION14 = "Plan and create tasks for complex multi-step work";
|
|
29873
|
+
var PROMPT14 = `Use this tool to create a new task in the current task list. It is the entry point for planning multi-step work.
|
|
30392
29874
|
|
|
30393
29875
|
## When to Use This Tool
|
|
30394
29876
|
|
|
@@ -30749,13 +30231,13 @@ var inputSchema19 = z22.strictObject({
|
|
|
30749
30231
|
metadata: metadataSchema.optional()
|
|
30750
30232
|
});
|
|
30751
30233
|
var TaskCreateTool = {
|
|
30752
|
-
name:
|
|
30753
|
-
cachedDescription:
|
|
30234
|
+
name: TOOL_NAME20,
|
|
30235
|
+
cachedDescription: DESCRIPTION14,
|
|
30754
30236
|
async description() {
|
|
30755
|
-
return
|
|
30237
|
+
return DESCRIPTION14;
|
|
30756
30238
|
},
|
|
30757
30239
|
async prompt() {
|
|
30758
|
-
return
|
|
30240
|
+
return PROMPT14;
|
|
30759
30241
|
},
|
|
30760
30242
|
inputSchema: inputSchema19,
|
|
30761
30243
|
userFacingName() {
|
|
@@ -30825,8 +30307,9 @@ var TaskCreateTool = {
|
|
|
30825
30307
|
import { z as z23 } from "zod";
|
|
30826
30308
|
|
|
30827
30309
|
// src/tools/interaction/TaskGetTool/prompt.ts
|
|
30828
|
-
var
|
|
30829
|
-
var
|
|
30310
|
+
var TOOL_NAME21 = "TaskGet";
|
|
30311
|
+
var DESCRIPTION15 = "Review planned task details";
|
|
30312
|
+
var PROMPT15 = `Use this tool to fetch a single task by id.
|
|
30830
30313
|
|
|
30831
30314
|
## When to Use This Tool
|
|
30832
30315
|
Use this tool proactively in these scenarios:
|
|
@@ -30862,13 +30345,13 @@ var inputSchema20 = z23.strictObject({
|
|
|
30862
30345
|
taskId: z23.string().min(1)
|
|
30863
30346
|
});
|
|
30864
30347
|
var TaskGetTool = {
|
|
30865
|
-
name:
|
|
30866
|
-
cachedDescription:
|
|
30348
|
+
name: TOOL_NAME21,
|
|
30349
|
+
cachedDescription: DESCRIPTION15,
|
|
30867
30350
|
async description() {
|
|
30868
|
-
return
|
|
30351
|
+
return DESCRIPTION15;
|
|
30869
30352
|
},
|
|
30870
30353
|
async prompt() {
|
|
30871
|
-
return
|
|
30354
|
+
return PROMPT15;
|
|
30872
30355
|
},
|
|
30873
30356
|
inputSchema: inputSchema20,
|
|
30874
30357
|
userFacingName() {
|
|
@@ -30924,8 +30407,9 @@ var TaskGetTool = {
|
|
|
30924
30407
|
import { z as z24 } from "zod";
|
|
30925
30408
|
|
|
30926
30409
|
// src/tools/interaction/TaskListTool/prompt.ts
|
|
30927
|
-
var
|
|
30928
|
-
var
|
|
30410
|
+
var TOOL_NAME22 = "TaskList";
|
|
30411
|
+
var DESCRIPTION16 = "Review planned tasks, readiness, and blockers";
|
|
30412
|
+
var PROMPT16 = `Use this tool to list tasks and understand readiness. It returns ready and blocked groupings to help prioritize work. TaskList only returns id/subject/status/blockedBy for summaries; use TaskGet for details.
|
|
30929
30413
|
|
|
30930
30414
|
## When to Use This Tool
|
|
30931
30415
|
Use this tool proactively in these scenarios:
|
|
@@ -31005,13 +30489,13 @@ var getActiveBlockers = (task, tasksById) => {
|
|
|
31005
30489
|
return active2;
|
|
31006
30490
|
};
|
|
31007
30491
|
var TaskListTool = {
|
|
31008
|
-
name:
|
|
31009
|
-
cachedDescription:
|
|
30492
|
+
name: TOOL_NAME22,
|
|
30493
|
+
cachedDescription: DESCRIPTION16,
|
|
31010
30494
|
async description() {
|
|
31011
|
-
return
|
|
30495
|
+
return DESCRIPTION16;
|
|
31012
30496
|
},
|
|
31013
30497
|
async prompt() {
|
|
31014
|
-
return
|
|
30498
|
+
return PROMPT16;
|
|
31015
30499
|
},
|
|
31016
30500
|
inputSchema: inputSchema21,
|
|
31017
30501
|
userFacingName() {
|
|
@@ -31077,8 +30561,9 @@ var TaskListTool = {
|
|
|
31077
30561
|
import { z as z25 } from "zod";
|
|
31078
30562
|
|
|
31079
30563
|
// src/tools/interaction/TaskUpdateTool/prompt.ts
|
|
31080
|
-
var
|
|
31081
|
-
var
|
|
30564
|
+
var TOOL_NAME23 = "TaskUpdate";
|
|
30565
|
+
var DESCRIPTION17 = "Manage task progress, status, and dependencies";
|
|
30566
|
+
var PROMPT17 = `Use this tool to update an existing task. It is the primary way to track progress and adjust task details.
|
|
31082
30567
|
|
|
31083
30568
|
## When to Use This Tool
|
|
31084
30569
|
Use this tool proactively in these scenarios:
|
|
@@ -31529,13 +31014,13 @@ var inputSchema22 = z25.strictObject({
|
|
|
31529
31014
|
addBlocks: z25.array(z25.string()).optional()
|
|
31530
31015
|
});
|
|
31531
31016
|
var TaskUpdateTool = {
|
|
31532
|
-
name:
|
|
31533
|
-
cachedDescription:
|
|
31017
|
+
name: TOOL_NAME23,
|
|
31018
|
+
cachedDescription: DESCRIPTION17,
|
|
31534
31019
|
async description() {
|
|
31535
|
-
return
|
|
31020
|
+
return DESCRIPTION17;
|
|
31536
31021
|
},
|
|
31537
31022
|
async prompt() {
|
|
31538
|
-
return
|
|
31023
|
+
return PROMPT17;
|
|
31539
31024
|
},
|
|
31540
31025
|
inputSchema: inputSchema22,
|
|
31541
31026
|
userFacingName() {
|
|
@@ -31804,8 +31289,9 @@ import * as React57 from "react";
|
|
|
31804
31289
|
import { z as z26 } from "zod";
|
|
31805
31290
|
|
|
31806
31291
|
// src/tools/memory/MemoryReadTool/prompt.ts
|
|
31807
|
-
var
|
|
31808
|
-
var
|
|
31292
|
+
var TOOL_NAME24 = "MemoryRead";
|
|
31293
|
+
var DESCRIPTION18 = "Read agent memory files from the local filesystem.";
|
|
31294
|
+
var PROMPT18 = `Reads agent memory files from the local filesystem.
|
|
31809
31295
|
|
|
31810
31296
|
Usage:
|
|
31811
31297
|
- The file_path parameter must be a path relative to the agent's memory directory
|
|
@@ -31828,12 +31314,12 @@ var inputSchema23 = z26.strictObject({
|
|
|
31828
31314
|
file_path: z26.string().optional().describe("Optional path to a specific memory file to read")
|
|
31829
31315
|
});
|
|
31830
31316
|
var MemoryReadTool = {
|
|
31831
|
-
name:
|
|
31317
|
+
name: TOOL_NAME24,
|
|
31832
31318
|
async description() {
|
|
31833
|
-
return
|
|
31319
|
+
return DESCRIPTION18;
|
|
31834
31320
|
},
|
|
31835
31321
|
async prompt() {
|
|
31836
|
-
return
|
|
31322
|
+
return PROMPT18;
|
|
31837
31323
|
},
|
|
31838
31324
|
inputSchema: inputSchema23,
|
|
31839
31325
|
userFacingName() {
|
|
@@ -31981,8 +31467,9 @@ function writeMemoryFile(input, deps) {
|
|
|
31981
31467
|
}
|
|
31982
31468
|
|
|
31983
31469
|
// src/tools/memory/MemoryWriteTool/prompt.ts
|
|
31984
|
-
var
|
|
31985
|
-
var
|
|
31470
|
+
var TOOL_NAME25 = "MemoryWrite";
|
|
31471
|
+
var DESCRIPTION19 = "Write agent memory files to the local filesystem.";
|
|
31472
|
+
var PROMPT19 = `Write agent memory files to the local filesystem.
|
|
31986
31473
|
|
|
31987
31474
|
Usage:
|
|
31988
31475
|
- The file_path parameter is required and specifies the memory file to write
|
|
@@ -32015,12 +31502,12 @@ var inputSchema24 = z27.strictObject({
|
|
|
32015
31502
|
mode: z27.enum(["append", "replace"]).optional().describe("Write mode: append adds to existing content, replace overwrites")
|
|
32016
31503
|
});
|
|
32017
31504
|
var MemoryWriteTool = {
|
|
32018
|
-
name:
|
|
31505
|
+
name: TOOL_NAME25,
|
|
32019
31506
|
async description() {
|
|
32020
|
-
return
|
|
31507
|
+
return DESCRIPTION19;
|
|
32021
31508
|
},
|
|
32022
31509
|
async prompt() {
|
|
32023
|
-
return
|
|
31510
|
+
return PROMPT19;
|
|
32024
31511
|
},
|
|
32025
31512
|
inputSchema: inputSchema24,
|
|
32026
31513
|
userFacingName() {
|
|
@@ -38810,7 +38297,7 @@ function useStatusLine() {
|
|
|
38810
38297
|
// src/ui/components/PromptInput.tsx
|
|
38811
38298
|
async function interpretHashCommand(input) {
|
|
38812
38299
|
try {
|
|
38813
|
-
const { queryQuick: queryQuick2 } = await import("./llm-
|
|
38300
|
+
const { queryQuick: queryQuick2 } = await import("./llm-KXF74SNS.js");
|
|
38814
38301
|
const systemPrompt = [
|
|
38815
38302
|
"You're helping the user structure notes that will be added to their PYB.md file.",
|
|
38816
38303
|
"Format the user's input into a well-structured note that will be useful for later reference.",
|
|
@@ -39123,7 +38610,7 @@ function PromptInput({
|
|
|
39123
38610
|
if (messages2.length) {
|
|
39124
38611
|
if (mode === "bash") {
|
|
39125
38612
|
onQuery(messages2, newAbortController).then(async () => {
|
|
39126
|
-
const { getCwd: getCwd2 } = await import("./state-
|
|
38613
|
+
const { getCwd: getCwd2 } = await import("./state-NZVNNCHH.js");
|
|
39127
38614
|
setCurrentPwd(getCwd2());
|
|
39128
38615
|
});
|
|
39129
38616
|
} else {
|
|
@@ -40753,7 +40240,7 @@ import { homedir as homedir8 } from "os";
|
|
|
40753
40240
|
// src/commands/agents/generation.ts
|
|
40754
40241
|
import { randomUUID as randomUUID9 } from "crypto";
|
|
40755
40242
|
async function generateAgentWithClaude(prompt) {
|
|
40756
|
-
const { queryModel } = await import("./llm-
|
|
40243
|
+
const { queryModel } = await import("./llm-KXF74SNS.js");
|
|
40757
40244
|
const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
|
|
40758
40245
|
|
|
40759
40246
|
Return your response as a JSON object with exactly these fields:
|
|
@@ -42433,7 +41920,7 @@ function getCommand(commandName, commands) {
|
|
|
42433
41920
|
}
|
|
42434
41921
|
|
|
42435
41922
|
// src/tools/interaction/SlashCommandTool/prompt.ts
|
|
42436
|
-
var
|
|
41923
|
+
var TOOL_NAME26 = "SlashCommand";
|
|
42437
41924
|
|
|
42438
41925
|
// src/tools/interaction/SlashCommandTool/SlashCommandTool.tsx
|
|
42439
41926
|
var inputSchema26 = z28.strictObject({
|
|
@@ -42455,7 +41942,7 @@ function getCharBudget() {
|
|
|
42455
41942
|
return Number.isFinite(raw) && raw > 0 ? raw : 15e3;
|
|
42456
41943
|
}
|
|
42457
41944
|
var SlashCommandTool = {
|
|
42458
|
-
name:
|
|
41945
|
+
name: TOOL_NAME26,
|
|
42459
41946
|
async description({ command: command4 }) {
|
|
42460
41947
|
return `Execute slash command: ${command4}`;
|
|
42461
41948
|
},
|
|
@@ -42551,14 +42038,14 @@ ${availableLines}${truncatedNotice}
|
|
|
42551
42038
|
if (cmd.disableModelInvocation) {
|
|
42552
42039
|
return {
|
|
42553
42040
|
result: false,
|
|
42554
|
-
message: `Slash command ${parsed.commandName} cannot be used with ${
|
|
42041
|
+
message: `Slash command ${parsed.commandName} cannot be used with ${TOOL_NAME26} tool due to disable-model-invocation`,
|
|
42555
42042
|
errorCode: 4
|
|
42556
42043
|
};
|
|
42557
42044
|
}
|
|
42558
42045
|
if (cmd.disableNonInteractive) {
|
|
42559
42046
|
return {
|
|
42560
42047
|
result: false,
|
|
42561
|
-
message: `Slash command ${parsed.commandName} cannot be used with ${
|
|
42048
|
+
message: `Slash command ${parsed.commandName} cannot be used with ${TOOL_NAME26} tool because it is non-interactive`,
|
|
42562
42049
|
errorCode: 6
|
|
42563
42050
|
};
|
|
42564
42051
|
}
|
|
@@ -42583,12 +42070,12 @@ ${availableLines}${truncatedNotice}
|
|
|
42583
42070
|
}
|
|
42584
42071
|
if (cmd.disableModelInvocation) {
|
|
42585
42072
|
throw new Error(
|
|
42586
|
-
`Slash command ${parsed.commandName} cannot be used with ${
|
|
42073
|
+
`Slash command ${parsed.commandName} cannot be used with ${TOOL_NAME26} tool due to disable-model-invocation`
|
|
42587
42074
|
);
|
|
42588
42075
|
}
|
|
42589
42076
|
if (cmd.disableNonInteractive) {
|
|
42590
42077
|
throw new Error(
|
|
42591
|
-
`Slash command ${parsed.commandName} cannot be used with ${
|
|
42078
|
+
`Slash command ${parsed.commandName} cannot be used with ${TOOL_NAME26} tool because it is non-interactive`
|
|
42592
42079
|
);
|
|
42593
42080
|
}
|
|
42594
42081
|
if (cmd.type !== "prompt") {
|
|
@@ -43621,7 +43108,7 @@ Output: Create directory 'foo'`
|
|
|
43621
43108
|
)
|
|
43622
43109
|
});
|
|
43623
43110
|
var BashTool = {
|
|
43624
|
-
name:
|
|
43111
|
+
name: TOOL_NAME8,
|
|
43625
43112
|
cachedDescription: "Run shell command",
|
|
43626
43113
|
async description(input) {
|
|
43627
43114
|
return input?.description || await getBashToolPrompt();
|
|
@@ -44273,12 +43760,12 @@ Task records use subject as the single primary name, with activeForm provided by
|
|
|
44273
43760
|
It is critical that you mark tasks as completed as soon as you are done with a task. Do not batch up multiple tasks before marking them as completed.
|
|
44274
43761
|
|
|
44275
43762
|
# Cognitive Safety & Sensing
|
|
44276
|
-
1. **Modification Check**: Before editing, you MUST verify if the change is already present (e.g. use \`
|
|
43763
|
+
1. **Modification Check**: Before editing, you MUST verify if the change is already present (e.g. use \`Grep\` or \`Read\`). Do not rely on memory from previous turns.
|
|
44277
43764
|
2. **Precise Targeting**: For code injection, prefer using LSP to find exact function boundaries, or Read the file to get unique context.
|
|
44278
|
-
3. **Artifact Verification**: After completing a complex task, verify the artifacts (e.g. check if files exist using \`
|
|
44279
|
-
4. **LSP Instinct**: Before modifying any code, you MUST first build structure context (structure tree \u2192 hotspot \u2192 Read). Use \`LSP documentSymbol\` or \`LSP goToDefinition\` only when you have a precise position and need to confirm exact range. Do NOT rely on line numbers from \`
|
|
43765
|
+
3. **Artifact Verification**: After completing a complex task, verify the artifacts (e.g. check if files exist using \`Glob\`).
|
|
43766
|
+
4. **LSP Instinct**: Before modifying any code, you MUST first build structure context (structure tree \u2192 hotspot \u2192 Read). Use \`LSP documentSymbol\` or \`LSP goToDefinition\` only when you have a precise position and need to confirm exact range. Do NOT rely on line numbers from \`Read\` alone as they may be outdated.
|
|
44280
43767
|
5. **Atomic Verification**: When editing code, especially in critical or complex files, you should strongly consider setting \`verify: true\` in the \`FileEditTool\`. This enables the tool to automatically detect syntax errors and ROLLBACK changes if they are invalid, preventing you from breaking the build.
|
|
44281
|
-
6. **Semantic Search**: When searching for code concepts (e.g. "AuthLogic", "UserHandler") rather than exact filenames, prefer using \`
|
|
43768
|
+
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.
|
|
44282
43769
|
7. **Reference Guard**: Be aware that deleting files might be blocked if they are referenced elsewhere. If the \`DeleteTool\` blocks you, check the references it reports. Only use \`force: true\` if you are refactoring and intentionally removing those references.
|
|
44283
43770
|
|
|
44284
43771
|
# Memory
|