pybao-cli 1.4.92 → 1.4.94

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 (153) hide show
  1. package/cli-acp.js +6 -0
  2. package/dist/REPL-AXGFSFGU.js +49 -0
  3. package/dist/{acp-PMMMT33P.js → acp-LL5UW7NR.js} +30 -30
  4. package/dist/{agentsValidate-2IZG7B7I.js → agentsValidate-PZA3NXC7.js} +7 -7
  5. package/dist/{ask-L4H5OU47.js → ask-3HG7FW27.js} +29 -29
  6. package/dist/{autoUpdater-QE3ZF75P.js → autoUpdater-KKROLFYM.js} +3 -3
  7. package/dist/{chunk-QV6CXOAX.js → chunk-2I3SSZQJ.js} +1 -1
  8. package/dist/{chunk-NLF7L3QJ.js → chunk-3RBQCL7S.js} +2 -2
  9. package/dist/{chunk-J7DBZSXB.js → chunk-3WEFOYHX.js} +4 -4
  10. package/dist/{chunk-IW53WIHX.js → chunk-5DKFC3LS.js} +1 -1
  11. package/dist/{chunk-M5OYFLRQ.js → chunk-6O5XYV7G.js} +2 -2
  12. package/dist/{chunk-HBJFKMOM.js → chunk-6ZZJGF7W.js} +1 -1
  13. package/dist/{chunk-5CRIJVC6.js → chunk-AKOR7LY4.js} +3 -3
  14. package/dist/{chunk-XWKIQEJB.js → chunk-ARI6POM7.js} +2 -2
  15. package/dist/{chunk-CVQ76APY.js → chunk-C3HQN7AW.js} +2 -1
  16. package/dist/chunk-C3HQN7AW.js.map +7 -0
  17. package/dist/{chunk-2LA7O6HH.js → chunk-C62NYRK3.js} +3 -3
  18. package/dist/{chunk-4HAIU2DZ.js → chunk-DAJ3TBNT.js} +4 -4
  19. package/dist/{chunk-2ZBGUKZI.js → chunk-EK6ANNY6.js} +3 -3
  20. package/dist/{chunk-65TDOV2B.js → chunk-F3K3SJFT.js} +1 -1
  21. package/dist/{chunk-BFRZIR45.js → chunk-INFVDDHG.js} +3 -3
  22. package/dist/{chunk-EPGBD3CD.js → chunk-KR2MX5WZ.js} +1 -1
  23. package/dist/{chunk-OVACIUTQ.js → chunk-KVXEA4L5.js} +3 -3
  24. package/dist/{chunk-6XH3TRPD.js → chunk-KW2CWUJO.js} +1 -1
  25. package/dist/{chunk-SJJNXFZG.js → chunk-PTZUDCNB.js} +4 -4
  26. package/dist/{chunk-2E76LUHW.js → chunk-PUPISMZN.js} +3 -3
  27. package/dist/{chunk-5W2G6L5K.js → chunk-PVDARHIF.js} +2 -2
  28. package/dist/{chunk-CMPFBTDH.js → chunk-QTRMTKJM.js} +36 -36
  29. package/dist/{chunk-GQQFFG6Z.js → chunk-THZYKZXQ.js} +78 -9
  30. package/dist/chunk-THZYKZXQ.js.map +7 -0
  31. package/dist/{chunk-5V43DOQL.js → chunk-UBMZOGHN.js} +3 -3
  32. package/dist/{chunk-N45BXBLA.js → chunk-UEJFVTUZ.js} +1 -1
  33. package/dist/{chunk-KGVDFIZ6.js → chunk-UPZWRK67.js} +17 -17
  34. package/dist/{chunk-KGVDFIZ6.js.map → chunk-UPZWRK67.js.map} +1 -1
  35. package/dist/{chunk-M47UTS3E.js → chunk-UQNXHJMM.js} +2 -2
  36. package/dist/{chunk-QUXAQAMC.js → chunk-V3Y26JD4.js} +1 -1
  37. package/dist/{chunk-T3RYPQ6S.js → chunk-VGMEYSLX.js} +2 -2
  38. package/dist/{chunk-GE5XKGYX.js → chunk-WGEY5O2I.js} +4 -4
  39. package/dist/{chunk-USL7Y3QS.js → chunk-Y7GZ5W2P.js} +1 -1
  40. package/dist/{chunk-JOG752I4.js → chunk-ZPIRAKGC.js} +2 -2
  41. package/dist/{cli-ZKW4ERDF.js → cli-SYUV2OFD.js} +89 -89
  42. package/dist/commands-D43WDW2T.js +53 -0
  43. package/dist/{config-BM2RDDU4.js → config-JHNCXVOB.js} +4 -4
  44. package/dist/{context-LB5NPB4Z.js → context-V2WAI7FZ.js} +6 -6
  45. package/dist/{conversationTracker-WZKK6VEN.js → conversationTracker-TA7TCZ4N.js} +3 -3
  46. package/dist/{customCommands-VKIIL24B.js → customCommands-UE64P47Y.js} +4 -4
  47. package/dist/{env-MBXZB6MQ.js → env-K2PDVE6O.js} +2 -2
  48. package/dist/{file-OUNPW33T.js → file-4J54VRPY.js} +4 -4
  49. package/dist/index.js +3 -3
  50. package/dist/{llm-2LHXBHUL.js → llm-W44XPBXA.js} +30 -30
  51. package/dist/{llmLazy-P5ZRZJBM.js → llmLazy-JY26HHD2.js} +1 -1
  52. package/dist/{loader-QTOW5PSW.js → loader-2FWOQF6B.js} +4 -4
  53. package/dist/{lsp-6ZCFW7CW.js → lsp-K5GMTLQ3.js} +6 -6
  54. package/dist/{lspAnchor-CQGXWIFN.js → lspAnchor-FFN4HTAE.js} +6 -6
  55. package/dist/{mcp-KZ5DMMX6.js → mcp-BEGCMCMJ.js} +7 -7
  56. package/dist/{mentionProcessor-RZRG2JIA.js → mentionProcessor-DP3LJQSY.js} +5 -5
  57. package/dist/{messages-N4HYU7FW.js → messages-VITJ5CVX.js} +1 -1
  58. package/dist/{model-UGW6NH5K.js → model-N4HOF2SI.js} +5 -5
  59. package/dist/{openai-KRGWLBNB.js → openai-Y335NU4V.js} +5 -5
  60. package/dist/{outputStyles-I5B345XD.js → outputStyles-ZOAFW5HT.js} +4 -4
  61. package/dist/{pluginRuntime-B63QTH2M.js → pluginRuntime-SZQ464L4.js} +6 -6
  62. package/dist/{pluginValidation-5ZQOW772.js → pluginValidation-WWBESF4D.js} +6 -6
  63. package/dist/prompts-TNZPD4OL.js +55 -0
  64. package/dist/{pybAgentSessionLoad-OKOJF33A.js → pybAgentSessionLoad-4ZRFGEBT.js} +4 -4
  65. package/dist/{pybAgentSessionResume-Q5SJD6HB.js → pybAgentSessionResume-2CQXPUDZ.js} +4 -4
  66. package/dist/{pybAgentStreamJsonSession-UH7VGXKE.js → pybAgentStreamJsonSession-3E5Z53JN.js} +1 -1
  67. package/dist/{pybHooks-LQLVXYDK.js → pybHooks-25H73VEX.js} +4 -4
  68. package/dist/query-MLM5JREI.js +57 -0
  69. package/dist/{registry-ZEJJEPTJ.js → registry-CO2UWLMO.js} +5 -5
  70. package/dist/{ripgrep-LMOHEHDF.js → ripgrep-7G5ML73I.js} +5 -3
  71. package/dist/{skillMarketplace-LAGR25NS.js → skillMarketplace-SHXUU6U2.js} +3 -3
  72. package/dist/{state-ICG3MH74.js → state-NNMNADWT.js} +2 -2
  73. package/dist/{theme-NEJRFLDU.js → theme-WYARLHVT.js} +5 -5
  74. package/dist/{toolPermissionSettings-5N6FJ6XB.js → toolPermissionSettings-P3VCQIYM.js} +6 -6
  75. package/dist/tools-SBX6BLEB.js +54 -0
  76. package/dist/{userInput-ISEI5VJC.js → userInput-YZC5IXZW.js} +31 -31
  77. package/package.json +2 -1
  78. package/scripts/cli-acp-wrapper.cjs +6 -0
  79. package/dist/REPL-NDHCVU7J.js +0 -49
  80. package/dist/chunk-CVQ76APY.js.map +0 -7
  81. package/dist/chunk-GQQFFG6Z.js.map +0 -7
  82. package/dist/commands-GHZNBZJB.js +0 -53
  83. package/dist/prompts-RFLHHDE4.js +0 -55
  84. package/dist/query-ZCTHSZLV.js +0 -57
  85. package/dist/tools-NJCISO3S.js +0 -54
  86. /package/dist/{REPL-NDHCVU7J.js.map → REPL-AXGFSFGU.js.map} +0 -0
  87. /package/dist/{acp-PMMMT33P.js.map → acp-LL5UW7NR.js.map} +0 -0
  88. /package/dist/{agentsValidate-2IZG7B7I.js.map → agentsValidate-PZA3NXC7.js.map} +0 -0
  89. /package/dist/{ask-L4H5OU47.js.map → ask-3HG7FW27.js.map} +0 -0
  90. /package/dist/{autoUpdater-QE3ZF75P.js.map → autoUpdater-KKROLFYM.js.map} +0 -0
  91. /package/dist/{chunk-QV6CXOAX.js.map → chunk-2I3SSZQJ.js.map} +0 -0
  92. /package/dist/{chunk-NLF7L3QJ.js.map → chunk-3RBQCL7S.js.map} +0 -0
  93. /package/dist/{chunk-J7DBZSXB.js.map → chunk-3WEFOYHX.js.map} +0 -0
  94. /package/dist/{chunk-IW53WIHX.js.map → chunk-5DKFC3LS.js.map} +0 -0
  95. /package/dist/{chunk-M5OYFLRQ.js.map → chunk-6O5XYV7G.js.map} +0 -0
  96. /package/dist/{chunk-HBJFKMOM.js.map → chunk-6ZZJGF7W.js.map} +0 -0
  97. /package/dist/{chunk-5CRIJVC6.js.map → chunk-AKOR7LY4.js.map} +0 -0
  98. /package/dist/{chunk-XWKIQEJB.js.map → chunk-ARI6POM7.js.map} +0 -0
  99. /package/dist/{chunk-2LA7O6HH.js.map → chunk-C62NYRK3.js.map} +0 -0
  100. /package/dist/{chunk-4HAIU2DZ.js.map → chunk-DAJ3TBNT.js.map} +0 -0
  101. /package/dist/{chunk-2ZBGUKZI.js.map → chunk-EK6ANNY6.js.map} +0 -0
  102. /package/dist/{chunk-65TDOV2B.js.map → chunk-F3K3SJFT.js.map} +0 -0
  103. /package/dist/{chunk-BFRZIR45.js.map → chunk-INFVDDHG.js.map} +0 -0
  104. /package/dist/{chunk-EPGBD3CD.js.map → chunk-KR2MX5WZ.js.map} +0 -0
  105. /package/dist/{chunk-OVACIUTQ.js.map → chunk-KVXEA4L5.js.map} +0 -0
  106. /package/dist/{chunk-6XH3TRPD.js.map → chunk-KW2CWUJO.js.map} +0 -0
  107. /package/dist/{chunk-SJJNXFZG.js.map → chunk-PTZUDCNB.js.map} +0 -0
  108. /package/dist/{chunk-2E76LUHW.js.map → chunk-PUPISMZN.js.map} +0 -0
  109. /package/dist/{chunk-5W2G6L5K.js.map → chunk-PVDARHIF.js.map} +0 -0
  110. /package/dist/{chunk-CMPFBTDH.js.map → chunk-QTRMTKJM.js.map} +0 -0
  111. /package/dist/{chunk-5V43DOQL.js.map → chunk-UBMZOGHN.js.map} +0 -0
  112. /package/dist/{chunk-N45BXBLA.js.map → chunk-UEJFVTUZ.js.map} +0 -0
  113. /package/dist/{chunk-M47UTS3E.js.map → chunk-UQNXHJMM.js.map} +0 -0
  114. /package/dist/{chunk-QUXAQAMC.js.map → chunk-V3Y26JD4.js.map} +0 -0
  115. /package/dist/{chunk-T3RYPQ6S.js.map → chunk-VGMEYSLX.js.map} +0 -0
  116. /package/dist/{chunk-GE5XKGYX.js.map → chunk-WGEY5O2I.js.map} +0 -0
  117. /package/dist/{chunk-USL7Y3QS.js.map → chunk-Y7GZ5W2P.js.map} +0 -0
  118. /package/dist/{chunk-JOG752I4.js.map → chunk-ZPIRAKGC.js.map} +0 -0
  119. /package/dist/{cli-ZKW4ERDF.js.map → cli-SYUV2OFD.js.map} +0 -0
  120. /package/dist/{commands-GHZNBZJB.js.map → commands-D43WDW2T.js.map} +0 -0
  121. /package/dist/{config-BM2RDDU4.js.map → config-JHNCXVOB.js.map} +0 -0
  122. /package/dist/{context-LB5NPB4Z.js.map → context-V2WAI7FZ.js.map} +0 -0
  123. /package/dist/{conversationTracker-WZKK6VEN.js.map → conversationTracker-TA7TCZ4N.js.map} +0 -0
  124. /package/dist/{customCommands-VKIIL24B.js.map → customCommands-UE64P47Y.js.map} +0 -0
  125. /package/dist/{env-MBXZB6MQ.js.map → env-K2PDVE6O.js.map} +0 -0
  126. /package/dist/{file-OUNPW33T.js.map → file-4J54VRPY.js.map} +0 -0
  127. /package/dist/{llm-2LHXBHUL.js.map → llm-W44XPBXA.js.map} +0 -0
  128. /package/dist/{llmLazy-P5ZRZJBM.js.map → llmLazy-JY26HHD2.js.map} +0 -0
  129. /package/dist/{loader-QTOW5PSW.js.map → loader-2FWOQF6B.js.map} +0 -0
  130. /package/dist/{lsp-6ZCFW7CW.js.map → lsp-K5GMTLQ3.js.map} +0 -0
  131. /package/dist/{lspAnchor-CQGXWIFN.js.map → lspAnchor-FFN4HTAE.js.map} +0 -0
  132. /package/dist/{mcp-KZ5DMMX6.js.map → mcp-BEGCMCMJ.js.map} +0 -0
  133. /package/dist/{mentionProcessor-RZRG2JIA.js.map → mentionProcessor-DP3LJQSY.js.map} +0 -0
  134. /package/dist/{messages-N4HYU7FW.js.map → messages-VITJ5CVX.js.map} +0 -0
  135. /package/dist/{model-UGW6NH5K.js.map → model-N4HOF2SI.js.map} +0 -0
  136. /package/dist/{openai-KRGWLBNB.js.map → openai-Y335NU4V.js.map} +0 -0
  137. /package/dist/{outputStyles-I5B345XD.js.map → outputStyles-ZOAFW5HT.js.map} +0 -0
  138. /package/dist/{pluginRuntime-B63QTH2M.js.map → pluginRuntime-SZQ464L4.js.map} +0 -0
  139. /package/dist/{pluginValidation-5ZQOW772.js.map → pluginValidation-WWBESF4D.js.map} +0 -0
  140. /package/dist/{prompts-RFLHHDE4.js.map → prompts-TNZPD4OL.js.map} +0 -0
  141. /package/dist/{pybAgentSessionLoad-OKOJF33A.js.map → pybAgentSessionLoad-4ZRFGEBT.js.map} +0 -0
  142. /package/dist/{pybAgentSessionResume-Q5SJD6HB.js.map → pybAgentSessionResume-2CQXPUDZ.js.map} +0 -0
  143. /package/dist/{pybAgentStreamJsonSession-UH7VGXKE.js.map → pybAgentStreamJsonSession-3E5Z53JN.js.map} +0 -0
  144. /package/dist/{pybHooks-LQLVXYDK.js.map → pybHooks-25H73VEX.js.map} +0 -0
  145. /package/dist/{query-ZCTHSZLV.js.map → query-MLM5JREI.js.map} +0 -0
  146. /package/dist/{registry-ZEJJEPTJ.js.map → registry-CO2UWLMO.js.map} +0 -0
  147. /package/dist/{ripgrep-LMOHEHDF.js.map → ripgrep-7G5ML73I.js.map} +0 -0
  148. /package/dist/{skillMarketplace-LAGR25NS.js.map → skillMarketplace-SHXUU6U2.js.map} +0 -0
  149. /package/dist/{state-ICG3MH74.js.map → state-NNMNADWT.js.map} +0 -0
  150. /package/dist/{theme-NEJRFLDU.js.map → theme-WYARLHVT.js.map} +0 -0
  151. /package/dist/{toolPermissionSettings-5N6FJ6XB.js.map → toolPermissionSettings-P3VCQIYM.js.map} +0 -0
  152. /package/dist/{tools-NJCISO3S.js.map → tools-SBX6BLEB.js.map} +0 -0
  153. /package/dist/{userInput-ISEI5VJC.js.map → userInput-YZC5IXZW.js.map} +0 -0
@@ -3,13 +3,13 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSettingsFileCandidates,
5
5
  loadSettingsWithLegacyFallback
6
- } from "./chunk-65TDOV2B.js";
6
+ } from "./chunk-F3K3SJFT.js";
7
7
  import {
8
8
  getSessionPlugins
9
9
  } from "./chunk-BJSWTHRM.js";
10
10
  import {
11
11
  getTheme
12
- } from "./chunk-EPGBD3CD.js";
12
+ } from "./chunk-KR2MX5WZ.js";
13
13
  import {
14
14
  addMcprcServerForTesting,
15
15
  getCurrentProjectConfig,
@@ -19,13 +19,13 @@ import {
19
19
  safeParseJSON,
20
20
  saveCurrentProjectConfig,
21
21
  saveGlobalConfig
22
- } from "./chunk-2ZBGUKZI.js";
22
+ } from "./chunk-EK6ANNY6.js";
23
23
  import {
24
24
  PRODUCT_COMMAND,
25
25
  PRODUCT_NAME,
26
26
  getCwd,
27
27
  logMCPError
28
- } from "./chunk-IW53WIHX.js";
28
+ } from "./chunk-5DKFC3LS.js";
29
29
 
30
30
  // src/services/mcp/client.ts
31
31
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
@@ -5,14 +5,14 @@ import {
5
5
  } from "./chunk-B6IMQJZM.js";
6
6
  import {
7
7
  loadSettingsWithLegacyFallback
8
- } from "./chunk-65TDOV2B.js";
8
+ } from "./chunk-F3K3SJFT.js";
9
9
  import {
10
10
  getSessionPlugins
11
11
  } from "./chunk-BJSWTHRM.js";
12
12
  import {
13
13
  getCwd,
14
14
  logError
15
- } from "./chunk-IW53WIHX.js";
15
+ } from "./chunk-5DKFC3LS.js";
16
16
 
17
17
  // src/utils/session/pybHooks.ts
18
18
  import { spawn } from "child_process";
@@ -496,7 +496,7 @@ async function runPromptHook(args) {
496
496
  fallbackTimeoutMs: args.fallbackTimeoutMs
497
497
  });
498
498
  try {
499
- const { queryQuick } = await import("./llmLazy-P5ZRZJBM.js");
499
+ const { queryQuick } = await import("./llmLazy-JY26HHD2.js");
500
500
  const systemPrompt = [
501
501
  "You are executing a Pyb prompt hook.",
502
502
  "Return a single JSON object only (no markdown, no prose).",
@@ -5,12 +5,12 @@ import {
5
5
  } from "./chunk-BJSWTHRM.js";
6
6
  import {
7
7
  debug
8
- } from "./chunk-USL7Y3QS.js";
8
+ } from "./chunk-Y7GZ5W2P.js";
9
9
  import {
10
10
  getCwd,
11
11
  logError,
12
12
  resolveXdgDataPath
13
- } from "./chunk-IW53WIHX.js";
13
+ } from "./chunk-5DKFC3LS.js";
14
14
 
15
15
  // src/services/plugins/customCommands.ts
16
16
  import { existsSync, readFileSync, readdirSync, statSync } from "fs";
@@ -2,11 +2,11 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  listPybAgentSessions
5
- } from "./chunk-N45BXBLA.js";
5
+ } from "./chunk-UEJFVTUZ.js";
6
6
  import {
7
7
  formatValidationResult,
8
8
  validatePluginOrMarketplacePath
9
- } from "./chunk-5V43DOQL.js";
9
+ } from "./chunk-UBMZOGHN.js";
10
10
  import {
11
11
  ConversationTracker,
12
12
  appendFinishState,
@@ -14,18 +14,18 @@ import {
14
14
  getConversationTrackerForContext,
15
15
  isFinishComplete,
16
16
  mapFinishReason
17
- } from "./chunk-HBJFKMOM.js";
17
+ } from "./chunk-6ZZJGF7W.js";
18
18
  import {
19
19
  beginReplSessionScope
20
20
  } from "./chunk-F4AXICO7.js";
21
21
  import {
22
22
  loadPybAgentSessionMessages
23
- } from "./chunk-QUXAQAMC.js";
23
+ } from "./chunk-V3Y26JD4.js";
24
24
  import {
25
25
  appendSessionCustomTitleRecord,
26
26
  appendSessionJsonlFromMessage,
27
27
  appendSessionTagRecord
28
- } from "./chunk-T3RYPQ6S.js";
28
+ } from "./chunk-VGMEYSLX.js";
29
29
  import {
30
30
  drainHookSystemPromptAdditions,
31
31
  getHookTranscriptPath,
@@ -37,7 +37,7 @@ import {
37
37
  runStopHooks,
38
38
  runUserPromptSubmitHooks,
39
39
  updateHookTranscriptForMessages
40
- } from "./chunk-2E76LUHW.js";
40
+ } from "./chunk-PUPISMZN.js";
41
41
  import {
42
42
  DEFAULT_OUTPUT_STYLE,
43
43
  getAvailableOutputStyles,
@@ -46,11 +46,11 @@ import {
46
46
  getOutputStyleSystemPromptAdditions,
47
47
  resolveOutputStyleName,
48
48
  setCurrentOutputStyle
49
- } from "./chunk-M5OYFLRQ.js";
49
+ } from "./chunk-6O5XYV7G.js";
50
50
  import {
51
51
  fetchCustomModels,
52
52
  getModelFeatures
53
- } from "./chunk-M47UTS3E.js";
53
+ } from "./chunk-UQNXHJMM.js";
54
54
  import {
55
55
  getSessionState
56
56
  } from "./chunk-XKYHFZEC.js";
@@ -58,7 +58,7 @@ import {
58
58
  queryLLM,
59
59
  queryQuick,
60
60
  verifyApiKey
61
- } from "./chunk-GE5XKGYX.js";
61
+ } from "./chunk-WGEY5O2I.js";
62
62
  import {
63
63
  DEFAULT_TIMEOUT_MS,
64
64
  FallbackToolUseRejectedMessage,
@@ -72,7 +72,7 @@ import {
72
72
  listMCPServers,
73
73
  loadMergedSettings,
74
74
  normalizeSandboxRuntimeConfigFromSettings
75
- } from "./chunk-SJJNXFZG.js";
75
+ } from "./chunk-PTZUDCNB.js";
76
76
  import {
77
77
  addMarketplace,
78
78
  disableSkillPlugin,
@@ -85,11 +85,11 @@ import {
85
85
  refreshMarketplaceAsync,
86
86
  removeMarketplace,
87
87
  uninstallSkillPlugin
88
- } from "./chunk-QV6CXOAX.js";
88
+ } from "./chunk-2I3SSZQJ.js";
89
89
  import {
90
90
  loadToolPermissionContextFromDisk,
91
91
  persistToolPermissionUpdateToDisk
92
- } from "./chunk-OVACIUTQ.js";
92
+ } from "./chunk-KVXEA4L5.js";
93
93
  import {
94
94
  applyToolPermissionContextUpdate,
95
95
  applyToolPermissionContextUpdates,
@@ -100,13 +100,13 @@ import {
100
100
  generateSystemReminders,
101
101
  resetReminderSession,
102
102
  systemReminderService
103
- } from "./chunk-NLF7L3QJ.js";
103
+ } from "./chunk-3RBQCL7S.js";
104
104
  import {
105
105
  clearAgentCache,
106
106
  getActiveAgents,
107
107
  getAgentByType,
108
108
  getAllAgents
109
- } from "./chunk-JOG752I4.js";
109
+ } from "./chunk-ZPIRAKGC.js";
110
110
  import {
111
111
  API_ERROR_MESSAGE_PREFIX,
112
112
  CANCEL_MESSAGE,
@@ -137,7 +137,7 @@ import {
137
137
  processUserInput,
138
138
  reorderMessages,
139
139
  stripSystemMessages
140
- } from "./chunk-6XH3TRPD.js";
140
+ } from "./chunk-KW2CWUJO.js";
141
141
  import {
142
142
  getRequestStatus,
143
143
  setRequestStatus,
@@ -167,7 +167,7 @@ import {
167
167
  normalizeFilePath,
168
168
  readTextContent,
169
169
  writeTextContent
170
- } from "./chunk-XWKIQEJB.js";
170
+ } from "./chunk-ARI6POM7.js";
171
171
  import {
172
172
  parseBlockEdits
173
173
  } from "./chunk-QWIBSCDN.js";
@@ -177,18 +177,18 @@ import {
177
177
  ParserRegistry,
178
178
  initParser,
179
179
  loadLanguage
180
- } from "./chunk-J7DBZSXB.js";
180
+ } from "./chunk-3WEFOYHX.js";
181
181
  import {
182
182
  getSettingsFileCandidates,
183
183
  loadSettingsWithLegacyFallback,
184
184
  readSettingsFile
185
- } from "./chunk-65TDOV2B.js";
185
+ } from "./chunk-F3K3SJFT.js";
186
186
  import {
187
187
  getCustomCommandDirectories,
188
188
  hasCustomCommands,
189
189
  loadCustomCommands,
190
190
  reloadCustomCommands
191
- } from "./chunk-5W2G6L5K.js";
191
+ } from "./chunk-PVDARHIF.js";
192
192
  import {
193
193
  getSessionPlugins
194
194
  } from "./chunk-BJSWTHRM.js";
@@ -196,7 +196,7 @@ import {
196
196
  ModelManager,
197
197
  getModelManager,
198
198
  isDefaultSlowAndCapableModel
199
- } from "./chunk-5CRIJVC6.js";
199
+ } from "./chunk-AKOR7LY4.js";
200
200
  import {
201
201
  getCodeStyle,
202
202
  getContext,
@@ -204,16 +204,16 @@ import {
204
204
  getIsGit,
205
205
  getProjectDocs,
206
206
  getProjectStructureStatisticsBlock
207
- } from "./chunk-4HAIU2DZ.js";
207
+ } from "./chunk-DAJ3TBNT.js";
208
208
  import {
209
209
  getRipgrepPath,
210
210
  getRipgrepPolicyMode,
211
211
  resolveRipgrepPolicy,
212
212
  ripGrep
213
- } from "./chunk-GQQFFG6Z.js";
213
+ } from "./chunk-THZYKZXQ.js";
214
214
  import {
215
215
  getTheme
216
- } from "./chunk-EPGBD3CD.js";
216
+ } from "./chunk-KR2MX5WZ.js";
217
217
  import {
218
218
  DEFAULT_GLOBAL_CONFIG,
219
219
  enableConfigs,
@@ -226,7 +226,7 @@ import {
226
226
  saveGlobalConfig,
227
227
  setAllPointersToModel,
228
228
  setModelPointer
229
- } from "./chunk-2ZBGUKZI.js";
229
+ } from "./chunk-EK6ANNY6.js";
230
230
  import {
231
231
  AbortError
232
232
  } from "./chunk-RQVLBMP7.js";
@@ -235,7 +235,7 @@ import {
235
235
  getCurrentRequest,
236
236
  logUserFriendly,
237
237
  markPhase
238
- } from "./chunk-USL7Y3QS.js";
238
+ } from "./chunk-Y7GZ5W2P.js";
239
239
  import {
240
240
  ASCII_LOGO,
241
241
  BunShell,
@@ -275,10 +275,10 @@ import {
275
275
  setCwd,
276
276
  shouldApplyToolOutputTruncation,
277
277
  truncateToolOutput
278
- } from "./chunk-IW53WIHX.js";
278
+ } from "./chunk-5DKFC3LS.js";
279
279
  import {
280
280
  MACRO
281
- } from "./chunk-CVQ76APY.js";
281
+ } from "./chunk-C3HQN7AW.js";
282
282
  import {
283
283
  __export
284
284
  } from "./chunk-I3J4JYES.js";
@@ -459,7 +459,7 @@ var getCommandSubcommandPrefix = memoize(
459
459
  var getCommandPrefix = memoize(
460
460
  async (command4, abortSignal) => {
461
461
  const { systemPrompt, userPrompt } = buildBashCommandPrefixDetectionPrompt(command4);
462
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-2LHXBHUL.js");
462
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryQuick: queryQuick2 } = await import("./llm-W44XPBXA.js");
463
463
  const response = await queryQuick2({
464
464
  systemPrompt,
465
465
  userPrompt,
@@ -4261,7 +4261,7 @@ function formatParseError(error) {
4261
4261
  return error instanceof Error ? error.message : String(error);
4262
4262
  }
4263
4263
  async function defaultGateQuery(args) {
4264
- const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-2LHXBHUL.js");
4264
+ const { API_ERROR_MESSAGE_PREFIX: API_ERROR_MESSAGE_PREFIX2, queryLLM: queryLLM2 } = await import("./llm-W44XPBXA.js");
4265
4265
  const queryLLMFn = args.queryLLMOverride ?? queryLLM2;
4266
4266
  const messages = [
4267
4267
  {
@@ -6658,7 +6658,7 @@ var FileEditTool = {
6658
6658
  const originalFileContent = currentFileContent;
6659
6659
  let totalPatch = [];
6660
6660
  const { SmartEdit } = await import("./smart-edit-AWHJDSU6.js");
6661
- const { findLspAnchor } = await import("./lspAnchor-CQGXWIFN.js");
6661
+ const { findLspAnchor } = await import("./lspAnchor-FFN4HTAE.js");
6662
6662
  for (const op of editOperations) {
6663
6663
  const normalizedSearch = normalizeLineEndings(op.search);
6664
6664
  const normalizedReplace = normalizeLineEndings(op.replace);
@@ -11940,7 +11940,7 @@ async function createAndStoreApiKey(accessToken) {
11940
11940
  }
11941
11941
  saveGlobalConfig(config2);
11942
11942
  try {
11943
- const { resetAnthropicClient } = await import("./llm-2LHXBHUL.js");
11943
+ const { resetAnthropicClient } = await import("./llm-W44XPBXA.js");
11944
11944
  resetAnthropicClient();
11945
11945
  } catch {
11946
11946
  }
@@ -16307,7 +16307,7 @@ async function refreshPluginRuntimeFromInstalls() {
16307
16307
  const existingRoots = getSessionPlugins().map((p) => p.rootDir);
16308
16308
  const dirs = Array.from(/* @__PURE__ */ new Set([...existingRoots, ...installedRoots]));
16309
16309
  if (dirs.length === 0) return [];
16310
- const { configureSessionPlugins } = await import("./pluginRuntime-B63QTH2M.js");
16310
+ const { configureSessionPlugins } = await import("./pluginRuntime-SZQ464L4.js");
16311
16311
  const { errors } = await configureSessionPlugins({ pluginDirs: dirs });
16312
16312
  return errors;
16313
16313
  }
@@ -16976,7 +16976,7 @@ async function call(onDone, context) {
16976
16976
  ModelConfig,
16977
16977
  {
16978
16978
  onClose: () => {
16979
- import("./model-UGW6NH5K.js").then(({ reloadModelManager: reloadModelManager2 }) => {
16979
+ import("./model-N4HOF2SI.js").then(({ reloadModelManager: reloadModelManager2 }) => {
16980
16980
  reloadModelManager2();
16981
16981
  triggerModelConfigChange();
16982
16982
  onDone();
@@ -25180,7 +25180,7 @@ function useStatusLine() {
25180
25180
  // src/ui/components/PromptInput.tsx
25181
25181
  async function interpretHashCommand(input) {
25182
25182
  try {
25183
- const { queryQuick: queryQuick2 } = await import("./llm-2LHXBHUL.js");
25183
+ const { queryQuick: queryQuick2 } = await import("./llm-W44XPBXA.js");
25184
25184
  const systemPrompt = [
25185
25185
  "You're helping the user structure notes that will be added to their PYB.md file.",
25186
25186
  "Format the user's input into a well-structured note that will be useful for later reference.",
@@ -25493,7 +25493,7 @@ function PromptInput({
25493
25493
  if (messages2.length) {
25494
25494
  if (mode === "bash") {
25495
25495
  onQuery(messages2, newAbortController).then(async () => {
25496
- const { getCwd: getCwd2 } = await import("./state-ICG3MH74.js");
25496
+ const { getCwd: getCwd2 } = await import("./state-NNMNADWT.js");
25497
25497
  setCurrentPwd(getCwd2());
25498
25498
  });
25499
25499
  } else {
@@ -29948,7 +29948,7 @@ import { homedir as homedir8 } from "os";
29948
29948
  // src/commands/agents/generation.ts
29949
29949
  import { randomUUID as randomUUID6 } from "crypto";
29950
29950
  async function generateAgentWithClaude(prompt) {
29951
- const { queryModel } = await import("./llm-2LHXBHUL.js");
29951
+ const { queryModel } = await import("./llm-W44XPBXA.js");
29952
29952
  const systemPrompt = `You are an expert at creating AI agent configurations. Based on the user's description, generate a specialized agent configuration.
29953
29953
 
29954
29954
  Return your response as a JSON object with exactly these fields:
@@ -4,7 +4,7 @@ import {
4
4
  BunShell,
5
5
  execFileNoThrow,
6
6
  logError
7
- } from "./chunk-IW53WIHX.js";
7
+ } from "./chunk-5DKFC3LS.js";
8
8
 
9
9
  // src/utils/system/ripgrep.ts
10
10
  import { findActualExecutable } from "spawn-rx";
@@ -65,12 +65,67 @@ function getDirname() {
65
65
  return dirname(fileURLToPath(import.meta.url));
66
66
  }
67
67
  }
68
+ function normalizePath(value) {
69
+ return value.replaceAll("/", sep).replaceAll("\\", sep);
70
+ }
71
+ function findPackageRootFrom(start) {
72
+ let cur = start;
73
+ for (let i = 0; i < 30; i += 1) {
74
+ if (existsSync(join(cur, "package.json"))) return cur;
75
+ const next = dirname(cur);
76
+ if (next === cur) break;
77
+ cur = next;
78
+ }
79
+ return null;
80
+ }
81
+ function getRipgrepResourcesDirCandidates(input) {
82
+ const env = input?.env ?? process.env;
83
+ const candidates = [];
84
+ const explicitDir = env.PYB_RIPGREP_RESOURCE_DIR?.trim();
85
+ if (explicitDir) {
86
+ candidates.push(explicitDir);
87
+ }
88
+ const packageRoot = env.PYB_PACKAGE_ROOT?.trim();
89
+ if (packageRoot) {
90
+ candidates.push(join(packageRoot, "resources", "ripgrep"));
91
+ }
92
+ const dirnameValue = input?.runtimeDir ?? getDirname();
93
+ candidates.push(join(dirnameValue, "../../../resources/ripgrep"));
94
+ candidates.push(join(dirnameValue, "../../../../resources/ripgrep"));
95
+ candidates.push(join(dirnameValue, "../../resources/ripgrep"));
96
+ candidates.push(join(dirnameValue, "../../../../../resources/ripgrep"));
97
+ const argv1 = input?.argvEntry ?? process.argv?.[1];
98
+ if (argv1) {
99
+ const argvDir = dirname(argv1);
100
+ const root = findPackageRootFrom(argvDir);
101
+ if (root) {
102
+ candidates.push(join(root, "resources", "ripgrep"));
103
+ }
104
+ }
105
+ const unique = [];
106
+ const seen = /* @__PURE__ */ new Set();
107
+ for (const item of candidates) {
108
+ const normalized = normalizePath(item);
109
+ if (!seen.has(normalized)) {
110
+ seen.add(normalized);
111
+ unique.push(item);
112
+ }
113
+ }
114
+ return unique;
115
+ }
68
116
  function resolveRipgrepResourcesDir() {
69
- const dirname2 = getDirname();
70
- if (dirname2.includes("dist") || dirname2.includes("node_modules")) {
71
- return join(dirname2, "../../../../resources/ripgrep");
117
+ const explicitDir = process.env.PYB_RIPGREP_RESOURCE_DIR?.trim();
118
+ if (explicitDir) {
119
+ return explicitDir;
120
+ }
121
+ const candidates = getRipgrepResourcesDirCandidates();
122
+ for (const candidate of candidates) {
123
+ const manifestPath = join(candidate, "manifest.json");
124
+ if (existsSync(manifestPath)) {
125
+ return candidate;
126
+ }
72
127
  }
73
- return join(dirname2, "../../../resources/ripgrep");
128
+ return candidates[0] ?? join(getDirname(), "../../../resources/ripgrep");
74
129
  }
75
130
  function getRipgrepManifestPath() {
76
131
  return join(resolveRipgrepResourcesDir(), "manifest.json");
@@ -113,7 +168,12 @@ function getRipgrepPolicyMode(policy) {
113
168
  function loadRipgrepManifest() {
114
169
  const manifestPath = getRipgrepManifestPath();
115
170
  if (!existsSync(manifestPath)) {
116
- throw new Error(`ripgrep checksum mismatch: manifest missing at ${manifestPath}`);
171
+ const tried = getRipgrepResourcesDirCandidates().map(
172
+ (dir) => join(dir, "manifest.json")
173
+ );
174
+ throw new Error(
175
+ `ripgrep checksum mismatch: manifest missing at ${manifestPath}; tried=${tried.join(" | ")}`
176
+ );
117
177
  }
118
178
  const rawBuffer = readFileSync(manifestPath);
119
179
  const raw = decodeManifestContent(rawBuffer);
@@ -326,13 +386,21 @@ async function resolveRipgrepPathOrThrow() {
326
386
  }
327
387
  const policy = resolveRipgrepPolicy();
328
388
  const resolutionErrors = [];
389
+ const resolutionErrorSet = /* @__PURE__ */ new Set();
390
+ const pushResolutionError = (error) => {
391
+ const message = String(error instanceof Error ? error.message : error);
392
+ if (!resolutionErrorSet.has(message)) {
393
+ resolutionErrorSet.add(message);
394
+ resolutionErrors.push(message);
395
+ }
396
+ };
329
397
  if (policy.allowVendorFallback && (policy.vendorFirst || policy.offlineStrict)) {
330
398
  try {
331
399
  const vendorBinaryPath = resolveVendorRipgrepBinaryPath();
332
400
  d("Using vendor ripgrep: %s", vendorBinaryPath);
333
401
  return vendorBinaryPath;
334
402
  } catch (error) {
335
- resolutionErrors.push(String(error instanceof Error ? error.message : error));
403
+ pushResolutionError(error);
336
404
  if (policy.offlineStrict) {
337
405
  throw new Error(
338
406
  `ripgrep strict offline mode: vendor resolution failed: ${resolutionErrors.join("; ")}`
@@ -353,7 +421,7 @@ async function resolveRipgrepPathOrThrow() {
353
421
  d("Using cached ripgrep: %s", cached);
354
422
  return cached;
355
423
  } catch (error) {
356
- resolutionErrors.push(String(error instanceof Error ? error.message : error));
424
+ pushResolutionError(error);
357
425
  }
358
426
  }
359
427
  if (policy.allowVendorFallback) {
@@ -362,7 +430,7 @@ async function resolveRipgrepPathOrThrow() {
362
430
  d("Using vendor ripgrep fallback: %s", vendorBinaryPath);
363
431
  return vendorBinaryPath;
364
432
  } catch (error) {
365
- resolutionErrors.push(String(error instanceof Error ? error.message : error));
433
+ pushResolutionError(error);
366
434
  }
367
435
  }
368
436
  throw new Error(
@@ -620,6 +688,7 @@ async function tree(cwd, limit = 50, abortSignal) {
620
688
  }
621
689
 
622
690
  export {
691
+ getRipgrepResourcesDirCandidates,
623
692
  resolveRipgrepPolicy,
624
693
  getRipgrepPolicyMode,
625
694
  verifyRipgrepBinaryIntegrity,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/utils/system/ripgrep.ts"],
4
+ "sourcesContent": ["import { findActualExecutable } from 'spawn-rx'\nimport { memoize } from 'lodash-es'\nimport {\n chmodSync,\n closeSync,\n copyFileSync,\n existsSync,\n mkdirSync,\n mkdtempSync,\n openSync,\n readdirSync,\n readFileSync,\n rmSync,\n statSync,\n writeFileSync,\n} from 'node:fs'\nimport { createHash } from 'node:crypto'\nimport { execFile, spawn } from 'child_process'\nimport debug from 'debug'\nimport { quote } from 'shell-quote'\nimport { logError } from '@utils/log'\nimport { execFileNoThrow } from '@utils/system/execFileNoThrow'\nimport type { BunShellSandboxOptions } from '@utils/bun/shell'\nimport { BunShell } from '@utils/bun/shell'\nimport { basename, dirname, isAbsolute, join, relative, sep } from 'path'\nimport envPaths from 'env-paths'\nimport { unzipSync } from 'fflate'\nimport { fileURLToPath } from 'node:url'\n\nconst d = debug('pyb:ripgrep')\n\nconst DEFAULT_RIPGREP_VERSION = '14.1.1'\nconst PLATFORM_CONFIG = {\n 'arm64-darwin': { platform: 'aarch64-apple-darwin', extension: 'tar.gz' },\n 'arm64-linux': { platform: 'aarch64-unknown-linux-gnu', extension: 'tar.gz' },\n 'x64-darwin': { platform: 'x86_64-apple-darwin', extension: 'tar.gz' },\n 'x64-linux': { platform: 'x86_64-unknown-linux-musl', extension: 'tar.gz' },\n 'x64-win32': { platform: 'x86_64-pc-windows-msvc', extension: 'zip' },\n} as const\n\nfunction isTruthyEnv(value: string | undefined): boolean {\n if (!value) return false\n return ['1', 'true', 'yes', 'on'].includes(value.trim().toLowerCase())\n}\n\nfunction getRipgrepVersion(): string {\n const override = process.env.PYB_RIPGREP_VERSION?.trim()\n return override || DEFAULT_RIPGREP_VERSION\n}\n\nfunction getRipgrepBinaryName(): string {\n return process.platform === 'win32' ? 'rg.exe' : 'rg'\n}\n\nfunction getPlatformConfig() {\n const platformKey = `${process.arch}-${process.platform}` as keyof typeof PLATFORM_CONFIG\n const config = PLATFORM_CONFIG[platformKey]\n if (!config) {\n throw new Error(`Unsupported ripgrep platform: ${platformKey}`)\n }\n return { platformKey, ...config }\n}\n\nfunction getDirname() {\n try {\n return __dirname\n } catch {\n return dirname(fileURLToPath(import.meta.url))\n }\n}\n\nfunction normalizePath(value: string) {\n return value.replaceAll('/', sep).replaceAll('\\\\', sep)\n}\n\nfunction parentDir(path: string, levels: number) {\n let cur = path\n for (let i = 0; i < levels; i += 1) {\n cur = dirname(cur)\n }\n return cur\n}\n\nfunction findPackageRootFrom(start: string): string | null {\n let cur = start\n for (let i = 0; i < 30; i += 1) {\n if (existsSync(join(cur, 'package.json'))) return cur\n const next = dirname(cur)\n if (next === cur) break\n cur = next\n }\n return null\n}\n\nexport function getRipgrepResourcesDirCandidates(input?: {\n env?: NodeJS.ProcessEnv\n runtimeDir?: string\n argvEntry?: string\n}): string[] {\n const env = input?.env ?? process.env\n const candidates: string[] = []\n\n const explicitDir = env.PYB_RIPGREP_RESOURCE_DIR?.trim()\n if (explicitDir) {\n candidates.push(explicitDir)\n }\n\n const packageRoot = env.PYB_PACKAGE_ROOT?.trim()\n if (packageRoot) {\n candidates.push(join(packageRoot, 'resources', 'ripgrep'))\n }\n\n const dirnameValue = input?.runtimeDir ?? getDirname()\n candidates.push(join(dirnameValue, '../../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../resources/ripgrep'))\n candidates.push(join(dirnameValue, '../../../../../resources/ripgrep'))\n\n const argv1 = input?.argvEntry ?? process.argv?.[1]\n if (argv1) {\n const argvDir = dirname(argv1)\n const root = findPackageRootFrom(argvDir)\n if (root) {\n candidates.push(join(root, 'resources', 'ripgrep'))\n }\n }\n\n const unique: string[] = []\n const seen = new Set<string>()\n for (const item of candidates) {\n const normalized = normalizePath(item)\n if (!seen.has(normalized)) {\n seen.add(normalized)\n unique.push(item)\n }\n }\n return unique\n}\n\nfunction resolveRipgrepResourcesDir() {\n const explicitDir = process.env.PYB_RIPGREP_RESOURCE_DIR?.trim()\n if (explicitDir) {\n return explicitDir\n }\n const candidates = getRipgrepResourcesDirCandidates()\n for (const candidate of candidates) {\n const manifestPath = join(candidate, 'manifest.json')\n if (existsSync(manifestPath)) {\n return candidate\n }\n }\n return candidates[0] ?? join(getDirname(), '../../../resources/ripgrep')\n}\n\nfunction getRipgrepManifestPath() {\n return join(resolveRipgrepResourcesDir(), 'manifest.json')\n}\n\nfunction isVendorFallbackEnabled(env: NodeJS.ProcessEnv = process.env) {\n return isTruthyEnv(env.PYB_RIPGREP_VENDOR_ENABLED)\n}\n\nfunction isFalsyEnv(value: string | undefined): boolean {\n if (!value) return false\n return ['0', 'false', 'no', 'off'].includes(value.trim().toLowerCase())\n}\n\nfunction readBooleanEnv(\n env: NodeJS.ProcessEnv,\n key: string,\n defaultValue: boolean,\n): boolean {\n const raw = env[key]\n if (raw === undefined) return defaultValue\n if (isTruthyEnv(raw)) return true\n if (isFalsyEnv(raw)) return false\n return defaultValue\n}\n\nexport type RipgrepPolicy = {\n vendorFirst: boolean\n offlineStrict: boolean\n allowNetworkFallback: boolean\n allowPathFallback: boolean\n allowVendorFallback: boolean\n}\n\nexport function resolveRipgrepPolicy(\n env: NodeJS.ProcessEnv = process.env,\n): RipgrepPolicy {\n const offlineStrict = readBooleanEnv(env, 'PYB_OFFLINE_STRICT', false)\n const vendorFirst = readBooleanEnv(env, 'PYB_VENDOR_FIRST', true)\n const allowNetworkFallback =\n !offlineStrict && readBooleanEnv(env, 'PYB_ALLOW_NETWORK_FALLBACK', false)\n const preferBundled = isTruthyEnv(env.USE_BUILTIN_RIPGREP)\n const allowPathFallback = !offlineStrict && !preferBundled\n const allowVendorFallback = vendorFirst || isVendorFallbackEnabled(env) || offlineStrict\n return {\n vendorFirst,\n offlineStrict,\n allowNetworkFallback,\n allowPathFallback,\n allowVendorFallback,\n }\n}\n\nexport function getRipgrepPolicyMode(policy: RipgrepPolicy): string {\n if (policy.offlineStrict) {\n return 'strict-offline'\n }\n return policy.vendorFirst ? 'vendor-first' : 'path-first'\n}\n\ntype RipgrepManifest = {\n version?: string\n platforms?: Record<string, { binary?: string; sha256?: string }>\n}\n\nfunction loadRipgrepManifest(): RipgrepManifest {\n const manifestPath = getRipgrepManifestPath()\n if (!existsSync(manifestPath)) {\n const tried = getRipgrepResourcesDirCandidates().map(dir =>\n join(dir, 'manifest.json'),\n )\n throw new Error(\n `ripgrep checksum mismatch: manifest missing at ${manifestPath}; tried=${tried.join(' | ')}`,\n )\n }\n const rawBuffer = readFileSync(manifestPath)\n const raw = decodeManifestContent(rawBuffer)\n const parsed = JSON.parse(raw) as RipgrepManifest\n if (!parsed.platforms || typeof parsed.platforms !== 'object') {\n throw new Error('ripgrep checksum mismatch: manifest platforms missing')\n }\n return parsed\n}\n\nfunction decodeManifestContent(buffer: Buffer) {\n if (buffer.length >= 2) {\n if (buffer[0] === 0xff && buffer[1] === 0xfe) {\n return buffer.subarray(2).toString('utf16le')\n }\n if (buffer[0] === 0xfe && buffer[1] === 0xff) {\n throw new Error('ripgrep checksum mismatch: utf16be manifest is not supported')\n }\n }\n return buffer.toString('utf8').replace(/^\\uFEFF/, '')\n}\n\nfunction sha256File(filePath: string) {\n return createHash('sha256').update(readFileSync(filePath)).digest('hex')\n}\n\nexport function verifyRipgrepBinaryIntegrity(input: {\n binaryPath: string\n platformKey: keyof typeof PLATFORM_CONFIG\n}) {\n const manifest = loadRipgrepManifest()\n const platformEntry = manifest.platforms?.[input.platformKey]\n if (!platformEntry?.sha256) {\n throw new Error(\n `ripgrep checksum mismatch: sha256 missing for platform ${input.platformKey}`,\n )\n }\n const actualSha256 = sha256File(input.binaryPath)\n if (actualSha256 !== platformEntry.sha256) {\n throw new Error(\n `ripgrep checksum mismatch for ${input.platformKey}: expected ${platformEntry.sha256}, got ${actualSha256}`,\n )\n }\n}\n\nexport function resolveVendorRipgrepBinaryPath() {\n const { platformKey } = getPlatformConfig()\n const manifest = loadRipgrepManifest()\n const platformEntry = manifest.platforms?.[platformKey]\n if (!platformEntry?.binary) {\n throw new Error(`vendor ripgrep binary missing for ${platformKey}`)\n }\n const vendorBinaryPath = join(\n resolveRipgrepResourcesDir(),\n platformKey,\n platformEntry.binary,\n )\n if (!existsSync(vendorBinaryPath)) {\n throw new Error(`vendor ripgrep binary missing for ${platformKey}`)\n }\n verifyRipgrepBinaryIntegrity({ binaryPath: vendorBinaryPath, platformKey })\n return vendorBinaryPath\n}\n\nfunction getRipgrepCacheRoot(): string {\n const override = process.env.PYB_RIPGREP_CACHE_DIR?.trim()\n if (override) return override\n const paths = envPaths('pyb')\n return join(paths.cache, 'ripgrep')\n}\n\nfunction getDownloadBaseUrl(version: string): string {\n const override = process.env.PYB_RIPGREP_DOWNLOAD_BASE_URL?.trim()\n if (!override) {\n return `https://github.com/BurntSushi/ripgrep/releases/download/${version}`\n }\n if (override.includes('{version}')) {\n return override.replace('{version}', version)\n }\n return `${override.replace(/\\/$/, '')}/${version}`\n}\n\nasync function delay(ms: number): Promise<void> {\n await new Promise(resolve => setTimeout(resolve, ms))\n}\n\nfunction findFileRecursive(root: string, filename: string): string | null {\n const entries = readdirSync(root, { withFileTypes: true })\n for (const entry of entries) {\n const full = join(root, entry.name)\n if (entry.isDirectory()) {\n const found = findFileRecursive(full, filename)\n if (found) return found\n } else if (entry.isFile() && entry.name === filename) {\n return full\n }\n }\n return null\n}\n\nasync function execFileChecked(\n command: string,\n args: string[],\n options: { cwd: string },\n): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n execFile(\n command,\n args,\n { cwd: options.cwd, maxBuffer: 1_000_000 },\n (error, _stdout, stderr) => {\n if (error) {\n reject(\n new Error(\n `${command} ${args.join(' ')} failed: ${stderr || error.message}`,\n ),\n )\n } else {\n resolve()\n }\n },\n )\n })\n}\n\nasync function acquireLock(\n lockPath: string,\n readyPath: string,\n): Promise<number | null> {\n const start = Date.now()\n while (true) {\n try {\n return openSync(lockPath, 'wx')\n } catch (error: any) {\n if (error?.code !== 'EEXIST') {\n throw error\n }\n if (existsSync(readyPath)) return null\n if (Date.now() - start > 20000) {\n throw new Error('Timed out waiting for ripgrep download lock')\n }\n await delay(100)\n }\n }\n}\n\nasync function downloadRipgrepTo(cacheDir: string): Promise<string> {\n const { platform, extension, platformKey } = getPlatformConfig()\n const version = getRipgrepVersion()\n const filename = `ripgrep-${version}-${platform}.${extension}`\n const url = `${getDownloadBaseUrl(version)}/${filename}`\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to download ripgrep (${response.status}): ${url}`,\n )\n }\n const buffer = new Uint8Array(await response.arrayBuffer())\n const tempDir = mkdtempSync(join(cacheDir, 'tmp-'))\n try {\n const binaryName = getRipgrepBinaryName()\n const targetPath = join(cacheDir, binaryName)\n if (extension === 'zip') {\n const files = unzipSync(buffer)\n const entryName = Object.keys(files).find(name =>\n name.endsWith(binaryName),\n )\n if (!entryName) {\n throw new Error(`ripgrep binary not found in zip: ${filename}`)\n }\n writeFileSync(targetPath, files[entryName]!)\n } else {\n const archivePath = join(tempDir, filename)\n const extractDir = join(tempDir, 'extract')\n mkdirSync(extractDir, { recursive: true })\n writeFileSync(archivePath, buffer)\n await execFileChecked('tar', ['-xzf', archivePath, '-C', extractDir], {\n cwd: tempDir,\n })\n const extracted = findFileRecursive(extractDir, binaryName)\n if (!extracted) {\n throw new Error(\n `ripgrep binary not found after extraction: ${platformKey}`,\n )\n }\n copyFileSync(extracted, targetPath)\n }\n if (process.platform !== 'win32') {\n chmodSync(targetPath, 0o755)\n }\n return targetPath\n } finally {\n rmSync(tempDir, { recursive: true, force: true })\n }\n}\n\nasync function ensureCachedRipgrep(): Promise<string> {\n const version = getRipgrepVersion()\n const { platformKey } = getPlatformConfig()\n const cacheRoot = getRipgrepCacheRoot()\n const cacheDir = join(cacheRoot, version, platformKey)\n const binaryPath = join(cacheDir, getRipgrepBinaryName())\n if (existsSync(binaryPath)) {\n verifyRipgrepBinaryIntegrity({ binaryPath, platformKey })\n return binaryPath\n }\n mkdirSync(cacheDir, { recursive: true })\n const lockPath = join(cacheDir, '.lock')\n const lockFd = await acquireLock(lockPath, binaryPath)\n if (!lockFd) return binaryPath\n try {\n if (!existsSync(binaryPath)) {\n await downloadRipgrepTo(cacheDir)\n }\n verifyRipgrepBinaryIntegrity({ binaryPath, platformKey })\n return binaryPath\n } finally {\n try {\n closeSync(lockFd)\n } catch {}\n rmSync(lockPath, { force: true })\n }\n}\n\nasync function resolveRipgrepPathOrThrow(): Promise<string> {\n const explicit = process.env.PYB_RIPGREP_PATH\n if (explicit) {\n if (!existsSync(explicit)) {\n throw new Error(`PYB_RIPGREP_PATH points to a missing file: ${explicit}`)\n }\n return explicit\n }\n const policy = resolveRipgrepPolicy()\n const resolutionErrors: string[] = []\n const resolutionErrorSet = new Set<string>()\n const pushResolutionError = (error: unknown) => {\n const message = String(error instanceof Error ? error.message : error)\n if (!resolutionErrorSet.has(message)) {\n resolutionErrorSet.add(message)\n resolutionErrors.push(message)\n }\n }\n\n if (policy.allowVendorFallback && (policy.vendorFirst || policy.offlineStrict)) {\n try {\n const vendorBinaryPath = resolveVendorRipgrepBinaryPath()\n d('Using vendor ripgrep: %s', vendorBinaryPath)\n return vendorBinaryPath\n } catch (error) {\n pushResolutionError(error)\n if (policy.offlineStrict) {\n throw new Error(\n `ripgrep strict offline mode: vendor resolution failed: ${resolutionErrors.join('; ')}`,\n )\n }\n }\n }\n\n if (policy.allowPathFallback) {\n const { cmd } = findActualExecutable('rg', [])\n d(`ripgrep initially resolved as: ${cmd}`)\n if (cmd !== 'rg') {\n return cmd\n }\n }\n\n if (policy.allowNetworkFallback) {\n try {\n const cached = await ensureCachedRipgrep()\n d('Using cached ripgrep: %s', cached)\n return cached\n } catch (error) {\n pushResolutionError(error)\n }\n }\n\n if (policy.allowVendorFallback) {\n try {\n const vendorBinaryPath = resolveVendorRipgrepBinaryPath()\n d('Using vendor ripgrep fallback: %s', vendorBinaryPath)\n return vendorBinaryPath\n } catch (error) {\n pushResolutionError(error)\n }\n }\n\n throw new Error(\n `Unable to resolve ripgrep path under current policy (${getRipgrepPolicyMode(policy)}): ${resolutionErrors.join('; ') || 'no eligible fallback'}`,\n )\n}\n\nexport const getRipgrepPath = memoize(\n async (): Promise<string> => resolveRipgrepPathOrThrow(),\n)\n\ntype RipGrepStatus = {\n files: string[]\n status: 'ok' | 'error'\n code?: number\n}\n\nexport async function ripGrepWithStatus(\n args: string[],\n target: string,\n abortSignal: AbortSignal,\n options?: { sandbox?: BunShellSandboxOptions },\n): Promise<RipGrepStatus> {\n await codesignRipgrepIfNecessary()\n const rg = await getRipgrepPath()\n d('ripgrep called: %s %o', rg, target, args)\n\n if (options?.sandbox?.enabled === true) {\n const cmd = quote([rg, ...args, target])\n const result = await BunShell.getInstance().exec(cmd, abortSignal, 10_000, {\n sandbox: options.sandbox,\n })\n if (result.code === 1) return { files: [], status: 'ok', code: 1 }\n if (result.code !== 0) {\n logError(`ripgrep failed with exit code ${result.code}: ${result.stderr}`)\n return { files: [], status: 'error', code: result.code }\n }\n return {\n files: result.stdout.trim().split('\\n').filter(Boolean),\n status: 'ok',\n code: 0,\n }\n }\n\n return new Promise(resolve => {\n const bun = (globalThis as any).Bun\n if (bun?.spawn && typeof bun.spawn === 'function') {\n const files: string[] = []\n let buffer = ''\n let stderr = ''\n const decoder = new TextDecoder()\n const proc = bun.spawn([rg, ...args, target], {\n stdout: 'pipe',\n stderr: 'pipe',\n signal: abortSignal,\n })\n const readStdout = async () => {\n const reader = proc.stdout.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n const parts = buffer.split(/\\r?\\n/)\n buffer = parts.pop() ?? ''\n for (const line of parts) {\n if (line) files.push(line)\n }\n }\n reader.releaseLock()\n }\n const readStderr = async () => {\n const reader = proc.stderr.getReader()\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n stderr += decoder.decode(value, { stream: true })\n }\n reader.releaseLock()\n }\n Promise.all([readStdout(), readStderr(), proc.exited])\n .then(([_, __, exitCode]) => {\n if (buffer) files.push(buffer)\n if (exitCode && exitCode !== 1) {\n if (stderr) {\n logError(`ripgrep failed with exit code ${exitCode}: ${stderr}`)\n }\n resolve({ files: [], status: 'error', code: exitCode })\n return\n }\n resolve({ files, status: 'ok', code: exitCode ?? 0 })\n })\n .catch(error => {\n d('ripgrep error: %o', error)\n logError(error)\n resolve({ files: [], status: 'error' })\n })\n return\n }\n const proc = spawn(rg, [...args, target], {\n signal: abortSignal,\n timeout: 10_000,\n })\n const files: string[] = []\n let buffer = ''\n let stderr = ''\n proc.stdout?.on('data', chunk => {\n buffer += chunk.toString()\n const parts = buffer.split(/\\r?\\n/)\n buffer = parts.pop() ?? ''\n for (const line of parts) {\n if (line) files.push(line)\n }\n })\n proc.stderr?.on('data', chunk => {\n stderr += chunk.toString()\n })\n proc.on('error', error => {\n d('ripgrep error: %o', error)\n logError(error)\n })\n proc.on('close', code => {\n if (buffer.trim().length > 0) files.push(buffer.trim())\n if (code && code !== 1) {\n if (stderr) {\n logError(`ripgrep failed with exit code ${code}: ${stderr}`)\n }\n resolve({ files: [], status: 'error', code })\n return\n }\n resolve({\n files,\n status: 'ok',\n code: code ?? 0,\n })\n })\n })\n}\n\nexport async function ripGrep(\n args: string[],\n target: string,\n abortSignal: AbortSignal,\n options?: { sandbox?: BunShellSandboxOptions },\n): Promise<string[]> {\n const result = await ripGrepWithStatus(args, target, abortSignal, options)\n return result.files\n}\n\nexport async function listAllContentFiles(\n path: string,\n abortSignal: AbortSignal,\n limit: number,\n): Promise<string[]> {\n try {\n d('listAllContentFiles called: %s', path)\n return (await ripGrep(['-l', '.', path], path, abortSignal)).slice(0, limit)\n } catch (e) {\n d('listAllContentFiles failed: %o', e)\n\n logError(e)\n return []\n }\n}\n\nlet alreadyDoneSignCheck = false\nasync function codesignRipgrepIfNecessary(): Promise<void> {\n if (process.platform !== 'darwin' || alreadyDoneSignCheck) {\n return\n }\n\n alreadyDoneSignCheck = true\n\n d('checking if ripgrep is already signed')\n const lines = (\n await execFileNoThrow(\n 'codesign',\n ['-vv', '-d', await getRipgrepPath()],\n undefined,\n undefined,\n false,\n )\n ).stdout.split('\\n')\n\n const needsSigned = lines.find(line => line.includes('linker-signed'))\n if (!needsSigned) {\n d('seems to be already signed')\n return\n }\n\n try {\n d('signing ripgrep')\n const signResult = await execFileNoThrow('codesign', [\n '--sign',\n '-',\n '--force',\n '--preserve-metadata=entitlements,requirements,flags,runtime',\n await getRipgrepPath(),\n ])\n\n if (signResult.code !== 0) {\n d('failed to sign ripgrep: %o', signResult)\n logError(\n `Failed to sign ripgrep: ${signResult.stdout} ${signResult.stderr}`,\n )\n }\n\n d('removing quarantine')\n const quarantineResult = await execFileNoThrow('xattr', [\n '-d',\n 'com.apple.quarantine',\n await getRipgrepPath(),\n ])\n\n if (quarantineResult.code !== 0) {\n d('failed to remove quarantine: %o', quarantineResult)\n logError(\n `Failed to remove quarantine: ${quarantineResult.stdout} ${quarantineResult.stderr}`,\n )\n }\n } catch (e) {\n d('failed during sign: %o', e)\n logError(e)\n }\n}\n\nexport function resetRipgrepPathCacheForTests(): void {\n ;(getRipgrepPath as any).cache?.clear?.()\n alreadyDoneSignCheck = false\n}\n\nexport function filesToTree(\n files: string[],\n cwd: string,\n limit: number = 50,\n): string {\n if (files.length === 0) return ''\n\n const relFiles = files.map(f => {\n if (isAbsolute(f)) return relative(cwd, f)\n return f\n })\n\n // Build Trie\n type Node = { [key: string]: Node }\n const treeRoot: Node = {}\n for (const f of relFiles) {\n const parts = f.split(sep)\n let cur = treeRoot\n for (const p of parts) {\n if (!cur[p]) cur[p] = {}\n cur = cur[p]\n }\n }\n\n // BFS to mark visible nodes\n const visible = new Set<Node>()\n const queue: Node[] = [treeRoot]\n visible.add(treeRoot)\n let visibleCount = 0\n\n while (queue.length > 0) {\n const node = queue.shift()!\n const children = Object.values(node)\n\n // Check if we can add children\n for (const child of children) {\n if (visibleCount < limit) {\n visible.add(child)\n visibleCount++\n queue.push(child)\n } else {\n break\n }\n }\n if (visibleCount >= limit) break\n }\n\n // Render DFS\n let output = ''\n\n function render(node: Node, prefix: string, isLast: boolean, name: string) {\n if (node !== treeRoot) {\n const connector = isLast ? '\u2514\u2500\u2500 ' : '\u251C\u2500\u2500 '\n output += `${prefix}${connector}${name}\\n`\n } else {\n output += `${name}\\n`\n }\n\n const childrenKeys = Object.keys(node).sort()\n const visibleChildren = childrenKeys.filter(k => visible.has(node[k]))\n const hiddenCount = childrenKeys.length - visibleChildren.length\n\n const childPrefix =\n node === treeRoot ? '' : prefix + (isLast ? ' ' : '\u2502 ')\n\n for (let i = 0; i < visibleChildren.length; i++) {\n const key = visibleChildren[i]\n const isChildLast = i === visibleChildren.length - 1 && hiddenCount === 0\n render(node[key], childPrefix, isChildLast, key)\n }\n\n if (hiddenCount > 0) {\n // If we have hidden children, we append truncation info.\n // The connector depends on whether we showed any children.\n // If visibleChildren.length > 0, the last one used \u251C\u2500\u2500, so we use \u2514\u2500\u2500.\n // If visibleChildren.length == 0, we use \u2514\u2500\u2500.\n const connector = '\u2514\u2500\u2500 '\n output += `${childPrefix}${connector}... [${hiddenCount} truncated]\\n`\n }\n }\n\n render(treeRoot, '', true, basename(cwd) || '.')\n return output\n}\n\nexport async function tree(\n cwd: string,\n limit: number = 50,\n abortSignal: AbortSignal,\n): Promise<string> {\n const files = await ripGrep(['--files'], cwd, abortSignal)\n return filesToTree(files, cwd, limit)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["files", "buffer", "stderr", "proc"]
7
+ }
@@ -2,13 +2,13 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  MarketplaceManifestSchema
5
- } from "./chunk-QV6CXOAX.js";
5
+ } from "./chunk-2I3SSZQJ.js";
6
6
  import {
7
7
  parseFrontmatter
8
- } from "./chunk-5W2G6L5K.js";
8
+ } from "./chunk-PVDARHIF.js";
9
9
  import {
10
10
  getCwd
11
- } from "./chunk-IW53WIHX.js";
11
+ } from "./chunk-5DKFC3LS.js";
12
12
 
13
13
  // src/services/plugins/pluginValidation.ts
14
14
  import { existsSync, lstatSync, readFileSync } from "node:fs";
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSessionProjectDir,
5
5
  getSessionProjectsDir
6
- } from "./chunk-T3RYPQ6S.js";
6
+ } from "./chunk-VGMEYSLX.js";
7
7
  import {
8
8
  isUuid
9
9
  } from "./chunk-5P7HBXTD.js";