pybao-cli 1.3.76 → 1.3.77

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 (140) hide show
  1. package/dist/REPL-IIW6YW5T.js +42 -0
  2. package/dist/{acp-LDGRB36V.js → acp-J6ROVKFR.js} +27 -27
  3. package/dist/{agentsValidate-3ZT5L4GI.js → agentsValidate-IO35ZB7R.js} +7 -7
  4. package/dist/{ask-KQZCP45I.js → ask-Y27O7WZB.js} +25 -25
  5. package/dist/{autoUpdater-MBMXCVBD.js → autoUpdater-FFQBQVU3.js} +3 -3
  6. package/dist/{chunk-4KVOFH2S.js → chunk-3EF6RG5V.js} +1 -1
  7. package/dist/{chunk-VU5HNOM5.js → chunk-3YLLXPIH.js} +60 -4
  8. package/dist/chunk-3YLLXPIH.js.map +7 -0
  9. package/dist/{chunk-ELPWSR2W.js → chunk-454RCERZ.js} +2 -2
  10. package/dist/{chunk-BAM5Z6EA.js → chunk-5RPMKOLY.js} +4 -4
  11. package/dist/{chunk-YKU5MMJL.js → chunk-5XGQOH5R.js} +3 -3
  12. package/dist/{chunk-KIYCTSKZ.js → chunk-A2QHW7CB.js} +1 -1
  13. package/dist/{chunk-63LP4JE6.js → chunk-B74SMVB6.js} +3 -3
  14. package/dist/{chunk-SBSGYOBY.js → chunk-GO7XD3ER.js} +3 -3
  15. package/dist/{chunk-EYJQMII5.js → chunk-H6T7H7LT.js} +29 -18
  16. package/dist/chunk-H6T7H7LT.js.map +7 -0
  17. package/dist/{chunk-KJXBKZD4.js → chunk-HKFHNDP3.js} +1 -1
  18. package/dist/{chunk-MCXQN7QX.js → chunk-L5O2UCS2.js} +4 -4
  19. package/dist/{chunk-MY5O5CHS.js → chunk-M32V45DG.js} +1 -1
  20. package/dist/{chunk-R2MM2EIA.js → chunk-MKVAZLQO.js} +3 -3
  21. package/dist/{chunk-L2H76Z4W.js → chunk-NNJNDVJD.js} +3 -3
  22. package/dist/{chunk-3X643DPY.js → chunk-NUDBQT6U.js} +1 -1
  23. package/dist/{chunk-3X643DPY.js.map → chunk-NUDBQT6U.js.map} +1 -1
  24. package/dist/{chunk-ESQPYAOR.js → chunk-OMYHUPC2.js} +58 -49
  25. package/dist/chunk-OMYHUPC2.js.map +7 -0
  26. package/dist/{chunk-F3JJJLFB.js → chunk-OQ6HRRWQ.js} +1 -1
  27. package/dist/{chunk-ZPGEVS4A.js → chunk-OWQIRUNZ.js} +1 -1
  28. package/dist/{chunk-GPSOYNIA.js → chunk-PJGMJENZ.js} +1 -1
  29. package/dist/{chunk-TVCYEIR2.js → chunk-QQ3H6VUF.js} +3 -3
  30. package/dist/{chunk-NOMIQFQT.js → chunk-RBE7GJCB.js} +1 -1
  31. package/dist/{chunk-7CIDTUWO.js → chunk-S3T4MUKD.js} +2 -2
  32. package/dist/{chunk-TASZ4WRS.js → chunk-TSDRVI5M.js} +3 -3
  33. package/dist/{chunk-5OS4UGYK.js → chunk-UNVPSHQ2.js} +1 -1
  34. package/dist/{chunk-LEKWRXMF.js → chunk-VQR2EOPQ.js} +2 -2
  35. package/dist/{chunk-XK233DN5.js → chunk-WL6WMB2V.js} +2 -2
  36. package/dist/{chunk-JWSFVBQB.js → chunk-WWX73YRV.js} +2 -2
  37. package/dist/{chunk-H5ECL2W2.js → chunk-XKL2C2O2.js} +2 -2
  38. package/dist/{cli-6L5TC5QS.js → cli-KEYTXCC5.js} +78 -78
  39. package/dist/commands-6VWJUJOW.js +46 -0
  40. package/dist/{config-YG2PMDJU.js → config-TRRHGKGN.js} +4 -4
  41. package/dist/{context-U3BVAD76.js → context-6PXQ7UA5.js} +5 -5
  42. package/dist/{customCommands-U2VHRRHF.js → customCommands-IOE7XYUO.js} +4 -4
  43. package/dist/{env-H5WODPX3.js → env-MQBD55MF.js} +2 -2
  44. package/dist/index.js +3 -3
  45. package/dist/{llm-CGDOSTGR.js → llm-FH4YCHMV.js} +26 -26
  46. package/dist/{llmLazy-I5FNZYU5.js → llmLazy-NRQZG66E.js} +1 -1
  47. package/dist/{loader-CVQIK26G.js → loader-56GNLAJH.js} +4 -4
  48. package/dist/{lspAnchor-IJEAL6DF.js → lspAnchor-X5T4A64O.js} +4 -4
  49. package/dist/{manager-UK5TEREN.js → manager-MFZPWCIE.js} +4 -4
  50. package/dist/{mcp-LGKV3XX4.js → mcp-X7HGIUPU.js} +7 -7
  51. package/dist/{mentionProcessor-MDTHENKV.js → mentionProcessor-C5OFPI3P.js} +5 -5
  52. package/dist/{messages-CQJMJWGJ.js → messages-PIOVYYOG.js} +1 -1
  53. package/dist/{model-UBVT2YA3.js → model-H6QVZWHJ.js} +5 -5
  54. package/dist/{openai-C4EX52QG.js → openai-IAVIF6FF.js} +5 -5
  55. package/dist/{outputStyles-OPCESLH3.js → outputStyles-GLWI6TYW.js} +4 -4
  56. package/dist/{pluginRuntime-4GQ5X6NW.js → pluginRuntime-2Z5RZFIO.js} +6 -6
  57. package/dist/{pluginValidation-ORKYLE35.js → pluginValidation-SA2CAWR7.js} +6 -6
  58. package/dist/prompts-3YHVYOTG.js +48 -0
  59. package/dist/{pybAgentSessionLoad-UEX26O72.js → pybAgentSessionLoad-AGTRRMW6.js} +4 -4
  60. package/dist/{pybAgentSessionResume-HQWFSAOI.js → pybAgentSessionResume-3CC7RG77.js} +4 -4
  61. package/dist/{pybAgentStreamJsonSession-NTMBJMX6.js → pybAgentStreamJsonSession-O6HGKNB2.js} +1 -1
  62. package/dist/{pybHooks-3COODNSS.js → pybHooks-WUWB6R4D.js} +4 -4
  63. package/dist/query-5FZSUUMJ.js +50 -0
  64. package/dist/{ripgrep-XCQYUJT5.js → ripgrep-KXA677M7.js} +3 -3
  65. package/dist/{skillMarketplace-OA7ZO7CJ.js → skillMarketplace-V6AQF5EX.js} +3 -3
  66. package/dist/{state-BNESSPEK.js → state-PV4LIK6E.js} +2 -2
  67. package/dist/{theme-ZIUQDRA3.js → theme-B3IU7LOI.js} +5 -5
  68. package/dist/{toolPermissionSettings-6ANKW5RJ.js → toolPermissionSettings-A57ZK2Z3.js} +6 -6
  69. package/dist/tools-2ARQSCBL.js +50 -0
  70. package/dist/{userInput-NHATC6JJ.js → userInput-AEZTSBRV.js} +27 -27
  71. package/package.json +1 -1
  72. package/dist/REPL-2MFAZYFR.js +0 -42
  73. package/dist/chunk-ESQPYAOR.js.map +0 -7
  74. package/dist/chunk-EYJQMII5.js.map +0 -7
  75. package/dist/chunk-VU5HNOM5.js.map +0 -7
  76. package/dist/commands-HSCVSRUN.js +0 -46
  77. package/dist/prompts-56KCWZNZ.js +0 -48
  78. package/dist/query-BJAUI2E7.js +0 -50
  79. package/dist/tools-4TTMZ6SJ.js +0 -50
  80. /package/dist/{REPL-2MFAZYFR.js.map → REPL-IIW6YW5T.js.map} +0 -0
  81. /package/dist/{acp-LDGRB36V.js.map → acp-J6ROVKFR.js.map} +0 -0
  82. /package/dist/{agentsValidate-3ZT5L4GI.js.map → agentsValidate-IO35ZB7R.js.map} +0 -0
  83. /package/dist/{ask-KQZCP45I.js.map → ask-Y27O7WZB.js.map} +0 -0
  84. /package/dist/{autoUpdater-MBMXCVBD.js.map → autoUpdater-FFQBQVU3.js.map} +0 -0
  85. /package/dist/{chunk-4KVOFH2S.js.map → chunk-3EF6RG5V.js.map} +0 -0
  86. /package/dist/{chunk-ELPWSR2W.js.map → chunk-454RCERZ.js.map} +0 -0
  87. /package/dist/{chunk-BAM5Z6EA.js.map → chunk-5RPMKOLY.js.map} +0 -0
  88. /package/dist/{chunk-YKU5MMJL.js.map → chunk-5XGQOH5R.js.map} +0 -0
  89. /package/dist/{chunk-KIYCTSKZ.js.map → chunk-A2QHW7CB.js.map} +0 -0
  90. /package/dist/{chunk-63LP4JE6.js.map → chunk-B74SMVB6.js.map} +0 -0
  91. /package/dist/{chunk-SBSGYOBY.js.map → chunk-GO7XD3ER.js.map} +0 -0
  92. /package/dist/{chunk-KJXBKZD4.js.map → chunk-HKFHNDP3.js.map} +0 -0
  93. /package/dist/{chunk-MCXQN7QX.js.map → chunk-L5O2UCS2.js.map} +0 -0
  94. /package/dist/{chunk-MY5O5CHS.js.map → chunk-M32V45DG.js.map} +0 -0
  95. /package/dist/{chunk-R2MM2EIA.js.map → chunk-MKVAZLQO.js.map} +0 -0
  96. /package/dist/{chunk-L2H76Z4W.js.map → chunk-NNJNDVJD.js.map} +0 -0
  97. /package/dist/{chunk-F3JJJLFB.js.map → chunk-OQ6HRRWQ.js.map} +0 -0
  98. /package/dist/{chunk-ZPGEVS4A.js.map → chunk-OWQIRUNZ.js.map} +0 -0
  99. /package/dist/{chunk-GPSOYNIA.js.map → chunk-PJGMJENZ.js.map} +0 -0
  100. /package/dist/{chunk-TVCYEIR2.js.map → chunk-QQ3H6VUF.js.map} +0 -0
  101. /package/dist/{chunk-NOMIQFQT.js.map → chunk-RBE7GJCB.js.map} +0 -0
  102. /package/dist/{chunk-7CIDTUWO.js.map → chunk-S3T4MUKD.js.map} +0 -0
  103. /package/dist/{chunk-TASZ4WRS.js.map → chunk-TSDRVI5M.js.map} +0 -0
  104. /package/dist/{chunk-5OS4UGYK.js.map → chunk-UNVPSHQ2.js.map} +0 -0
  105. /package/dist/{chunk-LEKWRXMF.js.map → chunk-VQR2EOPQ.js.map} +0 -0
  106. /package/dist/{chunk-XK233DN5.js.map → chunk-WL6WMB2V.js.map} +0 -0
  107. /package/dist/{chunk-JWSFVBQB.js.map → chunk-WWX73YRV.js.map} +0 -0
  108. /package/dist/{chunk-H5ECL2W2.js.map → chunk-XKL2C2O2.js.map} +0 -0
  109. /package/dist/{cli-6L5TC5QS.js.map → cli-KEYTXCC5.js.map} +0 -0
  110. /package/dist/{commands-HSCVSRUN.js.map → commands-6VWJUJOW.js.map} +0 -0
  111. /package/dist/{config-YG2PMDJU.js.map → config-TRRHGKGN.js.map} +0 -0
  112. /package/dist/{context-U3BVAD76.js.map → context-6PXQ7UA5.js.map} +0 -0
  113. /package/dist/{customCommands-U2VHRRHF.js.map → customCommands-IOE7XYUO.js.map} +0 -0
  114. /package/dist/{env-H5WODPX3.js.map → env-MQBD55MF.js.map} +0 -0
  115. /package/dist/{llm-CGDOSTGR.js.map → llm-FH4YCHMV.js.map} +0 -0
  116. /package/dist/{llmLazy-I5FNZYU5.js.map → llmLazy-NRQZG66E.js.map} +0 -0
  117. /package/dist/{loader-CVQIK26G.js.map → loader-56GNLAJH.js.map} +0 -0
  118. /package/dist/{lspAnchor-IJEAL6DF.js.map → lspAnchor-X5T4A64O.js.map} +0 -0
  119. /package/dist/{manager-UK5TEREN.js.map → manager-MFZPWCIE.js.map} +0 -0
  120. /package/dist/{mcp-LGKV3XX4.js.map → mcp-X7HGIUPU.js.map} +0 -0
  121. /package/dist/{mentionProcessor-MDTHENKV.js.map → mentionProcessor-C5OFPI3P.js.map} +0 -0
  122. /package/dist/{messages-CQJMJWGJ.js.map → messages-PIOVYYOG.js.map} +0 -0
  123. /package/dist/{model-UBVT2YA3.js.map → model-H6QVZWHJ.js.map} +0 -0
  124. /package/dist/{openai-C4EX52QG.js.map → openai-IAVIF6FF.js.map} +0 -0
  125. /package/dist/{outputStyles-OPCESLH3.js.map → outputStyles-GLWI6TYW.js.map} +0 -0
  126. /package/dist/{pluginRuntime-4GQ5X6NW.js.map → pluginRuntime-2Z5RZFIO.js.map} +0 -0
  127. /package/dist/{pluginValidation-ORKYLE35.js.map → pluginValidation-SA2CAWR7.js.map} +0 -0
  128. /package/dist/{prompts-56KCWZNZ.js.map → prompts-3YHVYOTG.js.map} +0 -0
  129. /package/dist/{pybAgentSessionLoad-UEX26O72.js.map → pybAgentSessionLoad-AGTRRMW6.js.map} +0 -0
  130. /package/dist/{pybAgentSessionResume-HQWFSAOI.js.map → pybAgentSessionResume-3CC7RG77.js.map} +0 -0
  131. /package/dist/{pybAgentStreamJsonSession-NTMBJMX6.js.map → pybAgentStreamJsonSession-O6HGKNB2.js.map} +0 -0
  132. /package/dist/{pybHooks-3COODNSS.js.map → pybHooks-WUWB6R4D.js.map} +0 -0
  133. /package/dist/{query-BJAUI2E7.js.map → query-5FZSUUMJ.js.map} +0 -0
  134. /package/dist/{ripgrep-XCQYUJT5.js.map → ripgrep-KXA677M7.js.map} +0 -0
  135. /package/dist/{skillMarketplace-OA7ZO7CJ.js.map → skillMarketplace-V6AQF5EX.js.map} +0 -0
  136. /package/dist/{state-BNESSPEK.js.map → state-PV4LIK6E.js.map} +0 -0
  137. /package/dist/{theme-ZIUQDRA3.js.map → theme-B3IU7LOI.js.map} +0 -0
  138. /package/dist/{toolPermissionSettings-6ANKW5RJ.js.map → toolPermissionSettings-A57ZK2Z3.js.map} +0 -0
  139. /package/dist/{tools-4TTMZ6SJ.js.map → tools-2ARQSCBL.js.map} +0 -0
  140. /package/dist/{userInput-NHATC6JJ.js.map → userInput-AEZTSBRV.js.map} +0 -0
@@ -0,0 +1,42 @@
1
+ import { createRequire as __pybCreateRequire } from "node:module";
2
+ const require = __pybCreateRequire(import.meta.url);
3
+ import {
4
+ REPL
5
+ } from "./chunk-OMYHUPC2.js";
6
+ import "./chunk-RBE7GJCB.js";
7
+ import "./chunk-M32V45DG.js";
8
+ import "./chunk-WWX73YRV.js";
9
+ import "./chunk-5P7HBXTD.js";
10
+ import "./chunk-VQR2EOPQ.js";
11
+ import "./chunk-5RPMKOLY.js";
12
+ import "./chunk-L5O2UCS2.js";
13
+ import "./chunk-5XGQOH5R.js";
14
+ import "./chunk-3EF6RG5V.js";
15
+ import "./chunk-WL6WMB2V.js";
16
+ import "./chunk-ERMQRV55.js";
17
+ import "./chunk-XKL2C2O2.js";
18
+ import "./chunk-UNVPSHQ2.js";
19
+ import "./chunk-3DFBSQIT.js";
20
+ import "./chunk-GO7XD3ER.js";
21
+ import "./chunk-B6IMQJZM.js";
22
+ import "./chunk-454RCERZ.js";
23
+ import "./chunk-A3BVXXA3.js";
24
+ import "./chunk-OWQIRUNZ.js";
25
+ import "./chunk-S3T4MUKD.js";
26
+ import "./chunk-BJSWTHRM.js";
27
+ import "./chunk-QQ3H6VUF.js";
28
+ import "./chunk-OQ6HRRWQ.js";
29
+ import "./chunk-UNNVICVU.js";
30
+ import "./chunk-TSDRVI5M.js";
31
+ import "./chunk-MKVAZLQO.js";
32
+ import "./chunk-PJGMJENZ.js";
33
+ import "./chunk-B74SMVB6.js";
34
+ import "./chunk-RQVLBMP7.js";
35
+ import "./chunk-A2QHW7CB.js";
36
+ import "./chunk-HKFHNDP3.js";
37
+ import "./chunk-NUDBQT6U.js";
38
+ import "./chunk-OUXHGDLH.js";
39
+ import "./chunk-I3J4JYES.js";
40
+ export {
41
+ REPL
42
+ };
@@ -6,63 +6,63 @@ import {
6
6
  } from "./chunk-MWPFU2KU.js";
7
7
  import {
8
8
  getTools
9
- } from "./chunk-EYJQMII5.js";
9
+ } from "./chunk-H6T7H7LT.js";
10
10
  import {
11
11
  getCommands,
12
12
  getSystemPrompt,
13
13
  grantReadPermissionForOriginalDir,
14
14
  hasPermissionsToUseTool,
15
15
  query
16
- } from "./chunk-ESQPYAOR.js";
17
- import "./chunk-NOMIQFQT.js";
18
- import "./chunk-MY5O5CHS.js";
19
- import "./chunk-JWSFVBQB.js";
16
+ } from "./chunk-OMYHUPC2.js";
17
+ import "./chunk-RBE7GJCB.js";
18
+ import "./chunk-M32V45DG.js";
19
+ import "./chunk-WWX73YRV.js";
20
20
  import "./chunk-5P7HBXTD.js";
21
- import "./chunk-LEKWRXMF.js";
22
- import "./chunk-BAM5Z6EA.js";
21
+ import "./chunk-VQR2EOPQ.js";
22
+ import "./chunk-5RPMKOLY.js";
23
23
  import {
24
24
  getClients
25
- } from "./chunk-MCXQN7QX.js";
26
- import "./chunk-YKU5MMJL.js";
27
- import "./chunk-4KVOFH2S.js";
28
- import "./chunk-XK233DN5.js";
25
+ } from "./chunk-L5O2UCS2.js";
26
+ import "./chunk-5XGQOH5R.js";
27
+ import "./chunk-3EF6RG5V.js";
28
+ import "./chunk-WL6WMB2V.js";
29
29
  import "./chunk-ERMQRV55.js";
30
- import "./chunk-H5ECL2W2.js";
30
+ import "./chunk-XKL2C2O2.js";
31
31
  import {
32
32
  createAssistantMessage,
33
33
  createUserMessage
34
- } from "./chunk-5OS4UGYK.js";
34
+ } from "./chunk-UNVPSHQ2.js";
35
35
  import "./chunk-3DFBSQIT.js";
36
- import "./chunk-SBSGYOBY.js";
36
+ import "./chunk-GO7XD3ER.js";
37
37
  import "./chunk-B6IMQJZM.js";
38
- import "./chunk-ELPWSR2W.js";
38
+ import "./chunk-454RCERZ.js";
39
39
  import "./chunk-A3BVXXA3.js";
40
- import "./chunk-ZPGEVS4A.js";
40
+ import "./chunk-OWQIRUNZ.js";
41
41
  import "./chunk-IZ3M5OX4.js";
42
- import "./chunk-VU5HNOM5.js";
42
+ import "./chunk-3YLLXPIH.js";
43
43
  import "./chunk-UZ34JEUK.js";
44
- import "./chunk-7CIDTUWO.js";
44
+ import "./chunk-S3T4MUKD.js";
45
45
  import "./chunk-BJSWTHRM.js";
46
46
  import {
47
47
  loadToolPermissionContextFromDisk,
48
48
  persistToolPermissionUpdateToDisk
49
- } from "./chunk-TVCYEIR2.js";
50
- import "./chunk-F3JJJLFB.js";
49
+ } from "./chunk-QQ3H6VUF.js";
50
+ import "./chunk-OQ6HRRWQ.js";
51
51
  import {
52
52
  applyToolPermissionContextUpdates
53
53
  } from "./chunk-UNNVICVU.js";
54
- import "./chunk-TASZ4WRS.js";
54
+ import "./chunk-TSDRVI5M.js";
55
55
  import {
56
56
  getContext
57
- } from "./chunk-R2MM2EIA.js";
58
- import "./chunk-GPSOYNIA.js";
57
+ } from "./chunk-MKVAZLQO.js";
58
+ import "./chunk-PJGMJENZ.js";
59
59
  import {
60
60
  enableConfigs
61
- } from "./chunk-63LP4JE6.js";
61
+ } from "./chunk-B74SMVB6.js";
62
62
  import "./chunk-RQVLBMP7.js";
63
63
  import {
64
64
  initDebugLogger
65
- } from "./chunk-KIYCTSKZ.js";
65
+ } from "./chunk-A2QHW7CB.js";
66
66
  import {
67
67
  PRODUCT_COMMAND,
68
68
  getPybBaseDir,
@@ -70,10 +70,10 @@ import {
70
70
  logError,
71
71
  setCwd,
72
72
  setOriginalCwd
73
- } from "./chunk-KJXBKZD4.js";
73
+ } from "./chunk-HKFHNDP3.js";
74
74
  import {
75
75
  MACRO
76
- } from "./chunk-3X643DPY.js";
76
+ } from "./chunk-NUDBQT6U.js";
77
77
  import "./chunk-OUXHGDLH.js";
78
78
  import "./chunk-I3J4JYES.js";
79
79
 
@@ -2,12 +2,12 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getModelManager
5
- } from "./chunk-TASZ4WRS.js";
6
- import "./chunk-63LP4JE6.js";
5
+ } from "./chunk-TSDRVI5M.js";
6
+ import "./chunk-B74SMVB6.js";
7
7
  import "./chunk-RQVLBMP7.js";
8
- import "./chunk-KIYCTSKZ.js";
9
- import "./chunk-KJXBKZD4.js";
10
- import "./chunk-3X643DPY.js";
8
+ import "./chunk-A2QHW7CB.js";
9
+ import "./chunk-HKFHNDP3.js";
10
+ import "./chunk-NUDBQT6U.js";
11
11
  import "./chunk-I3J4JYES.js";
12
12
 
13
13
  // src/entrypoints/cli/agentsValidate.ts
@@ -344,8 +344,8 @@ async function validateAgentTemplates(args) {
344
344
  let knownToolNames;
345
345
  if (args.checkTools) {
346
346
  try {
347
- const { getTools } = await import("./tools-4TTMZ6SJ.js");
348
- const { getCurrentProjectConfig } = await import("./config-YG2PMDJU.js");
347
+ const { getTools } = await import("./tools-2ARQSCBL.js");
348
+ const { getCurrentProjectConfig } = await import("./config-TRRHGKGN.js");
349
349
  const allTools = await getTools(getCurrentProjectConfig().enableArchitectTool);
350
350
  knownToolNames = new Set(allTools.map((t) => t.name));
351
351
  } catch {
@@ -3,49 +3,49 @@ const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  getSystemPrompt,
5
5
  query
6
- } from "./chunk-ESQPYAOR.js";
7
- import "./chunk-NOMIQFQT.js";
8
- import "./chunk-MY5O5CHS.js";
9
- import "./chunk-JWSFVBQB.js";
6
+ } from "./chunk-OMYHUPC2.js";
7
+ import "./chunk-RBE7GJCB.js";
8
+ import "./chunk-M32V45DG.js";
9
+ import "./chunk-WWX73YRV.js";
10
10
  import "./chunk-5P7HBXTD.js";
11
- import "./chunk-LEKWRXMF.js";
12
- import "./chunk-BAM5Z6EA.js";
13
- import "./chunk-MCXQN7QX.js";
14
- import "./chunk-YKU5MMJL.js";
15
- import "./chunk-4KVOFH2S.js";
16
- import "./chunk-XK233DN5.js";
11
+ import "./chunk-VQR2EOPQ.js";
12
+ import "./chunk-5RPMKOLY.js";
13
+ import "./chunk-L5O2UCS2.js";
14
+ import "./chunk-5XGQOH5R.js";
15
+ import "./chunk-3EF6RG5V.js";
16
+ import "./chunk-WL6WMB2V.js";
17
17
  import "./chunk-ERMQRV55.js";
18
- import "./chunk-H5ECL2W2.js";
18
+ import "./chunk-XKL2C2O2.js";
19
19
  import {
20
20
  createUserMessage
21
- } from "./chunk-5OS4UGYK.js";
21
+ } from "./chunk-UNVPSHQ2.js";
22
22
  import "./chunk-3DFBSQIT.js";
23
- import "./chunk-SBSGYOBY.js";
23
+ import "./chunk-GO7XD3ER.js";
24
24
  import "./chunk-B6IMQJZM.js";
25
- import "./chunk-ELPWSR2W.js";
25
+ import "./chunk-454RCERZ.js";
26
26
  import "./chunk-A3BVXXA3.js";
27
- import "./chunk-ZPGEVS4A.js";
28
- import "./chunk-7CIDTUWO.js";
27
+ import "./chunk-OWQIRUNZ.js";
28
+ import "./chunk-S3T4MUKD.js";
29
29
  import "./chunk-BJSWTHRM.js";
30
- import "./chunk-TVCYEIR2.js";
31
- import "./chunk-F3JJJLFB.js";
30
+ import "./chunk-QQ3H6VUF.js";
31
+ import "./chunk-OQ6HRRWQ.js";
32
32
  import "./chunk-UNNVICVU.js";
33
33
  import {
34
34
  getModelManager
35
- } from "./chunk-TASZ4WRS.js";
35
+ } from "./chunk-TSDRVI5M.js";
36
36
  import {
37
37
  getContext
38
- } from "./chunk-R2MM2EIA.js";
39
- import "./chunk-GPSOYNIA.js";
40
- import "./chunk-63LP4JE6.js";
38
+ } from "./chunk-MKVAZLQO.js";
39
+ import "./chunk-PJGMJENZ.js";
40
+ import "./chunk-B74SMVB6.js";
41
41
  import "./chunk-RQVLBMP7.js";
42
- import "./chunk-KIYCTSKZ.js";
42
+ import "./chunk-A2QHW7CB.js";
43
43
  import {
44
44
  getMessagesPath,
45
45
  overwriteLog,
46
46
  setCwd
47
- } from "./chunk-KJXBKZD4.js";
48
- import "./chunk-3X643DPY.js";
47
+ } from "./chunk-HKFHNDP3.js";
48
+ import "./chunk-NUDBQT6U.js";
49
49
  import {
50
50
  getTotalCost
51
51
  } from "./chunk-OUXHGDLH.js";
@@ -5,9 +5,9 @@ import {
5
5
  checkAndNotifyUpdate,
6
6
  getLatestVersion,
7
7
  getUpdateCommandSuggestions
8
- } from "./chunk-L2H76Z4W.js";
9
- import "./chunk-KJXBKZD4.js";
10
- import "./chunk-3X643DPY.js";
8
+ } from "./chunk-NNJNDVJD.js";
9
+ import "./chunk-HKFHNDP3.js";
10
+ import "./chunk-NUDBQT6U.js";
11
11
  import "./chunk-I3J4JYES.js";
12
12
  export {
13
13
  assertMinVersion,
@@ -4,7 +4,7 @@ import {
4
4
  CONFIG_BASE_DIR,
5
5
  getCwd,
6
6
  getPybBaseDir
7
- } from "./chunk-KJXBKZD4.js";
7
+ } from "./chunk-HKFHNDP3.js";
8
8
 
9
9
  // src/services/plugins/skillMarketplace.ts
10
10
  import {
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-UZ34JEUK.js";
6
6
  import {
7
7
  debug
8
- } from "./chunk-KIYCTSKZ.js";
8
+ } from "./chunk-A2QHW7CB.js";
9
9
  import {
10
10
  getCwd
11
- } from "./chunk-KJXBKZD4.js";
11
+ } from "./chunk-HKFHNDP3.js";
12
12
  import {
13
13
  __require
14
14
  } from "./chunk-I3J4JYES.js";
@@ -196,6 +196,14 @@ var GenericLspClient = class {
196
196
  };
197
197
  await this.connection.sendNotification("textDocument/didChange", params);
198
198
  }
199
+ async didClose(filePath) {
200
+ const params = {
201
+ textDocument: {
202
+ uri: this.normalizeUri(filePath)
203
+ }
204
+ };
205
+ await this.connection.sendNotification("textDocument/didClose", params);
206
+ }
199
207
  async waitForReadiness(filePath, timeoutMs = 3e3) {
200
208
  const normalizedUri = this.normalizeUri(filePath);
201
209
  return new Promise((resolve) => {
@@ -207,7 +215,7 @@ var GenericLspClient = class {
207
215
  this.diagnosticEvents.off("diagnostics", handler);
208
216
  };
209
217
  const handler = (event) => {
210
- if (event.uri === normalizedUri) {
218
+ if (event.uri === normalizedUri || event.uri.toLowerCase() === normalizedUri.toLowerCase() || decodeURIComponent(event.uri) === decodeURIComponent(normalizedUri)) {
211
219
  if (debounceTimer) clearTimeout(debounceTimer);
212
220
  debounceTimer = setTimeout(() => {
213
221
  cleanup();
@@ -228,7 +236,7 @@ var GenericLspClient = class {
228
236
  };
229
237
 
230
238
  // src/tools/search/LspTool/client/manager.ts
231
- import { extname, join as join2 } from "path";
239
+ import { extname, join as join2, dirname as dirname2 } from "path";
232
240
 
233
241
  // src/tools/search/LspTool/registry.ts
234
242
  import { join, dirname } from "path";
@@ -724,6 +732,7 @@ var LspServerRegistry = class _LspServerRegistry {
724
732
 
725
733
  // src/tools/search/LspTool/client/manager.ts
726
734
  import { readdir, readFile } from "fs/promises";
735
+ import { existsSync as existsSync2 } from "fs";
727
736
  var LspClientManager = class _LspClientManager {
728
737
  static instance;
729
738
  clients = /* @__PURE__ */ new Map();
@@ -735,6 +744,18 @@ var LspClientManager = class _LspClientManager {
735
744
  }
736
745
  return _LspClientManager.instance;
737
746
  }
747
+ // Helper to find project root
748
+ findProjectRoot(filePath) {
749
+ let current = dirname2(filePath);
750
+ while (current !== dirname2(current)) {
751
+ if (existsSync2(join2(current, "package.json")) || existsSync2(join2(current, "tsconfig.json")) || existsSync2(join2(current, "go.mod")) || existsSync2(join2(current, "Cargo.toml"))) {
752
+ return current;
753
+ }
754
+ current = dirname2(current);
755
+ }
756
+ if (filePath.startsWith(getCwd())) return getCwd();
757
+ return dirname2(filePath);
758
+ }
738
759
  getLanguageId(ext) {
739
760
  const map = {
740
761
  ".ts": "typescript",
@@ -755,6 +776,30 @@ var LspClientManager = class _LspClientManager {
755
776
  try {
756
777
  const files = await readdir(rootPath, { withFileTypes: true });
757
778
  const extensionMap = /* @__PURE__ */ new Map();
779
+ const fileNames = new Set(files.map((f) => f.name));
780
+ if (fileNames.has("tsconfig.json") || fileNames.has("package.json")) {
781
+ if (!files.some((f) => f.isFile() && /\.(ts|tsx|js|jsx)$/.test(f.name))) {
782
+ try {
783
+ const srcFiles = await readdir(join2(rootPath, "src"), { withFileTypes: true });
784
+ const triggerFile = srcFiles.find((f) => f.isFile() && /\.(ts|tsx|js|jsx)$/.test(f.name));
785
+ if (triggerFile) {
786
+ extensionMap.set(extname(triggerFile.name), join2(rootPath, "src", triggerFile.name));
787
+ }
788
+ } catch (e) {
789
+ }
790
+ }
791
+ }
792
+ if (fileNames.has("go.mod")) {
793
+ extensionMap.set(".go", join2(rootPath, "go.mod"));
794
+ if (fileNames.has("main.go")) extensionMap.set(".go", join2(rootPath, "main.go"));
795
+ }
796
+ if (fileNames.has("Cargo.toml")) {
797
+ try {
798
+ if (existsSync2(join2(rootPath, "src", "main.rs"))) extensionMap.set(".rs", join2(rootPath, "src", "main.rs"));
799
+ else if (existsSync2(join2(rootPath, "src", "lib.rs"))) extensionMap.set(".rs", join2(rootPath, "src", "lib.rs"));
800
+ } catch (e) {
801
+ }
802
+ }
758
803
  for (const file of files) {
759
804
  if (file.isFile()) {
760
805
  const ext = extname(file.name);
@@ -778,6 +823,10 @@ var LspClientManager = class _LspClientManager {
778
823
  } catch (e) {
779
824
  }
780
825
  }
826
+ async getClientForFile(filePath) {
827
+ const rootPath = this.findProjectRoot(filePath);
828
+ return this.getClient(filePath, rootPath);
829
+ }
781
830
  async getClient(filePath, rootPath) {
782
831
  const ext = extname(filePath);
783
832
  const serverInfo = LspServerRegistry.getInstance().getServerForExtension(ext);
@@ -871,6 +920,13 @@ var LspClientManager = class _LspClientManager {
871
920
  }
872
921
  return client.getDiagnostics(filePath);
873
922
  }
923
+ // New helper to expose waitForReadiness to clients who only have a manager
924
+ async waitForReadiness(filePath, rootPath = getCwd(), timeoutMs = 2e3) {
925
+ const client = await this.getClientForFile(filePath);
926
+ if (client) {
927
+ await client.waitForReadiness(filePath, timeoutMs);
928
+ }
929
+ }
874
930
  };
875
931
 
876
932
  export {
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/tools/search/LspTool/client/generic.ts", "../src/tools/search/LspTool/client/manager.ts", "../src/tools/search/LspTool/registry.ts"],
4
+ "sourcesContent": ["import { createMessageConnection, StreamMessageReader, StreamMessageWriter } from 'vscode-jsonrpc/node.js'\nimport type { MessageConnection } from 'vscode-jsonrpc'\nimport type { ChildProcessWithoutNullStreams, SpawnOptions } from 'child_process'\nimport { spawn } from 'child_process'\nimport { pathToFileURL, fileURLToPath } from 'url'\nimport { EventEmitter } from 'events'\n\nexport class GenericLspClient {\n private connection: MessageConnection\n private process: ChildProcessWithoutNullStreams\n public capabilities: any\n private diagnosticEvents = new EventEmitter()\n private diagnosticsMap = new Map<string, any[]>()\n\n constructor(\n serverCommand: string,\n serverArgs: string[],\n cwd: string,\n private rootPath: string\n ) {\n // console.log('[GenericLspClient] Spawning:', serverCommand, serverArgs.join(' '))\n const env = {\n ...process.env,\n // Remove potentially conflicting variables\n NODE_OPTIONS: undefined,\n TS_NODE_PROJECT: undefined,\n ELECTRON_RUN_AS_NODE: undefined,\n }\n \n const options: SpawnOptions = {\n cwd,\n stdio: 'pipe',\n env,\n shell: false\n }\n\n this.process = spawn(serverCommand, serverArgs, options)\n\n this.process.stderr.on('data', (data) => {\n console.error(`[LSP Stderr] ${data}`)\n })\n\n this.connection = createMessageConnection(\n new StreamMessageReader(this.process.stdout),\n new StreamMessageWriter(this.process.stdin)\n )\n\n this.connection.onNotification((method, params) => {\n if (method === 'window/logMessage' || method === '$/progress') {\n console.log(`[LSP Notification] ${method}:`, JSON.stringify(params))\n }\n if (method === 'textDocument/publishDiagnostics') {\n try {\n const uri = params.uri;\n let filePath = uri;\n if (uri.startsWith('file://')) {\n filePath = fileURLToPath(uri);\n }\n // Store diagnostics\n const normalizedUri = this.normalizeUri(filePath);\n this.diagnosticsMap.set(normalizedUri, params.diagnostics);\n // console.log(`[LSP] Stored diagnostics for ${normalizedUri}: ${params.diagnostics.length} items`)\n \n this.diagnosticEvents.emit('diagnostics', { uri, filePath, diagnostics: params.diagnostics });\n } catch (e) {\n console.error('[LSP] Error processing diagnostics:', e);\n }\n }\n })\n\n this.connection.onRequest((method, params) => {\n // console.log(`[LSP Request] ${method}:`, JSON.stringify(params))\n if (method === 'workspace/configuration') {\n // Return empty config for each requested item\n return Array.isArray(params.items) ? params.items.map(() => ({})) : []\n }\n if (method === 'client/registerCapability') {\n return null\n }\n return null\n })\n\n this.connection.listen()\n }\n\n public normalizeUri(filePath: string): string {\n let uri = pathToFileURL(filePath).href\n if (process.platform === 'win32') {\n uri = uri.replace(/^file:\\/\\/\\/([a-zA-Z]):\\//, (match, drive) => {\n return `file:///${drive.toLowerCase()}%3A/`\n })\n }\n return uri\n }\n\n async initialize() {\n const rootUri = this.normalizeUri(this.rootPath)\n \n console.log('[GenericLspClient] Initializing with normalized rootUri:', rootUri)\n const params = {\n processId: process.pid,\n rootUri,\n capabilities: {\n textDocument: {\n synchronization: {\n didOpen: true,\n didChange: true,\n willSave: false,\n willSaveWaitUntil: false,\n didSave: true\n },\n hover: {\n contentFormat: ['markdown', 'plaintext']\n },\n definition: {},\n references: {}\n },\n workspace: {\n workspaceFolders: true\n }\n },\n workspaceFolders: [\n {\n name: 'workspace',\n uri: this.normalizeUri(this.rootPath)\n }\n ]\n }\n\n const result = await this.connection.sendRequest('initialize', params)\n await this.connection.sendNotification('initialized', {})\n \n // Notify configuration change (empty) to trigger analysis if needed\n await this.connection.sendNotification('workspace/didChangeConfiguration', { settings: {} })\n \n // Give server a moment to settle\n await new Promise(resolve => setTimeout(resolve, 100))\n\n this.capabilities = (result as any).capabilities\n return result\n }\n\n async shutdown() {\n try {\n await this.connection.sendRequest('shutdown')\n await this.connection.sendNotification('exit')\n } catch (error) {\n // Ignore errors during shutdown\n }\n this.connection.dispose()\n this.process.kill()\n }\n\n async goToDefinition(filePath: string, line: number, character: number) {\n const params = {\n textDocument: { uri: this.normalizeUri(filePath) },\n position: { line: line - 1, character: character - 1 }\n }\n return this.connection.sendRequest('textDocument/definition', params)\n }\n\n async findReferences(filePath: string, line: number, character: number) {\n const params = {\n textDocument: { uri: this.normalizeUri(filePath) },\n position: { line: line - 1, character: character - 1 },\n context: { includeDeclaration: true }\n }\n return this.connection.sendRequest('textDocument/references', params)\n }\n\n async hover(filePath: string, line: number, character: number) {\n const params = {\n textDocument: { uri: this.normalizeUri(filePath) },\n position: { line: line - 1, character: character - 1 }\n }\n return this.connection.sendRequest('textDocument/hover', params)\n }\n\n async documentSymbol(filePath: string) {\n const params = {\n textDocument: { uri: this.normalizeUri(filePath) }\n }\n return this.connection.sendRequest('textDocument/documentSymbol', params)\n }\n\n async workspaceSymbol(query: string) {\n const params = {\n query\n }\n return this.connection.sendRequest('workspace/symbol', params)\n }\n\n async goToImplementation(filePath: string, line: number, character: number) {\n const params = {\n textDocument: { uri: this.normalizeUri(filePath) },\n position: { line: line - 1, character: character - 1 }\n }\n return this.connection.sendRequest('textDocument/implementation', params)\n }\n\n async didOpen(filePath: string, content: string, languageId: string) {\n const params = {\n textDocument: {\n uri: this.normalizeUri(filePath),\n languageId,\n version: 1,\n text: content\n }\n }\n await this.connection.sendNotification('textDocument/didOpen', params)\n }\n\n async didChange(filePath: string, content: string, version: number) {\n const params = {\n textDocument: {\n uri: this.normalizeUri(filePath),\n version\n },\n contentChanges: [{ text: content }]\n }\n await this.connection.sendNotification('textDocument/didChange', params)\n }\n\n async didClose(filePath: string) {\n const params = {\n textDocument: {\n uri: this.normalizeUri(filePath)\n }\n }\n await this.connection.sendNotification('textDocument/didClose', params)\n }\n\n async waitForReadiness(filePath: string, timeoutMs: number = 3000): Promise<void> {\n const normalizedUri = this.normalizeUri(filePath);\n \n return new Promise<void>((resolve) => {\n let debounceTimer: NodeJS.Timeout | undefined;\n let timeoutTimer: NodeJS.Timeout;\n \n const cleanup = () => {\n if (debounceTimer) clearTimeout(debounceTimer);\n clearTimeout(timeoutTimer);\n this.diagnosticEvents.off('diagnostics', handler);\n };\n\n const handler = (event: any) => {\n // console.log(`[LSP Debug] Event URI: ${event.uri}, Target: ${normalizedUri}`)\n // Check if this diagnostic is for our file\n // Loose matching for Windows\n if (event.uri === normalizedUri || event.uri.toLowerCase() === normalizedUri.toLowerCase() || decodeURIComponent(event.uri) === decodeURIComponent(normalizedUri)) {\n // Reset debounce timer\n if (debounceTimer) clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n cleanup();\n resolve();\n }, 150); // 150ms debounce\n }\n };\n\n // Setup listener\n this.diagnosticEvents.on('diagnostics', handler);\n\n // Setup timeout (Safety Net)\n timeoutTimer = setTimeout(() => {\n cleanup();\n resolve(); // Resolve anyway to avoid blocking forever\n }, timeoutMs);\n });\n }\n\n getDiagnostics(filePath: string): any[] {\n return this.diagnosticsMap.get(this.normalizeUri(filePath)) || []\n }\n}\n", "import { GenericLspClient } from './generic'\nimport { extname, join, dirname, sep } from 'path'\nimport { LspServerRegistry } from '../registry'\nimport { readdir, readFile } from 'fs/promises'\nimport { existsSync } from 'fs'\nimport { getCwd } from '@utils/state'\nimport { levenshtein } from '@utils/text/smart-edit/levenshtein'\n\nexport class LspClientManager {\n private static instance: LspClientManager\n private clients: Map<string, GenericLspClient> = new Map()\n\n private constructor() {}\n\n static getInstance(): LspClientManager {\n if (!LspClientManager.instance) {\n LspClientManager.instance = new LspClientManager()\n }\n return LspClientManager.instance\n }\n\n // Helper to find project root\n private findProjectRoot(filePath: string): string {\n let current = dirname(filePath)\n while (current !== dirname(current)) {\n if (existsSync(join(current, 'package.json')) || existsSync(join(current, 'tsconfig.json')) || existsSync(join(current, 'go.mod')) || existsSync(join(current, 'Cargo.toml'))) {\n return current\n }\n current = dirname(current)\n }\n // Fallback to CWD if within CWD, else file dir\n if (filePath.startsWith(getCwd())) return getCwd()\n return dirname(filePath)\n }\n\n private getLanguageId(ext: string): string {\n const map: Record<string, string> = {\n '.ts': 'typescript',\n '.tsx': 'typescriptreact',\n '.js': 'javascript',\n '.jsx': 'javascriptreact',\n '.py': 'python',\n '.java': 'java',\n '.cs': 'csharp',\n '.cpp': 'cpp',\n '.c': 'c',\n '.rs': 'rust',\n '.go': 'go'\n }\n return map[ext] || 'plaintext'\n }\n\n private async ensureWorkspaceClients(rootPath: string) {\n try {\n // Heuristic: Scan root directory for file extensions to auto-detect needed servers\n const files = await readdir(rootPath, { withFileTypes: true })\n const extensionMap = new Map<string, string>() // ext -> realFilePath\n\n // Smart Project Detection\n const fileNames = new Set(files.map(f => f.name))\n if (fileNames.has('tsconfig.json') || fileNames.has('package.json')) {\n // Try to find a .ts or .js file to trigger activation\n // If root has no .ts/.js, look in src/\n if (!files.some(f => f.isFile() && /\\.(ts|tsx|js|jsx)$/.test(f.name))) {\n try {\n const srcFiles = await readdir(join(rootPath, 'src'), { withFileTypes: true })\n const triggerFile = srcFiles.find(f => f.isFile() && /\\.(ts|tsx|js|jsx)$/.test(f.name))\n if (triggerFile) {\n extensionMap.set(extname(triggerFile.name), join(rootPath, 'src', triggerFile.name))\n }\n } catch (e) {\n // src not found or error, ignore\n }\n }\n }\n if (fileNames.has('go.mod')) {\n extensionMap.set('.go', join(rootPath, 'go.mod')) // fallback trigger? No, needs .go file.\n // Look for main.go\n if (fileNames.has('main.go')) extensionMap.set('.go', join(rootPath, 'main.go'))\n }\n if (fileNames.has('Cargo.toml')) {\n // Look for src/main.rs or src/lib.rs\n try {\n if (existsSync(join(rootPath, 'src', 'main.rs'))) extensionMap.set('.rs', join(rootPath, 'src', 'main.rs'))\n else if (existsSync(join(rootPath, 'src', 'lib.rs'))) extensionMap.set('.rs', join(rootPath, 'src', 'lib.rs'))\n } catch (e) {}\n }\n\n for (const file of files) {\n if (file.isFile()) {\n const ext = extname(file.name)\n if (ext && !extensionMap.has(ext)) {\n extensionMap.set(ext, join(rootPath, file.name))\n }\n }\n }\n \n // Try to initialize server for each found extension\n for (const [ext, realPath] of extensionMap) {\n // getClient will trigger server initialization if not already running\n // console.log('[LspClientManager] Initializing client for', ext, realPath)\n const client = await this.getClient(realPath, rootPath)\n \n if (client) {\n // Phase 8: Warmup with Touch & Wait\n try {\n // console.log('[LspClientManager] Warming up', realPath)\n const content = await readFile(realPath, 'utf-8')\n // For project-level triggers (like tsconfig), we still need to open a valid source file\n // If realPath is not a source file (e.g. if we used a dummy), this might fail.\n // But our logic above tries to find real source files.\n await client.didOpen(realPath, content, this.getLanguageId(ext))\n await client.waitForReadiness(realPath, 2000)\n // console.log('[LspClientManager] Warmup complete for', realPath)\n } catch (e) {\n // console.error('[LspClientManager] Warmup failed', e)\n // Ignore warmup errors\n }\n } else {\n // console.log('[LspClientManager] Failed to get client for', ext)\n }\n }\n } catch (e) {\n // ignore scan errors\n }\n }\n\n async getClientForFile(filePath: string): Promise<GenericLspClient | null> {\n const rootPath = this.findProjectRoot(filePath)\n return this.getClient(filePath, rootPath)\n }\n\n async getClient(filePath: string, rootPath: string): Promise<GenericLspClient | null> {\n const ext = extname(filePath)\n const serverInfo = LspServerRegistry.getInstance().getServerForExtension(ext)\n \n if (!serverInfo) {\n return null\n }\n\n // Ensure installed\n try {\n const ready = await serverInfo.prepare()\n if (!ready) {\n return null\n }\n } catch (e) {\n return null\n }\n\n const cmd = await serverInfo.getCommand(rootPath)\n if (!cmd) {\n return null\n }\n\n const key = `${rootPath}:${serverInfo.id}`\n let client = this.clients.get(key)\n\n if (!client) {\n client = new GenericLspClient(cmd.command, cmd.args, rootPath, rootPath)\n try {\n await client.initialize()\n this.clients.set(key, client)\n } catch (error) {\n // console.error(`Failed to initialize LSP client for ${serverInfo.id}:`, error)\n return null\n }\n }\n\n return client\n }\n \n async shutdownAll() {\n for (const client of this.clients.values()) {\n await client.shutdown()\n }\n this.clients.clear()\n }\n\n async workspaceSymbol(query: string, rootPath: string = getCwd()): Promise<any[]> {\n // Remediation 1.1: Ensure clients initialized\n if (this.clients.size === 0) {\n await this.ensureWorkspaceClients(rootPath)\n }\n\n const results: any[] = []\n for (const client of this.clients.values()) {\n try {\n const symbols = await client.workspaceSymbol(query)\n if (symbols && Array.isArray(symbols)) {\n results.push(...symbols)\n }\n } catch (e) {\n // ignore\n }\n }\n\n // Remediation 1.2: Fuzzy Fallback (Client-side)\n if (results.length === 0 && query.length > 0) {\n for (const client of this.clients.values()) {\n try {\n // Try to get broad list (empty query)\n // Note: Some servers might return too many results or reject empty query.\n // Ideally we'd have a 'getAllSymbols' capability check.\n // For now, we try.\n const broadSymbols = await client.workspaceSymbol('') \n if (broadSymbols && Array.isArray(broadSymbols)) {\n for (const sym of broadSymbols) {\n const dist = levenshtein(query, sym.name)\n // Allow distance <= 2 or 30% of length\n if (dist <= 2 || dist <= query.length * 0.3) {\n results.push(sym)\n }\n }\n }\n } catch (e) {\n // ignore\n }\n }\n }\n\n return results\n }\n\n async documentSymbol(filePath: string, rootPath: string = getCwd()): Promise<any[] | null> {\n const client = await this.getClient(filePath, rootPath)\n if (!client) {\n return null\n }\n\n try {\n const content = await readFile(filePath, 'utf-8')\n const languageId = this.getLanguageId(extname(filePath))\n await client.didOpen(filePath, content, languageId)\n // Phase 8: Perception-Aware Wait\n await client.waitForReadiness(filePath, 2000)\n \n const symbols = await client.documentSymbol(filePath)\n return symbols || []\n } catch (e) {\n console.error(`Failed to get document symbols for ${filePath}:`, e)\n return null\n }\n }\n\n async getDiagnostics(filePath: string, rootPath: string = getCwd()): Promise<any[]> {\n const client = await this.getClient(filePath, rootPath)\n if (!client) {\n return []\n }\n // Ensure diagnostics are fresh if possible?\n // But getDiagnostics is synchronous map lookup.\n // We rely on waitForReadiness being called before this if needed.\n // For strict correctness, we should wait if we haven't recently.\n // But typical usage pattern is waitForReadiness() -> getDiagnostics().\n return client.getDiagnostics(filePath)\n }\n\n // New helper to expose waitForReadiness to clients who only have a manager\n async waitForReadiness(filePath: string, rootPath: string = getCwd(), timeoutMs: number = 2000): Promise<void> {\n // Use getClientForFile to ensure correct rootPath resolution if not provided or incorrect\n const client = await this.getClientForFile(filePath)\n if (client) {\n await client.waitForReadiness(filePath, timeoutMs)\n }\n }\n}\n", "import { join, dirname } from 'path'\nimport { fileURLToPath } from 'url'\nimport { existsSync, mkdirSync } from 'fs'\nimport { spawnSync, spawn } from 'child_process'\nimport { getToolsDir, findNearestRoot } from './utils'\nimport { debug as debugLogger } from '@utils/log/debugLogger'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\n\nexport interface LspServerInfo {\n id: string\n extensions: string[]\n rootMarkers: string[]\n \n /**\n * Check if the server is installed and ready.\n * If not, it may try to install it.\n */\n prepare(): Promise<boolean>\n \n /**\n * Get the command and args to start the server.\n */\n getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null>\n}\n\nabstract class BaseLspServer implements LspServerInfo {\n abstract id: string\n abstract extensions: string[]\n abstract rootMarkers: string[]\n\n abstract prepare(): Promise<boolean>\n abstract getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null>\n\n protected isInPath(cmd: string): boolean {\n try {\n const where = process.platform === 'win32' ? 'where' : 'which'\n const result = spawnSync(where, [cmd], { encoding: 'utf8' })\n return result.status === 0\n } catch {\n return false\n }\n }\n\n protected getLocalBinPath(binName: string, npmPackageName?: string): string {\n const exts = process.platform === 'win32' ? ['.cmd', '.exe', '.ps1', ''] : ['']\n\n // Strategy 1: Check node_modules/.bin in the current project (pre-installed)\n const localNodeModulesBin = join(process.cwd(), 'node_modules', '.bin')\n \n for (const ext of exts) {\n const localBinPath = join(localNodeModulesBin, `${binName}${ext}`)\n if (existsSync(localBinPath)) {\n return localBinPath\n }\n }\n\n // Try finding via require.resolve (more robust for finding pre-installed packages)\n try {\n const pkgName = npmPackageName || binName;\n \n const pkgEntry = require.resolve(pkgName, { paths: [process.cwd(), __dirname] })\n \n // Use the package root to find the .bin directory at the top level node_modules\n // Note: require.resolve returns the main file.\n // e.g. .../node_modules/pyright/dist/index.js\n // We need .../node_modules/.bin/pyright-langserver\n \n // Let's assume standard npm hoisting structure:\n // If pkg is at /path/to/node_modules/pkgName\n // Then bin is at /path/to/node_modules/.bin/binName\n \n let current = pkgEntry\n let pkgRoot = ''\n for (let i = 0; i < 5; i++) {\n current = join(current, '..')\n if (existsSync(join(current, 'package.json'))) {\n pkgRoot = current\n break\n }\n }\n \n if (pkgRoot) {\n const nodeModulesRoot = join(pkgRoot, '..')\n for (const ext of exts) {\n const potentialBin = join(nodeModulesRoot, '.bin', `${binName}${ext}`)\n if (existsSync(potentialBin)) {\n return potentialBin\n }\n }\n }\n } catch (e) {}\n\n\n // Strategy 2: Check global tools directory (GlobalToolManager)\n // Deprecated in favor of pre-installed node_modules\n \n return ''\n }\n}\n\nexport class GenericNpmServer extends BaseLspServer {\n id: string\n extensions: string[]\n rootMarkers: string[]\n npmPackage: string\n binName: string\n args: string[]\n\n constructor(id: string, extensions: string[], rootMarkers: string[], npmPackage: string, binName: string, args: string[]) {\n super()\n this.id = id\n this.extensions = extensions\n this.rootMarkers = rootMarkers\n this.npmPackage = npmPackage\n this.binName = binName\n this.args = args\n }\n\n async prepare(): Promise<boolean> {\n if (this.isInPath(this.binName)) {\n return true\n }\n \n // Check local node_modules\n const localBin = this.getLocalBinPath(this.binName, this.npmPackage)\n if (existsSync(localBin)) {\n return true\n }\n \n // No auto-install anymore\n return false\n }\n\n async getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null> {\n // Optimization for Windows: Always try to run node script directly to avoid cmd.exe issues\n // We do this BEFORE checking PATH because 'bun run' adds node_modules/.bin to PATH,\n // which points to the .cmd shim that we want to avoid.\n if (process.platform === 'win32') {\n try {\n // Try to resolve the package.json to find the bin script\n const pkgJsonPath = require.resolve(`${this.npmPackage}/package.json`, { paths: [process.cwd(), __dirname] })\n const pkgJson = require(pkgJsonPath)\n\n\n \n let binScript = ''\n if (typeof pkgJson.bin === 'string') {\n binScript = pkgJson.bin\n } else if (typeof pkgJson.bin === 'object' && pkgJson.bin[this.binName]) {\n binScript = pkgJson.bin[this.binName]\n }\n\n if (binScript) {\n // Special hack for Pyright on Windows:\n if (this.npmPackage === 'pyright' && binScript.endsWith('langserver.index.js')) {\n const distScript = join(dirname(pkgJsonPath), 'dist', 'pyright-langserver.js')\n if (existsSync(distScript)) {\n // debugLogger.info('LSP_PYRIGHT_OPT', { message: 'Running bundle directly', path: distScript })\n return { command: process.execPath, args: [distScript, ...this.args] }\n }\n }\n \n const scriptPath = join(dirname(pkgJsonPath), binScript)\n if (existsSync(scriptPath)) {\n return { command: process.execPath, args: [scriptPath, ...this.args] }\n }\n }\n } catch (e) {\n // Ignore and fall back to standard checks\n }\n }\n\n if (this.isInPath(this.binName)) {\n return { command: this.binName, args: this.args }\n }\n \n const localBin = this.getLocalBinPath(this.binName, this.npmPackage)\n if (existsSync(localBin)) {\n return { command: localBin, args: this.args }\n }\n \n return null\n }\n}\n\nclass GenericBinaryServer extends BaseLspServer {\n id: string\n extensions: string[]\n rootMarkers: string[]\n binNames: string[]\n args: string[]\n\n constructor(id: string, extensions: string[], rootMarkers: string[], binNames: string | string[], args: string[]) {\n super()\n this.id = id\n this.extensions = extensions\n this.rootMarkers = rootMarkers\n this.binNames = Array.isArray(binNames) ? binNames : [binNames]\n this.args = args\n }\n\n async prepare(): Promise<boolean> {\n return this.binNames.some(bin => this.isInPath(bin))\n }\n\n async getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null> {\n for (const bin of this.binNames) {\n if (this.isInPath(bin)) {\n return { command: bin, args: this.args }\n }\n }\n return null\n }\n}\n\nclass GoplsServer extends BaseLspServer {\n id = 'gopls'\n extensions = ['.go', '.mod']\n rootMarkers = ['go.mod', 'go.work', '.git']\n\n async prepare(): Promise<boolean> {\n if (this.isInPath('gopls')) {\n return true\n }\n\n // Check GOBIN or default go bin location if we installed it locally\n // For now, let's assume if it's not in PATH, we try to install it to GOBIN or PATH\n // But we prefer installing to our local tools dir if possible, OR just rely on 'go install' putting it in $(go env GOPATH)/bin\n // The issue is we don't easily know where that is without running 'go env GOPATH'.\n // Let's try to install it and assume it goes to PATH or we can find it.\n // Actually, we can check if `go` exists first.\n if (!this.isInPath('go')) {\n debugLogger.error('LSP_MISSING_DEP', { server: this.id, error: 'go command not found' })\n return false\n }\n\n return this.installGo()\n }\n\n async getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null> {\n if (this.isInPath('gopls')) {\n return { command: 'gopls', args: ['serve'] }\n }\n \n // Check if it's in GOPATH/bin (common fallback)\n // For simplicity, we only support it if it's in PATH or we can find it via `go env GOPATH`/bin\n // But since `prepare` runs `go install`, it usually puts it in a place that might NOT be in PATH if user hasn't configured it.\n // Let's try to find it in likely places?\n // Or just rely on PATH.\n return null\n }\n\n private async installGo(): Promise<boolean> {\n try {\n debugLogger.info('LSP_INSTALL', { server: this.id, action: 'start' })\n \n const result = spawnSync('go', ['install', 'golang.org/x/tools/gopls@latest'], { \n encoding: 'utf8'\n })\n\n if (result.status !== 0) {\n debugLogger.error('LSP_INSTALL_FAILED', { server: this.id, error: result.stderr })\n return false\n }\n\n // After install, check if it's in PATH now (unlikely if it wasn't before, unless it was just missing binary)\n // If not in PATH, warn user?\n if (!this.isInPath('gopls')) {\n // Maybe it's in $HOME/go/bin or $GOPATH/bin\n // We could try to add that to our search path for this session?\n debugLogger.warn('LSP_INSTALL_WARNING', { server: this.id, message: 'gopls installed but not found in PATH. Make sure $(go env GOPATH)/bin is in your PATH.' })\n }\n\n debugLogger.info('LSP_INSTALL', { server: this.id, action: 'success' })\n return true\n } catch (e) {\n debugLogger.error('LSP_INSTALL_ERROR', { server: this.id, error: String(e) })\n return false\n }\n }\n}\n\nclass RustAnalyzerServer extends BaseLspServer {\n id = 'rust-analyzer'\n extensions = ['.rs']\n rootMarkers = ['Cargo.toml', 'rust-project.json', '.git']\n\n async prepare(): Promise<boolean> {\n if (this.isInPath('rust-analyzer')) {\n return true\n }\n\n // Try rustup\n if (this.isInPath('rustup')) {\n return this.installRustup()\n }\n\n debugLogger.warn('LSP_MISSING_DEP', { server: this.id, message: 'rust-analyzer not found and rustup not available. Please install rust-analyzer manually.' })\n return false\n }\n\n async getCommand(rootPath: string): Promise<{ command: string, args: string[] } | null> {\n if (this.isInPath('rust-analyzer')) {\n return { command: 'rust-analyzer', args: [] }\n }\n return null\n }\n\n private async installRustup(): Promise<boolean> {\n try {\n debugLogger.info('LSP_INSTALL', { server: this.id, action: 'start' })\n \n const result = spawnSync('rustup', ['component', 'add', 'rust-analyzer'], { \n encoding: 'utf8'\n })\n\n if (result.status !== 0) {\n debugLogger.error('LSP_INSTALL_FAILED', { server: this.id, error: result.stderr })\n return false\n }\n\n debugLogger.info('LSP_INSTALL', { server: this.id, action: 'success' })\n return true\n } catch (e) {\n debugLogger.error('LSP_INSTALL_ERROR', { server: this.id, error: String(e) })\n return false\n }\n }\n}\n\n\nexport class LspServerRegistry {\n private static instance: LspServerRegistry\n private servers: LspServerInfo[] = []\n\n private constructor() {\n // Pyright (GenericNpmServer)\n this.register(new GenericNpmServer(\n 'pyright',\n ['.py', '.pyi'],\n ['pyrightconfig.json', 'pyproject.toml', 'setup.py', 'requirements.txt', 'Pipfile'],\n 'pyright',\n 'pyright-langserver',\n ['--stdio']\n ))\n \n this.register(new GoplsServer())\n this.register(new RustAnalyzerServer())\n this.register(new GenericNpmServer(\n 'bash-language-server',\n ['.sh', '.bash', '.zsh'],\n ['.git'],\n 'bash-language-server',\n 'bash-language-server',\n ['start']\n ))\n\n // TypeScript/JavaScript (typescript-language-server)\n this.register(new GenericNpmServer(\n 'typescript-language-server',\n ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'],\n ['tsconfig.json', 'package.json', 'jsconfig.json'],\n 'typescript-language-server',\n 'typescript-language-server',\n ['--stdio']\n ))\n\n // Tier 1: Easy NPM-based Servers\n // YAML\n this.register(new GenericNpmServer(\n 'yaml-language-server',\n ['.yaml', '.yml'],\n [],\n 'yaml-language-server',\n 'yaml-language-server',\n ['--stdio']\n ))\n\n // Dockerfile\n this.register(new GenericNpmServer(\n 'dockerfile-language-server',\n ['Dockerfile', '.dockerfile'],\n [],\n 'dockerfile-language-server-nodejs',\n 'docker-langserver',\n ['--stdio']\n ))\n\n // Vue\n this.register(new GenericNpmServer(\n 'vue-language-server',\n ['.vue'],\n ['package.json'],\n '@vue/language-server',\n 'vue-language-server',\n ['--stdio']\n ))\n\n // HTML/CSS/JSON (vscode-langservers-extracted)\n // Note: The binary names might vary, usually `vscode-html-language-server`, `vscode-css-language-server`\n // Let's add them individually but sharing the same package install? \n // GenericNpmServer assumes 1 package = 1 binary. \n // vscode-langservers-extracted provides multiple bins.\n // We can just instantiate multiple GenericNpmServer with the same package name. It's fine, it will just try to install it again (npm handles it).\n \n this.register(new GenericNpmServer(\n 'html-language-server',\n ['.html', '.htm'],\n [],\n 'vscode-langservers-extracted',\n 'vscode-html-language-server',\n ['--stdio']\n ))\n\n this.register(new GenericNpmServer(\n 'css-language-server',\n ['.css', '.scss', '.less'],\n [],\n 'vscode-langservers-extracted',\n 'vscode-css-language-server',\n ['--stdio']\n ))\n\n this.register(new GenericNpmServer(\n 'json-language-server',\n ['.json', '.jsonc'],\n [],\n 'vscode-langservers-extracted',\n 'vscode-json-language-server',\n ['--stdio']\n ))\n\n // Tier 2: Easy NPM-based Servers (More)\n // PHP (intelephense)\n this.register(new GenericNpmServer(\n 'intelephense',\n ['.php'],\n ['composer.json'],\n 'intelephense',\n 'intelephense',\n ['--stdio']\n ))\n\n // Svelte\n this.register(new GenericNpmServer(\n 'svelte-language-server',\n ['.svelte'],\n ['package.json'],\n 'svelte-language-server',\n 'svelte-language-server',\n ['--stdio']\n ))\n\n // Astro\n this.register(new GenericNpmServer(\n 'astro-ls',\n ['.astro'],\n ['package.json'],\n '@astrojs/language-server',\n 'astro-ls',\n ['--stdio']\n ))\n\n // Prisma\n this.register(new GenericNpmServer(\n 'prisma-language-server',\n ['.prisma'],\n ['schema.prisma'],\n '@prisma/language-server',\n 'prisma-language-server',\n ['--stdio']\n ))\n\n // GraphQL\n this.register(new GenericNpmServer(\n 'graphql-lsp',\n ['.graphql', '.gql'],\n ['.graphqlrc', 'graphql.config.js'],\n 'graphql-language-service-cli',\n 'graphql-lsp',\n ['server', '-m', 'stream']\n ))\n\n // Tier 3: Binary Path Detection (System Dependencies)\n // Java (jdtls)\n this.register(new GenericBinaryServer(\n 'jdtls',\n ['.java'],\n ['pom.xml', 'build.gradle'],\n 'jdtls',\n []\n ))\n\n // C/C++ (clangd)\n this.register(new GenericBinaryServer(\n 'clangd',\n ['.c', '.cpp', '.h', '.hpp', '.cc'],\n ['compile_commands.json', '.clang-format'],\n 'clangd',\n ['--stdio']\n ))\n\n // Ruby (ruby-lsp)\n this.register(new GenericBinaryServer(\n 'ruby-lsp',\n ['.rb', '.rake'],\n ['Gemfile', '.ruby-version'],\n 'ruby-lsp',\n ['--stdio']\n ))\n\n // Lua (lua-language-server)\n this.register(new GenericBinaryServer(\n 'lua-language-server',\n ['.lua'],\n ['.luarc.json'],\n ['lua-ls', 'lua-language-server'],\n []\n ))\n\n // Terraform (terraform-ls)\n this.register(new GenericBinaryServer(\n 'terraform-ls',\n ['.tf', '.tfvars'],\n [],\n 'terraform-ls',\n ['serve']\n ))\n\n // Kotlin (kotlin-language-server)\n this.register(new GenericBinaryServer(\n 'kotlin-language-server',\n ['.kt', '.kts'],\n ['build.gradle.kts'],\n ['kotlin-ls', 'kotlin-language-server'],\n []\n ))\n\n // Elixir (elixir-ls)\n this.register(new GenericBinaryServer(\n 'elixir-ls',\n ['.ex', '.exs'],\n ['mix.exs'],\n ['elixir-ls', 'language_server.sh'],\n []\n ))\n\n // Zig (zls)\n this.register(new GenericBinaryServer(\n 'zls',\n ['.zig'],\n ['build.zig'],\n 'zls',\n []\n ))\n\n // C# (csharp-ls)\n this.register(new GenericBinaryServer(\n 'csharp-ls',\n ['.cs'],\n ['.csproj', '.sln'],\n 'csharp-ls',\n []\n ))\n\n // F# (fsautocomplete)\n this.register(new GenericBinaryServer(\n 'fsautocomplete',\n ['.fs', '.fsi', '.fsx'],\n ['.fsproj', '.sln'],\n 'fsautocomplete',\n ['--background-service-enabled']\n ))\n\n // Swift (sourcekit-lsp)\n this.register(new GenericBinaryServer(\n 'sourcekit-lsp',\n ['.swift'],\n ['Package.swift'],\n 'sourcekit-lsp',\n []\n ))\n\n // Dart (dart language-server)\n this.register(new GenericBinaryServer(\n 'dart',\n ['.dart'],\n ['pubspec.yaml'],\n 'dart',\n ['language-server']\n ))\n\n // OCaml (ocamllsp)\n this.register(new GenericBinaryServer(\n 'ocamllsp',\n ['.ml', '.mli'],\n ['dune-project'],\n ['ocaml-lsp', 'ocamllsp'],\n []\n ))\n\n // Gleam (gleam lsp)\n this.register(new GenericBinaryServer(\n 'gleam',\n ['.gleam'],\n ['gleam.toml'],\n 'gleam',\n ['lsp']\n ))\n\n // Clojure (clojure-lsp)\n this.register(new GenericBinaryServer(\n 'clojure-lsp',\n ['.clj', '.cljs', '.cljc', '.edn'],\n ['deps.edn', 'project.clj'],\n 'clojure-lsp',\n []\n ))\n\n // Nix (nixd)\n this.register(new GenericBinaryServer(\n 'nixd',\n ['.nix'],\n ['flake.nix'],\n 'nixd',\n []\n ))\n\n // Typst (tinymist)\n this.register(new GenericBinaryServer(\n 'tinymist',\n ['.typ'],\n [],\n 'tinymist',\n []\n ))\n\n // Scala (metals)\n this.register(new GenericBinaryServer(\n 'metals',\n ['.scala', '.sbt', '.sc'],\n ['build.sbt'],\n 'metals',\n []\n ))\n\n // Haskell (haskell-language-server-wrapper)\n this.register(new GenericBinaryServer(\n 'haskell-language-server',\n ['.hs', '.lhs'],\n ['stack.yaml', 'cabal.project', '*.cabal'],\n 'haskell-language-server-wrapper',\n ['--lsp']\n ))\n\n // Tex/Latex (texlab)\n this.register(new GenericBinaryServer(\n 'texlab',\n ['.tex', '.bib'],\n [],\n 'texlab',\n []\n ))\n }\n\n static getInstance(): LspServerRegistry {\n if (!LspServerRegistry.instance) {\n LspServerRegistry.instance = new LspServerRegistry()\n }\n return LspServerRegistry.instance\n }\n\n register(server: LspServerInfo) {\n this.servers.push(server)\n }\n\n getServerForExtension(ext: string): LspServerInfo | null {\n return this.servers.find(s => s.extensions.includes(ext)) || null\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["join", "dirname", "fileURLToPath", "fileURLToPath", "existsSync", "dirname", "existsSync", "join"]
7
+ }
@@ -10,10 +10,10 @@ import {
10
10
  getSettingsFileCandidates,
11
11
  loadSettingsWithLegacyFallback,
12
12
  saveSettingsToPrimaryAndSyncLegacy
13
- } from "./chunk-F3JJJLFB.js";
13
+ } from "./chunk-OQ6HRRWQ.js";
14
14
  import {
15
15
  getCwd
16
- } from "./chunk-KJXBKZD4.js";
16
+ } from "./chunk-HKFHNDP3.js";
17
17
 
18
18
  // src/services/ui/outputStyles.ts
19
19
  import figures from "figures";
@@ -3,7 +3,7 @@ const require = __pybCreateRequire(import.meta.url);
3
3
 
4
4
  // src/services/ai/llmLazy.ts
5
5
  async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal, options) {
6
- const { queryLLM: inner } = await import("./llm-CGDOSTGR.js");
6
+ const { queryLLM: inner } = await import("./llm-FH4YCHMV.js");
7
7
  return inner(
8
8
  messages,
9
9
  systemPrompt,
@@ -14,15 +14,15 @@ async function queryLLM(messages, systemPrompt, maxThinkingTokens, tools, signal
14
14
  );
15
15
  }
16
16
  async function queryQuick(args) {
17
- const { queryQuick: inner } = await import("./llm-CGDOSTGR.js");
17
+ const { queryQuick: inner } = await import("./llm-FH4YCHMV.js");
18
18
  return inner(args);
19
19
  }
20
20
  async function verifyApiKey(apiKey, baseURL, provider) {
21
- const { verifyApiKey: inner } = await import("./llm-CGDOSTGR.js");
21
+ const { verifyApiKey: inner } = await import("./llm-FH4YCHMV.js");
22
22
  return inner(apiKey, baseURL, provider);
23
23
  }
24
24
  async function fetchAnthropicModels(apiKey, baseURL) {
25
- const { fetchAnthropicModels: inner } = await import("./llm-CGDOSTGR.js");
25
+ const { fetchAnthropicModels: inner } = await import("./llm-FH4YCHMV.js");
26
26
  return inner(apiKey, baseURL);
27
27
  }
28
28
 
@@ -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-4KVOFH2S.js";
5
+ } from "./chunk-3EF6RG5V.js";
6
6
  import {
7
7
  parseFrontmatter
8
- } from "./chunk-7CIDTUWO.js";
8
+ } from "./chunk-S3T4MUKD.js";
9
9
  import {
10
10
  getCwd
11
- } from "./chunk-KJXBKZD4.js";
11
+ } from "./chunk-HKFHNDP3.js";
12
12
 
13
13
  // src/services/plugins/pluginValidation.ts
14
14
  import { existsSync, lstatSync, readFileSync } from "node:fs";
@@ -2,7 +2,7 @@ import { createRequire as __pybCreateRequire } from "node:module";
2
2
  const require = __pybCreateRequire(import.meta.url);
3
3
  import {
4
4
  SESSION_ID
5
- } from "./chunk-KJXBKZD4.js";
5
+ } from "./chunk-HKFHNDP3.js";
6
6
 
7
7
  // src/utils/log/debugLogger.ts
8
8
  import { existsSync, mkdirSync, appendFileSync } from "fs";