pybao-cli 1.5.38 → 1.5.40

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 (169) hide show
  1. package/dist/REPL-Z3TOIVYD.js +51 -0
  2. package/dist/{acp-JTVVQGX6.js → acp-FDHMQCWT.js} +30 -30
  3. package/dist/{agentsValidate-T552HEU3.js → agentsValidate-ELJV3BD5.js} +7 -7
  4. package/dist/{ask-JT2UVHOU.js → ask-LLSPXGGE.js} +30 -30
  5. package/dist/{autoUpdater-ZBN46KEI.js → autoUpdater-GPMR6GD7.js} +3 -3
  6. package/dist/{chunk-M3XZZUER.js → chunk-26KSRQP4.js} +2 -2
  7. package/dist/{chunk-ODHAKZLW.js → chunk-2AFJRWCO.js} +3 -3
  8. package/dist/{chunk-5AM65D7G.js → chunk-3EBTDGWV.js} +1 -1
  9. package/dist/{chunk-PPTR7ECF.js → chunk-3KHG4DDY.js} +1 -1
  10. package/dist/{chunk-DXS27TBK.js → chunk-5S5C2OHM.js} +3 -3
  11. package/dist/{chunk-45CYYYU7.js → chunk-6BBHJOWS.js} +2 -2
  12. package/dist/{chunk-REIICUCF.js → chunk-7W52VHCA.js} +2 -2
  13. package/dist/{chunk-JQW3XPSA.js → chunk-BEV23CJE.js} +1 -1
  14. package/dist/{chunk-GLNNII3K.js → chunk-BYLAKTEP.js} +3 -3
  15. package/dist/{chunk-2P4E3ZNA.js → chunk-EYLCDMQQ.js} +3 -3
  16. package/dist/{chunk-TW7VYZCV.js → chunk-FPVESENY.js} +3 -3
  17. package/dist/{chunk-JQXGDP2G.js → chunk-H3NQOBUI.js} +2 -2
  18. package/dist/{chunk-QLLHQ4NC.js → chunk-H4Z2VPCJ.js} +1 -1
  19. package/dist/{chunk-USNKNXS4.js → chunk-IA6MVNWV.js} +1 -1
  20. package/dist/{chunk-T4YXQTDG.js → chunk-INRQ5FYB.js} +3 -3
  21. package/dist/{chunk-OONY2XEJ.js → chunk-JTF7WK7Z.js} +1 -1
  22. package/dist/{chunk-OONY2XEJ.js.map → chunk-JTF7WK7Z.js.map} +1 -1
  23. package/dist/{chunk-A33Z7A54.js → chunk-L7U4IZJ5.js} +4 -4
  24. package/dist/{chunk-3L5QLWHQ.js → chunk-M56ITZBW.js} +1 -1
  25. package/dist/{chunk-OQ7GMNEA.js → chunk-OW77PW5M.js} +1 -1
  26. package/dist/{chunk-R357FMHE.js → chunk-PMPP4Q2U.js} +1 -1
  27. package/dist/{chunk-MPW3OMAB.js → chunk-Q373NOSL.js} +4 -4
  28. package/dist/{chunk-X7II6NLY.js → chunk-R4FJYGPN.js} +1 -1
  29. package/dist/{chunk-HKDUNAZU.js → chunk-SCVKSNWZ.js} +1 -1
  30. package/dist/{chunk-RKTBVJGG.js → chunk-SYD52UQC.js} +2 -2
  31. package/dist/{chunk-FGAQGENO.js → chunk-T2EM3K5B.js} +2 -2
  32. package/dist/{chunk-34KB4DEZ.js → chunk-TWUMAHON.js} +4 -4
  33. package/dist/{chunk-HPHRVBGM.js → chunk-WAB6PUNL.js} +3 -3
  34. package/dist/{chunk-XGFLQLPP.js → chunk-WGKYEXPG.js} +200 -41
  35. package/dist/chunk-WGKYEXPG.js.map +7 -0
  36. package/dist/{chunk-LGWP73N3.js → chunk-X2CQAFP7.js} +1 -1
  37. package/dist/{chunk-TYK67RSX.js → chunk-Y6JX7EBN.js} +4 -4
  38. package/dist/{chunk-MQ56NHZY.js → chunk-ZIWNCLKX.js} +3 -3
  39. package/dist/{cli-GW2RLZKS.js → cli-BBHRJCTN.js} +90 -90
  40. package/dist/commands-PVWHGRX3.js +55 -0
  41. package/dist/{config-7YD4R22V.js → config-KN2XEOY7.js} +4 -4
  42. package/dist/{context-4EG6BLW4.js → context-BW6MJQM2.js} +6 -6
  43. package/dist/{conversationPersistence-XSJ7MFZQ.js → conversationPersistence-RAVYY226.js} +3 -3
  44. package/dist/{conversationTracker-VXYBDUQD.js → conversationTracker-3IAJEIQ4.js} +4 -4
  45. package/dist/{customCommands-CEGHI3EI.js → customCommands-BNVGCUKP.js} +4 -4
  46. package/dist/{env-SFBXDZAW.js → env-LHB5NTOI.js} +2 -2
  47. package/dist/{file-TKPF7WPK.js → file-CJ3PREEJ.js} +4 -4
  48. package/dist/index.js +3 -3
  49. package/dist/{llm-UPZIAGPI.js → llm-VJ5SXQHW.js} +31 -31
  50. package/dist/{llmLazy-AH4Z4W4G.js → llmLazy-UUS3WEHK.js} +1 -1
  51. package/dist/{loader-KR2G4MZH.js → loader-5VRUVNER.js} +4 -4
  52. package/dist/{lsp-4BXZN54S.js → lsp-BIIABO6H.js} +6 -6
  53. package/dist/{lspAnchor-J7X23CTJ.js → lspAnchor-TT3FWLUS.js} +6 -6
  54. package/dist/{mcp-PQ7E5V6N.js → mcp-R4ZYR3JP.js} +7 -7
  55. package/dist/{mentionProcessor-OBZEHVOK.js → mentionProcessor-QYWCQUIV.js} +5 -5
  56. package/dist/{messages-Y45VMQJM.js → messages-MA74RJER.js} +1 -1
  57. package/dist/{model-PLE3KNNX.js → model-POXLU7ZR.js} +5 -5
  58. package/dist/{openai-2R2NDBUU.js → openai-I7BLJUQS.js} +5 -5
  59. package/dist/{outputStyles-XXPDKDY2.js → outputStyles-75MN6KTI.js} +4 -4
  60. package/dist/{pluginRuntime-SROFDMKU.js → pluginRuntime-3WFVQ6S7.js} +6 -6
  61. package/dist/{pluginValidation-WRO2DZTR.js → pluginValidation-L3SGXFFT.js} +6 -6
  62. package/dist/prompts-MDTDDW3N.js +57 -0
  63. package/dist/{pybAgentSessionLoad-FQQRBPKP.js → pybAgentSessionLoad-U64JCPNS.js} +4 -4
  64. package/dist/{pybAgentSessionResume-P3UHSOY6.js → pybAgentSessionResume-DTB7UOFX.js} +4 -4
  65. package/dist/{pybAgentStreamJsonSession-SIHHDMP6.js → pybAgentStreamJsonSession-ZSEACSHS.js} +1 -1
  66. package/dist/{pybHooks-J6EDF4HT.js → pybHooks-IZIY2IGK.js} +4 -4
  67. package/dist/query-TKK5CM7T.js +55 -0
  68. package/dist/{registry-FWP3Q2GA.js → registry-74CB6VIJ.js} +5 -5
  69. package/dist/{ripgrep-MRW3JRSV.js → ripgrep-JJE36CNN.js} +3 -3
  70. package/dist/{skillMarketplace-I6WS3AB4.js → skillMarketplace-ARREBOGZ.js} +3 -3
  71. package/dist/{state-FFCKZLBN.js → state-WZ4UJAH7.js} +2 -2
  72. package/dist/{theme-ALYM3CFD.js → theme-57UJPEQK.js} +5 -5
  73. package/dist/{toolPermissionSettings-6TUFSTN3.js → toolPermissionSettings-4236ZJBP.js} +6 -6
  74. package/dist/tools-KTJEXUUE.js +55 -0
  75. package/dist/{userInput-4MUAKMGX.js → userInput-VIXNIZP3.js} +32 -32
  76. package/package.json +1 -1
  77. package/dist/REPL-EOGX5USK.js +0 -51
  78. package/dist/chunk-XGFLQLPP.js.map +0 -7
  79. package/dist/commands-OMEB6ZPR.js +0 -55
  80. package/dist/prompts-5Q6CSNXC.js +0 -57
  81. package/dist/query-CADGN75M.js +0 -55
  82. package/dist/tools-IEYQ4SAS.js +0 -55
  83. package/resources/output-styles/accessibility-champion.md +0 -66
  84. package/resources/output-styles/api-designer.md +0 -88
  85. package/resources/output-styles/concise-engineer.md +0 -32
  86. package/resources/output-styles/critical-code-reviewer.md +0 -36
  87. package/resources/output-styles/data-engineer.md +0 -104
  88. package/resources/output-styles/defensive-programmer.md +0 -81
  89. package/resources/output-styles/devil-advocate.md +0 -43
  90. package/resources/output-styles/devops-automator.md +0 -118
  91. package/resources/output-styles/distributed-systems-architect.md +0 -77
  92. package/resources/output-styles/documentation-writer.md +0 -47
  93. package/resources/output-styles/evan-king-system-design-reviewer.md +0 -45
  94. package/resources/output-styles/functional-purist.md +0 -84
  95. package/resources/output-styles/performance-optimizer.md +0 -49
  96. package/resources/output-styles/refactoring-expert.md +0 -118
  97. package/resources/output-styles/security-auditor.md +0 -49
  98. package/resources/output-styles/startup-pragmatist.md +0 -58
  99. package/resources/output-styles/test-driven-developer.md +0 -48
  100. /package/dist/{REPL-EOGX5USK.js.map → REPL-Z3TOIVYD.js.map} +0 -0
  101. /package/dist/{acp-JTVVQGX6.js.map → acp-FDHMQCWT.js.map} +0 -0
  102. /package/dist/{agentsValidate-T552HEU3.js.map → agentsValidate-ELJV3BD5.js.map} +0 -0
  103. /package/dist/{ask-JT2UVHOU.js.map → ask-LLSPXGGE.js.map} +0 -0
  104. /package/dist/{autoUpdater-ZBN46KEI.js.map → autoUpdater-GPMR6GD7.js.map} +0 -0
  105. /package/dist/{chunk-M3XZZUER.js.map → chunk-26KSRQP4.js.map} +0 -0
  106. /package/dist/{chunk-ODHAKZLW.js.map → chunk-2AFJRWCO.js.map} +0 -0
  107. /package/dist/{chunk-5AM65D7G.js.map → chunk-3EBTDGWV.js.map} +0 -0
  108. /package/dist/{chunk-PPTR7ECF.js.map → chunk-3KHG4DDY.js.map} +0 -0
  109. /package/dist/{chunk-DXS27TBK.js.map → chunk-5S5C2OHM.js.map} +0 -0
  110. /package/dist/{chunk-45CYYYU7.js.map → chunk-6BBHJOWS.js.map} +0 -0
  111. /package/dist/{chunk-REIICUCF.js.map → chunk-7W52VHCA.js.map} +0 -0
  112. /package/dist/{chunk-JQW3XPSA.js.map → chunk-BEV23CJE.js.map} +0 -0
  113. /package/dist/{chunk-GLNNII3K.js.map → chunk-BYLAKTEP.js.map} +0 -0
  114. /package/dist/{chunk-2P4E3ZNA.js.map → chunk-EYLCDMQQ.js.map} +0 -0
  115. /package/dist/{chunk-TW7VYZCV.js.map → chunk-FPVESENY.js.map} +0 -0
  116. /package/dist/{chunk-JQXGDP2G.js.map → chunk-H3NQOBUI.js.map} +0 -0
  117. /package/dist/{chunk-QLLHQ4NC.js.map → chunk-H4Z2VPCJ.js.map} +0 -0
  118. /package/dist/{chunk-USNKNXS4.js.map → chunk-IA6MVNWV.js.map} +0 -0
  119. /package/dist/{chunk-T4YXQTDG.js.map → chunk-INRQ5FYB.js.map} +0 -0
  120. /package/dist/{chunk-A33Z7A54.js.map → chunk-L7U4IZJ5.js.map} +0 -0
  121. /package/dist/{chunk-3L5QLWHQ.js.map → chunk-M56ITZBW.js.map} +0 -0
  122. /package/dist/{chunk-OQ7GMNEA.js.map → chunk-OW77PW5M.js.map} +0 -0
  123. /package/dist/{chunk-R357FMHE.js.map → chunk-PMPP4Q2U.js.map} +0 -0
  124. /package/dist/{chunk-MPW3OMAB.js.map → chunk-Q373NOSL.js.map} +0 -0
  125. /package/dist/{chunk-X7II6NLY.js.map → chunk-R4FJYGPN.js.map} +0 -0
  126. /package/dist/{chunk-HKDUNAZU.js.map → chunk-SCVKSNWZ.js.map} +0 -0
  127. /package/dist/{chunk-RKTBVJGG.js.map → chunk-SYD52UQC.js.map} +0 -0
  128. /package/dist/{chunk-FGAQGENO.js.map → chunk-T2EM3K5B.js.map} +0 -0
  129. /package/dist/{chunk-34KB4DEZ.js.map → chunk-TWUMAHON.js.map} +0 -0
  130. /package/dist/{chunk-HPHRVBGM.js.map → chunk-WAB6PUNL.js.map} +0 -0
  131. /package/dist/{chunk-LGWP73N3.js.map → chunk-X2CQAFP7.js.map} +0 -0
  132. /package/dist/{chunk-TYK67RSX.js.map → chunk-Y6JX7EBN.js.map} +0 -0
  133. /package/dist/{chunk-MQ56NHZY.js.map → chunk-ZIWNCLKX.js.map} +0 -0
  134. /package/dist/{cli-GW2RLZKS.js.map → cli-BBHRJCTN.js.map} +0 -0
  135. /package/dist/{commands-OMEB6ZPR.js.map → commands-PVWHGRX3.js.map} +0 -0
  136. /package/dist/{config-7YD4R22V.js.map → config-KN2XEOY7.js.map} +0 -0
  137. /package/dist/{context-4EG6BLW4.js.map → context-BW6MJQM2.js.map} +0 -0
  138. /package/dist/{conversationPersistence-XSJ7MFZQ.js.map → conversationPersistence-RAVYY226.js.map} +0 -0
  139. /package/dist/{conversationTracker-VXYBDUQD.js.map → conversationTracker-3IAJEIQ4.js.map} +0 -0
  140. /package/dist/{customCommands-CEGHI3EI.js.map → customCommands-BNVGCUKP.js.map} +0 -0
  141. /package/dist/{env-SFBXDZAW.js.map → env-LHB5NTOI.js.map} +0 -0
  142. /package/dist/{file-TKPF7WPK.js.map → file-CJ3PREEJ.js.map} +0 -0
  143. /package/dist/{llm-UPZIAGPI.js.map → llm-VJ5SXQHW.js.map} +0 -0
  144. /package/dist/{llmLazy-AH4Z4W4G.js.map → llmLazy-UUS3WEHK.js.map} +0 -0
  145. /package/dist/{loader-KR2G4MZH.js.map → loader-5VRUVNER.js.map} +0 -0
  146. /package/dist/{lsp-4BXZN54S.js.map → lsp-BIIABO6H.js.map} +0 -0
  147. /package/dist/{lspAnchor-J7X23CTJ.js.map → lspAnchor-TT3FWLUS.js.map} +0 -0
  148. /package/dist/{mcp-PQ7E5V6N.js.map → mcp-R4ZYR3JP.js.map} +0 -0
  149. /package/dist/{mentionProcessor-OBZEHVOK.js.map → mentionProcessor-QYWCQUIV.js.map} +0 -0
  150. /package/dist/{messages-Y45VMQJM.js.map → messages-MA74RJER.js.map} +0 -0
  151. /package/dist/{model-PLE3KNNX.js.map → model-POXLU7ZR.js.map} +0 -0
  152. /package/dist/{openai-2R2NDBUU.js.map → openai-I7BLJUQS.js.map} +0 -0
  153. /package/dist/{outputStyles-XXPDKDY2.js.map → outputStyles-75MN6KTI.js.map} +0 -0
  154. /package/dist/{pluginRuntime-SROFDMKU.js.map → pluginRuntime-3WFVQ6S7.js.map} +0 -0
  155. /package/dist/{pluginValidation-WRO2DZTR.js.map → pluginValidation-L3SGXFFT.js.map} +0 -0
  156. /package/dist/{prompts-5Q6CSNXC.js.map → prompts-MDTDDW3N.js.map} +0 -0
  157. /package/dist/{pybAgentSessionLoad-FQQRBPKP.js.map → pybAgentSessionLoad-U64JCPNS.js.map} +0 -0
  158. /package/dist/{pybAgentSessionResume-P3UHSOY6.js.map → pybAgentSessionResume-DTB7UOFX.js.map} +0 -0
  159. /package/dist/{pybAgentStreamJsonSession-SIHHDMP6.js.map → pybAgentStreamJsonSession-ZSEACSHS.js.map} +0 -0
  160. /package/dist/{pybHooks-J6EDF4HT.js.map → pybHooks-IZIY2IGK.js.map} +0 -0
  161. /package/dist/{query-CADGN75M.js.map → query-TKK5CM7T.js.map} +0 -0
  162. /package/dist/{registry-FWP3Q2GA.js.map → registry-74CB6VIJ.js.map} +0 -0
  163. /package/dist/{ripgrep-MRW3JRSV.js.map → ripgrep-JJE36CNN.js.map} +0 -0
  164. /package/dist/{skillMarketplace-I6WS3AB4.js.map → skillMarketplace-ARREBOGZ.js.map} +0 -0
  165. /package/dist/{state-FFCKZLBN.js.map → state-WZ4UJAH7.js.map} +0 -0
  166. /package/dist/{theme-ALYM3CFD.js.map → theme-57UJPEQK.js.map} +0 -0
  167. /package/dist/{toolPermissionSettings-6TUFSTN3.js.map → toolPermissionSettings-4236ZJBP.js.map} +0 -0
  168. /package/dist/{tools-IEYQ4SAS.js.map → tools-KTJEXUUE.js.map} +0 -0
  169. /package/dist/{userInput-4MUAKMGX.js.map → userInput-VIXNIZP3.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-HKDUNAZU.js";
5
+ } from "./chunk-SCVKSNWZ.js";
6
6
  import {
7
7
  appendSessionCustomTitleRecord,
8
8
  appendSessionJsonlFromMessage,
9
9
  appendSessionTagRecord,
10
10
  listPybAgentSessions
11
- } from "./chunk-MQ56NHZY.js";
11
+ } from "./chunk-ZIWNCLKX.js";
12
12
  import {
13
13
  formatValidationResult,
14
14
  validatePluginOrMarketplacePath
15
- } from "./chunk-TW7VYZCV.js";
15
+ } from "./chunk-FPVESENY.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-PPTR7ECF.js";
23
+ } from "./chunk-3KHG4DDY.js";
24
24
  import {
25
25
  FileSystemConversationPersistence
26
- } from "./chunk-5AM65D7G.js";
26
+ } from "./chunk-3EBTDGWV.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-HPHRVBGM.js";
41
+ } from "./chunk-WAB6PUNL.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-FGAQGENO.js";
50
+ } from "./chunk-T2EM3K5B.js";
51
51
  import {
52
52
  fetchCustomModels,
53
53
  getModelFeatures
54
- } from "./chunk-JQXGDP2G.js";
54
+ } from "./chunk-H3NQOBUI.js";
55
55
  import {
56
56
  getCurrentSessionId,
57
57
  getSessionState
@@ -60,7 +60,7 @@ import {
60
60
  queryLLM,
61
61
  queryQuick,
62
62
  verifyApiKey
63
- } from "./chunk-34KB4DEZ.js";
63
+ } from "./chunk-TWUMAHON.js";
64
64
  import {
65
65
  DEFAULT_TIMEOUT_MS,
66
66
  FallbackToolUseRejectedMessage,
@@ -75,7 +75,7 @@ import {
75
75
  listMCPServers,
76
76
  loadMergedSettings,
77
77
  normalizeSandboxRuntimeConfigFromSettings
78
- } from "./chunk-TYK67RSX.js";
78
+ } from "./chunk-Y6JX7EBN.js";
79
79
  import {
80
80
  addMarketplace,
81
81
  disableSkillPlugin,
@@ -88,11 +88,11 @@ import {
88
88
  refreshMarketplaceAsync,
89
89
  removeMarketplace,
90
90
  uninstallSkillPlugin
91
- } from "./chunk-QLLHQ4NC.js";
91
+ } from "./chunk-H4Z2VPCJ.js";
92
92
  import {
93
93
  loadToolPermissionContextFromDisk,
94
94
  persistToolPermissionUpdateToDisk
95
- } from "./chunk-DXS27TBK.js";
95
+ } from "./chunk-5S5C2OHM.js";
96
96
  import {
97
97
  applyToolPermissionContextUpdate,
98
98
  applyToolPermissionContextUpdates,
@@ -103,14 +103,14 @@ import {
103
103
  generateSystemReminders,
104
104
  resetReminderSession,
105
105
  systemReminderService
106
- } from "./chunk-M3XZZUER.js";
106
+ } from "./chunk-26KSRQP4.js";
107
107
  import {
108
108
  clearAgentCache,
109
109
  getActiveAgents,
110
110
  getAgentByType,
111
111
  getAllAgents,
112
112
  getAvailableAgentTypes
113
- } from "./chunk-REIICUCF.js";
113
+ } from "./chunk-7W52VHCA.js";
114
114
  import {
115
115
  API_ERROR_MESSAGE_PREFIX,
116
116
  CANCEL_MESSAGE,
@@ -147,7 +147,7 @@ import {
147
147
  reorderMessages,
148
148
  resetAutoCompactTelemetry,
149
149
  stripSystemMessages
150
- } from "./chunk-OQ7GMNEA.js";
150
+ } from "./chunk-OW77PW5M.js";
151
151
  import {
152
152
  getRequestStatus,
153
153
  setRequestStatus,
@@ -179,7 +179,7 @@ import {
179
179
  normalizeFilePath,
180
180
  readTextContent,
181
181
  writeTextContent
182
- } from "./chunk-45CYYYU7.js";
182
+ } from "./chunk-6BBHJOWS.js";
183
183
  import {
184
184
  parseBlockEdits
185
185
  } from "./chunk-QWIBSCDN.js";
@@ -190,18 +190,18 @@ import {
190
190
  formatDiagnosticsPretty,
191
191
  initParser,
192
192
  loadLanguage
193
- } from "./chunk-MPW3OMAB.js";
193
+ } from "./chunk-Q373NOSL.js";
194
194
  import {
195
195
  getSettingsFileCandidates,
196
196
  loadSettingsWithLegacyFallback,
197
197
  readSettingsFile
198
- } from "./chunk-JQW3XPSA.js";
198
+ } from "./chunk-BEV23CJE.js";
199
199
  import {
200
200
  getCustomCommandDirectories,
201
201
  hasCustomCommands,
202
202
  loadCustomCommands,
203
203
  reloadCustomCommands
204
- } from "./chunk-RKTBVJGG.js";
204
+ } from "./chunk-SYD52UQC.js";
205
205
  import {
206
206
  getSessionPlugins
207
207
  } from "./chunk-BJSWTHRM.js";
@@ -210,7 +210,7 @@ import {
210
210
  buildModelProfileKey,
211
211
  getModelManager,
212
212
  isDefaultSlowAndCapableModel
213
- } from "./chunk-GLNNII3K.js";
213
+ } from "./chunk-BYLAKTEP.js";
214
214
  import {
215
215
  getCodeStyle,
216
216
  getContext,
@@ -218,16 +218,16 @@ import {
218
218
  getIsGit,
219
219
  getProjectDocs,
220
220
  getProjectStructureStatisticsBlock
221
- } from "./chunk-A33Z7A54.js";
221
+ } from "./chunk-L7U4IZJ5.js";
222
222
  import {
223
223
  getRipgrepPath,
224
224
  getRipgrepPolicyMode,
225
225
  resolveRipgrepPolicy,
226
226
  ripGrep
227
- } from "./chunk-LGWP73N3.js";
227
+ } from "./chunk-X2CQAFP7.js";
228
228
  import {
229
229
  getTheme
230
- } from "./chunk-R357FMHE.js";
230
+ } from "./chunk-PMPP4Q2U.js";
231
231
  import {
232
232
  DEFAULT_GLOBAL_CONFIG,
233
233
  enableConfigs,
@@ -240,7 +240,7 @@ import {
240
240
  saveGlobalConfig,
241
241
  setAllPointersToModel,
242
242
  setModelPointer
243
- } from "./chunk-2P4E3ZNA.js";
243
+ } from "./chunk-EYLCDMQQ.js";
244
244
  import {
245
245
  AbortError
246
246
  } from "./chunk-RQVLBMP7.js";
@@ -249,7 +249,7 @@ import {
249
249
  getCurrentRequest,
250
250
  logUserFriendly,
251
251
  markPhase
252
- } from "./chunk-USNKNXS4.js";
252
+ } from "./chunk-IA6MVNWV.js";
253
253
  import {
254
254
  ASCII_LOGO,
255
255
  BunShell,
@@ -293,10 +293,10 @@ import {
293
293
  setCwd,
294
294
  shouldApplyToolOutputTruncation,
295
295
  truncateToolOutput
296
- } from "./chunk-X7II6NLY.js";
296
+ } from "./chunk-R4FJYGPN.js";
297
297
  import {
298
298
  MACRO
299
- } from "./chunk-OONY2XEJ.js";
299
+ } from "./chunk-JTF7WK7Z.js";
300
300
  import {
301
301
  __export
302
302
  } from "./chunk-I3J4JYES.js";
@@ -477,7 +477,7 @@ var getCommandSubcommandPrefix = memoize(
477
477
  var getCommandPrefix = memoize(
478
478
  async (command4, abortSignal) => {
479
479
  const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
480
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-UPZIAGPI.js");
480
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-VJ5SXQHW.js");
481
481
  const response = await queryQuick2({
482
482
  systemPrompt,
483
483
  userPrompt,
@@ -4279,7 +4279,7 @@ function formatParseError(error) {
4279
4279
  return error instanceof Error ? error.message : String(error);
4280
4280
  }
4281
4281
  async function defaultGateQuery(args) {
4282
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-UPZIAGPI.js");
4282
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-VJ5SXQHW.js");
4283
4283
  const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
4284
4284
  const messages = [
4285
4285
  {
@@ -6672,7 +6672,7 @@ var FileEditTool = {
6672
6672
  const originalFileContent = currentFileContent;
6673
6673
  let totalPatch = [];
6674
6674
  const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
6675
- const { findLspAnchor } = await import("./lspAnchor-J7X23CTJ.js");
6675
+ const { findLspAnchor } = await import("./lspAnchor-TT3FWLUS.js");
6676
6676
  for (const op of editOperations) {
6677
6677
  const normalizedSearch = normalizeLineEndings(op.search);
6678
6678
  const normalizedReplace = normalizeLineEndings(op.replace);
@@ -6803,6 +6803,8 @@ var PROMPT3 = `Reads a file or directory from the local filesystem. You can acce
6803
6803
  - In file mode, offset/limit are 1-based line pagination; offset=1 starts from the first line shown in cat -n output
6804
6804
  - By default, file mode reads up to ${MAX_LINES_TO_READ} lines starting from the beginning of the file
6805
6805
  - You can optionally specify a line offset and limit (especially handy for long files). **Smart Truncation is active**: 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).
6806
+ - symbol_name enables LSP-assisted symbol read: provide an exact symbol name to resolve the symbol range and read that block directly
6807
+ - Use symbol_name only after file path is confirmed and when you need a specific class/function definition; if symbol is missing or unresolved, fallback to offset/limit or use LspTool for semantic discovery
6806
6808
  - Directory mode returns a one-level tree structure using \u251C\u2500\u2500/\u2514\u2500\u2500 and supports pagination continuation hints
6807
6809
  - For large files, iterate in chunks: offset=1 limit=200, then offset=201 limit=200, and so on until the needed region is covered
6808
6810
  - File text truncation is capped at 50KB per result and 2000 lines; 50KB is file text truncation and not a directory access gate
@@ -6840,6 +6842,14 @@ var PROMPT3 = `Reads a file or directory from the local filesystem. You can acce
6840
6842
  [reads the confirmed api directory path to get one-level tree structure with Read]
6841
6843
  [reads the router file path found in that directory tree]
6842
6844
  </example>
6845
+
6846
+ ### Example 4: LSP-Assisted Symbol Read
6847
+ <example>
6848
+ user: Open the FileReadTool call implementation directly
6849
+ assistant: [uses Glob/Grep to confirm FileReadTool file path]
6850
+ [uses Read with file_path="<absolute path>/FileReadTool.tsx" symbol_name="call"]
6851
+ [if symbol is not found, retries with offset/limit or uses LspTool to inspect symbol names first]
6852
+ </example>
6843
6853
  `.trim();
6844
6854
 
6845
6855
  // src/utils/fs/secureFile.ts
@@ -7480,6 +7490,22 @@ var MAX_LINE_LENGTH2 = 2e3;
7480
7490
  var MAX_TEXT_OUTPUT_BYTES = 50 * 1024;
7481
7491
  var MAX_TEXT_OUTPUT_LINES = 2e3;
7482
7492
  var DIRECTORY_DEFAULT_LIMIT = 200;
7493
+ var BINARY_SAMPLE_BYTES = 4096;
7494
+ var NON_PRINTABLE_THRESHOLD = 0.3;
7495
+ var TEXT_LIKE_EXTENSIONS = /* @__PURE__ */ new Set([
7496
+ ".txt",
7497
+ ".md",
7498
+ ".ts",
7499
+ ".tsx",
7500
+ ".js",
7501
+ ".jsx",
7502
+ ".json",
7503
+ ".yml",
7504
+ ".yaml",
7505
+ ".toml",
7506
+ ".ini",
7507
+ ".env"
7508
+ ]);
7483
7509
  var IMAGE_EXTENSIONS = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".gif", ".webp"]);
7484
7510
  var MAX_WIDTH = 2e3;
7485
7511
  var MAX_HEIGHT = 2e3;
@@ -7562,6 +7588,13 @@ var BINARY_EXTENSIONS = /* @__PURE__ */ new Set([
7562
7588
  ".swf",
7563
7589
  ".fla"
7564
7590
  ]);
7591
+ var binaryDetectionStats = {
7592
+ totalChecks: 0,
7593
+ extensionHitCount: 0,
7594
+ samplingHitCount: 0,
7595
+ degradationTriggerCount: 0,
7596
+ suspectedMisclassificationCount: 0
7597
+ };
7565
7598
  var inputSchema4 = z4.strictObject({
7566
7599
  file_path: z4.string().describe("The absolute path to the file to read"),
7567
7600
  offset: z4.number().optional().describe(
@@ -7674,9 +7707,14 @@ var FileReadTool = {
7674
7707
  }
7675
7708
  const fileSize = fileCheck.stats?.size ?? 0;
7676
7709
  if (BINARY_EXTENSIONS.has(ext)) {
7710
+ recordBinaryDetection({
7711
+ mode: "extension",
7712
+ detail: `extension:${ext}`,
7713
+ ext
7714
+ });
7677
7715
  return {
7678
7716
  result: false,
7679
- message: `This tool cannot read binary files. The file appears to be a binary ${ext} file. Please use appropriate tools for binary file analysis.`
7717
+ message: `This tool cannot read binary files. The file appears to be a binary ${ext} file (extension-based detection). Please use appropriate tools for binary file analysis.`
7680
7718
  };
7681
7719
  }
7682
7720
  if (fileSize === 0 && IMAGE_EXTENSIONS.has(ext)) {
@@ -7685,6 +7723,22 @@ var FileReadTool = {
7685
7723
  message: "Empty image files cannot be processed."
7686
7724
  };
7687
7725
  }
7726
+ const isSpecialFileType = IMAGE_EXTENSIONS.has(ext) || ext === ".pdf" || ext === ".ipynb";
7727
+ if (!isSpecialFileType) {
7728
+ const sampleResult = await detectBinaryBySampling(fullFilePath, fileSize);
7729
+ if (sampleResult.isBinary) {
7730
+ recordBinaryDetection({
7731
+ mode: "sampling",
7732
+ detail: sampleResult.detail,
7733
+ ext
7734
+ });
7735
+ return {
7736
+ result: false,
7737
+ message: `This tool cannot read binary files. The file was identified as binary by content-sampling detection (${sampleResult.detail}). Please use appropriate tools for binary file analysis.`
7738
+ };
7739
+ }
7740
+ recordBinaryDetection({ mode: "none", ext });
7741
+ }
7688
7742
  return { result: true };
7689
7743
  },
7690
7744
  async *call({ file_path, offset = 1, limit = void 0, symbol_name }, { readFileTimestamps }) {
@@ -7731,8 +7785,12 @@ var FileReadTool = {
7731
7785
  if (!symbol) {
7732
7786
  throw new Error(`Symbol '${symbol_name}' not found in file. Use offset/limit or LspTool instead.`);
7733
7787
  }
7734
- startLine = symbol.range.start.line + 1;
7735
- finalLimit = symbol.range.end.line - symbol.range.start.line + 1;
7788
+ const range = getSymbolRange(symbol);
7789
+ if (!range) {
7790
+ throw new Error(`Symbol '${symbol_name}' has no valid range information`);
7791
+ }
7792
+ startLine = range.start.line + 1;
7793
+ finalLimit = range.end.line - range.start.line + 1;
7736
7794
  } catch (e) {
7737
7795
  throw new Error(`Symbol reading failed: ${e.message}`);
7738
7796
  }
@@ -7795,6 +7853,20 @@ var FileReadTool = {
7795
7853
  };
7796
7854
  return;
7797
7855
  }
7856
+ if (BINARY_EXTENSIONS.has(ext)) {
7857
+ throw new Error(
7858
+ `This tool cannot read binary files. The file appears to be a binary ${ext} file (extension-based detection). Please use appropriate tools for binary file analysis.`
7859
+ );
7860
+ }
7861
+ const sampleResult = await detectBinaryBySampling(
7862
+ fullFilePath,
7863
+ fileInfo.stats.size ?? 0
7864
+ );
7865
+ if (sampleResult.isBinary) {
7866
+ throw new Error(
7867
+ `This tool cannot read binary files. The file was identified as binary by content-sampling detection (${sampleResult.detail}). Please use appropriate tools for binary file analysis.`
7868
+ );
7869
+ }
7798
7870
  let zeroBasedOffset = startLine === 0 ? 0 : startLine - 1;
7799
7871
  if (limit && !symbol_name) {
7800
7872
  try {
@@ -7953,6 +8025,17 @@ Use offset=${nextOffset} limit=${pageSize} to continue`);
7953
8025
  }
7954
8026
  return lines.join("\n");
7955
8027
  }
8028
+ function getSymbolRange(symbol) {
8029
+ const directRange = symbol?.range;
8030
+ if (typeof directRange?.start?.line === "number" && typeof directRange?.end?.line === "number") {
8031
+ return directRange;
8032
+ }
8033
+ const locationRange = symbol?.location?.range;
8034
+ if (typeof locationRange?.start?.line === "number" && typeof locationRange?.end?.line === "number") {
8035
+ return locationRange;
8036
+ }
8037
+ return null;
8038
+ }
7956
8039
  function capTextOutput(content, options) {
7957
8040
  const lines = content.split(/\r?\n/);
7958
8041
  const limitedByLines = lines.slice(0, options.maxLines);
@@ -7978,6 +8061,82 @@ ${limitedByLines[i]}`;
7978
8061
  nextOffset
7979
8062
  };
7980
8063
  }
8064
+ async function detectBinaryBySampling(filePath, fileSize) {
8065
+ if (fileSize <= 0) {
8066
+ return { isBinary: false };
8067
+ }
8068
+ const sampleSize = Math.min(BINARY_SAMPLE_BYTES, fileSize);
8069
+ try {
8070
+ const buffer = await Bun.file(filePath).slice(0, sampleSize).arrayBuffer();
8071
+ const bytes = new Uint8Array(buffer);
8072
+ if (bytes.length === 0) {
8073
+ return { isBinary: false };
8074
+ }
8075
+ let nonPrintableCount = 0;
8076
+ for (let i = 0; i < bytes.length; i++) {
8077
+ const byte = bytes[i];
8078
+ if (byte === 0) {
8079
+ return { isBinary: true, detail: "null-byte" };
8080
+ }
8081
+ if (byte < 9 || byte > 13 && byte < 32) {
8082
+ nonPrintableCount++;
8083
+ }
8084
+ }
8085
+ const ratio = nonPrintableCount / bytes.length;
8086
+ if (ratio > NON_PRINTABLE_THRESHOLD) {
8087
+ return { isBinary: true, detail: "non-printable-ratio" };
8088
+ }
8089
+ return { isBinary: false };
8090
+ } catch (error) {
8091
+ recordBinaryDetection({
8092
+ mode: "none",
8093
+ detail: "sampling-read-error",
8094
+ degraded: true,
8095
+ ext: path5.extname(filePath).toLowerCase()
8096
+ });
8097
+ logError(error);
8098
+ return { isBinary: false };
8099
+ }
8100
+ }
8101
+ function recordBinaryDetection({
8102
+ mode,
8103
+ detail,
8104
+ degraded = false,
8105
+ ext
8106
+ }) {
8107
+ binaryDetectionStats.totalChecks++;
8108
+ if (mode === "extension") {
8109
+ binaryDetectionStats.extensionHitCount++;
8110
+ }
8111
+ if (mode === "sampling") {
8112
+ binaryDetectionStats.samplingHitCount++;
8113
+ if (ext && TEXT_LIKE_EXTENSIONS.has(ext)) {
8114
+ binaryDetectionStats.suspectedMisclassificationCount++;
8115
+ }
8116
+ }
8117
+ if (degraded) {
8118
+ binaryDetectionStats.degradationTriggerCount++;
8119
+ }
8120
+ emitTelemetryEvent({
8121
+ channel: "tool.read.binary_detection",
8122
+ phase: "decision",
8123
+ timestamp: Date.now(),
8124
+ data: {
8125
+ mode,
8126
+ detail: detail || null,
8127
+ degraded,
8128
+ ext: ext || null,
8129
+ totalChecks: binaryDetectionStats.totalChecks,
8130
+ extensionHitCount: binaryDetectionStats.extensionHitCount,
8131
+ samplingHitCount: binaryDetectionStats.samplingHitCount,
8132
+ degradationTriggerCount: binaryDetectionStats.degradationTriggerCount,
8133
+ suspectedMisclassificationCount: binaryDetectionStats.suspectedMisclassificationCount,
8134
+ samplingHitRate: binaryDetectionStats.totalChecks > 0 ? Number(
8135
+ (binaryDetectionStats.samplingHitCount / binaryDetectionStats.totalChecks).toFixed(4)
8136
+ ) : 0
8137
+ }
8138
+ });
8139
+ }
7981
8140
  var isSecurityError = (error) => {
7982
8141
  const patterns = [
7983
8142
  "outside allowed directories",
@@ -12286,7 +12445,7 @@ async function createAndStoreApiKey(accessToken) {
12286
12445
  }
12287
12446
  saveGlobalConfig(config2);
12288
12447
  try {
12289
- const { resetAnthropicClient } = await import("./llm-UPZIAGPI.js");
12448
+ const { resetAnthropicClient } = await import("./llm-VJ5SXQHW.js");
12290
12449
  resetAnthropicClient();
12291
12450
  } catch {
12292
12451
  }
@@ -16710,7 +16869,7 @@ async function refreshPluginRuntimeFromInstalls() {
16710
16869
  const existingRoots = getSessionPlugins().map((p) => p.rootDir);
16711
16870
  const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
16712
16871
  if (dirs.length === 0) return [];
16713
- const { configureSessionPlugins } = await import("./pluginRuntime-SROFDMKU.js");
16872
+ const { configureSessionPlugins } = await import("./pluginRuntime-3WFVQ6S7.js");
16714
16873
  const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
16715
16874
  return errors;
16716
16875
  }
@@ -17385,7 +17544,7 @@ async function call(onDone, context) {
17385
17544
  ModelConfig,
17386
17545
  {
17387
17546
  onClose: () => {
17388
- import("./model-PLE3KNNX.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17547
+ import("./model-POXLU7ZR.js").then(({ reloadModelManager: reloadModelManager2 }) => {
17389
17548
  reloadModelManager2();
17390
17549
  triggerModelConfigChange();
17391
17550
  onDone();
@@ -27296,7 +27455,7 @@ async function analyzeOutputWithLsp(output, exitCode) {
27296
27455
  if (exitCode !== 0 || errorCount > 0 || warningCount > 0) {
27297
27456
  try {
27298
27457
  const { isAbsolute: isAbsolute11, resolve: resolve16 } = await import("path");
27299
- const { getSessionRoot: getSessionRoot2 } = await import("./state-FFCKZLBN.js");
27458
+ const { getSessionRoot: getSessionRoot2 } = await import("./state-WZ4UJAH7.js");
27300
27459
  const lines = output.split("\n");
27301
27460
  const uniqueFiles = /* @__PURE__ */ new Set();
27302
27461
  const lspSuggestions = [];
@@ -27666,7 +27825,7 @@ var DeleteTool = {
27666
27825
  }
27667
27826
  if (!force) {
27668
27827
  try {
27669
- const { LspFacade: LspFacade2 } = await import("./lsp-4BXZN54S.js");
27828
+ const { LspFacade: LspFacade2 } = await import("./lsp-BIIABO6H.js");
27670
27829
  const referenceDetail = await LspFacade2.checkFileReferences(fullPath);
27671
27830
  if (referenceDetail) {
27672
27831
  failedItems.push(
@@ -38068,7 +38227,7 @@ function useStatusLine() {
38068
38227
  // src/ui/components/PromptInput.tsx
38069
38228
  async function interpretHashCommand(input) {
38070
38229
  try {
38071
- const { queryQuick: queryQuick2 } = await import("./llm-UPZIAGPI.js");
38230
+ const { queryQuick: queryQuick2 } = await import("./llm-VJ5SXQHW.js");
38072
38231
  const systemPrompt = [
38073
38232
  "You're helping the user structure notes that will be added to their PYB.md file.",
38074
38233
  "Format the user's input into a well-structured note that will be useful for later reference.",
@@ -38381,7 +38540,7 @@ function PromptInput({
38381
38540
  if (messages2.length) {
38382
38541
  if (mode === "bash") {
38383
38542
  onQuery(messages2, newAbortController).then(async () => {
38384
- const { getCwd: getCwd2 } = await import("./state-FFCKZLBN.js");
38543
+ const { getCwd: getCwd2 } = await import("./state-WZ4UJAH7.js");
38385
38544
  setCurrentPwd(getCwd2());
38386
38545
  });
38387
38546
  } else {
@@ -40011,7 +40170,7 @@ import { homedir as homedir8 } from "os";
40011
40170
  // src/commands/agents/generation.ts
40012
40171
  import { randomUUID as randomUUID9 } from "crypto";
40013
40172
  async function generateAgentWithClaude(prompt) {
40014
- const { queryModel } = await import("./llm-UPZIAGPI.js");
40173
+ const { queryModel } = await import("./llm-VJ5SXQHW.js");
40015
40174
  const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
40016
40175
 
40017
40176
  Return your response as a JSON object with exactly these fields: