pybao-cli 1.4.12 → 1.4.13

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 (147) hide show
  1. package/dist/REPL-634DFL57.js +47 -0
  2. package/dist/{acp-E4XDOLNC.js → acp-AITGGIN7.js} +29 -29
  3. package/dist/{agentsValidate-GZPJASIL.js → agentsValidate-K3GLHEUJ.js} +7 -7
  4. package/dist/{ask-BQDZUSJ4.js → ask-XRAJ7ONM.js} +28 -28
  5. package/dist/{autoUpdater-XGGEYCZS.js → autoUpdater-2YW234FZ.js} +3 -3
  6. package/dist/{chunk-EOQY6JTU.js → chunk-2PC7UK66.js} +3 -3
  7. package/dist/{chunk-WLWHTU5X.js → chunk-34XEWGUY.js} +1 -1
  8. package/dist/{chunk-PFJM7WWU.js → chunk-5WXWY6LV.js} +70 -3
  9. package/dist/chunk-5WXWY6LV.js.map +7 -0
  10. package/dist/{chunk-EQ3NKY3J.js → chunk-6OP2JTUK.js} +1 -1
  11. package/dist/{chunk-EQ3NKY3J.js.map → chunk-6OP2JTUK.js.map} +1 -1
  12. package/dist/{chunk-2W64YTNU.js → chunk-BTS2TAAW.js} +4 -4
  13. package/dist/{chunk-B52OTXX2.js → chunk-CFTVDXFH.js} +3 -3
  14. package/dist/{chunk-2OQCOHOW.js → chunk-CPE4NPQV.js} +2 -2
  15. package/dist/{chunk-EN7KWHEK.js → chunk-CVJLF2VG.js} +108 -17
  16. package/dist/chunk-CVJLF2VG.js.map +7 -0
  17. package/dist/{chunk-BGY75RH7.js → chunk-CXT225X7.js} +2 -2
  18. package/dist/{chunk-M5YAPELI.js → chunk-FMH4U7NO.js} +1 -1
  19. package/dist/{chunk-H3YIL7ZG.js → chunk-FT5UM6YL.js} +1 -1
  20. package/dist/{chunk-VUMOG2FB.js → chunk-HCN7LMEB.js} +1 -1
  21. package/dist/{chunk-GCFCZ24S.js → chunk-M7QSGOTT.js} +1 -1
  22. package/dist/{chunk-HS6N2642.js → chunk-NG5RU74R.js} +4 -4
  23. package/dist/{chunk-2ADSIWFE.js → chunk-O5PGBSLH.js} +2 -2
  24. package/dist/{chunk-QJN4JAVY.js → chunk-OOTTUF6Z.js} +1 -1
  25. package/dist/{chunk-NGE3FFL4.js → chunk-OX4Q6Z5R.js} +3 -3
  26. package/dist/{chunk-AI77W7AH.js → chunk-P7MPKAPW.js} +1 -1
  27. package/dist/{chunk-KNVKVAFM.js → chunk-PHKBTCLT.js} +2 -2
  28. package/dist/{chunk-OYQOUTXM.js → chunk-QKB32NDM.js} +2 -2
  29. package/dist/{chunk-HBW2UFW3.js → chunk-RHY3RRE6.js} +2 -2
  30. package/dist/{chunk-HBGSB66X.js → chunk-S45DDLGG.js} +3 -3
  31. package/dist/{chunk-J7QJQFL4.js → chunk-TWPWHWJT.js} +4 -4
  32. package/dist/{chunk-XHPE7NA6.js → chunk-UDNZNXXR.js} +3 -3
  33. package/dist/{chunk-IBX7QYW6.js → chunk-V337ZSSD.js} +140 -35
  34. package/dist/{chunk-IBX7QYW6.js.map → chunk-V337ZSSD.js.map} +3 -3
  35. package/dist/{chunk-FS7A5V53.js → chunk-VFAFA24S.js} +3 -3
  36. package/dist/{chunk-N7F2AWKM.js → chunk-VGDDQSCO.js} +1 -1
  37. package/dist/{chunk-F2DJ35GI.js → chunk-XJZQD7RE.js} +17 -17
  38. package/dist/{chunk-F2DJ35GI.js.map → chunk-XJZQD7RE.js.map} +1 -1
  39. package/dist/{chunk-O3KEVQNA.js → chunk-Y3UMGUVE.js} +1 -1
  40. package/dist/{chunk-JL3VTRTU.js → chunk-ZOM357PV.js} +2 -2
  41. package/dist/{cli-IIMBFGDW.js → cli-MXO677IA.js} +87 -87
  42. package/dist/commands-Q5LUFGJ5.js +51 -0
  43. package/dist/{config-FTVECYMO.js → config-YFZ2WAYP.js} +4 -4
  44. package/dist/{context-NDUX3ORF.js → context-OOIFZD5B.js} +6 -6
  45. package/dist/{customCommands-GR6WWVJY.js → customCommands-C5UREHC4.js} +4 -4
  46. package/dist/{env-PTS2KGBD.js → env-LQJ2XZDO.js} +2 -2
  47. package/dist/{file-5WKQ32ID.js → file-ZBIAG7X4.js} +4 -4
  48. package/dist/index.js +3 -3
  49. package/dist/{llm-XJH5PF7T.js → llm-RCNWJH2C.js} +29 -29
  50. package/dist/{llmLazy-AQ7NCFL2.js → llmLazy-KXJFFPMF.js} +1 -1
  51. package/dist/{loader-PO73B3AB.js → loader-ENRLCLHZ.js} +4 -4
  52. package/dist/{lsp-IZXFXACE.js → lsp-VWL3PVQJ.js} +6 -6
  53. package/dist/{lspAnchor-IQFSS2WW.js → lspAnchor-WPJIG2RI.js} +6 -6
  54. package/dist/{mcp-S3EXRZWS.js → mcp-P5T4TUW2.js} +7 -7
  55. package/dist/{mentionProcessor-UY2IW2RP.js → mentionProcessor-4ICD3GVH.js} +5 -5
  56. package/dist/{messages-KCJBNPPP.js → messages-SEOXF7DS.js} +1 -1
  57. package/dist/{model-57SVT5TP.js → model-YOPR5KUS.js} +5 -5
  58. package/dist/{openai-RUM2XGGO.js → openai-FVFZDXPS.js} +5 -5
  59. package/dist/{outputStyles-V7QYGZHM.js → outputStyles-7ZZ2JBOT.js} +4 -4
  60. package/dist/{pluginRuntime-55XGU4OS.js → pluginRuntime-LASQNLIR.js} +6 -6
  61. package/dist/{pluginValidation-ICH7XE5C.js → pluginValidation-4BABNGAC.js} +6 -6
  62. package/dist/prompts-DJNSFFKV.js +53 -0
  63. package/dist/{pybAgentSessionLoad-3NWDY4SQ.js → pybAgentSessionLoad-O7V7I7CV.js} +4 -4
  64. package/dist/{pybAgentSessionResume-XJJ6DMEL.js → pybAgentSessionResume-Q7EYAD6H.js} +4 -4
  65. package/dist/{pybAgentStreamJsonSession-FOVNGGFA.js → pybAgentStreamJsonSession-N374RMH5.js} +1 -1
  66. package/dist/{pybHooks-ACAEY3WY.js → pybHooks-MHFEMZC6.js} +4 -4
  67. package/dist/query-LAUPI7JK.js +55 -0
  68. package/dist/{registry-KD75EMVF.js → registry-KVMGHJ4N.js} +5 -5
  69. package/dist/{ripgrep-6YHO2NBP.js → ripgrep-XSJJZ3W3.js} +3 -3
  70. package/dist/{skillMarketplace-VH7FHRA4.js → skillMarketplace-FL7XBTHJ.js} +3 -3
  71. package/dist/{state-Z24WIC3H.js → state-5NJOFKYB.js} +2 -2
  72. package/dist/{theme-3K7DL646.js → theme-Z26AKEVC.js} +5 -5
  73. package/dist/{toolPermissionSettings-7V3HRK2G.js → toolPermissionSettings-SPSMAX5P.js} +6 -6
  74. package/dist/tools-Q44D6ZG7.js +52 -0
  75. package/dist/{userInput-KJC6X5WI.js → userInput-3TEMRAK7.js} +30 -30
  76. package/package.json +1 -1
  77. package/dist/REPL-IXJZCNDW.js +0 -47
  78. package/dist/chunk-EN7KWHEK.js.map +0 -7
  79. package/dist/chunk-PFJM7WWU.js.map +0 -7
  80. package/dist/commands-WZNPO2DW.js +0 -51
  81. package/dist/prompts-UNCTPPON.js +0 -53
  82. package/dist/query-DNXATEQW.js +0 -55
  83. package/dist/tools-TBUVJIUV.js +0 -52
  84. /package/dist/{REPL-IXJZCNDW.js.map → REPL-634DFL57.js.map} +0 -0
  85. /package/dist/{acp-E4XDOLNC.js.map → acp-AITGGIN7.js.map} +0 -0
  86. /package/dist/{agentsValidate-GZPJASIL.js.map → agentsValidate-K3GLHEUJ.js.map} +0 -0
  87. /package/dist/{ask-BQDZUSJ4.js.map → ask-XRAJ7ONM.js.map} +0 -0
  88. /package/dist/{autoUpdater-XGGEYCZS.js.map → autoUpdater-2YW234FZ.js.map} +0 -0
  89. /package/dist/{chunk-EOQY6JTU.js.map → chunk-2PC7UK66.js.map} +0 -0
  90. /package/dist/{chunk-WLWHTU5X.js.map → chunk-34XEWGUY.js.map} +0 -0
  91. /package/dist/{chunk-2W64YTNU.js.map → chunk-BTS2TAAW.js.map} +0 -0
  92. /package/dist/{chunk-B52OTXX2.js.map → chunk-CFTVDXFH.js.map} +0 -0
  93. /package/dist/{chunk-2OQCOHOW.js.map → chunk-CPE4NPQV.js.map} +0 -0
  94. /package/dist/{chunk-BGY75RH7.js.map → chunk-CXT225X7.js.map} +0 -0
  95. /package/dist/{chunk-M5YAPELI.js.map → chunk-FMH4U7NO.js.map} +0 -0
  96. /package/dist/{chunk-H3YIL7ZG.js.map → chunk-FT5UM6YL.js.map} +0 -0
  97. /package/dist/{chunk-VUMOG2FB.js.map → chunk-HCN7LMEB.js.map} +0 -0
  98. /package/dist/{chunk-GCFCZ24S.js.map → chunk-M7QSGOTT.js.map} +0 -0
  99. /package/dist/{chunk-HS6N2642.js.map → chunk-NG5RU74R.js.map} +0 -0
  100. /package/dist/{chunk-2ADSIWFE.js.map → chunk-O5PGBSLH.js.map} +0 -0
  101. /package/dist/{chunk-QJN4JAVY.js.map → chunk-OOTTUF6Z.js.map} +0 -0
  102. /package/dist/{chunk-NGE3FFL4.js.map → chunk-OX4Q6Z5R.js.map} +0 -0
  103. /package/dist/{chunk-AI77W7AH.js.map → chunk-P7MPKAPW.js.map} +0 -0
  104. /package/dist/{chunk-KNVKVAFM.js.map → chunk-PHKBTCLT.js.map} +0 -0
  105. /package/dist/{chunk-OYQOUTXM.js.map → chunk-QKB32NDM.js.map} +0 -0
  106. /package/dist/{chunk-HBW2UFW3.js.map → chunk-RHY3RRE6.js.map} +0 -0
  107. /package/dist/{chunk-HBGSB66X.js.map → chunk-S45DDLGG.js.map} +0 -0
  108. /package/dist/{chunk-J7QJQFL4.js.map → chunk-TWPWHWJT.js.map} +0 -0
  109. /package/dist/{chunk-XHPE7NA6.js.map → chunk-UDNZNXXR.js.map} +0 -0
  110. /package/dist/{chunk-FS7A5V53.js.map → chunk-VFAFA24S.js.map} +0 -0
  111. /package/dist/{chunk-N7F2AWKM.js.map → chunk-VGDDQSCO.js.map} +0 -0
  112. /package/dist/{chunk-O3KEVQNA.js.map → chunk-Y3UMGUVE.js.map} +0 -0
  113. /package/dist/{chunk-JL3VTRTU.js.map → chunk-ZOM357PV.js.map} +0 -0
  114. /package/dist/{cli-IIMBFGDW.js.map → cli-MXO677IA.js.map} +0 -0
  115. /package/dist/{commands-WZNPO2DW.js.map → commands-Q5LUFGJ5.js.map} +0 -0
  116. /package/dist/{config-FTVECYMO.js.map → config-YFZ2WAYP.js.map} +0 -0
  117. /package/dist/{context-NDUX3ORF.js.map → context-OOIFZD5B.js.map} +0 -0
  118. /package/dist/{customCommands-GR6WWVJY.js.map → customCommands-C5UREHC4.js.map} +0 -0
  119. /package/dist/{env-PTS2KGBD.js.map → env-LQJ2XZDO.js.map} +0 -0
  120. /package/dist/{file-5WKQ32ID.js.map → file-ZBIAG7X4.js.map} +0 -0
  121. /package/dist/{llm-XJH5PF7T.js.map → llm-RCNWJH2C.js.map} +0 -0
  122. /package/dist/{llmLazy-AQ7NCFL2.js.map → llmLazy-KXJFFPMF.js.map} +0 -0
  123. /package/dist/{loader-PO73B3AB.js.map → loader-ENRLCLHZ.js.map} +0 -0
  124. /package/dist/{lsp-IZXFXACE.js.map → lsp-VWL3PVQJ.js.map} +0 -0
  125. /package/dist/{lspAnchor-IQFSS2WW.js.map → lspAnchor-WPJIG2RI.js.map} +0 -0
  126. /package/dist/{mcp-S3EXRZWS.js.map → mcp-P5T4TUW2.js.map} +0 -0
  127. /package/dist/{mentionProcessor-UY2IW2RP.js.map → mentionProcessor-4ICD3GVH.js.map} +0 -0
  128. /package/dist/{messages-KCJBNPPP.js.map → messages-SEOXF7DS.js.map} +0 -0
  129. /package/dist/{model-57SVT5TP.js.map → model-YOPR5KUS.js.map} +0 -0
  130. /package/dist/{openai-RUM2XGGO.js.map → openai-FVFZDXPS.js.map} +0 -0
  131. /package/dist/{outputStyles-V7QYGZHM.js.map → outputStyles-7ZZ2JBOT.js.map} +0 -0
  132. /package/dist/{pluginRuntime-55XGU4OS.js.map → pluginRuntime-LASQNLIR.js.map} +0 -0
  133. /package/dist/{pluginValidation-ICH7XE5C.js.map → pluginValidation-4BABNGAC.js.map} +0 -0
  134. /package/dist/{prompts-UNCTPPON.js.map → prompts-DJNSFFKV.js.map} +0 -0
  135. /package/dist/{pybAgentSessionLoad-3NWDY4SQ.js.map → pybAgentSessionLoad-O7V7I7CV.js.map} +0 -0
  136. /package/dist/{pybAgentSessionResume-XJJ6DMEL.js.map → pybAgentSessionResume-Q7EYAD6H.js.map} +0 -0
  137. /package/dist/{pybAgentStreamJsonSession-FOVNGGFA.js.map → pybAgentStreamJsonSession-N374RMH5.js.map} +0 -0
  138. /package/dist/{pybHooks-ACAEY3WY.js.map → pybHooks-MHFEMZC6.js.map} +0 -0
  139. /package/dist/{query-DNXATEQW.js.map → query-LAUPI7JK.js.map} +0 -0
  140. /package/dist/{registry-KD75EMVF.js.map → registry-KVMGHJ4N.js.map} +0 -0
  141. /package/dist/{ripgrep-6YHO2NBP.js.map → ripgrep-XSJJZ3W3.js.map} +0 -0
  142. /package/dist/{skillMarketplace-VH7FHRA4.js.map → skillMarketplace-FL7XBTHJ.js.map} +0 -0
  143. /package/dist/{state-Z24WIC3H.js.map → state-5NJOFKYB.js.map} +0 -0
  144. /package/dist/{theme-3K7DL646.js.map → theme-Z26AKEVC.js.map} +0 -0
  145. /package/dist/{toolPermissionSettings-7V3HRK2G.js.map → toolPermissionSettings-SPSMAX5P.js.map} +0 -0
  146. /package/dist/{tools-TBUVJIUV.js.map → tools-Q44D6ZG7.js.map} +0 -0
  147. /package/dist/{userInput-KJC6X5WI.js.map → userInput-3TEMRAK7.js.map} +0 -0
@@ -4,16 +4,16 @@ import {
4
4
  LspServerRegistry,
5
5
  findNearestRoot,
6
6
  getInstallNotices
7
- } from "./chunk-PFJM7WWU.js";
7
+ } from "./chunk-5WXWY6LV.js";
8
8
  import {
9
9
  levenshtein
10
10
  } from "./chunk-UZ34JEUK.js";
11
11
  import {
12
12
  debug
13
- } from "./chunk-N7F2AWKM.js";
13
+ } from "./chunk-VGDDQSCO.js";
14
14
  import {
15
15
  getCwd
16
- } from "./chunk-AI77W7AH.js";
16
+ } from "./chunk-P7MPKAPW.js";
17
17
 
18
18
  // src/lsp/index.ts
19
19
  import { extname as extname2 } from "path";
@@ -534,7 +534,7 @@ var LspClientManager = class _LspClientManager {
534
534
  const safeCwd = /[^\x00-\x7F]/.test(resolvedRoot) ? process.cwd() : resolvedRoot;
535
535
  let initOpts = serverInfo.initializationOptions;
536
536
  if (serverInfo.id === "pyright" || serverInfo.id === "ty") {
537
- const { detectPythonVenv } = await import("./registry-KD75EMVF.js");
537
+ const { detectPythonVenv } = await import("./registry-KVMGHJ4N.js");
538
538
  const pythonPath = detectPythonVenv(resolvedRoot);
539
539
  if (pythonPath) {
540
540
  initOpts = { ...initOpts ?? {}, pythonPath };
@@ -2487,6 +2487,10 @@ ${truncationLine}` : parts.join("\n");
2487
2487
  fileCount: 1
2488
2488
  };
2489
2489
  }
2490
+ function formatFallbackNotice(operation, reason, capability, detail) {
2491
+ const base = `Fallback ${operation} (reason: ${reason}, capability: ${capability})`;
2492
+ return detail ? `${base} ${detail}` : base;
2493
+ }
2490
2494
  var fastPathFailures = /* @__PURE__ */ new Map();
2491
2495
  var fastPathLastFallbackReason = /* @__PURE__ */ new Map();
2492
2496
  var fastPathHealth = /* @__PURE__ */ new Map();
@@ -3180,22 +3184,33 @@ var LspAPI = {
3180
3184
  recordFailure(input.operation, "unavailable");
3181
3185
  if (LSP_FALLBACK_BOUNDARY.has(fallbackOperation)) {
3182
3186
  const lang = ParserRegistry.getLanguage(input.filePath);
3187
+ const fallbackReason = lang ? "lsp-unavailable" : "unsupported";
3183
3188
  if (!lang) {
3184
- recordOperationFallback(fallbackOperation, input.filePath, "unsupported");
3189
+ recordOperationFallback(fallbackOperation, input.filePath, fallbackReason);
3185
3190
  } else {
3186
- recordOperationFallback(fallbackOperation, input.filePath, "lsp-unavailable");
3191
+ recordOperationFallback(fallbackOperation, input.filePath, fallbackReason);
3187
3192
  if (fallbackOperation === "diagnostics") {
3188
3193
  try {
3189
3194
  const diagnostics = await getTreeSitterDiagnostics(input.filePath);
3190
3195
  const formatted = formatGenericDiagnosticsResult(diagnostics);
3191
3196
  return {
3192
- formatted: `Diagnostics fallback: ${formatted.formatted}`,
3197
+ formatted: formatFallbackNotice(
3198
+ "diagnostics",
3199
+ fallbackReason,
3200
+ "tree-sitter diagnostics",
3201
+ formatted.formatted
3202
+ ),
3193
3203
  resultCount: formatted.resultCount,
3194
3204
  fileCount: formatted.fileCount
3195
3205
  };
3196
3206
  } catch {
3197
3207
  return {
3198
- formatted: `Diagnostics fallback: LSP unavailable for ${ext}. Static analysis not available.`,
3208
+ formatted: formatFallbackNotice(
3209
+ "diagnostics",
3210
+ fallbackReason,
3211
+ "none",
3212
+ `LSP unavailable for ${ext}. Static analysis not available.`
3213
+ ),
3199
3214
  resultCount: 0,
3200
3215
  fileCount: 0
3201
3216
  };
@@ -3224,7 +3239,12 @@ var LspAPI = {
3224
3239
  if (refs.length > 0) {
3225
3240
  const formatted = formatGenericReferencesResult(refs);
3226
3241
  return {
3227
- formatted: `References fallback: ${formatted.formatted}`,
3242
+ formatted: formatFallbackNotice(
3243
+ "findReferences",
3244
+ fallbackReason,
3245
+ "token scan",
3246
+ formatted.formatted
3247
+ ),
3228
3248
  resultCount: formatted.resultCount,
3229
3249
  fileCount: formatted.fileCount
3230
3250
  };
@@ -3234,7 +3254,12 @@ var LspAPI = {
3234
3254
  }
3235
3255
  }
3236
3256
  return {
3237
- formatted: `References fallback: LSP unavailable for ${ext}. Returning 0 references.`,
3257
+ formatted: formatFallbackNotice(
3258
+ "findReferences",
3259
+ fallbackReason,
3260
+ "token scan",
3261
+ `LSP unavailable for ${ext}. Returning 0 references.`
3262
+ ),
3238
3263
  resultCount: 0,
3239
3264
  fileCount: 0
3240
3265
  };
@@ -3258,7 +3283,12 @@ var LspAPI = {
3258
3283
  };
3259
3284
  const formatted = formatGenericCallHierarchyItemsResult([item]);
3260
3285
  return {
3261
- formatted: `Call hierarchy fallback: ${formatted.formatted}`,
3286
+ formatted: formatFallbackNotice(
3287
+ "prepareCallHierarchy",
3288
+ fallbackReason,
3289
+ "tree-sitter symbols",
3290
+ formatted.formatted
3291
+ ),
3262
3292
  resultCount: formatted.resultCount,
3263
3293
  fileCount: formatted.fileCount
3264
3294
  };
@@ -3267,14 +3297,24 @@ var LspAPI = {
3267
3297
  }
3268
3298
  }
3269
3299
  return {
3270
- formatted: `Call hierarchy fallback: LSP unavailable for ${ext}. Returning 0 items.`,
3300
+ formatted: formatFallbackNotice(
3301
+ "prepareCallHierarchy",
3302
+ fallbackReason,
3303
+ "tree-sitter symbols",
3304
+ `LSP unavailable for ${ext}. Returning 0 items.`
3305
+ ),
3271
3306
  resultCount: 0,
3272
3307
  fileCount: 0
3273
3308
  };
3274
3309
  }
3275
3310
  if (fallbackOperation === "incomingCalls" || fallbackOperation === "outgoingCalls") {
3276
3311
  return {
3277
- formatted: `Call hierarchy fallback: LSP unavailable for ${ext}. Returning 0 items.`,
3312
+ formatted: formatFallbackNotice(
3313
+ fallbackOperation,
3314
+ fallbackReason,
3315
+ "none",
3316
+ `LSP unavailable for ${ext}. Returning 0 items.`
3317
+ ),
3278
3318
  resultCount: 0,
3279
3319
  fileCount: 0
3280
3320
  };
@@ -3379,6 +3419,7 @@ var LspFacade = {
3379
3419
  const flag = String(process.env.PYB_LSP_STRICT_FIRST ?? "").trim().toLowerCase();
3380
3420
  const lspFirst = flag === "" ? true : !(flag === "0" || flag === "false" || flag === "off" || flag === "no");
3381
3421
  if (lspFirst) {
3422
+ let fallbackReason = null;
3382
3423
  try {
3383
3424
  const lspSymbols = await LspAPI.documentSymbolRaw(input.filePath, rootPath);
3384
3425
  const lang = ParserRegistry.getLanguage(input.filePath);
@@ -3389,6 +3430,7 @@ var LspFacade = {
3389
3430
  if (lspSymbols && Array.isArray(lspSymbols) && lspSymbols.length > 0) {
3390
3431
  return formatGenericDocumentSymbolResult(lspSymbols);
3391
3432
  }
3433
+ fallbackReason = lspSymbols === null ? "lsp-unavailable" : "lsp-empty";
3392
3434
  const now = Date.now();
3393
3435
  if (!lang) {
3394
3436
  setFastPathLastFallback(input.filePath, "unsupported", now);
@@ -3408,7 +3450,19 @@ var LspFacade = {
3408
3450
  if (cached) {
3409
3451
  clearFastPathFailures(input.filePath);
3410
3452
  recordFastPathSuccess(input.filePath, Date.now() - start, Date.now());
3411
- return formatTreeSitterDocumentSymbolResult(cached);
3453
+ const formatted = formatTreeSitterDocumentSymbolResult(cached);
3454
+ if (fallbackReason) {
3455
+ return {
3456
+ ...formatted,
3457
+ formatted: formatFallbackNotice(
3458
+ "documentSymbol",
3459
+ fallbackReason,
3460
+ "tree-sitter symbols",
3461
+ formatted.formatted
3462
+ )
3463
+ };
3464
+ }
3465
+ return formatted;
3412
3466
  }
3413
3467
  } catch {
3414
3468
  }
@@ -3424,7 +3478,19 @@ var LspFacade = {
3424
3478
  setCachedFastPathSymbols(input.filePath, contentHash, symbols, now);
3425
3479
  }
3426
3480
  recordFastPathSuccess(input.filePath, Date.now() - start, Date.now());
3427
- return formatTreeSitterDocumentSymbolResult(symbols);
3481
+ const formatted = formatTreeSitterDocumentSymbolResult(symbols);
3482
+ if (fallbackReason) {
3483
+ return {
3484
+ ...formatted,
3485
+ formatted: formatFallbackNotice(
3486
+ "documentSymbol",
3487
+ fallbackReason,
3488
+ "tree-sitter symbols",
3489
+ formatted.formatted
3490
+ )
3491
+ };
3492
+ }
3493
+ return formatted;
3428
3494
  }
3429
3495
  recordFastPathFailure(input.filePath, "empty", now);
3430
3496
  setFastPathLastFallback(input.filePath, "empty", now);
@@ -3437,6 +3503,7 @@ var LspFacade = {
3437
3503
  }
3438
3504
  }
3439
3505
  } catch {
3506
+ fallbackReason = "lsp-error";
3440
3507
  const now = Date.now();
3441
3508
  const lang = ParserRegistry.getLanguage(input.filePath);
3442
3509
  if (!lang) {
@@ -3457,7 +3524,19 @@ var LspFacade = {
3457
3524
  if (cached) {
3458
3525
  clearFastPathFailures(input.filePath);
3459
3526
  recordFastPathSuccess(input.filePath, Date.now() - start, Date.now());
3460
- return formatTreeSitterDocumentSymbolResult(cached);
3527
+ const formatted = formatTreeSitterDocumentSymbolResult(cached);
3528
+ if (fallbackReason) {
3529
+ return {
3530
+ ...formatted,
3531
+ formatted: formatFallbackNotice(
3532
+ "documentSymbol",
3533
+ fallbackReason,
3534
+ "tree-sitter symbols",
3535
+ formatted.formatted
3536
+ )
3537
+ };
3538
+ }
3539
+ return formatted;
3461
3540
  }
3462
3541
  } catch {
3463
3542
  }
@@ -3473,7 +3552,19 @@ var LspFacade = {
3473
3552
  setCachedFastPathSymbols(input.filePath, contentHash, symbols, now);
3474
3553
  }
3475
3554
  recordFastPathSuccess(input.filePath, Date.now() - start, Date.now());
3476
- return formatTreeSitterDocumentSymbolResult(symbols);
3555
+ const formatted = formatTreeSitterDocumentSymbolResult(symbols);
3556
+ if (fallbackReason) {
3557
+ return {
3558
+ ...formatted,
3559
+ formatted: formatFallbackNotice(
3560
+ "documentSymbol",
3561
+ fallbackReason,
3562
+ "tree-sitter symbols",
3563
+ formatted.formatted
3564
+ )
3565
+ };
3566
+ }
3567
+ return formatted;
3477
3568
  }
3478
3569
  recordFastPathFailure(input.filePath, "empty", now);
3479
3570
  setFastPathLastFallback(input.filePath, "empty", now);