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.
Files changed (154) hide show
  1. package/dist/REPL-5XUDCAF4.js +53 -0
  2. package/dist/{acp-KELESOXO.js → acp-VXAHCMQ4.js} +30 -30
  3. package/dist/{agentsValidate-J7PHU22S.js → agentsValidate-PFVCK6ZC.js} +7 -7
  4. package/dist/{ask-ZICPHRGR.js → ask-7RQ2G5S3.js} +30 -30
  5. package/dist/{autoUpdater-6KGZQTW5.js → autoUpdater-TDN3ABMG.js} +3 -3
  6. package/dist/{chunk-OTMVCWZ2.js → chunk-3IPEAISZ.js} +3 -3
  7. package/dist/{chunk-5OJHTSFR.js → chunk-5ITEAEJC.js} +2 -1
  8. package/dist/chunk-5ITEAEJC.js.map +7 -0
  9. package/dist/{chunk-Q4WANADY.js → chunk-5P4A6TN2.js} +2 -2
  10. package/dist/{chunk-XIAHHC4E.js → chunk-7MR3XX5X.js} +2 -2
  11. package/dist/{chunk-MWL7Q5HG.js → chunk-A45A3UUU.js} +1 -1
  12. package/dist/{chunk-57BVHCH3.js → chunk-BQCQ3DEN.js} +2 -2
  13. package/dist/{chunk-5OBGGU2O.js → chunk-C7BUAPKP.js} +3 -3
  14. package/dist/{chunk-GHNPBDR6.js → chunk-CHH6TEXB.js} +1 -1
  15. package/dist/{chunk-7WPBMV6W.js → chunk-CNBKKQSV.js} +1 -1
  16. package/dist/{chunk-2AU4PKSQ.js → chunk-CNW45NOZ.js} +3 -3
  17. package/dist/{chunk-6JVCLWCU.js → chunk-DBMDQEQO.js} +3 -3
  18. package/dist/{chunk-N2W52I56.js → chunk-EY3ZOE75.js} +1 -1
  19. package/dist/{chunk-SD3VNTAR.js → chunk-FNDIHEBT.js} +616 -28
  20. package/dist/chunk-FNDIHEBT.js.map +7 -0
  21. package/dist/{chunk-T6S6TXIY.js → chunk-IXFDCJ25.js} +3 -3
  22. package/dist/{chunk-V6W537PO.js → chunk-J6HKEIL2.js} +1 -1
  23. package/dist/{chunk-IAIXAB4N.js → chunk-K3QEELFX.js} +3 -3
  24. package/dist/{chunk-J3TM7T3W.js → chunk-KKNO6B2K.js} +199 -712
  25. package/dist/chunk-KKNO6B2K.js.map +7 -0
  26. package/dist/{chunk-ITD4GQ6O.js → chunk-L4CGYTJQ.js} +1 -1
  27. package/dist/{chunk-OPEQBEHZ.js → chunk-LE5VGGP6.js} +4 -4
  28. package/dist/{chunk-US6EALFL.js → chunk-NBDDIZNJ.js} +2 -2
  29. package/dist/{chunk-VDLMXEHU.js → chunk-NQGIALRP.js} +4 -4
  30. package/dist/{chunk-RRLBQ3XD.js → chunk-NRORTICH.js} +2 -2
  31. package/dist/{chunk-TLMCXAET.js → chunk-NSFU6Y4R.js} +1 -1
  32. package/dist/{chunk-UUTMXSER.js → chunk-PXRUNRK7.js} +1 -1
  33. package/dist/{chunk-CN443EB5.js → chunk-UJRT7VK2.js} +1 -1
  34. package/dist/{chunk-K3AQYDRJ.js → chunk-VAZ4VRTA.js} +3 -3
  35. package/dist/{chunk-4VVWAA6O.js → chunk-XHAEEYYH.js} +1 -1
  36. package/dist/{chunk-Q2FTNJHH.js → chunk-Y7I4XTJJ.js} +3 -3
  37. package/dist/{chunk-A5O2MBVW.js → chunk-YFVKGHW2.js} +2 -2
  38. package/dist/{chunk-ZLNJ6XFU.js → chunk-ZDDVFBS4.js} +4 -4
  39. package/dist/{chunk-7UF7PBUR.js → chunk-ZKW5V7MR.js} +1 -1
  40. package/dist/{cli-P7N4INGY.js → cli-PMOATR2H.js} +90 -90
  41. package/dist/commands-HA2TW7NU.js +57 -0
  42. package/dist/{config-XVX25KIN.js → config-PQYZDDGW.js} +4 -4
  43. package/dist/{context-OBZ5CNGA.js → context-BWXP2WB4.js} +6 -6
  44. package/dist/{conversationPersistence-CB3RZIY7.js → conversationPersistence-CS2SQ6Z6.js} +3 -3
  45. package/dist/{conversationTracker-HDEFZTDC.js → conversationTracker-3OLKEYWM.js} +4 -4
  46. package/dist/{customCommands-ELEQAM5Y.js → customCommands-VPTXXYYR.js} +4 -4
  47. package/dist/{env-FMH4AH2H.js → env-G5ZYCG5S.js} +2 -2
  48. package/dist/{file-6TB2IASX.js → file-2I2KXCVN.js} +4 -4
  49. package/dist/index.js +3 -3
  50. package/dist/{llm-QPAHJ643.js → llm-KXF74SNS.js} +31 -31
  51. package/dist/{llmLazy-RYJWZZ7Y.js → llmLazy-L3IJUBN2.js} +1 -1
  52. package/dist/{loader-EPUS22XU.js → loader-CJOJNOV7.js} +4 -4
  53. package/dist/{lsp-WIEWEHYU.js → lsp-OKPL75YW.js} +6 -6
  54. package/dist/{lspAnchor-YI3SOGER.js → lspAnchor-7Z5YNXX3.js} +6 -6
  55. package/dist/{mcp-Q6UOFMLT.js → mcp-C65V4JYM.js} +7 -7
  56. package/dist/{mentionProcessor-3IV63BZT.js → mentionProcessor-EDZBHP7Y.js} +5 -5
  57. package/dist/{messages-XU4LSUWY.js → messages-YBAYUMKL.js} +1 -1
  58. package/dist/{model-JFUZ777G.js → model-7WMFC6F7.js} +5 -5
  59. package/dist/{openai-PQN2VFKQ.js → openai-YWEX6G4I.js} +5 -5
  60. package/dist/{outputStyles-PJNN6AH4.js → outputStyles-N6S27KGD.js} +4 -4
  61. package/dist/{pluginRuntime-TLFHDTDH.js → pluginRuntime-3XWIAPQ7.js} +6 -6
  62. package/dist/{pluginValidation-TZUKRIFW.js → pluginValidation-2JLTTMJL.js} +6 -6
  63. package/dist/prompts-HCGQPTDJ.js +59 -0
  64. package/dist/{pybAgentSessionLoad-EFAWFGRE.js → pybAgentSessionLoad-XJ6XWCK5.js} +4 -4
  65. package/dist/{pybAgentSessionResume-YQSKGG3W.js → pybAgentSessionResume-SMNXFGFB.js} +4 -4
  66. package/dist/{pybAgentStreamJsonSession-BYHCDZXV.js → pybAgentStreamJsonSession-33YU7WNJ.js} +1 -1
  67. package/dist/{pybHooks-ZH3DUHNO.js → pybHooks-6JRPW3VW.js} +4 -4
  68. package/dist/query-GGJC3XT2.js +57 -0
  69. package/dist/{registry-A2AB7N66.js → registry-67P26WKJ.js} +5 -5
  70. package/dist/{ripgrep-CYA5VVPU.js → ripgrep-DPLWHL7O.js} +3 -3
  71. package/dist/{skillMarketplace-6CDVELA7.js → skillMarketplace-MGU4KRUF.js} +3 -3
  72. package/dist/{state-MDP57623.js → state-NZVNNCHH.js} +2 -2
  73. package/dist/{theme-MYY4MVK7.js → theme-XV4CTBG6.js} +5 -5
  74. package/dist/{toolPermissionSettings-ALND7SVQ.js → toolPermissionSettings-NEXN25B3.js} +6 -6
  75. package/dist/tools-R7EDLOFS.js +57 -0
  76. package/dist/{userInput-FBVWRPOG.js → userInput-PHXM4ITY.js} +32 -32
  77. package/package.json +2 -1
  78. package/dist/REPL-45IVQWUI.js +0 -53
  79. package/dist/chunk-5OJHTSFR.js.map +0 -7
  80. package/dist/chunk-J3TM7T3W.js.map +0 -7
  81. package/dist/chunk-SD3VNTAR.js.map +0 -7
  82. package/dist/commands-BTSWDZVO.js +0 -57
  83. package/dist/prompts-Y4JPHIGG.js +0 -59
  84. package/dist/query-SA5YQRDP.js +0 -57
  85. package/dist/tools-6M5WFR3S.js +0 -57
  86. /package/dist/{REPL-45IVQWUI.js.map → REPL-5XUDCAF4.js.map} +0 -0
  87. /package/dist/{acp-KELESOXO.js.map → acp-VXAHCMQ4.js.map} +0 -0
  88. /package/dist/{agentsValidate-J7PHU22S.js.map → agentsValidate-PFVCK6ZC.js.map} +0 -0
  89. /package/dist/{ask-ZICPHRGR.js.map → ask-7RQ2G5S3.js.map} +0 -0
  90. /package/dist/{autoUpdater-6KGZQTW5.js.map → autoUpdater-TDN3ABMG.js.map} +0 -0
  91. /package/dist/{chunk-OTMVCWZ2.js.map → chunk-3IPEAISZ.js.map} +0 -0
  92. /package/dist/{chunk-Q4WANADY.js.map → chunk-5P4A6TN2.js.map} +0 -0
  93. /package/dist/{chunk-XIAHHC4E.js.map → chunk-7MR3XX5X.js.map} +0 -0
  94. /package/dist/{chunk-MWL7Q5HG.js.map → chunk-A45A3UUU.js.map} +0 -0
  95. /package/dist/{chunk-57BVHCH3.js.map → chunk-BQCQ3DEN.js.map} +0 -0
  96. /package/dist/{chunk-5OBGGU2O.js.map → chunk-C7BUAPKP.js.map} +0 -0
  97. /package/dist/{chunk-GHNPBDR6.js.map → chunk-CHH6TEXB.js.map} +0 -0
  98. /package/dist/{chunk-7WPBMV6W.js.map → chunk-CNBKKQSV.js.map} +0 -0
  99. /package/dist/{chunk-2AU4PKSQ.js.map → chunk-CNW45NOZ.js.map} +0 -0
  100. /package/dist/{chunk-6JVCLWCU.js.map → chunk-DBMDQEQO.js.map} +0 -0
  101. /package/dist/{chunk-N2W52I56.js.map → chunk-EY3ZOE75.js.map} +0 -0
  102. /package/dist/{chunk-T6S6TXIY.js.map → chunk-IXFDCJ25.js.map} +0 -0
  103. /package/dist/{chunk-V6W537PO.js.map → chunk-J6HKEIL2.js.map} +0 -0
  104. /package/dist/{chunk-IAIXAB4N.js.map → chunk-K3QEELFX.js.map} +0 -0
  105. /package/dist/{chunk-ITD4GQ6O.js.map → chunk-L4CGYTJQ.js.map} +0 -0
  106. /package/dist/{chunk-OPEQBEHZ.js.map → chunk-LE5VGGP6.js.map} +0 -0
  107. /package/dist/{chunk-US6EALFL.js.map → chunk-NBDDIZNJ.js.map} +0 -0
  108. /package/dist/{chunk-VDLMXEHU.js.map → chunk-NQGIALRP.js.map} +0 -0
  109. /package/dist/{chunk-RRLBQ3XD.js.map → chunk-NRORTICH.js.map} +0 -0
  110. /package/dist/{chunk-TLMCXAET.js.map → chunk-NSFU6Y4R.js.map} +0 -0
  111. /package/dist/{chunk-UUTMXSER.js.map → chunk-PXRUNRK7.js.map} +0 -0
  112. /package/dist/{chunk-CN443EB5.js.map → chunk-UJRT7VK2.js.map} +0 -0
  113. /package/dist/{chunk-K3AQYDRJ.js.map → chunk-VAZ4VRTA.js.map} +0 -0
  114. /package/dist/{chunk-4VVWAA6O.js.map → chunk-XHAEEYYH.js.map} +0 -0
  115. /package/dist/{chunk-Q2FTNJHH.js.map → chunk-Y7I4XTJJ.js.map} +0 -0
  116. /package/dist/{chunk-A5O2MBVW.js.map → chunk-YFVKGHW2.js.map} +0 -0
  117. /package/dist/{chunk-ZLNJ6XFU.js.map → chunk-ZDDVFBS4.js.map} +0 -0
  118. /package/dist/{chunk-7UF7PBUR.js.map → chunk-ZKW5V7MR.js.map} +0 -0
  119. /package/dist/{cli-P7N4INGY.js.map → cli-PMOATR2H.js.map} +0 -0
  120. /package/dist/{commands-BTSWDZVO.js.map → commands-HA2TW7NU.js.map} +0 -0
  121. /package/dist/{config-XVX25KIN.js.map → config-PQYZDDGW.js.map} +0 -0
  122. /package/dist/{context-OBZ5CNGA.js.map → context-BWXP2WB4.js.map} +0 -0
  123. /package/dist/{conversationPersistence-CB3RZIY7.js.map → conversationPersistence-CS2SQ6Z6.js.map} +0 -0
  124. /package/dist/{conversationTracker-HDEFZTDC.js.map → conversationTracker-3OLKEYWM.js.map} +0 -0
  125. /package/dist/{customCommands-ELEQAM5Y.js.map → customCommands-VPTXXYYR.js.map} +0 -0
  126. /package/dist/{env-FMH4AH2H.js.map → env-G5ZYCG5S.js.map} +0 -0
  127. /package/dist/{file-6TB2IASX.js.map → file-2I2KXCVN.js.map} +0 -0
  128. /package/dist/{llm-QPAHJ643.js.map → llm-KXF74SNS.js.map} +0 -0
  129. /package/dist/{llmLazy-RYJWZZ7Y.js.map → llmLazy-L3IJUBN2.js.map} +0 -0
  130. /package/dist/{loader-EPUS22XU.js.map → loader-CJOJNOV7.js.map} +0 -0
  131. /package/dist/{lsp-WIEWEHYU.js.map → lsp-OKPL75YW.js.map} +0 -0
  132. /package/dist/{lspAnchor-YI3SOGER.js.map → lspAnchor-7Z5YNXX3.js.map} +0 -0
  133. /package/dist/{mcp-Q6UOFMLT.js.map → mcp-C65V4JYM.js.map} +0 -0
  134. /package/dist/{mentionProcessor-3IV63BZT.js.map → mentionProcessor-EDZBHP7Y.js.map} +0 -0
  135. /package/dist/{messages-XU4LSUWY.js.map → messages-YBAYUMKL.js.map} +0 -0
  136. /package/dist/{model-JFUZ777G.js.map → model-7WMFC6F7.js.map} +0 -0
  137. /package/dist/{openai-PQN2VFKQ.js.map → openai-YWEX6G4I.js.map} +0 -0
  138. /package/dist/{outputStyles-PJNN6AH4.js.map → outputStyles-N6S27KGD.js.map} +0 -0
  139. /package/dist/{pluginRuntime-TLFHDTDH.js.map → pluginRuntime-3XWIAPQ7.js.map} +0 -0
  140. /package/dist/{pluginValidation-TZUKRIFW.js.map → pluginValidation-2JLTTMJL.js.map} +0 -0
  141. /package/dist/{prompts-Y4JPHIGG.js.map → prompts-HCGQPTDJ.js.map} +0 -0
  142. /package/dist/{pybAgentSessionLoad-EFAWFGRE.js.map → pybAgentSessionLoad-XJ6XWCK5.js.map} +0 -0
  143. /package/dist/{pybAgentSessionResume-YQSKGG3W.js.map → pybAgentSessionResume-SMNXFGFB.js.map} +0 -0
  144. /package/dist/{pybAgentStreamJsonSession-BYHCDZXV.js.map → pybAgentStreamJsonSession-33YU7WNJ.js.map} +0 -0
  145. /package/dist/{pybHooks-ZH3DUHNO.js.map → pybHooks-6JRPW3VW.js.map} +0 -0
  146. /package/dist/{query-SA5YQRDP.js.map → query-GGJC3XT2.js.map} +0 -0
  147. /package/dist/{registry-A2AB7N66.js.map → registry-67P26WKJ.js.map} +0 -0
  148. /package/dist/{ripgrep-CYA5VVPU.js.map → ripgrep-DPLWHL7O.js.map} +0 -0
  149. /package/dist/{skillMarketplace-6CDVELA7.js.map → skillMarketplace-MGU4KRUF.js.map} +0 -0
  150. /package/dist/{state-MDP57623.js.map → state-NZVNNCHH.js.map} +0 -0
  151. /package/dist/{theme-MYY4MVK7.js.map → theme-XV4CTBG6.js.map} +0 -0
  152. /package/dist/{toolPermissionSettings-ALND7SVQ.js.map → toolPermissionSettings-NEXN25B3.js.map} +0 -0
  153. /package/dist/{tools-6M5WFR3S.js.map → tools-R7EDLOFS.js.map} +0 -0
  154. /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-TLMCXAET.js";
5
+ } from "./chunk-NSFU6Y4R.js";
6
6
  import {
7
7
  appendSessionCustomTitleRecord,
8
8
  appendSessionJsonlFromMessage,
9
9
  appendSessionTagRecord,
10
10
  listPybAgentSessions
11
- } from "./chunk-T6S6TXIY.js";
11
+ } from "./chunk-IXFDCJ25.js";
12
12
  import {
13
13
  formatValidationResult,
14
14
  validatePluginOrMarketplacePath
15
- } from "./chunk-IAIXAB4N.js";
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-ITD4GQ6O.js";
23
+ } from "./chunk-L4CGYTJQ.js";
24
24
  import {
25
25
  FileSystemConversationPersistence
26
- } from "./chunk-V6W537PO.js";
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-6JVCLWCU.js";
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-57BVHCH3.js";
50
+ } from "./chunk-BQCQ3DEN.js";
51
51
  import {
52
52
  fetchCustomModels,
53
53
  getModelFeatures
54
- } from "./chunk-Q4WANADY.js";
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-ZLNJ6XFU.js";
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-SD3VNTAR.js";
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-GHNPBDR6.js";
108
+ } from "./chunk-CHH6TEXB.js";
92
109
  import {
93
110
  loadToolPermissionContextFromDisk,
94
111
  persistToolPermissionUpdateToDisk
95
- } from "./chunk-Q2FTNJHH.js";
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-RRLBQ3XD.js";
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-A5O2MBVW.js";
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-UUTMXSER.js";
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-US6EALFL.js";
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-VDLMXEHU.js";
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-7WPBMV6W.js";
220
+ } from "./chunk-CNBKKQSV.js";
204
221
  import {
205
222
  getCustomCommandDirectories,
206
223
  hasCustomCommands,
207
224
  loadCustomCommands,
208
225
  reloadCustomCommands
209
- } from "./chunk-XIAHHC4E.js";
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-K3AQYDRJ.js";
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-OPEQBEHZ.js";
243
+ } from "./chunk-LE5VGGP6.js";
227
244
  import {
228
245
  getRipgrepPath,
229
246
  getRipgrepPolicyMode,
230
247
  resolveRipgrepPolicy,
231
248
  ripGrep
232
- } from "./chunk-7UF7PBUR.js";
249
+ } from "./chunk-ZKW5V7MR.js";
233
250
  import {
234
251
  getTheme
235
- } from "./chunk-N2W52I56.js";
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-2AU4PKSQ.js";
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-MWL7Q5HG.js";
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-CN443EB5.js";
318
+ } from "./chunk-UJRT7VK2.js";
302
319
  import {
303
320
  MACRO
304
- } from "./chunk-5OJHTSFR.js";
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-QPAHJ643.js");
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-QPAHJ643.js");
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 TOOL_NAME_FOR_PROMPT = "WebFetch";
4682
- var PROMPT = `
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: TOOL_NAME_FOR_PROMPT,
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 PROMPT;
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 DESCRIPTION = "Replace the contents of a specific cell in a Jupyter notebook.";
6124
- var PROMPT2 = `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.
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: "NotebookEdit",
6254
+ name: TOOL_NAME10,
6237
6255
  async description() {
6238
- return DESCRIPTION;
6256
+ return DESCRIPTION7;
6239
6257
  },
6240
6258
  async prompt() {
6241
- return PROMPT2;
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: "Edit",
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-YI3SOGER.js");
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 MAX_LINE_LENGTH2 = 2e3;
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: "Read",
7684
+ name: TOOL_NAME,
7828
7685
  async description() {
7829
- return DESCRIPTION3;
7686
+ return DESCRIPTION;
7830
7687
  },
7831
7688
  async prompt() {
7832
- return PROMPT3;
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 > MAX_LINE_LENGTH2 ? line.slice(0, MAX_LINE_LENGTH2) : line
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: "Write",
8332
+ name: TOOL_NAME3,
8489
8333
  async description() {
8490
- return "Write a file to the local filesystem.";
8334
+ return DESCRIPTION3;
8491
8335
  },
8492
8336
  userFacingName: () => "Write",
8493
8337
  async prompt() {
8494
- return PROMPT4;
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: TOOL_NAME_FOR_PROMPT2,
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: TOOL_NAME_FOR_PROMPT3,
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 TOOL_NAME_FOR_PROMPT4 = "WebSearch";
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 PROMPT5 = `
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: TOOL_NAME_FOR_PROMPT4,
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 PROMPT5;
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-QPAHJ643.js");
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-TLFHDTDH.js");
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-JFUZ777G.js").then(({ reloadModelManager: reloadModelManager2 }) => {
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/AskExpertModelTool.tsx
27237
- var inputSchema9 = z11.strictObject({
27238
- question: z11.string().describe(
27239
- "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."
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 TOOL_NAME_FOR_PROMPT5 = "AskUserQuestion";
27633
- var DESCRIPTION6 = "Asks the user multiple choice questions to gather information, clarify ambiguity, understand preferences, make decisions or offer them choices.";
27634
- var PROMPT6 = `Use this tool when you need to ask the user questions during execution. This allows you to:
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: TOOL_NAME_FOR_PROMPT5,
27289
+ name: TOOL_NAME13,
27675
27290
  async description() {
27676
- return DESCRIPTION6;
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 PROMPT6;
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 TOOL_NAME_FOR_PROMPT6 = "TaskOutput";
27844
- var DESCRIPTION7 = "Retrieves output from a running or completed task";
27845
- var PROMPT7 = `- Retrieves output from a running or completed task (background shell, agent, or remote session)
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-MDP57623.js");
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: TOOL_NAME_FOR_PROMPT6,
27673
+ name: TOOL_NAME14,
28059
27674
  async description() {
28060
- return DESCRIPTION7;
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 PROMPT7;
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 PROMPT8 = `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.
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: "Delete",
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 PROMPT8;
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-WIEWEHYU.js");
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 TOOL_NAME_FOR_PROMPT7 = "KillShell";
28436
- var DESCRIPTION8 = "Kill a background bash shell by ID";
28437
- var PROMPT9 = `
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: TOOL_NAME_FOR_PROMPT7,
28066
+ name: TOOL_NAME16,
28451
28067
  async description() {
28452
- return DESCRIPTION8;
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 PROMPT9;
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 TOOL_NAME = "ListMcpResourcesTool";
28528
- var DESCRIPTION9 = `Lists available resources from configured MCP servers.
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 PROMPT10 = `List available resources from configured MCP servers.
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: TOOL_NAME,
28163
+ name: TOOL_NAME17,
28548
28164
  async description() {
28549
- return DESCRIPTION9;
28165
+ return DESCRIPTION12;
28550
28166
  },
28551
28167
  async prompt() {
28552
- return PROMPT10;
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: TOOL_NAME_FOR_PROMPT8,
28508
+ name: TOOL_NAME6,
29025
28509
  async description() {
29026
- return DESCRIPTION10;
28510
+ return DESCRIPTION6;
29027
28511
  },
29028
28512
  async prompt() {
29029
- return PROMPT11;
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 TOOL_NAME2 = "ReadMcpResourceTool";
29242
- var DESCRIPTION11 = `Reads a specific resource from an MCP server.
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 PROMPT12 = `Reads a specific resource from an MCP server, identified by server name and resource URI.
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: TOOL_NAME2,
28744
+ name: TOOL_NAME18,
29261
28745
  async description() {
29262
- return DESCRIPTION11;
28746
+ return DESCRIPTION13;
29263
28747
  },
29264
28748
  async prompt() {
29265
- return PROMPT12;
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 TOOL_NAME_FOR_PROMPT9 = "Skill";
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: TOOL_NAME_FOR_PROMPT9,
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 ${TOOL_NAME_FOR_PROMPT9} tool due to disable-model-invocation`,
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 ${TOOL_NAME_FOR_PROMPT9} tool due to disable-model-invocation`
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: TOOL_NAME3,
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 DESCRIPTION12 = "Plan and create tasks for complex multi-step work";
30391
- var PROMPT13 = `Use this tool to create a new task in the current task list. It is the entry point for planning multi-step work.
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: "TaskCreate",
30753
- cachedDescription: DESCRIPTION12,
30234
+ name: TOOL_NAME20,
30235
+ cachedDescription: DESCRIPTION14,
30754
30236
  async description() {
30755
- return DESCRIPTION12;
30237
+ return DESCRIPTION14;
30756
30238
  },
30757
30239
  async prompt() {
30758
- return PROMPT13;
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 DESCRIPTION13 = "Review planned task details";
30829
- var PROMPT14 = `Use this tool to fetch a single task by id.
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: "TaskGet",
30866
- cachedDescription: DESCRIPTION13,
30348
+ name: TOOL_NAME21,
30349
+ cachedDescription: DESCRIPTION15,
30867
30350
  async description() {
30868
- return DESCRIPTION13;
30351
+ return DESCRIPTION15;
30869
30352
  },
30870
30353
  async prompt() {
30871
- return PROMPT14;
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 DESCRIPTION14 = "Review planned tasks, readiness, and blockers";
30928
- var PROMPT15 = `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.
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: "TaskList",
31009
- cachedDescription: DESCRIPTION14,
30492
+ name: TOOL_NAME22,
30493
+ cachedDescription: DESCRIPTION16,
31010
30494
  async description() {
31011
- return DESCRIPTION14;
30495
+ return DESCRIPTION16;
31012
30496
  },
31013
30497
  async prompt() {
31014
- return PROMPT15;
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 DESCRIPTION15 = "Manage task progress, status, and dependencies";
31081
- var PROMPT16 = `Use this tool to update an existing task. It is the primary way to track progress and adjust task details.
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: "TaskUpdate",
31533
- cachedDescription: DESCRIPTION15,
31017
+ name: TOOL_NAME23,
31018
+ cachedDescription: DESCRIPTION17,
31534
31019
  async description() {
31535
- return DESCRIPTION15;
31020
+ return DESCRIPTION17;
31536
31021
  },
31537
31022
  async prompt() {
31538
- return PROMPT16;
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 DESCRIPTION16 = "Read agent memory files from the local filesystem.";
31808
- var PROMPT17 = `Reads agent memory files from the local filesystem.
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: "MemoryRead",
31317
+ name: TOOL_NAME24,
31832
31318
  async description() {
31833
- return DESCRIPTION16;
31319
+ return DESCRIPTION18;
31834
31320
  },
31835
31321
  async prompt() {
31836
- return PROMPT17;
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 DESCRIPTION17 = "Write agent memory files to the local filesystem.";
31985
- var PROMPT18 = `Write agent memory files to the local filesystem.
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: "MemoryWrite",
31505
+ name: TOOL_NAME25,
32019
31506
  async description() {
32020
- return DESCRIPTION17;
31507
+ return DESCRIPTION19;
32021
31508
  },
32022
31509
  async prompt() {
32023
- return PROMPT18;
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-QPAHJ643.js");
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-MDP57623.js");
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-QPAHJ643.js");
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 TOOL_NAME_FOR_PROMPT10 = "SlashCommand";
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: TOOL_NAME_FOR_PROMPT10,
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 ${TOOL_NAME_FOR_PROMPT10} tool due to disable-model-invocation`,
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 ${TOOL_NAME_FOR_PROMPT10} tool because it is non-interactive`,
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 ${TOOL_NAME_FOR_PROMPT10} tool due to disable-model-invocation`
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 ${TOOL_NAME_FOR_PROMPT10} tool because it is non-interactive`
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: "Bash",
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 \`grep\` or \`read\`). Do not rely on memory from previous turns.
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 \`glob\`).
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 \`read_file\` alone as they may be outdated.
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 \`GlobTool\` with \`semantic: true\`. This leverages LSP to find files by their content definitions.
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