@octocodeai/octocode-tools-core 17.0.1 → 18.0.1

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 (219) hide show
  1. package/README.md +48 -38
  2. package/dist/direct.js +52 -35
  3. package/dist/github/canonicalRepo.d.ts +14 -0
  4. package/dist/github/codeSearch/matchPositions.d.ts +11 -0
  5. package/dist/github/codeSearch.d.ts +2 -1
  6. package/dist/github/compare.d.ts +42 -0
  7. package/dist/github/dateWindow.d.ts +4 -0
  8. package/dist/github/discussions.d.ts +45 -0
  9. package/dist/github/githubAPI.d.ts +7 -13
  10. package/dist/github/history/commitFiles.d.ts +39 -0
  11. package/dist/github/history.d.ts +1 -0
  12. package/dist/github/issues/types.d.ts +8 -8
  13. package/dist/github/prTransformation.d.ts +24 -25
  14. package/dist/github/queryBuilders/base.d.ts +0 -1
  15. package/dist/github/queryBuilders/issues.d.ts +0 -6
  16. package/dist/github/releases.d.ts +9 -1
  17. package/dist/github/responseHeaders.d.ts +6 -0
  18. package/dist/index.d.ts +7 -6
  19. package/dist/index.js +56 -39
  20. package/dist/providers/github/githubPullRequests.d.ts +9 -0
  21. package/dist/providers/github/paginationMetadata.d.ts +6 -5
  22. package/dist/providers/providerQueries.d.ts +11 -6
  23. package/dist/providers/providerResults.d.ts +9 -1
  24. package/dist/schema.d.ts +0 -1
  25. package/dist/schema.js +1 -2
  26. package/dist/scheme/pagination.d.ts +5 -13
  27. package/dist/scheme/responseEnvelope.d.ts +28 -22
  28. package/dist/security/bridge.d.ts +3 -2
  29. package/dist/shared/config/index.d.ts +0 -1
  30. package/dist/shared/config/index.js +1 -1
  31. package/dist/shared/languageSelectors/classify.d.ts +2 -2
  32. package/dist/shared/languageSelectors/data.d.ts +4 -4
  33. package/dist/shared/languageSelectors.d.ts +1 -1
  34. package/dist/shared/paths.d.ts +1 -4
  35. package/dist/tools/directToolCatalog/toolCatalogDefinitions.d.ts +10 -11
  36. package/dist/tools/directToolCatalog/toolCatalogFormatters.d.ts +12 -0
  37. package/dist/tools/directToolCatalog.meta.d.ts +1 -0
  38. package/dist/tools/github_clone_repo/contentSize.d.ts +9 -0
  39. package/dist/tools/github_clone_repo/scheme.d.ts +26 -96
  40. package/dist/tools/github_fetch_content/finalizer/types.d.ts +2 -3
  41. package/dist/tools/github_fetch_content/scheme.d.ts +92 -142
  42. package/dist/tools/github_fetch_content/types.d.ts +2 -1
  43. package/dist/tools/github_search_code/scheme.d.ts +39 -87
  44. package/dist/tools/github_search_discussions/execution.d.ts +15 -0
  45. package/dist/tools/github_search_discussions/scheme.d.ts +16 -0
  46. package/dist/tools/github_search_pull_requests/contentResponse/fileSurfaces.d.ts +2 -16
  47. package/dist/tools/github_search_pull_requests/scheme.d.ts +97 -119
  48. package/dist/tools/github_search_pull_requests/splitExecutions.d.ts +8 -0
  49. package/dist/tools/github_search_pull_requests/splitSchemes.d.ts +216 -0
  50. package/dist/tools/github_search_pull_requests/types.d.ts +28 -29
  51. package/dist/tools/github_search_repos/execution.d.ts +0 -2
  52. package/dist/tools/github_search_repos/scheme.d.ts +36 -64
  53. package/dist/tools/github_view_repo_structure/scheme.d.ts +37 -66
  54. package/dist/tools/local_dead_code/deadCodeScan.d.ts +26 -0
  55. package/dist/tools/local_dead_code/entrypoints.d.ts +16 -0
  56. package/dist/tools/local_dead_code/execution.d.ts +4 -0
  57. package/dist/tools/local_dead_code/graphBuilder.d.ts +43 -0
  58. package/dist/tools/local_dead_code/importResolver.d.ts +6 -0
  59. package/dist/tools/local_dead_code/local_dead_code.d.ts +5 -0
  60. package/dist/tools/local_dead_code/reachability.d.ts +21 -0
  61. package/dist/tools/local_dead_code/retention.d.ts +22 -0
  62. package/dist/tools/local_dead_code/scheme.d.ts +51 -0
  63. package/dist/tools/local_dead_code/types.d.ts +56 -0
  64. package/dist/tools/local_fetch_content/execution.d.ts +0 -1
  65. package/dist/tools/local_fetch_content/fetchContent/extraction.d.ts +6 -0
  66. package/dist/tools/local_fetch_content/fetchContent/validation.d.ts +9 -1
  67. package/dist/tools/local_fetch_content/fetchContent.d.ts +0 -1
  68. package/dist/tools/local_fetch_content/scheme.d.ts +28 -90
  69. package/dist/tools/local_find_files/execution.d.ts +0 -1
  70. package/dist/tools/local_find_files/findFiles.d.ts +0 -3
  71. package/dist/tools/local_find_files/findFilesNext.d.ts +26 -0
  72. package/dist/tools/local_find_files/pathPatternBraces.d.ts +20 -0
  73. package/dist/tools/local_find_files/scheme.d.ts +19 -81
  74. package/dist/tools/local_ripgrep/captureBudget.d.ts +25 -0
  75. package/dist/tools/local_ripgrep/rankingProfile/rankingProfiles.d.ts +1 -0
  76. package/dist/tools/local_ripgrep/rankingProfile/rankingResults.d.ts +1 -0
  77. package/dist/tools/local_ripgrep/ripgrepResultBuilder/searchNext.d.ts +1 -1
  78. package/dist/tools/local_ripgrep/scheme.d.ts +89 -190
  79. package/dist/tools/local_view_structure/execution.d.ts +0 -1
  80. package/dist/tools/local_view_structure/local_view_structure.d.ts +0 -1
  81. package/dist/tools/local_view_structure/scheme.d.ts +34 -87
  82. package/dist/tools/local_view_structure/structureFilters.d.ts +2 -4
  83. package/dist/tools/local_view_structure/structureResponse.d.ts +1 -0
  84. package/dist/tools/local_view_structure/viewStructureNext.d.ts +25 -0
  85. package/dist/tools/lsp/semantic_content/index.d.ts +2 -1
  86. package/dist/tools/lsp/semantic_content/scheme.d.ts +167 -629
  87. package/dist/tools/lsp/semantic_content/semanticAnchored.d.ts +8 -2
  88. package/dist/tools/lsp/semantic_content/semanticEnvelopes/locationEnvelopes.d.ts +2 -1
  89. package/dist/tools/lsp/semantic_content/semanticFileOps/anchor.d.ts +17 -1
  90. package/dist/tools/lsp/semantic_content/semanticNext.d.ts +2 -0
  91. package/dist/tools/lsp/semantic_content/semanticPresentation.d.ts +1 -1
  92. package/dist/tools/lsp/shared/callHierarchyTraversal.d.ts +14 -2
  93. package/dist/tools/lsp/shared/semanticTypes.d.ts +14 -1
  94. package/dist/tools/package_search/execution.d.ts +9 -6
  95. package/dist/tools/package_search/queryHelpers.d.ts +8 -0
  96. package/dist/tools/package_search/scheme.d.ts +30 -86
  97. package/dist/tools/providerMappers/codeSearch.d.ts +0 -1
  98. package/dist/tools/providerMappers/pullRequests.d.ts +0 -13
  99. package/dist/tools/providerMappers/repoSearch.d.ts +1 -5
  100. package/dist/tools/providerMappers/repoStructure.d.ts +4 -0
  101. package/dist/tools/toolCatalogFactory.d.ts +25 -0
  102. package/dist/tools/toolConfig.d.ts +9 -24
  103. package/dist/tools/toolNames.d.ts +2 -2
  104. package/dist/tools/toolSchemaImports.d.ts +3 -1
  105. package/dist/types/execution.d.ts +1 -0
  106. package/dist/types/toolOutput.d.ts +38 -0
  107. package/dist/utils/contextUtils.d.ts +6 -0
  108. package/dist/utils/core/types.d.ts +4 -0
  109. package/dist/utils/file/toolHelpers.d.ts +12 -0
  110. package/dist/utils/jsSymbolNames.d.ts +6 -0
  111. package/package.json +41 -44
  112. package/dist/oql/adapters/compile.d.ts +0 -25
  113. package/dist/oql/adapters/github/execute.d.ts +0 -16
  114. package/dist/oql/adapters/github/provider-diagnostics.d.ts +0 -14
  115. package/dist/oql/adapters/github/shared.d.ts +0 -75
  116. package/dist/oql/adapters/github.d.ts +0 -14
  117. package/dist/oql/adapters/graphProof.d.ts +0 -6
  118. package/dist/oql/adapters/graphView/filters.d.ts +0 -25
  119. package/dist/oql/adapters/graphView/nativeEdges.d.ts +0 -5
  120. package/dist/oql/adapters/graphView.d.ts +0 -29
  121. package/dist/oql/adapters/local/code.d.ts +0 -3
  122. package/dist/oql/adapters/local/codeBoolean.d.ts +0 -3
  123. package/dist/oql/adapters/local/fileRowOps.d.ts +0 -11
  124. package/dist/oql/adapters/local/files.d.ts +0 -3
  125. package/dist/oql/adapters/local/filesBoolean.d.ts +0 -10
  126. package/dist/oql/adapters/local/filesContentLeaf.d.ts +0 -12
  127. package/dist/oql/adapters/local/filesUniverse.d.ts +0 -6
  128. package/dist/oql/adapters/local/findToolType.d.ts +0 -10
  129. package/dist/oql/adapters/local/predicates.d.ts +0 -18
  130. package/dist/oql/adapters/local/scope.d.ts +0 -14
  131. package/dist/oql/adapters/local/searchToolType.d.ts +0 -7
  132. package/dist/oql/adapters/local/structureContent.d.ts +0 -6
  133. package/dist/oql/adapters/local/types.d.ts +0 -34
  134. package/dist/oql/adapters/local.d.ts +0 -4
  135. package/dist/oql/adapters/materialize.d.ts +0 -11
  136. package/dist/oql/adapters/pagination.d.ts +0 -21
  137. package/dist/oql/adapters/researchTargets/diff.d.ts +0 -16
  138. package/dist/oql/adapters/researchTargets/graph.d.ts +0 -3
  139. package/dist/oql/adapters/researchTargets/history.d.ts +0 -20
  140. package/dist/oql/adapters/researchTargets/pagination.d.ts +0 -54
  141. package/dist/oql/adapters/researchTargets/repositories.d.ts +0 -4
  142. package/dist/oql/adapters/researchTargets/research.d.ts +0 -3
  143. package/dist/oql/adapters/researchTargets/rows.d.ts +0 -16
  144. package/dist/oql/adapters/researchTargets/semantics.d.ts +0 -3
  145. package/dist/oql/adapters/researchTargets/shared.d.ts +0 -11
  146. package/dist/oql/adapters/researchTargets.d.ts +0 -8
  147. package/dist/oql/adapters/resultMap.d.ts +0 -27
  148. package/dist/oql/adapters/ruleYaml.d.ts +0 -11
  149. package/dist/oql/adapters/runner.d.ts +0 -21
  150. package/dist/oql/capabilities.d.ts +0 -31
  151. package/dist/oql/defaults.d.ts +0 -26
  152. package/dist/oql/diagnostics.d.ts +0 -25
  153. package/dist/oql/diffLanes.d.ts +0 -29
  154. package/dist/oql/envelope.d.ts +0 -21
  155. package/dist/oql/features.d.ts +0 -7
  156. package/dist/oql/index.d.ts +0 -27
  157. package/dist/oql/index.js +0 -47
  158. package/dist/oql/normalize/batch.d.ts +0 -2
  159. package/dist/oql/normalize/materialize.d.ts +0 -2
  160. package/dist/oql/normalize/params.d.ts +0 -2
  161. package/dist/oql/normalize/query.d.ts +0 -2
  162. package/dist/oql/normalize/scope.d.ts +0 -2
  163. package/dist/oql/normalize/shared.d.ts +0 -7
  164. package/dist/oql/normalize/source.d.ts +0 -2
  165. package/dist/oql/normalize/where.d.ts +0 -2
  166. package/dist/oql/normalize.d.ts +0 -20
  167. package/dist/oql/planner/planDiagnostics.d.ts +0 -13
  168. package/dist/oql/planner/predicateRouting.d.ts +0 -35
  169. package/dist/oql/planner.d.ts +0 -7
  170. package/dist/oql/predicateUtils.d.ts +0 -3
  171. package/dist/oql/research/analyze/manifest-scan.d.ts +0 -4
  172. package/dist/oql/research/analyze/source-graph.d.ts +0 -7
  173. package/dist/oql/research/analyze/symbol-scoring.d.ts +0 -4
  174. package/dist/oql/research/analyze/types.d.ts +0 -163
  175. package/dist/oql/research/analyze/utils.d.ts +0 -16
  176. package/dist/oql/research/analyze.d.ts +0 -3
  177. package/dist/oql/research/packets/builders.d.ts +0 -4
  178. package/dist/oql/research/packets/types.d.ts +0 -91
  179. package/dist/oql/research/packets.d.ts +0 -21
  180. package/dist/oql/run/batch.d.ts +0 -3
  181. package/dist/oql/run/continuations/records.d.ts +0 -19
  182. package/dist/oql/run/continuations/registry.d.ts +0 -22
  183. package/dist/oql/run/continuations/semantics.d.ts +0 -3
  184. package/dist/oql/run/continuations/types.d.ts +0 -12
  185. package/dist/oql/run/dryRun.d.ts +0 -11
  186. package/dist/oql/run/paths.d.ts +0 -15
  187. package/dist/oql/run/proofGrades.d.ts +0 -8
  188. package/dist/oql/run/select.d.ts +0 -10
  189. package/dist/oql/run/single.d.ts +0 -22
  190. package/dist/oql/run.d.ts +0 -5
  191. package/dist/oql/schema/predicates.d.ts +0 -12
  192. package/dist/oql/schema.d.ts +0 -1049
  193. package/dist/oql/schemeText.d.ts +0 -152
  194. package/dist/oql/shorthand/predicates.d.ts +0 -15
  195. package/dist/oql/shorthand/query-controls.d.ts +0 -18
  196. package/dist/oql/shorthand/target-params.d.ts +0 -9
  197. package/dist/oql/shorthand/types.d.ts +0 -159
  198. package/dist/oql/shorthand/utils.d.ts +0 -7
  199. package/dist/oql/shorthand.d.ts +0 -8
  200. package/dist/oql/targetParams.d.ts +0 -7
  201. package/dist/oql/transformers/contract.d.ts +0 -19
  202. package/dist/oql/transformers/github/code.d.ts +0 -9
  203. package/dist/oql/transformers/github/common.d.ts +0 -14
  204. package/dist/oql/transformers/language.d.ts +0 -1
  205. package/dist/oql/transformers/registry.d.ts +0 -16
  206. package/dist/oql/transformers/types.d.ts +0 -11
  207. package/dist/oql/types/diagnostics.d.ts +0 -22
  208. package/dist/oql/types/envelope.d.ts +0 -78
  209. package/dist/oql/types/guards.d.ts +0 -9
  210. package/dist/oql/types/planner.d.ts +0 -46
  211. package/dist/oql/types/predicates.d.ts +0 -93
  212. package/dist/oql/types/query.d.ts +0 -143
  213. package/dist/oql/types/recordData.d.ts +0 -127
  214. package/dist/oql/types/recordRows.d.ts +0 -48
  215. package/dist/oql/types/results.d.ts +0 -118
  216. package/dist/oql/types/targets.d.ts +0 -22
  217. package/dist/oql/types.d.ts +0 -27
  218. package/dist/tools/oql_search/execution.d.ts +0 -7
  219. package/dist/tools/toolMetadata/descriptionOverrides.d.ts +0 -4
package/dist/direct.js CHANGED
@@ -5,44 +5,61 @@ import { dirname as __dirname_fn } from 'path';
5
5
  const require = __createRequire(import.meta.url);
6
6
  const __filename = __fileURLToPath(import.meta.url);
7
7
  const __dirname = __dirname_fn(__filename);
8
- var VE=Object.defineProperty;var f=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var KE=(e,t)=>{for(var n in t)VE(e,n,{get:t[n],enumerable:!0})};import{completeMetadata as YE}from"@octocodeai/octocode-core";function po(e=process.env){let t=e.ENABLE_OQL;return t===void 0?!1:["1","true","yes","on"].includes(t.trim().toLowerCase())}var Y,Ie,rn,aH,mo=f(()=>{"use strict";Y=YE.toolNames,Ie=Y.LSP_GET_SEMANTIC_CONTENT,rn="oqlSearch";aH=new Set([Y.LOCAL_RIPGREP,Y.LOCAL_FETCH_CONTENT,Y.LOCAL_FIND_FILES,Y.LOCAL_VIEW_STRUCTURE,Ie])});function Qt(e){return{name:e.name,uri:e.uri,foundAtLine:e.foundAtLine,...e.orderHint!==void 0&&{orderHint:e.orderHint},...e.isAmbiguous===!0&&{isAmbiguous:!0}}}function El(e){let t=e.displayRange??(e.range?{startLine:e.range.start.line+1,endLine:e.range.end.line+1}:void 0);return{uri:e.uri,...e.content!==void 0&&{content:e.content},...t&&{displayRange:t},...e.isDefinition&&{isDefinition:!0}}}var Cf,kt=f(()=>{"use strict";mo();Cf=["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation","workspaceSymbol","supertypes","subtypes","diagnostic"]});var ae=f(()=>{"use strict"});import{z as vs}from"zod";function B(e,t){return vs.preprocess(n=>typeof n=="number"&&Number.isFinite(n)?Math.min(Math.max(n,e),t):n,vs.number().int().min(e).max(t))}function fe(e,t={}){let{maxQueries:n=5}=t;return vs.object({queries:vs.array(e).min(1).max(n).describe("Parallel queries."),...JE}).superRefine((r,o)=>{let i=new Set;r.queries.forEach((s,a)=>{s&&typeof s=="object"&&"id"in s&&typeof s.id=="string"&&(i.has(s.id)&&o.addIssue({code:"custom",message:`Duplicate query id "${s.id}" at index ${a}`,path:["queries",a,"id"]}),i.add(s.id))})})}var Re,fr,hr,JE,Ze=f(()=>{"use strict";ae();Re=B(1,1e3).optional().default(1),fr=B(0,100).optional(),hr=B(1,1e9).optional(),JE={responseCharOffset:B(0,1e8).optional().describe("Full-response char offset; re-call with returned value when hasMore."),responseCharLength:B(1,5e4).optional().describe("Full-response char window.")}});import{z as xf}from"zod";function ZE(e,t){return e?.description&&!t.description?t.describe(e.description):t}function wf(e,t){let n={};for(let[r,o]of Object.entries(t))n[r]=ZE(e.shape[r],o);return n}function ek(e,t){let n=e;return n.safeExtend?n.safeExtend(t):e.extend(t)}function Tf(e,t){if(!t?.length)return e;let n=new Set(t);return xf.object(Object.fromEntries(Object.entries(e.shape).filter(([r])=>!n.has(r))))}function he(e,t={},n={}){let r=Tf(e,n.omit),o=ek(r,wf(r,t));return n.strict?o.strict():o}function Se(e,t={},n={}){let r=Tf(e,n.omit),o=xf.object({...r.shape,...wf(r,t)});return n.strict?o.strict():o}var et=f(()=>{"use strict"});import{z}from"zod";function Ls(e,t,n="Continue to the next page of results."){return{tool:e,query:t,why:n,confidence:"exact"}}function _s(e,t,n,r){if(!n||!n.hasMore||n.nextCharOffset===void 0)return;let o=r?.includeCharLength!==!1;return{continueChars:{tool:e,query:{...t,charOffset:n.nextCharOffset,...o&&n.charLength!==void 0?{charLength:n.charLength}:{}}}}}var tt,As,Pe,on,gr,Be=f(()=>{"use strict";tt=z.object({currentPage:z.number(),totalPages:z.number(),hasMore:z.boolean(),nextPage:z.number().optional(),pageSize:z.number().optional(),totalItems:z.number().optional(),perPage:z.number().optional(),totalFound:z.number().optional(),returned:z.number().optional(),totalMatches:z.number().optional(),reportedTotalMatches:z.number().optional(),reachableTotalMatches:z.number().optional(),totalMatchesKind:z.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:z.boolean().optional(),totalResults:z.number().optional(),itemsPerPage:z.number().optional()}),As=z.object({charOffset:z.number(),charLength:z.number(),totalChars:z.number(),hasMore:z.boolean(),nextCharOffset:z.number().optional(),currentPage:z.number().optional(),totalPages:z.number().optional(),chunkMode:z.enum(["semantic","char-limit"]).optional()}),Pe=z.object({tool:z.string(),query:z.record(z.string(),z.unknown()),why:z.string().optional(),confidence:z.enum(["exact","heuristic"]).optional()}),on=tt.extend({filesPerPage:z.number().optional(),entriesPerPage:z.number().optional(),matchesPerPage:z.number().optional(),totalFiles:z.number().optional(),totalEntries:z.number().optional(),totalMatches:z.number().optional(),totalFilesFound:z.number().optional(),nextMatchPage:z.number().optional()});gr=z.object({level:z.enum(["info","warning","error"]),message:z.string(),field:z.string().optional(),code:z.string().optional()})});import{z as ge}from"zod";function nk(e){return ge.object({id:ge.string(),status:ge.enum(["empty","error"]).optional(),data:e,diagnostics:ge.array(gr).optional(),next:ge.record(ge.string(),Pe).optional()})}var tk,Ue,PH,sn,it=f(()=>{"use strict";Be();tk=ge.object({currentPage:ge.number(),totalPages:ge.number(),hasMore:ge.boolean(),charOffset:ge.number(),charLength:ge.number(),totalChars:ge.number(),nextCharOffset:ge.number().optional()}).optional(),Ue={base:ge.string().optional(),shared:ge.record(ge.string(),ge.union([ge.string(),ge.number(),ge.boolean()])).optional(),responsePagination:tk};PH=nk(ge.record(ge.string(),ge.unknown()).optional()),sn=Ue});import{CloneRepoQuerySchema as rk}from"@octocodeai/octocode-core/schemas";import{GitHubCloneRepoOutputSchema as ok}from"@octocodeai/octocode-core/schemas/outputs";var yr,fo,OH,Ef=f(()=>{"use strict";Ze();et();it();yr=he(rk),fo=fe(yr),OH=ok.extend(Ue)});import{z as O}from"zod";import{FileContentQuerySchema as kf}from"@octocodeai/octocode-core/schemas";var ik,sk,ak,ck,lk,Of,uk,Fn,go,NH,Ol=f(()=>{"use strict";ae();Ze();et();it();Be();ik=O.enum(["none","standard","symbols"]).optional().default("standard"),sk=O.union([As.extend({nextPage:O.number().optional()}),tt.extend({charOffset:O.number().optional(),charLength:O.number().optional(),totalChars:O.number().optional(),nextCharOffset:O.number().optional()})]),ak=O.object({continueChars:Pe.extend({tool:O.literal("ghGetFileContent")}).optional()}),ck=O.object({path:O.string(),content:O.string(),localPath:O.string().optional(),repoRoot:O.string().optional(),contentView:O.enum(["none","standard","symbols"]).optional(),totalLines:O.number().optional(),sourceChars:O.number().optional(),sourceBytes:O.number().optional(),resolvedBranch:O.string().optional(),modified:O.string().optional(),fileSize:O.number().optional(),pagination:sk.optional(),next:ak.optional(),isPartial:O.boolean().optional(),startLine:O.number().optional(),endLine:O.number().optional(),matchRanges:O.array(O.object({start:O.number(),end:O.number()})).optional(),lastModified:O.string().optional(),lastModifiedBy:O.string().optional(),warnings:O.array(O.string()).optional(),matchNotFound:O.boolean().optional(),searchedFor:O.string().optional(),cached:O.boolean().optional()}),lk=O.object({path:O.string(),localPath:O.string(),repoRoot:O.string().optional(),fileCount:O.number(),totalSize:O.number(),complete:O.boolean().optional(),directoryEntryCount:O.number().optional(),eligibleFileCount:O.number().optional(),savedFileCount:O.number().optional(),skipped:O.object({nonFile:O.number(),missingDownloadUrl:O.number(),oversized:O.number(),binary:O.number(),fileLimit:O.number(),fetchFailed:O.number(),totalSizeLimit:O.number(),pathTraversal:O.number()}).optional(),limits:O.object({maxDirectoryFiles:O.number(),maxTotalSize:O.number(),maxFileSize:O.number()}).optional(),warnings:O.array(O.string()).optional(),files:O.array(O.object({path:O.string(),size:O.number(),type:O.string()})).optional(),cached:O.boolean().optional(),resolvedBranch:O.string().optional()}),Of={startLine:hr,endLine:hr,contextLines:fr,charOffset:B(0,1e8).optional(),charLength:B(1,5e4).optional(),minify:ik},uk=Se(kf,Of),Fn=he(kf,Of),go=fe(uk),NH=O.object({base:O.string().optional(),shared:O.record(O.string(),O.union([O.string(),O.number(),O.boolean()])).optional(),responsePagination:Ue.responsePagination,results:O.array(O.object({id:O.string(),data:O.object({owner:O.string(),repo:O.string(),files:O.array(ck).optional(),directories:O.array(lk).optional()}).optional()})),errors:O.array(O.object({id:O.string(),owner:O.string().optional(),repo:O.string().optional(),path:O.string().optional(),error:O.string()})).optional()})});import{z as Q}from"zod";import{GitHubCodeSearchQuerySchema as vf}from"@octocodeai/octocode-core/schemas";var Af,yo,bo,dk,qH,Lf=f(()=>{"use strict";ae();Ze();et();it();Be();Af={limit:B(1,100).optional(),page:Re.default(1),match:Q.enum(["file","path"]).default("file").describe('"file" searches file contents and returns snippets with matchIndices. "path" searches only file paths/names \u2014 no snippets, far cheaper; use it to confirm a file exists before reading it. (Unlike ghSearchRepos/ghHistoryResearch, where `match` instead selects which text FIELDS to search \u2014 a different concept sharing this name.)')},yo=he(vf,Af),bo=fe(Se(vf,Af)),dk=tt.extend({totalMatchesKind:Q.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:Q.boolean().optional(),uniqueFileCount:Q.number().optional()}),qH=Q.object({base:Q.string().optional(),shared:Q.record(Q.string(),Q.union([Q.string(),Q.number(),Q.boolean()])).optional(),responsePagination:Ue.responsePagination,results:Q.array(Q.object({id:Q.string(),data:Q.object({files:Q.array(Q.union([Q.string(),Q.object({owner:Q.string(),repo:Q.string(),path:Q.string(),queryId:Q.string().optional(),matches:Q.array(Q.object({value:Q.string().optional(),pathOnly:Q.boolean().optional(),matchIndices:Q.array(Q.object({start:Q.number(),end:Q.number(),lineOffset:Q.number()})).optional(),url:Q.string().optional()}))})])),pagination:dk.optional()})})),emptyQueries:Q.array(Q.object({id:Q.string(),nonExistentScope:Q.literal(!0).optional(),incompleteResults:Q.literal(!0).optional()})).optional(),warnings:Q.array(Q.string()).optional(),diagnostics:Q.array(gr).optional(),next:Q.record(Q.string(),Pe).optional(),errors:Q.array(Q.object({id:Q.string(),error:Q.string()})).optional()})});import{z as $e}from"zod";import{GitHubPullRequestSearchQuerySchema as Ff}from"@octocodeai/octocode-core/schemas";import{GitHubSearchPullRequestsOutputSchema as mk}from"@octocodeai/octocode-core/schemas/outputs";var If,fk,In,Ro,_f,nQ,vl=f(()=>{"use strict";ae();Ze();et();it();Be();If={type:$e.enum(["prs","commits","releases","issues"]).optional().describe('Research mode: "prs" (default) searches pull requests; "commits" walks commit history for a repo or path; "releases" lists the repository releases (tagName, publishedAt, prerelease flag) and surfaces the latest stable release; "issues" searches or reads GitHub issues (body/discussion comments \u2014 not PRs).'),perPage:B(1,100).optional().default(30),prNumber:B(1,1e9).optional(),issueNumber:B(1,1e9).optional().describe('Issue number for type:"issues" detail mode \u2014 reads that specific issue (body/discussion comments). Requires owner+repo. Falls back to prNumber if omitted.'),limit:B(1,100).optional().default(30),match:$e.array($e.enum(["title","body","comments"])).optional().describe('Fields to match keywords against: "title", "body", "comments". Default searches all three. Use ["title"] for the most precise and fastest match. (Unlike ghSearchCode, where `match` instead selects file-contents vs file-paths \u2014 a different concept sharing this name.)'),page:Re.default(1),filePage:Re.optional(),commentPage:Re.optional(),commitPage:Re.optional(),itemsPerPage:B(1,100).optional().default(20),charOffset:B(0,1e8).optional(),commentBodyOffset:B(0,1e8).optional(),charLength:B(1,5e4).optional()},fk=Se(Ff,If),In=he(Ff,If),Ro=fe(fk),_f=$e.union([$e.string(),$e.object({}).passthrough()]),nQ=mk.extend({results:$e.array($e.object({id:$e.string().optional(),status:$e.string().optional(),data:$e.object({pull_requests:$e.array(_f).optional(),issues:$e.array(_f).optional(),next:$e.record($e.string(),Pe).optional()}).passthrough().optional()}).passthrough()).optional(),...Ue})});import{z as re}from"zod";import{GitHubReposSearchSingleQuerySchema as Mf}from"@octocodeai/octocode-core/schemas";var Df,So,Po,hk,gk,yk,dQ,Nf=f(()=>{"use strict";ae();Ze();et();it();Be();Df={limit:B(1,100).optional(),page:Re.default(1),match:re.array(re.enum(["name","description","readme"])).optional().describe("Which text fields to search: name, description, and/or readme. Defaults to name+description; add 'readme' for broader, slower full-text search. (Unlike ghSearchCode, where `match` instead selects file-contents vs file-paths \u2014 a different concept sharing this name.)")},So=he(Mf,Df),Po=fe(Se(Mf,Df)),hk=re.object({owner:re.string(),repo:re.string(),stars:re.number().optional(),forks:re.number().optional(),openIssuesCount:re.number().optional(),language:re.string().optional(),license:re.string().optional(),description:re.string().optional(),homepage:re.string().optional(),pushedAt:re.string().optional(),createdAt:re.string().optional(),defaultBranch:re.string().optional(),topics:re.array(re.string()).optional(),visibility:re.string().optional(),url:re.string().optional(),updatedAt:re.string().optional()}),gk=tt.extend({totalMatchesKind:re.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:re.boolean().optional()}).optional(),yk=re.object({repositories:re.array(re.union([re.string(),hk])).optional(),pagination:gk}).passthrough(),dQ=re.object({results:re.array(re.object({id:re.string().optional(),status:re.string().optional(),data:yk.optional()}).passthrough()).optional()}).extend(Ue)});import{GitHubViewRepoStructureQuerySchema as Gf}from"@octocodeai/octocode-core/schemas";import{GitHubViewRepoStructureOutputSchema as Rk}from"@octocodeai/octocode-core/schemas/outputs";var Hf,xo,wo,SQ,Qf=f(()=>{"use strict";ae();ae();Ze();et();it();Hf={maxDepth:B(0,20).optional(),page:Re.default(1),itemsPerPage:B(1,200).optional()},xo=he(Gf,Hf),wo=fe(Se(Gf,Hf)),SQ=Rk.extend(Ue)});import{z as Z}from"zod";import{NpmPackageQuerySchema as jf}from"@octocodeai/octocode-core/schemas";var Bf,To,Eo,OQ,zf=f(()=>{"use strict";Ze();et();it();Be();Bf={page:Re,mode:Z.enum(["lean","full"]).optional(),keywords:Z.union([Z.string(),Z.array(Z.string())]).optional().describe("Registry keyword query (string; an array of terms is accepted and joined with spaces).")},To=he(jf,Bf),Eo=fe(Se(jf,Bf,{strict:!0}),{maxQueries:5}),OQ=Z.object({results:Z.array(Z.looseObject({id:Z.string(),data:Z.looseObject({packages:Z.array(Z.object({name:Z.string(),version:Z.string().optional(),description:Z.string().optional(),license:Z.string().optional(),downloads:Z.number().optional(),repository:Z.string().optional(),repositoryDirectory:Z.string().optional(),repositoryId:Z.string().optional(),next:Z.record(Z.string(),Pe).optional(),warnings:Z.array(Z.string()).optional(),diagnostics:Z.array(gr).optional()}).passthrough()).optional(),repositories:Z.record(Z.string(),Z.object({repository:Z.string(),owner:Z.string(),repo:Z.string(),repositoryDirectory:Z.string().optional(),next:Z.record(Z.string(),Pe)}).passthrough()).optional(),pagination:tt.optional()}).optional(),status:Z.string().optional()})).optional()}).extend(Ue)});import{z as oe}from"zod";import{FetchContentQuerySchema as Uf}from"@octocodeai/octocode-core/schemas";var Sk,$f,Pk,Mn,ko,Ck,xk,NQ,Al=f(()=>{"use strict";ae();Ze();et();it();Be();Sk=oe.enum(["none","standard","symbols"]).optional().default("standard"),$f={startLine:hr,endLine:hr,contextLines:fr.default(5),charOffset:B(0,1e8).optional(),charLength:B(1,5e4).optional(),minify:Sk},Pk=Se(Uf,$f),Mn=he(Uf,$f),ko=fe(Pk,{maxQueries:5}),Ck=oe.object({start:oe.number(),end:oe.number()}),xk=oe.object({path:oe.string().optional(),content:oe.string().optional(),contentView:oe.enum(["none","standard","symbols"]).optional(),totalLines:oe.number().optional(),sourceChars:oe.number().optional(),sourceBytes:oe.number().optional(),startLine:oe.number().optional(),endLine:oe.number().optional(),isPartial:oe.boolean().optional(),matchRanges:oe.array(Ck).optional(),pagination:oe.union([As.extend({nextBlockChar:oe.number().optional()}),tt]).optional(),next:oe.record(oe.string(),Pe).optional(),modified:oe.string().optional(),lastModified:oe.string().optional(),lastModifiedBy:oe.string().optional(),warnings:oe.array(oe.string()).optional(),matchNotFound:oe.boolean().optional(),searchedFor:oe.string().optional()}),NQ=oe.object({results:oe.array(oe.object({id:oe.string(),status:oe.enum(["empty","error"]).optional(),data:xk}))}).extend(sn)});import{z as ce}from"zod";import{FindFilesQuerySchema as wk}from"@octocodeai/octocode-core/schemas";function Tk(e,t){e.minDepth!==void 0&&e.maxDepth!==void 0&&e.minDepth>e.maxDepth&&t.addIssue({code:"custom",message:"minDepth must be less than or equal to maxDepth.",path:["minDepth"]})}var qf,Wf,Ek,Dn,Oo,kk,Ok,qQ,_l=f(()=>{"use strict";ae();Ze();et();it();Be();qf={maxDepth:B(0,100).optional(),minDepth:B(0,100).optional(),limit:B(1,1e4).optional(),page:Re.default(1),itemsPerPage:B(1,50).optional(),excludeDir:ce.array(ce.string()).optional().describe('Directory names to prune from the walk (e.g. ["node_modules","dist","coverage"]). NOTHING is excluded by default \u2014 results include build output and vendor dirs unless you pass this explicitly.')},Wf=ce.object(Object.fromEntries(Object.entries(wk.shape).filter(([e])=>e!=="regexType")));Ek=Se(Wf,qf),Dn=he(Wf,qf).superRefine(Tk),Oo=fe(Ek,{maxQueries:5}),kk=ce.object({name:ce.string().optional(),path:ce.string().optional(),type:ce.enum(["file","dir","directory","link","symlink"]).optional(),size:ce.union([ce.number(),ce.string()]).optional(),sizeFormatted:ce.string().optional(),modified:ce.string().optional(),accessed:ce.string().optional(),created:ce.string().optional(),permissions:ce.string().optional()}),Ok=ce.object({path:ce.string().optional(),files:ce.array(kk).optional(),summary:ce.string().optional(),pagination:on.optional(),next:ce.record(ce.string(),Pe).optional(),warnings:ce.array(ce.string()).optional()}),qQ=ce.object({results:ce.array(ce.object({id:ce.string(),status:ce.enum(["empty","error"]).optional(),data:Ok}))}).extend(sn)});import{z as F}from"zod";import{RipgrepQuerySchema as Vf}from"@octocodeai/octocode-core/schemas";var vk,Ak,Kf,Lk,_k,Fk,jt,vo,Ik,Mk,Dk,tj,Fs=f(()=>{"use strict";ae();Ze();et();it();Be();vk=["paginated","discovery","detailed","structural"],Ak=["semanticRanking"],Kf={mode:F.enum(vk).optional().default("paginated").describe('"paginated" snippets; "discovery" paths only; "detailed" snippets plus context; "structural" AST/code-shape search with pattern or rule. Structural matches return line/capture anchors that can feed lspGetSemantics when symbol identity matters. (Unrelated to ghHistoryResearch\'s `patches.mode` \u2014 different concepts sharing this name.)'),keywords:F.string().optional().describe("The search pattern (text or regex). Set fixedString:true for a literal match, or perlRegex:true for advanced regex features (lookaheads, backreferences). (Unlike ghSearchCode/ghSearchRepos, where `keywords` is an array of ANDed terms \u2014 this is a single string.)"),filesOnly:F.boolean().optional().describe("Returns matching file paths without line content. Mutually exclusive with filesWithoutMatch. (Unlike localViewStructure's `filesOnly`, which filters a directory listing to file entries only \u2014 a different concept sharing this name.)"),pattern:F.string().optional().describe("Structural only: code-shaped AST pattern with $X (one node) or $$$ARGS (node list). Use this to find syntax shape, then use lspGetSemantics for semantic proof."),rule:F.string().optional().describe("Structural only: YAML ast-grep rule for not/inside/has/all/any. Use for partial or relational AST queries before escalating matched anchors to lspGetSemantics."),contextLines:fr,matchContentLength:B(1,1e5).optional().default(500),maxMatchesPerFile:B(1,1e5).optional(),maxFiles:B(1,1e5).optional(),matchPage:Re.optional(),itemsPerPage:B(1,1e3).optional(),page:Re.default(1),unique:F.boolean().optional().describe("With onlyMatching, return each matched value once per file."),countUnique:F.boolean().optional().describe("With onlyMatching, return each matched value once per file with its frequency.")},Lk={...Kf,semanticRanking:F.never().optional()},_k=Se(Vf,Lk),Fk=he(Vf,Kf,{strict:!0,omit:Ak}),jt=Fk.superRefine((e,t)=>{let n=e;if(n.caseSensitive&&n.caseInsensitive&&t.addIssue({code:"custom",message:"caseSensitive and caseInsensitive are mutually exclusive.",path:["caseSensitive"]}),n.fixedString&&n.perlRegex&&t.addIssue({code:"custom",message:"fixedString and perlRegex are mutually exclusive.",path:["fixedString"]}),n.filesOnly&&n.filesWithoutMatch&&t.addIssue({code:"custom",message:"filesOnly and filesWithoutMatch are mutually exclusive.",path:["filesOnly"]}),n.countLinesPerFile&&n.countMatchesPerFile&&t.addIssue({code:"custom",message:"countLinesPerFile and countMatchesPerFile are mutually exclusive.",path:["countLinesPerFile"]}),n.multilineDotall&&!n.multiline&&t.addIssue({code:"custom",message:"multilineDotall requires multiline=true.",path:["multilineDotall"]}),n.mode==="structural"){for(let r of["unique","countUnique"])n[r]&&t.addIssue({code:"custom",message:`\`${r}\` is not valid with mode:"structural".`,path:[r]});return}n.unique&&!n.onlyMatching&&t.addIssue({code:"custom",message:"unique requires onlyMatching:true.",path:["unique"]}),n.countUnique&&!n.onlyMatching&&t.addIssue({code:"custom",message:"countUnique requires onlyMatching:true.",path:["countUnique"]})}),vo=fe(_k,{maxQueries:5}),Ik=F.object({line:F.number(),endLine:F.number().optional(),value:F.string().optional(),column:F.number().optional(),endColumn:F.number().optional(),count:F.number().optional(),kind:F.string().optional(),scoreHint:F.number().optional(),metavars:F.record(F.string(),F.array(F.string())).optional(),metavarRanges:F.record(F.string(),F.array(F.object({text:F.string(),line:F.number(),column:F.number(),endLine:F.number(),endColumn:F.number()}))).optional()}),Mk=F.object({path:F.string(),matches:F.array(Ik).optional(),totalOccurrences:F.number().optional(),totalMatchedLines:F.number().optional(),totalMatchRows:F.number().optional(),returnedMatchRows:F.number().optional(),ranking:F.object({score:F.number(),profile:F.string().optional(),pathRole:F.string().optional(),reasons:F.array(F.string()).optional()}).optional(),matchPagination:on.optional(),pagination:on.optional(),next:F.record(F.string(),Pe).optional()}),Dk=F.object({files:F.array(Mk).optional(),summary:F.string().optional(),searchEngine:F.string().optional(),stats:F.object({totalOccurrences:F.number().optional(),matchedLines:F.number().optional(),filesMatched:F.number().optional(),filesSearched:F.number().optional(),bytesSearched:F.number().optional(),searchTime:F.string().optional()}).passthrough().optional(),pagination:on.optional(),next:F.record(F.string(),Pe).optional(),warnings:F.array(F.string()).optional()}),tj=F.object({results:F.array(F.object({id:F.string(),status:F.enum(["empty","error"]).optional(),data:Dk}))}).extend(sn)});import{z as ee}from"zod";import{ViewStructureQuerySchema as Yf}from"@octocodeai/octocode-core/schemas";var Xf,Nk,Nn,Ao,Gk,Hk,uj,Il=f(()=>{"use strict";ae();Ze();et();it();Be();Xf={maxDepth:B(0,20).optional(),limit:B(1,1e4).optional(),page:Re.default(1),itemsPerPage:B(1,50).optional(),filesOnly:ee.boolean().optional().describe("Returns files only. Mutually exclusive with directoriesOnly. (Unlike localSearchCode's `filesOnly`, which filters search results to matching file paths \u2014 a different concept sharing this name.)")},Nk=Se(Yf,Xf),Nn=he(Yf,Xf),Ao=fe(Nk,{maxQueries:5}),Gk=ee.object({name:ee.string().optional(),type:ee.enum(["file","dir","directory","link","symlink"]),path:ee.string().optional(),depth:ee.number().optional(),size:ee.union([ee.number(),ee.string()]).optional(),sizeBytes:ee.number().optional(),modified:ee.string().optional(),permissions:ee.string().optional()}),Hk=ee.object({path:ee.string().optional(),entries:ee.array(Gk).optional(),files:ee.array(ee.string()).optional(),folders:ee.array(ee.string()).optional(),links:ee.array(ee.string()).optional(),summary:ee.union([ee.string(),ee.record(ee.string(),ee.unknown())]).optional(),pagination:on.optional(),next:ee.record(ee.string(),Pe).optional(),warnings:ee.array(ee.string()).optional()}),uj=ee.object({results:ee.array(ee.object({id:ee.string(),status:ee.enum(["empty","error"]).optional(),data:Hk}))}).extend(sn)});import{z as R}from"zod";import{LspGetSemanticsQuerySchema as eh}from"@octocodeai/octocode-core/schemas";import{ErrorDataSchema as Qk}from"@octocodeai/octocode-core/schemas/outputs";var jk,Bk,zk,th,Uk,Lo,_o,Jf,$k,qk,Is,Ms,Wk,Vk,nh,br,Kk,Yk,Xk,rh,Jk,Zk,eO,tO,nO,rO,oO,Zf,Sj,oh=f(()=>{"use strict";ae();Ze();et();kt();Be();jk=B(1,1e9).describe("1-based source line for symbol-anchored semantic operations. Get it from search/localSearchCode, structural AST captures, or documentSymbols; never guess."),Bk=B(0,1e5).optional(),zk=["structured","compact"],th={type:R.enum(Cf).default("definition").describe("Semantic operation for local code intelligence. Use after text or structural AST search when you need identity, references, call flow, type relations, hover, symbols, or diagnostics."),symbolName:R.string().min(1).max(1024).optional().describe("Exact bare identifier at the lineHint anchor for symbol operations; workspaceSymbol uses this as the fuzzy project-wide symbol query."),lineHint:jk.optional(),orderHint:Bk,depth:B(0,20).optional(),includeDeclaration:R.boolean().optional().default(!0),page:Re,itemsPerPage:B(1,100).optional(),contextLines:B(0,100).optional(),format:R.enum(zk).optional().default("structured")},Uk=Se(eh,th),Lo=he(eh,th),_o=fe(Uk,{maxQueries:5}),Jf=R.object({line:R.number(),character:R.number()}),$k=R.object({start:Jf,end:Jf}),qk=R.object({startLine:R.number(),endLine:R.number()}),Is=R.object({uri:R.string(),content:R.string().optional(),displayRange:qk.optional(),isDefinition:R.boolean().optional()}),Ms=R.string(),Wk=R.object({name:R.string(),uri:R.string(),foundAtLine:R.number(),orderHint:R.number().optional()}),Vk=R.object({serverAvailable:R.boolean().optional(),provider:R.string().optional(),source:R.string().optional()}),nh=R.enum(["unsupportedOperation","symbolNotFound","anchorFailed","noLocations","noReferences","noHover","noCalls","noWorkspaceSymbols","noTypeHierarchy","noDiagnostics"]),br=R.object({category:nh,reason:R.string()}),Kk=tt,Yk=R.object({name:R.string(),kind:R.string(),line:R.number(),character:R.number(),endLine:R.number(),childCount:R.number(),containerName:R.string().optional()}),Xk=R.string(),rh=R.object({name:R.string(),kind:R.string(),uri:R.string(),line:R.number(),endLine:R.number(),selectionLine:R.number().optional()}),Jk=R.string(),Zk=R.object({direction:R.enum(["incoming","outgoing"]),item:rh,ranges:R.array(R.object({line:R.number(),character:R.number()})),rangeCount:R.number(),rangeSampleCount:R.number(),contentPreview:R.string().optional()}),eO=R.string(),tO=R.object({complete:R.boolean(),truncatedByDepth:R.boolean(),cycleCount:R.number(),failedRequestCount:R.number(),dynamicCallsExcluded:R.literal(!0),stdlibCallsExcluded:R.number().optional()}),nO=R.object({uri:R.string(),count:R.number(),firstLine:R.number(),firstCharacter:R.number(),lines:R.array(R.number()),hasDefinition:R.boolean().optional()}),rO=R.string(),oO=R.discriminatedUnion("kind",[R.object({kind:R.literal("definition"),locations:R.array(R.union([Is,Ms]))}),R.object({kind:R.literal("typeDefinition"),locations:R.array(R.union([Is,Ms]))}),R.object({kind:R.literal("implementation"),locations:R.array(R.union([Is,Ms]))}),R.object({kind:R.literal("references"),locations:R.array(R.union([Is,Ms])).optional(),byFile:R.array(R.union([nO,rO])).optional(),totalReferences:R.number(),totalFiles:R.number(),empty:br.optional()}),...["callers","callees","callHierarchy"].map(e=>R.object({kind:R.literal(e),root:R.union([rh,Jk]).optional(),direction:R.enum(["incoming","outgoing","both"]),calls:R.array(R.union([Zk,eO])),incomingCalls:R.number(),outgoingCalls:R.number(),completeness:tO,empty:br.optional()})),R.object({kind:R.literal("hover"),markdown:R.string().optional(),text:R.string().optional(),range:$k.optional()}),R.object({kind:R.literal("documentSymbols"),symbols:R.array(R.union([Yk,Xk])),totalSymbols:R.number().optional(),topLevelSymbols:R.number().optional(),empty:br.optional()}),R.object({kind:R.literal("workspaceSymbol"),query:R.string(),symbols:R.array(R.unknown()),totalSymbols:R.number(),empty:br.optional()}),R.object({kind:R.literal("typeHierarchy"),direction:R.enum(["supertypes","subtypes"]),root:R.unknown().optional(),items:R.array(R.unknown()),totalItems:R.number(),empty:br.optional()}),R.object({kind:R.literal("diagnostic"),diagnostics:R.array(R.unknown()),totalDiagnostics:R.number(),errorCount:R.number(),warningCount:R.number(),empty:br.optional()}),R.object({kind:R.literal("empty"),category:nh,reason:R.string()})]),Zf=R.object({type:R.string(),uri:R.string(),format:R.enum(["structured","compact"]).optional(),resolvedSymbol:Wk.optional(),lsp:Vk.optional(),payload:oO,pagination:Kk.optional(),summary:R.record(R.string(),R.unknown()).optional(),warnings:R.array(R.string()).optional(),next:R.record(R.string(),Pe).optional(),hints:R.array(R.string()).optional()}),Sj=R.object({base:R.string().optional(),shared:R.record(R.string(),R.union([R.string(),R.number(),R.boolean()])).optional(),results:R.array(R.union([R.object({id:R.string().min(1),status:R.literal("empty"),data:Zf}),R.object({id:R.string().min(1),status:R.literal("error"),data:Qk}),R.object({id:R.string().min(1),data:Zf})]))})});var ln,Fo,Ml,Dl,ih=f(()=>{"use strict";ln=["code","content","structure","files","semantics","repositories","packages","pullRequests","commits","diff","research","graph","materialize"],Fo=["fixes","dataflow"],Ml=["packages","repositories"],Dl={code:["relevance","matchCount","path","modified","accessed","created"],files:["size","name","path","modified"]}});function Nl(e){return Array.isArray(e.queries)}function Gl(e){return Array.isArray(e.queries)}function Hl(e){return Array.isArray(e.children)}var sh=f(()=>{"use strict"});var un=f(()=>{"use strict";ih();sh()});import{z as U}from"zod";var ah,ch,iO,sO,Gn,Ql,aO,cO,dn,lh=f(()=>{"use strict";ah=U.enum(["smart","sensitive","insensitive"]),ch=U.string().max(1e4),iO=U.strictObject({id:U.string().optional(),kind:U.literal("text"),value:ch,case:ah.optional(),wholeWord:U.boolean().optional()}),sO=U.strictObject({id:U.string().optional(),kind:U.literal("regex"),value:ch,dialect:U.enum(["rust","pcre2","provider"]).optional(),case:ah.optional(),wholeWord:U.boolean().optional(),multiline:U.boolean().optional(),dotAll:U.boolean().optional()}),Gn=U.lazy(()=>U.strictObject({pattern:U.string().optional(),kind:U.string().optional(),inside:Gn.optional(),has:Gn.optional(),not:Gn.optional(),all:U.array(Gn).optional(),any:U.array(Gn).optional(),stopBy:U.literal("end").optional()})),Ql=U.union([Gn,U.string().min(1)]),aO=U.strictObject({id:U.string().optional(),kind:U.literal("structural"),lang:U.string().min(1),pattern:U.string().optional(),rule:Ql.optional()}),cO=U.strictObject({id:U.string().optional(),kind:U.literal("field"),field:U.enum(["path","basename","extension","size","modified","accessed","empty","permissions","executable","readable","writable","entryType"]),op:U.enum(["=","!=","in","exists","glob","regex",">",">=","<","<=","within","before"]),value:U.unknown().optional()}),dn=U.lazy(()=>U.discriminatedUnion("kind",[U.strictObject({kind:U.literal("all"),id:U.string().optional(),of:U.array(dn).min(1)}),U.strictObject({kind:U.literal("any"),id:U.string().optional(),of:U.array(dn).min(1)}),U.strictObject({kind:U.literal("not"),id:U.string().optional(),predicate:dn}),iO,sO,aO,cO]))});import{z as P}from"zod";var Bl,jl,lO,uh,dh,ph,mh,Ds,uO,_j,fh,hh,gh,yh,Io,bh,Rh,Hn,Rr=f(()=>{"use strict";un();lh();Bl=P.lazy(()=>P.union([P.strictObject({kind:P.literal("local"),path:P.string().min(1)}),P.strictObject({kind:P.literal("github"),repo:P.string().min(1).optional(),owner:P.string().min(1).optional(),ref:P.string().min(1).optional()}),P.strictObject({kind:P.literal("materialized"),localPath:P.string().min(1),source:Bl.optional()}),P.strictObject({kind:P.literal("npm")})])),jl=P.union([P.string(),P.array(P.string()).max(100)]),lO=P.strictObject({path:jl.optional(),language:jl.optional(),include:P.array(P.string()).max(100).optional(),exclude:P.array(P.string()).max(100).optional(),excludeDir:P.array(P.string()).max(100).optional(),hidden:P.boolean().optional(),noIgnore:P.boolean().optional(),minDepth:P.number().int().min(0).max(64).optional(),maxDepth:P.number().int().min(0).max(64).optional()}).optional(),uh=P.strictObject({mode:P.enum(["never","auto","required"]),strategy:P.enum(["file","tree","subtree","repo"]).optional(),allowFullRepo:P.boolean().optional(),forceRefresh:P.boolean().optional()}),dh=P.strictObject({content:P.strictObject({range:P.strictObject({startLine:P.number().int().min(1).optional(),endLine:P.number().int().min(1).optional(),contextLines:P.number().int().min(0).max(100).optional()}).optional(),match:P.strictObject({text:P.string(),regex:P.boolean().optional(),caseSensitive:P.boolean().optional()}).optional(),contentView:P.enum(["none","standard","symbols","exact","compact"]).transform(e=>e==="exact"?"none":e==="compact"?"standard":e).optional(),charOffset:P.number().int().min(0).max(1e8).optional(),charLength:P.number().int().min(1).max(5e4).optional(),fullContent:P.boolean().optional()}).optional(),tree:P.strictObject({maxDepth:P.number().int().min(0).max(64).optional(),pattern:P.string().optional(),includeSizes:P.boolean().optional(),extensions:P.array(P.string()).optional(),filesOnly:P.boolean().optional(),directoriesOnly:P.boolean().optional(),sortBy:P.enum(["name","size","time","extension"]).optional(),reverse:P.boolean().optional()}).optional()}),ph=P.strictObject({search:P.strictObject({countLinesPerFile:P.boolean().optional(),countMatchesPerFile:P.boolean().optional(),onlyMatching:P.boolean().optional(),unique:P.boolean().optional(),countUnique:P.boolean().optional(),contextLines:P.number().int().min(0).max(100).optional(),invertMatch:P.boolean().optional(),matchWindow:P.number().int().min(0).optional(),matchContentLength:P.number().int().min(1).optional(),maxMatchesPerFile:P.number().int().min(1).optional(),matchPage:P.number().int().min(1).optional(),sort:P.enum(["relevance","matchCount","path","modified","accessed","created","size","name"]).optional(),sortReverse:P.boolean().optional(),rankingProfile:P.string().optional(),debugRanking:P.boolean().optional()}).optional(),budget:P.strictObject({maxFiles:P.number().int().min(1).optional(),maxCandidates:P.number().int().min(1).optional(),maxBytes:P.number().int().min(1).optional(),maxMaterializedBytes:P.number().int().min(1).optional(),maxPlanNodes:P.number().int().min(1).optional(),maxBooleanExpansion:P.number().int().min(1).optional(),timeoutMs:P.number().int().min(1).optional()}).optional()}),mh=P.enum(["discovery","paginated","detailed"]),Ds=P.strictObject({schema:P.literal("oql"),id:P.string().optional(),target:P.enum(ln),from:Bl.optional(),scope:lO,where:dn.optional(),materialize:uh.optional(),fetch:dh.optional(),select:P.array(P.string()).optional(),view:mh.optional(),controls:ph.optional(),limit:P.number().int().min(1).optional(),page:P.number().int().min(1).optional(),itemsPerPage:P.number().int().min(1).optional(),params:P.record(P.string(),P.unknown()).optional(),explain:P.boolean().optional()}),uO=P.strictObject({schema:P.literal("oql"),id:P.string().optional(),queries:P.array(Ds).min(1).max(5),combine:P.enum(["independent","merge"]).optional(),limit:P.number().int().min(1).optional(),page:P.number().int().min(1).optional(),itemsPerPage:P.number().int().min(1).optional(),explain:P.boolean().optional()}),_j=P.union([Ds,uO]),fh=[...ln,...Fo],hh={schema:P.literal("oql").optional(),id:P.string().optional(),mainResearchGoal:P.string().optional(),researchGoal:P.string().optional(),reasoning:P.string().optional()},gh={...hh,target:P.enum(fh).optional().describe("REQUIRED unless inferable from sugar (text/regex/pattern/rule/boolean \u2192 code, fetch.content \u2192 content, fetch.tree \u2192 structure). One of the active targets \u2014 run `search --scheme` for the full list and recipes."),from:Bl.optional().describe('Source. Defaults to local cwd when omitted; use {kind:"github",owner,repo} for remote or {kind:"materialized",localPath} after a fetch/clone.'),where:dn.optional().describe("Canonical predicate tree (kind: text | regex | structural | field | all | any | not). Mutually exclusive with the flat shorthand fields (text/regex/pattern/and/or/...): use ONE shape, not both."),materialize:P.union([uh,P.enum(["never","auto","required"])]).optional(),fetch:dh.optional(),select:P.array(P.string()).optional(),view:mh.optional(),controls:ph.optional(),limit:P.number().int().min(1).optional(),page:P.number().int().min(1).optional(),itemsPerPage:P.number().int().min(1).optional(),params:P.record(P.string(),P.unknown()).optional(),explain:P.boolean().optional(),repo:P.string().optional(),owner:P.string().optional(),ref:P.string().optional(),path:jl.optional(),text:P.string().optional().describe("Shorthand text search (\u2192 where.text, target code). Do not combine with a canonical `where`."),regex:P.string().optional(),pattern:P.string().optional().describe("Shorthand AST/structural pattern (\u2192 structural where, target code). A function pattern must match a COMPLETE node \u2014 include return type (e.g. `function $N($$$A): $R { $$$B }`) or use a `rule` for partial/relational matches."),rule:Ql.optional(),lang:P.string().optional(),and:P.array(P.unknown()).optional(),or:P.array(P.unknown()).optional(),xor:P.array(P.unknown()).optional(),noneOf:P.array(P.unknown()).optional(),oneOf:P.array(P.unknown()).optional(),invert:P.unknown().optional(),filesOnly:P.boolean().optional(),filesWithoutMatch:P.boolean().optional(),verbose:P.boolean().optional()},yh={...gh,target:P.enum(fh).optional().describe("REQUIRED unless inferable from sugar (text/regex/pattern/rule/boolean \u2192 code, fetch.content \u2192 content, fetch.tree \u2192 structure). One of the active targets \u2014 run `search --scheme` for the full list and recipes. Reserved targets are accepted so the normalizer can return an unsupported-target diagnostic instead of a schema rejection.")},Io=P.object(yh).catchall(P.unknown()),bh=P.object(gh).catchall(P.unknown()),Rh=P.object({...hh,queries:P.array(P.unknown()).min(1)}).catchall(P.unknown()),Hn=P.object({...yh,queries:P.array(P.unknown()).min(1).max(5).optional(),combine:P.enum(["independent","merge"]).optional()}).catchall(P.unknown())});var zl=f(()=>{"use strict";Ef();Ol();Lf();vl();Nf();Qf();zf();Al();_l();Fs();Il();oh();Rr()});import{z as Sh}from"zod";function pn(e){return xh.find(t=>t.name===e)}function Sr(e){return e.startsWith("gh")?"GitHub":e.startsWith("local")||e.startsWith("lsp")?"Local Code":e===Y.PACKAGE_SEARCH?"Package":"Other"}function mO(e){return[...e].sort((t,n)=>{let r=Ul.indexOf(Sr(t)),o=Ul.indexOf(Sr(n));if(r!==o)return r-o;let i=Ph.get(t)??Number.MAX_SAFE_INTEGER,s=Ph.get(n)??Number.MAX_SAFE_INTEGER;return i!==s?i-s:t.localeCompare(n)})}function fO(e){let t=pn(e);if(!t)return"{}";try{return JSON.stringify(Sh.toJSONSchema(t.inputSchema,{io:"input"}),null,2)}catch{return JSON.stringify(Sh.toJSONSchema(t.schema,{io:"input"}),null,2)}}function hO(e){return JSON.stringify(e??{},null,2)}function gO(e){let t=Sr(e),n=[...pO];return(t==="GitHub"||t==="Package")&&n.splice(1,0,"mainResearchGoal"),n}function yO(){return Ch.map(e=>({...e}))}function bO(){return JSON.stringify(Object.fromEntries(Ch.map(e=>[e.name,e.optional?`${e.type} (optional)`:e.type])),null,2)}function RO(e,t){return t?.tools?.[e]?.description??e}var Ul,Ph,st,dO,Mo,pO,Ch,xh,Do=f(()=>{"use strict";mo();kt();zl();Ul=["GitHub","Local Code","Package","Other"],Ph=new Map([Y.GITHUB_SEARCH_CODE,Y.GITHUB_SEARCH_REPOSITORIES,Y.GITHUB_SEARCH_PULL_REQUESTS,Y.GITHUB_FETCH_CONTENT,Y.GITHUB_VIEW_REPO_STRUCTURE,Y.GITHUB_CLONE_REPO,Y.LOCAL_RIPGREP,Y.LOCAL_FIND_FILES,Y.LOCAL_FETCH_CONTENT,Y.LOCAL_VIEW_STRUCTURE,Ie,Y.PACKAGE_SEARCH,...po()?[rn]:[]].map((e,t)=>[e,t])),st=class extends Error{constructor(n,r=[]){super(n);this.details=r;this.name="DirectToolInputError"}details},dO=["id","mainResearchGoal","researchGoal","reasoning"],Mo=new Set([...dO]),pO=["id","researchGoal","reasoning"],Ch=[{name:"content",type:"Array<{ type: string; text: string }>"},{name:"structuredContent",type:"object",optional:!0},{name:"isError",type:"boolean",optional:!0}],xh=[{name:Y.GITHUB_SEARCH_CODE,schema:yo,inputSchema:bo},{name:Y.GITHUB_FETCH_CONTENT,schema:Fn,inputSchema:go},{name:Y.GITHUB_VIEW_REPO_STRUCTURE,schema:xo,inputSchema:wo},{name:Y.GITHUB_SEARCH_REPOSITORIES,schema:So,inputSchema:Po},{name:Y.GITHUB_SEARCH_PULL_REQUESTS,schema:In,inputSchema:Ro},{name:Y.PACKAGE_SEARCH,schema:To,inputSchema:Eo},{name:Y.GITHUB_CLONE_REPO,schema:yr,inputSchema:fo},{name:Y.LOCAL_RIPGREP,schema:jt,inputSchema:vo},{name:Y.LOCAL_VIEW_STRUCTURE,schema:Nn,inputSchema:Ao},{name:Y.LOCAL_FIND_FILES,schema:Dn,inputSchema:Oo},{name:Y.LOCAL_FETCH_CONTENT,schema:Mn,inputSchema:ko},{name:Ie,schema:Lo,inputSchema:_o},...po()?[{name:rn,schema:Io,inputSchema:Hn}]:[]]});import{z as SO}from"zod";function No(e){let t=pn(e);if(!t)return[];let n=SO.toJSONSchema(t.schema,{io:"input"});if(!Pr(n))return[];let r=Bt(n.properties)?n.properties:{},o=new Set(Array.isArray(n.required)?n.required.filter(i=>!Mo.has(i)&&!Wl(r[i])):[]);return ql(r,o)}function PO(e){let t=[],n=typeof e.minimum=="number"?e.minimum:void 0,r=typeof e.maximum=="number"?e.maximum:void 0;return n!==void 0&&r!==void 0?t.push(`${n}-${r}`):n!==void 0?t.push(`>=${n}`):r!==void 0&&t.push(`<=${r}`),"default"in e&&t.push(`default ${JSON.stringify(e.default)}`),t.length>0?t.join(", "):void 0}function $l(e){if(Array.isArray(e.enum)&&e.enum.length>0)return`enum(${e.enum.map(String).join(", ")})`;if(e.type==="array"){let n=Pr(e.items)?e.items:void 0;return`array<${n?$l(n):"value"}>`}let t=Array.isArray(e.anyOf)?e.anyOf:Array.isArray(e.oneOf)?e.oneOf:void 0;if(t){let n=t.filter(Pr).map($l).filter(r=>r!=="value");if(n.length>0)return[...new Set(n)].join(" | ")}return Array.isArray(e.type)?e.type.join(" | "):typeof e.type=="string"?e.type:"value"}function ql(e,t,n=""){let r=[];for(let[o,i]of Object.entries(e)){if(!n&&Mo.has(o))continue;let s=Pr(i)?i:{},a=n?`${n}.${o}`:o;if(r.push({name:a,required:t.has(o),type:$l(s),constraints:PO(s),description:typeof s.description=="string"?s.description:void 0}),Bt(s.properties)){let l=new Set(Array.isArray(s.required)?s.required.filter(u=>typeof u=="string"?!Wl(s.properties?.[u]):!1):[]);r.push(...ql(s.properties,l,a))}let c=s.type==="array"&&Pr(s.items)?s.items:void 0;if(c&&Bt(c.properties)){let l=new Set(Array.isArray(c.required)?c.required.filter(u=>typeof u=="string"?!Wl(c.properties?.[u]):!1):[]);r.push(...ql(c.properties,l,a))}}return r}function Th(e,t){if(t.startsWith("array<")){let n=t.slice(6,-1);return[wh(e,n)]}return wh(e,t)}function wh(e,t){if(t.startsWith("enum("))return/^enum\(([^,)]+)/.exec(t)?.[1]??e;if(t==="integer"||t==="number")return e==="lineHint"?42:5;if(t==="boolean")return!0;switch(e){case"keywords":case"keywordsToSearch":case"query":case"text":return"runCLI";case"path":return".";case"uri":return"/path/to/file.ts";case"owner":return"bgauryy";case"repo":return"octocode";case"extension":return"ts";case"filename":return"package.json";case"language":return"TypeScript";case"symbolName":return"myFunction";case"name":case"packageName":return"zod";default:return e}}function Bt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Pr(e){return Bt(e)}function Wl(e){return Pr(e)&&"default"in e}var Ns=f(()=>{"use strict";Do()});function Eh(e){return e===rn?[{label:"local code query",query:{schema:"oql",target:"code",from:{kind:"local",path:"."},where:{kind:"text",value:"executeDirectTool"},view:"discovery",limit:5}}]:e===Y.GITHUB_SEARCH_PULL_REQUESTS?[{label:"PR search",query:{type:"prs",owner:"bgauryy",repo:"octocode",keywordsToSearch:["localSearchCode"],concise:!0,limit:5}},{label:"commit history",query:{type:"commits",owner:"bgauryy",repo:"octocode",path:"packages/octocode-tools-core/src",since:"2024-01-01T00:00:00Z",perPage:5}},{label:"releases + latest",query:{type:"releases",owner:"microsoft",repo:"TypeScript",perPage:5}},{label:"issues search",query:{type:"issues",owner:"microsoft",repo:"TypeScript",keywordsToSearch:["crash"],state:"open",concise:!0,limit:5}},{label:"issue detail",query:{type:"issues",owner:"bgauryy",repo:"octocode",issueNumber:443,content:{body:!0,comments:{discussion:!0}}}}]:e===Y.GITHUB_SEARCH_CODE?[{label:"path search",query:{keywords:["package.json"],owner:"bgauryy",repo:"octocode",match:"path",concise:!0,limit:5}},{label:"content search",query:{keywords:["localSearchCode"],owner:"bgauryy",repo:"octocode",extension:"ts",limit:5}}]:e===Y.GITHUB_SEARCH_REPOSITORIES?[{label:"repository search",query:{keywords:["react"],language:"TypeScript",stars:">1000",concise:!0,limit:5}},{label:"owner repositories",query:{owner:"bgauryy",concise:!0,limit:5}}]:e===Y.GITHUB_VIEW_REPO_STRUCTURE?[{label:"repo tree",query:{owner:"bgauryy",repo:"octocode",path:"packages",maxDepth:2,itemsPerPage:50}}]:e===Y.GITHUB_CLONE_REPO?[{label:"full repo clone",query:{owner:"bgauryy",repo:"octocode"}},{label:"subtree clone",query:{owner:"bgauryy",repo:"octocode",sparsePath:"packages/octocode-tools-core"}}]:e===Y.LOCAL_RIPGREP?[{label:"text search",query:{path:"packages/octocode-tools-core/src",keywords:"buildDirectToolCommandPatterns",maxFiles:20}},{label:"structural code search",query:{path:"packages/octocode-tools-core/src/tools",mode:"structural",pattern:"eval($X)"}}]:e===Y.LOCAL_FETCH_CONTENT?[{label:"exact line range",query:{path:"packages/octocode-tools-core/package.json",startLine:1,endLine:30,minify:"none"}},{label:"matched slice",query:{path:"packages/octocode-tools-core/src/tools/directToolCatalog.meta.ts",matchString:"buildKnownDirectToolCommandPatternQueries",contextLines:8,minify:"standard"}}]:e===Y.LOCAL_FIND_FILES?[{label:"basename globs",query:{path:"packages/octocode-tools-core",names:["scheme.ts","package.json"],entryType:"f",itemsPerPage:20}},{label:"monorepo path glob",query:{path:".",pathPattern:"packages/*/src/tools/**",entryType:"f",itemsPerPage:20}},{label:"prune build dirs",query:{path:"packages/octocode-tools-core",names:["*.js"],entryType:"f",excludeDir:["node_modules","dist","coverage","out"],itemsPerPage:20}}]:e===Y.LOCAL_VIEW_STRUCTURE?[{label:"shallow tree",query:{path:"packages/octocode-tools-core/src/tools",maxDepth:2,itemsPerPage:50}},{label:"files only at depth 1",query:{path:"packages/octocode-engine/src",maxDepth:1,filesOnly:!0,itemsPerPage:100}}]:e===Ie?[{label:"symbol outline (absolute uri)",query:{uri:"/ABS/packages/octocode-tools-core/src/scheme/pagination.ts",type:"documentSymbols"}},{label:"semantic definition (absolute uri + lineHint)",query:{uri:"/ABS/packages/octocode-tools-core/src/scheme/pagination.ts",type:"definition",symbolName:"buildNextPageContinuation",lineHint:72}}]:[]}var kh=f(()=>{"use strict";mo()});function Oh(e,t){return`tools ${e} --queries '${JSON.stringify(t)}'`}function CO(e){let t=Eh(e);if(t.length>0)return t.map(r=>({...r,command:Oh(e,r.query)}));let n=wO(e);return Object.keys(n).length===0?[]:[{label:"schema-derived",query:n,command:Oh(e,n)}]}function xO(e){return CO(e)[0]?.query??{}}function wO(e){if(!pn(e))return{};let t=No(e),n=t.filter(i=>!i.name.includes(".")),r=TO(n),o={};for(let i of r)o[i.name]=Th(i.name,i.type);return e.startsWith("lsp")&&t.some(i=>i.name==="uri")&&(o.uri??="uri"),e===Ie&&(o.type??="definition",o.symbolName??="symbolName",o.lineHint??=1),o}function TO(e){let t=e.filter(i=>i.required),n=new Map;for(let i of t)n.set(i.name,i);let r=e.filter(i=>!i.required&&EO(i)).sort(kO),o=Math.max(vh,t.length);for(let i of r){if(n.size>=o)break;n.set(i.name,i)}return n.size>0?[...n.values()]:e.filter(i=>!Ah.has(i.name)).filter(i=>i.type!=="boolean").slice(0,vh)}function EO(e){return Ah.has(e.name)||e.type==="boolean"?!1:OO(e)?Vl.has(e.name):!0}function kO(e,t){let n=Vl.get(e.name)??Number.MAX_SAFE_INTEGER,r=Vl.get(t.name)??Number.MAX_SAFE_INTEGER;return n!==r?n-r:e.name.localeCompare(t.name)}function OO(e){return e.constraints?.includes("default ")===!0}var vh,Vl,Ah,Lh=f(()=>{"use strict";kt();Do();kh();Ns();vh=4,Vl=new Map([["keywords",10],["keywordsToSearch",11],["query",12],["text",13],["packageName",14],["name",15],["uri",20],["type",21],["owner",30],["repo",31],["extension",32],["filename",33],["language",34],["path",40],["target",50],["from",51],["scope",52],["pattern",60],["rule",61],["op",80],["operation",81],["minify",90]]),Ah=new Set(["page","itemsPerPage","limit","matchPage","maxFiles","maxMatchesPerFile","matchContentLength","responseCharLength","responseCharOffset"])});function vO(e,t,n={}){if(typeof t!="string")return null;let r;try{r=JSON.parse(t)}catch{throw new st("Tool input must be valid JSON.")}return _h(e,r,n)}function _h(e,t,n={}){let r=LO(e,t,n),o=pn(e);if(!o)throw new st(`Unknown tool: ${e}`);let i=o.inputSchema.safeParse(r);if(!i.success)throw new st("Tool input does not match the expected schema.",AO(i.error));return i.data}function AO(e){return e.issues.map(t=>`${t.path.length>0?t.path.join("."):"input"}: ${t.message}`)}function LO(e,t,n){let r=[];if(Array.isArray(t))r=t;else if(Bt(t)&&Array.isArray(t.queries))r=t.queries;else if(Bt(t))r=[t];else throw new st('Tool input must be a JSON object, an array of query objects, or { "queries": [...] }.');if(r.length===0)throw new st("At least one query is required.");let o=Bt(t)&&Array.isArray(t.queries)?Object.fromEntries(Object.entries(t).filter(([s])=>s!=="queries")):{},i=r.map((s,a)=>_O(e,a,GO(e,s,a,n),{sourceLabel:n.sourceLabel}));return{...o,queries:i}}function _O(e,t,n,r){let o={...n},i=Sr(e),s=r.sourceLabel??"direct tool execution",a=FO(e,s);return(typeof o.id!="string"||o.id.trim().length===0)&&(o.id=`${e}-${t+1}`),(i==="GitHub"||i==="Package")&&(typeof o.mainResearchGoal!="string"||o.mainResearchGoal.trim().length===0)&&(o.mainResearchGoal=a),(typeof o.researchGoal!="string"||o.researchGoal.trim().length===0)&&(o.researchGoal=a),(typeof o.reasoning!="string"||o.reasoning.trim().length===0)&&(o.reasoning=`Executed via ${s} tool command`),o}function FO(e,t){return`Execute ${e} via ${t}`}function IO(e,t){let n=e.length+1,r=t.length+1,o=Array.from({length:n*r},()=>0);for(let i=0;i<n;i++)o[i*r]=i;for(let i=0;i<r;i++)o[i]=i;for(let i=1;i<n;i++)for(let s=1;s<r;s++){let a=e[i-1]===t[s-1]?0:1;o[i*r+s]=Math.min(o[(i-1)*r+s]+1,o[i*r+s-1]+1,o[(i-1)*r+s-1]+a)}return o[n*r-1]}function MO(e,t){let n=e.toLowerCase(),r,o=Number.POSITIVE_INFINITY,i,s=Number.POSITIVE_INFINITY;for(let a of t){let c=a.toLowerCase(),l=IO(n,c);if(c.includes(n)||n.includes(c)){l<o&&(r=a,o=l);continue}if(n.length<3)continue;let u=Math.max(2,Math.floor(a.length/3));l<=u&&l<s&&(i=a,s=l)}return r??i}function NO(e,t){let n=DO[e];if(!n)return t;let r;for(let[o,i]of Object.entries(n))o in t&&!(i in t)&&(r??={...t},r[i]=r[o],delete r[o]);return r??t}function GO(e,t,n,r={}){if(!Bt(t))throw new st("Tool input must be a JSON object or an array of objects.");let o=NO(e,t),i=new Set([...No(e).filter(c=>!c.name.includes(".")).map(c=>c.name),...Mo]),s={},a=[];for(let[c,l]of Object.entries(o)){if(i.has(c)){s[c]=l;continue}a.push(c)}if(a.length>0&&i.size>0&&(r.onUnknownFields?.(a,n),r.rejectUnknownFields===!0)){let c=a.map(l=>{let u=MO(l,i);return u?`'${l}' \u2192 did you mean '${u}'?`:""}).filter(Boolean);throw new st(`Unknown field(s): ${a.join(", ")}`,[...c,`Remove unknown field(s) from query ${n+1}: ${a.join(", ")}`,`Run tools ${e} --scheme to see valid fields.`])}return s}var DO,Fh=f(()=>{"use strict";Do();Ns();DO={ghSearchCode:{keywordsToSearch:"keywords"},ghSearchRepos:{keywordsToSearch:"keywords"},npmSearch:{name:"packageName"},ghViewRepoStructure:{depth:"maxDepth"},lspGetSemantics:{op:"type",line:"lineHint",path:"uri"},localGetFileContent:{filePath:"path"},localSearchCode:{keywordsToSearch:"keywords"}}});var Kl=f(()=>{"use strict";Do();Ns();Lh();Fh()});function mn(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/\/$/,"")}function Cr(e){if(!e.token.expiresAt)return!1;let t=new Date(e.token.expiresAt);if(isNaN(t.getTime()))return!0;let n=new Date;return t.getTime()-n.getTime()<300*1e3}function Gs(e){if(!e.token.refreshTokenExpiresAt)return!1;let t=new Date(e.token.refreshTokenExpiresAt);return isNaN(t.getTime())?!0:new Date>=t}var Hs=f(()=>{"use strict"});function QO(e){let t=mn(e),n=Go.get(t);return!n||Date.now()-n.cachedAt>=HO?!1:n.credentials?!Cr(n.credentials):!0}function Yl(e){e?Go.delete(mn(e)):Go.clear()}function Ih(e){let t=mn(e);if(QO(t))return Go.get(t).credentials}function Mh(e,t){let n=mn(e);Go.set(n,{credentials:t,cachedAt:Date.now()})}var Go,HO,Dh=f(()=>{"use strict";Hs();Go=new Map,HO=300*1e3});import{existsSync as jO,mkdirSync as BO}from"node:fs";import{join as St}from"node:path";import{getOctocodeHome as zO}from"@octocodeai/config";function $O(){return zO(process.env)}function xr(){return nt}function Nh(){jO(zt.home)||BO(zt.home,{recursive:!0,mode:UO})}var UO,nt,zt,Qs=f(()=>{"use strict";UO=448;nt=$O(),zt={home:nt,config:St(nt,".octocoderc"),credentials:St(nt,"credentials.json"),key:St(nt,".key"),session:St(nt,"session.json"),stats:St(nt,"stats.json"),tmp:St(nt,"tmp"),clone:St(nt,"tmp","clone"),tree:St(nt,"tmp","tree"),repos:St(nt,"tmp","clone"),cliConfig:St(nt,"config.json"),lspConfig:St(nt,"lsp-servers.json")}});import{z as Me}from"zod";var qO,WO,Gh,Hh=f(()=>{"use strict";qO=Me.object({token:Me.string(),tokenType:Me.literal("oauth"),scopes:Me.array(Me.string()).optional(),refreshToken:Me.string().optional(),expiresAt:Me.string().optional(),refreshTokenExpiresAt:Me.string().optional()}),WO=Me.object({hostname:Me.string(),username:Me.string(),token:qO,gitProtocol:Me.enum(["ssh","https"]),createdAt:Me.string(),updatedAt:Me.string()}),Gh=Me.object({version:Me.number(),credentials:Me.record(Me.string(),WO)})});import{existsSync as Qh,readFileSync as jh,writeFileSync as Bh,unlinkSync as kB,statSync as VO,chmodSync as KO}from"node:fs";import{createCipheriv as YO,createDecipheriv as XO,randomBytes as zh}from"node:crypto";function jn(){Nh()}function qh(){if(jn(),Qh(Qn))return VO(Qn).mode&511&63&&KO(Qn,384),Buffer.from(jh(Qn,"utf8"),"hex");let e=zh(32);return Bh(Qn,e.toString("hex"),{mode:384}),e}function Xl(e){let t=qh(),n=zh(JO),r=YO($h,t,n),o=r.update(e,"utf8","hex");o+=r.final("hex");let i=r.getAuthTag();return`${n.toString("hex")}:${i.toString("hex")}:${o}`}function Jl(e){let t=qh(),[n,r,o]=e.split(":");if(!n||!r||!o)throw new Error("Invalid encrypted data format");let i=Buffer.from(n,"hex"),s=Buffer.from(r,"hex"),a=XO($h,t,i);a.setAuthTag(s);let c=a.update(o,"hex","utf8");return c+=a.final("utf8"),c}function js(){if(jn(),!Qh(Ho))return{version:1,credentials:{}};try{let e=jh(Ho,"utf8"),t=Jl(e),n=JSON.parse(t),r=Gh.safeParse(n);return r.success?r.data:{version:1,credentials:{}}}catch{return{version:1,credentials:{}}}}function Wh(e){jn();let t=Xl(JSON.stringify(e,null,2));Bh(Ho,t,{mode:384})}var Uh,Ho,Qn,$h,JO,Vh=f(()=>{"use strict";Qs();Hh();Uh=zt.home,Ho=zt.credentials,Qn=zt.key,$h="aes-256-gcm",JO=16});var Qo,wr,Zl=f(()=>{"use strict";Qo="178c6fc778ccc68e1d6a",wr="github.com"});import{refreshToken as ZO}from"@octokit/oauth-methods";import{request as ev}from"@octokit/request";function tv(e){return e.replace(/\b(ghp_|gho_|ghu_|ghs_|ghr_)[a-zA-Z0-9]{36,}\b/g,"***MASKED***").replace(/\b[a-zA-Z0-9]{40,}\b/g,"***MASKED***")}function nv(e){return e==="github.com"||e===wr?"https://api.github.com":`https://${e}/api/v3`}async function Kh(e,t=wr,n=Qo){let r=await e.getCredentials(t);if(!r)return{success:!1,error:`Not logged in to ${t}`};if(!r.token.refreshToken)return{success:!1,error:"Token does not support refresh (OAuth App tokens do not expire)"};if(Gs(r))return{success:!1,error:"Refresh token has expired. Please login again."};try{let o=await ZO({clientType:"github-app",clientId:n,clientSecret:"",refreshToken:r.token.refreshToken,request:ev.defaults({baseUrl:nv(t)})}),i={token:o.authentication.token,tokenType:"oauth",refreshToken:o.authentication.refreshToken,expiresAt:o.authentication.expiresAt,refreshTokenExpiresAt:o.authentication.refreshTokenExpiresAt};return await e.updateToken(t,i),{success:!0,username:r.username,hostname:t}}catch(o){return{success:!1,error:o instanceof Error?tv(o.message):"Token refresh failed"}}}async function Yh(e,t=wr,n=Qo){let r=await e.getCredentials(t);if(!r||!r.token)return{token:null,source:"none"};if(!Cr(r))return{token:r.token.token,source:"stored",username:r.username};if(r.token.refreshToken){let o=await Kh(e,t,n);if(o.success){let i=await e.getCredentials(t);if(i?.token.token)return{token:i.token.token,source:"refreshed",username:i.username}}return{token:null,source:"none",refreshError:o.error}}return{token:null,source:"none",refreshError:"Token expired and no refresh token available"}}var Xh=f(()=>{"use strict";Hs();Zl()});import{execFile as rv}from"child_process";function eu(e){return new Promise(t=>{let n=["auth","token"];e&&n.push("--hostname",e);let r=process.env.PATH??"",o=new Set(r.split(":")),i=ov.filter(a=>!o.has(a)),s=i.length?`${i.join(":")}:${r}`:r;rv("gh",n,{encoding:"utf8",timeout:5e3,env:{...process.env,PATH:s}},(a,c)=>{if(a||!c){t(null);return}t(c.trim()||null)})})}var ov,tu=f(()=>{"use strict";ov=["/opt/homebrew/bin","/usr/local/bin","/home/linuxbrew/.linuxbrew/bin"]});import{resolveEnvToken as iv}from"@octocodeai/config";function Jh(e){nu=e}function sv(){if(!nu)throw new Error("Token resolution not initialized. Call initTokenResolution() first.");return nu}async function Bs(e){let t=e?.hostname??wr,n=e?.clientId??Qo,r=e?.getGhCliToken??eu,o=iv();if(o)return{token:o.token,source:o.source,wasRefreshed:!1};let i=await sv().getTokenWithRefresh(t,n);if(i.token)return{token:i.token,source:"octocode-storage",wasRefreshed:i.source==="refreshed",username:i.username};try{let s=await Promise.resolve(r(t));if(s?.trim())return{token:s.trim(),source:"gh-cli",wasRefreshed:!1}}catch(s){process.stderr.write(`[octocode] gh auth token failed: ${s instanceof Error?s.message:String(s)}
9
- `)}return null}var nu,Zh=f(()=>{"use strict";tu();Zl();nu=null});async function eg(e){let t=mn(e.hostname),n={...e,hostname:t,updatedAt:new Date().toISOString()};try{let r=js();return r.credentials[t]=n,Wh(r),Yl(t),{success:!0}}catch{throw new Error("Failed to store credentials")}}async function ru(e="github.com",t){let n=mn(e);if(!t?.bypassCache){let i=Ih(n);if(i!==void 0)return i}let o=js().credentials[n]||null;return Mh(n,o),o}async function tg(e,t){let n=await ru(e);return n?(n.token=t,n.updatedAt=new Date().toISOString(),await eg(n),!0):!1}async function ng(e,t){return Yh({getCredentials:ru,updateToken:tg},e,t)}var ou=f(()=>{"use strict";Dh();Vh();Xh();Zh();Hs();Jh({getTokenWithRefresh:ng})});var rg=f(()=>{"use strict";ou();tu()});import zs from"node:os";import fz from"node:path";var uv,dv,pv,mv,og=f(()=>{"use strict";uv=zs.platform()==="win32",dv=zs.platform()==="darwin",pv=zs.platform()==="linux",mv=zs.homedir()});var ig=f(()=>{"use strict";og()});import{z as X}from"zod";var fv,hv,Us,gv,$s,sg,ag,cg=f(()=>{"use strict";fv=X.object({rawChars:X.number(),responseChars:X.number(),savedChars:X.number(),calls:X.number()}),hv=X.object({hits:X.record(X.string(),X.number()).default({}),rateLimits:X.number().default(0)}),Us=X.record(X.string(),X.number()).default({}),gv=X.object({toolCalls:X.number(),errors:X.number(),rateLimits:X.number(),rateLimitsByProvider:Us,rawChars:X.number(),responseChars:X.number(),savedChars:X.number(),charSavingsCalls:X.number(),githubCacheHits:X.number(),githubCacheRateLimits:X.number(),packageRegistryFailures:X.number().default(0),packageRegistryFailuresByRegistry:Us}),$s=X.object({toolCalls:X.number(),errors:X.number(),rateLimits:X.number(),rateLimitsByProvider:Us,charsSavedByTool:X.record(X.string(),fv).default({}),githubCacheHits:hv.default({hits:{},rateLimits:0}),packageRegistryFailures:Us,totalUsage:gv.optional()}),sg=X.object({version:X.literal(1),sessionId:X.string(),createdAt:X.string(),lastActiveAt:X.string(),stats:$s.optional()}),ag=X.object({version:X.literal(1),stats:$s})});function lg(e){return Object.values(e).reduce((t,n)=>t+n,0)}function yv(e){let t=e.charsSavedByTool??{},n=e.githubCacheHits??{hits:{},rateLimits:0},r=e.rateLimitsByProvider??{},o=e.packageRegistryFailures??{},i=Object.values(t).reduce((s,a)=>({rawChars:s.rawChars+a.rawChars,responseChars:s.responseChars+a.responseChars,savedChars:s.savedChars+a.savedChars,charSavingsCalls:s.charSavingsCalls+a.calls}),{rawChars:0,responseChars:0,savedChars:0,charSavingsCalls:0});return{toolCalls:e.toolCalls,errors:e.errors,rateLimits:e.rateLimits,rateLimitsByProvider:r,...i,githubCacheHits:lg(n.hits),githubCacheRateLimits:n.rateLimits,packageRegistryFailures:lg(o),packageRegistryFailuresByRegistry:o}}function fn(e){let t={...e,rateLimitsByProvider:e.rateLimitsByProvider??{},charsSavedByTool:e.charsSavedByTool??{},githubCacheHits:e.githubCacheHits??{hits:{},rateLimits:0},packageRegistryFailures:e.packageRegistryFailures??{}};return{...t,totalUsage:yv(t)}}function Tr(){return fn({toolCalls:0,errors:0,rateLimits:0,rateLimitsByProvider:{},charsSavedByTool:{},githubCacheHits:{hits:{},rateLimits:0},packageRegistryFailures:{}})}var iu=f(()=>{"use strict"});import{existsSync as dg,readFileSync as pg,writeFileSync as bv,unlinkSync as Ez,renameSync as Rv}from"node:fs";import{isStatsEnabled as mg}from"@octocodeai/config";function ug(e,t){let n=`${e}.tmp`;bv(n,JSON.stringify(t,null,2),{mode:384}),Rv(n,e)}function Sv(e){let t=JSON.parse(e),n=ag.safeParse(t);if(n.success)return fn(n.data.stats);let r=$s.safeParse(t);return r.success?fn(r.data):null}function Pv(){if(!dg(Bo))return Tr();try{let e=pg(Bo,"utf8");return Sv(e)??Tr()}catch{return Tr()}}function su(e){jn(),mg()&&ug(Bo,{version:e.version,stats:fn(e.stats)});let{stats:t,...n}=e;ug(jo,n)}function fg(){if(!dg(jo))return null;try{let e=pg(jo,"utf8"),t=JSON.parse(e),n=sg.safeParse(t);return n.success?{...n.data,stats:mg()?Pv():Tr()}:null}catch{return null}}var jo,Bo,qs=f(()=>{"use strict";ou();Qs();cg();iu();jo=zt.session,Bo=zt.stats});function xv(){hg||(hg=!0,gg=()=>{Ws()},yg=()=>{Ws()},bg=()=>{Ws()},process.on("exit",gg),process.on("SIGINT",yg),process.on("SIGTERM",bg))}function wv(){au||(au=setInterval(()=>{zo&&hn&&(su(hn),zo=!1)},Cv),au.unref())}function Rg(){if(hn)return hn;let e=fg();return e&&(hn=e),e}function Sg(e){hn=e,zo=!0,xv(),wv()}function Ws(){if(!cu&&zo&&hn){cu=!0;try{su(hn),zo=!1}catch{}finally{cu=!1}}}var Cv,hn,zo,au,hg,gg,yg,bg,cu,Pg=f(()=>{"use strict";qs();Cv=6e4,hn=null,zo=!1,au=null,hg=!1,gg=null,yg=null,bg=null,cu=!1});import{randomUUID as Bz}from"node:crypto";function Tv(e){return fn(e)}function Ev(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t)){let i=n[r]??{rawChars:0,responseChars:0,savedChars:0,calls:0};n[r]={rawChars:i.rawChars+o.rawChars,responseChars:i.responseChars+o.responseChars,savedChars:i.savedChars+o.savedChars,calls:i.calls+o.calls}}return n}function Cg(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))n[r]=(n[r]??0)+o;return n}function kv(e,t){if(!t)return e;let n={...e.hits};for(let[r,o]of Object.entries(t.hits??{}))n[r]=(n[r]??0)+o;return{hits:n,rateLimits:e.rateLimits+(t.rateLimits??0)}}function gn(e){let t=Rg();if(!t)return{success:!1,session:null};let n=Tv(t.stats),r=fn({toolCalls:n.toolCalls+(e.toolCalls??0),errors:n.errors+(e.errors??0),rateLimits:n.rateLimits+(e.rateLimits??0),rateLimitsByProvider:Cg(n.rateLimitsByProvider,e.rateLimitsByProvider),charsSavedByTool:Ev(n.charsSavedByTool,e.charsSavedByTool),githubCacheHits:kv(n.githubCacheHits,e.githubCacheHits),packageRegistryFailures:Cg(n.packageRegistryFailures,e.packageRegistryFailures)}),o={...t,lastActiveAt:new Date().toISOString(),stats:r};return Sg(o),{success:!0,session:o}}function lu(e=1){return gn({rateLimits:e})}function uu(e,t,n){let r=Number.isFinite(t)?Math.max(0,t):0,o=Number.isFinite(n)?Math.max(0,n):0;return gn({charsSavedByTool:{[e]:{rawChars:r,responseChars:o,savedChars:Math.max(0,r-o),calls:1}}})}function du(e,t=1){return gn({githubCacheHits:{hits:{[e]:t},rateLimits:0}})}function pu(e=1){return gn({githubCacheHits:{hits:{},rateLimits:e}})}var Uo=f(()=>{"use strict";qs();iu();Pg();qs()});var xg=f(()=>{"use strict";Uo();Uo();Uo();Uo()});import{z as Ce}from"zod";var Ov,wg=f(()=>{"use strict";Ov=Ce.looseObject({$schema:Ce.string().optional(),version:Ce.number().int().optional(),github:Ce.record(Ce.string(),Ce.unknown()).optional(),local:Ce.record(Ce.string(),Ce.unknown()).optional(),tools:Ce.record(Ce.string(),Ce.unknown()).optional(),network:Ce.record(Ce.string(),Ce.unknown()).optional(),lsp:Ce.record(Ce.string(),Ce.unknown()).optional(),output:Ce.record(Ce.string(),Ce.unknown()).optional()})});import{setRuntimeSurface as yU,invalidateConfigCache as bU}from"@octocodeai/config";var Tg=f(()=>{"use strict";wg()});import{existsSync as vv,readdirSync as Av,lstatSync as Lv}from"node:fs";import{join as _v}from"node:path";function Vs(e){if(!vv(e))return 0;let t=0,n=[e];for(;n.length>0;){let r=n.pop(),o;try{o=Av(r)}catch{continue}for(let i of o){let s=_v(r,i);try{let a=Lv(s);if(a.isSymbolicLink())continue;a.isDirectory()?n.push(s):a.isFile()&&(t+=a.size)}catch{}}}return t}var Eg=f(()=>{"use strict"});var Ot=f(()=>{"use strict";rg();ig();xg();Tg();Qs();Eg()});var Bn,Ks=f(()=>{Bn="17.0.1"});var mu,$o,qo,Iv,yn,bn,qe,Mv,Wo,Dv,AU,at=f(()=>{"use strict";mu={NOT_INITIALIZED:{code:"CONFIG_NOT_INITIALIZED",message:"Configuration not initialized. Call initialize() and await its completion before calling getServerConfig()."}},$o={PROMISES_NOT_ARRAY:{code:"VALIDATION_PROMISES_NOT_ARRAY",message:"promises must be an array"},TIMEOUT_NOT_POSITIVE:{code:"VALIDATION_TIMEOUT_NOT_POSITIVE",message:"timeout must be positive"},CONCURRENCY_NOT_POSITIVE:{code:"VALIDATION_CONCURRENCY_NOT_POSITIVE",message:"concurrency must be positive"}},qo={FETCH_NOT_AVAILABLE:{code:"FETCH_NOT_AVAILABLE",message:"Global fetch is not available in this environment."},FETCH_FAILED_AFTER_RETRIES:{code:"FETCH_FAILED_AFTER_RETRIES",message:(e,t)=>`Failed to fetch after ${e} attempts: ${t}`},FETCH_HTTP_ERROR:{code:"FETCH_HTTP_ERROR",message:(e,t)=>`Failed to fetch (${e} ${t})`}},Iv={INVALID_FORMAT:{code:"TOOL_METADATA_INVALID_FORMAT",message:"Invalid tool metadata format from remote source."},INVALID_API_RESPONSE:{code:"TOOL_METADATA_INVALID_API_RESPONSE",message:"Invalid API response structure"}},yn={PATH_IS_DIRECTORY:{code:"FILE_PATH_IS_DIRECTORY",message:e=>`Path is a directory. Use ${e} to list directory contents`},FILE_TOO_LARGE:{code:"FILE_TOO_LARGE",message:(e,t,n)=>`File too large (${e}KB > ${t}KB). Use ${n} to search within the file or use startLine/endLine parameters to get specific sections`},FILE_EMPTY:{code:"FILE_EMPTY",message:"File is empty - no content to display"},BINARY_FILE:{code:"FILE_BINARY",message:"Binary file detected. Cannot display as text - download directly from GitHub"},DECODE_FAILED:{code:"FILE_DECODE_FAILED",message:"Failed to decode file. Encoding may not be supported (expected UTF-8)"},UNSUPPORTED_TYPE:{code:"FILE_UNSUPPORTED_TYPE",message:e=>`Unsupported file type: ${e}`}},bn={NOT_FOUND:{code:"REPO_NOT_FOUND",message:(e,t,n)=>`Repository "${e}/${t}" not found or not accessible: ${n}`},PATH_NOT_FOUND:{code:"REPO_PATH_NOT_FOUND",message:(e,t,n,r)=>`Path "${e}" not found in repository "${t}/${n}" on branch "${r}"`},PATH_NOT_FOUND_ANY_BRANCH:{code:"REPO_PATH_NOT_FOUND_ANY_BRANCH",message:(e,t,n)=>`Path "${e}" not found in repository "${t}/${n}" on any common branch`},ACCESS_FAILED:{code:"REPO_ACCESS_FAILED",message:(e,t,n)=>`Failed to access repository "${e}/${t}": ${n}`},STRUCTURE_EXPLORATION_FAILED:{code:"REPO_STRUCTURE_EXPLORATION_FAILED",message:"Failed to explore repository structure"}},qe={QUERY_EMPTY:{code:"SEARCH_QUERY_EMPTY",message:"Search query cannot be empty"},NO_VALID_PARAMETERS:{code:"SEARCH_NO_VALID_PARAMETERS",message:"No valid search parameters provided"},PR_REQUIRED_PARAMS:{code:"SEARCH_PR_REQUIRED_PARAMS",message:"Owner, repo, and prNumber are required parameters"},PR_SINGLE_VALUES:{code:"SEARCH_PR_SINGLE_VALUES",message:"Owner and repo must be single values"},PULL_REQUEST_SEARCH_FAILED:{code:"SEARCH_PR_SEARCH_FAILED",message:e=>`Pull request search failed: ${e}`},PULL_REQUEST_LIST_FAILED:{code:"SEARCH_PR_LIST_FAILED",message:e=>`Pull request list failed: ${e}`},PULL_REQUEST_FETCH_FAILED:{code:"SEARCH_PR_FETCH_FAILED",message:(e,t)=>`Failed to fetch pull request #${e}: ${t}`}},Mv={NO_TOOLS_REGISTERED:{code:"STARTUP_NO_TOOLS_REGISTERED",message:"No tools were successfully registered"},UNCAUGHT_EXCEPTION:{code:"STARTUP_UNCAUGHT_EXCEPTION",message:e=>`Uncaught exception: ${e}`},UNHANDLED_REJECTION:{code:"STARTUP_UNHANDLED_REJECTION",message:e=>`Unhandled rejection: ${e}`},STARTUP_FAILED:{code:"STARTUP_FAILED",message:e=>`Startup failed: ${e}`}},Wo={TIMEOUT:{code:"PROMISE_TIMEOUT",message:(e,t)=>`Promise ${e} timed out after ${t}ms`},NOT_A_FUNCTION:{code:"PROMISE_NOT_A_FUNCTION",message:e=>`Promise function at index ${e} is not a function`},FUNCTION_UNDEFINED:{code:"PROMISE_FUNCTION_UNDEFINED",message:"Promise function is undefined"}},Dv={EXECUTION_FAILED:{code:"TOOL_EXECUTION_FAILED",message:(e,t)=>`Tool ${e} execution failed: ${t}`},SECURITY_VALIDATION_FAILED:{code:"TOOL_SECURITY_VALIDATION_FAILED",message:(e,t)=>`Security validation failed for ${e}: ${t}`}},AU={...mu,...$o,...qo,...Iv,...yn,...bn,...qe,...Mv,...Wo,...Dv}});import{getConfigSync as kg,invalidateConfigCache as IU}from"@octocodeai/config";import{maskSensitiveData as Nv}from"@octocodeai/octocode-engine/mask";async function Og(){try{let e=await Gv({hostname:"github.com"});if(e?.token){let t=e.source??"none";return{token:e.token,source:Hv.has(t)?t:"none"}}return{token:null,source:"none"}}catch{return{token:null,source:"none"}}}async function vg(){if(Ko!==null)return;if(Vo!==null)return Vo;let e=(async()=>{let t=kg(),n=await Og();Ko={version:Bn,githubApiUrl:t.github.apiUrl,toolsToRun:t.tools.enabled??void 0,enableTools:t.tools.enableAdditional??void 0,disableTools:t.tools.disabled??void 0,timeout:t.network.timeout,maxRetries:t.network.maxRetries,enableLocal:t.local.enabled,enableClone:t.local.enableClone,outputFormat:t.output.format,tokenSource:n.source}})();Vo=e;try{await e}catch(t){throw Vo===e&&(Ko=null,Vo=null),t}}function fu(){if(!Ko){let e=Nv(mu.NOT_INITIALIZED.message);throw new Error(e)}return Ko}async function hu(){return(await Og()).token}function gu(){return"github"}function yu(){let e=kg().github.apiUrl;return{provider:"github",baseUrl:e!=="https://api.github.com"?e:void 0}}var Ko,Vo,Gv,Hv,Yo=f(()=>{"use strict";Ot();Ks();at();Ko=null,Vo=null,Gv=Bs,Hv=new Set(["env:OCTOCODE_TOKEN","env:GH_TOKEN","env:GITHUB_TOKEN","env:GITHUB_PERSONAL_ACCESS_TOKEN","octocode-storage","gh-cli","none"])});import{createRequire as Qv}from"node:module";function se(){if(Ys)return Ys;try{return Ys=Bv(),Ys}catch(e){throw new bu(e)}}var jv,Ag,Ys,Bv,bu,D,Ee=f(()=>{"use strict";jv=Qv(import.meta.url),Ag="@octocodeai/octocode-engine",Bv=()=>jv(Ag),bu=class extends Error{constructor(n){super(`Failed to load native dependency ${Ag}`);this.cause=n;this.name="ContextUtilsLoadError"}cause};D={applyContentViewMinification(e,t){return se().applyContentViewMinification(e,t)},applyMinification(e,t){return se().applyMinification(e,t)},minifyContent(e,t){return se().minifyContent(e,t)},minifyContentSync(e,t){return se().minifyContentSync(e,t)},minifyContentResult(e,t){return se().minifyContentResult(e,t)},minifyMarkdownCore(e){return se().minifyMarkdownCore(e)},extractSignatures(e,t){return se().extractSignatures(e,t)},extractJsSymbols(e,t){return se().extractJsSymbols(e,t)},findInFileReferences(e,t,n,r){return se().findInFileReferences(e,t,n,r)},extractGraphFacts(e,t){return se().extractGraphFacts(e,t)},getSupportedJsTsExtensions(){return se().getSupportedJsTsExtensions()},getSupportedGraphFactExtensions(){return se().getSupportedGraphFactExtensions()},getGraphFactCapabilities(){return se().getGraphFactCapabilities()},structuralSearch(e,t,n,r){return se().structuralSearch(e,t,n,r)},structuralSearchFiles(e){return se().structuralSearchFiles(e)},getSupportedStructuralExtensions(){return se().getSupportedStructuralExtensions()},validateRipgrepPattern(e,t,n){return se().validateRipgrepPattern(e,t,n)},getSemanticBoundaryOffsets(e,t){return se().getSemanticBoundaryOffsets(e,t)},jsonToYamlString(e,t){return se().jsonToYamlString(e,t)},parseRipgrepJson(e,t){return se().parseRipgrepJson(e,t)},searchRipgrep(e){return se().searchRipgrep(e)},queryFileSystem(e){return se().queryFileSystem(e)},extractMatchingLines(e,t,n){return se().extractMatchingLines(e,t,n)},filterPatch(e,t){return se().filterPatch(e,t)},computeLineDiff(e,t){return se().computeLineDiff(e,t)},charToByteOffset(e,t){return se().charToByteOffset(e,t)},byteToCharOffset(e,t){return se().byteToCharOffset(e,t)},byteSliceContent(e,t,n){return se().byteSliceContent(e,t,n)},sliceContent(e,t,n,r){return se().sliceContent(e,t,n,r)},get SIGNATURES_ONLY_HINT(){return se().SIGNATURES_ONLY_HINT}}});function Rn(e){(e.provider?gn({rateLimits:1,rateLimitsByProvider:{[e.provider]:1}}):lu(1)).session&&e.provider==="github"&&pu(1)}function Lg(e){gn({packageRegistryFailures:{[e]:1}})}var Xs=f(()=>{"use strict";Ot()});import{Octokit as zv}from"octokit";import{throttling as Uv}from"@octokit/plugin-throttling";import{createHash as $v}from"crypto";function Dg(e){return $v("sha256").update(e).digest("hex").substring(0,16)}async function He(e){let t=e?.token??await hu(),n=t?Dg(t):"anon",r=fu().githubApiUrl||"https://api.github.com";try{let o=new URL(r).host;if(o&&o!=="api.github.com")return`${n}@${o}`}catch{}return n}function Ng(e){return Date.now()-e.createdAt>Wv}function Gg(){for(let[e,t]of Ut.entries())Ng(t)&&Ut.delete(e);if(Ut.size>Ru){let e=Ut.size-Ru,t=0;for(let[n]of Ut){if(t>=e)break;Ut.delete(n),t++}}}function Kv(){Xo||(Xo=setInterval(Gg,Vv),typeof Xo=="object"&&"unref"in Xo&&Xo.unref())}function Ig(e,t,n){Rn({limit_type:e,retry_after_seconds:t,api_method:n.method,api_url:n.url,provider:"github"})}function Xv(e){let t=fu(),n=t.githubApiUrl,r={debug:()=>{},info:()=>{},warn:()=>{},error:(...i)=>console.error(...i)},o={userAgent:`octocode-mcp/${Bn}`,baseUrl:n,request:{timeout:t.timeout||3e4,log:r},throttle:Yv(),log:r,...e&&{auth:e}};return new qv(o)}async function ie(e){Kv();let t=e?.token??await hu(),n=t?Dg(t):"ANONYMOUS",r=Ut.get(n);if(r&&!Ng(r))return r.client;Ut.size>=Ru&&Gg();let o=Xv(t??void 0);return Ut.set(n,{client:o,createdAt:Date.now()}),o}async function We(e,t,n){let r=`${e}/${t}`,o=Jo.get(r);if(o)return o;let i=await ie(n);try{let{data:a}=await i.rest.repos.get({owner:e,repo:t}),c=a.default_branch;return Mg(r,c),c}catch{}let s=["main","master"];for(let a of s)try{return await i.rest.repos.getBranch({owner:e,repo:t,branch:a}),Mg(r,a),a}catch{}throw new Error(`Could not determine default branch for ${e}/${t}. The repository may not exist, require authentication, or be inaccessible.`)}function Mg(e,t){if(Jo.size>=Jv){let n=Jo.keys().next().value;n!==void 0&&Jo.delete(n)}Jo.set(e,t)}var qv,Wv,Ru,Vv,Ut,Xo,_g,Fg,Yv,Jv,Jo,Ae=f(()=>{"use strict";Yo();Yo();Ks();Xs();qv=zv.plugin(Uv),Wv=300*1e3,Ru=50,Vv=60*1e3;Ut=new Map,Xo=null;_g=3,Fg=60;Yv=()=>({onRateLimit:(e,t,n,r)=>(Ig("primary",e,t),r<_g&&e<Fg),onSecondaryRateLimit:(e,t,n,r)=>(Ig("secondary",e,t),r<_g&&e<Fg)});Jv=200,Jo=new Map});var V,Le,Hg,Su,Pu,Js,Qg=f(()=>{"use strict";V={AUTH_REQUIRED:"AUTH_REQUIRED",RATE_LIMIT_PRIMARY:"RATE_LIMIT_PRIMARY",RATE_LIMIT_SECONDARY:"RATE_LIMIT_SECONDARY",FORBIDDEN_PERMISSIONS:"FORBIDDEN_PERMISSIONS",NOT_FOUND:"NOT_FOUND",INVALID_REQUEST:"INVALID_REQUEST",SERVER_UNAVAILABLE:"SERVER_UNAVAILABLE",NETWORK_CONNECTION_FAILED:"NETWORK_CONNECTION_FAILED",REQUEST_TIMEOUT:"REQUEST_TIMEOUT",UNKNOWN:"UNKNOWN"},Le={[V.AUTH_REQUIRED]:{message:"GitHub authentication required",suggestion:"TELL THE USER: Refresh your GitHub token! Run 'gh auth login' OR 'gh auth refresh' OR set a new GITHUB_TOKEN/GH_TOKEN environment variable",explanation:"API request requires authentication. GitHub APIs have different rate limits for authenticated (5000/hour) vs unauthenticated (60/hour) requests."},[V.RATE_LIMIT_PRIMARY]:{message:"GitHub API rate limit exceeded",messageWithTime:(e,t)=>`GitHub API rate limit exceeded. Resets at ${e.toISOString()} (in ${t} seconds)`,messageWithoutTime:"GitHub API rate limit exceeded. Reset time unavailable - check GitHub status or try again later",suggestion:"Set GITHUB_TOKEN for higher rate limits (5000/hour vs 60/hour)",explanation:"Primary rate limit tracks total API calls per hour. Authenticated users get 5000 requests/hour, unauthenticated get 60 requests/hour."},[V.RATE_LIMIT_SECONDARY]:{message:e=>`GitHub secondary rate limit triggered. Retry after ${e} seconds`,suggestion:"Reduce request frequency to avoid abuse detection",explanation:"Secondary rate limits prevent API abuse by limiting request frequency. Triggered by making too many requests too quickly, regardless of remaining quota.",fallbackRetryAfter:60},[V.FORBIDDEN_PERMISSIONS]:{message:"Access forbidden - insufficient permissions",suggestion:"Check repository permissions or authentication",suggestionWithScopes:e=>`Missing required scopes: ${e.join(", ")}. Run: gh auth refresh -s ${e.join(" -s ")}`,fallbackSuggestion:"Token may not have sufficient permissions for this operation",explanation:"GitHub tokens require specific OAuth scopes for different operations. Common scopes: repo (full repository access), read:org (organization access), gist (gist access)."},[V.NOT_FOUND]:{message:"Repository, resource, or path not found",explanation:"Resource not found or not accessible. Could be: incorrect path, deleted resource, private repository without access, wrong branch name."},[V.INVALID_REQUEST]:{message:"Invalid search query or request parameters",suggestion:"Check search syntax and parameter values",explanation:"Request was well-formed but contains invalid parameters. Common causes: invalid search syntax, parameters out of range, invalid filter combinations."},[V.SERVER_UNAVAILABLE]:{message:"GitHub API temporarily unavailable",suggestion:"Retry the request after a short delay",explanation:"GitHub servers are temporarily unavailable. Usually resolves quickly. Check https://www.githubstatus.com for service status."},[V.NETWORK_CONNECTION_FAILED]:{message:"Network connection failed",suggestion:"Check internet connection and GitHub API status",explanation:"Cannot establish connection to GitHub API. Check internet connectivity, DNS settings, and firewall/proxy configuration."},[V.REQUEST_TIMEOUT]:{message:"Request timeout",suggestion:"Retry the request or check network connectivity",explanation:"Request exceeded timeout limit. Could be slow network, large response size, or GitHub server delay."},[V.UNKNOWN]:{message:"Unknown error occurred",explanation:"An unexpected error occurred that does not match known error patterns."}},Hg={401:V.AUTH_REQUIRED,403:V.FORBIDDEN_PERMISSIONS,404:V.NOT_FOUND,422:V.INVALID_REQUEST,502:V.SERVER_UNAVAILABLE,503:V.SERVER_UNAVAILABLE,504:V.SERVER_UNAVAILABLE},Su={CONNECTION_FAILED:["ENOTFOUND","ECONNREFUSED"],TIMEOUT:["timeout"]},Pu={SECONDARY:/\bsecondary rate\b/i,GRAPHQL_TYPE:"RATE_LIMITED"},Js={RESET_BUFFER_SECONDS:1,SECONDARY_FALLBACK_SECONDS:60}});import{RequestError as jg}from"octokit";function vt(e){if(!(e instanceof jg)||e.status!==422)return!1;let t=e.response?.data?.errors;return!Array.isArray(t)||t.length===0?!1:t.some(n=>{let r=typeof n?.message=="string"?n.message.toLowerCase():"";return Zv.some(o=>r.includes(o))})}function ne(e){return e instanceof jg?eA(e):e instanceof Error?cA(e):{error:typeof e=="string"?e:Le[V.UNKNOWN].message,type:"unknown"}}function eA(e){let{status:t,message:n,response:r}=e;if(t===403)return nA(n,r);if(t===429)return tA(n,r);let o=Hg[t];return o?aA(o,t):Er(V.UNKNOWN,{error:n||Le[V.UNKNOWN].message,status:t})}function Cu(e,t){let n=e?.[t],r=n===void 0?NaN:parseInt(String(n),10);return isNaN(r)?void 0:r}function tA(e,t){let n=t?.headers,r=Cu(n,"retry-after"),o=Cu(n,"x-ratelimit-reset"),i=Cu(n,"x-ratelimit-remaining")??0,s=o?new Date(o*1e3):null,a=r??(s?Math.max(Math.ceil((s.getTime()-Date.now())/1e3)+Js.RESET_BUFFER_SECONDS,0):void 0);return Rn({limit_type:"primary",retry_after_seconds:a,rate_limit_remaining:i,rate_limit_reset_ms:s?s.getTime():void 0,provider:"github"}),Er(V.RATE_LIMIT_PRIMARY,{error:e||Le[V.RATE_LIMIT_PRIMARY].messageWithoutTime,status:429,rateLimitRemaining:i,rateLimitReset:s?s.getTime():void 0,retryAfter:a,scopesSuggestion:Le[V.RATE_LIMIT_PRIMARY].suggestion})}function nA(e,t){let n=t?.headers;if(Pu.SECONDARY.test(e))return rA(n);let r=n?.["x-ratelimit-remaining"],o=sA(t);return r!==void 0&&String(r)==="0"||o?oA(n):iA(n)}function rA(e){let t=Number(e?.["retry-after"]),n=isNaN(t)?Js.SECONDARY_FALLBACK_SECONDS:t;return Rn({limit_type:"secondary",retry_after_seconds:n,provider:"github"}),Er(V.RATE_LIMIT_SECONDARY,{error:Le[V.RATE_LIMIT_SECONDARY].message(n),status:403,rateLimitRemaining:0,retryAfter:n,scopesSuggestion:Le[V.RATE_LIMIT_SECONDARY].suggestion})}function oA(e){let t=e?.["x-ratelimit-reset"],n=t?parseInt(String(t),10):NaN,r=isNaN(n)?null:new Date(n*1e3),o=r?Math.max(Math.ceil((r.getTime()-Date.now())/1e3)+Js.RESET_BUFFER_SECONDS,0):void 0,i=r?Le[V.RATE_LIMIT_PRIMARY].messageWithTime(r,o):Le[V.RATE_LIMIT_PRIMARY].messageWithoutTime;return Rn({limit_type:"primary",retry_after_seconds:o,rate_limit_remaining:0,rate_limit_reset_ms:r?r.getTime():void 0,provider:"github"}),Er(V.RATE_LIMIT_PRIMARY,{error:i,status:403,rateLimitRemaining:0,rateLimitReset:r?r.getTime():void 0,retryAfter:o,scopesSuggestion:Le[V.RATE_LIMIT_PRIMARY].suggestion})}function iA(e){let t=e?.["x-accepted-oauth-scopes"],n=e?.["x-oauth-scopes"],r=Le[V.FORBIDDEN_PERMISSIONS].suggestion;return t&&n&&(r=lA(String(t),String(n))),Er(V.FORBIDDEN_PERMISSIONS,{error:Le[V.FORBIDDEN_PERMISSIONS].message,status:403,scopesSuggestion:r})}function sA(e){return e?.data?.errors?.some(n=>n.type===Pu.GRAPHQL_TYPE)??!1}function aA(e,t){let n=Le[e];return Er(e,{error:n.message,status:t,..."suggestion"in n&&{scopesSuggestion:n.suggestion}})}function cA(e){return Su.CONNECTION_FAILED.some(t=>e.message.includes(t))?{error:Le[V.NETWORK_CONNECTION_FAILED].message,type:"network",scopesSuggestion:Le[V.NETWORK_CONNECTION_FAILED].suggestion}:Su.TIMEOUT.some(t=>e.message.includes(t))?{error:Le[V.REQUEST_TIMEOUT].message,type:"network",scopesSuggestion:Le[V.REQUEST_TIMEOUT].suggestion}:{error:e.message,type:"unknown"}}function Er(e,t){return{type:"http",...t}}function lA(e,t){let n=e.split(",").map(i=>i.trim()).filter(Boolean),r=t.split(",").map(i=>i.trim()).filter(Boolean),o=n.filter(i=>!r.includes(i));return o.length>0?Le[V.FORBIDDEN_PERMISSIONS].suggestionWithScopes(o):Le[V.FORBIDDEN_PERMISSIONS].fallbackSuggestion}var Zv,rt=f(()=>{"use strict";Qg();Xs();Zv=["cannot be searched","do not exist","does not exist","could not be found","cannot be found"]});function Bg(e){return`user:${e}`}function xu(e){return e.startsWith('"')||dA.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}var uA,dA,$t,Zo=f(()=>{"use strict";uA=/[@/]/,dA=/^[A-Za-z0-9_-]+$/;$t=class{queryParts=[];addOwnerRepo(t){if(t.owner&&t.repo){let n=Array.isArray(t.owner)?t.owner:[t.owner],r=Array.isArray(t.repo)?t.repo:[t.repo];n.forEach(o=>{r.forEach(i=>{this.queryParts.push(`repo:${o}/${i}`)})})}else t.owner&&(Array.isArray(t.owner)?t.owner:[t.owner]).forEach(r=>{this.queryParts.push(Bg(r))});return this}addDateFilters(t){return Object.entries({created:"created",updated:"updated","author-date":"author-date","committer-date":"committer-date","merged-at":"merged",closed:"closed"}).forEach(([r,o])=>{let i=t[r];i&&this.queryParts.push(`${o}:${i}`)}),this}addArrayFilter(t,n,r=!1){return t&&t!==null&&(Array.isArray(t)?t:[t]).forEach(i=>{let s=r?`"${i}"`:i;this.queryParts.push(`${n}:${s}`)}),this}addBooleanFilter(t,n,r){return t===!0?this.queryParts.push(n):t===!1&&this.queryParts.push(r),this}addSimpleFilter(t,n){return t!=null&&this.queryParts.push(`${n}:${t}`),this}addQuotedFilter(t,n){if(t!=null){let o=uA.test(t)&&!t.startsWith('"')?`"${t}"`:t;this.queryParts.push(`${n}:${o}`)}return this}addEngagementFilters(t){return this.addSimpleFilter(t.comments,"comments"),this.addSimpleFilter(t.reactions,"reactions"),this.addSimpleFilter(t.interactions,"interactions"),this}addOrganizationFilters(t){return this.addArrayFilter(t.label,"label",!0),t.milestone&&this.queryParts.push(`milestone:"${t.milestone}"`),this}build(){return this.queryParts.join(" ").trim()}}});function Eu(e){return new wu().addQueryTerms(e).addSearchFilters(e).addOwnerRepo(e).addMatchFilters(e).build()}function ku(e){return new Tu().addQueryTerms(e).addOwnerRepo(e).addRepoFilters(e).addMatchFilters(e).addQualityFilters(e).build()}var pA,wu,Tu,zg=f(()=>{"use strict";Zo();pA=/(?:^|\/)([^/]+\.[A-Za-z][A-Za-z0-9]{0,9})$/,wu=class extends $t{addQueryTerms(t){if(Array.isArray(t.keywords)&&t.keywords.length>0){let n=t.keywords.filter(r=>r&&r.trim());n.length>0&&this.queryParts.push(...n.map(xu))}return this}addSearchFilters(t){let n=t.path,r=t.filename,o=typeof n=="string"&&!r?n.match(pA):null;return o&&(r=o[1],n=n.slice(0,o.index)||void 0),this.addSimpleFilter(r,"filename"),this.addSimpleFilter(t.extension,"extension"),this.addQuotedFilter(n,"path"),t.language&&this.queryParts.push(`language:${t.language}`),this}addMatchFilters(t){return t.match&&(Array.isArray(t.match)?t.match:[t.match]).forEach(r=>{r==="file"?this.queryParts.push("in:file"):r==="path"&&this.queryParts.push("in:path")}),this}},Tu=class extends $t{addQueryTerms(t){return Array.isArray(t.keywords)&&t.keywords.length>0&&this.queryParts.push(...t.keywords.map(xu)),this}addRepoFilters(t){this.addArrayFilter(t.topicsToSearch,"topic"),this.addSimpleFilter(t.stars,"stars"),this.addSimpleFilter(t.size,"size"),this.addSimpleFilter(t.created,"created"),t.updated&&this.queryParts.push(`pushed:${t.updated}`),t.language&&this.queryParts.push(`language:${t.language}`);let n=t;return typeof n.forks=="string"&&this.queryParts.push(`forks:${n.forks}`),typeof n.license=="string"&&this.queryParts.push(`license:${n.license}`),typeof n.goodFirstIssues=="string"&&this.queryParts.push(`good-first-issues:${n.goodFirstIssues}`),this}addMatchFilters(t){return t.match&&(Array.isArray(t.match)?t.match:[t.match]).forEach(r=>{r==="name"?this.queryParts.push("in:name"):r==="description"?this.queryParts.push("in:description"):r==="readme"&&this.queryParts.push("in:readme")}),this}addQualityFilters(t){let n=t,r=n?.archived;this.queryParts.push(r===!0?"archived:true":"is:not-archived");let o=n?.visibility;return o==="public"?this.queryParts.push("is:public"):o==="private"&&this.queryParts.push("is:private"),this}}});function vu(e){return new Ou().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addBranchFilters(e).addDateFilters(e).addEngagementFilters(e).addReviewFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function Au(e){return e.draft!==void 0||e.author!==void 0||e.assignee!==void 0||typeof e.query=="string"&&e.query.trim().length>0||e.label&&e.label.length>0||e.mentions!==void 0||e.commenter!==void 0||e.involves!==void 0||e["reviewed-by"]!==void 0||e["review-requested"]!==void 0||e.reactions!==void 0||e.comments!==void 0||e.interactions!==void 0||e["no-assignee"]!==void 0||e["no-label"]!==void 0||e["no-milestone"]!==void 0||e["no-project"]!==void 0||e.state==="merged"||e.milestone!==void 0||e.language!==void 0||e.checks!==void 0||e.review!==void 0||e.locked!==void 0||e.visibility!==void 0||e["team-mentions"]!==void 0||e.project!==void 0||e.created!==void 0||e.updated!==void 0||e["merged-at"]!==void 0||e.closed!==void 0||e.merged!==void 0||e.match!==void 0&&e.match.length>0||e.sort==="comments"||e.sort==="reactions"||Array.isArray(e.owner)||Array.isArray(e.repo)}var Ou,Ug=f(()=>{"use strict";Zo();Ou=class extends $t{addBasicFilters(t){return t.query&&t.query.trim()&&(this.queryParts.push(t.query.trim()),t.match&&t.match.length>0&&this.queryParts.push(`in:${t.match.join(",")}`)),this.queryParts.push("is:pr"),this}addStateFilters(t){return t.merged===!0&&t.state==="closed"||this.addSimpleFilter(t.state,"is"),this.addBooleanFilter(t.draft,"is:draft","-is:draft"),this.addBooleanFilter(t.merged,"is:merged","is:unmerged"),this}addUserFilters(t){return this.addSimpleFilter(t.author,"author"),this.addSimpleFilter(t.assignee,"assignee"),this.addSimpleFilter(t.mentions,"mentions"),this.addSimpleFilter(t.commenter,"commenter"),this.addSimpleFilter(t.involves,"involves"),this.addSimpleFilter(t["reviewed-by"],"reviewed-by"),this.addSimpleFilter(t["review-requested"],"review-requested"),this}addBranchFilters(t){return this.addSimpleFilter(t.head,"head"),this.addSimpleFilter(t.base,"base"),this}addReviewFilters(t){return t.review&&this.queryParts.push(`review:${t.review}`),this}addNegativeFilters(t){return t["no-assignee"]&&this.queryParts.push("no:assignee"),t["no-label"]&&this.queryParts.push("no:label"),t["no-milestone"]&&this.queryParts.push("no:milestone"),t["no-project"]&&this.queryParts.push("no:project"),t.locked===!0?this.queryParts.push("is:locked"):t.locked===!1&&this.queryParts.push("is:unlocked"),t.visibility==="public"?this.queryParts.push("is:public"):t.visibility==="private"&&this.queryParts.push("is:private"),t["team-mentions"]&&this.queryParts.push(`team:${t["team-mentions"]}`),t.project&&this.queryParts.push(`project:${t.project}`),this}addMiscFilters(t){return this.queryParts.push(t.archived===!0?"archived:true":"archived:false"),t.language&&this.queryParts.push(`language:${t.language}`),t.checks&&this.queryParts.push(`status:${t.checks}`),this}}});function _u(e){return new Lu().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addDateFilters(e).addEngagementFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function Fu(e){return typeof e.query=="string"&&e.query.trim().length>0||e.author!==void 0||e.assignee!==void 0||e.label!==void 0&&(Array.isArray(e.label),e.label.length>0)||e.mentions!==void 0||e.commenter!==void 0||e.involves!==void 0||e.reactions!==void 0||e.comments!==void 0||e.interactions!==void 0||e["no-assignee"]!==void 0||e["no-label"]!==void 0||e["no-milestone"]!==void 0||e["no-project"]!==void 0||e.milestone!==void 0||e.locked!==void 0||e.visibility!==void 0||e.created!==void 0||e.updated!==void 0||e.closed!==void 0||e.match!==void 0&&e.match.length>0||e.sort==="comments"||e.sort==="reactions"||Array.isArray(e.owner)||Array.isArray(e.repo)}var Lu,$g=f(()=>{"use strict";Zo();Lu=class extends $t{addBasicFilters(t){return t.query&&t.query.trim()&&(this.queryParts.push(t.query.trim()),t.match&&t.match.length>0&&this.queryParts.push(`in:${t.match.join(",")}`)),this.queryParts.push("is:issue"),this}addStateFilters(t){return(t.state==="open"||t.state==="closed")&&this.addSimpleFilter(t.state,"is"),this}addUserFilters(t){return this.addSimpleFilter(t.author,"author"),this.addSimpleFilter(t.assignee,"assignee"),this.addSimpleFilter(t.mentions,"mentions"),this.addSimpleFilter(t.commenter,"commenter"),this.addSimpleFilter(t.involves,"involves"),this}addNegativeFilters(t){return t["no-assignee"]&&this.queryParts.push("no:assignee"),t["no-label"]&&this.queryParts.push("no:label"),t["no-milestone"]&&this.queryParts.push("no:milestone"),t["no-project"]&&this.queryParts.push("no:project"),t.locked===!0?this.queryParts.push("is:locked"):t.locked===!1&&this.queryParts.push("is:unlocked"),t.visibility==="public"?this.queryParts.push("is:public"):t.visibility==="private"&&this.queryParts.push("is:private"),this}addMiscFilters(t){return this.queryParts.push(t.archived===!0?"archived:true":"archived:false"),this}}});var kr=f(()=>{"use strict";Zo();zg();Ug();$g()});import mA from"crypto";function gA(e){if(e===null||typeof e!="object"||Array.isArray(e))return e;let t=e,n=!1,r={};for(let o of Object.keys(t)){if(hA.has(o)){n=!0;continue}r[o]=t[o]}return n?r:e}function ke(e,t,n){let r=Iu(gA(t)),o=n?`${n}:${r}`:r,i=mA.createHash("sha256").update(o).digest("hex");return`${fA}-${e}:${i}`}function Iu(e,t=new WeakSet){return e===null?"null":e===void 0?"undefined":typeof e!="object"?String(e):t.has(e)?'"[Circular]"':(t.add(e),Array.isArray(e)?`[${e.map(o=>Iu(o,t)).join(",")}]`:`{${Object.keys(e).sort().map(o=>{let i=e[o];return`"${o}":${Iu(i,t)}`}).join(",")}}`)}var fA,hA,qg=f(()=>{"use strict";fA="v2",hA=new Set([])});import yA from"node-cache";function RA(e){return e.match(/^v\d+-([^:]+):/)?.[1]}function SA(e){return e.startsWith("gh-api-")||e.startsWith("gh-repo-")||e==="github-user"}function ei(e){let t=RA(e);if(!(!t||!SA(t)))try{du(t,1)}catch{}}function Zs(){let e=Date.now();for(let[t,n]of Ct.entries())e-n.startedAt>bA&&Ct.delete(t)}function ti(e){return Wg[e]||Wg.default}function ni(e,t,n){try{return Pt.set(e,t,n),ct.sets++,ct.totalKeys=Pt.keys().length,!0}catch{try{let r=Pt.keys();for(let o of r)Pt.get(o);return Pt.set(e,t,n),ct.sets++,ct.totalKeys=Pt.keys().length,!0}catch{return!1}}}var bA,Pt,ct,Wg,Ct,ea=f(()=>{"use strict";Ot();bA=300*1e3,Pt=new yA({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1}),ct={hits:0,misses:0,sets:0,totalKeys:0,lastReset:new Date},Wg={"gh-api-code":3600,"gh-api-repos":7200,"gh-api-prs":1800,"gh-api-issues":1800,"gh-api-history":1800,"gh-api-releases":3600,"gh-api-file-content":300,"gh-repo-structure-api":7200,"github-user":900,"npm-search":14400,default:86400},Ct=new Map});async function Qe(e,t,n={}){if(n.skipCache)return await t();if(!n.forceRefresh)try{let i=Pt.get(e);if(i!==void 0)return ct.hits++,ei(e),i}catch{}Zs();let r=Ct.get(e);if(r)return r.promise;let o=(async()=>{try{let i=await t();if(n.forceRefresh||ct.misses++,(n.shouldCache??(()=>!0))(i)){let a=n.ttl;if(!a){let l=e.match(/^v\d+-([^:]+):/)?.[1]??"default";a=ti(l)}ni(e,i,a)}return i}finally{Ct.delete(e)}})();return Ct.set(e,{promise:o,startedAt:Date.now()}),o}var Vg=f(()=>{"use strict";ea()});import PA from"node-cache";async function ta(e,t,n={}){if(n.skipCache)return(await t({})).value;if(!n.forceRefresh)try{let i=Pt.get(e);if(i!==void 0)return ct.hits++,ei(e),i}catch{}Zs();let r=Ct.get(e);if(r)return r.promise;let o=(async()=>{try{let i=n.forceRefresh?void 0:Mu.get(e),s=await t({ifNoneMatch:!n.forceRefresh&&i?.etag?i.etag:void 0});if(s.notModified&&i){ct.hits++,ei(e);let c=n.ttl;if(!c){let u=e.match(/^v\d+-([^:]+):/)?.[1]??"default";c=ti(u)}return ni(e,i.data,c),i.data}if(n.forceRefresh||ct.misses++,(n.shouldCache??(()=>!0))(s.value)){let c=n.ttl;if(!c){let u=e.match(/^v\d+-([^:]+):/)?.[1]??"default";c=ti(u)}ni(e,s.value,c),Mu.set(e,{data:s.value,etag:s.etag})}return s.value}finally{Ct.delete(e)}})();return Ct.set(e,{promise:o,startedAt:Date.now()}),o}var Mu,Du=f(()=>{"use strict";ea();Mu=new PA({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1})});var Kg=f(()=>{"use strict";ea();Du()});var lt=f(()=>{"use strict";qg();Vg();Du();Kg()});import{DISCOVERY_IGNORED_FILE_EXTENSIONS as I$,DISCOVERY_IGNORED_FILE_NAMES as M$,DISCOVERY_IGNORED_FOLDER_NAMES as D$,getDiscoveryExtension as Yg,shouldIgnoreDiscoveryDir as ri,shouldIgnoreDiscoveryFile as Or}from"@octocodeai/octocode-engine/security";var oi=f(()=>{"use strict"});function j(e){if(typeof e=="string")return e.length;try{return JSON.stringify(e)?.length??0}catch{return String(e).length}}function Jg(e){if(!(typeof e!="number"||!Number.isFinite(e)))return Math.max(0,e)}function W(e,t){let n=typeof t=="number"?Jg(t):j(t);if(n===void 0)return e;try{Object.defineProperty(e,Xg,{value:n,enumerable:!1,configurable:!0})}catch{}return e}function le(e){if(!(typeof e!="object"||e===null))return Jg(e[Xg])}var Xg,ue=f(()=>{"use strict";Xg=Symbol.for("octocode.rawResponseChars")});function ii(e){let t={};if(!e||typeof e!="object")return t;for(let[n,r]of Object.entries(e))typeof r=="string"?t[n]=r:typeof r=="number"&&Number.isFinite(r)&&(t[n]=String(r));return t}function vr(e){let t=ii(e),n=t.etag||t.ETag||t.Etag||Object.entries(t).find(([r])=>r.toLowerCase()==="etag")?.[1];return n&&n.length>0?n:void 0}var Ar=f(()=>{"use strict"});import{ContentSanitizer as CA}from"@octocodeai/octocode-engine/contentSanitizer";async function ey(e,t,n){let r=await He(t),o=ke("gh-api-code",{keywords:e.keywords,owner:e.owner,repo:e.repo,extension:e.extension,filename:e.filename,language:e.language,path:e.path,match:e.match,limit:e.limit,page:e.page,auth:r},n);return await Qe(o,async()=>await xA(e,t),{shouldCache:s=>"data"in s&&!s.error})}async function xA(e,t){try{let n=await ie(t);if(e.keywords&&e.keywords.length>0&&e.keywords.filter(b=>b&&b.trim()).length===0)return{error:qe.QUERY_EMPTY.message,type:"http",status:400};let r=Eu(e);if(!r.trim())return{error:qe.QUERY_EMPTY.message,type:"http",status:400};let o=Math.min(typeof e.limit=="number"?e.limit:Zg,100),i=e.page||1,s={q:r,per_page:o,page:i,headers:{Accept:"application/vnd.github.v3.text-match+json"}},a=await n.rest.search.code(s),c=await wA(a.data.items,a.data.total_count),l=a.data.incomplete_results===!0,u=c.total_count,d=Math.min(u,1e3),m=Math.min(Math.ceil(d/o),10),p=Math.min(i,Math.max(1,m)),h=p<m,g=Math.min(d,m*o);return{data:{total_count:c.total_count,items:c.items,...l?{incompleteResults:!0}:{},repository:c.repository,matchLocations:c.matchLocations,minified:c.minified,minificationFailed:c.minificationFailed,minificationTypes:c.minificationTypes,_researchContext:c._researchContext,pagination:{currentPage:p,totalPages:m,perPage:o,totalMatches:d,reportedTotalMatches:u,reachableTotalMatches:g,totalMatchesKind:"reported",totalMatchesCapped:u>d,hasMore:h,...h?{nextPage:p+1}:{},uniqueFileCount:c._researchContext?.uniqueFileCount}},status:200,headers:ii(a.headers),rawResponseChars:j(a.data)}}catch(n){if(vt(n)){let o=Math.min(typeof e.limit=="number"?e.limit:Zg,100);return{data:{total_count:0,items:[],nonExistentScope:!0,pagination:{currentPage:e.page||1,totalPages:0,perPage:o,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}},status:200,rawResponseChars:0}}return ne(n)}}async function wA(e,t){let n=TA(e),r=new Set,o=!1,i=[],s=new Set,a=e.filter(p=>!Or(p.path)),c=0,l=0,u=await Promise.allSettled(a.map(async p=>{s.add(p.path);let h=[],g=await Promise.allSettled((p.text_matches||[]).map(async k=>{let E=k.fragment,_=CA.sanitizeContent(E||"",p.path);E=_.content,_.hasSecrets&&r.add(`Secrets detected in ${p.path}: ${_.secretsDetected.join(", ")}`),_.warnings.length>0&&_.warnings.forEach(w=>r.add(`${p.path}: ${w}`));try{let w=await D.minifyContent(E||"",p.path);E=w.content,w.failed?o=!0:w.type!=="failed"&&(h.push(w.type),i.push(w.type))}catch{o=!0}return{context:E||"",positions:k.matches?.map(w=>Array.isArray(w.indices)&&w.indices.length>=2?[w.indices[0],w.indices[1]]:[0,0])||[]}})),y=g.filter(k=>k.status==="fulfilled").map(k=>k.value),b=g.filter(k=>k.status==="rejected").length;b>0&&(l+=b);let S=p,x=Array.from(new Set(h));return{path:p.path,matches:y,url:p.html_url,repository:{nameWithOwner:p.repository.full_name,url:p.repository.url,pushedAt:p.repository.pushed_at||void 0},...S.last_modified_at&&{lastModifiedAt:S.last_modified_at},...x.length>0&&{minificationType:x.join(",")}}})),d=u.filter(p=>p.status==="fulfilled").map(p=>p.value);c=u.filter(p=>p.status==="rejected").length;let m={items:d,total_count:t!==void 0?t:a.length,_researchContext:{uniqueFileCount:s.size,repositoryContext:n?(()=>{let p=n.full_name.split("/");return p.length===2&&p[0]&&p[1]?{owner:p[0],repo:p[1],branch:n.default_branch||void 0}:void 0})():void 0}};return n&&(m.repository={name:n.full_name,url:n.url,createdAt:n.created_at||void 0,updatedAt:n.updated_at||void 0,pushedAt:n.pushed_at||void 0}),c>0&&r.add(`${c} item(s) dropped due to processing errors`),l>0&&r.add(`${l} match(es) dropped due to processing errors`),r.size>0&&(m.matchLocations=Array.from(r)),m.minified=!o,m.minificationFailed=o,i.length>0&&(m.minificationTypes=Array.from(new Set(i))),m}function TA(e){if(e.length===0)return null;let t=e[0]?.repository;return t&&e.every(r=>r.repository.full_name===t.full_name)?t:null}var Zg,ty=f(()=>{"use strict";Ee();Ae();rt();kr();lt();oi();at();ue();Ar();ae();Zg=30});function ry(e){let t={},n=e.license;n?.spdx_id&&n.spdx_id!=="NOASSERTION"&&(t.license=n.spdx_id);let r=e.homepage;return r&&(t.homepage=r),t}async function oy(e,t,n){let r=await He(t),o=e,i=ke("gh-api-repos",{keywords:e.keywords,topicsToSearch:e.topicsToSearch,owner:e.owner,repo:o.repo,stars:e.stars,size:e.size,created:e.created,updated:e.updated,language:o.language,match:e.match,sort:e.sort,limit:e.limit,page:e.page,archived:o.archived,visibility:o.visibility,forks:o.forks,license:o.license,goodFirstIssues:o.goodFirstIssues,auth:r},n);return await Qe(i,async()=>await kA(e,t),{shouldCache:a=>"data"in a&&!a.error})}async function EA(e,t){let n=Math.min(e.limit||100,100),r=e.page||1,o=e.sort==="updated"?"updated":"full_name",i,s;try{i=(await t.rest.repos.listForOrg({org:e.owner,per_page:n,page:r,sort:o})).data,s=void 0}catch(p){if(p?.status!==404)return ne(p);try{i=(await t.rest.repos.listForUser({username:e.owner,per_page:n,page:r,sort:o})).data,s=void 0}catch(g){return ne(g)}}let a=i.map(p=>{let g=p.full_name.split("/"),y=g[0]||"",b=g[1]||"";return{owner:y,repo:b,defaultBranch:p.default_branch,stars:p.stargazers_count||0,description:p.description?p.description:"No description",url:p.html_url,createdAt:p.created_at,updatedAt:p.updated_at,pushedAt:p.pushed_at,visibility:p.visibility,...p.topics&&p.topics.length>0&&{topics:p.topics},...p.forks_count&&p.forks_count>0&&{forksCount:p.forks_count},...p.open_issues_count&&p.open_issues_count>0&&{openIssuesCount:p.open_issues_count},...p.language&&{language:p.language},...ry(p)}}),c=a.length,l=c===n,u=(r-1)*n+c,d=s??u+(l?1:0),m=s!==void 0||!l?"exact":"lowerBound";return{data:{repositories:a,pagination:{currentPage:r,totalPages:l?r+1:r,perPage:n,totalMatches:d,reachableTotalMatches:u,totalMatchesKind:m,hasMore:l,...l?{nextPage:r+1}:{}}},status:200,rawResponseChars:j(i)}}async function kA(e,t){try{let n=await ie(t),r=(e.keywords?.length??0)>0||(e.topicsToSearch?.length??0)>0,o=typeof e.owner=="string"?e.owner:Array.isArray(e.owner)?e.owner[0]:void 0;if(!r&&o)return await EA({owner:o,sort:e.sort,limit:e.limit,page:e.page},n);let i=ku(e);if(!i.trim())return{error:qe.QUERY_EMPTY.message,type:"http",status:400};let s=Math.min(e.limit||ny,100),a=e.page||1,c={q:i,per_page:s,page:a},l=["stars","forks","help-wanted-issues","updated"];e.sort&&l.includes(e.sort)&&(c.sort=e.sort);let u=await n.rest.search.repos(c),d=u.data.items.map(S=>{let k=S.full_name.split("/"),E=k[0]||"",_=k[1]||"";return{owner:E,repo:_,defaultBranch:S.default_branch,stars:S.stargazers_count||0,description:S.description?S.description:"No description",url:S.html_url,createdAt:S.created_at,updatedAt:S.updated_at,pushedAt:S.pushed_at,visibility:S.visibility,...S.topics&&S.topics.length>0&&{topics:S.topics},...S.forks_count&&S.forks_count>0&&{forksCount:S.forks_count},...S.open_issues_count&&S.open_issues_count>0&&{openIssuesCount:S.open_issues_count},...S.language&&{language:S.language},...ry(S)}}),m=u.data.total_count,p=Math.min(m,1e3),h=Math.min(Math.ceil(p/s),10),g=Math.min(a,Math.max(1,h)),y=g<h,b=Math.min(p,h*s);return{data:{repositories:d,pagination:{currentPage:g,totalPages:h,perPage:s,totalMatches:p,reportedTotalMatches:m,reachableTotalMatches:b,totalMatchesKind:"reported",totalMatchesCapped:m>p,hasMore:y,...y?{nextPage:g+1}:{}}},status:200,headers:ii(u.headers),rawResponseChars:j(u.data)}}catch(n){if(vt(n)){let r=Math.min(e.limit||ny,100);return{data:{repositories:[],nonExistentScope:!0,pagination:{currentPage:e.page||1,totalPages:0,perPage:r,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}},status:200,rawResponseChars:0}}return ne(n)}}var ny,iy=f(()=>{"use strict";Ae();rt();kr();lt();at();ue();Ar();ae();ny=30});function At(e){return!!(e&&typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&"type"in e)}var Lr=f(()=>{"use strict"});function _e(e){if(!e)return{owner:void 0,repo:void 0};let t=e.split("/");if(t.length!==2||!t[0]||!t[1])throw new Error(`Invalid GitHub projectId format: '${e}'. Expected 'owner/repo'.`);return{owner:t[0],repo:t[1]}}function OA(e){if(e.rateLimitRemaining===void 0&&e.retryAfter===void 0&&e.rateLimitReset===void 0)return;let t=e.rateLimitReset,n=t&&!isNaN(t)?Math.floor(t/1e3):Math.floor(Date.now()/1e3)+(e.retryAfter??3600);return{remaining:e.rateLimitRemaining??0,reset:n,retryAfter:e.retryAfter}}function qt(e){return{error:e.error,status:e.status||500,provider:"github",hints:e.hints,rateLimit:OA(e)}}function na(e){return vA(e)?qt({error:typeof e.error=="string"?e.error:String(e.error),status:e.status||500,hints:e.hints,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}):null}function vA(e){if(typeof e!="object"||e===null||!("error"in e))return!1;let n=e.error;return typeof n=="string"||AA(n)}function AA(e){return typeof e=="object"&&e!==null&&typeof e.toString=="function"}var Lt=f(()=>{"use strict"});function si(e){return{...typeof e?.reportedTotalMatches=="number"?{reportedTotalMatches:e.reportedTotalMatches}:{},...typeof e?.reachableTotalMatches=="number"?{reachableTotalMatches:e.reachableTotalMatches}:{},...e?.totalMatchesKind?{totalMatchesKind:e.totalMatchesKind}:{},...typeof e?.totalMatchesCapped=="boolean"?{totalMatchesCapped:e.totalMatchesCapped}:{},...typeof e?.uniqueFileCount=="number"?{uniqueFileCount:e.uniqueFileCount}:{}}}var Nu=f(()=>{"use strict"});function LA(e){return{items:e.items.map(n=>({path:n.path,matches:n.matches.map(r=>({context:r.context,positions:r.positions})),url:n.url||"",repository:{id:n.repository.nameWithOwner,name:n.repository.nameWithOwner,url:n.repository.url},lastModifiedAt:n.lastModifiedAt})),totalCount:e.total_count,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...si(e.pagination)},repositoryContext:e._researchContext?.repositoryContext,nonExistentScope:e.nonExistentScope,incompleteResults:e.incompleteResults}}function _A(e){let t=e.repositories.map(n=>({id:`${n.owner}/${n.repo}`,name:n.repo,fullPath:`${n.owner}/${n.repo}`,description:n.description||null,url:n.url,cloneUrl:`https://github.com/${n.owner}/${n.repo}.git`,defaultBranch:n.defaultBranch||"main",stars:n.stars||0,forks:n.forksCount||0,visibility:n.visibility||"public",topics:n.topics||[],createdAt:n.createdAt,updatedAt:n.updatedAt,lastActivityAt:n.pushedAt||n.updatedAt,openIssuesCount:n.openIssuesCount,language:n.language}));return{repositories:t,totalCount:e.pagination?.totalMatches||t.length,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...si(e.pagination)},nonExistentScope:e.nonExistentScope}}async function sy(e,t,n=_e){let{owner:r,repo:o}=n(e.projectId),i=r||e.owner,s={keywords:e.keywords,owner:i,repo:o,extension:e.extension,filename:e.filename,language:e.language,path:e.path,match:e.match,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},a=await ey(s,t);return At(a)?qt(a):a.data?{data:LA(a.data),status:200,provider:"github",rawResponseChars:a.rawResponseChars??j(a.data)}:{error:"No data returned from GitHub API",status:500,provider:"github"}}async function ay(e,t){let n={keywords:e.keywords,topicsToSearch:e.topics,owner:e.owner,stars:e.stars??(e.minStars?`>=${e.minStars}`:void 0),size:e.size,created:e.created,updated:e.updated,language:e.language,match:e.match,archived:e.archived,visibility:e.visibility,forks:e.forks,license:e.license,goodFirstIssues:e.goodFirstIssues,sort:e.sort==="best-match"?void 0:e.sort,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},r=await oy(n,t);return"error"in r?na(r)??{error:"Unknown GitHub API error",status:500,provider:"github"}:!("data"in r)||!r.data?{error:"No data returned from GitHub API",status:500,provider:"github"}:{data:_A(r.data),status:200,provider:"github",rawResponseChars:r.rawResponseChars??j(r.data)}}var cy=f(()=>{"use strict";ty();iy();Lr();ue();Lt();Lt();Nu()});import{completeMetadata as Gu}from"@octocodeai/octocode-core";var v,ly=f(()=>{"use strict";v=new Proxy({},{get(e,t){return Gu.toolNames[t]},ownKeys(){return Object.keys(Gu.toolNames)},getOwnPropertyDescriptor(e,t){let n=Gu.toolNames;if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}})});import{completeMetadata as Hu}from"@octocodeai/octocode-core";function ra(e=Hu){if(Qu&&e===Hu)return Qu;let t=e,n=t.tools?.localFindFiles;n?.description&&uy.test(n.description)&&(t={...t,tools:{...t.tools,localFindFiles:{...n,description:n.description.replace(uy,IA)}}});let r=t.tools?.ghHistoryResearch;return r?.description&&dy.test(r.description)&&(t={...t,tools:{...t.tools,ghHistoryResearch:{...r,description:r.description.replace(dy,MA)}}}),e===Hu&&(Qu=t),t}var uy,IA,dy,MA,Qu,ju=f(()=>{"use strict";uy=/Default excludeDir skips common generated\/vendor dirs; pass \[\] to search all\./,IA='Nothing is excluded by default \u2014 pass excludeDir (e.g. ["node_modules","dist","coverage"]) to prune build/vendor dirs.',dy=/type:"prs" searches PRs; add prNumber to read selected content\. type:"commits" reads owner\/repo\/path history\./,MA='type:"prs" searches PRs; add prNumber to read selected content. type:"commits" reads owner/repo/path history. type:"issues" searches or reads GitHub issues; add issueNumber to read a specific issue (body + comments). type:"releases" lists repo releases.',Qu=null});var Bu,py=f(()=>{"use strict";ju();Bu=new Proxy({},{get(e,t){return ra().tools[t]?.description??""}})});import{completeMetadata as DA}from"@octocodeai/octocode-core";function zu(e){return Object.prototype.hasOwnProperty.call(DA.tools,e)}var my=f(()=>{"use strict"});import{completeMetadata as NA}from"@octocodeai/octocode-core";function Uu(){return NA.baseSchema}var GA,fy=f(()=>{"use strict";GA=new Proxy({},{get(e,t){return Uu()[t]},ownKeys(){return Array.from(new Set([...Reflect.ownKeys(Uu())]))},getOwnPropertyDescriptor(e,t){let n=Uu();if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}})});var pe=f(()=>{"use strict";ly();py();my();fy()});function $u(e,t){let n=e.split("/").pop()||"",r=t.some(i=>{let s=i.split("/").pop()||"";return s.toLowerCase()===n.toLowerCase()&&s!==n}),o=[];return r&&o.push("GitHub Contents API paths are case-sensitive. Verify exact file casing with ghViewRepoStructure."),o.push(`Did you mean: ${t.join(", ")}?`),o}async function qu(e,t,n,r,o){try{let i=r.split("/").slice(0,-1).join("/"),s=r.split("/").pop();if(!s)return[];let a=await e.rest.repos.getContent({owner:t,repo:n,path:i,ref:o});if(!Array.isArray(a.data))return[];let c=a.data,l=[],u=c.find(p=>p.name.toLowerCase()===s.toLowerCase());u&&l.push(u.path);let d=s.replace(/\.[^/.]+$/,"");return c.filter(p=>p.name===s?!1:!!p.name.startsWith(d+".")).forEach(p=>l.push(p.path)),l.length===0&&d.length>=3&&c.filter(h=>{let g=h.name.replace(/\.[^/.]+$/,"");return g!==d&&g.length>=3&&(d.startsWith(g)||g.startsWith(d))}).forEach(h=>l.push(h.path)),Array.from(new Set(l)).slice(0,3)}catch{return[]}}var hy=f(()=>{"use strict"});import{RequestError as Wu}from"octokit";async function HA(e,t,n,r,o,i,s,a){let c=await We(r,o,a);if((s==="main"||s==="master")&&s!==c)try{return{result:await e.rest.repos.getContent({...n,ref:c}),actualBranch:c}}catch{throw t}let u=ne(t),d=s===c?void 0:`Branch '${s}' not found. Default branch is '${c}'. Ask user: Do you want to get the file from '${c}' instead?`,m=await qu(e,r,o,i,s||c);return m.length>0&&(u.hints=[...u.hints||[],...$u(i,m)]),{...u,...d&&{scopesSuggestion:d}}}async function QA(e,t,n,r,o,i){let s=ne(t),a=await qu(e,n,r,o,i||"main");return a.length>0&&(s.hints=[...s.hints||[],...$u(o,a)]),s}async function gy(e,t){let n=e.replace(/\s/g,"");if(!n)return{error:yn.FILE_EMPTY.message,type:"unknown",status:404};try{let r=Buffer.from(n,"base64");return r.indexOf(0)!==-1?{error:yn.BINARY_FILE.message,type:"unknown",status:415}:{data:r.toString("utf-8"),status:200}}catch{return{error:yn.DECODE_FAILED.message,type:"unknown",status:422}}}async function yy(e,t,n,r,o){try{let i=await e.rest.git.getBlob({owner:t,repo:n,file_sha:r}),{content:s,encoding:a}=i.data;return a==="base64"?gy(s,o):a==="utf-8"?{data:s,status:200}:{error:`Unsupported blob encoding: ${a}`,type:"unknown",status:415}}catch(i){return ne(i)}}async function jA(e,t,n,r,o,i){try{let s=r.split("/").slice(0,-1).join("/"),a=r.split("/").pop();if(!a)return{error:`Cannot determine file name from path: ${r}`,type:"unknown",status:400};let c=o||await We(t,n,i).catch(()=>"HEAD"),l=await e.rest.repos.getContent({owner:t,repo:n,path:s||"",ref:c});if(!Array.isArray(l.data))return{error:`Expected directory listing for ${s||"root"}`,type:"unknown",status:500};let u=l.data.find(m=>m.name===a&&m.type==="file");if(!u)return{error:`File ${a} not found in ${s||"root"}`,type:"unknown",status:404};let d=await yy(e,t,n,u.sha,r);return"error"in d?d:{data:{rawContent:d.data,branch:typeof c=="string"?c:void 0,resolvedRef:typeof c=="string"?c:"HEAD"},status:200}}catch(s){return ne(s)}}async function ai(e,t,n={}){try{let r=await ie(t),{owner:o,repo:i,path:s,branch:a}=e,c={owner:o,repo:i,path:s,...a&&{ref:a},...n.ifNoneMatch?{headers:{"If-None-Match":n.ifNoneMatch}}:{}},l,u=a;try{l=await r.rest.repos.getContent(c)}catch(p){if(p instanceof Wu&&p.status===304)return{data:{rawContent:"",resolvedRef:a||"HEAD"},status:304,etag:n.ifNoneMatch,notModified:!0};if(p instanceof Wu&&p.status===404)if(a){let h=await HA(r,p,c,o,i,s,a,t);if("result"in h)l=h.result,u=h.actualBranch;else return h}else return await QA(r,p,o,i,s,a);else{if(p instanceof Wu&&p.status===413)return await jA(r,o,i,s,a||u,t);throw p}}let d=l.data,m=vr(l.headers);if(Array.isArray(d))return{error:yn.PATH_IS_DIRECTORY.message(v.GITHUB_VIEW_REPO_STRUCTURE),type:"unknown",status:400};if("content"in d&&d.type==="file"){let p=typeof d.content=="string"?d.content:"",h=d.size??0,g;if(p.length>0)g=await gy(p,s);else if(h>0&&"sha"in d&&typeof d.sha=="string"&&d.sha)g=await yy(r,o,i,d.sha,s);else return{error:yn.FILE_EMPTY.message,type:"unknown",status:404};if("error"in g)return g;if(!u&&!a)try{u=await We(o,i,t)}catch{}return{data:{rawContent:g.data,branch:u||void 0,resolvedRef:u||a||"HEAD"},status:200,rawResponseChars:j(d),...m?{etag:m}:{}}}return{error:yn.UNSUPPORTED_TYPE.message(d.type),type:"unknown",status:415}}catch(r){return ne(r)}}var by=f(()=>{"use strict";Ae();rt();pe();at();ue();Ar();hy()});var Vu=f(()=>{"use strict";by()});function ci(e){if(e.length===0)return[];let t=e.split(/\r?\n/);return t.length>0&&t[t.length-1]===""&&t.pop(),t}function _t(e){return ci(e).length}var _r=f(()=>{"use strict"});function oa(e,t,n,r=!1,o=!1,i){if(r)try{new RegExp(t)}catch(l){let u=l instanceof Error?l.message:String(l);throw new Error(`Invalid regex pattern: ${u}`)}if(i!==void 0&&i<=0)return{lines:[],matchRanges:[],matchCount:0,matchingLines:[]};let s=e.join(`
10
- `),a={isRegex:r,caseSensitive:o,contextLines:n,maxMatches:i},c=D.extractMatchingLines(s,t,a);return{lines:c.lines,matchRanges:c.matchRanges.map(l=>({start:l.start,end:l.end})),matchCount:c.matchCount,matchingLines:c.matchingLines.map(l=>l)}}var Ku=f(()=>{"use strict";Ee()});function zA(e){return BA.test(e.split(/[?#]/,1)[0]??e)}function Ry(e,t){return zA(t)?$A(UA(e)):null}function ia(e,t){let n=Ry(e,t);if(n===null||n.length===0)return null;let r=[];return Py(n,r),r.join(`
11
- `)}function Sy(e,t){let n=Ry(e,t);return n===null?null:n.map(Cy)}function UA(e){let t=[],n=e.split(/\r?\n/),r;return n.forEach((o,i)=>{let s=o.match(/^[ \t]{0,3}(`{3,}|~{3,})/);if(s?.[1]){let l=s[1][0],u=s[1].length;r?r.marker===l&&u>=r.length&&(r=void 0):r={marker:l,length:u};return}if(r)return;let a=o.match(/^[ \t]{0,3}(#{1,6})(?:[ \t]+|$)(.*)$/);if(!a?.[1])return;let c=(a[2]??"").replace(/[ \t]+#+[ \t]*$/,"").trim();t.push({line:i+1,level:a[1].length,text:c.length>0?c:"(untitled heading)",children:[]})}),t}function $A(e){let t=[],n=[];for(let r of e){for(;n.length>0&&n[n.length-1].level>=r.level;)n.pop();let o=n[n.length-1];o?o.children.push(r):t.push(r),n.push(r)}return t}function Py(e,t){for(let n of e){let r=String(n.line).padStart(4," "),o=" ".repeat(Math.max(0,n.level-1));t.push(`${r}| ${o}${"#".repeat(n.level)} ${n.text}`),Py(n.children,t)}}function Cy(e){let t=`${"#".repeat(e.level)} ${e.text}`;return{name:t,kind:"markdownHeading",range:{start:{line:e.line-1,character:0},end:{line:e.line-1,character:t.length}},selectionRange:{start:{line:e.line-1,character:0},end:{line:e.line-1,character:t.length}},children:e.children.map(Cy)}}var BA,sa=f(()=>{"use strict";BA=/\.(?:md|markdown|mdx)$/i});import{getConfigSync as qA,DEFAULT_OUTPUT_CONFIG as WA}from"@octocodeai/config";function zn(){try{return qA().output.pagination.defaultCharLength}catch{return WA.pagination.defaultCharLength}}var aa=f(()=>{"use strict"});function Yu(e,t){return D.byteToCharOffset(e,t)}function xy(e,t){return D.charToByteOffset(e,t)}function wy(e){return D.charToByteOffset(e,e.length)}function Xu(e,t,n,r){return D.sliceContent(e,t,n,r)}var Ty=f(()=>{"use strict";Ee()});function ca(e,t=0,n,r={}){let o=r.mode??"characters",i=e.length,s=wy(e);if(n===void 0)return{paginatedContent:e,byteOffset:0,byteLength:s,totalBytes:s,nextByteOffset:void 0,charOffset:0,charLength:i,totalChars:i,nextCharOffset:void 0,hasMore:!1,estimatedTokens:Math.ceil(e.length/4),currentPage:1,totalPages:1};let a=Math.max(1,r.pageSize??n),c,l,u,d,m,p,h,g;if(o==="bytes"){let y=Math.min(t,s),b=Math.min(y+n,s);d=Yu(e,y),m=Yu(e,b),m<i&&xy(e,m)<b&&(m+=1);let S=Xu(e,d,m-d);c=S.text,d=S.charOffset,m=S.charOffset+S.charLength,l=S.byteOffset,u=S.byteOffset+S.byteLength,p=u<s;let x=r.actualOffset??y;h=Math.floor(x/a)+1,g=Math.max(h,Math.ceil(s/a))}else{let y=Xu(e,t,n);c=y.text,d=y.charOffset,m=y.charOffset+y.charLength,l=y.byteOffset,u=y.byteOffset+y.byteLength,p=m<i;let b=r.actualOffset??d;h=Math.floor(b/a)+1,g=Math.max(h,Math.ceil(i/a))}return{paginatedContent:c,byteOffset:l,byteLength:u-l,totalBytes:s,nextByteOffset:p?u:void 0,charOffset:d,charLength:c.length,totalChars:i,nextCharOffset:p?m:void 0,hasMore:p,estimatedTokens:Math.ceil(c.length/4),currentPage:h,totalPages:g}}function Ju(e){return{currentPage:e.currentPage,totalPages:e.totalPages,hasMore:e.hasMore,charOffset:e.charOffset,charLength:e.charLength,totalChars:e.totalChars,...e.nextCharOffset!==void 0&&{nextCharOffset:e.nextCharOffset}}}var Zu=f(()=>{"use strict";Ty()});function YA(e){return e&&e.trim().length>0?e:KA}async function Ey(e,t){return(await D.getSemanticBoundaryOffsets(e,YA(t))).filter(r=>Number.isInteger(r)&&r>=0&&r<=e.length)}function XA(e,t){let n=e.indexOf(`
12
- `,t);return n===-1?void 0:n+1}function la(e){let t=e.trimEnd().split(`
13
- `).at(-1)??"";return t.length>0&&(t[0]===" "||t[0]===" ")}async function ua(e,t,n){let r=XA(e,Math.max(0,t));return r===void 0?void 0:(await Ey(e,n)).find(i=>i>=r&&i>t)}async function da(e,t,n,r){let o=Math.min(Math.max(0,t),e.length),i=Math.max(1,n),s=o+i;if(s>=e.length)return{length:e.length-o,chunkMode:"char-limit"};let a=await Ey(e,r);if(a.length===0)return{length:i,chunkMode:"char-limit"};let c=a.find(u=>u>s);return c===void 0?{length:i,chunkMode:"char-limit"}:c-s<=VA?{length:c-o,chunkMode:"semantic"}:{length:i,chunkMode:"char-limit"}}var VA,KA,ed=f(()=>{"use strict";Ee();VA=8e3,KA="__octocode_generic__.unknown"});function ZA(){let e=zn();return Math.min(e,8e3)}async function td(e,t,n){let r=e.content??"",o=n??ZA();if(r.length<=o&&t===0)return e;let i=e.path??void 0,{length:s,chunkMode:a}=await da(r,t,o,i),c=ca(r,t,s,{pageSize:o}),l;if(c.hasMore&&a==="char-limit"&&la(c.paginatedContent)){let u=c.charOffset+c.charLength;l=await ua(r,u,i)}return{...e,content:c.paginatedContent,pagination:{currentPage:c.currentPage,totalPages:c.totalPages,hasMore:c.hasMore,charOffset:c.charOffset,charLength:c.charLength,totalChars:c.totalChars,...c.nextCharOffset!==void 0&&{nextCharOffset:c.nextCharOffset},chunkMode:a,...l!==void 0&&{nextBlockChar:l}}}}async function nd(e,t,n,r,o){try{let i=await e.rest.repos.listCommits({owner:t,repo:n,path:r,per_page:1,...o&&{sha:o}});if(i.data.length>0){let s=i.data[0],a=s?.commit?.committer?.date,c=s?.commit?.author?.name||s?.author?.login||"Unknown";return{lastModified:a||"Unknown",lastModifiedBy:c}}return null}catch{return null}}var ky=f(()=>{"use strict";aa();ae();Zu();ed()});import{ContentSanitizer as rd}from"@octocodeai/octocode-engine/contentSanitizer";function li(e,t){return{sourceChars:e,sourceBytes:t}}async function Oy(e,t,n,r,o,i,s,a,c=5,l,u,d,m="standard"){let p=e.length,h=Buffer.byteLength(e,"utf-8"),g=m==="standard"||m==="symbols",y=g?"standard":"none",b;if(m==="symbols"){let K=D.extractSignatures(e,o);if(K===null){let I=ia(e,o);if(I!==null){let ye=rd.sanitizeContent(I,o),Te=[D.SIGNATURES_ONLY_HINT];return ye.hasSecrets&&Te.push(`Secrets detected and redacted: ${ye.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:ye.content,contentView:"symbols",branch:r,totalLines:_t(e),...li(p,h),isPartial:!1,signaturesExtracted:!0,hints:Te}}b=`minify:"symbols" is not supported for this file type (${o.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(K!==null){let I=rd.sanitizeContent(K,o),ye=D.applyContentViewMinification(I.content,o),Te=[D.SIGNATURES_ONLY_HINT];return l&&Te.push('matchString was ignored \u2014 minify:"symbols" returns the full skeleton index. Use startLine/endLine from the gutter to read the matching body.'),I.hasSecrets&&Te.push(`Secrets detected and redacted: ${I.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:ye,contentView:"symbols",branch:r,totalLines:_t(e),...li(p,h),isPartial:!1,signaturesExtracted:!0,hints:Te}}}let S=new Set,x=e,k=x.split(`
14
- `),E=_t(x),_=e,w,G,M=!1,A;if(i)_=e;else if(l){let K=d===!0,I;try{I=oa(k,l,c,u??!1,K)}catch{return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:E,...li(p,h),matchNotFound:!0,searchedFor:l,hints:[`Invalid regex "${l}". Check syntax (e.g. escape backslashes: "\\\\w+" not "\\w+") or disable matchStringIsRegex=false for a literal search.`]}}if(I.matchCount===0){let Os=u?[`Regex "${l}" matched no lines. Verify the pattern, check flags (case-${K?"sensitive":"insensitive"}), or use fullContent=true to inspect the file.`]:[`"${l}" not found in file${K?" (case-sensitive)":""}. Try matchStringIsRegex=true for pattern matching, broaden the search, or use fullContent=true.`];return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:E,...li(p,h),matchNotFound:!0,searchedFor:l,hints:Os}}_=I.lines.join(`
15
- `);let ye=I.matchRanges[0],Te=I.matchRanges[I.matchRanges.length-1];s=ye.start,a=Te.end,w=ye.start,G=Te.end,M=!0,I.matchRanges.length>1&&(A=I.matchRanges);let nn=I.matchingLines.slice(0,5).join(", "),lo=I.matchingLines.length>5?` and ${I.matchingLines.length-5} more`:"";S.add(I.matchCount>1?`Found ${I.matchCount} occurrences of "${l}" on lines ${nn}${lo} \u2014 all shown as ${I.matchRanges.length} slice${I.matchRanges.length===1?"":"s"}, \xB1${c} lines of context each.`:`Found "${l}" on line ${I.matchingLines[0]}`)}else if(s!==void 0||a!==void 0){let K=s||1,I=a||E;if(K<1||K>E)_=e,S.add(`Requested startLine ${K} is out of range for this ${E}-line file \u2014 returning the full file instead of a range.`);else if(I<K)_=e,S.add(`Requested range startLine=${K}, endLine=${I} is invalid (endLine before startLine) \u2014 returning the full file instead of a range.`);else{let ye=Math.max(1,K),Te=Math.min(E,I),nn=k.slice(ye-1,Te);w=ye,G=Te,M=!0,_=nn.join(`
16
- `),I>E&&S.add(`Requested endLine ${I} adjusted to ${E} (file end)`)}}let q=rd.sanitizeContent(_,o);if(_=g?D.applyContentViewMinification(q.content,o):q.content,q.hasSecrets&&S.add(`Secrets detected and redacted: ${q.secretsDetected.join(", ")}`),q.warnings.length>0&&q.warnings.forEach(K=>S.add(K)),E>2e3&&m!=="symbols"&&!l&&!s&&!a&&!i){let K=Math.max(1,E-200);S.add(`Large file (${E} lines) \u2014 minify:"symbols" for an export index, or startLine=${K} for the tail.`)}let H=Array.from(S);return{owner:t,repo:n,path:o,content:_,contentView:y,branch:r,totalLines:E,...li(p,h),...M&&{startLine:w,endLine:G,isPartial:M},...A&&{matchRanges:A},...H.length>0&&{matchLocations:H},...(H.length>0||b)&&{warnings:[...b?[b]:[],...H]}}}var vy=f(()=>{"use strict";Ee();_r();Ku();sa();ky()});async function Ay(e,t,n){let r=await He(t),o=ke("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,auth:r},n),i=await ta(o,async({ifNoneMatch:g})=>{let y=await ai(e,t,{ifNoneMatch:g}),{etag:b,notModified:S,...x}=y;return{value:x,etag:b,notModified:S}},{shouldCache:g=>"data"in g&&!g.error,forceRefresh:e.forceRefresh===!0});if(!("data"in i)||!i.data)return i;let s=i.data.branch||i.data.resolvedRef||e.branch||"",a=await Oy(i.data.rawContent,e.owner,e.repo,s,e.path,e.fullContent||!1,e.startLine,e.endLine,e.contextLines??5,e.matchString,e.matchStringIsRegex,e.matchStringCaseSensitive,e.minify??"standard");if("error"in a)return{error:a.error||"Unknown error",status:500,type:"unknown"};let{signaturesExtracted:c,...l}=a,u=e.charOffset??0,d=e.charLength,m=e.fullContent===!0&&u===0&&d===void 0,p=c||m?l:await td(l,u,d),h=(e.charOffset??0)>0;if(!e.noTimestamp&&!h)try{let g=await ie(t),y=await Qe(ke("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,ts:!0,auth:r},n),()=>nd(g,e.owner,e.repo,e.path,e.branch),{shouldCache:b=>b!==null,forceRefresh:e.forceRefresh===!0});y&&(p.lastModified=y.lastModified,p.lastModifiedBy=y.lastModifiedBy)}catch{}return{data:p,status:200,rawResponseChars:i.rawResponseChars}}var Ly=f(()=>{"use strict";Ae();lt();Vu();vy()});function eL(e,t){return{path:e.path||t.path,content:e.content||"",encoding:"utf-8",size:e.content?.length||0,totalLines:e.totalLines,sourceChars:e.sourceChars,sourceBytes:e.sourceBytes,contentView:e.contentView,ref:e.branch||t.ref||"",lastModified:e.lastModified,lastModifiedBy:e.lastModifiedBy,pagination:e.pagination,isPartial:e.isPartial,startLine:e.startLine,endLine:e.endLine,matchRanges:e.matchRanges,warnings:tL(e,t),matchNotFound:e.matchNotFound,searchedFor:e.searchedFor}}function tL(e,t){if(e.matchNotFound===!0){let n=e;if(Array.isArray(n.hints)&&n.hints.length>0){let a=typeof e.totalLines=="number"?` (${e.totalLines} lines scanned)`:"";return n.hints.map(c=>c.replace(" in file",` in file${a}`))}let r=e.searchedFor??t.matchString??"",o=typeof e.totalLines=="number"?` (${e.totalLines} lines scanned)`:"",s=t.matchStringIsRegex===!0?"Try a different pattern, widen the anchor, or use fullContent=true to inspect the file.":"Try matchStringIsRegex=true for pattern matching, a different anchor, or fullContent=true.";return[`No matches for "${r}" in file${o}. ${s}`]}return e.warnings??e.matchLocations}async function _y(e,t,n=_e){let{owner:r,repo:o}=n(e.projectId);if(!r||!o)return{error:"Project ID is required for file content",status:400,provider:"github"};let i={owner:r,repo:o,path:e.path,type:"file",branch:e.ref,startLine:e.startLine,endLine:e.endLine,matchString:e.matchString,contextLines:e.contextLines??5,matchStringIsRegex:e.matchStringIsRegex,matchStringCaseSensitive:e.matchStringCaseSensitive,charOffset:e.charOffset,charLength:e.charLength,fullContent:e.fullContent,forceRefresh:e.forceRefresh,minify:e.minify??"standard",mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},s=await Ay(i,t);if(At(s))return qt(s);if(!s.data)return{error:"No data returned from GitHub API",status:500,provider:"github"};let a=s.data.hints;return{data:eL(s.data,e),status:200,provider:"github",rawResponseChars:s.rawResponseChars??j(s.data),...a?.length?{hints:a}:{}}}var Fy=f(()=>{"use strict";Ly();Lr();ue();Lt();Lt()});function ui(e,t=oL){let n=e?ci(e):[];return{lines:n.slice(0,t),moreCount:Math.max(0,n.length-t)}}function Iy(e,t,n){if(!e)return"";if(t===void 0&&n===void 0)return e;let r={additions:t,deletions:n};return D.filterPatch(e,r)}function My(e){return e?D.filterPatch(e,{trimContext:!0,contextLines:rL}):""}var rL,oL,pa=f(()=>{"use strict";Ee();_r();rL=2,oL=20});import{ContentSanitizer as Dy}from"@octocodeai/octocode-engine/contentSanitizer";function od(e){let t=Dy.sanitizeContent(e.title??""),n=e.body?Dy.sanitizeContent(e.body):{content:void 0,warnings:[]},r=new Set([...t.warnings,...n.warnings]),i=e.state?.toLowerCase()==="closed"?"closed":"open";return{prData:{number:e.number,title:t.content,body:n.content,state:i,author:e.user?.login??"",labels:e.labels?.map(a=>typeof a=="string"?a:a.name??"")??[],created_at:e.created_at??"",updated_at:e.updated_at??"",closed_at:e.closed_at??null,url:e.html_url,comments:[],...typeof e.comments=="number"&&e.comments>0?{total_comment_count:e.comments}:{},reactions:0,draft:e.draft??!1,head:e.head?.ref,head_sha:e.head?.sha,base:e.base?.ref,base_sha:e.base?.sha,...e.merged_at&&{merged_at:e.merged_at}},sanitizationWarnings:r}}function Gy(e,t,n,r){if(typeof e!="string"||!r)return{value:e};let o=e.length,i=Math.min(Math.max(0,t),o),s=Math.max(1,n),a=Math.min(i+s,o),c=a<o;return i===0&&a===o?{value:e}:{value:e.slice(i,a),pagination:{charOffset:i,charLength:a-i,totalChars:o,hasMore:c,...c?{nextCharOffset:a}:{}}}}function Fr(e,t={}){let n=t.charOffset??0,r=t.charLength??iL,o=t.charLength??sL,i=typeof e.body=="string"?D.minifyMarkdownCore(e.body):e.body,s=Gy(i,n,r,!t.includeFullBody),a=(e.comments??[]).sort((h,g)=>{let y=h.commentType==="review_inline"?0:1,b=g.commentType==="review_inline"?0:1;return y-b}),c=a.filter(h=>h.commentType==="review_inline").length,l=a.length-c,u=t.includeFullCommentDetails?a:a.slice(0,Ny),d=u.map(h=>{let g=Gy(h.body,n,o,!t.includeFullCommentDetails);return{...h,body:g.value??"",...g.pagination?{body_pagination:g.pagination}:{}}}),m=!t.includeFullCommentDetails&&(a.length>u.length||d.some(h=>"body_pagination"in h)),p=[...s.pagination&&t.includeFullBody?[`PR body paginated at charOffset=${s.pagination.charOffset}, charLength=${s.pagination.charLength}, totalChars=${s.pagination.totalChars}. Re-call with prNumber and charOffset=${s.pagination.nextCharOffset??s.pagination.totalChars} to continue this body.`]:[],...m?[`PR comments are paginated/summarized to ${Ny} comment(s) per search result with ${o} chars each. Use prNumber with content.comments={discussion:true,reviewInline:true} and charOffset to continue specific comment bodies.`]:[]];return{number:e.number,title:e.title,url:e.url,state:e.state,draft:e.draft??!1,merged:e.state==="closed"&&!!e.merged_at,created_at:e.created_at,updated_at:e.updated_at,closed_at:e.closed_at??void 0,merged_at:e.merged_at,author:e.author,...e.labels?.length?{labels:e.labels.map(h=>({id:0,name:h,color:""}))}:{},head_ref:e.head||"",...e.head_sha?{head_sha:e.head_sha}:{},base_ref:e.base||"",...e.base_sha?{base_sha:e.base_sha}:{},body:s.value,...s.pagination?{body_pagination:s.pagination}:{},comments:e.total_comment_count??a.length,...a.length>0&&{comment_details_breakdown:{inline_review:c,discussion:l}},commits:e.commits?.length||0,additions:e.file_changes?.files.reduce((h,g)=>h+g.additions,0)||e.additions||0,deletions:e.file_changes?.files.reduce((h,g)=>h+g.deletions,0)||e.deletions||0,changed_files:e.file_changes?.total_count||0,...e.file_changes&&{file_changes:e.file_changes.files?.map(h=>({filename:h.filename,status:h.status,additions:h.additions,deletions:h.deletions,patch:h.patch}))},...e.reviews&&{reviews:e.reviews},...e.commits&&{commit_details:e.commits},...d.length>0&&{comment_details:d,comment_details_shown:d.length,comment_details_total:a.length,...m?{comment_details_paginated:!0}:{}},...(e._sanitization_warnings||p.length>0)&&{_sanitization_warnings:[...e._sanitization_warnings||[],...p]}}}function di(e){let t=Array.isArray(e.owner)?e.owner[0]||void 0:e.owner,n=Array.isArray(e.repo)?e.repo[0]||void 0:e.repo;return{owner:t,repo:n}}function pi(e,t){let r=t.content?.patches,o=r?.mode??(t.reviewMode==="full"?"all":"none"),i=new Map(r?.ranges?.map(a=>[a.file,a])||[]),s=new Set([...r?.files??[],...i.keys()]);return o==="none"?e.map(a=>({...a,patch:void 0})):o==="selected"?e.filter(a=>s.has(a.filename)).map(a=>{let c=i.get(a.filename);return{...a,patch:a.patch?Iy(a.patch,c?.additions,c?.deletions):void 0}}):e.map(a=>({...a,patch:a.patch?My(a.patch):a.patch}))}var iL,sL,Ny,Ir=f(()=>{"use strict";pa();Ee();aa();iL=zn(),sL=Math.round(zn()/4),Ny=3});function Mr(e){let t=e.content;return!!(e.reviewMode==="full"||t?.changedFiles||t?.patches?.mode&&t.patches.mode!=="none")}function Hy(e){return e.reviewMode==="full"?{discussion:!0,reviewInline:!0}:e.content?.comments??null}function ma(e){let t=Hy(e);return t?t.discussion!==!1:!1}function fa(e){let t=Hy(e);return t?t.reviewInline!==!1:!1}function ha(e){let t=e.content;return!!(e.reviewMode==="full"||t?.commits)}function ga(e){let t=e.content;return!!(e.reviewMode==="full"||t?.reviews)}function id(e){return e.prNumber!==void 0||e.reviewMode==="full"?!0:Mr(e)||ma(e)||fa(e)||ha(e)||ga(e)}function sd(e){return!!e.content?.comments?.includeBots}function ya(e){return e.replace(/<!--[\s\S]*?-->/g,"").replace(/^\[vc\]:\s*#.*$/gm,"").replace(/^[A-Za-z0-9+/]{120,}={0,2}$/gm,"").replace(/\n{3,}/g,`
8
+ import{completeMetadata as Xh}from"@octocodeai/octocode-core";var D=Xh.toolNames,le=D.LSP_GET_SEMANTIC_CONTENT;function Ln(e=process.env){let t=e.ENABLE_RELEASES;return t===void 0?!1:["1","true","yes","on"].includes(t.trim().toLowerCase())}function Vt(e=process.env){let t=e.ENABLE_DISCUSSIONS;return t===void 0?!1:["1","true","yes","on"].includes(t.trim().toLowerCase())}var bE=new Set([D.LOCAL_RIPGREP,D.LOCAL_FETCH_CONTENT,D.LOCAL_FIND_FILES,D.LOCAL_VIEW_STRUCTURE,le]);var Yc=["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation","workspaceSymbol","supertypes","subtypes","diagnostic"];function Ze(e){return{name:e.name,uri:e.uri,foundAtLine:e.foundAtLine,...e.orderHint!==void 0&&{orderHint:e.orderHint},...e.isAmbiguous===!0&&{isAmbiguous:!0},...e.lineDeviation!==void 0&&{lineDeviation:e.lineDeviation}}}function Fi(e){let t=e.displayRange??(e.range?{startLine:e.range.start.line+1,endLine:e.range.end.line+1}:void 0);return{uri:e.uri,...e.content!==void 0&&{content:e.content},...t&&{displayRange:t},...e.isDefinition&&{isDefinition:!0}}}import{CloneRepoQuerySchema as tg}from"@octocodeai/octocode-core/schemas";import{z as to}from"zod";function I(e,t){return to.preprocess(n=>typeof n=="number"&&Number.isFinite(n)?Math.min(Math.max(n,e),t):n,to.number().int().min(e).max(t))}var X=I(1,1e3).optional().default(1),Kt=I(0,100).optional(),Yt=I(1,1e9).optional(),Jh={responseCharOffset:I(0,1e8).optional().describe("Full-response char offset; re-call with returned value when hasMore."),responseCharLength:I(1,5e4).optional().describe("Full-response char window.")};function V(e,t={}){let{maxQueries:n=5}=t;return to.object({queries:to.array(e).min(1).max(n).describe("Parallel queries."),...Jh}).superRefine((r,o)=>{let i=new Set;r.queries.forEach((s,a)=>{s&&typeof s=="object"&&"id"in s&&typeof s.id=="string"&&(i.has(s.id)&&o.addIssue({code:"custom",message:`Duplicate query id "${s.id}" at index ${a}`,path:["queries",a,"id"]}),i.add(s.id))})})}import{z as Xc}from"zod";function Zh(e,t){return e?.description&&!t.description?t.describe(e.description):t}function qc(e,t){let n={};for(let[r,o]of Object.entries(t))n[r]=Zh(e.shape[r],o);return n}function eg(e,t){let n=e;return n.safeExtend?n.safeExtend(t):e.extend(t)}function Jc(e,t){if(!t?.length)return e;let n=new Set(t);return Xc.object(Object.fromEntries(Object.entries(e.shape).filter(([r])=>!n.has(r))))}function K(e,t={},n={}){let r=Jc(e,n.omit),o=eg(r,qc(r,t));return n.strict?o.strict():o}function q(e,t={},n={}){let r=Jc(e,n.omit),o=Xc.object({...r.shape,...qc(r,t)});return n.strict?o.strict():o}var Xt=K(tg),An=V(Xt);import{z as ng}from"zod";import{FileContentQuerySchema as Zc}from"@octocodeai/octocode-core/schemas";var rg=ng.enum(["none","standard","symbols"]).optional(),eu={startLine:Yt,endLine:Yt,contextLines:Kt,charOffset:I(0,1e8).optional(),charLength:I(1,5e4).optional(),minify:rg},og=q(Zc,eu),Lt=K(Zc,eu),kn=V(og);import{z as ig}from"zod";import{GitHubCodeSearchQuerySchema as tu}from"@octocodeai/octocode-core/schemas";var nu={limit:I(1,100).optional(),page:X.default(1),match:ig.enum(["file","path"]).default("file").describe('"file" searches file contents and returns snippets with matchIndices. "path" searches only file paths/names \u2014 no snippets, far cheaper; use it to confirm a file exists before reading it. (Unlike ghSearchRepos/ghSearchPullRequests, where `match` instead selects which text FIELDS to search \u2014 a different concept sharing this name.)')},In=K(tu,nu),On=V(q(tu,nu));import{z as Di}from"zod";import{GitHubPullRequestSearchQuerySchema as ru}from"@octocodeai/octocode-core/schemas";var ou={type:Di.enum(["prs","commits","releases","issues"]).optional().describe('Research mode: "prs" (default) searches pull requests; "commits" walks commit history for a repo or path; "releases" lists the repository releases (tagName, publishedAt, prerelease flag) and surfaces the latest stable release; "issues" searches or reads GitHub issues (body/discussion comments \u2014 not PRs).'),prNumber:I(1,1e9).optional(),issueNumber:I(1,1e9).optional().describe('Issue number for type:"issues" detail mode \u2014 reads that specific issue (body/discussion comments). Requires owner+repo. Falls back to prNumber if omitted.'),limit:I(1,100).optional().default(30),match:Di.array(Di.enum(["title","body","comments"])).optional().describe('Fields to match keywords against: "title", "body", "comments". Default searches all three. Use ["title"] for the most precise and fastest match. (Unlike ghSearchCode, where `match` instead selects file-contents vs file-paths \u2014 a different concept sharing this name.)'),page:X.default(1),filePage:X.optional(),commentPage:X.optional(),commitPage:X.optional(),itemsPerPage:I(1,100).optional().default(20),charOffset:I(0,1e8).optional(),commentBodyOffset:I(0,1e8).optional(),charLength:I(1,5e4).optional()},sg=q(ru,ou),Mi=K(ru,ou),ag=V(sg);import{SearchPullRequestsQuerySchema as iu,SearchIssuesQuerySchema as su,SearchCommitsQuerySchema as au,ListReleasesQuerySchema as cu}from"@octocodeai/octocode-core/schemas";var uu={limit:I(1,100).optional().default(30),page:X.default(1),itemsPerPage:I(1,100).optional().default(20)},lu={...uu,filePage:X.optional(),commentPage:X.optional(),commitPage:X.optional(),charOffset:I(0,1e8).optional(),commentBodyOffset:I(0,1e8).optional(),charLength:I(1,1e5).optional()},Fn=K(iu,lu),vn=V(q(iu,lu)),du={...uu,commentPage:X.optional(),charOffset:I(0,1e8).optional(),commentBodyOffset:I(0,1e8).optional(),charLength:I(1,1e5).optional()},Dn=K(su,du),Mn=V(q(su,du)),pu={page:X.default(1),limit:I(1,100).optional().describe("Commits per page \u2014 alias of itemsPerPage (preferred when both are set).")},Nn=K(au,pu),Gn=V(q(au,pu)),mu={page:X.default(1),limit:I(1,100).optional().describe("Releases per page \u2014 alias of itemsPerPage (preferred when both are set).")},qt=K(cu,mu),Jt=V(q(cu,mu));import{SearchDiscussionsQuerySchema as fu}from"@octocodeai/octocode-core/schemas";var hu={itemsPerPage:I(1,100).optional().default(20),limit:I(1,100).optional()},Zt=K(fu,hu),en=V(q(fu,hu));import{z as gu}from"zod";import{GitHubReposSearchSingleQuerySchema as yu}from"@octocodeai/octocode-core/schemas";var Ru={limit:I(1,100).optional(),page:X.default(1),match:gu.array(gu.enum(["name","description","readme"])).optional().describe("Which text fields to search: name, description, and/or readme. Defaults to name+description; add 'readme' for broader, slower full-text search. (Unlike ghSearchCode, where `match` instead selects file-contents vs file-paths \u2014 a different concept sharing this name.)")},Hn=K(yu,Ru),Bn=V(q(yu,Ru));import{GitHubViewRepoStructureQuerySchema as Su}from"@octocodeai/octocode-core/schemas";var bu={maxDepth:I(0,20).optional(),page:X.default(1),itemsPerPage:I(1,200).optional()},Un=K(Su,bu),Qn=V(q(Su,bu));import{z as no}from"zod";import{NpmPackageQuerySchema as Cu}from"@octocodeai/octocode-core/schemas";var Pu={page:X,keywords:no.union([no.string(),no.array(no.string())]).optional().describe("Registry keyword query (string; an array of terms is accepted and joined with spaces).")},$n=K(Cu,Pu),jn=V(q(Cu,Pu,{strict:!0}),{maxQueries:5});import{z as ug}from"zod";import{FetchContentQuerySchema as xu}from"@octocodeai/octocode-core/schemas";var lg=ug.enum(["none","standard","symbols"]).optional(),wu={startLine:Yt,endLine:Yt,contextLines:Kt.default(5),charOffset:I(0,1e8).optional(),charLength:I(1,5e4).optional(),minify:lg},dg=q(xu,wu),_t=K(xu,wu),zn=V(dg,{maxQueries:5});import{z as Ni}from"zod";import{FindFilesQuerySchema as pg}from"@octocodeai/octocode-core/schemas";var Tu={maxDepth:I(0,100).optional(),minDepth:I(0,100).optional(),limit:I(1,1e4).optional().describe("Discovery cap applied after sort, before pagination \u2014 total results are capped here; itemsPerPage/page page within that cap."),page:X.default(1),itemsPerPage:I(1,50).optional(),excludeDir:Ni.array(Ni.string()).optional().describe("Directory names to prune from the walk. Common generated/vendor dirs are pruned by default (node_modules, .git, dist, build, out, coverage, target, .next, .cache); pass [] to prune nothing, or pass an explicit list to choose pruned dirs.")},Eu=Ni.object(Object.fromEntries(Object.entries(pg.shape).filter(([e])=>e!=="regexType")));function mg(e,t){e.minDepth!==void 0&&e.maxDepth!==void 0&&e.minDepth>e.maxDepth&&t.addIssue({code:"custom",message:"minDepth must be less than or equal to maxDepth.",path:["minDepth"]})}var fg=q(Eu,Tu),kt=K(Eu,Tu).superRefine(mg),Vn=V(fg,{maxQueries:5});import{FindDeadCodeQuerySchema as Lu}from"@octocodeai/octocode-core/schemas";var Au={maxFiles:I(1,5e4).optional(),limit:I(1,5e3).optional(),page:X.default(1),itemsPerPage:I(1,50).optional()},hg=q(Lu,Au),It=K(Lu,Au),Kn=V(hg,{maxQueries:5});import{z as pt}from"zod";import{RipgrepQuerySchema as _u}from"@octocodeai/octocode-core/schemas";var gg=["paginated","discovery","detailed","structural"],yg=["semanticRanking"],ku={mode:pt.enum(gg).optional().default("paginated").describe('"paginated" snippets; "discovery" paths only; "detailed" snippets plus context; "structural" AST/code-shape search with pattern or rule. Structural matches return line/capture anchors that can feed lspGetSemantics when symbol identity matters. (Unrelated to ghSearchPullRequests\'s `content.patches.mode` \u2014 different concepts sharing this name.)'),searchText:pt.string().optional().describe('The search pattern. regex:"fixed" for a literal match, "perl" for advanced features (lookaheads, backreferences), else "smart". (Unlike ghSearchCode/ghSearchRepos, where `keywords` is an array of ANDed terms \u2014 this is a single string.)'),output:pt.enum(["content","files","filesWithout","countLines","countMatches","matchOnly"]).optional().default("content").describe('"content" (default) matches with line text; "files"/"filesWithout" return matching/non-matching paths; "countLines"/"countMatches" return per-file counts; "matchOnly" returns just the matched substring (required for unique/matchWindow). ("files" is unlike localViewStructure\'s `filesOnly`, which filters a directory listing to file entries.)'),pattern:pt.string().optional().describe("Structural only: code-shaped AST pattern with $X (one node) or $$$ARGS (node list). Modifiers are part of the node \u2014 `function $NAME` does not match `async function` or `export function`; include the modifiers or use a YAML `kind` rule for modifier-agnostic matches. Use this to find syntax shape, then use lspGetSemantics for semantic proof."),maxDepth:I(0,20).optional().describe("Keep files at most this many directory levels below the search root (0 = files directly in the root). Structural mode pushes this into the native walker; text/regex mode applies it after the native search and emits a warning when it filters deeper matches."),rule:pt.string().optional().describe("Structural only: YAML ast-grep rule for not/inside/has/all/any. Use for partial or relational AST queries before escalating matched anchors to lspGetSemantics."),captureText:pt.boolean().optional().describe("Structural only: return full verbatim capture text for `$$$` list metavars (bodies, arg lists). Default false \u2014 list-capture text is omitted from `metavars`, and `metavarRanges` entries are comment-pruned and truncated to keep results lean; ranges always remain as line anchors."),contextLines:Kt,matchContentLength:I(1,1e5).optional().default(500),maxMatchesPerFile:I(1,1e5).optional(),maxFiles:I(1,1e5).optional(),matchPage:X.optional(),itemsPerPage:I(1,1e3).optional(),page:X.default(1),unique:pt.enum(["off","list","count"]).optional().default("off").describe('Needs output:"matchOnly". "list" returns each matched value once per file; "count" adds its frequency.')},Rg={...ku,semanticRanking:pt.unknown().optional().superRefine((e,t)=>{e!==void 0&&t.addIssue({code:"custom",message:'semanticRanking is disabled in this build \u2014 sort:"relevance" already includes declaration/export/AST signals; remove this field.'})}).describe('DISABLED in this build \u2014 do not pass. sort:"relevance" already includes declaration/export/AST signals.')},Sg=q(_u,Rg),bg=K(_u,ku,{strict:!0,omit:yg}),tt=bg.superRefine((e,t)=>{if(e.mode==="structural"){!e.pattern&&!e.rule&&t.addIssue({code:"custom",message:'mode:"structural" requires `pattern` or `rule`.',path:["pattern"]}),e.pattern&&e.rule&&t.addIssue({code:"custom",message:"`pattern` and `rule` are mutually exclusive.",path:["rule"]}),e.wholeWord&&t.addIssue({code:"custom",message:'`wholeWord` is not valid with mode:"structural".',path:["wholeWord"]}),e.invertMatch&&t.addIssue({code:"custom",message:'`invertMatch` is not valid with mode:"structural".',path:["invertMatch"]}),e.regex&&e.regex!=="smart"&&t.addIssue({code:"custom",message:'`regex` is not valid with mode:"structural".',path:["regex"]}),e.caseMode&&e.caseMode!=="smart"&&t.addIssue({code:"custom",message:'`caseMode` is not valid with mode:"structural".',path:["caseMode"]}),e.multiline&&e.multiline!=="off"&&t.addIssue({code:"custom",message:'`multiline` is not valid with mode:"structural".',path:["multiline"]}),e.output&&e.output!=="content"&&e.output!=="countMatches"&&e.output!=="files"&&t.addIssue({code:"custom",message:'With mode:"structural", `output` supports only "content" (default), "countMatches" (per-file counts, no match content \u2014 cheapest for counting), or "files" (paths only).',path:["output"]}),e.unique&&e.unique!=="off"&&t.addIssue({code:"custom",message:'`unique` is not valid with mode:"structural".',path:["unique"]});let n=e.pattern&&!["php","bash","sh","zsh"].includes(e.langType??"")?/(?<!\$)\$\$(?!\$)[A-Z_][A-Z0-9_]*/.exec(e.pattern):null;if(n){let r=n[0].slice(2);t.addIssue({code:"custom",message:`\`${n[0]}\` is not a metavariable and matches nothing \u2014 use \`$${r}\` for one node or \`$$$${r}\` for a list of nodes.`,path:["pattern"]})}return}(e.pattern||e.rule)&&t.addIssue({code:"custom",message:'`pattern`/`rule` require mode:"structural".',path:[e.pattern?"pattern":"rule"]}),e.searchText||t.addIssue({code:"custom",message:'`searchText` is required unless mode:"structural".',path:["searchText"]}),e.matchWindow!==void 0&&e.output!=="matchOnly"&&t.addIssue({code:"custom",message:'matchWindow requires output:"matchOnly".',path:["matchWindow"]}),(e.unique==="list"||e.unique==="count")&&e.output!=="matchOnly"&&t.addIssue({code:"custom",message:'unique requires output:"matchOnly".',path:["unique"]})}),Yn=V(Sg,{maxQueries:5});import{z as Iu}from"zod";import{ViewStructureQuerySchema as Ou}from"@octocodeai/octocode-core/schemas";var Fu={excludeDir:Iu.array(Iu.string()).optional().describe("Directory names to prune from recursive walks (default: common generated/vendor dirs such as node_modules, dist, build, out, coverage, target). Pass [] to inspect everything."),maxDepth:I(0,20).optional(),limit:I(1,1e4).optional(),page:X.default(1),itemsPerPage:I(1,50).optional()},Cg=q(Ou,Fu),Ot=K(Ou,Fu),Xn=V(Cg,{maxQueries:5});import{z as ro}from"zod";import{LspGetSemanticsQuerySchema as vu}from"@octocodeai/octocode-core/schemas";var Pg=I(1,1e9).describe("1-based source line for symbol-anchored semantic operations. Get it from search/localSearchCode, structural AST captures, or documentSymbols; never guess."),xg=I(0,1e5).optional(),wg=["structured","compact"],Du={type:ro.enum(Yc).default("definition").describe("Semantic operation for local code intelligence. Use after text or structural AST search when you need identity, references, call flow, type relations, hover, symbols, or diagnostics."),symbolName:ro.string().min(1).max(1024).optional().describe("Exact bare identifier at the lineHint anchor for symbol operations; workspaceSymbol uses this as the fuzzy project-wide symbol query."),lineHint:Pg.optional(),orderHint:xg,depth:I(0,20).optional().describe("Traversal depth for call-hierarchy / type-hierarchy queries (0 = direct only)."),includeDeclaration:ro.boolean().optional().default(!0),page:X.describe("Result page for paginated reference/symbol lists (advance while pagination.hasMore)."),itemsPerPage:I(1,100).optional().describe("References/symbols returned per page (with page)."),contextLines:I(0,100).optional().describe("Lines of surrounding source shown around each result location."),format:ro.enum(wg).optional().default("structured")},Tg=q(vu,Du),qn=K(vu,Du);var Jn=V(Tg,{maxQueries:5});var Hi=["GitHub","Local Code","Package","Other"],Mu=new Map([D.GITHUB_SEARCH_CODE,D.GITHUB_SEARCH_REPOSITORIES,D.GITHUB_PULL_REQUESTS,D.GITHUB_ISSUES,D.GITHUB_COMMITS,D.GITHUB_FETCH_CONTENT,D.GITHUB_VIEW_REPO_STRUCTURE,D.GITHUB_CLONE_REPO,D.LOCAL_RIPGREP,D.LOCAL_FIND_FILES,D.LOCAL_FIND_DEAD_CODE,D.LOCAL_FETCH_CONTENT,D.LOCAL_VIEW_STRUCTURE,le,D.PACKAGE_SEARCH,...Vt()?[D.GITHUB_DISCUSSIONS]:[]].map((e,t)=>[e,t])),Fe=class extends Error{constructor(n,r=[]){super(n);this.details=r;this.name="DirectToolInputError"}details},Eg=["id","mainResearchGoal","researchGoal","reasoning"],Zn=new Set([...Eg]),Nu=[{name:D.GITHUB_SEARCH_CODE,schema:In,inputSchema:On},{name:D.GITHUB_FETCH_CONTENT,schema:Lt,inputSchema:kn},{name:D.GITHUB_VIEW_REPO_STRUCTURE,schema:Un,inputSchema:Qn},{name:D.GITHUB_SEARCH_REPOSITORIES,schema:Hn,inputSchema:Bn},{name:D.GITHUB_PULL_REQUESTS,schema:Fn,inputSchema:vn},{name:D.GITHUB_ISSUES,schema:Dn,inputSchema:Mn},{name:D.GITHUB_COMMITS,schema:Nn,inputSchema:Gn},...Ln()?[{name:D.GITHUB_RELEASES,schema:qt,inputSchema:Jt}]:[],...Vt()?[{name:D.GITHUB_DISCUSSIONS,schema:Zt,inputSchema:en}]:[],{name:D.PACKAGE_SEARCH,schema:$n,inputSchema:jn},{name:D.GITHUB_CLONE_REPO,schema:Xt,inputSchema:An},{name:D.LOCAL_RIPGREP,schema:tt,inputSchema:Yn},{name:D.LOCAL_VIEW_STRUCTURE,schema:Ot,inputSchema:Xn},{name:D.LOCAL_FIND_FILES,schema:kt,inputSchema:Vn},{name:D.LOCAL_FIND_DEAD_CODE,schema:It,inputSchema:Kn},{name:D.LOCAL_FETCH_CONTENT,schema:_t,inputSchema:zn},{name:le,schema:qn,inputSchema:Jn}],Lg=[...Ln()?[]:[{name:D.GITHUB_RELEASES,schema:qt,inputSchema:Jt,disabled:{envVar:"ENABLE_RELEASES"}}],...Vt()?[]:[{name:D.GITHUB_DISCUSSIONS,schema:Zt,inputSchema:en,disabled:{envVar:"ENABLE_DISCUSSIONS"}}]];function nt(e){return Nu.find(t=>t.name===e)??Lg.find(t=>t.name===e)}function Ft(e){return e.startsWith("gh")?"GitHub":e.startsWith("local")||e.startsWith("lsp")?"Local Code":e===D.PACKAGE_SEARCH?"Package":"Other"}function Ag(e){return[...e].sort((t,n)=>{let r=Hi.indexOf(Ft(t)),o=Hi.indexOf(Ft(n));if(r!==o)return r-o;let i=Mu.get(t)??Number.MAX_SAFE_INTEGER,s=Mu.get(n)??Number.MAX_SAFE_INTEGER;return i!==s?i-s:t.localeCompare(n)})}import{z as Gu}from"zod";var _g=["id","researchGoal","reasoning"],Hu=[{name:"content",type:"Array<{ type: string; text: string }>"},{name:"structuredContent",type:"object",optional:!0},{name:"isError",type:"boolean",optional:!0}];function kg(e){let t=nt(e);if(!t)return"{}";try{return JSON.stringify(Gu.toJSONSchema(t.inputSchema,{io:"input"}),null,2)}catch{return JSON.stringify(Gu.toJSONSchema(t.schema,{io:"input"}),null,2)}}function Ig(e){return JSON.stringify(e??{},null,2)}function Og(e){let t=Ft(e),n=[..._g];return(t==="GitHub"||t==="Package")&&n.splice(1,0,"mainResearchGoal"),n}function Fg(){return Hu.map(e=>({...e}))}function vg(){return JSON.stringify(Object.fromEntries(Hu.map(e=>[e.name,e.optional?`${e.type} (optional)`:e.type])),null,2)}function Dg(e,t){return t?.tools?.[e]?.description??e}import{z as Mg}from"zod";function er(e){let t=nt(e);if(!t)return[];let n=Mg.toJSONSchema(t.schema,{io:"input"});if(!tn(n))return[];let r=rt(n.properties)?n.properties:{},o=new Set(Array.isArray(n.required)?n.required.filter(i=>!Zn.has(i)&&!Qi(r[i])):[]);return Ui(r,o)}function Ng(e){let t=[],n=typeof e.minimum=="number"?e.minimum:void 0,r=typeof e.maximum=="number"?e.maximum:void 0;return n!==void 0&&r!==void 0?t.push(`${n}-${r}`):n!==void 0?t.push(`>=${n}`):r!==void 0&&t.push(`<=${r}`),"default"in e&&t.push(`default ${JSON.stringify(e.default)}`),t.length>0?t.join(", "):void 0}function Bi(e){if(Array.isArray(e.enum)&&e.enum.length>0)return`enum(${e.enum.map(String).join(", ")})`;if(e.type==="array"){let n=tn(e.items)?e.items:void 0;return`array<${n?Bi(n):"value"}>`}let t=Array.isArray(e.anyOf)?e.anyOf:Array.isArray(e.oneOf)?e.oneOf:void 0;if(t){let n=t.filter(tn).map(Bi).filter(r=>r!=="value");if(n.length>0)return[...new Set(n)].join(" | ")}return Array.isArray(e.type)?e.type.join(" | "):typeof e.type=="string"?e.type:"value"}function Ui(e,t,n=""){let r=[];for(let[o,i]of Object.entries(e)){if(!n&&Zn.has(o))continue;let s=tn(i)?i:{},a=n?`${n}.${o}`:o;if(r.push({name:a,required:t.has(o),type:Bi(s),constraints:Ng(s),description:typeof s.description=="string"?s.description:void 0}),rt(s.properties)){let u=new Set(Array.isArray(s.required)?s.required.filter(l=>typeof l=="string"?!Qi(s.properties?.[l]):!1):[]);r.push(...Ui(s.properties,u,a))}let c=s.type==="array"&&tn(s.items)?s.items:void 0;if(c&&rt(c.properties)){let u=new Set(Array.isArray(c.required)?c.required.filter(l=>typeof l=="string"?!Qi(c.properties?.[l]):!1):[]);r.push(...Ui(c.properties,u,a))}}return r}function Uu(e,t){if(t.startsWith("array<")){let n=t.slice(6,-1);return[Bu(e,n)]}return Bu(e,t)}function Bu(e,t){if(t.startsWith("enum("))return/^enum\(([^,)]+)/.exec(t)?.[1]??e;if(t==="integer"||t==="number")return e==="lineHint"?42:5;if(t==="boolean")return!0;switch(e){case"keywords":case"keywordsToSearch":case"query":case"text":return"runCLI";case"path":return".";case"uri":return"/path/to/file.ts";case"owner":return"bgauryy";case"repo":return"octocode";case"extension":return"ts";case"filename":return"package.json";case"language":return"TypeScript";case"symbolName":return"myFunction";case"name":case"packageName":return"zod";default:return e}}function rt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tn(e){return rt(e)}function Qi(e){return tn(e)&&"default"in e}function Qu(e){return e===D.GITHUB_PULL_REQUESTS?[{label:"PR search (list)",query:{owner:"bgauryy",repo:"octocode",keywordsToSearch:["localSearchCode"],concise:!0,limit:5}},{label:"PR detail (diffs + reviews)",query:{owner:"sindresorhus",repo:"slugify",prNumber:1,content:{comments:{discussion:!0},reviews:!0,patches:{mode:"all"}}}}]:e===D.GITHUB_SEARCH_CODE?[{label:"path search",query:{keywords:["package.json"],owner:"bgauryy",repo:"octocode",match:"path",concise:!0,limit:5}},{label:"content search",query:{keywords:["localSearchCode"],owner:"bgauryy",repo:"octocode",extension:"ts",limit:5}}]:e===D.GITHUB_SEARCH_REPOSITORIES?[{label:"repository search",query:{keywords:["react"],language:"TypeScript",stars:">1000",concise:!0,limit:5}},{label:"owner repositories",query:{owner:"bgauryy",concise:!0,limit:5}}]:e===D.GITHUB_VIEW_REPO_STRUCTURE?[{label:"repo tree",query:{owner:"bgauryy",repo:"octocode",path:"packages",maxDepth:2,itemsPerPage:50}}]:e===D.GITHUB_CLONE_REPO?[{label:"full repo clone",query:{owner:"bgauryy",repo:"octocode"}},{label:"subtree clone",query:{owner:"bgauryy",repo:"octocode",sparsePath:"packages/octocode-tools-core"}}]:e===D.LOCAL_RIPGREP?[{label:"text search",query:{path:"packages/octocode-tools-core/src",searchText:"buildDirectToolCommandPatterns",maxFiles:20}},{label:"structural code search",query:{path:"packages/octocode-tools-core/src/tools",mode:"structural",pattern:"eval($X)"}}]:e===D.LOCAL_FETCH_CONTENT?[{label:"exact line range",query:{path:"packages/octocode-tools-core/package.json",startLine:1,endLine:30,minify:"none"}},{label:"matched slice",query:{path:"packages/octocode-tools-core/src/tools/directToolCatalog.meta.ts",matchString:"buildKnownDirectToolCommandPatternQueries",contextLines:8,minify:"standard"}}]:e===D.LOCAL_FIND_FILES?[{label:"basename globs",query:{path:"packages/octocode-tools-core",names:["scheme.ts","package.json"],entryType:"f",itemsPerPage:20}},{label:"monorepo path glob",query:{path:".",pathPattern:"packages/*/src/tools/**",entryType:"f",itemsPerPage:20}},{label:"prune build dirs",query:{path:"packages/octocode-tools-core",names:["*.js"],entryType:"f",excludeDir:["node_modules","dist","coverage","out"],itemsPerPage:20}}]:e===D.LOCAL_FIND_DEAD_CODE?[{label:"default entrypoints (package.json + tests)",query:{path:"packages/octocode-tools-core",itemsPerPage:20}},{label:"explicit entrypoints",query:{path:"packages/octocode-tools-core",entrypoints:["src/index.ts","src/direct.ts"],includeTests:!1}}]:e===D.LOCAL_VIEW_STRUCTURE?[{label:"shallow tree",query:{path:"packages/octocode-tools-core/src/tools",maxDepth:2,itemsPerPage:50}},{label:"files only at depth 1",query:{path:"packages/octocode-engine/src",maxDepth:1,entryType:"f",itemsPerPage:100}}]:e===D.GITHUB_FETCH_CONTENT?[{label:"matched slice (cheap read of one function)",query:{owner:"bgauryy",repo:"octocode",path:"packages/octocode-tools-core/src/responses.ts",matchString:"export function cleanJsonObject",contextLines:8}},{label:"symbols outline (unknown/large file)",query:{owner:"bgauryy",repo:"octocode",path:"packages/octocode-tools-core/src/responses.ts",minify:"symbols"}}]:e===D.GITHUB_COMMITS?[{label:"file history (bounded window)",query:{owner:"bgauryy",repo:"octocode",path:"packages/octocode-tools-core/src/responses.ts",since:"6m",itemsPerPage:10}},{label:"compare two refs (base...head)",query:{owner:"bgauryy",repo:"octocode",base:"main",head:"update-tools"}}]:e===D.PACKAGE_SEARCH?[{label:"exact package \u2192 source repo",query:{packageName:"zod"}},{label:"keyword discovery (paged candidates)",query:{packageName:"schema validation",page:1}}]:e===le?[{label:"symbol outline (absolute uri)",query:{uri:"/ABS/packages/octocode-tools-core/src/scheme/pagination.ts",type:"documentSymbols"}},{label:"semantic definition (absolute uri + lineHint)",query:{uri:"/ABS/packages/octocode-tools-core/src/scheme/pagination.ts",type:"definition",symbolName:"buildNextPageContinuation",lineHint:72}}]:[]}function $u(e,t){return`tools ${e} --queries '${JSON.stringify(t)}'`}function Gg(e){let t=Qu(e);if(t.length>0)return t.map(r=>({...r,command:$u(e,r.query)}));let n=Bg(e);return Object.keys(n).length===0?[]:[{label:"schema-derived",query:n,command:$u(e,n)}]}function Hg(e){return Gg(e)[0]?.query??{}}function Bg(e){if(!nt(e))return{};let t=er(e),n=t.filter(i=>!i.name.includes(".")),r=Ug(n),o={};for(let i of r)o[i.name]=Uu(i.name,i.type);return e.startsWith("lsp")&&t.some(i=>i.name==="uri")&&(o.uri??="uri"),e===le&&(o.type??="definition",o.symbolName??="symbolName",o.lineHint??=1),o}var ju=4,$i=new Map([["keywords",10],["keywordsToSearch",11],["query",12],["text",13],["packageName",14],["name",15],["uri",20],["type",21],["owner",30],["repo",31],["extension",32],["filename",33],["language",34],["path",40],["target",50],["from",51],["scope",52],["pattern",60],["rule",61],["op",80],["operation",81],["minify",90]]),zu=new Set(["page","itemsPerPage","limit","matchPage","maxFiles","maxMatchesPerFile","matchContentLength","responseCharLength","responseCharOffset"]);function Ug(e){let t=e.filter(i=>i.required),n=new Map;for(let i of t)n.set(i.name,i);let r=e.filter(i=>!i.required&&Qg(i)).sort($g),o=Math.max(ju,t.length);for(let i of r){if(n.size>=o)break;n.set(i.name,i)}return n.size>0?[...n.values()]:e.filter(i=>!zu.has(i.name)).filter(i=>i.type!=="boolean").slice(0,ju)}function Qg(e){return zu.has(e.name)||e.type==="boolean"?!1:jg(e)?$i.has(e.name):!0}function $g(e,t){let n=$i.get(e.name)??Number.MAX_SAFE_INTEGER,r=$i.get(t.name)??Number.MAX_SAFE_INTEGER;return n!==r?n-r:e.name.localeCompare(t.name)}function jg(e){return e.constraints?.includes("default ")===!0}function zg(e,t,n={}){if(typeof t!="string")return null;let r;try{r=JSON.parse(t)}catch{throw new Fe("Tool input must be valid JSON.")}return Wu(e,r,n)}function Wu(e,t,n={}){let r=Vg(e,t,n),o=nt(e);if(!o)throw new Fe(`Unknown tool: ${e}`);let i=o.inputSchema.safeParse(r);if(!i.success)throw new Fe("Tool input does not match the expected schema.",Wg(i.error));return i.data}function Wg(e){return e.issues.map(t=>`${t.path.length>0?t.path.join("."):"input"}: ${t.message}`)}function Vg(e,t,n){let r=[];if(Array.isArray(t))r=t;else if(rt(t)&&Array.isArray(t.queries))r=t.queries;else if(rt(t))r=[t];else throw new Fe('Tool input must be a JSON object, an array of query objects, or { "queries": [...] }.');if(r.length===0)throw new Fe("At least one query is required.");let o=rt(t)&&Array.isArray(t.queries)?Object.fromEntries(Object.entries(t).filter(([s])=>s!=="queries")):{},i=r.map((s,a)=>Kg(e,a,ty(e,s,a,n),{sourceLabel:n.sourceLabel}));return{...o,queries:i}}function Kg(e,t,n,r){let o={...n},i=Ft(e),s=r.sourceLabel??"direct tool execution",a=Yg(e,s);return(typeof o.id!="string"||o.id.trim().length===0)&&(o.id=`${e}-${t+1}`),(i==="GitHub"||i==="Package")&&(typeof o.mainResearchGoal!="string"||o.mainResearchGoal.trim().length===0)&&(o.mainResearchGoal=a),(typeof o.researchGoal!="string"||o.researchGoal.trim().length===0)&&(o.researchGoal=a),(typeof o.reasoning!="string"||o.reasoning.trim().length===0)&&(o.reasoning=`Executed via ${s} tool command`),o}function Yg(e,t){return`Execute ${e} via ${t}`}function Xg(e,t){let n=e.length+1,r=t.length+1,o=Array.from({length:n*r},()=>0);for(let i=0;i<n;i++)o[i*r]=i;for(let i=0;i<r;i++)o[i]=i;for(let i=1;i<n;i++)for(let s=1;s<r;s++){let a=e[i-1]===t[s-1]?0:1;o[i*r+s]=Math.min(o[(i-1)*r+s]+1,o[i*r+s-1]+1,o[(i-1)*r+s-1]+a)}return o[n*r-1]}function qg(e,t){let n=e.toLowerCase(),r,o=Number.POSITIVE_INFINITY,i,s=Number.POSITIVE_INFINITY;for(let a of t){let c=a.toLowerCase(),u=Xg(n,c);if(c.includes(n)||n.includes(c)){u<o&&(r=a,o=u);continue}if(n.length<3)continue;let l=Math.max(2,Math.floor(a.length/3));u<=l&&u<s&&(i=a,s=u)}return r??i}var Jg=new Set(["none","standard","symbols"]),Zg={ghSearchCode:{keywordsToSearch:"keywords"},ghSearchRepos:{keywordsToSearch:"keywords"},npmSearch:{name:"packageName"},ghViewRepoStructure:{depth:"maxDepth"},lspGetSemantics:{op:"type",line:"lineHint",path:"uri"},localGetFileContent:{filePath:"path"},localSearchCode:{keywordsToSearch:"searchText",keywords:"searchText",language:"langType"},ghGetFileContent:{matchStringContextLines:"contextLines",minified:{field:"minify",map:e=>{if(e===!0)return"standard";if(e===!1)return"none";if(typeof e=="string"&&Jg.has(e))return e}}},ghSearchPullRequests:{merged:{field:"state",map:e=>e===!0?"merged":void 0}},ghSearchCommits:{filePath:"path"},localFindFiles:{maxResults:"limit"}};function ey(e,t){let n=Zg[e];if(!n)return t;let r;for(let[o,i]of Object.entries(n)){if(!(o in t))continue;let s=typeof i=="string"?i:i.field;if(s in t){r??={...t},delete r[o];continue}let a=typeof i=="string"?t[o]:i.map(t[o]);a!==void 0&&(r??={...t},r[s]=a,delete r[o])}return r??t}function ty(e,t,n,r={}){if(!rt(t))throw new Fe("Tool input must be a JSON object or an array of objects.");let o=ey(e,t),i=new Set([...er(e).filter(c=>!c.name.includes(".")).map(c=>c.name),...Zn]),s={},a=[];for(let[c,u]of Object.entries(o)){if(i.has(c)){s[c]=u;continue}a.push(c)}if(a.length>0&&i.size>0&&(r.onUnknownFields?.(a,n),r.rejectUnknownFields===!0)){let c=a.map(u=>{let l=qg(u,i);return l?`'${u}' \u2192 did you mean '${l}'?`:""}).filter(Boolean);throw new Fe(`Unknown field(s): ${a.join(", ")}`,[...c,`Remove unknown field(s) from query ${n+1}: ${a.join(", ")}`,`Run tools ${e} --scheme to see valid fields.`])}return s}function mt(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/\/$/,"")}function nn(e){if(!e.token.expiresAt)return!1;let t=new Date(e.token.expiresAt);if(isNaN(t.getTime()))return!0;let n=new Date;return t.getTime()-n.getTime()<300*1e3}function oo(e){if(!e.token.refreshTokenExpiresAt)return!1;let t=new Date(e.token.refreshTokenExpiresAt);return isNaN(t.getTime())?!0:new Date>=t}var tr=new Map,ny=300*1e3;function ry(e){let t=mt(e),n=tr.get(t);return!n||Date.now()-n.cachedAt>=ny?!1:n.credentials?!nn(n.credentials):!0}function ji(e){e?tr.delete(mt(e)):tr.clear()}function Vu(e){let t=mt(e);if(ry(t))return tr.get(t).credentials}function Ku(e,t){let n=mt(e);tr.set(n,{credentials:t,cachedAt:Date.now()})}import{existsSync as qu,readFileSync as Ju,writeFileSync as Zu,unlinkSync as i_,statSync as dy,chmodSync as py}from"node:fs";import{createCipheriv as my,createDecipheriv as fy,randomBytes as el}from"node:crypto";import{existsSync as oy,mkdirSync as iy}from"node:fs";import{join as He}from"node:path";import{getOctocodeHome as sy}from"@octocodeai/config";var ay=448;function cy(){return sy(process.env)}function rn(){return ke}var ke=cy(),ot={home:ke,config:He(ke,".octocoderc"),credentials:He(ke,"credentials.json"),key:He(ke,".key"),session:He(ke,"session.json"),stats:He(ke,"stats.json"),tmp:He(ke,"tmp"),clone:He(ke,"tmp","clone"),tree:He(ke,"tmp","tree"),repos:He(ke,"tmp","clone"),cliConfig:He(ke,"config.json"),lspConfig:He(ke,"lsp-servers.json")};function Yu(){oy(ot.home)||iy(ot.home,{recursive:!0,mode:ay})}import{z as ge}from"zod";var uy=ge.object({token:ge.string(),tokenType:ge.literal("oauth"),scopes:ge.array(ge.string()).optional(),refreshToken:ge.string().optional(),expiresAt:ge.string().optional(),refreshTokenExpiresAt:ge.string().optional()}),ly=ge.object({hostname:ge.string(),username:ge.string(),token:uy,gitProtocol:ge.enum(["ssh","https"]),createdAt:ge.string(),updatedAt:ge.string()}),Xu=ge.object({version:ge.number(),credentials:ge.record(ge.string(),ly)});var tl=ot.home,nr=ot.credentials,vt=ot.key,nl="aes-256-gcm",hy=16;function Dt(){Yu()}function rl(){if(Dt(),qu(vt))return dy(vt).mode&511&63&&py(vt,384),Buffer.from(Ju(vt,"utf8"),"hex");let e=el(32);return Zu(vt,e.toString("hex"),{mode:384}),e}function zi(e){let t=rl(),n=el(hy),r=my(nl,t,n),o=r.update(e,"utf8","hex");o+=r.final("hex");let i=r.getAuthTag();return`${n.toString("hex")}:${i.toString("hex")}:${o}`}function Wi(e){let t=rl(),[n,r,o]=e.split(":");if(!n||!r||!o)throw new Error("Invalid encrypted data format");let i=Buffer.from(n,"hex"),s=Buffer.from(r,"hex"),a=fy(nl,t,i);a.setAuthTag(s);let c=a.update(o,"hex","utf8");return c+=a.final("utf8"),c}function io(){if(Dt(),!qu(nr))return{version:1,credentials:{}};try{let e=Ju(nr,"utf8"),t=Wi(e),n=JSON.parse(t),r=Xu.safeParse(n);return r.success?r.data:{version:1,credentials:{}}}catch{return{version:1,credentials:{}}}}function ol(e){Dt();let t=zi(JSON.stringify(e,null,2));Zu(nr,t,{mode:384})}import{refreshToken as gy}from"@octokit/oauth-methods";import{request as yy}from"@octokit/request";var rr="178c6fc778ccc68e1d6a",on="github.com";function Ry(e){return e.replace(/\b(ghp_|gho_|ghu_|ghs_|ghr_)[a-zA-Z0-9]{36,}\b/g,"***MASKED***").replace(/\b[a-zA-Z0-9]{40,}\b/g,"***MASKED***")}function Sy(e){return e==="github.com"||e===on?"https://api.github.com":`https://${e}/api/v3`}async function il(e,t=on,n=rr){let r=await e.getCredentials(t);if(!r)return{success:!1,error:`Not logged in to ${t}`};if(!r.token.refreshToken)return{success:!1,error:"Token does not support refresh (OAuth App tokens do not expire)"};if(oo(r))return{success:!1,error:"Refresh token has expired. Please login again."};try{let o=await gy({clientType:"github-app",clientId:n,clientSecret:"",refreshToken:r.token.refreshToken,request:yy.defaults({baseUrl:Sy(t)})}),i={token:o.authentication.token,tokenType:"oauth",refreshToken:o.authentication.refreshToken,expiresAt:o.authentication.expiresAt,refreshTokenExpiresAt:o.authentication.refreshTokenExpiresAt};return await e.updateToken(t,i),{success:!0,username:r.username,hostname:t}}catch(o){return{success:!1,error:o instanceof Error?Ry(o.message):"Token refresh failed"}}}async function sl(e,t=on,n=rr){let r=await e.getCredentials(t);if(!r||!r.token)return{token:null,source:"none"};if(!nn(r))return{token:r.token.token,source:"stored",username:r.username};if(r.token.refreshToken){let o=await il(e,t,n);if(o.success){let i=await e.getCredentials(t);if(i?.token.token)return{token:i.token.token,source:"refreshed",username:i.username}}return{token:null,source:"none",refreshError:o.error}}return{token:null,source:"none",refreshError:"Token expired and no refresh token available"}}import{resolveEnvToken as Py}from"@octocodeai/config";import{execFile as by}from"child_process";var Cy=["/opt/homebrew/bin","/usr/local/bin","/home/linuxbrew/.linuxbrew/bin"];function Vi(e){return new Promise(t=>{let n=["auth","token"];e&&n.push("--hostname",e);let r=process.env.PATH??"",o=new Set(r.split(":")),i=Cy.filter(a=>!o.has(a)),s=i.length?`${i.join(":")}:${r}`:r;by("gh",n,{encoding:"utf8",timeout:5e3,env:{...process.env,PATH:s}},(a,c)=>{if(a||!c){t(null);return}t(c.trim()||null)})})}var Ki=null;function al(e){Ki=e}function xy(){if(!Ki)throw new Error("Token resolution not initialized. Call initTokenResolution() first.");return Ki}async function so(e){let t=e?.hostname??on,n=e?.clientId??rr,r=e?.getGhCliToken??Vi,o=Py();if(o)return{token:o.token,source:o.source,wasRefreshed:!1};let i=await xy().getTokenWithRefresh(t,n);if(i.token)return{token:i.token,source:"octocode-storage",wasRefreshed:i.source==="refreshed",username:i.username};try{let s=await Promise.resolve(r(t));if(s?.trim())return{token:s.trim(),source:"gh-cli",wasRefreshed:!1}}catch(s){process.stderr.write(`[octocode] gh auth token failed: ${s instanceof Error?s.message:String(s)}
9
+ `)}return null}async function cl(e){let t=mt(e.hostname),n={...e,hostname:t,updatedAt:new Date().toISOString()};try{let r=io();return r.credentials[t]=n,ol(r),ji(t),{success:!0}}catch{throw new Error("Failed to store credentials")}}async function Yi(e="github.com",t){let n=mt(e);if(!t?.bypassCache){let i=Vu(n);if(i!==void 0)return i}let o=io().credentials[n]||null;return Ku(n,o),o}async function ul(e,t){let n=await Yi(e);return n?(n.token=t,n.updatedAt=new Date().toISOString(),await cl(n),!0):!1}async function ll(e,t){return sl({getCredentials:Yi,updateToken:ul},e,t)}al({getTokenWithRefresh:ll});import ao from"node:os";import W_ from"node:path";var Ly=ao.platform()==="win32",Ay=ao.platform()==="darwin",_y=ao.platform()==="linux",ky=ao.homedir();import{randomUUID as bk}from"node:crypto";import{existsSync as hl,readFileSync as gl,writeFileSync as Dy,unlinkSync as ok,renameSync as My}from"node:fs";import{isStatsEnabled as yl}from"@octocodeai/config";import{z}from"zod";var Iy=z.object({rawChars:z.number(),responseChars:z.number(),savedChars:z.number(),calls:z.number()}),Oy=z.object({hits:z.record(z.string(),z.number()).default({}),rateLimits:z.number().default(0)}),co=z.record(z.string(),z.number()).default({}),Fy=z.object({toolCalls:z.number(),errors:z.number(),rateLimits:z.number(),rateLimitsByProvider:co,rawChars:z.number(),responseChars:z.number(),savedChars:z.number(),charSavingsCalls:z.number(),githubCacheHits:z.number(),githubCacheRateLimits:z.number(),packageRegistryFailures:z.number().default(0),packageRegistryFailuresByRegistry:co}),uo=z.object({toolCalls:z.number(),errors:z.number(),rateLimits:z.number(),rateLimitsByProvider:co,charsSavedByTool:z.record(z.string(),Iy).default({}),githubCacheHits:Oy.default({hits:{},rateLimits:0}),packageRegistryFailures:co,totalUsage:Fy.optional()}),dl=z.object({version:z.literal(1),sessionId:z.string(),createdAt:z.string(),lastActiveAt:z.string(),stats:uo.optional()}),pl=z.object({version:z.literal(1),stats:uo});function ml(e){return Object.values(e).reduce((t,n)=>t+n,0)}function vy(e){let t=e.charsSavedByTool??{},n=e.githubCacheHits??{hits:{},rateLimits:0},r=e.rateLimitsByProvider??{},o=e.packageRegistryFailures??{},i=Object.values(t).reduce((s,a)=>({rawChars:s.rawChars+a.rawChars,responseChars:s.responseChars+a.responseChars,savedChars:s.savedChars+a.savedChars,charSavingsCalls:s.charSavingsCalls+a.calls}),{rawChars:0,responseChars:0,savedChars:0,charSavingsCalls:0});return{toolCalls:e.toolCalls,errors:e.errors,rateLimits:e.rateLimits,rateLimitsByProvider:r,...i,githubCacheHits:ml(n.hits),githubCacheRateLimits:n.rateLimits,packageRegistryFailures:ml(o),packageRegistryFailuresByRegistry:o}}function ft(e){let t={...e,rateLimitsByProvider:e.rateLimitsByProvider??{},charsSavedByTool:e.charsSavedByTool??{},githubCacheHits:e.githubCacheHits??{hits:{},rateLimits:0},packageRegistryFailures:e.packageRegistryFailures??{}};return{...t,totalUsage:vy(t)}}function sn(){return ft({toolCalls:0,errors:0,rateLimits:0,rateLimitsByProvider:{},charsSavedByTool:{},githubCacheHits:{hits:{},rateLimits:0},packageRegistryFailures:{}})}var or=ot.session,ir=ot.stats;function fl(e,t){let n=`${e}.tmp`;Dy(n,JSON.stringify(t,null,2),{mode:384}),My(n,e)}function Ny(e){let t=JSON.parse(e),n=pl.safeParse(t);if(n.success)return ft(n.data.stats);let r=uo.safeParse(t);return r.success?ft(r.data):null}function Gy(){if(!hl(ir))return sn();try{let e=gl(ir,"utf8");return Ny(e)??sn()}catch{return sn()}}function Xi(e){Dt(),yl()&&fl(ir,{version:e.version,stats:ft(e.stats)});let{stats:t,...n}=e;fl(or,n)}function Rl(){if(!hl(or))return null;try{let e=gl(or,"utf8"),t=JSON.parse(e),n=dl.safeParse(t);return n.success?{...n.data,stats:yl()?Gy():sn()}:null}catch{return null}}var Hy=6e4,ht=null,sr=!1,qi=null,Sl=!1,bl=null,Cl=null,Pl=null,Ji=!1;function By(){Sl||(Sl=!0,bl=()=>{lo()},Cl=()=>{lo()},Pl=()=>{lo()},process.on("exit",bl),process.on("SIGINT",Cl),process.on("SIGTERM",Pl))}function Uy(){qi||(qi=setInterval(()=>{sr&&ht&&(Xi(ht),sr=!1)},Hy),qi.unref())}function xl(){if(ht)return ht;let e=Rl();return e&&(ht=e),e}function wl(e){ht=e,sr=!0,By(),Uy()}function lo(){if(!Ji&&sr&&ht){Ji=!0;try{Xi(ht),sr=!1}catch{}finally{Ji=!1}}}function Qy(e){return ft(e)}function $y(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t)){let i=n[r]??{rawChars:0,responseChars:0,savedChars:0,calls:0};n[r]={rawChars:i.rawChars+o.rawChars,responseChars:i.responseChars+o.responseChars,savedChars:i.savedChars+o.savedChars,calls:i.calls+o.calls}}return n}function Tl(e,t){if(!t)return e;let n={...e};for(let[r,o]of Object.entries(t))n[r]=(n[r]??0)+o;return n}function jy(e,t){if(!t)return e;let n={...e.hits};for(let[r,o]of Object.entries(t.hits??{}))n[r]=(n[r]??0)+o;return{hits:n,rateLimits:e.rateLimits+(t.rateLimits??0)}}function gt(e){let t=xl();if(!t)return{success:!1,session:null};let n=Qy(t.stats),r=ft({toolCalls:n.toolCalls+(e.toolCalls??0),errors:n.errors+(e.errors??0),rateLimits:n.rateLimits+(e.rateLimits??0),rateLimitsByProvider:Tl(n.rateLimitsByProvider,e.rateLimitsByProvider),charsSavedByTool:$y(n.charsSavedByTool,e.charsSavedByTool),githubCacheHits:jy(n.githubCacheHits,e.githubCacheHits),packageRegistryFailures:Tl(n.packageRegistryFailures,e.packageRegistryFailures)}),o={...t,lastActiveAt:new Date().toISOString(),stats:r};return wl(o),{success:!0,session:o}}function Zi(e=1){return gt({rateLimits:e})}function es(e,t,n){let r=Number.isFinite(t)?Math.max(0,t):0,o=Number.isFinite(n)?Math.max(0,n):0;return gt({charsSavedByTool:{[e]:{rawChars:r,responseChars:o,savedChars:Math.max(0,r-o),calls:1}}})}function ts(e,t=1){return gt({githubCacheHits:{hits:{[e]:t},rateLimits:0}})}function ns(e=1){return gt({githubCacheHits:{hits:{},rateLimits:e}})}import{z as ue}from"zod";var zy=ue.looseObject({$schema:ue.string().optional(),version:ue.number().int().optional(),github:ue.record(ue.string(),ue.unknown()).optional(),local:ue.record(ue.string(),ue.unknown()).optional(),tools:ue.record(ue.string(),ue.unknown()).optional(),network:ue.record(ue.string(),ue.unknown()).optional(),lsp:ue.record(ue.string(),ue.unknown()).optional(),output:ue.record(ue.string(),ue.unknown()).optional()});import{existsSync as Wy,readdirSync as Vy,lstatSync as Ky}from"node:fs";import{join as Yy}from"node:path";function po(e){if(!Wy(e))return 0;let t=0,n=[e];for(;n.length>0;){let r=n.pop(),o;try{o=Vy(r)}catch{continue}for(let i of o){let s=Yy(r,i);try{let a=Ky(s);if(a.isSymbolicLink())continue;a.isDirectory()?n.push(s):a.isFile()&&(t+=a.size)}catch{}}}return t}import{getConfigSync as El,invalidateConfigCache as uI}from"@octocodeai/config";var Mt="18.0.1";var rs={NOT_INITIALIZED:{code:"CONFIG_NOT_INITIALIZED",message:"Configuration not initialized. Call initialize() and await its completion before calling getServerConfig()."}},ar={PROMISES_NOT_ARRAY:{code:"VALIDATION_PROMISES_NOT_ARRAY",message:"promises must be an array"},TIMEOUT_NOT_POSITIVE:{code:"VALIDATION_TIMEOUT_NOT_POSITIVE",message:"timeout must be positive"},CONCURRENCY_NOT_POSITIVE:{code:"VALIDATION_CONCURRENCY_NOT_POSITIVE",message:"concurrency must be positive"}},cr={FETCH_NOT_AVAILABLE:{code:"FETCH_NOT_AVAILABLE",message:"Global fetch is not available in this environment."},FETCH_FAILED_AFTER_RETRIES:{code:"FETCH_FAILED_AFTER_RETRIES",message:(e,t)=>`Failed to fetch after ${e} attempts: ${t}`},FETCH_HTTP_ERROR:{code:"FETCH_HTTP_ERROR",message:(e,t)=>`Failed to fetch (${e} ${t})`}},qy={INVALID_FORMAT:{code:"TOOL_METADATA_INVALID_FORMAT",message:"Invalid tool metadata format from remote source."},INVALID_API_RESPONSE:{code:"TOOL_METADATA_INVALID_API_RESPONSE",message:"Invalid API response structure"}},yt={PATH_IS_DIRECTORY:{code:"FILE_PATH_IS_DIRECTORY",message:e=>`Path is a directory. Use ${e} to list directory contents`},FILE_TOO_LARGE:{code:"FILE_TOO_LARGE",message:(e,t,n)=>`File too large (${e}KB > ${t}KB). Use ${n} to search within the file or use startLine/endLine parameters to get specific sections`},FILE_EMPTY:{code:"FILE_EMPTY",message:"File is empty - no content to display"},BINARY_FILE:{code:"FILE_BINARY",message:"Binary file detected. Cannot display as text - download directly from GitHub"},DECODE_FAILED:{code:"FILE_DECODE_FAILED",message:"Failed to decode file. Encoding may not be supported (expected UTF-8)"},UNSUPPORTED_TYPE:{code:"FILE_UNSUPPORTED_TYPE",message:e=>`Unsupported file type: ${e}`}},Rt={NOT_FOUND:{code:"REPO_NOT_FOUND",message:(e,t,n)=>`Repository "${e}/${t}" not found or not accessible: ${n}`},PATH_NOT_FOUND:{code:"REPO_PATH_NOT_FOUND",message:(e,t,n,r)=>`Path "${e}" not found in repository "${t}/${n}" on branch "${r}"`},PATH_NOT_FOUND_ANY_BRANCH:{code:"REPO_PATH_NOT_FOUND_ANY_BRANCH",message:(e,t,n)=>`Path "${e}" not found in repository "${t}/${n}" on any common branch`},ACCESS_FAILED:{code:"REPO_ACCESS_FAILED",message:(e,t,n)=>`Failed to access repository "${e}/${t}": ${n}`},STRUCTURE_EXPLORATION_FAILED:{code:"REPO_STRUCTURE_EXPLORATION_FAILED",message:"Failed to explore repository structure"}},Ce={QUERY_EMPTY:{code:"SEARCH_QUERY_EMPTY",message:"Search query cannot be empty"},NO_VALID_PARAMETERS:{code:"SEARCH_NO_VALID_PARAMETERS",message:"No valid search parameters provided"},PR_REQUIRED_PARAMS:{code:"SEARCH_PR_REQUIRED_PARAMS",message:"Owner, repo, and prNumber are required parameters"},PR_SINGLE_VALUES:{code:"SEARCH_PR_SINGLE_VALUES",message:"Owner and repo must be single values"},PULL_REQUEST_SEARCH_FAILED:{code:"SEARCH_PR_SEARCH_FAILED",message:e=>`Pull request search failed: ${e}`},PULL_REQUEST_LIST_FAILED:{code:"SEARCH_PR_LIST_FAILED",message:e=>`Pull request list failed: ${e}`},PULL_REQUEST_FETCH_FAILED:{code:"SEARCH_PR_FETCH_FAILED",message:(e,t)=>`Failed to fetch pull request #${e}: ${t}`}},Jy={NO_TOOLS_REGISTERED:{code:"STARTUP_NO_TOOLS_REGISTERED",message:"No tools were successfully registered"},UNCAUGHT_EXCEPTION:{code:"STARTUP_UNCAUGHT_EXCEPTION",message:e=>`Uncaught exception: ${e}`},UNHANDLED_REJECTION:{code:"STARTUP_UNHANDLED_REJECTION",message:e=>`Unhandled rejection: ${e}`},STARTUP_FAILED:{code:"STARTUP_FAILED",message:e=>`Startup failed: ${e}`}},ur={TIMEOUT:{code:"PROMISE_TIMEOUT",message:(e,t)=>`Query ${e+1} timed out after ${t}ms \u2014 retry it alone, with tighter caps (maxFiles/maxMatchesPerFile/itemsPerPage) if it was large`},NOT_A_FUNCTION:{code:"PROMISE_NOT_A_FUNCTION",message:e=>`Promise function at index ${e} is not a function`},FUNCTION_UNDEFINED:{code:"PROMISE_FUNCTION_UNDEFINED",message:"Promise function is undefined"}},Zy={EXECUTION_FAILED:{code:"TOOL_EXECUTION_FAILED",message:(e,t)=>`Tool ${e} execution failed: ${t}`},SECURITY_VALIDATION_FAILED:{code:"TOOL_SECURITY_VALIDATION_FAILED",message:(e,t)=>`Security validation failed for ${e}: ${t}`}},iI={...rs,...ar,...cr,...qy,...yt,...Rt,...Ce,...Jy,...ur,...Zy};import{maskSensitiveData as eR}from"@octocodeai/octocode-engine/mask";var dr=null,lr=null,tR=so;var nR=new Set(["env:OCTOCODE_TOKEN","env:GH_TOKEN","env:GITHUB_TOKEN","env:GITHUB_PERSONAL_ACCESS_TOKEN","octocode-storage","gh-cli","none"]);async function Ll(){try{let e=await tR({hostname:"github.com"});if(e?.token){let t=e.source??"none";return{token:e.token,source:nR.has(t)?t:"none"}}return{token:null,source:"none"}}catch{return{token:null,source:"none"}}}async function Al(){if(dr!==null)return;if(lr!==null)return lr;let e=(async()=>{let t=El(),n=await Ll();dr={version:Mt,githubApiUrl:t.github.apiUrl,toolsToRun:t.tools.enabled??void 0,enableTools:t.tools.enableAdditional??void 0,disableTools:t.tools.disabled??void 0,timeout:t.network.timeout,maxRetries:t.network.maxRetries,enableLocal:t.local.enabled,enableClone:t.local.enableClone,outputFormat:t.output.format,tokenSource:n.source}})();lr=e;try{await e}catch(t){throw lr===e&&(dr=null,lr=null),t}}function mo(){if(!dr){let e=eR(rs.NOT_INITIALIZED.message);throw new Error(e)}return dr}async function os(){return(await Ll()).token}function _l(){let e=mo();return e.enableLocal&&e.enableClone}function is(){return"github"}function ss(){let e=El().github.apiUrl;return{provider:"github",baseUrl:e!=="https://api.github.com"?e:void 0}}import{ContentSanitizer as BR}from"@octocodeai/octocode-engine/contentSanitizer";import{createRequire as rR}from"node:module";var oR=rR(import.meta.url),kl="@octocodeai/octocode-engine",iR=()=>globalThis.__OCTOCODE_ENGINE_BINDING__??oR(kl),fo,sR=iR,as=class extends Error{constructor(n){super(`Failed to load native dependency ${kl}`);this.cause=n;this.name="ContextUtilsLoadError"}cause};function J(){if(fo)return fo;try{return fo=sR(),fo}catch(e){throw new as(e)}}var F={applyContentViewMinification(e,t){return J().applyContentViewMinification(e,t)},applyMinification(e,t){return J().applyMinification(e,t)},minifyContent(e,t){return J().minifyContent(e,t)},minifyContentSync(e,t){return J().minifyContentSync(e,t)},minifyContentResult(e,t){return J().minifyContentResult(e,t)},minifyMarkdownCore(e){return J().minifyMarkdownCore(e)},extractSignatures(e,t){return J().extractSignatures(e,t)},extractJsSymbols(e,t){return J().extractJsSymbols(e,t)},findInFileReferences(e,t,n,r){return J().findInFileReferences(e,t,n,r)},extractGraphFacts(e,t){return J().extractGraphFacts(e,t)},getSupportedJsTsExtensions(){return J().getSupportedJsTsExtensions()},getSupportedGraphFactExtensions(){return J().getSupportedGraphFactExtensions()},getGraphFactCapabilities(){return J().getGraphFactCapabilities()},structuralSearch(e,t,n,r){return J().structuralSearch(e,t,n,r)},structuralSearchFiles(e){return J().structuralSearchFiles(e)},structuralSearchFilesDetailed(e){return J().structuralSearchFilesDetailed(e)},getSupportedStructuralExtensions(){return J().getSupportedStructuralExtensions()},validateRipgrepPattern(e,t,n){return J().validateRipgrepPattern(e,t,n)},getSemanticBoundaryOffsets(e,t){return J().getSemanticBoundaryOffsets(e,t)},jsonToYamlString(e,t){return J().jsonToYamlString(e,t)},parseRipgrepJson(e,t){return J().parseRipgrepJson(e,t)},searchRipgrep(e){return J().searchRipgrep(e)},queryFileSystem(e){return J().queryFileSystem(e)},extractMatchingLines(e,t,n){return J().extractMatchingLines(e,t,n)},filterPatch(e,t){return J().filterPatch(e,t)},computeLineDiff(e,t){return J().computeLineDiff(e,t)},charToByteOffset(e,t){return J().charToByteOffset(e,t)},byteToCharOffset(e,t){return J().byteToCharOffset(e,t)},byteSliceContent(e,t,n){return J().byteSliceContent(e,t,n)},sliceContent(e,t,n,r){return J().sliceContent(e,t,n,r)},get SIGNATURES_ONLY_HINT(){return J().SIGNATURES_ONLY_HINT}};import{Octokit as aR}from"octokit";import{throttling as cR}from"@octokit/plugin-throttling";import{createHash as uR}from"crypto";function St(e){(e.provider?gt({rateLimits:1,rateLimitsByProvider:{[e.provider]:1}}):Zi(1)).session&&e.provider==="github"&&ns(1)}function Il(e){gt({packageRegistryFailures:{[e]:1}})}function Ml(e){return uR("sha256").update(e).digest("hex").substring(0,16)}async function pe(e){let t=e?.token??await os(),n=t?Ml(t):"anon",r=mo().githubApiUrl||"https://api.github.com";try{let o=new URL(r).host;if(o&&o!=="api.github.com")return`${n}@${o}`}catch{}return n}var lR=aR.plugin(cR),dR=300*1e3,cs=50,pR=60*1e3;function Nl(e){return Date.now()-e.createdAt>dR}var it=new Map,pr=null;function Gl(){for(let[e,t]of it.entries())Nl(t)&&it.delete(e);if(it.size>cs){let e=it.size-cs,t=0;for(let[n]of it){if(t>=e)break;it.delete(n),t++}}}function mR(){pr||(pr=setInterval(Gl,pR),typeof pr=="object"&&"unref"in pr&&pr.unref())}var Ol=3,Fl=60;function vl(e,t,n){St({limit_type:e,retry_after_seconds:t,api_method:n.method,api_url:n.url,provider:"github"})}var fR=()=>({onRateLimit:(e,t,n,r)=>(vl("primary",e,t),r<Ol&&e<Fl),onSecondaryRateLimit:(e,t,n,r)=>(vl("secondary",e,t),r<Ol&&e<Fl)});function hR(e){let t=mo(),n=t.githubApiUrl,r={debug:()=>{},info:()=>{},warn:()=>{},error:(...i)=>console.error(...i)},o={userAgent:`octocode-mcp/${Mt}`,baseUrl:n,request:{timeout:t.timeout||3e4,log:r},throttle:fR(),log:r,...e&&{auth:e}};return new lR(o)}async function U(e){mR();let t=e?.token??await os(),n=t?Ml(t):"ANONYMOUS",r=it.get(n);if(r&&!Nl(r))return r.client;it.size>=cs&&Gl();let o=hR(t??void 0);return it.set(n,{client:o,createdAt:Date.now()}),o}var gR=200,mr=new Map;async function Pe(e,t,n){let r=`${e}/${t}`,o=mr.get(r);if(o)return o;let i=await U(n);try{let{data:a}=await i.rest.repos.get({owner:e,repo:t}),c=a.default_branch;return Dl(r,c),c}catch{}let s=["main","master"];for(let a of s)try{return await i.rest.repos.getBranch({owner:e,repo:t,branch:a}),Dl(r,a),a}catch{}throw new Error(`Could not determine default branch for ${e}/${t}. The repository may not exist, require authentication, or be inaccessible.`)}function Dl(e,t){if(mr.size>=gR){let n=mr.keys().next().value;n!==void 0&&mr.delete(n)}mr.set(e,t)}import{RequestError as Bl}from"octokit";var j={AUTH_REQUIRED:"AUTH_REQUIRED",RATE_LIMIT_PRIMARY:"RATE_LIMIT_PRIMARY",RATE_LIMIT_SECONDARY:"RATE_LIMIT_SECONDARY",FORBIDDEN_PERMISSIONS:"FORBIDDEN_PERMISSIONS",NOT_FOUND:"NOT_FOUND",INVALID_REQUEST:"INVALID_REQUEST",SERVER_UNAVAILABLE:"SERVER_UNAVAILABLE",NETWORK_CONNECTION_FAILED:"NETWORK_CONNECTION_FAILED",REQUEST_TIMEOUT:"REQUEST_TIMEOUT",UNKNOWN:"UNKNOWN"},me={[j.AUTH_REQUIRED]:{message:"GitHub authentication required",suggestion:"TELL THE USER: Refresh your GitHub token! Run 'gh auth login' OR 'gh auth refresh' OR set a new GITHUB_TOKEN/GH_TOKEN environment variable",explanation:"API request requires authentication. GitHub APIs have different rate limits for authenticated (5000/hour) vs unauthenticated (60/hour) requests."},[j.RATE_LIMIT_PRIMARY]:{message:"GitHub API rate limit exceeded",messageWithTime:(e,t)=>`GitHub API rate limit exceeded. Resets at ${e.toISOString()} (in ${t} seconds)`,messageWithoutTime:"GitHub API rate limit exceeded. Reset time unavailable - check GitHub status or try again later",suggestion:"Set GITHUB_TOKEN for higher rate limits (5000/hour vs 60/hour)",explanation:"Primary rate limit tracks total API calls per hour. Authenticated users get 5000 requests/hour, unauthenticated get 60 requests/hour."},[j.RATE_LIMIT_SECONDARY]:{message:e=>`GitHub secondary rate limit triggered. Retry after ${e} seconds`,suggestion:"Reduce request frequency to avoid abuse detection",explanation:"Secondary rate limits prevent API abuse by limiting request frequency. Triggered by making too many requests too quickly, regardless of remaining quota.",fallbackRetryAfter:60},[j.FORBIDDEN_PERMISSIONS]:{message:"Access forbidden - insufficient permissions",suggestion:"Check repository permissions or authentication",suggestionWithScopes:e=>`Missing required scopes: ${e.join(", ")}. Run: gh auth refresh -s ${e.join(" -s ")}`,fallbackSuggestion:"Token may not have sufficient permissions for this operation",explanation:"GitHub tokens require specific OAuth scopes for different operations. Common scopes: repo (full repository access), read:org (organization access), gist (gist access)."},[j.NOT_FOUND]:{message:"Repository, resource, or path not found",explanation:"Resource not found or not accessible. Could be: incorrect path, deleted resource, private repository without access, wrong branch name."},[j.INVALID_REQUEST]:{message:"Invalid search query or request parameters",suggestion:"Check search syntax and parameter values",explanation:"Request was well-formed but contains invalid parameters. Common causes: invalid search syntax, parameters out of range, invalid filter combinations."},[j.SERVER_UNAVAILABLE]:{message:"GitHub API temporarily unavailable",suggestion:"Retry the request after a short delay",explanation:"GitHub servers are temporarily unavailable. Usually resolves quickly. Check https://www.githubstatus.com for service status."},[j.NETWORK_CONNECTION_FAILED]:{message:"Network connection failed",suggestion:"Check internet connection and GitHub API status",explanation:"Cannot establish connection to GitHub API. Check internet connectivity, DNS settings, and firewall/proxy configuration."},[j.REQUEST_TIMEOUT]:{message:"Request timeout",suggestion:"Retry the request or check network connectivity",explanation:"Request exceeded timeout limit. Could be slow network, large response size, or GitHub server delay."},[j.UNKNOWN]:{message:"Unknown error occurred",explanation:"An unexpected error occurred that does not match known error patterns."}},Hl={401:j.AUTH_REQUIRED,403:j.FORBIDDEN_PERMISSIONS,404:j.NOT_FOUND,422:j.INVALID_REQUEST,502:j.SERVER_UNAVAILABLE,503:j.SERVER_UNAVAILABLE,504:j.SERVER_UNAVAILABLE},us={CONNECTION_FAILED:["ENOTFOUND","ECONNREFUSED"],TIMEOUT:["timeout"]},ls={SECONDARY:/\bsecondary rate\b/i,GRAPHQL_TYPE:"RATE_LIMITED"},ho={RESET_BUFFER_SECONDS:1,SECONDARY_FALLBACK_SECONDS:60};var yR=["cannot be searched","do not exist","does not exist","could not be found","cannot be found"];function We(e){if(!(e instanceof Bl)||e.status!==422)return!1;let t=e.response?.data?.errors;return!Array.isArray(t)||t.length===0?!1:t.some(n=>{let r=typeof n?.message=="string"?n.message.toLowerCase():"";return yR.some(o=>r.includes(o))})}function W(e){return e instanceof Bl?RR(e):e instanceof Error?ER(e):{error:typeof e=="string"?e:me[j.UNKNOWN].message,type:"unknown"}}function RR(e){let{status:t,message:n,response:r}=e;if(t===403)return bR(n,r);if(t===429)return SR(n,r);let o=Hl[t];return o?TR(o,t):an(j.UNKNOWN,{error:n||me[j.UNKNOWN].message,status:t})}function ds(e,t){let n=e?.[t],r=n===void 0?NaN:parseInt(String(n),10);return isNaN(r)?void 0:r}function SR(e,t){let n=t?.headers,r=ds(n,"retry-after"),o=ds(n,"x-ratelimit-reset"),i=ds(n,"x-ratelimit-remaining")??0,s=o?new Date(o*1e3):null,a=r??(s?Math.max(Math.ceil((s.getTime()-Date.now())/1e3)+ho.RESET_BUFFER_SECONDS,0):void 0);return St({limit_type:"primary",retry_after_seconds:a,rate_limit_remaining:i,rate_limit_reset_ms:s?s.getTime():void 0,provider:"github"}),an(j.RATE_LIMIT_PRIMARY,{error:e||me[j.RATE_LIMIT_PRIMARY].messageWithoutTime,status:429,rateLimitRemaining:i,rateLimitReset:s?s.getTime():void 0,retryAfter:a,scopesSuggestion:me[j.RATE_LIMIT_PRIMARY].suggestion})}function bR(e,t){let n=t?.headers;if(ls.SECONDARY.test(e))return CR(n);let r=n?.["x-ratelimit-remaining"],o=wR(t);return r!==void 0&&String(r)==="0"||o?PR(n):xR(n)}function CR(e){let t=Number(e?.["retry-after"]),n=isNaN(t)?ho.SECONDARY_FALLBACK_SECONDS:t;return St({limit_type:"secondary",retry_after_seconds:n,provider:"github"}),an(j.RATE_LIMIT_SECONDARY,{error:me[j.RATE_LIMIT_SECONDARY].message(n),status:403,rateLimitRemaining:0,retryAfter:n,scopesSuggestion:me[j.RATE_LIMIT_SECONDARY].suggestion})}function PR(e){let t=e?.["x-ratelimit-reset"],n=t?parseInt(String(t),10):NaN,r=isNaN(n)?null:new Date(n*1e3),o=r?Math.max(Math.ceil((r.getTime()-Date.now())/1e3)+ho.RESET_BUFFER_SECONDS,0):void 0,i=r?me[j.RATE_LIMIT_PRIMARY].messageWithTime(r,o):me[j.RATE_LIMIT_PRIMARY].messageWithoutTime;return St({limit_type:"primary",retry_after_seconds:o,rate_limit_remaining:0,rate_limit_reset_ms:r?r.getTime():void 0,provider:"github"}),an(j.RATE_LIMIT_PRIMARY,{error:i,status:403,rateLimitRemaining:0,rateLimitReset:r?r.getTime():void 0,retryAfter:o,scopesSuggestion:me[j.RATE_LIMIT_PRIMARY].suggestion})}function xR(e){let t=e?.["x-accepted-oauth-scopes"],n=e?.["x-oauth-scopes"],r=me[j.FORBIDDEN_PERMISSIONS].suggestion;return t&&n&&(r=LR(String(t),String(n))),an(j.FORBIDDEN_PERMISSIONS,{error:me[j.FORBIDDEN_PERMISSIONS].message,status:403,scopesSuggestion:r})}function wR(e){return e?.data?.errors?.some(n=>n.type===ls.GRAPHQL_TYPE)??!1}function TR(e,t){let n=me[e];return an(e,{error:n.message,status:t,..."suggestion"in n&&{scopesSuggestion:n.suggestion}})}function ER(e){return us.CONNECTION_FAILED.some(t=>e.message.includes(t))?{error:me[j.NETWORK_CONNECTION_FAILED].message,type:"network",scopesSuggestion:me[j.NETWORK_CONNECTION_FAILED].suggestion}:us.TIMEOUT.some(t=>e.message.includes(t))?{error:me[j.REQUEST_TIMEOUT].message,type:"network",scopesSuggestion:me[j.REQUEST_TIMEOUT].suggestion}:{error:e.message,type:"unknown"}}function an(e,t){return{type:"http",...t}}function LR(e,t){let n=e.split(",").map(i=>i.trim()).filter(Boolean),r=t.split(",").map(i=>i.trim()).filter(Boolean),o=n.filter(i=>!r.includes(i));return o.length>0?me[j.FORBIDDEN_PERMISSIONS].suggestionWithScopes(o):me[j.FORBIDDEN_PERMISSIONS].fallbackSuggestion}function Ul(e){return`user:${e}`}var AR=/[@/]/,_R=/^[A-Za-z0-9_-]+$/;function ps(e){return e.startsWith('"')||_R.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}var st=class{queryParts=[];addOwnerRepo(t){if(t.owner&&t.repo){let n=Array.isArray(t.owner)?t.owner:[t.owner],r=Array.isArray(t.repo)?t.repo:[t.repo];n.forEach(o=>{r.forEach(i=>{this.queryParts.push(`repo:${o}/${i}`)})})}else t.owner&&(Array.isArray(t.owner)?t.owner:[t.owner]).forEach(r=>{this.queryParts.push(Ul(r))});return this}addDateFilters(t){return Object.entries({created:"created",updated:"updated","author-date":"author-date","committer-date":"committer-date","merged-at":"merged",closed:"closed"}).forEach(([r,o])=>{let i=t[r];i&&this.queryParts.push(`${o}:${i}`)}),this}addArrayFilter(t,n,r=!1){return t&&t!==null&&(Array.isArray(t)?t:[t]).forEach(i=>{let s=r?`"${i}"`:i;this.queryParts.push(`${n}:${s}`)}),this}addBooleanFilter(t,n,r){return t===!0?this.queryParts.push(n):t===!1&&this.queryParts.push(r),this}addSimpleFilter(t,n){return t!=null&&this.queryParts.push(`${n}:${t}`),this}addQuotedFilter(t,n){if(t!=null){let o=AR.test(t)&&!t.startsWith('"')?`"${t}"`:t;this.queryParts.push(`${n}:${o}`)}return this}addEngagementFilters(t){return this.addSimpleFilter(t.comments,"comments"),this.addSimpleFilter(t.reactions,"reactions"),this}addOrganizationFilters(t){return this.addArrayFilter(t.label,"label",!0),t.milestone&&this.queryParts.push(`milestone:"${t.milestone}"`),this}build(){return this.queryParts.join(" ").trim()}};var kR=/(?:^|\/)([^/]+\.[A-Za-z][A-Za-z0-9]{0,9})$/,ms=class extends st{addQueryTerms(t){if(Array.isArray(t.keywords)&&t.keywords.length>0){let n=t.keywords.filter(r=>r&&r.trim());n.length>0&&this.queryParts.push(...n.map(ps))}return this}addSearchFilters(t){let n=t.path,r=t.filename,o=typeof n=="string"&&!r?n.match(kR):null;return o&&(r=o[1],n=n.slice(0,o.index)||void 0),this.addSimpleFilter(r,"filename"),this.addSimpleFilter(t.extension,"extension"),this.addQuotedFilter(n,"path"),t.language&&this.queryParts.push(`language:${t.language}`),this}addMatchFilters(t){return t.match&&(Array.isArray(t.match)?t.match:[t.match]).forEach(r=>{r==="file"?this.queryParts.push("in:file"):r==="path"&&this.queryParts.push("in:path")}),this}},fs=class extends st{addQueryTerms(t){return Array.isArray(t.keywords)&&t.keywords.length>0&&this.queryParts.push(...t.keywords.map(ps)),this}addRepoFilters(t){this.addArrayFilter(t.topicsToSearch,"topic"),this.addSimpleFilter(t.stars,"stars"),t.updated&&this.queryParts.push(`pushed:${t.updated}`),t.language&&this.queryParts.push(`language:${t.language}`);let n=t;return typeof n.forks=="string"&&this.queryParts.push(`forks:${n.forks}`),typeof n.license=="string"&&this.queryParts.push(`license:${n.license}`),typeof n.goodFirstIssues=="string"&&this.queryParts.push(`good-first-issues:${n.goodFirstIssues}`),this}addMatchFilters(t){return t.match&&(Array.isArray(t.match)?t.match:[t.match]).forEach(r=>{r==="name"?this.queryParts.push("in:name"):r==="description"?this.queryParts.push("in:description"):r==="readme"&&this.queryParts.push("in:readme")}),this}addQualityFilters(t){let n=t,r=n?.archived;this.queryParts.push(r===!0?"archived:true":"is:not-archived");let o=n?.visibility;return o==="public"?this.queryParts.push("is:public"):o==="private"&&this.queryParts.push("is:private"),this}};function hs(e){return new ms().addQueryTerms(e).addSearchFilters(e).addOwnerRepo(e).addMatchFilters(e).build()}function gs(e){return new fs().addQueryTerms(e).addOwnerRepo(e).addRepoFilters(e).addMatchFilters(e).addQualityFilters(e).build()}var ys=class extends st{addBasicFilters(t){return t.query&&t.query.trim()&&(this.queryParts.push(t.query.trim()),t.match&&t.match.length>0&&this.queryParts.push(`in:${t.match.join(",")}`)),this.queryParts.push("is:pr"),this}addStateFilters(t){return t.merged===!0&&t.state==="closed"||this.addSimpleFilter(t.state,"is"),this.addBooleanFilter(t.draft,"is:draft","-is:draft"),this.addBooleanFilter(t.merged,"is:merged","is:unmerged"),this}addUserFilters(t){return this.addSimpleFilter(t.author,"author"),this.addSimpleFilter(t.assignee,"assignee"),this.addSimpleFilter(t.mentions,"mentions"),this.addSimpleFilter(t.commenter,"commenter"),this.addSimpleFilter(t["reviewed-by"],"reviewed-by"),this.addSimpleFilter(t["review-requested"],"review-requested"),this}addBranchFilters(t){return this.addSimpleFilter(t.head,"head"),this.addSimpleFilter(t.base,"base"),this}addReviewFilters(t){return t.review&&this.queryParts.push(`review:${t.review}`),this}addNegativeFilters(t){return t.locked===!0?this.queryParts.push("is:locked"):t.locked===!1&&this.queryParts.push("is:unlocked"),t.visibility==="public"?this.queryParts.push("is:public"):t.visibility==="private"&&this.queryParts.push("is:private"),t.project&&this.queryParts.push(`project:${t.project}`),this}addMiscFilters(t){return this.queryParts.push(t.archived===!0?"archived:true":"archived:false"),t.language&&this.queryParts.push(`language:${t.language}`),t.checks&&this.queryParts.push(`status:${t.checks}`),this}};function Rs(e){return new ys().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addBranchFilters(e).addDateFilters(e).addEngagementFilters(e).addReviewFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function Ss(e){return e.draft!==void 0||e.author!==void 0||e.assignee!==void 0||typeof e.query=="string"&&e.query.trim().length>0||e.label&&e.label.length>0||e.mentions!==void 0||e.commenter!==void 0||e["reviewed-by"]!==void 0||e["review-requested"]!==void 0||e.reactions!==void 0||e.comments!==void 0||e.state==="merged"||e.milestone!==void 0||e.language!==void 0||e.checks!==void 0||e.review!==void 0||e.locked!==void 0||e.visibility!==void 0||e.project!==void 0||e.created!==void 0||e.updated!==void 0||e["merged-at"]!==void 0||e.closed!==void 0||e.merged!==void 0||e.match!==void 0&&e.match.length>0||e.sort==="comments"||e.sort==="reactions"||Array.isArray(e.owner)||Array.isArray(e.repo)}var bs=class extends st{addBasicFilters(t){return t.query&&t.query.trim()&&(this.queryParts.push(t.query.trim()),t.match&&t.match.length>0&&this.queryParts.push(`in:${t.match.join(",")}`)),this.queryParts.push("is:issue"),this}addStateFilters(t){return(t.state==="open"||t.state==="closed")&&this.addSimpleFilter(t.state,"is"),this}addUserFilters(t){return this.addSimpleFilter(t.author,"author"),this.addSimpleFilter(t.assignee,"assignee"),this.addSimpleFilter(t.mentions,"mentions"),this.addSimpleFilter(t.commenter,"commenter"),this}addNegativeFilters(t){return t.locked===!0?this.queryParts.push("is:locked"):t.locked===!1&&this.queryParts.push("is:unlocked"),t.visibility==="public"?this.queryParts.push("is:public"):t.visibility==="private"&&this.queryParts.push("is:private"),this}addMiscFilters(t){return this.queryParts.push(t.archived===!0?"archived:true":"archived:false"),this}};function Cs(e){return new bs().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addDateFilters(e).addEngagementFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function Ps(e){return typeof e.query=="string"&&e.query.trim().length>0||e.author!==void 0||e.assignee!==void 0||e.label!==void 0&&(Array.isArray(e.label),e.label.length>0)||e.mentions!==void 0||e.commenter!==void 0||e.reactions!==void 0||e.comments!==void 0||e.milestone!==void 0||e.locked!==void 0||e.visibility!==void 0||e.created!==void 0||e.updated!==void 0||e.closed!==void 0||e.match!==void 0&&e.match.length>0||e.sort==="comments"||e.sort==="reactions"||Array.isArray(e.owner)||Array.isArray(e.repo)}import IR from"crypto";var OR="v2",FR=new Set([]);function vR(e){if(e===null||typeof e!="object"||Array.isArray(e))return e;let t=e,n=!1,r={};for(let o of Object.keys(t)){if(FR.has(o)){n=!0;continue}r[o]=t[o]}return n?r:e}function se(e,t,n){let r=xs(vR(t)),o=n?`${n}:${r}`:r,i=IR.createHash("sha256").update(o).digest("hex");return`${OR}-${e}:${i}`}function xs(e,t=new WeakSet){return e===null?"null":e===void 0?"undefined":typeof e!="object"?String(e):t.has(e)?'"[Circular]"':(t.add(e),Array.isArray(e)?`[${e.map(o=>xs(o,t)).join(",")}]`:`{${Object.keys(e).sort().map(o=>{let i=e[o];return`"${o}":${xs(i,t)}`}).join(",")}}`)}import DR from"node-cache";var MR=300*1e3,Be=new DR({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1}),ve={hits:0,misses:0,sets:0,totalKeys:0,lastReset:new Date},Ql={"gh-api-code":3600,"gh-api-repos":7200,"gh-api-prs":1800,"gh-api-issues":1800,"gh-api-history":1800,"gh-api-releases":3600,"gh-api-file-content":300,"gh-repo-structure-api":7200,"github-user":900,"npm-search":14400,default:86400},Ue=new Map;function NR(e){return e.match(/^v\d+-([^:]+):/)?.[1]}function GR(e){return e.startsWith("gh-api-")||e.startsWith("gh-repo-")||e==="github-user"}function fr(e){let t=NR(e);if(!(!t||!GR(t)))try{ts(t,1)}catch{}}function go(){let e=Date.now();for(let[t,n]of Ue.entries())e-n.startedAt>MR&&Ue.delete(t)}function hr(e){return Ql[e]||Ql.default}function gr(e,t,n){try{return Be.set(e,t,n),ve.sets++,ve.totalKeys=Be.keys().length,!0}catch{try{let r=Be.keys();for(let o of r)Be.get(o);return Be.set(e,t,n),ve.sets++,ve.totalKeys=Be.keys().length,!0}catch{return!1}}}async function fe(e,t,n={}){if(n.skipCache)return await t();if(!n.forceRefresh)try{let i=Be.get(e);if(i!==void 0)return ve.hits++,fr(e),i}catch{}go();let r=Ue.get(e);if(r)return r.promise;let o=(async()=>{try{let i=await t();if(n.forceRefresh||ve.misses++,(n.shouldCache??(()=>!0))(i)){let a=n.ttl;if(!a){let u=e.match(/^v\d+-([^:]+):/)?.[1]??"default";a=hr(u)}gr(e,i,a)}return i}finally{Ue.delete(e)}})();return Ue.set(e,{promise:o,startedAt:Date.now()}),o}import HR from"node-cache";var ws=new HR({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1});async function yo(e,t,n={}){if(n.skipCache)return(await t({})).value;if(!n.forceRefresh)try{let i=Be.get(e);if(i!==void 0)return ve.hits++,fr(e),i}catch{}go();let r=Ue.get(e);if(r)return r.promise;let o=(async()=>{try{let i=n.forceRefresh?void 0:ws.get(e),s=await t({ifNoneMatch:!n.forceRefresh&&i?.etag?i.etag:void 0});if(s.notModified&&i){ve.hits++,fr(e);let c=n.ttl;if(!c){let l=e.match(/^v\d+-([^:]+):/)?.[1]??"default";c=hr(l)}return gr(e,i.data,c),i.data}if(n.forceRefresh||ve.misses++,(n.shouldCache??(()=>!0))(s.value)){let c=n.ttl;if(!c){let l=e.match(/^v\d+-([^:]+):/)?.[1]??"default";c=hr(l)}gr(e,s.value,c),ws.set(e,{data:s.value,etag:s.etag})}return s.value}finally{Ue.delete(e)}})();return Ue.set(e,{promise:o,startedAt:Date.now()}),o}import{DISCOVERY_IGNORED_FILE_EXTENSIONS as uO,DISCOVERY_IGNORED_FILE_NAMES as lO,DISCOVERY_IGNORED_FOLDER_NAMES as dO,getDiscoveryExtension as $l,shouldIgnoreDiscoveryDir as yr,shouldIgnoreDiscoveryFile as cn}from"@octocodeai/octocode-engine/security";var jl=Symbol.for("octocode.rawResponseChars");function N(e){if(typeof e=="string")return e.length;try{return JSON.stringify(e)?.length??0}catch{return String(e).length}}function zl(e){if(!(typeof e!="number"||!Number.isFinite(e)))return Math.max(0,e)}function Q(e,t){let n=typeof t=="number"?zl(t):N(t);if(n===void 0)return e;try{Object.defineProperty(e,jl,{value:n,enumerable:!1,configurable:!0})}catch{}return e}function te(e){if(!(typeof e!="object"||e===null))return zl(e[jl])}function un(e){let t={};if(!e||typeof e!="object")return t;for(let[n,r]of Object.entries(e))typeof r=="string"?t[n]=r:typeof r=="number"&&Number.isFinite(r)&&(t[n]=String(r));return t}function Wl(e){let t=un(e),n=Number(t["x-ratelimit-remaining"]),r=Number(t["x-ratelimit-limit"]),o=Number(t["x-ratelimit-reset"]);if(!Number.isFinite(n)||!Number.isFinite(r)||r<=0||n>Math.max(3,r*.15))return;let i=Number.isFinite(o)?Math.max(0,Math.round((o*1e3-Date.now())/1e3)):void 0;return`GitHub rate limit low: ${n}/${r} remaining${i!==void 0?` (resets in ~${i}s)`:""} \u2014 pace or narrow further requests.`}function ln(e){let t=un(e),n=t.etag||t.ETag||t.Etag||Object.entries(t).find(([r])=>r.toLowerCase()==="etag")?.[1];return n&&n.length>0?n:void 0}function Vl(e,t,n){let r=[],o=0;for(let[i,s]of t){let a=e.slice(i,s);if(!a)continue;let c=n.indexOf(a,o);c===-1&&(c=n.indexOf(a),c===-1)||(r.push([c,c+a.length]),o=c+a.length)}return r}var Kl=30;async function Yl(e,t,n){let r=await pe(t),o=se("gh-api-code",{keywords:e.keywords,owner:e.owner,repo:e.repo,extension:e.extension,filename:e.filename,language:e.language,path:e.path,match:e.match,limit:e.limit,page:e.page,auth:r},n);return await fe(o,async()=>await UR(e,t),{shouldCache:s=>"data"in s&&!s.error})}async function UR(e,t){try{let n=await U(t);if(e.keywords&&e.keywords.length>0&&e.keywords.filter(h=>h&&h.trim()).length===0)return{error:Ce.QUERY_EMPTY.message,type:"http",status:400};let r=hs(e);if(!r.trim())return{error:Ce.QUERY_EMPTY.message,type:"http",status:400};let o=Math.min(typeof e.limit=="number"?e.limit:Kl,100),i=e.page||1,s={q:r,per_page:o,page:i,headers:{Accept:"application/vnd.github.v3.text-match+json"}},a=await n.rest.search.code(s),c=await QR(a.data.items,a.data.total_count),u=a.data.incomplete_results===!0,l=c.total_count,d=Math.min(l,1e3),m=Math.min(Math.ceil(d/o),10),p=Math.min(i,Math.max(1,m)),f=p<m,g=Math.min(d,m*o);return{data:{total_count:c.total_count,items:c.items,...u?{incompleteResults:!0}:{},repository:c.repository,matchLocations:c.matchLocations,minified:c.minified,minificationFailed:c.minificationFailed,minificationTypes:c.minificationTypes,_researchContext:c._researchContext,pagination:{currentPage:p,totalPages:m,perPage:o,totalMatches:d,reportedTotalMatches:l,reachableTotalMatches:g,totalMatchesKind:"reported",totalMatchesCapped:l>d,hasMore:f,...f?{nextPage:p+1}:{},uniqueFileCount:c._researchContext?.uniqueFileCount}},status:200,headers:un(a.headers),rawResponseChars:N(a.data)}}catch(n){if(We(n)){let o=Math.min(typeof e.limit=="number"?e.limit:Kl,100);return{data:{total_count:0,items:[],nonExistentScope:!0,pagination:{currentPage:e.page||1,totalPages:0,perPage:o,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}},status:200,rawResponseChars:0}}return W(n)}}async function QR(e,t){let n=$R(e),r=new Set,o=!1,i=[],s=new Set,a=e.filter(p=>!cn(p.path)),c=0,u=0,l=await Promise.allSettled(a.map(async p=>{s.add(p.path);let f=[],g=await Promise.allSettled((p.text_matches||[]).map(async C=>{let x=C.fragment,T=BR.sanitizeContent(x||"",p.path);x=T.content,T.hasSecrets&&r.add(`Secrets detected in ${p.path}: ${T.secretsDetected.join(", ")}`),T.warnings.length>0&&T.warnings.forEach(_=>r.add(`${p.path}: ${_}`));try{let _=await F.minifyContent(x||"",p.path);x=_.content,_.failed?o=!0:_.type!=="failed"&&(f.push(_.type),i.push(_.type))}catch{o=!0}let L=C.matches?.flatMap(_=>Array.isArray(_.indices)&&_.indices.length>=2?[[_.indices[0],_.indices[1]]]:[])||[];return{context:x||"",positions:Vl(C.fragment||"",L,x||"")}})),R=g.filter(C=>C.status==="fulfilled").map(C=>C.value),h=g.filter(C=>C.status==="rejected").length;h>0&&(u+=h);let y=p,S=Array.from(new Set(f));return{path:p.path,matches:R,url:p.html_url,repository:{nameWithOwner:p.repository.full_name,url:p.repository.url,pushedAt:p.repository.pushed_at||void 0},...y.last_modified_at&&{lastModifiedAt:y.last_modified_at},...S.length>0&&{minificationType:S.join(",")}}})),d=l.filter(p=>p.status==="fulfilled").map(p=>p.value);c=l.filter(p=>p.status==="rejected").length;let m={items:d,total_count:t!==void 0?t:a.length,_researchContext:{uniqueFileCount:s.size,repositoryContext:n?(()=>{let p=n.full_name.split("/");return p.length===2&&p[0]&&p[1]?{owner:p[0],repo:p[1],branch:n.default_branch||void 0}:void 0})():void 0}};return n&&(m.repository={name:n.full_name,url:n.url,createdAt:n.created_at||void 0,updatedAt:n.updated_at||void 0,pushedAt:n.pushed_at||void 0}),c>0&&r.add(`${c} item(s) dropped due to processing errors`),u>0&&r.add(`${u} match(es) dropped due to processing errors`),r.size>0&&(m.matchLocations=Array.from(r)),m.minified=!o,m.minificationFailed=o,i.length>0&&(m.minificationTypes=Array.from(new Set(i))),m}function $R(e){if(e.length===0)return null;let t=e[0]?.repository;return t&&e.every(r=>r.repository.full_name===t.full_name)?t:null}var Xl=30;function ql(e){let t={},n=e.license;n?.spdx_id&&n.spdx_id!=="NOASSERTION"&&(t.license=n.spdx_id);let r=e.homepage;return r&&(t.homepage=r),t}async function Jl(e,t,n){let r=await pe(t),o=e,i=se("gh-api-repos",{keywords:e.keywords,topicsToSearch:e.topicsToSearch,owner:e.owner,repo:o.repo,stars:e.stars,updated:e.updated,language:o.language,match:e.match,sort:e.sort,limit:e.limit,page:e.page,archived:o.archived,visibility:o.visibility,forks:o.forks,license:o.license,goodFirstIssues:o.goodFirstIssues,auth:r},n);return await fe(i,async()=>await zR(e,t),{shouldCache:a=>"data"in a&&!a.error})}async function jR(e,t){let n=Math.min(e.limit||100,100),r=e.page||1,o=e.sort==="updated"?"updated":"full_name",i,s;try{i=(await t.rest.repos.listForOrg({org:e.owner,per_page:n,page:r,sort:o})).data,s=void 0}catch(p){if(p?.status!==404)return W(p);try{i=(await t.rest.repos.listForUser({username:e.owner,per_page:n,page:r,sort:o})).data,s=void 0}catch(g){return W(g)}}let a=i.map(p=>{let g=p.full_name.split("/"),R=g[0]||"",h=g[1]||"";return{owner:R,repo:h,defaultBranch:p.default_branch,stars:p.stargazers_count||0,description:p.description?p.description:"No description",url:p.html_url,createdAt:p.created_at,updatedAt:p.updated_at,pushedAt:p.pushed_at,visibility:p.visibility,...p.topics&&p.topics.length>0&&{topics:p.topics},...p.forks_count&&p.forks_count>0&&{forksCount:p.forks_count},...p.open_issues_count&&p.open_issues_count>0&&{openIssuesCount:p.open_issues_count},...p.language&&{language:p.language},...ql(p)}}),c=a.length,u=c===n,l=(r-1)*n+c,d=s??l+(u?1:0),m=s!==void 0||!u?"exact":"lowerBound";return{data:{repositories:a,pagination:{currentPage:r,totalPages:u?r+1:r,perPage:n,totalMatches:d,reachableTotalMatches:l,totalMatchesKind:m,hasMore:u,...u?{nextPage:r+1}:{}}},status:200,rawResponseChars:N(i)}}async function zR(e,t){try{let n=await U(t),r=(e.keywords?.length??0)>0||(e.topicsToSearch?.length??0)>0,o=typeof e.owner=="string"?e.owner:Array.isArray(e.owner)?e.owner[0]:void 0;if(!r&&o)return await jR({owner:o,sort:e.sort,limit:e.limit,page:e.page},n);let i=gs(e);if(!i.trim())return{error:Ce.QUERY_EMPTY.message,type:"http",status:400};let s=Math.min(e.limit||Xl,100),a=e.page||1,c={q:i,per_page:s,page:a},u=["stars","forks","help-wanted-issues","updated"];e.sort&&u.includes(e.sort)&&(c.sort=e.sort);let l=await n.rest.search.repos(c),d=l.data.items.map(y=>{let C=y.full_name.split("/"),x=C[0]||"",T=C[1]||"";return{owner:x,repo:T,defaultBranch:y.default_branch,stars:y.stargazers_count||0,description:y.description?y.description:"No description",url:y.html_url,createdAt:y.created_at,updatedAt:y.updated_at,pushedAt:y.pushed_at,visibility:y.visibility,...y.topics&&y.topics.length>0&&{topics:y.topics},...y.forks_count&&y.forks_count>0&&{forksCount:y.forks_count},...y.open_issues_count&&y.open_issues_count>0&&{openIssuesCount:y.open_issues_count},...y.language&&{language:y.language},...ql(y)}}),m=l.data.total_count,p=Math.min(m,1e3),f=Math.min(Math.ceil(p/s),10),g=Math.min(a,Math.max(1,f)),R=g<f,h=Math.min(p,f*s);return{data:{repositories:d,pagination:{currentPage:g,totalPages:f,perPage:s,totalMatches:p,reportedTotalMatches:m,reachableTotalMatches:h,totalMatchesKind:"reported",totalMatchesCapped:m>p,hasMore:R,...R?{nextPage:g+1}:{}}},status:200,headers:un(l.headers),rawResponseChars:N(l.data)}}catch(n){if(We(n)){let r=Math.min(e.limit||Xl,100);return{data:{repositories:[],nonExistentScope:!0,pagination:{currentPage:e.page||1,totalPages:0,perPage:r,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}},status:200,rawResponseChars:0}}return W(n)}}function Ie(e){return!!(e&&typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&"type"in e)}function he(e){if(!e)return{owner:void 0,repo:void 0};let t=e.split("/");if(t.length!==2||!t[0]||!t[1])throw new Error(`Invalid GitHub projectId format: '${e}'. Expected 'owner/repo'.`);return{owner:t[0],repo:t[1]}}function WR(e){if(e.rateLimitRemaining===void 0&&e.retryAfter===void 0&&e.rateLimitReset===void 0)return;let t=e.rateLimitReset,n=t&&!isNaN(t)?Math.floor(t/1e3):Math.floor(Date.now()/1e3)+(e.retryAfter??3600);return{remaining:e.rateLimitRemaining??0,reset:n,retryAfter:e.retryAfter}}function at(e){return{error:e.error,status:e.status||500,provider:"github",hints:e.hints,rateLimit:WR(e)}}function Ro(e){return VR(e)?at({error:typeof e.error=="string"?e.error:String(e.error),status:e.status||500,hints:e.hints,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}):null}function VR(e){if(typeof e!="object"||e===null||!("error"in e))return!1;let n=e.error;return typeof n=="string"||KR(n)}function KR(e){return typeof e=="object"&&e!==null&&typeof e.toString=="function"}function Rr(e){let t=typeof e?.totalMatchesCapped=="boolean"?e.totalMatchesCapped:typeof e?.reportedTotalMatches=="number"&&typeof e?.reachableTotalMatches=="number"?e.reportedTotalMatches>e.reachableTotalMatches:void 0;return{...typeof t=="boolean"?{totalMatchesCapped:t}:{},...typeof e?.uniqueFileCount=="number"?{uniqueFileCount:e.uniqueFileCount}:{}}}function YR(e){return{items:e.items.map(n=>({path:n.path,matches:n.matches.map(r=>({context:r.context,positions:r.positions})),url:n.url||"",repository:{id:n.repository.nameWithOwner,name:n.repository.nameWithOwner,url:n.repository.url},lastModifiedAt:n.lastModifiedAt})),totalCount:e.total_count,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...Rr(e.pagination)},repositoryContext:e._researchContext?.repositoryContext,nonExistentScope:e.nonExistentScope,incompleteResults:e.incompleteResults}}function XR(e){let t=e.repositories.map(n=>({id:`${n.owner}/${n.repo}`,name:n.repo,fullPath:`${n.owner}/${n.repo}`,description:n.description||null,url:n.url,cloneUrl:`https://github.com/${n.owner}/${n.repo}.git`,defaultBranch:n.defaultBranch||"main",stars:n.stars||0,forks:n.forksCount||0,visibility:n.visibility||"public",topics:n.topics||[],createdAt:n.createdAt,updatedAt:n.updatedAt,lastActivityAt:n.pushedAt||n.updatedAt,openIssuesCount:n.openIssuesCount,language:n.language}));return{repositories:t,totalCount:e.pagination?.totalMatches||t.length,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...Rr(e.pagination)},nonExistentScope:e.nonExistentScope}}async function Zl(e,t,n=he){let{owner:r,repo:o}=n(e.projectId),i=r||e.owner,s={keywords:e.keywords,owner:i,repo:o,extension:e.extension,filename:e.filename,language:e.language,path:e.path,match:e.match,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},a=await Yl(s,t);return Ie(a)?at(a):a.data?{data:YR(a.data),status:200,provider:"github",rawResponseChars:a.rawResponseChars??N(a.data)}:{error:"No data returned from GitHub API",status:500,provider:"github"}}async function ed(e,t){let n={keywords:e.keywords,topicsToSearch:e.topics,owner:e.owner,stars:e.stars??(e.minStars?`>=${e.minStars}`:void 0),size:e.size,created:e.created,updated:e.updated,language:e.language,match:e.match,archived:e.archived,visibility:e.visibility,forks:e.forks,license:e.license,goodFirstIssues:e.goodFirstIssues,sort:e.sort==="best-match"?void 0:e.sort,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},r=await Jl(n,t);return"error"in r?Ro(r)??{error:"Unknown GitHub API error",status:500,provider:"github"}:!("data"in r)||!r.data?{error:"No data returned from GitHub API",status:500,provider:"github"}:{data:XR(r.data),status:200,provider:"github",rawResponseChars:r.rawResponseChars??N(r.data)}}import{RequestError as Is}from"octokit";import{completeMetadata as Ts}from"@octocodeai/octocode-core";var P=new Proxy({},{get(e,t){return Ts.toolNames[t]},ownKeys(){return Object.keys(Ts.toolNames)},getOwnPropertyDescriptor(e,t){let n=Ts.toolNames;if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}});import{completeMetadata as JR}from"@octocodeai/octocode-core";var Es=new Proxy({},{get(e,t){return JR.tools[t]?.description??""}});import{completeMetadata as ZR}from"@octocodeai/octocode-core";function Ls(e){return Object.prototype.hasOwnProperty.call(ZR.tools,e)}import{completeMetadata as eS}from"@octocodeai/octocode-core";function As(){return eS.baseSchema}var tS=new Proxy({},{get(e,t){return As()[t]},ownKeys(){return Array.from(new Set([...Reflect.ownKeys(As())]))},getOwnPropertyDescriptor(e,t){let n=As();if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}});function _s(e,t){let n=e.split("/").pop()||"",r=t.some(i=>{let s=i.split("/").pop()||"";return s.toLowerCase()===n.toLowerCase()&&s!==n}),o=[];return r&&o.push("GitHub Contents API paths are case-sensitive. Verify exact file casing with ghViewRepoStructure."),o.push(`Did you mean: ${t.join(", ")}?`),o}async function ks(e,t,n,r,o){try{let i=r.split("/").slice(0,-1).join("/"),s=r.split("/").pop();if(!s)return[];let a=await e.rest.repos.getContent({owner:t,repo:n,path:i,ref:o});if(!Array.isArray(a.data))return[];let c=a.data,u=[],l=c.find(p=>p.name.toLowerCase()===s.toLowerCase());l&&u.push(l.path);let d=s.replace(/\.[^/.]+$/,"");return c.filter(p=>p.name===s?!1:!!p.name.startsWith(d+".")).forEach(p=>u.push(p.path)),u.length===0&&d.length>=3&&c.filter(f=>{let g=f.name.replace(/\.[^/.]+$/,"");return g!==d&&g.length>=3&&(d.startsWith(g)||g.startsWith(d))}).forEach(f=>u.push(f.path)),Array.from(new Set(u)).slice(0,3)}catch{return[]}}async function nS(e,t,n,r,o,i,s,a){let c=await Pe(r,o,a);if((s==="main"||s==="master")&&s!==c)try{return{result:await e.rest.repos.getContent({...n,ref:c}),actualBranch:c}}catch{throw t}let l=W(t),d=s===c?void 0:`Branch '${s}' not found. Default branch is '${c}'. Ask user: Do you want to get the file from '${c}' instead?`,m=await ks(e,r,o,i,s||c);return m.length>0&&(l.hints=[...l.hints||[],..._s(i,m)]),{...l,...d&&{scopesSuggestion:d}}}async function rS(e,t,n,r,o,i){let s=W(t),a=await ks(e,n,r,o,i||"main");return a.length>0&&(s.hints=[...s.hints||[],..._s(o,a)]),s}async function td(e,t){let n=e.replace(/\s/g,"");if(!n)return{error:yt.FILE_EMPTY.message,type:"unknown",status:404};try{let r=Buffer.from(n,"base64");return r.indexOf(0)!==-1?{error:yt.BINARY_FILE.message,type:"unknown",status:415}:{data:r.toString("utf-8"),status:200}}catch{return{error:yt.DECODE_FAILED.message,type:"unknown",status:422}}}async function nd(e,t,n,r,o){try{let i=await e.rest.git.getBlob({owner:t,repo:n,file_sha:r}),{content:s,encoding:a}=i.data;return a==="base64"?td(s,o):a==="utf-8"?{data:s,status:200}:{error:`Unsupported blob encoding: ${a}`,type:"unknown",status:415}}catch(i){return W(i)}}async function oS(e,t,n,r,o,i){try{let s=r.split("/").slice(0,-1).join("/"),a=r.split("/").pop();if(!a)return{error:`Cannot determine file name from path: ${r}`,type:"unknown",status:400};let c=o||await Pe(t,n,i).catch(()=>"HEAD"),u=await e.rest.repos.getContent({owner:t,repo:n,path:s||"",ref:c});if(!Array.isArray(u.data))return{error:`Expected directory listing for ${s||"root"}`,type:"unknown",status:500};let l=u.data.find(m=>m.name===a&&m.type==="file");if(!l)return{error:`File ${a} not found in ${s||"root"}`,type:"unknown",status:404};let d=await nd(e,t,n,l.sha,r);return"error"in d?d:{data:{rawContent:d.data,branch:typeof c=="string"?c:void 0,resolvedRef:typeof c=="string"?c:"HEAD"},status:200}}catch(s){return W(s)}}async function Sr(e,t,n={}){try{let r=await U(t),{owner:o,repo:i,path:s,branch:a}=e,c={owner:o,repo:i,path:s,...a&&{ref:a},...n.ifNoneMatch?{headers:{"If-None-Match":n.ifNoneMatch}}:{}},u,l=a;try{u=await r.rest.repos.getContent(c)}catch(p){if(p instanceof Is&&p.status===304)return{data:{rawContent:"",resolvedRef:a||"HEAD"},status:304,etag:n.ifNoneMatch,notModified:!0};if(p instanceof Is&&p.status===404)if(a){let f=await nS(r,p,c,o,i,s,a,t);if("result"in f)u=f.result,l=f.actualBranch;else return f}else return await rS(r,p,o,i,s,a);else{if(p instanceof Is&&p.status===413)return await oS(r,o,i,s,a||l,t);throw p}}let d=u.data,m=ln(u.headers);if(Array.isArray(d))return{error:yt.PATH_IS_DIRECTORY.message(P.GITHUB_VIEW_REPO_STRUCTURE),type:"unknown",status:400};if("content"in d&&d.type==="file"){let p=typeof d.content=="string"?d.content:"",f=d.size??0,g;if(p.length>0)g=await td(p,s);else if(f>0&&"sha"in d&&typeof d.sha=="string"&&d.sha)g=await nd(r,o,i,d.sha,s);else return{error:yt.FILE_EMPTY.message,type:"unknown",status:404};if("error"in g)return g;if(!l&&!a)try{l=await Pe(o,i,t)}catch{}return{data:{rawContent:g.data,branch:l||void 0,resolvedRef:l||a||"HEAD"},status:200,rawResponseChars:N(d),...m?{etag:m}:{}}}return{error:yt.UNSUPPORTED_TYPE.message(d.type),type:"unknown",status:415}}catch(r){return W(r)}}import{ContentSanitizer as Ns}from"@octocodeai/octocode-engine/contentSanitizer";function So(e){if(e.length===0)return[];let t=e.split(/\r?\n/);return t.length>0&&t[t.length-1]===""&&t.pop(),t}function Ve(e){return So(e).length}function bo(e,t,n,r=!1,o=!1,i){if(r)try{new RegExp(t)}catch(u){let l=u instanceof Error?u.message:String(u);throw new Error(`Invalid regex pattern: ${l}`)}if(i!==void 0&&i<=0)return{lines:[],matchRanges:[],matchCount:0,matchingLines:[]};let s=e.join(`
10
+ `),a={isRegex:r,caseSensitive:o,contextLines:n,maxMatches:i},c=F.extractMatchingLines(s,t,a);return{lines:c.lines,matchRanges:c.matchRanges.map(u=>({start:u.start,end:u.end})),matchCount:c.matchCount,matchingLines:c.matchingLines.map(u=>u)}}var iS=/\.(?:md|markdown|mdx)$/i;function sS(e){return iS.test(e.split(/[?#]/,1)[0]??e)}function rd(e,t){return sS(t)?cS(aS(e)):null}function Co(e,t){let n=rd(e,t);if(n===null||n.length===0)return null;let r=[];return id(n,r),r.join(`
11
+ `)}function od(e,t){let n=rd(e,t);return n===null?null:n.map(sd)}function aS(e){let t=[],n=e.split(/\r?\n/),r;return n.forEach((o,i)=>{let s=o.match(/^[ \t]{0,3}(`{3,}|~{3,})/);if(s?.[1]){let u=s[1][0],l=s[1].length;r?r.marker===u&&l>=r.length&&(r=void 0):r={marker:u,length:l};return}if(r)return;let a=o.match(/^[ \t]{0,3}(#{1,6})(?:[ \t]+|$)(.*)$/);if(!a?.[1])return;let c=(a[2]??"").replace(/[ \t]+#+[ \t]*$/,"").trim();t.push({line:i+1,level:a[1].length,text:c.length>0?c:"(untitled heading)",children:[]})}),t}function cS(e){let t=[],n=[];for(let r of e){for(;n.length>0&&n[n.length-1].level>=r.level;)n.pop();let o=n[n.length-1];o?o.children.push(r):t.push(r),n.push(r)}return t}function id(e,t){for(let n of e){let r=String(n.line).padStart(4," "),o=" ".repeat(Math.max(0,n.level-1));t.push(`${r}| ${o}${"#".repeat(n.level)} ${n.text}`),id(n.children,t)}}function sd(e){let t=`${"#".repeat(e.level)} ${e.text}`;return{name:t,kind:"markdownHeading",range:{start:{line:e.line-1,character:0},end:{line:e.line-1,character:t.length}},selectionRange:{start:{line:e.line-1,character:0},end:{line:e.line-1,character:t.length}},children:e.children.map(sd)}}import{getConfigSync as uS,DEFAULT_OUTPUT_CONFIG as lS}from"@octocodeai/config";function Nt(){try{return uS().output.pagination.defaultCharLength}catch{return lS.pagination.defaultCharLength}}function Os(e,t){return F.byteToCharOffset(e,t)}function ad(e,t){return F.charToByteOffset(e,t)}function cd(e){return F.charToByteOffset(e,e.length)}function Fs(e,t,n,r){return F.sliceContent(e,t,n,r)}function Po(e,t=0,n,r={}){let o=r.mode??"characters",i=e.length,s=cd(e);if(n===void 0)return{paginatedContent:e,byteOffset:0,byteLength:s,totalBytes:s,nextByteOffset:void 0,charOffset:0,charLength:i,totalChars:i,nextCharOffset:void 0,hasMore:!1,estimatedTokens:Math.ceil(e.length/4),currentPage:1,totalPages:1};let a=Math.max(1,r.pageSize??n),c,u,l,d,m,p,f,g;if(o==="bytes"){let R=Math.min(t,s),h=Math.min(R+n,s);d=Os(e,R),m=Os(e,h),m<i&&ad(e,m)<h&&(m+=1);let y=Fs(e,d,m-d);c=y.text,d=y.charOffset,m=y.charOffset+y.charLength,u=y.byteOffset,l=y.byteOffset+y.byteLength,p=l<s;let S=r.actualOffset??R;f=Math.floor(S/a)+1,g=Math.max(f,Math.ceil(s/a))}else{let R=Fs(e,t,n);c=R.text,d=R.charOffset,m=R.charOffset+R.charLength,u=R.byteOffset,l=R.byteOffset+R.byteLength,p=m<i;let h=r.actualOffset??d;f=Math.floor(h/a)+1,g=Math.max(f,Math.ceil(i/a))}return{paginatedContent:c,byteOffset:u,byteLength:l-u,totalBytes:s,nextByteOffset:p?l:void 0,charOffset:d,charLength:c.length,totalChars:i,nextCharOffset:p?m:void 0,hasMore:p,estimatedTokens:Math.ceil(c.length/4),currentPage:f,totalPages:g}}function vs(e){return{currentPage:e.currentPage,totalPages:e.totalPages,hasMore:e.hasMore,charOffset:e.charOffset,charLength:e.charLength,totalChars:e.totalChars,...e.nextCharOffset!==void 0&&{nextCharOffset:e.nextCharOffset}}}var dS=8e3,pS="__octocode_generic__.unknown";function mS(e){return e&&e.trim().length>0?e:pS}async function ud(e,t){return(await F.getSemanticBoundaryOffsets(e,mS(t))).filter(r=>Number.isInteger(r)&&r>=0&&r<=e.length)}function fS(e,t){let n=e.indexOf(`
12
+ `,t);return n===-1?void 0:n+1}function xo(e){let t=e.trimEnd().split(`
13
+ `).at(-1)??"";return t.length>0&&(t[0]===" "||t[0]===" ")}async function wo(e,t,n){let r=fS(e,Math.max(0,t));return r===void 0?void 0:(await ud(e,n)).find(i=>i>=r&&i>t)}async function To(e,t,n,r){let o=Math.min(Math.max(0,t),e.length),i=Math.max(1,n),s=o+i;if(s>=e.length)return{length:e.length-o,chunkMode:"char-limit"};let a=await ud(e,r);if(a.length===0)return{length:i,chunkMode:"char-limit"};let c=a.find(l=>l>s);return c===void 0?{length:i,chunkMode:"char-limit"}:c-s<=dS?{length:c-o,chunkMode:"semantic"}:{length:i,chunkMode:"char-limit"}}function gS(){let e=Nt();return Math.min(e,8e3)}async function Ds(e,t,n){let r=e.content??"",o=n??gS();if(r.length<=o&&t===0)return e;let i=e.path??void 0,{length:s,chunkMode:a}=await To(r,t,o,i),c=Po(r,t,s,{pageSize:o}),u;if(c.hasMore&&a==="char-limit"&&xo(c.paginatedContent)){let l=c.charOffset+c.charLength;u=await wo(r,l,i)}return{...e,content:c.paginatedContent,pagination:{currentPage:c.currentPage,totalPages:c.totalPages,hasMore:c.hasMore,charOffset:c.charOffset,charLength:c.charLength,totalChars:c.totalChars,...c.nextCharOffset!==void 0&&{nextCharOffset:c.nextCharOffset},chunkMode:a,...u!==void 0&&{nextBlockChar:u}}}}async function Ms(e,t,n,r,o){try{let i=await e.rest.repos.listCommits({owner:t,repo:n,path:r,per_page:1,...o&&{sha:o}});if(i.data.length>0){let s=i.data[0],a=s?.commit?.committer?.date,c=s?.commit?.author?.name||s?.author?.login||"Unknown";return{lastModified:a||"Unknown",lastModifiedBy:c}}return null}catch{return null}}function br(e,t){return{sourceChars:e,sourceBytes:t}}async function ld(e,t,n,r,o,i,s,a,c=5,u,l,d,m="standard"){let p=e.length,f=Buffer.byteLength(e,"utf-8"),g=m==="standard"||m==="symbols",R=g?"standard":"none",h;if(m==="symbols"){let k=F.extractSignatures(e,o);if(k===null){let B=Co(e,o);if(B!==null){let Z=Ns.sanitizeContent(B,o),v=[F.SIGNATURES_ONLY_HINT];return Z.hasSecrets&&v.push(`Secrets detected and redacted: ${Z.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:Z.content,contentView:"symbols",branch:r,totalLines:Ve(e),...br(p,f),isPartial:!1,signaturesExtracted:!0,hints:v}}h=`minify:"symbols" is not supported for this file type (${o.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(k!==null){let B=Ns.sanitizeContent(k,o),Z=F.applyContentViewMinification(B.content,o),v=[F.SIGNATURES_ONLY_HINT];return u&&v.push('matchString was ignored \u2014 minify:"symbols" returns the full skeleton index. Use startLine/endLine from the gutter to read the matching body.'),B.hasSecrets&&v.push(`Secrets detected and redacted: ${B.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:Z,contentView:"symbols",branch:r,totalLines:Ve(e),...br(p,f),isPartial:!1,signaturesExtracted:!0,hints:v}}}let y=new Set,S=e,C=S.split(`
14
+ `),x=Ve(S),T=e,L,_,w=!1,b,A;if(i)T=e;else if(u){let k=d===!0,B;try{B=bo(C,u,c,l??!1,k)}catch{return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:x,...br(p,f),matchNotFound:!0,searchedFor:u,hints:[`Invalid regex "${u}". Check syntax (e.g. escape backslashes: "\\\\w+" not "\\w+") or disable matchStringIsRegex=false for a literal search.`]}}if(B.matchCount===0){let ie=l?[`Regex "${u}" matched no lines. Verify the pattern, check flags (case-${k?"sensitive":"insensitive"}), or use fullContent=true to inspect the file.`]:[`"${u}" not found in file${k?" (case-sensitive)":""}. Try matchStringIsRegex=true for pattern matching, broaden the search, or use fullContent=true.`];return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:x,...br(p,f),matchNotFound:!0,searchedFor:u,hints:ie}}T=B.lines.join(`
15
+ `);let Z=B.matchRanges[0],v=B.matchRanges[B.matchRanges.length-1];s=Z.start,a=v.end,L=Z.start,_=v.end,w=!0,b=B.matchRanges,A=B.matchingLines;let Y=B.matchingLines.slice(0,5).join(", "),ae=B.matchingLines.length>5?` and ${B.matchingLines.length-5} more`:"";y.add(B.matchCount>1?`Found ${B.matchCount} occurrences of "${u}" on lines ${Y}${ae} \u2014 all shown as ${B.matchRanges.length} slice${B.matchRanges.length===1?"":"s"}, \xB1${c} lines of context each.`:`Found "${u}" on line ${B.matchingLines[0]}`)}else if(s!==void 0||a!==void 0){let k=s||1,B=a||x;if(k<1||k>x)T=e,y.add(`Requested startLine ${k} is out of range for this ${x}-line file \u2014 returning the full file instead of a range.`);else if(B<k)T=e,y.add(`Requested range startLine=${k}, endLine=${B} is invalid (endLine before startLine) \u2014 returning the full file instead of a range.`);else{let Z=Math.max(1,k),v=Math.min(x,B),Y=C.slice(Z-1,v);L=Z,_=v,w=!0,T=Y.join(`
16
+ `),B>x&&y.add(`Requested endLine ${B} adjusted to ${x} (file end)`)}}let M=Ns.sanitizeContent(T,o);if(T=g?F.applyContentViewMinification(M.content,o):M.content,M.hasSecrets&&y.add(`Secrets detected and redacted: ${M.secretsDetected.join(", ")}`),M.warnings.length>0&&M.warnings.forEach(k=>y.add(k)),x>2e3&&m!=="symbols"&&!u&&!s&&!a&&!i){let k=Math.max(1,x-200);y.add(`Large file (${x} lines) \u2014 minify:"symbols" for an export index, or startLine=${k} for the tail.`)}let H=Array.from(y);return{owner:t,repo:n,path:o,content:T,contentView:R,branch:r,totalLines:x,...br(p,f),...w&&{startLine:L,endLine:_,isPartial:w},...b&&{matchRanges:b},...A&&{matchedLines:A},...H.length>0&&{matchLocations:H},...(H.length>0||h)&&{warnings:[...h?[h]:[],...H]}}}async function dd(e,t,n){let r=await pe(t),o=se("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,auth:r},n),i=await yo(o,async({ifNoneMatch:g})=>{let R=await Sr(e,t,{ifNoneMatch:g}),{etag:h,notModified:y,...S}=R;return{value:S,etag:h,notModified:y}},{shouldCache:g=>"data"in g&&!g.error,forceRefresh:e.forceRefresh===!0});if(!("data"in i)||!i.data)return i;let s=i.data.branch||i.data.resolvedRef||e.branch||"",a=await ld(i.data.rawContent,e.owner,e.repo,s,e.path,e.fullContent||!1,e.startLine,e.endLine,e.contextLines??5,e.matchString,e.matchStringIsRegex,e.matchStringCaseSensitive,e.minify??"standard");if("error"in a)return{error:a.error||"Unknown error",status:500,type:"unknown"};let{signaturesExtracted:c,...u}=a,l=e.charOffset??0,d=e.charLength,m=e.fullContent===!0&&l===0&&d===void 0,p=c||m?u:await Ds(u,l,d),f=(e.charOffset??0)>0;if(!e.noTimestamp&&!f)try{let g=await U(t),R=await fe(se("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,ts:!0,auth:r},n),()=>Ms(g,e.owner,e.repo,e.path,e.branch),{shouldCache:h=>h!==null,forceRefresh:e.forceRefresh===!0});R&&(p.lastModified=R.lastModified,p.lastModifiedBy=R.lastModifiedBy)}catch{}return{data:p,status:200,rawResponseChars:i.rawResponseChars}}function yS(e,t){return{path:e.path||t.path,content:e.content||"",encoding:"utf-8",size:e.content?.length||0,totalLines:e.totalLines,sourceChars:e.sourceChars,contentView:e.contentView,ref:e.branch||t.ref||"",lastModified:e.lastModified,lastModifiedBy:e.lastModifiedBy,pagination:e.pagination,isPartial:e.isPartial,startLine:e.startLine,endLine:e.endLine,matchRanges:e.matchRanges,matchedLines:e.matchedLines,warnings:RS(e,t),matchNotFound:e.matchNotFound,searchedFor:e.searchedFor}}function RS(e,t){if(e.matchNotFound===!0){let n=e;if(Array.isArray(n.hints)&&n.hints.length>0){let a=typeof e.totalLines=="number"?` (${e.totalLines} lines scanned)`:"";return n.hints.map(c=>c.replace(" in file",` in file${a}`))}let r=e.searchedFor??t.matchString??"",o=typeof e.totalLines=="number"?` (${e.totalLines} lines scanned)`:"",s=t.matchStringIsRegex===!0?"Try a different pattern, widen the anchor, or use fullContent=true to inspect the file.":"Try matchStringIsRegex=true for pattern matching, a different anchor, or fullContent=true.";return[`No matches for "${r}" in file${o}. ${s}`]}return e.warnings??e.matchLocations}async function pd(e,t,n=he){let{owner:r,repo:o}=n(e.projectId);if(!r||!o)return{error:"Project ID is required for file content",status:400,provider:"github"};let i={owner:r,repo:o,path:e.path,type:"file",branch:e.ref,startLine:e.startLine,endLine:e.endLine,matchString:e.matchString,contextLines:e.contextLines??5,matchStringIsRegex:e.matchStringIsRegex,matchStringCaseSensitive:e.matchStringCaseSensitive,charOffset:e.charOffset,charLength:e.charLength,fullContent:e.fullContent,forceRefresh:e.forceRefresh,minify:e.minify??"standard",mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},s=await dd(i,t);if(Ie(s))return at(s);if(!s.data)return{error:"No data returned from GitHub API",status:500,provider:"github"};let a=s.data.hints;return{data:yS(s.data,e),status:200,provider:"github",rawResponseChars:s.rawResponseChars??N(s.data),...a?.length?{hints:a}:{}}}import{ContentSanitizer as hd}from"@octocodeai/octocode-engine/contentSanitizer";var bS=2;function md(e,t,n){if(!e)return"";if(t===void 0&&n===void 0)return e;let r={additions:t,deletions:n};return F.filterPatch(e,r)}function fd(e){return e?F.filterPatch(e,{trimContext:!0,contextLines:bS}):""}function Gs(e){let t=hd.sanitizeContent(e.title??""),n=e.body?hd.sanitizeContent(e.body):{content:void 0,warnings:[]},r=new Set([...t.warnings,...n.warnings]),i=e.state?.toLowerCase()==="closed"?"closed":"open";return{prData:{number:e.number,title:t.content,body:n.content,state:i,author:e.user?.login??"",labels:e.labels?.map(a=>typeof a=="string"?a:a.name??"")??[],created_at:e.created_at??"",updated_at:e.updated_at??"",closed_at:e.closed_at??null,url:e.html_url,comments:[],...typeof e.comments=="number"&&e.comments>0?{total_comment_count:e.comments}:{},reactions:0,draft:e.draft??!1,head:e.head?.ref,head_sha:e.head?.sha,base:e.base?.ref,base_sha:e.base?.sha,...e.merged_at&&{merged_at:e.merged_at}},sanitizationWarnings:r}}var CS=Nt(),PS=Math.round(Nt()/4),gd=3;function yd(e,t,n,r){if(typeof e!="string"||!r)return{value:e};let o=e.length,i=Math.min(Math.max(0,t),o),s=Math.max(1,n),a=Math.min(i+s,o),c=a<o;return i===0&&a===o?{value:e}:{value:e.slice(i,a),pagination:{charOffset:i,charLength:a-i,totalChars:o,hasMore:c,...c?{nextCharOffset:a}:{}}}}function dn(e,t={}){let n=t.charOffset??0,r=t.charLength??CS,o=t.charLength??PS,i=typeof e.body=="string"?F.minifyMarkdownCore(e.body):e.body,s=yd(i,n,r,!t.includeFullBody),a=(e.comments??[]).sort((f,g)=>{let R=f.commentType==="review_inline"?0:1,h=g.commentType==="review_inline"?0:1;return R-h}),c=a.filter(f=>f.commentType==="review_inline").length,u=a.length-c,l=t.includeFullCommentDetails?a:a.slice(0,gd),d=l.map(f=>{let g=yd(f.body,n,o,!t.includeFullCommentDetails);return{...f,body:g.value??"",...g.pagination?{bodyPagination:g.pagination}:{}}}),m=!t.includeFullCommentDetails&&(a.length>l.length||d.some(f=>"bodyPagination"in f)),p=[...s.pagination&&t.includeFullBody?[`PR body paginated at charOffset=${s.pagination.charOffset}, charLength=${s.pagination.charLength}, totalChars=${s.pagination.totalChars}. Re-call with prNumber and charOffset=${s.pagination.nextCharOffset??s.pagination.totalChars} to continue this body.`]:[],...m?[`PR comments are paginated/summarized to ${gd} comment(s) per search result with ${o} chars each. Use prNumber with content.comments={discussion:true,reviewInline:true} and charOffset to continue specific comment bodies.`]:[]];return{number:e.number,title:e.title,state:e.state,draft:e.draft??!1,merged:e.state==="closed"&&!!e.merged_at,createdAt:e.created_at,updatedAt:e.updated_at,closedAt:e.closed_at??void 0,mergedAt:e.merged_at,author:e.author,...e.labels?.length?{labels:e.labels.map(f=>({id:0,name:f,color:""}))}:{},headRef:e.head||"",...e.head_sha?{headSha:e.head_sha}:{},baseRef:e.base||"",...e.base_sha?{baseSha:e.base_sha}:{},body:s.value,...s.pagination?{bodyPagination:s.pagination}:{},comments:e.total_comment_count??a.length,...a.length>0&&{commentDetailsBreakdown:{inlineReview:c,discussion:u}},commits:e.commits?.length||0,additions:e.file_changes?.files.reduce((f,g)=>f+g.additions,0)||e.additions||0,deletions:e.file_changes?.files.reduce((f,g)=>f+g.deletions,0)||e.deletions||0,changedFiles:e.file_changes?.total_count||0,...e.file_changes&&{fileChanges:e.file_changes.files?.map(f=>({filename:f.filename,status:f.status,additions:f.additions,deletions:f.deletions,patch:f.patch}))},...e.reviews&&{reviews:e.reviews},...e.commits&&{commitDetails:e.commits},...d.length>0&&{commentDetails:d,commentDetailsShown:d.length,commentDetailsTotal:a.length,...m?{commentDetailsPaginated:!0}:{}},...(e._sanitization_warnings||p.length>0)&&{sanitizationWarnings:[...e._sanitization_warnings||[],...p]}}}function Cr(e){let t=Array.isArray(e.owner)?e.owner[0]||void 0:e.owner,n=Array.isArray(e.repo)?e.repo[0]||void 0:e.repo;return{owner:t,repo:n}}function Pr(e,t){let r=t.content?.patches,o=r?.mode??(t.reviewMode==="full"?"all":"none"),i=new Map(r?.ranges?.map(a=>[a.file,a])||[]),s=new Set([...r?.files??[],...i.keys()]);return o==="none"?e.map(a=>({...a,patch:void 0})):o==="selected"?e.filter(a=>s.has(a.filename)).map(a=>{let c=i.get(a.filename);return{...a,patch:a.patch?md(a.patch,c?.additions,c?.deletions):void 0}}):e.map(a=>({...a,patch:a.patch?fd(a.patch):a.patch}))}function pn(e){let t=e.content;return!!(e.reviewMode==="full"||t?.changedFiles||t?.patches?.mode&&t.patches.mode!=="none")}function Rd(e){return e.reviewMode==="full"?{discussion:!0,reviewInline:!0}:e.content?.comments??null}function Eo(e){let t=Rd(e);return t?t.discussion!==!1:!1}function Lo(e){let t=Rd(e);return t?t.reviewInline!==!1:!1}function Ao(e){let t=e.content;return!!(e.reviewMode==="full"||t?.commits)}function _o(e){let t=e.content;return!!(e.reviewMode==="full"||t?.reviews)}function Hs(e){return e.prNumber!==void 0||e.reviewMode==="full"?!0:pn(e)||Eo(e)||Lo(e)||Ao(e)||_o(e)}function Bs(e){return!!e.content?.comments?.includeBots}function ko(e){return e.replace(/<!--[\s\S]*?-->/g,"").replace(/^\[vc\]:\s*#.*$/gm,"").replace(/^[A-Za-z0-9+/]{120,}={0,2}$/gm,"").replace(/\n{3,}/g,`
17
17
 
18
- `).trim()}var ba=f(()=>{"use strict"});function Un(e){let t=e.toLowerCase();return t.endsWith("[bot]")||aL.has(t)}var aL,Ra=f(()=>{"use strict";aL=new Set(["vercel","pkg-pr-new","coderabbitai","github-actions","codecov","changeset-bot","netlify","sonarcloud","socket-security"])});async function Sa(e){let t=[],n=0,r=1,o=!0;do{let i=await e(r);n+=j(i.data),t.push(...i.data),o=i.data.length===100,r++}while(o);return{items:t,rawResponseChars:n}}async function ad(e,t,n,r){let o=await ie(r),{items:i,rawResponseChars:s}=await Sa(a=>o.rest.pulls.listFiles({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return W({total_count:i.length,files:i},s)}async function cL(e,t,n,r){let o=await ie(r),{items:i,rawResponseChars:s}=await Sa(a=>o.rest.pulls.listCommits({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return W(i,s)}async function lL(e,t,n,r){try{let i=await(await ie(r)).rest.repos.getCommit({owner:e,repo:t,ref:n});return W(i.data.files||[],i.data)}catch{return null}}async function dL(e,t,n){if(e.length===0)return[];let r=new Array(e.length),o=0,i=Array.from({length:Math.min(t,e.length)},async()=>{for(;;){let s=o++;if(s>=e.length)break;r[s]=await n(e[s],s)}});return await Promise.all(i),r}async function cd(e,t,n,r,o){let i=await cL(e,t,n,o);if(!i)return null;let s=le(i)??0,a=[...i].sort((l,u)=>{let d=l.commit.author?.date?new Date(l.commit.author.date).getTime():0;return(u.commit.author?.date?new Date(u.commit.author.date).getTime():0)-d}),c=await dL(a,uL,async l=>{let u=await lL(e,t,l.sha,o),d=[];return u&&(s+=le(u)??0,d=pi(u,r)),{sha:l.sha,message:l.commit.message,author:l.commit.author?.name||"unknown",date:l.commit.author?.date||"",files:d}});return W(c,s)}var uL,ld=f(()=>{"use strict";Ae();Ir();ue();uL=5});import{ContentSanitizer as ud}from"@octocodeai/octocode-engine/contentSanitizer";async function dd(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let p=await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:a});s+=j(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let l=o?i:i.filter(p=>!Un(p.user?.login??"")),u=i.length-l.length,d=l.map(p=>{let h=D.minifyMarkdownCore(ya(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:ud.sanitizeContent(h).content,created_at:p.created_at??"",updated_at:p.updated_at??"",commentType:"discussion"}}),m=[];return u>0&&m.push(`${u} bot comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:W(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:W([],0)}}}async function pd(e,t,n,r){try{let{items:o,rawResponseChars:i}=await Sa(s=>e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:s}));return W(o.map(s=>({id:String(s.id),user:s.user?.login??"unknown",state:s.state??"",body:ud.sanitizeContent(D.minifyMarkdownCore(ya(s.body??""))).content,submitted_at:s.submitted_at??void 0,commit_id:s.commit_id??void 0})),i)}catch{return W([],0)}}async function md(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let p=await e.rest.pulls.listReviewComments({owner:t,repo:n,pull_number:r,per_page:100,page:a});s+=j(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let l=o?i:i.filter(p=>!Un(p.user?.login??"")),u=i.length-l.length,d=l.map(p=>{let h=D.minifyMarkdownCore(ya(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:ud.sanitizeContent(h).content,created_at:p.created_at??"",updated_at:p.updated_at??"",commentType:"review_inline",path:p.path,line:p.line??p.original_line??void 0,...p.in_reply_to_id!=null?{in_reply_to_id:p.in_reply_to_id}:{}}}),m=[];return u>0&&m.push(`${u} bot inline comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:W(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:W([],0)}}}var Qy=f(()=>{"use strict";Ee();Ra();ue();ba();ld()});async function fd(e,t,n){let r=e,{prData:o,sanitizationWarnings:i}=od(r);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0;if(e.pull_request&&id(t))try{let{owner:l,repo:u}=di(t);if(l&&u){let d=await n.rest.pulls.get({owner:l,repo:u,pull_number:e.number});if(d.data&&(s+=j(d.data),o.head=d.data.head?.ref,o.head_sha=d.data.head?.sha,o.base=d.data.base?.ref,o.base_sha=d.data.base?.sha,o.draft=d.data.draft??!1,d.data.merged_at&&(o.merged_at=d.data.merged_at),o.additions=d.data.additions??0,o.deletions=d.data.deletions??0,Mr(t)||(o.file_changes={total_count:d.data.changed_files??0,files:[]}),Mr(t))){let m=await ad(l,u,e.number);m&&(s+=le(m)??0,m.files=pi(m.files,t),o.file_changes=m)}}}catch(l){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${l instanceof Error?l.message:String(l)}`]}let a=ma(t),c=fa(t);if(a||c){let{owner:l,repo:u}=di(t);if(l&&u){let d=sd(t),m=()=>Promise.resolve({comments:W([],0)}),[{comments:p,note:h},{comments:g,note:y}]=await Promise.all([a?dd(n,l,u,e.number,d):m(),c?md(n,l,u,e.number,d):m()]);o.comments=[...p,...g],s+=(le(p)??0)+(le(g)??0);let b=[h,y].filter(S=>typeof S=="string");b.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...b])}}if(ga(t))try{let{owner:l,repo:u}=di(t);if(l&&u){let d=await pd(n,l,u,e.number);s+=le(d)??0,o.reviews=d}}catch(l){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${l instanceof Error?l.message:String(l)}`]}if(ha(t))try{let{owner:l,repo:u}=di(t);if(l&&u){let d=await cd(l,u,e.number,t);d&&(s+=le(d)??0,o.commits=d)}}catch(l){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${l instanceof Error?l.message:String(l)}`]}return W(o,s)}async function mi(e,t,n,r){let{prData:o,sanitizationWarnings:i}=od(e);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0,a=t.owner,c=t.repo;if(o.additions="additions"in e?e.additions??0:0,o.deletions="deletions"in e?e.deletions??0:0,Mr(t)||(o.file_changes={total_count:"changed_files"in e?e.changed_files??0:0,files:[]}),Mr(t))try{let d=await ad(a,c,e.number,r);d&&(s+=le(d)??0,d.files=pi(d.files,t),o.file_changes=d)}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${d instanceof Error?d.message:String(d)}`]}let l=ma(t),u=fa(t);if(l||u){let d=sd(t),m=()=>Promise.resolve({comments:W([],0)}),[{comments:p,note:h},{comments:g,note:y}]=await Promise.all([l?dd(n,a,c,e.number,d):m(),u?md(n,a,c,e.number,d):m()]);o.comments=[...p,...g],s+=(le(p)??0)+(le(g)??0);let b=[h,y].filter(S=>typeof S=="string");b.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...b])}if(ga(t))try{let d=await pd(n,a,c,e.number);s+=le(d)??0,o.reviews=d}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${d instanceof Error?d.message:String(d)}`]}if(ha(t))try{let d=await cd(a,c,e.number,t,r);d&&(s+=le(d)??0,o.commits=d)}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${d instanceof Error?d.message:String(d)}`]}return W(o,s)}var jy=f(()=>{"use strict";Ir();ue();ba();Qy();ld()});var Pa=f(()=>{"use strict";ba();jy()});function pL(e,t,n){return{pull_requests:[],total_count:0,error:t,status:e.status,hints:n,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}}async function By(e,t){let{owner:n,repo:r,prNumber:o}=e;if(!n||!r||!o)return{pull_requests:[],total_count:0,error:qe.PR_REQUIRED_PARAMS.message,hints:["Provide owner, repo, and prNumber"]};if(Array.isArray(n)||Array.isArray(r))return{pull_requests:[],total_count:0,error:qe.PR_SINGLE_VALUES.message,hints:["Do not use array for owner or repo when fetching by number"]};try{let i=await ie(t),s=await i.rest.pulls.get({owner:n,repo:r,pull_number:o}),a=s.data,c=await mi(a,e,i,t);return{pull_requests:[Fr(c,{includeFullBody:!0,includeFullCommentDetails:!0})],total_count:1,rawResponseChars:j(s.data)+(le(c)??0)}}catch(i){let s=ne(i);return pL(s,qe.PULL_REQUEST_FETCH_FAILED.message(o,s.error),[`Verify that pull request #${o} exists in ${n}/${r}`,"Check if you have access to this repository","Ensure the PR number is correct"])}}var zy=f(()=>{"use strict";at();Ae();rt();lt();Ir();Pa();ue()});function hd(e,t,n){return{pull_requests:[],total_count:0,error:t,status:e.status,hints:n,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}}function gd(e){let t=Math.min(e.limit||30,100);return{pull_requests:[],total_count:0,pagination:{currentPage:e.page||1,totalPages:0,perPage:t,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}}}async function Uy(e,t){try{let n=t.owner,r=t.repo,o=Math.min(t.limit||30,100),i=t.page||1,s=await e.rest.pulls.list({owner:n,repo:r,state:(t.state==="merged"?"closed":t.state)||"open",per_page:o,page:i,sort:t.sort==="updated"?"updated":"created",direction:t.order||"desc",...t.head&&{head:t.head},...t.base&&{base:t.base}}),a=await Promise.all(s.data.map(async m=>await mi(m,t,e))),c=a.reduce((m,p)=>m+(le(p)??0),0),l=a.map(m=>Fr(m,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:t.charOffset,charLength:t.charLength})),u=s.data.length===o,d=(i-1)*o+l.length;return{pull_requests:l,total_count:l.length,pagination:{currentPage:i,totalPages:u?i+1:i,perPage:o,totalMatches:d+(u?1:0),reachableTotalMatches:d,totalMatchesKind:u?"lowerBound":"exact",hasMore:u,...u?{nextPage:i+1}:{}},rawResponseChars:j(s.data)+c}}catch(n){if(vt(n))return gd(t);let r=ne(n);return hd(r,qe.PULL_REQUEST_LIST_FAILED.message(r.error),["Verify repository access and authentication"])}}var $y=f(()=>{"use strict";ae();at();rt();ue();Ir();Pa()});async function mL(e,t){if(!t.owner||!t.repo||Array.isArray(t.owner)||Array.isArray(t.repo))return t;try{let n=await e.rest.repos.get({owner:t.owner,repo:t.repo}),[r,o]=n.data.full_name?.split("/")??[];return!r||!o||r===t.owner&&o===t.repo?t:{...t,owner:r,repo:o}}catch{return t}}function fL(e,t,n="anon"){return ke("gh-api-prs",{query:e.query,owner:e.owner,repo:e.repo,prNumber:e.prNumber,state:e.state,draft:e.draft,merged:e.merged,author:e.author,assignee:e.assignee,mentions:e.mentions,commenter:e.commenter,involves:e.involves,"reviewed-by":e["reviewed-by"],"review-requested":e["review-requested"],head:e.head,base:e.base,created:e.created,updated:e.updated,"merged-at":e["merged-at"],closed:e.closed,comments:e.comments,reactions:e.reactions,interactions:e.interactions,label:e.label,milestone:e.milestone,language:e.language,checks:e.checks,review:e.review,locked:e.locked,visibility:e.visibility,"team-mentions":e["team-mentions"],project:e.project,archived:e.archived,"no-assignee":e["no-assignee"],"no-label":e["no-label"],"no-milestone":e["no-milestone"],"no-project":e["no-project"],match:e.match,sort:e.sort,order:e.order,limit:e.limit,page:e.page,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,auth:n},t)}async function qy(e,t,n){let r=await He(t),o=fL(e,n,r);return await Qe(o,async()=>await hL(e,t,n),{shouldCache:s=>!s.error})}async function hL(e,t,n){try{if(e.prNumber&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await By(e,t);let r=await ie(t);if(!Au(e)&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await Uy(r,e);let i=await mL(r,e),s=vu(i);if(!s)return{pull_requests:[],total_count:0,error:qe.NO_VALID_PARAMETERS.message,hints:["Provide search query or filters like owner/repo"]};let a=i.sort&&i.sort!=="best-match"?i.sort:void 0,c=Math.min(i.limit||30,100),l=i.page||1,u=s,d=await r.rest.search.issuesAndPullRequests({q:s,sort:a,order:e.order||"desc",per_page:c,page:l}),m=d.data.items?.filter(_=>!!_.pull_request)||[],p=await Promise.all(m.map(async _=>await fd(_,i,r))),h=p.reduce((_,w)=>_+(le(w)??0),0),g=p.map(_=>Fr(_,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:i.charOffset,charLength:i.charLength})),y=d.data.total_count,b=Math.min(y,1e3),S=Math.min(Math.ceil(b/c),10),x=Math.min(l,Math.max(1,S)),k=x<S,E=Math.min(b,S*c);return{pull_requests:g,total_count:d.data.total_count,effectiveQuery:u,...d.data.incomplete_results&&{incomplete_results:!0},pagination:{currentPage:x,totalPages:S,perPage:c,totalMatches:b,reportedTotalMatches:y,reachableTotalMatches:E,totalMatchesKind:"reported",totalMatchesCapped:y>b,hasMore:k,...k?{nextPage:x+1}:{}},rawResponseChars:j(d.data)+h}}catch(r){if(vt(r))return gd(e);let o=ne(r);return hd(o,qe.PULL_REQUEST_SEARCH_FAILED.message(o.error),["Verify authentication and search parameters"])}}var Wy=f(()=>{"use strict";ae();at();Ae();rt();kr();lt();ue();Ir();Pa();zy();$y()});function gL(e,t,n=_e){let r=(e.pull_requests||[]).map(a=>({number:a.number,title:a.title,body:a.body||null,...a.body_pagination&&{bodyPagination:a.body_pagination},url:a.url,state:a.merged?"merged":a.state,draft:a.draft||!1,author:a.author,assignees:a.assignees?.map(c=>typeof c=="string"?c:String(c.login??""))||[],labels:a.labels?.map(c=>typeof c=="string"?c:c.name??"")||[],sourceBranch:a.head_ref||"",targetBranch:a.base_ref||"",sourceSha:a.head_sha,targetSha:a.base_sha,createdAt:a.created_at,updatedAt:a.updated_at,closedAt:a.closed_at,mergedAt:a.merged_at,commentsCount:a.comments,changedFilesCount:a.changed_files,additions:a.additions,deletions:a.deletions,comments:a.comment_details?.map(c=>({id:c.id,author:c.user,body:c.body,...c.body_pagination&&{bodyPagination:c.body_pagination},createdAt:c.created_at,updatedAt:c.updated_at,...c.commentType&&{commentType:c.commentType},...c.path&&{path:c.path},...c.line!==void 0&&{line:c.line},...c.in_reply_to_id!=null&&{in_reply_to_id:c.in_reply_to_id}})),reviews:a.reviews?.map(c=>({id:c.id,user:c.user,state:c.state,body:c.body,submittedAt:c.submitted_at,commitId:c.commit_id})),commits:a.commit_details?.map(c=>({sha:c.sha,message:c.message,author:c.author,date:c.date})),fileChanges:a.file_changes?.map(c=>({path:c.filename,status:c.status,additions:c.additions,deletions:c.deletions,patch:c.patch})),...Array.isArray(a._sanitization_warnings)&&a._sanitization_warnings.length>0?{sanitizationWarnings:a._sanitization_warnings}:{}})),{owner:o,repo:i}=t.projectId?n(t.projectId):{owner:void 0,repo:void 0},s=o||t.owner;return{items:r,totalCount:e.total_count||r.length,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...si(e.pagination)},repositoryContext:s&&i?{owner:s,repo:i}:void 0}}async function Vy(e,t,n=_e){let{owner:r,repo:o}=e.projectId?n(e.projectId):{owner:void 0,repo:void 0},s={owner:r||e.owner,repo:o,query:e.query,prNumber:e.number,state:e.state==="merged"?"closed":e.state==="all"?void 0:e.state,merged:e.state==="merged"?!0:void 0,draft:e.draft,author:e.author,assignee:e.assignee,commenter:e.commenter,involves:e.involves,mentions:e.mentions,"reviewed-by":e.reviewedBy,"review-requested":e.reviewRequested,label:e.labels,"no-assignee":e.noAssignee,"no-label":e.noLabel,"no-milestone":e.noMilestone,"no-project":e.noProject,base:e.baseBranch,head:e.headBranch,created:e.created,updated:e.updated,closed:e.closed,"merged-at":e.mergedAt,comments:e.comments,reactions:e.reactions,interactions:e.interactions,match:e.match,milestone:e.milestone,language:e.language,checks:e.checks,review:e.review,locked:e.locked,visibility:e.visibility,"team-mentions":e.teamMentions,project:e.project,archived:e.archived,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,sort:e.sort,order:e.order,limit:e.limit,page:e.page,charOffset:e.charOffset,charLength:e.charLength},a=await qy(s,t);return a.error?qt({error:typeof a.error=="string"?a.error:String(a.error),status:a.status||500,hints:a.hints,rateLimitRemaining:a.rateLimitRemaining,rateLimitReset:a.rateLimitReset,retryAfter:a.retryAfter}):{data:gL(a,e,n),status:200,provider:"github",rawResponseChars:a.rawResponseChars??j(a)}}var Ky=f(()=>{"use strict";Wy();ue();Lt();Lt();Nu()});var Sn,fi=f(()=>{"use strict";Sn={ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200}});function Ca(e,t){return e.hasMore?[`Page ${e.currentPage}/${e.totalPages}. Next: page=${e.currentPage+1}`]:[]}var yd=f(()=>{"use strict"});function Yy(e,t){let n=e._cachedItems;if(!n||n.length===0){let{_cachedItems:M,...A}=e;return A}let r=t.itemsPerPage??Sn.ENTRIES_PER_PAGE,o=t.page??1,i=n.length,s=Math.max(1,Math.ceil(i/r)),a=(o-1)*r,c=Math.min(a+r,i),l=n.slice(a,c),u=Object.create(null),d=e.path==="/"?"":e.path,m=M=>{let A=M;d&&M.startsWith(d)&&(A=M.slice(d.length),A.startsWith("/")&&(A=A.slice(1)));let q=A.lastIndexOf("/");return q===-1?".":A.slice(0,q)},p=M=>{let A=M.lastIndexOf("/");return A===-1?M:M.slice(A+1)};for(let M of l){let A=m(M.path);u[A]||(u[A]={files:[],folders:[]});let q=p(M.path);M.type==="file"?u[A].files.push(q):u[A].folders.push(q)}for(let M of Object.keys(u)){let A=u[M];A&&(A.files.sort(),A.folders.sort())}let h=Object.create(null),g=Object.keys(u).sort((M,A)=>M==="."?-1:A==="."?1:M.localeCompare(A));for(let M of g){let A=u[M];A&&(h[M]=A)}let y=l.filter(M=>M.type==="file").length,b=l.filter(M=>M.type==="dir").length,S=n.filter(M=>M.type==="file").length,x=n.filter(M=>M.type==="dir").length,k=o<s,E={currentPage:o,totalPages:s,hasMore:k,...k?{nextPage:o+1}:{},entriesPerPage:r,totalEntries:i},_=Ca(E,{owner:e.owner,repo:e.repo,branch:e.branch,path:d,depth:t.maxDepth??1,pageFiles:y,pageFolders:b,allFiles:S,allFolders:x}),w,G=e._cachedFileSizeMap;if(G){let M=new Set(l.filter(H=>H.type==="file").map(H=>H.path)),A=e.path==="/"?"":e.path,q=Object.create(null);for(let[H,K]of Object.entries(G))for(let[I,ye]of Object.entries(K)){let Te=H==="."?A?`${A}/${I}`:I:A?`${A}/${H}/${I}`:`${H}/${I}`;M.has(Te)&&(q[H]||(q[H]=Object.create(null)),q[H][I]=ye)}Object.keys(q).length>0&&(w=q)}return{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,apiSource:e.apiSource,summary:{totalFiles:S,totalFolders:x,truncated:k,filtered:!0,originalCount:i},structure:h,...w!==void 0&&{fileSizeMap:w},...G!==void 0&&{_cachedFileSizeMap:G},pagination:E,hints:_,rawResponseChars:e.rawResponseChars}}var Xy=f(()=>{"use strict";fi();yd()});import{RequestError as bL}from"octokit";function Jy(e){return e instanceof bL&&RL.has(e.status)}function bd(e,t){try{Object.defineProperty(e,Zy,{value:t,enumerable:!1,configurable:!0})}catch{}return e}function hi(e){if(typeof e!="object"||e===null)return 0;let t=e[Zy];return typeof t=="number"&&Number.isFinite(t)&&t>0?t:0}async function gi(e,t,n,r,o,i,s,a=new Set){if(i>s||a.has(o))return bd(W([],0),0);a.add(o);let c;try{c=await e.rest.repos.getContent({owner:t,repo:n,path:o||"",ref:r})}catch(h){if(Jy(h))throw h;return bd(W([],0),1)}let l=j(c.data),d=(Array.isArray(c.data)?c.data:[c.data]).filter(h=>h.type==="file"||h.type==="dir").map(h=>({name:h.name,path:h.path,type:h.type,size:"size"in h?h.size:void 0,download_url:"download_url"in h?h.download_url:void 0,url:h.url,html_url:h.html_url,git_url:h.git_url,sha:h.sha})),m=[...d],p=0;if(i<s){let h=d.filter(y=>y.type==="dir"),g=3;for(let y=0;y<h.length;y+=g){let b=h.slice(y,y+g),S=await Promise.allSettled(b.map(x=>gi(e,t,n,r,x.path,i+1,s,a)));for(let x of S)if(x.status==="fulfilled"){let k=x.value;l+=le(k)??0,p+=hi(k),m.push(...k)}else{if(Jy(x.reason))throw x.reason;p+=1}}}return bd(W(m,l),p)}var Zy,RL,eb=f(()=>{"use strict";ue();Zy=Symbol.for("octocode.recursiveFetchFailures"),RL=new Set([401,403,429])});import{RequestError as SL}from"octokit";function PL(e,t){let n=(t.pathPrefix??"").replace(/^\/+|\/+$/g,""),r=n?`${n}/`:"",o=Math.max(1,t.maxDepth),i=[];for(let s of e){if(!s.path||s.type!=="blob"&&s.type!=="tree")continue;let a=s.path;if(n){if(s.path===n||!s.path.startsWith(r))continue;a=s.path.slice(r.length)}let c=a.split("/").filter(Boolean).length;if(c===0||c>o)continue;let l=a.lastIndexOf("/"),u=l===-1?a:a.slice(l+1);i.push({name:u,path:s.path,type:s.type==="tree"?"dir":"file",size:s.type==="blob"?s.size:void 0,sha:s.sha,url:s.url,html_url:void 0,git_url:void 0,download_url:void 0})}return i}function tb(e=process.env){return e.OCTOCODE_GH_STRUCTURE_TREES!=="0"}async function nb(e,t){let{data:n}=await e.rest.repos.getBranch({owner:t.owner,repo:t.repo,branch:t.workingBranch}),r=n.commit.commit.tree.sha;if(!r)throw new Error(`Could not resolve tree SHA for ${t.owner}/${t.repo}@${t.workingBranch}`);let o;try{o=await e.rest.git.getTree({owner:t.owner,repo:t.repo,tree_sha:r,recursive:"true",...t.ifNoneMatch?{headers:{"If-None-Match":t.ifNoneMatch}}:{}})}catch(c){if(c instanceof SL&&c.status===304)return{items:[],truncated:!1,rawResponseChars:0,etag:t.ifNoneMatch,notModified:!0};throw c}let i=o.data,s=vr(o.headers);return{items:PL(i.tree,{pathPrefix:t.pathPrefix,maxDepth:t.maxDepth}),truncated:!!i.truncated,rawResponseChars:j(n)+j(i),...s?{etag:s}:{}}}var rb=f(()=>{"use strict";ue();Ar()});import{RequestError as ob}from"octokit";async function Rd(e,t,n,r,o,i,s){let a,c;try{o?a=o:(c=await We(t,n,i),a=c)}catch(l){let u=ne(l);return{error:bn.NOT_FOUND.message(t,n,u.error),status:u.status}}try{let l=await e.rest.repos.getContent({owner:t,repo:n,path:r||"",ref:a,...s?{headers:{"If-None-Match":s}}:{}}),u=vr(l.headers);return{data:l.data,workingBranch:a,...c!==void 0?{repoDefaultBranch:c}:{},...u?{etag:u}:{}}}catch(l){if(l instanceof ob&&l.status===304)return{data:null,workingBranch:a,...c!==void 0?{repoDefaultBranch:c}:{},etag:s,notModified:!0};if(!(l instanceof ob&&l.status===404)){let d=ne(l);return{error:bn.ACCESS_FAILED.message(t,n,d.error),status:d.status,rateLimitRemaining:d.rateLimitRemaining,rateLimitReset:d.rateLimitReset,retryAfter:d.retryAfter}}let u=ne(l);return{error:bn.PATH_NOT_FOUND.message(r,t,n,a),status:u.status}}}function ib(e){return e.map(t=>{let n=t;return{name:n.name,path:n.path,type:n.type,size:"size"in n?n.size:void 0,download_url:"download_url"in n?n.download_url:void 0,url:n.url,html_url:n.html_url,git_url:n.git_url,sha:n.sha}})}var sb=f(()=>{"use strict";rt();at();Ae();Ar()});function CL(e,t){let n=Object.create(null),r=a=>{let c=a;t&&a.startsWith(t)&&(c=a.slice(t.length),c.startsWith("/")&&(c=c.slice(1)));let l=c.lastIndexOf("/");return l===-1?".":c.slice(0,l)},o=a=>{let c=a.lastIndexOf("/");return c===-1?a:a.slice(c+1)};for(let a of e){let c=r(a.path);n[c]||(n[c]={files:[],folders:[]});let l=o(a.path);a.type==="file"?n[c].files.push(l):n[c].folders.push(l)}for(let a of Object.values(n))a&&(a.files.sort(),a.folders.sort());let i=Object.keys(n).sort((a,c)=>a==="."?-1:c==="."?1:a.localeCompare(c)),s=Object.create(null);for(let a of i){let c=n[a];c&&(s[a]=c)}return s}function ab(e,t){let n=Object.create(null);for(let r of e){if(r.type!=="file"||r.size===void 0)continue;let o=r.path;t&&r.path.startsWith(t)&&(o=r.path.slice(t.length).replace(/^\//,""));let i=o.lastIndexOf("/"),s=i===-1?".":o.slice(0,i),a=i===-1?o:o.slice(i+1);n[s]||(n[s]=Object.create(null)),n[s][a]=r.size}return n}function xa(e){let{owner:t,repo:n,workingBranch:r,repoDefaultBranch:o,cleanPath:i,depth:s,partialTreeFailures:a,incompleteTree:c,rawResponseChars:l,includeSizes:u,extraHints:d=[]}=e,m=e.allItems.filter(I=>I.type==="dir"?!ri(I.name):!Or(I.path));m.sort((I,ye)=>{if(I.type!==ye.type)return I.type==="dir"?-1:1;let Te=I.path.split("/").length,nn=ye.path.split("/").length;return Te!==nn?Te-nn:I.path.localeCompare(ye.path)});let p=e.itemsPerPage??Sn.ENTRIES_PER_PAGE,h=e.page??1,g=m.length,y=Math.max(1,Math.ceil(g/p)),b=(h-1)*p,S=Math.min(b+p,g),x=m.slice(b,S),k=CL(x,i),E=u?ab(m,i):void 0,_=E!==void 0?ab(x,i):void 0,w=x.filter(I=>I.type==="file").length,G=x.filter(I=>I.type==="dir").length,M=m.filter(I=>I.type==="file").length,A=m.filter(I=>I.type==="dir").length,q=h<y,H={currentPage:h,totalPages:y,hasMore:q,...q?{nextPage:h+1}:{},entriesPerPage:p,totalEntries:g},K=Ca(H,{owner:t,repo:n,branch:r,path:i,depth:s,pageFiles:w,pageFolders:G,allFiles:M,allFolders:A});a>0&&K.unshift(`Partial tree: ${a} subdirectory subtree(s) failed to load and are missing from this structure. The listing is incomplete \u2014 retry or narrow the path/depth.`);for(let I of d)K.unshift(I);return{owner:t,repo:n,branch:r,...o!==void 0&&{defaultBranch:o},path:i||"/",apiSource:!0,summary:{totalFiles:M,totalFolders:A,truncated:q,filtered:!0,originalCount:m.length,...c?{incompleteTree:!0}:{}},structure:k,..._!==void 0&&{fileSizeMap:_},...E!==void 0&&{_cachedFileSizeMap:E},pagination:H,hints:K,rawResponseChars:l,_cachedItems:m.map(I=>({path:I.path,type:I.type}))}}var cb=f(()=>{"use strict";fi();yd();oi()});async function Sd(e,t,n){let r=await He(t),o=ke("gh-repo-structure-api",{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,depth:e.maxDepth,auth:r},n),i=await ta(o,async({ifNoneMatch:s})=>{let a=await xL({...e,itemsPerPage:e.itemsPerPage??Sn.ENTRIES_PER_PAGE,page:e.page??1},t,s);return{value:a.result,etag:a.etag,notModified:a.notModified}},{shouldCache:s=>!("error"in s)});return!("error"in i)&&i.structure?Yy(i,e):i}async function xL(e,t,n){try{let r=await ie(t),{owner:o,repo:i,branch:s,path:a="",maxDepth:c=1}=e,l=a.replace(/^\/+|\/+$/g,"");if(c>1&&tb())return await wL(r,e,l,c,t,n);let u=await Rd(r,o,i,l,s,t,c===1?n:void 0);if("error"in u)return{result:u};if(u.notModified)return{result:{error:"not-modified",status:304},etag:u.etag??n,notModified:!0};let{data:d,workingBranch:m,repoDefaultBranch:p,etag:h}=u,g=j(d),y=Array.isArray(d)?d:[d],b=ib(y),S=0;if(c>1){let x=await gi(r,o,i,m,l,1,c);S=hi(x),g=le(x)??0,b=x}return{result:xa({owner:o,repo:i,workingBranch:m,repoDefaultBranch:p,cleanPath:l,depth:c,allItems:b,partialTreeFailures:S,incompleteTree:!1,rawResponseChars:g,includeSizes:e.includeSizes===!0,itemsPerPage:e.itemsPerPage,page:e.page}),...c===1&&h?{etag:h}:{}}}catch(r){let o=ne(r);return{result:{error:bn.STRUCTURE_EXPLORATION_FAILED.message,status:o.status,rateLimitRemaining:o.rateLimitRemaining,rateLimitReset:o.rateLimitReset,retryAfter:o.retryAfter}}}}async function wL(e,t,n,r,o,i){let{owner:s,repo:a,branch:c}=t,l,u;try{c?l=c:(u=await We(s,a,o),l=u)}catch(b){let S=ne(b);return{result:{error:bn.NOT_FOUND.message(s,a,S.error),status:S.status}}}let d;try{d=await nb(e,{owner:s,repo:a,workingBranch:l,pathPrefix:n,maxDepth:r,ifNoneMatch:i})}catch(b){let S=await Rd(e,s,a,n,l,o);if("error"in S)return{result:S};let x=await gi(e,s,a,S.workingBranch,n,1,r);return{result:xa({owner:s,repo:a,workingBranch:S.workingBranch,repoDefaultBranch:u,cleanPath:n,depth:r,allItems:x,partialTreeFailures:hi(x),incompleteTree:!1,rawResponseChars:le(x)??0,includeSizes:t.includeSizes===!0,itemsPerPage:t.itemsPerPage,page:t.page,extraHints:[`Git Trees fetch failed (${b instanceof Error?b.message:String(b)}); used Contents recursion instead.`]})}}if(d.notModified)return{result:{error:"not-modified",status:304},etag:d.etag??i,notModified:!0};let m=d.items,p=0,h=d.rawResponseChars,g=d.truncated,y=[];if(g){y.push("Git Trees response was truncated by GitHub \u2014 this structure listing may be incomplete. Narrow path/depth or set OCTOCODE_GH_STRUCTURE_TREES=0 for Contents recursion.");try{let b=await gi(e,s,a,l,n,1,r);p=hi(b),h+=le(b)??0,m=[...m,...b].filter((x,k,E)=>E.findIndex(_=>_.path===x.path)===k)}catch{}}return{result:xa({owner:s,repo:a,workingBranch:l,repoDefaultBranch:u,cleanPath:n,depth:r,allItems:m,partialTreeFailures:p,incompleteTree:g,rawResponseChars:h,includeSizes:t.includeSizes===!0,itemsPerPage:t.itemsPerPage,page:t.page,extraHints:y}),...d.etag&&!g?{etag:d.etag}:{}}}var lb=f(()=>{"use strict";fi();Ae();rt();lt();at();ue();Xy();eb();rb();sb();cb()});var ub=f(()=>{"use strict";lb()});function TL(e){return{projectPath:`${e.owner}/${e.repo}`,branch:e.branch||"",...e.defaultBranch!==void 0&&{defaultBranch:e.defaultBranch},path:e.path||"/",structure:e.structure||{},...e.fileSizeMap!==void 0&&{fileSizeMap:e.fileSizeMap},summary:{totalFiles:e.summary?.totalFiles||0,totalFolders:e.summary?.totalFolders||0,truncated:e.summary?.truncated||!1},pagination:e.pagination,hints:e.hints}}async function db(e,t,n=_e){let{owner:r,repo:o}=n(e.projectId);if(!r||!o)return{error:"Project ID is required for repository structure",status:400,provider:"github"};let i={owner:r,repo:o,branch:e.ref||"HEAD",path:e.path,maxDepth:e.depth,itemsPerPage:e.itemsPerPage,page:e.page,includeSizes:e.includeSizes,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},s=await Sd(i,t);return"error"in s?na(s)??{error:"Unknown GitHub API error",status:500,provider:"github"}:{data:TL(s),status:200,provider:"github",rawResponseChars:s.rawResponseChars??j(s)}}var pb=f(()=>{"use strict";ub();ue();Lt();Lt()});var mb,fb=f(()=>{"use strict";mb={github:{cloneRepo:!0,fetchDirectoryToDisk:!0,requiresScopedCodeSearch:!1,supportsMergedState:!1,supportsMultiTopicSearch:!0}}});var wa,hb=f(()=>{"use strict";cy();Fy();Ky();pb();rt();Ae();fb();Lt();wa=class{type="github";capabilities=mb.github;authInfo;constructor(t){t?.authInfo?this.authInfo=t.authInfo:t?.token&&(this.authInfo={token:t.token})}async searchCode(t){try{return await sy(t,this.authInfo,_e)}catch(n){return this.handleError(n)}}async getFileContent(t){try{return await _y(t,this.authInfo,_e)}catch(n){return this.handleError(n)}}async searchRepos(t){try{return await ay(t,this.authInfo)}catch(n){return this.handleError(n)}}async searchPullRequests(t){try{return await Vy(t,this.authInfo,_e)}catch(n){return this.handleError(n)}}async getRepoStructure(t){try{return await db(t,this.authInfo,_e)}catch(n){return this.handleError(n)}}async resolveDefaultBranch(t){let{owner:n,repo:r}=_e(t);if(!n||!r)throw new Error(`Cannot resolve default branch: invalid projectId '${t}'.`);return We(n,r,this.authInfo)}handleError(t){let n=ne(t);return qt(n)}}});import{createHash as kL}from"crypto";function gb(e){return Date.now()-e.createdAt<OL}function vL(){for(let[e,t]of Ft.entries())gb(t)||Ft.delete(e);if(Ft.size>Pd){let e=[...Ft.entries()].sort((n,r)=>n[1].lastAccessedAt-r[1].lastAccessedAt),t=Ft.size-Pd;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&Ft.delete(r[0])}}}function AL(e){return e?kL("sha256").update(e).digest("hex").slice(0,16):"default"}function LL(e){if(e==="default")return e;try{let t=new URL(e),n=`${t.protocol}//${t.hostname.toLowerCase()}`;return t.port&&(n+=`:${t.port}`),n+=t.pathname.replace(/\/+$/,"")||"",n}catch{return e.replace(/\/+$/,"")}}function _L(e,t){let n=LL(t?.baseUrl||"default"),r=AL(t?.token||t?.authInfo?.token);return`${e}:${n}:${r}`}function Cd(e="github",t){if(e!=="github")throw new Error(`Unknown provider type: '${e}'. Only 'github' is supported.`);let n=_L(e,t),r=Ft.get(n);if(r&&gb(r))return r.lastAccessedAt=Date.now(),r.provider;r&&Ft.delete(n),Ft.size>=Pd&&vL();let o=new wa({...t,type:e}),i=Date.now();return Ft.set(n,{provider:o,createdAt:i,lastAccessedAt:i}),o}async function yb(){try{return Cd("github"),[{provider:"github",ok:!0}]}catch(e){let t=e instanceof Error?e.message:String(e);return process.stderr.write(`\u26A0\uFE0F github provider failed to initialize: ${t}
19
- `),[{provider:"github",ok:!1,error:t}]}}var OL,Pd,Ft,xd=f(()=>{"use strict";hb();OL=3600*1e3,Pd=20,Ft=new Map});async function bb(e,t={}){if(!Array.isArray(e))throw new Error($o.PROMISES_NOT_ARRAY.message);if(e.length===0)return[];let{timeout:n=3e4,concurrency:r=e.length,onError:o}=t;if(n<=0)throw new Error($o.TIMEOUT_NOT_POSITIVE.message);if(r<=0)throw new Error($o.CONCURRENCY_NOT_POSITIVE.message);let i=e.map((c,l)=>typeof c=="function"?c:()=>Promise.reject(new Error(Wo.NOT_A_FUNCTION.message(l))));if(r<i.length)return FL(i,r,n,o);let s=i.map((c,l)=>Rb(c,l,n,o));return(await Promise.allSettled(s)).map((c,l)=>c.status==="fulfilled"?c.value:{success:!1,error:c.reason instanceof Error?c.reason:new Error(String(c.reason)),index:l})}async function Rb(e,t,n,r){let o,i=()=>{o!==void 0&&(clearTimeout(o),o=void 0)};try{let s=new Promise((c,l)=>{o=setTimeout(()=>{l(new Error(Wo.TIMEOUT.message(t,n)))},n)}),a=await Promise.race([e(),s]);return i(),{success:!0,data:a,index:t}}catch(s){i();let a=s instanceof Error?s:new Error(String(s));if(r)try{r(a,t)}catch(c){}return{success:!1,error:a,index:t}}}async function FL(e,t,n,r){let o=new Array(e.length),i=0,s=async()=>{for(;i<e.length;){let c=i++,l=e[c];if(!l){o[c]={success:!1,error:new Error(Wo.FUNCTION_UNDEFINED.message),index:c};continue}try{let u=await Rb(l,c,n,r);o[c]=u}catch(u){o[c]={success:!1,error:u instanceof Error?u:new Error(String(u)),index:c}}}},a=[];for(let c=0;c<Math.min(t,e.length);c++)a.push(s());return await Promise.all(a),o}var Sb=f(()=>{"use strict";at()});function Cb(e,t,n){if(e<=1)return Pb;let r=Math.min(Math.max(t,1),e),o=Math.ceil(e/r),i=Math.floor(IL/o),s=Math.max(ML,Math.min(i,Pb));return n?Math.max(s,n):s}async function xb(e,t,n,r){let o=[],i=[];if(!e||e.length===0)return{results:o,errors:i};let s=e.map((c,l)=>()=>t(c,l).then(u=>({result:u,queryIndex:l,originalQuery:c})));return(await bb(s,{timeout:Cb(e.length,n,r),continueOnError:!0,concurrency:n,onError:(c,l)=>{i.push({queryIndex:l,error:c.message})}})).forEach(c=>{c.success&&c.data?o.push({result:c.data.result,queryIndex:c.data.queryIndex,originalQuery:c.data.originalQuery}):c.success&&i.push({queryIndex:c.index,error:"Query produced no result"})}),{results:o,errors:i}}function yi(e,t){let r=e.id;return typeof r=="string"&&r.trim().length>0?r:typeof r=="number"&&Number.isFinite(r)?String(r):`q${t+1}`}function bi(e){let t=new Set;return e.map((n,r)=>{let o=yi(n,r);if(t.has(o)){let i=2;for(;t.has(`${o}#${i}`);)i+=1;o=`${o}#${i}`}return t.add(o),o})}var Pb,IL,ML,wd=f(()=>{"use strict";Sb();Pb=parseInt(process.env.OCTOCODE_BULK_QUERY_TIMEOUT_MS||"60000",10)||6e4,IL=parseInt(process.env.OCTOCODE_TOOL_TIMEOUT_MS||"60000",10)||6e4,ML=5e3});import{ContentSanitizer as DL}from"@octocodeai/octocode-engine/contentSanitizer";import{getConfigSync as NL}from"@octocodeai/config";function GL(){try{return NL().output.format}catch{return"yaml"}}function xt(e){if(e==null)return e;if(typeof e=="string")return DL.sanitizeContent(e).content;if(Array.isArray(e))return e.map(t=>xt(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=xt(r);return t}return e}function HL(e,t){if(t==="json")return JSON.stringify(e);let n=Array.isArray(e.content)?e.content.map(r=>"text"in r&&typeof r.text=="string"?r.text:"").filter(r=>r.length>0):[];return n.length>0?n.join(`
18
+ `).trim()}import{ContentSanitizer as $s}from"@octocodeai/octocode-engine/contentSanitizer";var xS=new Set(["vercel","pkg-pr-new","coderabbitai","github-actions","codecov","changeset-bot","netlify","sonarcloud","socket-security"]);function Gt(e){let t=e.toLowerCase();return t.endsWith("[bot]")||xS.has(t)}async function Io(e){let t=[],n=0,r=1,o=!0;do{let i=await e(r);n+=N(i.data),t.push(...i.data),o=i.data.length===100,r++}while(o);return{items:t,rawResponseChars:n}}async function Us(e,t,n,r){let o=await U(r),{items:i,rawResponseChars:s}=await Io(a=>o.rest.pulls.listFiles({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return Q({total_count:i.length,files:i},s)}async function wS(e,t,n,r){let o=await U(r),{items:i,rawResponseChars:s}=await Io(a=>o.rest.pulls.listCommits({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return Q(i,s)}async function TS(e,t,n,r){try{let i=await(await U(r)).rest.repos.getCommit({owner:e,repo:t,ref:n});return Q(i.data.files||[],i.data)}catch{return null}}var ES=5;async function LS(e,t,n){if(e.length===0)return[];let r=new Array(e.length),o=0,i=Array.from({length:Math.min(t,e.length)},async()=>{for(;;){let s=o++;if(s>=e.length)break;r[s]=await n(e[s],s)}});return await Promise.all(i),r}async function Qs(e,t,n,r,o){let i=await wS(e,t,n,o);if(!i)return null;let s=te(i)??0,a=[...i].sort((u,l)=>{let d=u.commit.author?.date?new Date(u.commit.author.date).getTime():0;return(l.commit.author?.date?new Date(l.commit.author.date).getTime():0)-d}),c=await LS(a,ES,async u=>{let l=await TS(e,t,u.sha,o),d=[];return l&&(s+=te(l)??0,d=Pr(l,r)),{sha:u.sha,message:u.commit.message,author:u.commit.author?.name||"unknown",date:u.commit.author?.date||"",files:d}});return Q(c,s)}async function js(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let p=await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:a});s+=N(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let u=o?i:i.filter(p=>!Gt(p.user?.login??"")),l=i.length-u.length,d=u.map(p=>{let f=F.minifyMarkdownCore(ko(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:$s.sanitizeContent(f).content,createdAt:p.created_at??"",updatedAt:p.updated_at??"",commentType:"discussion"}}),m=[];return l>0&&m.push(`${l} bot comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:Q(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:Q([],0)}}}async function zs(e,t,n,r){try{let{items:o,rawResponseChars:i}=await Io(s=>e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:s}));return Q(o.map(s=>({id:String(s.id),user:s.user?.login??"unknown",state:s.state??"",body:$s.sanitizeContent(F.minifyMarkdownCore(ko(s.body??""))).content,submittedAt:s.submitted_at??void 0,commitId:s.commit_id??void 0})),i)}catch{return Q([],0)}}async function Ws(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let p=await e.rest.pulls.listReviewComments({owner:t,repo:n,pull_number:r,per_page:100,page:a});s+=N(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let u=o?i:i.filter(p=>!Gt(p.user?.login??"")),l=i.length-u.length,d=u.map(p=>{let f=F.minifyMarkdownCore(ko(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:$s.sanitizeContent(f).content,createdAt:p.created_at??"",updatedAt:p.updated_at??"",commentType:"review_inline",path:p.path,line:p.line??p.original_line??void 0,...p.in_reply_to_id!=null?{inReplyToId:p.in_reply_to_id}:{}}}),m=[];return l>0&&m.push(`${l} bot inline comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:Q(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:Q([],0)}}}async function Vs(e,t,n){let r=e,{prData:o,sanitizationWarnings:i}=Gs(r);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0;if(e.pull_request&&Hs(t))try{let{owner:u,repo:l}=Cr(t);if(u&&l){let d=await n.rest.pulls.get({owner:u,repo:l,pull_number:e.number});if(d.data&&(s+=N(d.data),o.head=d.data.head?.ref,o.head_sha=d.data.head?.sha,o.base=d.data.base?.ref,o.base_sha=d.data.base?.sha,o.draft=d.data.draft??!1,d.data.merged_at&&(o.merged_at=d.data.merged_at),o.additions=d.data.additions??0,o.deletions=d.data.deletions??0,pn(t)||(o.file_changes={total_count:d.data.changed_files??0,files:[]}),pn(t))){let m=await Us(u,l,e.number);m&&(s+=te(m)??0,m.files=Pr(m.files,t),o.file_changes=m)}}}catch(u){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${u instanceof Error?u.message:String(u)}`]}let a=Eo(t),c=Lo(t);if(a||c){let{owner:u,repo:l}=Cr(t);if(u&&l){let d=Bs(t),m=()=>Promise.resolve({comments:Q([],0)}),[{comments:p,note:f},{comments:g,note:R}]=await Promise.all([a?js(n,u,l,e.number,d):m(),c?Ws(n,u,l,e.number,d):m()]);o.comments=[...p,...g],s+=(te(p)??0)+(te(g)??0);let h=[f,R].filter(y=>typeof y=="string");h.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...h])}}if(_o(t))try{let{owner:u,repo:l}=Cr(t);if(u&&l){let d=await zs(n,u,l,e.number);s+=te(d)??0,o.reviews=d}}catch(u){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${u instanceof Error?u.message:String(u)}`]}if(Ao(t))try{let{owner:u,repo:l}=Cr(t);if(u&&l){let d=await Qs(u,l,e.number,t);d&&(s+=te(d)??0,o.commits=d)}}catch(u){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${u instanceof Error?u.message:String(u)}`]}return Q(o,s)}async function xr(e,t,n,r){let{prData:o,sanitizationWarnings:i}=Gs(e);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0,a=t.owner,c=t.repo;if(o.additions="additions"in e?e.additions??0:0,o.deletions="deletions"in e?e.deletions??0:0,pn(t)||(o.file_changes={total_count:"changed_files"in e?e.changed_files??0:0,files:[]}),pn(t))try{let d=await Us(a,c,e.number,r);d&&(s+=te(d)??0,d.files=Pr(d.files,t),o.file_changes=d)}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${d instanceof Error?d.message:String(d)}`]}let u=Eo(t),l=Lo(t);if(u||l){let d=Bs(t),m=()=>Promise.resolve({comments:Q([],0)}),[{comments:p,note:f},{comments:g,note:R}]=await Promise.all([u?js(n,a,c,e.number,d):m(),l?Ws(n,a,c,e.number,d):m()]);o.comments=[...p,...g],s+=(te(p)??0)+(te(g)??0);let h=[f,R].filter(y=>typeof y=="string");h.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...h])}if(_o(t))try{let d=await zs(n,a,c,e.number);s+=te(d)??0,o.reviews=d}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${d instanceof Error?d.message:String(d)}`]}if(Ao(t))try{let d=await Qs(a,c,e.number,t,r);d&&(s+=te(d)??0,o.commits=d)}catch(d){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${d instanceof Error?d.message:String(d)}`]}return Q(o,s)}function AS(e,t,n){return{pullRequests:[],totalCount:0,error:t,status:e.status,hints:n,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}}async function Sd(e,t){let{owner:n,repo:r,prNumber:o}=e;if(!n||!r||!o)return{pullRequests:[],totalCount:0,error:Ce.PR_REQUIRED_PARAMS.message,hints:["Provide owner, repo, and prNumber"]};if(Array.isArray(n)||Array.isArray(r))return{pullRequests:[],totalCount:0,error:Ce.PR_SINGLE_VALUES.message,hints:["Do not use array for owner or repo when fetching by number"]};try{let i=await U(t),s=await i.rest.pulls.get({owner:n,repo:r,pull_number:o}),a=s.data,c=await xr(a,e,i,t);return{pullRequests:[dn(c,{includeFullBody:!0,includeFullCommentDetails:!0})],totalCount:1,rawResponseChars:N(s.data)+(te(c)??0)}}catch(i){let s=W(i);return AS(s,Ce.PULL_REQUEST_FETCH_FAILED.message(o,s.error),[`Verify that pull request #${o} exists in ${n}/${r}`,"Check if you have access to this repository","Ensure the PR number is correct"])}}function Ks(e,t,n){return{pullRequests:[],totalCount:0,error:t,status:e.status,hints:n,rateLimitRemaining:e.rateLimitRemaining,rateLimitReset:e.rateLimitReset,retryAfter:e.retryAfter}}function Ys(e){let t=Math.min(e.limit||30,100);return{pullRequests:[],totalCount:0,pagination:{currentPage:e.page||1,totalPages:0,perPage:t,totalMatches:0,reportedTotalMatches:0,reachableTotalMatches:0,totalMatchesKind:"exact",totalMatchesCapped:!1,hasMore:!1}}}async function bd(e,t){try{let n=t.owner,r=t.repo,o=Math.min(t.limit||30,100),i=t.page||1,s=await e.rest.pulls.list({owner:n,repo:r,state:(t.state==="merged"?"closed":t.state)||"open",per_page:o,page:i,sort:t.sort==="updated"?"updated":"created",direction:t.order||"desc",...t.head&&{head:t.head},...t.base&&{base:t.base}}),a=await Promise.all(s.data.map(async m=>await xr(m,t,e))),c=a.reduce((m,p)=>m+(te(p)??0),0),u=a.map(m=>dn(m,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:t.charOffset,charLength:t.charLength})),l=s.data.length===o,d=(i-1)*o+u.length;return{pullRequests:u,totalCount:u.length,pagination:{currentPage:i,totalPages:l?i+1:i,perPage:o,totalMatches:d+(l?1:0),reachableTotalMatches:d,totalMatchesKind:l?"lowerBound":"exact",hasMore:l,...l?{nextPage:i+1}:{}},rawResponseChars:N(s.data)+c}}catch(n){if(We(n))return Ys(t);let r=W(n);return Ks(r,Ce.PULL_REQUEST_LIST_FAILED.message(r.error),["Verify repository access and authentication"])}}async function _S(e,t){if(!t.owner||!t.repo||Array.isArray(t.owner)||Array.isArray(t.repo))return t;try{let n=await e.rest.repos.get({owner:t.owner,repo:t.repo}),[r,o]=n.data.full_name?.split("/")??[];return!r||!o||r===t.owner&&o===t.repo?t:{...t,owner:r,repo:o}}catch{return t}}function kS(e,t,n="anon"){return se("gh-api-prs",{query:e.query,owner:e.owner,repo:e.repo,prNumber:e.prNumber,state:e.state,draft:e.draft,merged:e.merged,author:e.author,assignee:e.assignee,mentions:e.mentions,commenter:e.commenter,"reviewed-by":e["reviewed-by"],"review-requested":e["review-requested"],head:e.head,base:e.base,created:e.created,updated:e.updated,"merged-at":e["merged-at"],closed:e.closed,comments:e.comments,reactions:e.reactions,label:e.label,milestone:e.milestone,language:e.language,checks:e.checks,review:e.review,locked:e.locked,visibility:e.visibility,project:e.project,archived:e.archived,match:e.match,sort:e.sort,order:e.order,limit:e.limit,page:e.page,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,auth:n},t)}async function Cd(e,t,n){let r=await pe(t),o=kS(e,n,r);return await fe(o,async()=>await IS(e,t,n),{shouldCache:s=>!s.error})}async function IS(e,t,n){try{if(e.prNumber&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await Sd(e,t);let r=await U(t);if(!Ss(e)&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await bd(r,e);let i=await _S(r,e),s=Rs(i);if(!s)return{pullRequests:[],totalCount:0,error:Ce.NO_VALID_PARAMETERS.message,hints:["Provide search query or filters like owner/repo"]};let a=i.sort&&i.sort!=="best-match"?i.sort:void 0,c=Math.min(i.limit||30,100),u=i.page||1,l=s,d=await r.rest.search.issuesAndPullRequests({q:s,sort:a,order:e.order||"desc",per_page:c,page:u}),m=d.data.items?.filter(T=>!!T.pull_request)||[],p=await Promise.all(m.map(async T=>await Vs(T,i,r))),f=p.reduce((T,L)=>T+(te(L)??0),0),g=p.map(T=>dn(T,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:i.charOffset,charLength:i.charLength})),R=d.data.total_count,h=Math.min(R,1e3),y=Math.min(Math.ceil(h/c),10),S=Math.min(u,Math.max(1,y)),C=S<y,x=Math.min(h,y*c);return{pullRequests:g,totalCount:d.data.total_count,effectiveQuery:l,...d.data.incomplete_results&&{incompleteResults:!0},pagination:{currentPage:S,totalPages:y,perPage:c,totalMatches:h,reportedTotalMatches:R,reachableTotalMatches:x,totalMatchesKind:"reported",totalMatchesCapped:R>h,hasMore:C,...C?{nextPage:S+1}:{}},rawResponseChars:N(d.data)+f}}catch(r){if(We(r))return Ys(e);let o=W(r);return Ks(o,Ce.PULL_REQUEST_SEARCH_FAILED.message(o.error),["Verify authentication and search parameters"])}}function OS(e,t,n=he){let r=(e.pullRequests||[]).map(a=>({number:a.number,title:a.title,body:a.body||null,...a.bodyPagination&&{bodyPagination:a.bodyPagination},state:a.merged?"merged":a.state,draft:a.draft||!1,author:a.author,assignees:a.assignees?.map(c=>typeof c=="string"?c:String(c.login??""))||[],labels:a.labels?.map(c=>typeof c=="string"?c:c.name??"")||[],sourceBranch:a.headRef||"",targetBranch:a.baseRef||"",sourceSha:a.headSha,targetSha:a.baseSha,createdAt:a.createdAt,updatedAt:a.updatedAt,closedAt:a.closedAt,mergedAt:a.mergedAt,commentsCount:a.comments,changedFilesCount:a.changedFiles,additions:a.additions,deletions:a.deletions,comments:a.commentDetails?.map(c=>({id:c.id,author:c.user,body:c.body,...c.bodyPagination&&{bodyPagination:c.bodyPagination},createdAt:c.createdAt,updatedAt:c.updatedAt,...c.commentType&&{commentType:c.commentType},...c.path&&{path:c.path},...c.line!==void 0&&{line:c.line},...c.inReplyToId!=null&&{inReplyToId:c.inReplyToId}})),reviews:a.reviews?.map(c=>({id:c.id,user:c.user,state:c.state,body:c.body,submittedAt:c.submittedAt,commitId:c.commitId})),commits:a.commitDetails?.map(c=>({sha:c.sha,message:c.message,author:c.author,date:c.date})),fileChanges:a.fileChanges?.map(c=>({path:c.filename,status:c.status,additions:c.additions,deletions:c.deletions,patch:c.patch})),...Array.isArray(a.sanitizationWarnings)&&a.sanitizationWarnings.length>0?{sanitizationWarnings:a.sanitizationWarnings}:{}})),{owner:o,repo:i}=t.projectId?n(t.projectId):{owner:void 0,repo:void 0},s=o||t.owner;return{items:r,totalCount:e.totalCount||r.length,pagination:{currentPage:e.pagination?.currentPage||1,totalPages:e.pagination?.totalPages||1,hasMore:e.pagination?.hasMore||!1,...e.pagination?.hasMore?{nextPage:(e.pagination?.currentPage||1)+1}:{},totalMatches:e.pagination?.totalMatches,entriesPerPage:e.pagination?.perPage,...Rr(e.pagination)},...e.effectiveQuery?{effectiveQuery:e.effectiveQuery}:{},repositoryContext:s&&i?{owner:s,repo:i}:void 0}}function FS(e,t,n){return{owner:t,repo:n,query:e.query,prNumber:e.number,state:e.state==="merged"?"closed":e.state==="all"?void 0:e.state,merged:e.state==="merged"?!0:void 0,draft:e.draft,author:e.author,assignee:e.assignee,commenter:e.commenter,mentions:e.mentions,"reviewed-by":e.reviewedBy,"review-requested":e.reviewRequested,label:e.labels,base:e.baseBranch,head:e.headBranch,created:e.created,updated:e.updated,closed:e.closed,"merged-at":e.mergedAt,comments:e.comments,reactions:e.reactions,match:e.match,checks:e.checks,review:e.review,archived:e.archived,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,sort:e.sort,order:e.order,limit:e.limit,page:e.page,charOffset:e.charOffset,charLength:e.charLength}}async function Pd(e,t,n=he){let{owner:r,repo:o}=e.projectId?n(e.projectId):{owner:void 0,repo:void 0},i=r||e.owner,s=FS(e,i,o),a=await Cd(s,t);return a.error?at({error:typeof a.error=="string"?a.error:String(a.error),status:a.status||500,hints:a.hints,rateLimitRemaining:a.rateLimitRemaining,rateLimitReset:a.rateLimitReset,retryAfter:a.retryAfter}):{data:OS(a,e,n),status:200,provider:"github",rawResponseChars:a.rawResponseChars??N(a)}}var bt={ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200};function Oo(e,t){return e.hasMore?[`Page ${e.currentPage}/${e.totalPages}. Next: page=${e.currentPage+1}`]:[]}function xd(e,t){let n=e._cachedItems;if(!n||n.length===0){let{_cachedItems:w,...b}=e;return b}let r=t.itemsPerPage??bt.ENTRIES_PER_PAGE,o=t.page??1,i=n.length,s=Math.max(1,Math.ceil(i/r)),a=(o-1)*r,c=Math.min(a+r,i),u=n.slice(a,c),l=Object.create(null),d=e.path==="/"?"":e.path,m=w=>{let b=w;d&&w.startsWith(d)&&(b=w.slice(d.length),b.startsWith("/")&&(b=b.slice(1)));let A=b.lastIndexOf("/");return A===-1?".":b.slice(0,A)},p=w=>{let b=w.lastIndexOf("/");return b===-1?w:w.slice(b+1)};for(let w of u){let b=m(w.path);l[b]||(l[b]={files:[],folders:[]});let A=p(w.path);w.type==="file"?l[b].files.push(A):l[b].folders.push(A)}for(let w of Object.keys(l)){let b=l[w];b&&(b.files.sort(),b.folders.sort())}let f=Object.create(null),g=Object.keys(l).sort((w,b)=>w==="."?-1:b==="."?1:w.localeCompare(b));for(let w of g){let b=l[w];b&&(f[w]=b)}let R=u.filter(w=>w.type==="file").length,h=u.filter(w=>w.type==="dir").length,y=n.filter(w=>w.type==="file").length,S=n.filter(w=>w.type==="dir").length,C=o<s,x={currentPage:o,totalPages:s,hasMore:C,...C?{nextPage:o+1}:{},entriesPerPage:r,totalEntries:i},T=Oo(x,{owner:e.owner,repo:e.repo,branch:e.branch,path:d,depth:t.maxDepth??1,pageFiles:R,pageFolders:h,allFiles:y,allFolders:S}),L,_=e._cachedFileSizeMap;if(_){let w=new Set(u.filter(M=>M.type==="file").map(M=>M.path)),b=e.path==="/"?"":e.path,A=Object.create(null);for(let[M,H]of Object.entries(_))for(let[k,B]of Object.entries(H)){let Z=M==="."?b?`${b}/${k}`:k:b?`${b}/${M}/${k}`:`${M}/${k}`;w.has(Z)&&(A[M]||(A[M]=Object.create(null)),A[M][k]=B)}Object.keys(A).length>0&&(L=A)}return{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,apiSource:e.apiSource,summary:{totalFiles:y,totalFolders:S,truncated:C,filtered:!0,originalCount:i},structure:f,...L!==void 0&&{fileSizeMap:L},..._!==void 0&&{_cachedFileSizeMap:_},pagination:x,hints:T,rawResponseChars:e.rawResponseChars}}import{RequestError as DS}from"octokit";var Td=Symbol.for("octocode.recursiveFetchFailures"),MS=new Set([401,403,429]);function wd(e){return e instanceof DS&&MS.has(e.status)}function Xs(e,t){try{Object.defineProperty(e,Td,{value:t,enumerable:!1,configurable:!0})}catch{}return e}function wr(e){if(typeof e!="object"||e===null)return 0;let t=e[Td];return typeof t=="number"&&Number.isFinite(t)&&t>0?t:0}async function Tr(e,t,n,r,o,i,s,a=new Set){if(i>s||a.has(o))return Xs(Q([],0),0);a.add(o);let c;try{c=await e.rest.repos.getContent({owner:t,repo:n,path:o||"",ref:r})}catch(f){if(wd(f))throw f;return Xs(Q([],0),1)}let u=N(c.data),d=(Array.isArray(c.data)?c.data:[c.data]).filter(f=>f.type==="file"||f.type==="dir").map(f=>({name:f.name,path:f.path,type:f.type,size:"size"in f?f.size:void 0,download_url:"download_url"in f?f.download_url:void 0,url:f.url,html_url:f.html_url,git_url:f.git_url,sha:f.sha})),m=[...d],p=0;if(i<s){let f=d.filter(R=>R.type==="dir"),g=3;for(let R=0;R<f.length;R+=g){let h=f.slice(R,R+g),y=await Promise.allSettled(h.map(S=>Tr(e,t,n,r,S.path,i+1,s,a)));for(let S of y)if(S.status==="fulfilled"){let C=S.value;u+=te(C)??0,p+=wr(C),m.push(...C)}else{if(wd(S.reason))throw S.reason;p+=1}}}return Xs(Q(m,u),p)}import{RequestError as NS}from"octokit";function GS(e,t){let n=(t.pathPrefix??"").replace(/^\/+|\/+$/g,""),r=n?`${n}/`:"",o=Math.max(1,t.maxDepth),i=[];for(let s of e){if(!s.path||s.type!=="blob"&&s.type!=="tree")continue;let a=s.path;if(n){if(s.path===n||!s.path.startsWith(r))continue;a=s.path.slice(r.length)}let c=a.split("/").filter(Boolean).length;if(c===0||c>o)continue;let u=a.lastIndexOf("/"),l=u===-1?a:a.slice(u+1);i.push({name:l,path:s.path,type:s.type==="tree"?"dir":"file",size:s.type==="blob"?s.size:void 0,sha:s.sha,url:s.url,html_url:void 0,git_url:void 0,download_url:void 0})}return i}function Ed(e=process.env){return e.OCTOCODE_GH_STRUCTURE_TREES!=="0"}async function Ld(e,t){let{data:n}=await e.rest.repos.getBranch({owner:t.owner,repo:t.repo,branch:t.workingBranch}),r=n.commit.commit.tree.sha;if(!r)throw new Error(`Could not resolve tree SHA for ${t.owner}/${t.repo}@${t.workingBranch}`);let o;try{o=await e.rest.git.getTree({owner:t.owner,repo:t.repo,tree_sha:r,recursive:"true",...t.ifNoneMatch?{headers:{"If-None-Match":t.ifNoneMatch}}:{}})}catch(c){if(c instanceof NS&&c.status===304)return{items:[],truncated:!1,rawResponseChars:0,etag:t.ifNoneMatch,notModified:!0};throw c}let i=o.data,s=ln(o.headers);return{items:GS(i.tree,{pathPrefix:t.pathPrefix,maxDepth:t.maxDepth}),truncated:!!i.truncated,rawResponseChars:N(n)+N(i),...s?{etag:s}:{}}}import{RequestError as Ad}from"octokit";async function qs(e,t,n,r,o,i,s){let a,c;try{o?a=o:(c=await Pe(t,n,i),a=c)}catch(u){let l=W(u);return{error:Rt.NOT_FOUND.message(t,n,l.error),status:l.status}}try{let u=await e.rest.repos.getContent({owner:t,repo:n,path:r||"",ref:a,...s?{headers:{"If-None-Match":s}}:{}}),l=ln(u.headers);return{data:u.data,workingBranch:a,...c!==void 0?{repoDefaultBranch:c}:{},...l?{etag:l}:{}}}catch(u){if(u instanceof Ad&&u.status===304)return{data:null,workingBranch:a,...c!==void 0?{repoDefaultBranch:c}:{},etag:s,notModified:!0};if(!(u instanceof Ad&&u.status===404)){let d=W(u);return{error:Rt.ACCESS_FAILED.message(t,n,d.error),status:d.status,rateLimitRemaining:d.rateLimitRemaining,rateLimitReset:d.rateLimitReset,retryAfter:d.retryAfter}}let l=W(u);return{error:Rt.PATH_NOT_FOUND.message(r,t,n,a),status:l.status}}}function _d(e){return e.map(t=>{let n=t;return{name:n.name,path:n.path,type:n.type,size:"size"in n?n.size:void 0,download_url:"download_url"in n?n.download_url:void 0,url:n.url,html_url:n.html_url,git_url:n.git_url,sha:n.sha}})}function HS(e,t){let n=Object.create(null),r=a=>{let c=a;t&&a.startsWith(t)&&(c=a.slice(t.length),c.startsWith("/")&&(c=c.slice(1)));let u=c.lastIndexOf("/");return u===-1?".":c.slice(0,u)},o=a=>{let c=a.lastIndexOf("/");return c===-1?a:a.slice(c+1)};for(let a of e){let c=r(a.path);n[c]||(n[c]={files:[],folders:[]});let u=o(a.path);a.type==="file"?n[c].files.push(u):n[c].folders.push(u)}for(let a of Object.values(n))a&&(a.files.sort(),a.folders.sort());let i=Object.keys(n).sort((a,c)=>a==="."?-1:c==="."?1:a.localeCompare(c)),s=Object.create(null);for(let a of i){let c=n[a];c&&(s[a]=c)}return s}function kd(e,t){let n=Object.create(null);for(let r of e){if(r.type!=="file"||r.size===void 0)continue;let o=r.path;t&&r.path.startsWith(t)&&(o=r.path.slice(t.length).replace(/^\//,""));let i=o.lastIndexOf("/"),s=i===-1?".":o.slice(0,i),a=i===-1?o:o.slice(i+1);n[s]||(n[s]=Object.create(null)),n[s][a]=r.size}return n}function Fo(e){let{owner:t,repo:n,workingBranch:r,repoDefaultBranch:o,cleanPath:i,depth:s,partialTreeFailures:a,incompleteTree:c,rawResponseChars:u,includeSizes:l,extraHints:d=[]}=e,m=e.allItems.filter(k=>k.type==="dir"?!yr(k.name):!cn(k.path));m.sort((k,B)=>{if(k.type!==B.type)return k.type==="dir"?-1:1;let Z=k.path.split("/").length,v=B.path.split("/").length;return Z!==v?Z-v:k.path.localeCompare(B.path)});let p=e.itemsPerPage??bt.ENTRIES_PER_PAGE,f=e.page??1,g=m.length,R=Math.max(1,Math.ceil(g/p)),h=(f-1)*p,y=Math.min(h+p,g),S=m.slice(h,y),C=HS(S,i),x=l?kd(m,i):void 0,T=x!==void 0?kd(S,i):void 0,L=S.filter(k=>k.type==="file").length,_=S.filter(k=>k.type==="dir").length,w=m.filter(k=>k.type==="file").length,b=m.filter(k=>k.type==="dir").length,A=f<R,M={currentPage:f,totalPages:R,hasMore:A,...A?{nextPage:f+1}:{},entriesPerPage:p,totalEntries:g},H=Oo(M,{owner:t,repo:n,branch:r,path:i,depth:s,pageFiles:L,pageFolders:_,allFiles:w,allFolders:b});a>0&&H.unshift(`Partial tree: ${a} subdirectory subtree(s) failed to load and are missing from this structure. The listing is incomplete \u2014 retry or narrow the path/depth.`);for(let k of d)H.unshift(k);return{owner:t,repo:n,branch:r,...o!==void 0&&{defaultBranch:o},path:i||"/",apiSource:!0,summary:{totalFiles:w,totalFolders:b,truncated:A,filtered:!0,originalCount:m.length,...c?{incompleteTree:!0}:{}},structure:C,...T!==void 0&&{fileSizeMap:T},...x!==void 0&&{_cachedFileSizeMap:x},pagination:M,hints:H,rawResponseChars:u,_cachedItems:m.map(k=>({path:k.path,type:k.type}))}}async function Js(e,t,n){let r=await pe(t),o=se("gh-repo-structure-api",{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,depth:e.maxDepth,auth:r},n),i=await yo(o,async({ifNoneMatch:s})=>{let a=await BS({...e,itemsPerPage:e.itemsPerPage??bt.ENTRIES_PER_PAGE,page:e.page??1},t,s);return{value:a.result,etag:a.etag,notModified:a.notModified}},{shouldCache:s=>!("error"in s)});return!("error"in i)&&i.structure?xd(i,e):i}async function BS(e,t,n){try{let r=await U(t),{owner:o,repo:i,branch:s,path:a="",maxDepth:c=1}=e,u=a.replace(/^\/+|\/+$/g,"");if(c>1&&Ed())return await US(r,e,u,c,t,n);let l=await qs(r,o,i,u,s,t,c===1?n:void 0);if("error"in l)return{result:l};if(l.notModified)return{result:{error:"not-modified",status:304},etag:l.etag??n,notModified:!0};let{data:d,workingBranch:m,repoDefaultBranch:p,etag:f}=l,g=N(d),R=Array.isArray(d)?d:[d],h=_d(R),y=0;if(c>1){let S=await Tr(r,o,i,m,u,1,c);y=wr(S),g=te(S)??0,h=S}return{result:Fo({owner:o,repo:i,workingBranch:m,repoDefaultBranch:p,cleanPath:u,depth:c,allItems:h,partialTreeFailures:y,incompleteTree:!1,rawResponseChars:g,includeSizes:e.includeSizes===!0,itemsPerPage:e.itemsPerPage,page:e.page}),...c===1&&f?{etag:f}:{}}}catch(r){let o=W(r);return{result:{error:Rt.STRUCTURE_EXPLORATION_FAILED.message,status:o.status,rateLimitRemaining:o.rateLimitRemaining,rateLimitReset:o.rateLimitReset,retryAfter:o.retryAfter}}}}async function US(e,t,n,r,o,i){let{owner:s,repo:a,branch:c}=t,u,l;try{c?u=c:(l=await Pe(s,a,o),u=l)}catch(h){let y=W(h);return{result:{error:Rt.NOT_FOUND.message(s,a,y.error),status:y.status}}}let d;try{d=await Ld(e,{owner:s,repo:a,workingBranch:u,pathPrefix:n,maxDepth:r,ifNoneMatch:i})}catch(h){let y=await qs(e,s,a,n,u,o);if("error"in y)return{result:y};let S=await Tr(e,s,a,y.workingBranch,n,1,r);return{result:Fo({owner:s,repo:a,workingBranch:y.workingBranch,repoDefaultBranch:l,cleanPath:n,depth:r,allItems:S,partialTreeFailures:wr(S),incompleteTree:!1,rawResponseChars:te(S)??0,includeSizes:t.includeSizes===!0,itemsPerPage:t.itemsPerPage,page:t.page,extraHints:[`Git Trees fetch failed (${h instanceof Error?h.message:String(h)}); used Contents recursion instead.`]})}}if(d.notModified)return{result:{error:"not-modified",status:304},etag:d.etag??i,notModified:!0};let m=d.items,p=0,f=d.rawResponseChars,g=d.truncated,R=[];if(g){R.push("Git Trees response was truncated by GitHub \u2014 this structure listing may be incomplete. Narrow path/depth or set OCTOCODE_GH_STRUCTURE_TREES=0 for Contents recursion.");try{let h=await Tr(e,s,a,u,n,1,r);p=wr(h),f+=te(h)??0,m=[...m,...h].filter((S,C,x)=>x.findIndex(T=>T.path===S.path)===C)}catch{}}return{result:Fo({owner:s,repo:a,workingBranch:u,repoDefaultBranch:l,cleanPath:n,depth:r,allItems:m,partialTreeFailures:p,incompleteTree:g,rawResponseChars:f,includeSizes:t.includeSizes===!0,itemsPerPage:t.itemsPerPage,page:t.page,extraHints:R}),...d.etag&&!g?{etag:d.etag}:{}}}async function QS(e,t,n){try{let o=await(await U(n)).rest.repos.listLanguages({owner:e,repo:t}),i=Object.entries(o.data).sort((s,a)=>a[1]-s[1]);return i.length===0?void 0:{languages:Object.fromEntries(i),dominantLanguage:i[0][0]}}catch{return}}async function $S(e,t,n){try{let i=(await(await U(n)).rest.repos.listContributors({owner:e,repo:t,per_page:30})).data.filter(s=>typeof s.login=="string").map(s=>({login:s.login,contributions:s.contributions??0}));return i.length>0?{contributors:i}:void 0}catch{return}}async function jS(e,t,n){try{let i=(await(await U(n)).rest.repos.listBranches({owner:e,repo:t,per_page:100})).data.map(s=>s.name).filter(s=>typeof s=="string");return i.length>0?{branches:i}:void 0}catch{return}}async function zS(e,t,n){try{let i=(await(await U(n)).rest.repos.listTags({owner:e,repo:t,per_page:50})).data.filter(s=>typeof s.name=="string").map(s=>({name:s.name,sha:s.commit?.sha??""}));return i.length>0?{tags:i}:void 0}catch{return}}function WS(e){return{projectPath:`${e.owner}/${e.repo}`,branch:e.branch||"",...e.defaultBranch!==void 0&&{defaultBranch:e.defaultBranch},path:e.path||"/",structure:e.structure||{},...e.fileSizeMap!==void 0&&{fileSizeMap:e.fileSizeMap},summary:{totalFiles:e.summary?.totalFiles||0,totalFolders:e.summary?.totalFolders||0,truncated:e.summary?.truncated||!1},pagination:e.pagination,hints:e.hints}}async function Id(e,t,n=he){let{owner:r,repo:o}=n(e.projectId);if(!r||!o)return{error:"Project ID is required for repository structure",status:400,provider:"github"};let i={owner:r,repo:o,branch:e.ref||"HEAD",path:e.path,maxDepth:e.depth,itemsPerPage:e.itemsPerPage,page:e.page,includeSizes:e.includeSizes,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning},[s,a,c,u,l]=await Promise.all([Js(i,t),e.includeLanguages?QS(r,o,t):Promise.resolve(void 0),e.includeContributors?$S(r,o,t):Promise.resolve(void 0),e.includeBranches?jS(r,o,t):Promise.resolve(void 0),e.includeTags?zS(r,o,t):Promise.resolve(void 0)]);return"error"in s?Ro(s)??{error:"Unknown GitHub API error",status:500,provider:"github"}:{data:{...WS(s),...a?{languages:a.languages,dominantLanguage:a.dominantLanguage}:{},...c?{contributors:c.contributors}:{},...u?{branches:u.branches}:{},...l?{tags:l.tags}:{}},status:200,provider:"github",rawResponseChars:s.rawResponseChars??N(s)}}var Od={github:{cloneRepo:!0,fetchDirectoryToDisk:!0,requiresScopedCodeSearch:!1,supportsMergedState:!1,supportsMultiTopicSearch:!0}};var vo=class{type="github";capabilities=Od.github;authInfo;constructor(t){t?.authInfo?this.authInfo=t.authInfo:t?.token&&(this.authInfo={token:t.token})}async searchCode(t){try{return await Zl(t,this.authInfo,he)}catch(n){return this.handleError(n)}}async getFileContent(t){try{return await pd(t,this.authInfo,he)}catch(n){return this.handleError(n)}}async searchRepos(t){try{return await ed(t,this.authInfo)}catch(n){return this.handleError(n)}}async searchPullRequests(t){try{return await Pd(t,this.authInfo,he)}catch(n){return this.handleError(n)}}async getRepoStructure(t){try{return await Id(t,this.authInfo,he)}catch(n){return this.handleError(n)}}async resolveDefaultBranch(t){let{owner:n,repo:r}=he(t);if(!n||!r)throw new Error(`Cannot resolve default branch: invalid projectId '${t}'.`);return Pe(n,r,this.authInfo)}handleError(t){let n=W(t);return at(n)}};import{createHash as KS}from"crypto";var YS=3600*1e3,Zs=20,Ke=new Map;function Fd(e){return Date.now()-e.createdAt<YS}function XS(){for(let[e,t]of Ke.entries())Fd(t)||Ke.delete(e);if(Ke.size>Zs){let e=[...Ke.entries()].sort((n,r)=>n[1].lastAccessedAt-r[1].lastAccessedAt),t=Ke.size-Zs;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&Ke.delete(r[0])}}}function qS(e){return e?KS("sha256").update(e).digest("hex").slice(0,16):"default"}function JS(e){if(e==="default")return e;try{let t=new URL(e),n=`${t.protocol}//${t.hostname.toLowerCase()}`;return t.port&&(n+=`:${t.port}`),n+=t.pathname.replace(/\/+$/,"")||"",n}catch{return e.replace(/\/+$/,"")}}function ZS(e,t){let n=JS(t?.baseUrl||"default"),r=qS(t?.token||t?.authInfo?.token);return`${e}:${n}:${r}`}function ea(e="github",t){if(e!=="github")throw new Error(`Unknown provider type: '${e}'. Only 'github' is supported.`);let n=ZS(e,t),r=Ke.get(n);if(r&&Fd(r))return r.lastAccessedAt=Date.now(),r.provider;r&&Ke.delete(n),Ke.size>=Zs&&XS();let o=new vo({...t,type:e}),i=Date.now();return Ke.set(n,{provider:o,createdAt:i,lastAccessedAt:i}),o}async function vd(){try{return ea("github"),[{provider:"github",ok:!0}]}catch(e){let t=e instanceof Error?e.message:String(e);return process.stderr.write(`\u26A0\uFE0F github provider failed to initialize: ${t}
19
+ `),[{provider:"github",ok:!1,error:t}]}}import{getConfigSync as oE}from"@octocodeai/config";import{existsSync as eb,readdirSync as tb,lstatSync as nb}from"node:fs";import{join as rb}from"node:path";function Dd(e){if(!eb(e))return 0;let t;try{t=tb(e)}catch{return 0}let n=0;for(let r of t){if(r===".git")continue;let o=rb(e,r);try{let i=nb(o);if(i.isSymbolicLink())continue;i.isDirectory()?n+=po(o):i.isFile()&&(n+=i.size)}catch{}}return n}async function Md(e,t={}){if(!Array.isArray(e))throw new Error(ar.PROMISES_NOT_ARRAY.message);if(e.length===0)return[];let{timeout:n=3e4,concurrency:r=e.length,onError:o}=t;if(n<=0)throw new Error(ar.TIMEOUT_NOT_POSITIVE.message);if(r<=0)throw new Error(ar.CONCURRENCY_NOT_POSITIVE.message);let i=e.map((c,u)=>typeof c=="function"?c:()=>Promise.reject(new Error(ur.NOT_A_FUNCTION.message(u))));if(r<i.length)return ob(i,r,n,o);let s=i.map((c,u)=>Nd(c,u,n,o));return(await Promise.allSettled(s)).map((c,u)=>c.status==="fulfilled"?c.value:{success:!1,error:c.reason instanceof Error?c.reason:new Error(String(c.reason)),index:u})}async function Nd(e,t,n,r){let o,i=()=>{o!==void 0&&(clearTimeout(o),o=void 0)};try{let s=new Promise((c,u)=>{o=setTimeout(()=>{u(new Error(ur.TIMEOUT.message(t,n)))},n)}),a=await Promise.race([e(),s]);return i(),{success:!0,data:a,index:t}}catch(s){i();let a=s instanceof Error?s:new Error(String(s));if(r)try{r(a,t)}catch(c){}return{success:!1,error:a,index:t}}}async function ob(e,t,n,r){let o=new Array(e.length),i=0,s=async()=>{for(;i<e.length;){let c=i++,u=e[c];if(!u){o[c]={success:!1,error:new Error(ur.FUNCTION_UNDEFINED.message),index:c};continue}try{let l=await Nd(u,c,n,r);o[c]=l}catch(l){o[c]={success:!1,error:l instanceof Error?l:new Error(String(l)),index:c}}}},a=[];for(let c=0;c<Math.min(t,e.length);c++)a.push(s());return await Promise.all(a),o}var Gd=parseInt(process.env.OCTOCODE_BULK_QUERY_TIMEOUT_MS||"60000",10)||6e4,ib=parseInt(process.env.OCTOCODE_TOOL_TIMEOUT_MS||"60000",10)||6e4,sb=5e3;function Hd(e,t,n){if(e<=1)return Gd;let r=Math.min(Math.max(t,1),e),o=Math.ceil(e/r),i=Math.floor(ib/o),s=Math.max(sb,Math.min(i,Gd));return n?Math.max(s,n):s}async function Bd(e,t,n,r){let o=[],i=[];if(!e||e.length===0)return{results:o,errors:i};let s=e.map((c,u)=>()=>t(c,u).then(l=>({result:l,queryIndex:u,originalQuery:c})));return(await Md(s,{timeout:Hd(e.length,n,r),continueOnError:!0,concurrency:n,onError:(c,u)=>{i.push({queryIndex:u,error:c.message})}})).forEach(c=>{if(c.success&&c.data){let u=c.data.result,l=u&&Object.keys(u).some(m=>m!=="status"&&m!=="error"&&m!=="data");if(u&&u.error===void 0&&(u.data===null||u.data===void 0)&&!l&&u.status!=="error"){i.push({queryIndex:c.data.queryIndex,error:"Query resolved without a payload (possible timeout or resource exhaustion) \u2014 retry this query alone, with tighter caps if it was large"});return}o.push({result:c.data.result,queryIndex:c.data.queryIndex,originalQuery:c.data.originalQuery})}else c.success&&i.push({queryIndex:c.index,error:"Query produced no result"})}),{results:o,errors:i}}function Er(e,t){let r=e.id;return typeof r=="string"&&r.trim().length>0?r:typeof r=="number"&&Number.isFinite(r)?String(r):`q${t+1}`}function Lr(e){let t=new Set;return e.map((n,r)=>{let o=Er(n,r);if(t.has(o)){let i=2;for(;t.has(`${o}#${i}`);)i+=1;o=`${o}#${i}`}return t.add(o),o})}import{ContentSanitizer as ab}from"@octocodeai/octocode-engine/contentSanitizer";import{getConfigSync as cb}from"@octocodeai/config";function ub(){try{return cb().output.format}catch{return"yaml"}}function Qe(e){if(e==null)return e;if(typeof e=="string")return ab.sanitizeContent(e).content;if(Array.isArray(e))return e.map(t=>Qe(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))n!=="warnings"&&(t[n]=Qe(r));return t}return e}function lb(e,t){if(t==="json")return JSON.stringify(e);let n=Array.isArray(e.content)?e.content.map(r=>"text"in r&&typeof r.text=="string"?r.text:"").filter(r=>r.length>0):[];return n.length>0?n.join(`
20
20
 
21
- `):e.structuredContent!==void 0?JSON.stringify(e.structuredContent,null,2):JSON.stringify(e,null,2)}function qn(e,t){let n=$n(e)??{},r=xt(n),o=GL(),i="results"in r?["results","id","status","data"]:["instructions","status","data"];return o==="json"?JSON.stringify(Ta(r,t||i),null,2):D.jsonToYamlString(r,{keysPriority:t||i})}function Ta(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(o=>Ta(o,t));if(typeof e!="object")return e;let n=e,r={};for(let o of t)o in n&&(r[o]=Ta(n[o],t));for(let o of Object.keys(n))o in r||(r[o]=Ta(n[o],t));return r}function BL(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,n=Object.keys(t);return n.length===0||!n.every(r=>QL.has(r))||jL.some(r=>typeof t[r]=="number"&&t[r]>0)||t.hasMore!==!1?!1:typeof t.totalPages=="number"?t.totalPages<=1:"charOffset"in t||"nextCharOffset"in t?(t.charOffset??0)===0:!0}function $n(e,t={}){if(e==null||Number.isNaN(e))return;let{inFilesObject:n=!1,depth:r=0}=t;if(Array.isArray(e)){let o=e.map(s=>$n(s,{inFilesObject:n,depth:r+1})).filter(s=>s!==void 0),i=n&&r>=2;return o.length>0||i?o:void 0}if(typeof e=="object"&&e!==null){let o={},i=!1;for(let[s,a]of Object.entries(e)){if(s==="results"&&r===0&&Array.isArray(a)&&a.length===0){o[s]=[],i=!0;continue}if(BL(a))continue;let c=(s==="files"||s==="repositories")&&!n,l=$n(a,{inFilesObject:n||c,depth:c?0:r+1});l!==void 0&&(o[s]=l,i=!0)}return i?o:void 0}return e}var QL,jL,Dr=f(()=>{"use strict";Ee();QL=new Set(["currentPage","totalPages","perPage","itemsPerPage","entriesPerPage","filesPerPage","totalMatches","totalFiles","totalEntries","totalItems","totalResults","totalReferences","reportedTotalMatches","reachableTotalMatches","totalMatchesKind","totalMatchesCapped","hasMore","nextPage","charOffset","charLength","totalChars","totalBytes","nextCharOffset"]),jL=["totalMatches","totalItems","totalFiles","totalEntries","totalResults","totalReferences","reportedTotalMatches","reachableTotalMatches"]});function zL(e){if(e.length===0)return"";let t=e[0]??"";for(let r=1;r<e.length;r++){let o=e[r]??"",i=0,s=Math.min(t.length,o.length);for(;i<s&&t[i]===o[i];)i++;if(t=t.slice(0,i),t==="")break}let n=t.lastIndexOf("/");return n>0?t.slice(0,n):""}function Td(e,t,n){if(n>8||!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)Td(o,t,n+1);return}let r=e;for(let o of Ed){let i=r[o];typeof i=="string"&&(i.startsWith("file:///")?(r[o]=i.slice(7),t.push({obj:r,key:o})):i.startsWith("/")&&t.push({obj:r,key:o}))}for(let[o,i]of Object.entries(r))wb.has(o)||i&&typeof i=="object"&&Td(i,t,n+1)}function Ea(e){let t=[];for(let i of e)Td(i?.data,t,0);if(t.length===0)return;let n=zL(t.map(i=>i.obj[i.key]));if(n.length<=1)return;let r=n+"/",o=r.length;for(let{obj:i,key:s}of t){let a=i[s];a.startsWith(r)&&(i[s]=a.slice(o))}return UL(e,r),n}function UL(e,t){function n(r,o){if(o>8||!r||typeof r!="object")return;if(Array.isArray(r)){for(let s=0;s<r.length;s++){let a=r[s];if(typeof a=="string"){let c="file://"+t;a.includes(c)?r[s]=a.replaceAll(c,""):a.includes(t)&&(r[s]=a.replaceAll(t,""))}else n(a,o+1)}return}let i=r;for(let s of Object.keys(i)){if(wb.has(s))continue;let a=i[s];typeof a=="string"?!Ed.includes(s)&&a.includes(t)&&(i[s]=a.replaceAll(t,"")):n(a,o+1)}}for(let r of e)n(r?.data,0)}function $L(e){let t=[];for(let n of e){let r=n?.data;if(!(!r||typeof r!="object")){for(let o of Object.values(r))if(Array.isArray(o))for(let i of o)i&&typeof i=="object"&&!Array.isArray(i)&&t.push(i)}}return t}function qL(e){return typeof e=="string"&&e!==""||typeof e=="number"||typeof e=="boolean"}function ka(e){let t=$L(e);if(t.length<2)return;let n=t[0],r;for(let i of Object.keys(n)){if(WL.has(i))continue;let s=n[i];qL(s)&&t.every(a=>a[i]===s)&&((r??={})[i]=s)}if(!r)return;let o=Object.keys(r);for(let i of t)for(let s of o)delete i[s];return r}var Ed,wb,WL,kd=f(()=>{"use strict";Ed=["path","uri"],wb=new Set(["next","location"]);WL=new Set([...Ed,"owner","repo","name","id"])});function Od(e,t,n){let r=Math.min(t+n,e.length);if(r>=e.length)return e.length;let o=Math.max(1,Math.floor(n/2)),i=[e.lastIndexOf(`
22
- `,r-1)+1,e.lastIndexOf("\\n",r-1)+2].filter(a=>a>t&&a<=r),s=Math.max(...i,-1);return s-t>=o?s:r}function VL(e,t,n){let r=1,o=0;for(;o<t&&o<e.length;){let i=Od(e,o,n);if(i<=o)break;o=i,r+=1}return o===t?r:Math.floor(t/n)+1}function KL(e,t){if(e.length===0)return 1;let n=0,r=0;for(;r<e.length;){let o=Od(e,r,t);if(o<=r)return Math.max(1,Math.ceil(e.length/t));r=o,n+=1}return Math.max(1,n)}function vd(e,t){let n=t?.responseCharLength,r=t?.responseCharOffset??0;if(n===void 0)return{text:e};let o=e.length,i=Math.max(1,n),s=Math.min(Math.max(0,r),o),a=Od(e,s,i),c=a<o,l=VL(e,s,i),u=KL(e,i),d=e.slice(s,a);return{text:`${c?`# Response page ${l}/${u}. Next: responseCharOffset=${a}
23
- `:`# Response page ${l}/${u}.
24
- `}${d}`,pagination:{currentPage:l,totalPages:u,hasMore:c,charOffset:s,charLength:a-s,totalChars:o,...c?{nextCharOffset:a}:{}}}}function Ad(e,t){return t?{...e,responsePagination:t}:e}var Tb=f(()=>{"use strict"});async function me(e,t,n,r){let o=n.concurrency??YL,{results:i,errors:s}=await xb(e,t,o,n.minQueryTimeoutMs);return XL(n,i,s,e,r)}function XL(e,t,n,r,o){let i=["results","base","shared"],s=["id","status","data"],a=[...new Set([...i,...s,...e.keysPriority||[]])],c=new Array(r.length),l=bi(r);t.forEach(y=>{let b=y.result.status;c[y.queryIndex]={id:l[y.queryIndex]??yi(y.originalQuery,y.queryIndex),...b!==void 0?{status:b}:{},data:JL(y.result)}}),n.forEach(y=>{let b=r[y.queryIndex];b&&(c[y.queryIndex]={id:l[y.queryIndex]??yi(b,y.queryIndex),status:"error",data:{error:y.error}})});let u=c.filter(y=>y!==void 0);if(e.finalize){let y=e.finalize({queries:r,results:u,config:e}),b=vd(y.text,o),S=Ad(y.structuredContent,b.pagination);return Eb(e.toolName,t,n,b.text.length),{content:[{type:"text",text:b.text}],structuredContent:S,isError:y.isError??(u.length>0&&u.every(k=>k.status==="error"))}}let d={results:u};if(Array.isArray(d.results)){let y=Ea(d.results);y&&(d.base=y);let b=ka(d.results);b&&(d.shared=b)}let m=qn(d,a),p=vd(m,o),h=Ad(xt($n(d)??{}),p.pagination);return Eb(e.toolName,t,n,p.text.length),{content:[{type:"text",text:p.text}],structuredContent:h,isError:u.length>0&&u.every(y=>y.status==="error")}}function Eb(e,t,n,r){let o=t.reduce((i,s)=>i+(le(s.result)??j(s.result)),0)+n.reduce((i,s)=>i+j(s),0);try{uu(e,o,r)}catch{}}function JL(e){let t=new Set(["status","mainResearchGoal","researchGoal","reasoning","researchSuggestions","query"]);e.status!=="error"&&t.add("error");let n={};for(let[r,o]of Object.entries(e))t.has(r)||(n[r]=o);return n}var YL,kb=f(()=>{"use strict";Ot();Dr();ue();kd();Tb();wd();YL=3});var Ke=f(()=>{"use strict";wd();kb()});var $,Ob,Wn=f(()=>{"use strict";$={PATH_VALIDATION_FAILED:"pathValidationFailed",FILE_ACCESS_FAILED:"fileAccessFailed",FILE_READ_FAILED:"fileReadFailed",FILE_TOO_LARGE:"fileTooLarge",BINARY_FILE_UNSUPPORTED:"binaryFileUnsupported",NO_MATCHES:"noMatches",OUTPUT_TOO_LARGE:"outputTooLarge",COMMAND_NOT_AVAILABLE:"commandNotAvailable",COMMAND_EXECUTION_FAILED:"commandExecutionFailed",COMMAND_TIMEOUT:"commandTimeout",TOOL_EXECUTION_FAILED:"toolExecutionFailed",LSP_SERVER_UNAVAILABLE:"lspServerUnavailable"},Ob={[$.PATH_VALIDATION_FAILED]:{code:$.PATH_VALIDATION_FAILED,category:"VALIDATION",description:"Path validation failed - invalid or unsafe path",recoverability:"user-action-required"},[$.FILE_ACCESS_FAILED]:{code:$.FILE_ACCESS_FAILED,category:"FILE_SYSTEM",description:"Cannot access file - may not exist or lack permissions",recoverability:"unrecoverable"},[$.FILE_READ_FAILED]:{code:$.FILE_READ_FAILED,category:"FILE_SYSTEM",description:"Failed to read file contents",recoverability:"unrecoverable"},[$.FILE_TOO_LARGE]:{code:$.FILE_TOO_LARGE,category:"FILE_SYSTEM",description:"File exceeds size limits for operation",recoverability:"user-action-required"},[$.BINARY_FILE_UNSUPPORTED]:{code:$.BINARY_FILE_UNSUPPORTED,category:"FILE_SYSTEM",description:"Binary file is not supported by text content reader",recoverability:"user-action-required"},[$.NO_MATCHES]:{code:$.NO_MATCHES,category:"SEARCH",description:"Search pattern found no matches",recoverability:"user-action-required"},[$.OUTPUT_TOO_LARGE]:{code:$.OUTPUT_TOO_LARGE,category:"PAGINATION",description:"Output exceeds size limits",recoverability:"user-action-required"},[$.COMMAND_NOT_AVAILABLE]:{code:$.COMMAND_NOT_AVAILABLE,category:"EXECUTION",description:"Required CLI command is not installed or not in PATH",recoverability:"user-action-required"},[$.COMMAND_EXECUTION_FAILED]:{code:$.COMMAND_EXECUTION_FAILED,category:"EXECUTION",description:"System command execution failed",recoverability:"unrecoverable"},[$.COMMAND_TIMEOUT]:{code:$.COMMAND_TIMEOUT,category:"EXECUTION",description:"Command execution timed out",recoverability:"user-action-required"},[$.TOOL_EXECUTION_FAILED]:{code:$.TOOL_EXECUTION_FAILED,category:"EXECUTION",description:"Generic tool execution failure",recoverability:"unrecoverable"},[$.LSP_SERVER_UNAVAILABLE]:{code:$.LSP_SERVER_UNAVAILABLE,category:"EXECUTION",description:"No language server available for semantic analysis \u2014 use text search (localSearchCode) and localGetFileContent instead",recoverability:"user-action-required"}}});function Ld(e){return e instanceof je}function vb(e,t=$.TOOL_EXECUTION_FAILED,n){if(Ld(e))return e;if(e instanceof Error)return new je(t,e.message,n,e);let r=String(e);return new je(t,r,n)}var je,Oa=f(()=>{"use strict";Wn();je=class e extends Error{errorCode;category;recoverability;context;constructor(t,n,r,o){let i=Ob[t],s=n||i.description;super(s,o?{cause:o}:void 0),this.name="ToolError",this.errorCode=t,this.category=i.category,this.recoverability=i.recoverability,this.context=r,o&&o.stack&&(this.stack=`${this.stack}
25
- Caused by: ${o.stack}`),Object.setPrototypeOf(this,e.prototype)}isRecoverable(){return this.recoverability==="recoverable"}requiresUserAction(){return this.recoverability==="user-action-required"}toJSON(){return{name:this.name,errorCode:this.errorCode,category:this.category,message:this.message,recoverability:this.recoverability,context:this.context,stack:this.stack}}}});function ZL(e){return typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&("type"in e||"status"in e||"scopesSuggestion"in e)}function N(e,t,n={}){let{extra:r}=n,o={status:"error"};if(ZL(e))o.error=e;else if(Ld(e))o.error=e.message,o.errorCode=e.errorCode;else if(typeof e=="string")o.error=e;else if(e instanceof Error){let i=vb(e);o.error=i.message,o.errorCode=i.errorCode}else o.error="Unknown error occurred";if(n.toolName&&(o.toolName=n.toolName),r){let{hints:i,...s}=r;Object.assign(o,s)}return n.rawResponse===void 0?o:W(o,n.rawResponse)}function ot(e,t,n={}){let r=e.safeParse(t);if(r.success)return{ok:!0,data:r.data};let o=r.error.issues.map(s=>s.message).join("; "),i=n.prefix===!1?o:`Validation error: ${o}`;return{ok:!1,error:N(i,t,{toolName:n.toolName})}}var _d=f(()=>{"use strict";Oa();ue()});function xe(e,t,n,r,o){let i=n?void 0:"empty",s={...i!==void 0?{status:i}:{},...t};return o?.rawResponse===void 0?s:W(s,o.rawResponse)}function va(e,t){let n={error:e.error||"Provider error",type:"http",status:e.status,rateLimitRemaining:e.rateLimit?.remaining,rateLimitReset:e.rateLimit?.reset?e.rateLimit.reset*1e3:void 0,retryAfter:e.rateLimit?.retryAfter};return N(n,t,{rawResponse:e.rawResponseChars??e.data??(e.error?e:void 0)})}function ze(e,t,n,r){let o=e instanceof Error?e.message:"Unknown error occurred",i=n?`${n}: ${o}`:o;return N(i,t,{toolName:r})}var De=f(()=>{"use strict";_d();ue()});async function ut({toolName:e,query:t,execute:n,contextMessage:r}){try{return await n()}catch(o){return ze(o,t,r,e)}}var Vn=f(()=>{"use strict";De()});function Fd(e){return e.data!==void 0&&!e.error}var Ab=f(()=>{"use strict"});import{maskSensitiveData as Lb}from"@octocodeai/octocode-engine/mask";function e_(){return yu().provider??gu()}function t_(e){let t=yu(),n=t.provider??gu(),{baseUrl:r,token:o}=t;try{let i=Cd(n,{type:n,baseUrl:r,token:o,authInfo:e});return{providerType:n,provider:i,capabilities:i.capabilities,baseUrl:r,token:o,authInfo:e}}catch(i){let s=i instanceof Error?i.message:"Unknown provider error",a=Lb(s);throw new Id(n,`Failed to initialize ${n} provider: ${a}`)}}function dt(e){let t;return()=>t??=t_(e)}function Aa(e,t){return e.capabilities[t]}async function Wt(e,t){let n=await t();return Fd(n)?{ok:!0,response:n}:{ok:!1,result:va(n,e)}}async function _b(e,t){let n=t??e_(),r=await Promise.all(e.map(async s=>{try{return{meta:s.meta,response:await s.operation()}}catch(a){let c=a instanceof Error?a.message:String(a);return{meta:s.meta,response:{error:Lb(c),status:500,provider:n}}}})),o=[],i=[];for(let s of r)Fd(s.response)?o.push({meta:s.meta,response:s.response}):i.push({meta:s.meta,response:s.response});return{successes:o,failures:i}}var Id,Pn=f(()=>{"use strict";xd();Ab();Yo();De();Id=class extends Error{providerType;constructor(t,n){super(n),this.name="ProviderInitializationError",this.providerType=t}}});function Ib(e={},t=La){let n={};for(let o of t){let i=process.env[o];i!==void 0&&(n[o]=i)}let r=new Set(t);for(let[o,i]of Object.entries(e))r.has(o)&&(i===void 0?delete n[o]:n[o]=i);return n}var La,Ri,Fb,Md=f(()=>{"use strict";La=["PATH","TMPDIR","TMP","TEMP","SYSTEMROOT","WINDIR","COMSPEC","PATHEXT"],Ri=[...La,"HOME","USERPROFILE","APPDATA","LOCALAPPDATA"],Fb=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy"]});import{spawn as n_}from"child_process";function Kn(e,t,n={}){let{timeout:r=3e4,cwd:o,env:i={},allowEnvVars:s=La,maxOutputSize:a=r_}=n;return new Promise(c=>{let l={killed:!1,stdoutChunks:[],stderrChunks:[],totalOutputSize:0},u=()=>l.stdoutChunks.join(""),d=()=>l.stderrChunks.join(""),m={cwd:o,env:Ib(i,s),stdio:["ignore","pipe","pipe"]},p;try{p=n_(e,t,m)}catch(S){c({stdout:"",stderr:"",exitCode:null,success:!1,error:S instanceof Error?S:new Error(`Failed to spawn command '${e}'`)});return}let h,g=setTimeout(()=>{if(!l.killed){l.killed=!0;try{p.kill("SIGTERM")}catch{}h=setTimeout(()=>{try{p.kill("SIGKILL")}catch{}},o_),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:new Error(`Command timeout after ${r}ms`),timedOut:!0})}},r),y=()=>{clearTimeout(g),h!==void 0&&(clearTimeout(h),h=void 0)},b=()=>{if(l.totalOutputSize>a){if(!l.killed){l.killed=!0;try{p.kill("SIGKILL")}catch{}y(),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:new Error("Output size limit exceeded"),outputLimitExceeded:!0})}return!0}return!1};p.stdout?.on("data",S=>{if(l.killed)return;let x=S.toString();l.totalOutputSize+=Buffer.byteLength(x),!b()&&l.stdoutChunks.push(x)}),p.stderr?.on("data",S=>{if(l.killed)return;let x=S.toString();l.totalOutputSize+=Buffer.byteLength(x),!b()&&l.stderrChunks.push(x)}),p.on("close",S=>{l.killed||(y(),c({stdout:u(),stderr:d(),exitCode:S,success:S===0}))}),p.on("error",S=>{l.killed||(l.killed=!0,y(),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:S}))})})}function Mb(e,t=1e3){for(let n of e){if(n.includes("\0"))return{valid:!1,error:"Null bytes not allowed in arguments"};if(n.length>t)return{valid:!1,error:"Argument too long"}}return{valid:!0}}var r_,o_,bK,Db=f(()=>{"use strict";Md();r_=10*1024*1024,o_=5e3;bK=1*1024*1024});var _a=f(()=>{"use strict";Md();Db()});import{join as Fa}from"node:path";import{createHash as Nb}from"node:crypto";function Ia(e){return Fa(e,"tmp","clone")}function Ma(e){return Fa(e,"tmp","tree")}function i_(e){return e?`__sp_${Nb("sha256").update(e).digest("hex").substring(0,6)}`:""}function Gb(e){if(!/[\\/]/.test(e))return e;let t=Nb("sha256").update(e).digest("hex").substring(0,8);return`${e.replace(/[\\/]/g,"_")}__b_${t}`}function Dd(e,t,n,r,o){let i=`${Gb(r)}${i_(o)}`;return Fa(Ia(e),t,n,i)}function Si(e,t,n,r){return Fa(Ma(e),t,n,Gb(r))}var Nd=f(()=>{"use strict"});import{existsSync as xi,readFileSync as s_,writeFileSync as a_,mkdirSync as c_,rmSync as Ci,readdirSync as l_,statSync as u_}from"node:fs";import{join as Cn}from"node:path";function f_(e){return typeof e=="object"&&e!==null}function h_(e){if(!f_(e)||typeof e.clonedAt!="string"||typeof e.expiresAt!="string"||typeof e.owner!="string"||typeof e.repo!="string"||typeof e.branch!="string"||e.source!=="clone"&&e.source!=="directoryFetch"&&e.source!=="treeFetch")return null;let t={clonedAt:e.clonedAt,expiresAt:e.expiresAt,owner:e.owner,repo:e.repo,branch:e.branch,source:e.source};return typeof e.sparsePath=="string"&&(t.sparsePath=e.sparsePath),typeof e.sizeBytes=="number"&&(t.sizeBytes=e.sizeBytes),typeof e.commitSha=="string"&&e.commitSha.length===40&&(t.commitSha=e.commitSha),t}function Gd(e){let t=Cn(e,Qb);if(!xi(t))return null;try{return h_(JSON.parse(s_(t,"utf-8")))}catch{return null}}function Nr(e,t){try{a_(Cn(e,Qb),JSON.stringify(t,null,2),"utf-8")}catch{}}function jb(e){return Date.now()<new Date(e.expiresAt).getTime()}function Gr(e){let t=Gd(e);return t?jb(t)?xi(e)?{hit:!0,meta:t}:{hit:!1}:{hit:!1}:{hit:!1}}function g_(){let e=process.env.OCTOCODE_CACHE_TTL_MS;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return d_}function y_(){let e=process.env.OCTOCODE_MAX_CACHE_SIZE;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return p_}function b_(){let e=process.env.OCTOCODE_MAX_CLONES;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return Math.floor(t)}return m_}function Hr(e,t,n,r,o,i,s){let a=new Date;return{clonedAt:a.toISOString(),expiresAt:new Date(a.getTime()+g_()).toISOString(),owner:e,repo:t,branch:n,source:r,...o?{sparsePath:o}:{},...i!=null?{sizeBytes:i}:{},...s?{commitSha:s}:{}}}function xn(e){let t=Cn(e,"..");try{xi(t)||c_(t,{recursive:!0,mode:448})}catch(n){throw new Error(`Failed to create clone parent directory '${t}': ${n instanceof Error?n.message:String(n)}`)}}function Da(e){try{xi(e)&&Ci(e,{recursive:!0,force:!0})}catch{}}function Pi(e){try{return u_(e).isDirectory()}catch{return!1}}function Yn(e){try{return l_(e)}catch{return[]}}function*Bb(e){for(let t of Yn(e)){let n=Cn(e,t);if(Pi(n))for(let r of Yn(n)){let o=Cn(n,r);if(Pi(o))for(let i of Yn(o)){let s=Cn(o,i);Pi(s)&&(yield s)}}}}function Hb(e){for(let t of[...Yn(e)]){let n=Cn(e,t);if(Pi(n)){for(let r of[...Yn(n)]){let o=Cn(n,r);if(Pi(o)&&Yn(o).length===0)try{Ci(o,{recursive:!0,force:!0})}catch{}}if(Yn(n).length===0)try{Ci(n,{recursive:!0,force:!0})}catch{}}}}function R_(e){let t=0;for(let n of Bb(e))try{let r=Gd(n);(!r||!jb(r))&&(Ci(n,{recursive:!0,force:!0}),t++)}catch{}return t}function S_(e){let t=[];for(let n of Bb(e)){let r=Gd(n);if(!r)continue;let o=Number.isNaN(Date.parse(r.clonedAt))?0:Date.parse(r.clonedAt);t.push({branchDir:n,clonedAtMs:o,sizeBytes:r.sizeBytes??Vs(n)})}return t}function P_(e,t,n){let r=e.reduce((s,a)=>s+a.sizeBytes,0),o=e.length;if(r<=t&&o<=n)return 0;e.sort((s,a)=>s.clonedAtMs-a.clonedAtMs);let i=0;for(let s of e){if(r<=t&&o<=n)break;try{Ci(s.branchDir,{recursive:!0,force:!0}),i++,r-=s.sizeBytes,o-=1}catch{}}return i}function zb(e){if(!xi(e))return 0;let t=0;try{t+=R_(e)}catch{return t}Hb(e);let n=P_(S_(e),y_(),b_());return t+=n,n>0&&Hb(e),t}function Ub(e){return zb(Ia(e))}function Na(e){return zb(Ma(e))}var d_,LK,p_,m_,Qb,Ga=f(()=>{"use strict";Ot();Nd();Nd();d_=1440*60*1e3,LK=600*1e3,p_=2*1024*1024*1024,m_=50,Qb=".octocode-clone-meta.json"});import{existsSync as C_,mkdirSync as Hd,renameSync as x_,rmSync as w_}from"fs";import{join as wi}from"path";import{createHash as T_}from"crypto";async function Vb(e,t,n){let r=e.owner,o=e.repo,{sparsePath:i,forceRefresh:s}=e;await G_();let a=e.branch??await We(r,o,t),c=xr(),l=Dd(c,r,o,a,i);return A_(c,l,async()=>{let u=Gr(l);if(!s&&u.hit&&u.meta.source==="clone")return{localPath:l,cached:!0,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}};Ub(c),xn(l);let d=N_(t,n),m=__(c,l);Da(m);try{if(i){if(await D_(r,o,a,m,i,d),!C_(wi(m,i)))throw new Error(`sparsePath "${i}" does not exist in ${r}/${o}@${a} \u2014 nothing was checked out for it. Verify the path with ghViewRepoStructure, then retry with the correct sparsePath (or omit it for a full clone).`)}else await M_(r,o,a,m,d);let p=Hr(r,o,a,"clone",i);return Nr(m,p),F_(m,l),{localPath:l,cached:!1,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}}}catch(p){throw Da(m),p}})}async function A_(e,t,n){xn(t);let r=L_(e,t);Hd(wi(e,"tmp",qb),{recursive:!0,mode:448});let o=Date.now();for(;;)try{Hd(r,{mode:448});break}catch(i){if(i.code!=="EEXIST")throw i;if(Date.now()-o>k_)throw new Error(`Timed out waiting for clone cache lock '${r}'.`);await I_(O_)}try{return await n()}finally{w_(r,{recursive:!0,force:!0})}}function Kb(e){return T_("sha256").update(e).digest("hex").slice(0,16)}function L_(e,t){return wi(e,"tmp",qb,Kb(t))}function __(e,t){let n=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=wi(e,"tmp",v_);return Hd(r,{recursive:!0,mode:448}),wi(r,`${Kb(t)}-${n}`)}function F_(e,t){Da(t),xn(t),x_(e,t)}function I_(e){return new Promise(t=>setTimeout(t,e))}async function M_(e,t,n,r,o){let i=Xb(o);i.push("clone","--depth","1","--single-branch","--branch",n,"--",Yb(e,t),r),await Qd(i,$b,`full clone of ${e}/${t}`,o)}async function D_(e,t,n,r,o,i){let s=Xb(i);s.push("clone","--filter","blob:none","--sparse","--depth","1","--single-branch","--branch",n,"--",Yb(e,t),r),await Qd(s,$b,`sparse clone of ${e}/${t}`,i),await Qd(["-C",r,"sparse-checkout","set","--skip-checks","--",o],E_,`sparse-checkout set ${o}`,void 0)}function Yb(e,t){return`https://github.com/${e}/${t}.git`}function Xb(e){return e?["-c",`http.extraHeader=Authorization: Bearer ${e}`]:[]}function N_(e,t){return e?.token&&typeof e.token=="string"?e.token:t}async function G_(){try{if(!(await Kn("git",["--version"],{timeout:5e3,maxOutputSize:1024,allowEnvVars:Wb,env:{GIT_TERMINAL_PROMPT:"0"}})).success)throw new Error("git --version returned non-zero")}catch{throw new Error("git is not installed or not on PATH. The ghCloneRepo tool requires git to be available.")}}function H_(e,t){let n=e;return t&&(n=n.replaceAll(t,"[REDACTED]")),n=n.replace(/Authorization:\s*Bearer\s+\S+/gi,"Authorization: Bearer [REDACTED]"),n=n.replace(/Authorization:\s*token\s+\S+/gi,"Authorization: token [REDACTED]"),n}async function Qd(e,t,n,r){let o=await Kn("git",e,{timeout:t,maxOutputSize:5242880,allowEnvVars:Wb,env:{GIT_TERMINAL_PROMPT:"0"}});if(!o.success){let i=H_(o.stderr?.trim()||"",r),s=i?`: ${i}`:"";throw new Error(`git ${n} failed${s}`)}}var $b,E_,k_,O_,qb,v_,Wb,Jb=f(()=>{"use strict";Ot();Ae();_a();Ga();$b=120*1e3,E_=30*1e3,k_=300*1e3,O_=100,qb="clone-locks",v_="clone-tmp",Wb=[...Ri,"GIT_TERMINAL_PROMPT"]});async function Zb(e){let{queries:t,authInfo:n}=e,r=dt(n);return me(t,async(o,i)=>ut({toolName:v.GITHUB_CLONE_REPO,query:o,contextMessage:`Clone failed for ${o.owner}/${o.repo}`,execute:async()=>{let s=r();if(!Aa(s,"cloneRepo"))return ze(new Error("ghCloneRepo is only available with the GitHub provider."),o,"Provider not supported",v.GITHUB_CLONE_REPO);let a;try{a=await Vb(o,n,s.token)}catch(m){let p=m instanceof Error?m.message:String(m);return N(`Clone failed for ${o.owner}/${o.repo}: ${p}`,o)}let c=Vs(a.localPath),l={kind:o.sparsePath?"tree":"repo",localPath:a.localPath,repoRoot:a.localPath,source:"clone",cached:a.cached,complete:!o.sparsePath,resolvedBranch:a.branch,...o.sparsePath?{requestedPath:o.sparsePath}:{}},u={viewStructure:{tool:"localViewStructure",query:{path:a.localPath},why:"Browse the cloned directory; once you know what to search for, call localSearchCode with real keywords against this localPath",confidence:"exact"}},d={owner:o.owner,repo:o.repo,localPath:a.localPath,resolvedBranch:a.branch,cached:a.cached,...o.sparsePath?{sparsePath:o.sparsePath}:{},totalSize:c,location:l,next:u};return xe(o,d,!0,v.GITHUB_CLONE_REPO,{rawResponse:c})}}),{toolName:v.GITHUB_CLONE_REPO,keysPriority:["localPath","resolvedBranch","cached","sparsePath","totalSize","location","error"]},e)}var eR=f(()=>{"use strict";Ot();pe();Ke();De();Vn();Pn();Jb()});import{readdirSync as Q_,statSync as tR}from"node:fs";import{join as j_}from"node:path";function zd(){return{nonFile:0,missingDownloadUrl:0,oversized:0,binary:0,fileLimit:0,fetchFailed:0,totalSizeLimit:0,pathTraversal:0}}function oR(e){return Object.values(e).every(t=>t===0)}function Ud(e,t){if(!t&&e)return["Cannot verify completeness against remote tree; use forceRefresh or ghCloneRepo if completeness matters."];if(!e)return["Directory materialization is partial; inspect skipped counts or use ghCloneRepo before repo-wide reachability/dead-code conclusions."]}async function iR(e,t,n){let r=[];for(let o=0;o<e.length;o+=t){let i=e.slice(o,o+t),s=await Promise.allSettled(i.map(async a=>{let c=await U_(a.download_url,n);return{entry:a,content:c}}));for(let a of s)a.status==="fulfilled"&&r.push(a.value)}return r}async function U_(e,t){try{let o=new URL(e);if(!z_.has(o.hostname))throw new Error(`Blocked fetch to unexpected host: ${o.hostname}. Only GitHub download URLs are allowed.`)}catch(o){throw o instanceof TypeError?new Error(`Invalid download URL: ${e}`):o}let n=new AbortController,r=setTimeout(()=>n.abort(),B_);try{let o={"User-Agent":"octocode-mcp"};t&&(o.Authorization=`token ${t}`);let i=await fetch(e,{signal:n.signal,headers:o});if(!i.ok)throw new Error(`HTTP ${i.status} fetching ${e}`);return await i.text()}finally{clearTimeout(r)}}function sR(e,t){let n=[],r=0;function o(i){let s;try{s=Q_(i)}catch{return}for(let a of s){if(a.startsWith("."))continue;let c=j_(i,a);try{let l=tR(c);if(l.isDirectory())o(c);else if(l.isFile()){let u=c.substring(t.length+1);r+=l.size,n.push({path:u,size:l.size,type:"file"})}}catch{}}}return o(e),{files:n,fileCount:n.length,totalSize:r}}function aR(e){try{return tR(e).size}catch{return 0}}var Ti,Ha,jd,nR,B_,rR,Bd,z_,Qa=f(()=>{"use strict";Ti=50,Ha=5*1024*1024,jd=300*1024,nR=5,B_=1e4,rR=new Set([".png",".jpg",".jpeg",".gif",".bmp",".ico",".svg",".webp",".mp3",".mp4",".wav",".avi",".mov",".mkv",".webm",".zip",".tar",".gz",".bz2",".7z",".rar",".xz",".exe",".dll",".so",".dylib",".bin",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".woff",".woff2",".ttf",".eot",".otf",".pyc",".class",".o",".obj",".lock",".min.js",".min.css"]),Bd={maxDirectoryFiles:Ti,maxTotalSize:Ha,maxFileSize:jd};z_=new Set(["raw.githubusercontent.com","objects.githubusercontent.com","github.com"])});import{writeFileSync as $_,mkdirSync as cR,existsSync as $d,rmSync as q_}from"node:fs";import{join as lR,dirname as W_,resolve as uR,sep as dR}from"node:path";async function qd(e,t,n,r,o,i=!1){let s=xr(),a=Si(s,e,t,r),c=uR(lR(a,n));if(!c.startsWith(a+dR)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let l=Gr(a);if(l.hit&&!i&&$d(c)){let A=sR(c,a),q=zd();return{localPath:c,repoRoot:a,files:A.files,fileCount:A.fileCount,totalSize:A.totalSize,complete:!0,verified:!1,...l.meta.commitSha?{commitSha:l.meta.commitSha}:{},directoryEntryCount:A.fileCount,eligibleFileCount:A.fileCount,savedFileCount:A.fileCount,skipped:q,limits:Bd,warnings:Ud(!0,!1),cached:!0,expiresAt:l.meta.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}let u=await ie(o),d;try{d=(await u.rest.repos.getBranch({owner:e,repo:t,branch:r})).data.commit.sha}catch{}let{data:m}=await u.rest.repos.getContent({owner:e,repo:t,path:n,ref:r});if(!Array.isArray(m))throw new Error(`Path "${n}" is not a directory. Use type "file" to fetch file content.`);let p=m,h=zd(),g=[];for(let A of p){if(A.type!=="file"){h.nonFile+=1;continue}if(!A.download_url){h.missingDownloadUrl+=1;continue}if(A.size>jd){h.oversized+=1;continue}let q=Yg(A.name,{lowercase:!0,leadingDot:!0});if(rR.has(q)){h.binary+=1;continue}g.push(A)}h.fileLimit=Math.max(0,g.length-Ti);let y=g.slice(0,Ti),b=o?.token,S=await iR(y,nR,b);h.fetchFailed=y.length-S.length;let x=0,k=[];for(let A=0;A<S.length;A+=1){let{entry:q,content:H}=S[A];if(x+H.length>Ha){h.totalSizeLimit=S.length-A;break}x+=H.length,k.push({entry:q,content:H})}Na(s),xn(a),$d(c)&&q_(c,{recursive:!0,force:!0}),cR(c,{recursive:!0,mode:448});let E=[];for(let{entry:A,content:q}of k){let H=uR(lR(a,A.path));if(!H.startsWith(a+dR)){h.pathTraversal+=1;continue}let K=W_(H);$d(K)||cR(K,{recursive:!0,mode:448}),$_(H,q,"utf-8"),E.push({path:A.path,size:q.length,type:"file"})}let _=Hr(e,t,r,"treeFetch",void 0,void 0,d);Nr(a,_);let w=oR(h),G=w,M=h.nonFile>0;return{localPath:c,repoRoot:a,files:E,fileCount:E.length,totalSize:x,complete:w,verified:G,...d?{commitSha:d}:{},...M?{hasSubdirectories:!0}:{},directoryEntryCount:p.length,eligibleFileCount:g.length,savedFileCount:E.length,skipped:h,limits:Bd,warnings:Ud(w,G),cached:!1,expiresAt:_.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}var pR=f(()=>{"use strict";Ot();Ae();Ga();oi();Qa()});import{writeFileSync as V_,mkdirSync as K_,existsSync as mR}from"node:fs";import{join as Y_,dirname as X_,resolve as J_,sep as Z_}from"node:path";async function Wd(e,t,n,r,o,i=!1){let s=xr(),a=Si(s,e,t,r),c=J_(Y_(a,n));if(!c.startsWith(a+Z_)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let l=Gr(a);if(!i&&l.hit&&mR(c))return{localPath:c,repoRoot:a,path:n,size:aR(c),cached:!0,expiresAt:l.meta.expiresAt,owner:e,repo:t,branch:r};let u=await ai({owner:e,repo:t,path:n,type:"file",branch:r,fullContent:!0,contextLines:0,minify:"none",mainResearchGoal:"Materialize GitHub file content for local research",researchGoal:`Save ${e}/${t}/${n} locally`,reasoning:"GitHub file materialization"},o);if(!("data"in u)||!u.data){let h="error"in u?u.error:void 0;throw new Error(h||`Failed to fetch ${e}/${t}/${n}`)}Na(s),xn(a);let d=X_(c);mR(d)||K_(d,{recursive:!0,mode:448}),V_(c,u.data.rawContent,"utf-8");let m=u.data.branch||r,p=Hr(e,t,m,"treeFetch");return Nr(a,p),{localPath:c,repoRoot:a,path:n,size:u.data.rawContent.length,cached:!1,expiresAt:p.expiresAt,owner:e,repo:t,branch:m}}var fR=f(()=>{"use strict";Ot();Vu();Ga();Qa()});var hR=f(()=>{"use strict";Qa();pR();fR()});function ja(e,t){return e&&t?`${e}/${t}`:void 0}function Ba(e){let t=e.lastIndexOf("/");return t<=0?{owner:"",repo:e}:{owner:e.substring(0,t),repo:e.substring(t+1)}}function za(e){return{...typeof e?.reportedTotalMatches=="number"?{reportedTotalMatches:e.reportedTotalMatches}:{},...typeof e?.reachableTotalMatches=="number"?{reachableTotalMatches:e.reachableTotalMatches}:{},...e?.totalMatchesKind?{totalMatchesKind:e.totalMatchesKind}:{},...typeof e?.totalMatchesCapped=="boolean"?{totalMatchesCapped:e.totalMatchesCapped}:{},...typeof e?.uniqueFileCount=="number"?{uniqueFileCount:e.uniqueFileCount}:{}}}var Ua=f(()=>{"use strict"});function tF(e,t=500){if(t<=0)return"";let n=[...e];return n.length<=t?e:t<=3?".".repeat(t):n.slice(0,t-3).join("")+"..."}function gR(e){return{keywords:e.keywords??[],projectId:ja(e.owner,e.repo),owner:e.owner,path:e.path,filename:e.filename,extension:e.extension,language:e.language,match:e.match,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function yR(e,t){let n=t.match==="path",r=t.verbose===!0,o=new Map;for(let s of e.items){let a=s.repository.name||"",{owner:c,repo:l}=Ba(a),u=`${c}/${l}`,d=s,m=o.get(u);if(m||(m={id:u,owner:c,repo:l,matches:[]},o.set(u,m)),n||!s.matches?.length){m.matches.push({path:s.path,...n?{}:{pathOnly:!0},...r&&d.url?{url:d.url}:{}});continue}let p=!0,h=!1;for(let g of s.matches){if(!g.context)continue;let y={path:s.path,value:tF(g.context)};g.positions?.length>0&&(y.matchIndices=g.positions.map(([b,S])=>({start:b,end:S,lineOffset:(g.context??"").substring(0,b).split(`
26
- `).length-1}))),r&&p&&d.url&&(y.url=d.url,p=!1),m.matches.push(y),h=!0}h||m.matches.push({path:s.path,pathOnly:!0,...r&&d.url?{url:d.url}:{}})}let i={results:Array.from(o.values()),...e.nonExistentScope?{nonExistentScope:!0}:{},...e.incompleteResults?{incompleteResults:!0}:{}};return e.pagination&&e.pagination.totalPages>1&&(i.pagination={currentPage:e.pagination.currentPage,totalPages:e.pagination.totalPages,perPage:e.pagination.entriesPerPage||10,totalMatches:e.pagination.totalMatches||0,...za(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}),i}var bR=f(()=>{"use strict";ae();Ua()});function RR(e){let t=e;return{keywords:e.keywords,topics:e.topicsToSearch,owner:e.owner,stars:e.stars,size:e.size,created:e.created,updated:e.updated,language:e.language,archived:t.archived,visibility:t.visibility,forks:t.forks,license:t.license,goodFirstIssues:t.goodFirstIssues,match:e.match,sort:e.sort,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function SR(e){return e.map(t=>{let{owner:n,repo:r}=Ba(t.fullPath);return{owner:n||"",repo:r||t.name,defaultBranch:t.defaultBranch,stars:t.stars,description:t.description||"",url:t.url,createdAt:t.createdAt,updatedAt:t.updatedAt,pushedAt:t.lastActivityAt,visibility:t.visibility,topics:t.topics,forksCount:t.forks,openIssuesCount:t.openIssuesCount,...t.language&&{language:t.language}}})}var PR=f(()=>{"use strict";Ua()});function $a(e){return e.startsWith('"')?e:/\s/.test(e)?`"${e.replace(/"/g,'\\"')}"`:e}var Vd=f(()=>{"use strict"});function CR(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map($a),n=e.query?.trim()??"",r=[...t,...n?[n]:[]].join(" ")||void 0;return{projectId:ja(e.owner,e.repo),owner:e.owner,query:r,number:e.prNumber,state:e.state,author:e.author,assignee:e.assignee,commenter:e.commenter,involves:e.involves,mentions:e.mentions,reviewRequested:e["review-requested"],reviewedBy:e["reviewed-by"],labels:(()=>{let o=e.label;if(o)return Array.isArray(o)?o:[o]})(),noLabel:e["no-label"],noMilestone:e["no-milestone"],noProject:e["no-project"],noAssignee:e["no-assignee"],baseBranch:e.base,headBranch:e.head,created:e.created,updated:e.updated,closed:e.closed,mergedAt:e["merged-at"],comments:e.comments,reactions:e.reactions,interactions:e.interactions,draft:e.draft,match:e.match,milestone:e.milestone,language:e.language,checks:e.checks,review:e.review,locked:e.locked,visibility:e.visibility,teamMentions:e["team-mentions"],project:e.project,archived:e.archived,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,sort:e.sort,order:e.order,limit:e.limit??30,page:e.page,charOffset:e.charOffset,charLength:e.charLength,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function nF(e,t){let n=[];t.some(o=>o.state==="APPROVED")&&n.push("approval"),t.some(o=>o.state==="CHANGES_REQUESTED")&&n.push("changes-requested");let r=e.filter(o=>!Un(o.author??"")).map(o=>o.body.toLowerCase());return n.length===0&&r.some(o=>/\b(lgtm|looks good|approved|ship it)\b/.test(o))&&n.push("approval"),!n.includes("changes-requested")&&r.some(o=>/\b(change|fix|concern|blocker|blocking|request changes?)\b/.test(o))&&n.push("changes-requested"),r.some(o=>o.includes("?"))&&n.push("question"),n.length>0?n:["discussion"]}function rF(e,t){if(!e||e.length===0)return;let n=Array.from(new Set(e.map(i=>i.author))),r=e.map(i=>i.updatedAt||i.createdAt).filter(Boolean).sort().at(-1),o=e.filter(i=>i.commentType==="review_inline").length;return{totalComments:e.length,inlineComments:o,discussionComments:e.length-o,commenters:n.slice(0,8),...r?{latestCommentAt:r}:{},themes:nF(e,t??[])}}function xR(e,t={}){let{includeFileChanges:n=!0}=t,r=e.items.map(i=>{let s=i.fileChanges,a=s?.length??0,c=Array.isArray(i.comments)?i.comments:void 0,l=rF(c,i.reviews);return{number:i.number,title:i.title,body:i.body??void 0,...i.bodyPagination&&{bodyPagination:i.bodyPagination},url:i.url,state:i.state,draft:i.draft,author:i.author,assignees:i.assignees,labels:i.labels,sourceBranch:i.sourceBranch,targetBranch:i.targetBranch,sourceSha:i.sourceSha,targetSha:i.targetSha,createdAt:i.createdAt,updatedAt:i.updatedAt,closedAt:i.closedAt,mergedAt:i.mergedAt,commentsCount:i.commentsCount,changedFilesCount:i.changedFilesCount??a,additions:i.additions,deletions:i.deletions,...Array.isArray(i.comments)&&i.comments.length>0&&{comments:i.comments.map(u=>({...u,...u.bodyPagination&&{bodyPagination:u.bodyPagination}}))},...i.reviews&&{reviews:i.reviews},...i.commits&&{commits:i.commits},...l&&{reviewSummary:l},...s&&n?{fileChanges:s}:{},...Array.isArray(i.sanitizationWarnings)&&i.sanitizationWarnings.length>0?{sanitizationWarnings:i.sanitizationWarnings}:{}}}),o=e.pagination?{currentPage:e.pagination.currentPage,totalPages:e.pagination.totalPages,perPage:e.pagination.entriesPerPage||10,...typeof e.pagination.totalMatches=="number"?{totalMatches:e.pagination.totalMatches}:{},...za(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}:void 0;return{pullRequests:r,resultData:{pull_requests:r,...o?{pagination:o}:{total_count:e.totalCount||r.length}},pagination:o}}var wR=f(()=>{"use strict";ae();Vd();Ra();Ua()});function TR(e){let t=!!e.fullContent;return{projectId:`${e.owner}/${e.repo}`,path:String(e.path),ref:e.branch?String(e.branch):void 0,startLine:t?void 0:e.startLine,endLine:t?void 0:e.endLine,matchString:t||!e.matchString?void 0:String(e.matchString),contextLines:e.contextLines??5,fullContent:t,forceRefresh:!!e.forceRefresh,charOffset:e.charOffset,charLength:e.charLength,minify:e.minify,matchStringIsRegex:e.matchStringIsRegex,matchStringCaseSensitive:e.matchStringCaseSensitive,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function ER(e,t){return{path:e.path,content:e.content,...typeof e.size=="number"&&e.size>0&&{fileSize:e.size},...typeof e.totalLines=="number"&&{totalLines:e.totalLines},...typeof e.sourceChars=="number"&&{sourceChars:e.sourceChars},...typeof e.sourceBytes=="number"&&{sourceBytes:e.sourceBytes},...e.contentView&&{contentView:e.contentView},...e.isPartial&&{isPartial:e.isPartial},...e.startLine&&{startLine:e.startLine},...e.endLine&&{endLine:e.endLine},...e.matchRanges?.length&&{matchRanges:e.matchRanges},...e.lastModified&&{lastModified:e.lastModified},...e.lastModifiedBy&&{lastModifiedBy:e.lastModifiedBy},...e.pagination&&{pagination:e.pagination},...e.warnings?.length&&{warnings:e.warnings},...e.matchNotFound===!0&&{matchNotFound:!0},...e.searchedFor&&{searchedFor:e.searchedFor},...e.ref&&t.branch!==e.ref?{resolvedBranch:e.ref}:{}}}var kR=f(()=>{"use strict"});function Kd(e,t){return{projectId:`${e.owner}/${e.repo}`,ref:t,path:e.path?String(e.path):void 0,depth:typeof e.maxDepth=="number"?e.maxDepth:void 0,itemsPerPage:e.itemsPerPage??Sn.ENTRIES_PER_PAGE,page:(()=>{let n=e.page;return typeof n=="number"?n:void 0})(),includeSizes:e.includeSizes,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function OR(e,t,n,r){let o=r,i=e.branch??r,s=o&&i&&o!==i&&o!=="HEAD",a=Object.entries(n).sort(([m],[p])=>m==="."?-1:p==="."?1:m.localeCompare(p)).map(([m,p])=>({dir:m,files:p.files,folders:p.folders})),c=e.fileSizeMap,l={};if(c){for(let[m,p]of Object.entries(c))if(n[m]){let h=new Set(n[m].files);for(let[g,y]of Object.entries(p))if(h.has(g)){let b=m==="."?g:`${m}/${g}`;l[b]=y}}}let u=Object.values(n).reduce((m,p)=>(m.totalFiles+=p.files.length,m.totalFolders+=p.folders.length,m),{totalFiles:0,totalFolders:0}),d={structure:a,...Object.keys(l).length>0&&{fileSizes:l},summary:{totalFiles:u.totalFiles,totalFolders:u.totalFolders}};return i&&(d.resolvedBranch=i),s&&(d.branchFallback={requestedBranch:o,actualBranch:i,...e.defaultBranch!==void 0&&{defaultBranch:e.defaultBranch},warning:`Branch '${o}' not found. Showing '${i}' (default branch). Re-query with the correct branch name if branch-specific results are required.`}),e.pagination&&(e.pagination.hasMore||e.pagination.totalPages>1)&&(d.pagination=e.pagination),d}var vR=f(()=>{"use strict";fi()});var Qr=f(()=>{"use strict";bR();PR();wR();kR();vR()});function qa(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function oF(e){if(typeof e=="string")return{message:e};if(typeof e=="object"&&e!==null){let t=e;return{message:typeof t.error=="string"&&t.error.length>0?t.error:"Provider error",status:qa(t.status),retryAfterSeconds:qa(t.retryAfter),rateLimitRemaining:qa(t.rateLimitRemaining),rateLimitReset:qa(t.rateLimitReset)}}return{message:"Provider error"}}function Wa(e){let t=[];for(let n of e){if(n.status!=="error")continue;let{message:r,status:o,retryAfterSeconds:i,rateLimitRemaining:s,rateLimitReset:a}=oF(n.data.error),c=o!==void 0?`${r} (HTTP ${o})`:r;t.push({id:n.id,error:c,...o!==void 0?{status:o}:{},...i!==void 0?{retryAfterSeconds:i}:{},...s!==void 0?{rateLimitRemaining:s}:{},...a!==void 0?{rateLimitReset:a}:{}})}return t}function Va(e,t,n){let r=qn(e,[...t]);return{structuredContent:xt($n(e)??{}),text:r,isError:n}}var Yd=f(()=>{"use strict";Dr()});function Ka(e){return typeof e=="object"&&e!==null}function pt(e){return typeof e=="string"&&e.length>0?e:void 0}function Ye(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function AR(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string");return t.length>0?t:void 0}function wt(e,t){return Ye(e[t])??0}function iF(e){if(Ka(e))return{nonFile:wt(e,"nonFile"),missingDownloadUrl:wt(e,"missingDownloadUrl"),oversized:wt(e,"oversized"),binary:wt(e,"binary"),fileLimit:wt(e,"fileLimit"),fetchFailed:wt(e,"fetchFailed"),totalSizeLimit:wt(e,"totalSizeLimit"),pathTraversal:wt(e,"pathTraversal")}}function sF(e){if(Ka(e))return{maxDirectoryFiles:wt(e,"maxDirectoryFiles"),maxTotalSize:wt(e,"maxTotalSize"),maxFileSize:wt(e,"maxFileSize")}}function cF(e){if(!Ka(e))return;let{currentPage:t,totalPages:n,hasMore:r}=e;if(typeof t!="number"||typeof n!="number"||typeof r!="boolean")return;let o={currentPage:t,totalPages:n,hasMore:r};for(let i of aF){let s=e[i];typeof s=="number"&&Number.isFinite(s)&&(o[i]=s)}return o}function lF(e,t){return _s("ghGetFileContent",{owner:t.owner,repo:t.repo,...t.branch!==void 0?{branch:t.branch}:{},path:t.path,...t.minify!==void 0?{minify:t.minify}:{}},e)}function uF(e){return{tool:"ghCloneRepo",query:{owner:e.owner,repo:e.repo,...e.branch!==void 0?{branch:e.branch}:{},sparsePath:e.path},why:"lspGetSemantics (definitions/references) only works on local files \u2014 clone this path locally, then run localSearchCode or lspGetSemantics on it",confidence:"exact"}}function LR(e,t){let n=cF(e.pagination),r={...lF(n,t),cloneForSemantics:uF(t)};return{path:pt(e.path)??String(t.path??""),content:typeof e.content=="string"?e.content:"",localPath:pt(e.localPath),repoRoot:pt(e.repoRoot),...Ye(e.fileSize)!==void 0?{fileSize:Ye(e.fileSize)}:{},contentView:e.contentView==="none"||e.contentView==="standard"||e.contentView==="symbols"?e.contentView:void 0,totalLines:Ye(e.totalLines),sourceChars:Ye(e.sourceChars),sourceBytes:Ye(e.sourceBytes),resolvedBranch:pt(e.resolvedBranch),pagination:n,next:r,...e.isPartial===!0?{isPartial:!0}:{},startLine:Ye(e.startLine),endLine:Ye(e.endLine),...Array.isArray(e.matchRanges)&&e.matchRanges.length>0?{matchRanges:e.matchRanges}:{},lastModified:pt(e.lastModified),lastModifiedBy:pt(e.lastModifiedBy),warnings:AR(e.warnings),...e.matchNotFound===!0?{matchNotFound:!0}:{},searchedFor:pt(e.searchedFor),...e.cached===!0?{cached:!0}:{}}}function _R(e,t){let r=(Array.isArray(e.files)?e.files:[]).filter(Ka).map(c=>({path:pt(c.path)??"",size:Ye(c.size)??0,type:pt(c.type)??"file"})),o=iF(e.skipped),i=e.hasSubdirectories===!0||(o?o.nonFile>0:!1),s=o?Object.entries(o).filter(([,c])=>c>0):[],a=s.length>0?Object.fromEntries(s):void 0;return{path:String(t.path??""),localPath:pt(e.localPath)??"",repoRoot:pt(e.repoRoot),fileCount:Ye(e.fileCount)??r.length,totalSize:Ye(e.totalSize)??0,complete:e.complete===!0,verified:e.verified===!0,...typeof e.commitSha=="string"&&e.commitSha.length===40?{commitSha:e.commitSha}:{},...i?{hasSubdirectories:!0}:{},...a?{skippedSummary:a}:{},directoryEntryCount:Ye(e.directoryEntryCount),eligibleFileCount:Ye(e.eligibleFileCount),savedFileCount:Ye(e.savedFileCount),skipped:o,limits:sF(e.limits),warnings:AR(e.warnings),...r.length>0?{files:r}:{},...e.cached===!0?{cached:!0}:{},resolvedBranch:pt(e.resolvedBranch)}}var aF,FR=f(()=>{"use strict";Be();aF=["charOffset","charLength","totalChars","nextCharOffset","nextBlockChar","nextPage","nextMatchPage","filesPerPage","totalFiles","entriesPerPage","totalEntries","matchesPerPage","totalMatches"]});function dF(e,t){return`${e}/${t}`}function pF(e,t,n){let r=dF(t,n),o=e.get(r);if(o)return o;let i={id:r,owner:t,repo:n};return e.set(r,i),i}function mF(e,t){let n=new Map;return e.forEach(r=>{if(r.status==="error")return;let o=t.get(r.id);if(!o)return;let i=String(o.owner??""),s=String(o.repo??"");if(!i||!s)return;let a=pF(n,i,s),c=r.data;if(o.type==="directory"){let u=a.directories??[];u.push(_R(c,o)),a.directories=u;return}let l=a.files??[];l.push(LR(c,o)),a.files=l}),Array.from(n.values()).map(r=>{let o={owner:r.owner,repo:r.repo,...r.files?{files:r.files}:{},...r.directories?{directories:r.directories}:{}};return{id:r.id,data:o}})}function fF(e,t){return Wa(e).map(r=>{let o=t.get(r.id);return{id:r.id,owner:o?.owner,repo:o?.repo,path:o?.path?String(o.path):void 0,error:r.error}})}function IR(){return({queries:e,results:t})=>{let n=new Map,r=bi(e);e.forEach((a,c)=>{n.set(r[c],a)});let o=mF(t,n),i=fF(t,n),s={results:o};return i&&i.length>0&&(s.errors=i),Va(s,["results","id","owner","repo","files","directories","path","content","totalLines","startLine","endLine","isPartial","pagination","errors"],o.length===0&&!!(i&&i.length>0))}}var MR=f(()=>{"use strict";Yd();Ke();FR()});async function DR(e){let{queries:t,authInfo:n}=e,r=dt(n);return me(t,async(o,i)=>{try{let s=ot(Fn,o,{prefix:!1});if(s.ok===!1)return s.error;let a=s.data,c=r();return a.type==="directory"?hF(a,n,c):gF(a,n,c)}catch(s){return ze(s,o,void 0,v.GITHUB_FETCH_CONTENT)}},{toolName:v.GITHUB_FETCH_CONTENT,finalize:IR()},e)}async function hF(e,t,n){if(!Aa(n,"fetchDirectoryToDisk"))return ze(new Error('Directory fetch (type: "directory") is only available with the GitHub provider. Use file mode (type: "file") instead.'),e,"Provider not supported",v.GITHUB_FETCH_CONTENT);if(!e.owner||!e.repo)return N("Directory fetch requires both owner and repo.",e,{rawResponse:0});let r=e.branch??await We(e.owner,e.repo,t),o=await qd(e.owner,e.repo,String(e.path),r,t,!!e.forceRefresh),i=(o.skipped?.nonFile??0)>0,s=o.skipped?Object.fromEntries(Object.entries(o.skipped).filter(([,u])=>u>0)):void 0,a={kind:"directory",localPath:o.localPath,repoRoot:o.repoRoot,source:"treeFetch",cached:o.cached,complete:o.complete,verified:o.verified,...o.commitSha?{commitSha:o.commitSha}:{},...i?{hasSubdirectories:!0}:{},...s&&Object.keys(s).length>0?{skippedSummary:s}:{},owner:e.owner,repo:e.repo},c={localSearch:{tool:"localSearchCode",query:{path:o.localPath,mode:"discovery"}},viewStructure:{tool:"localViewStructure",query:{path:o.localPath}},...i?{escalateToClone:{tool:"ghCloneRepo",why:"nonFile skips indicate subdirectories were not fetched; clone for full coverage",query:{owner:e.owner,repo:e.repo,...e.branch?{branch:e.branch}:{},...e.path?{sparsePath:String(e.path)}:{}}}}:{}},l={localPath:o.localPath,repoRoot:o.repoRoot,fileCount:o.fileCount,totalSize:o.totalSize,complete:o.complete,verified:o.verified,...o.commitSha?{commitSha:o.commitSha}:{},directoryEntryCount:o.directoryEntryCount,eligibleFileCount:o.eligibleFileCount,savedFileCount:o.savedFileCount,...s&&Object.keys(s).length>0?{skipped:o.skipped}:{},limits:o.limits,...o.warnings?{warnings:o.warnings}:{},files:o.files,...o.cached?{cached:!0}:{},...e.branch!==o.branch?{resolvedBranch:o.branch}:{},location:a,next:c};return xe(e,l,!0,v.GITHUB_FETCH_CONTENT,{rawResponse:o.totalSize??j(o)})}async function gF(e,t,n){let r=await Wt(e,()=>n.provider.getFileContent(TR(e)));if(r.ok===!1)return r.result;let o=e.fullContent===!0&&e.minify==="none"?await yF(e,t):void 0,i={...ER(r.response.data,e),...o?{localPath:o.localPath,repoRoot:o.repoRoot,cached:o.cached,...o.branch?{resolvedBranch:o.branch}:{}}:{}},s=!!(r.response.data.matchNotFound===!0||r.response.data.content&&r.response.data.content.length>0);return xe(e,i,s,v.GITHUB_FETCH_CONTENT,{rawResponse:r.response.rawResponseChars})}async function yF(e,t){if(!e.owner||!e.repo||typeof e.path!="string")return;let n=e.branch??await We(e.owner,e.repo,t);return Wd(e.owner,e.repo,e.path,n,t,!!e.forceRefresh)}var NR=f(()=>{"use strict";pe();Ke();De();Ol();hR();Ae();ue();Qr();Pn();MR()});function Ei(e){let t=new Map;for(let n of e)typeof n.id=="string"&&t.set(n.id,n);return t}function GR(e,t){let n=Ei(t);return e.some(r=>{let o=n.get(r.id);return typeof o?.owner=="string"&&typeof o?.repo=="string"})}function HR(e){let t=e.data;return{results:Array.isArray(t?.results)?t.results:[],pagination:t?.pagination,...t?.nonExistentScope?{nonExistentScope:!0}:{},...t?.incompleteResults?{incompleteResults:!0}:{},...t?.repoState?{repoState:t.repoState}:{}}}function bF(e){return[...e].sort((t,n)=>{let r=n.matches.length-t.matches.length;return r!==0?r:t.id.localeCompare(n.id)})}function RF(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function SF(e,t){let n=(e.path.split("/").pop()??"").toLowerCase(),r=n.replace(/\.[^.]+$/,""),o=e.value??"",i=0;for(let s of t){let a=s.trim();if(!a)continue;let c=a.toLowerCase();if(n===c||r===c)return 2;(/^[A-Za-z0-9_]+$/.test(a)?new RegExp(`\\b${RF(a)}\\b`,"i").test(o):o.toLowerCase().includes(c))&&(i=Math.max(i,1))}return i}function PF(e,t){return{...e,matches:t}}function Xd(e,t){let n=t.filter(o=>typeof o=="string"&&o.trim());return n.length===0?bF(e):e.map(o=>{let i=o.matches.map((s,a)=>({match:s,index:a,score:SF(s,n)}));return i.sort((s,a)=>s.score!==a.score?a.score-s.score:s.index-a.index),{group:PF(o,i.map(s=>s.match)),hasExact:i.some(s=>s.score>0)}}).sort((o,i)=>{if(o.hasExact!==i.hasExact)return o.hasExact?-1:1;let s=i.group.matches.length-o.group.matches.length;return s!==0?s:o.group.id.localeCompare(i.group.id)}).map(o=>o.group)}var Ya=f(()=>{"use strict"});function jR(e){let t=new Map;for(let{id:n,groups:r}of e)for(let o of r){let i=`${n}\0${o.id}`,s=t.get(i);if(!s){t.set(i,{id:o.id,queryId:n,owner:o.owner,repo:o.repo,matches:[...o.matches]});continue}s.matches.push(...o.matches)}return Array.from(t.values())}function QR(e){let t=new Map;for(let n of e)for(let r of n.matches){let o=`${n.queryId??""}\0${n.owner}\0${n.repo}\0${r.path}`,i=t.get(o),{path:s,...a}=r;if(i){i.matches.push(a);continue}t.set(o,{owner:n.owner,repo:n.repo,path:r.path,matches:[a]})}return Array.from(t.values())}function BR(e,t,n){if(t.length===0)return[];if(e.length===1){let i=typeof e[0]?.id=="string"?e[0].id:"ghSearchCode",s=typeof e[0]?.id=="string"?e[0].id:void 0,a=s?n.get(s):void 0;return[{id:i,data:{files:QR(t),...a?{pagination:a}:{}}}]}let r=new Map,o=[];for(let i of t){let s=i.queryId??"ghSearchCode",a=r.get(s);a||(a=[],r.set(s,a),o.push(s)),a.push(i)}return o.map(i=>{let s=n.get(i);return{id:i,data:{files:QR(r.get(i)),...s?{pagination:s}:{}}}})}function zR(e,t,n){let r=Ei(t),o={};for(let i of e){let s=i.data.files[0];if(!s)continue;let a=r.get(i.id),l=(Array.isArray(a?.keywords)?a.keywords.filter(d=>typeof d=="string"):[])[0]??n[0];if(!l)continue;let u=e.length===1?"getLines":`getLines:${i.id}`;o[u]={tool:"ghGetFileContent",query:{owner:s.owner,repo:s.repo,path:s.path,matchString:l},why:"GitHub code search returns no line numbers; fetch the top hit with matchString to get exact file:line anchors",confidence:"heuristic"}}return Object.keys(o).length>0?o:void 0}var UR=f(()=>{"use strict";Ya()});function Jd(){return({queries:e,results:t})=>{let n=[],r=new Map,o=[],i=!1,s=[],a=Ei(e);t.forEach((x,k)=>{if(x.status==="error")return;let E=HR(x);E.repoState&&s.push({id:x.id,state:E.repoState,query:a.get(x.id)}),E.incompleteResults&&(i=!0),E.results.reduce((G,M)=>G+M.matches.length,0)===0&&o.push({id:x.id,...E.nonExistentScope?{nonExistentScope:!0}:{},...E.incompleteResults?{incompleteResults:!0}:{}});let w=E.results;n.push({id:x.id,groups:w}),E.pagination&&r.set(x.id,E.pagination)});let c=Array.from(new Set(e.flatMap(x=>{let k=x.keywords;return Array.isArray(k)?k.filter(E=>typeof E=="string"):[]}))),l=Xd(jR(n),c),u=Wa(t),d=e.some(x=>x.concise===!0),m=BR(e,l,r),p=zR(m,e,c);if(d)for(let x of m)x.data.files=x.data.files.map(k=>`${k.owner}/${k.repo}:${k.path}`);let h={results:m,...p?{next:p}:{}};o.length>0&&(h.emptyQueries=o.map(({id:x,nonExistentScope:k,incompleteResults:E})=>({id:x,...k?{nonExistentScope:k}:{},...E?{incompleteResults:E}:{}}))),u.length>0&&(h.errors=u);let g=[],y=(x,k,E="warning")=>{h.warnings=[...h.warnings??[],k],g.push({level:E,code:x,message:k})};i&&y("ghIncompleteResults","GitHub code search returned incomplete_results: the search index did not fully complete. Empty or partial results may be a false negative \u2014 retry, narrow scope (owner/repo/path), or materialize the repo and search locally before concluding absence."),o.length>0&&GR(o,e)&&y("ghScopedZeroUnproven","GitHub code search returned no results for a scoped repository query. Treat this as unproven absence: verify the repo/path with ghViewRepoStructure, then materialize or clone a bounded path and search locally before concluding.");let b=8,S=o.filter(({id:x,nonExistentScope:k,incompleteResults:E})=>{if(k||E)return!1;let _=a.get(x)?.keywords;return Array.isArray(_)&&_.length>b});S.length>0&&y("ghQueryPossiblyTooComplex",`Quer${S.length>1?"ies":"y"} ${S.map(x=>x.id).join(", ")} used more than ${b} keywords and returned zero results. GitHub code search can silently under-match an overly long/complex query instead of erroring \u2014 narrow to fewer, more specific keywords before concluding absence.`);for(let{id:x,state:k,query:E}of s)if(k.kind==="renamed"){let[_,w]=k.fullName.split("/");y("ghRepoRenamed",`Query ${x}: the repository was RENAMED to ${k.fullName} \u2014 searches against the old name silently miss. Retry with the new name (see next.retryRenamed).`);let G=E?.keywords;h.next={...h.next??{},[`retryRenamed:${x}`]:{tool:"ghSearchCode",query:{owner:_,repo:w,...Array.isArray(G)?{keywords:G}:{}},why:"Re-run the same search against the renamed repository",confidence:"exact"}}}else k.kind==="archived"?y("ghRepoArchived",`Query ${x}: the repository is ARCHIVED \u2014 the code-search index may lag or exclude it; zero matches is not proof of absence. Materialize the repo and search locally to verify.`):y("ghRepoNotFound",`Query ${x}: the repository was NOT FOUND \u2014 it does not exist (or is private to this token). Check the owner/repo spelling.`,"error");return g.length>0&&(h.diagnostics=g),Va(h,["results","id","data","files","path","owner","repo","queryId","matches","value","pathOnly","matchIndices","pagination","next","tool","query","why","confidence","emptyQueries","nonExistentScope","incompleteResults","warnings","errors"],l.length===0&&u.length>0)}}var $R=f(()=>{"use strict";Yd();Ya();UR()});var qR=f(()=>{"use strict";Ya();$R()});function CF(e){return!!((e.keywords??[]).some(n=>n.trim().length>0)||e.owner||e.path||e.extension||e.filename||e.language)}function xF(e){if(e.repo&&!e.owner)return{error:"Repository scope requires owner. Provide both owner and repo, or omit repo for a broader search."}}async function wF(e,t,n){try{let r=await ie(n),{data:o}=await r.rest.repos.get({owner:e,repo:t}),i=`${e}/${t}`.toLowerCase();return o.full_name&&o.full_name.toLowerCase()!==i?{kind:"renamed",fullName:o.full_name}:o.archived?{kind:"archived"}:void 0}catch(r){return r.status===404?{kind:"notFound"}:void 0}}async function WR(e){let{queries:t}=e,n=dt(e.authInfo);return me(t,async(r,o)=>{try{let i=xF(r);if(i)return N(i.error,r);if(!CF(r))return N("At least one search term or scope filter is required.",r);let s=n(),a=await Wt(r,()=>s.provider.searchCode(gR(r)));if(a.ok===!1)return a.result;let c=yR(a.response.data,r);if(c.results.length===0&&r.owner&&r.repo){let l=await wF(String(r.owner),String(r.repo),e.authInfo);l&&(c.repoState=l)}return xe(r,c,c.results.length>0,v.GITHUB_SEARCH_CODE,{rawResponse:a.response.rawResponseChars})}catch(i){return ze(i,r,void 0,v.GITHUB_SEARCH_CODE)}},{toolName:v.GITHUB_SEARCH_CODE,finalize:Jd()},e)}var VR=f(()=>{"use strict";pe();Ke();Ae();De();Qr();Pn();qR()});function jr(e){return e?e.includes('rel="next"'):!1}async function EF(e,t,n){if(e.length===0)return[];let r=new Array(e.length),o=0,i=Array.from({length:Math.min(t,e.length)},async()=>{for(;;){let s=o++;if(s>=e.length)return;r[s]=await n(e[s],s)}});return await Promise.all(i),r}function KR(e,t,n){if(!e)return;if(!n&&!t)return{patch:e};let r=e.length,o=Math.min(Math.max(0,t??0),r),i=Math.max(1,n??r),s=Math.min(o+i,r),a=s<r;return{patch:e.slice(o,s),patchPagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}async function YR(e,t,n){let r=await He(t),o=ke("gh-api-history",{type:e.type,owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,since:e.since,until:e.until,author:e.author,page:e.page,perPage:e.perPage,filePage:e.filePage,itemsPerPage:e.itemsPerPage,includeDiff:e.includeDiff,charOffset:e.charOffset,charLength:e.charLength,auth:r},n);return Qe(o,()=>kF(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function kF(e,t){try{let n=await ie(t),r={owner:e.owner,repo:e.repo,per_page:e.perPage,page:e.page,...e.path?{path:e.path}:{},...e.branch?{sha:e.branch}:{},...e.since?{since:e.since}:{},...e.until?{until:e.until}:{},...e.author?{author:e.author}:{}},o=await n.rest.repos.listCommits(r),i=o.headers.link,s=jr(i),a=o.data.map(u=>{let d=u.commit.author,m=u.commit.committer,p=m?.date??d?.date??"",h=u.commit.message,g=h.split(`
27
- `)[0]??h,y=h.slice(g.length).trim(),b=y.length>500,S=y.length===0?g:`${g}
28
- ${b?`${y.slice(0,500)}\u2026`:y}`,x=m?.name===d?.name&&m?.email===d?.email||u.committer?.login==="web-flow";return{sha:u.sha,date:p,...S===g?{}:{message:S},...b?{messageTruncated:!0}:{},messageHeadline:g,url:u.html_url,author:{name:d?.name??"unknown",email:d?.email??"",...u.author?.login?{login:u.author.login}:{}},...m&&!x?{committer:{name:m.name??"unknown",email:m.email??"",...u.committer?.login?{login:u.committer.login}:{}}}:{}}}),c={currentPage:e.page,perPage:e.perPage,hasMore:s,...s?{nextPage:e.page+1}:{}};if(!e.includeDiff)return{data:{type:e.type,owner:e.owner,repo:e.repo,...e.path?{path:e.path}:{},commits:a,pagination:c},status:200};let l=await EF(a,TF,async(u,d)=>{try{let m=o.data[d]?.sha??u.sha,p=await n.rest.repos.getCommit({owner:e.owner,repo:e.repo,ref:m});if(e.type==="file"&&e.path){let h=e.path,g=p.data.files?.find(y=>y.filename===h||y.previous_filename===h);if(g){let y=g.patch!==void 0?KR(g.patch,e.charOffset,e.charLength):void 0;return{...u,additions:g.additions,deletions:g.deletions,status:g.status,...y!==void 0?{patch:y.patch,...y.patchPagination?{patchPagination:y.patchPagination}:{},diff:ui(y.patch)}:{},...g.previous_filename?{previousFilename:g.previous_filename}:{}}}}else{let h=e.path,g=(p.data.files??[]).filter(w=>!h||w.filename.startsWith(h)).map(w=>{let G=w.patch!==void 0?KR(w.patch,e.charOffset,e.charLength):void 0;return{filename:w.filename,status:w.status,additions:w.additions,deletions:w.deletions,...G!==void 0?{patch:G.patch,...G.patchPagination?{patchPagination:G.patchPagination}:{},diff:ui(G.patch)}:{},...w.previous_filename?{previousFilename:w.previous_filename}:{}}}),y=Math.max(1,e.filePage??1),b=Math.max(1,e.itemsPerPage??20),S=g.length,x=Math.max(1,Math.ceil(S/b)),k=Math.min(y,x),E=(k-1)*b,_=g.slice(E,E+b);return{...u,files:_,filesPagination:{currentPage:k,totalPages:x,itemsPerPage:b,totalFiles:S,hasMore:k<x,...k<x?{nextFilePage:k+1}:{}}}}}catch{}return u});return{data:{type:e.type,owner:e.owner,repo:e.repo,...e.path?{path:e.path}:{},commits:l,pagination:c},status:200}}catch(n){return ne(n)}}var TF,Xa=f(()=>{"use strict";Ae();rt();pa();lt();TF=5});async function XR(e,t,n){let r=await He(t),o=ke("gh-api-releases",{owner:e.owner,repo:e.repo,page:e.page,perPage:e.perPage,auth:r},n);return Qe(o,()=>OF(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function OF(e,t){try{let n=await ie(t),[r,o]=await Promise.all([n.rest.repos.listReleases({owner:e.owner,repo:e.repo,per_page:e.perPage,page:e.page}),n.rest.repos.getLatestRelease({owner:e.owner,repo:e.repo}).catch(()=>{})]),i=o?.data,s=r.data.map(c=>({tagName:c.tag_name,...c.name&&c.name!==c.tag_name?{name:c.name}:{},...c.published_at?{publishedAt:c.published_at}:{},...c.prerelease?{prerelease:!0}:{},...c.draft?{draft:!0}:{},...i!==void 0&&c.id===i.id?{latest:!0}:{},url:c.html_url})),a=jr(r.headers.link);return{data:{type:"releases",owner:e.owner,repo:e.repo,releases:s,...i?{latest:{tagName:i.tag_name,...i.published_at?{publishedAt:i.published_at}:{}}}:{},pagination:{currentPage:e.page,perPage:e.perPage,hasMore:a,...a?{nextPage:e.page+1}:{}}},status:200}}catch(n){return ne(n)}}var JR=f(()=>{"use strict";Ae();rt();Xa();lt()});async function ZR(e,t,n){let r=t;if(!r.owner||!r.repo)return N("owner and repo are required for releases mode.",e);let o=r.perPage!==void 0&&r.perPage!==Zd?r.perPage:r.limit!==void 0&&r.limit!==30?r.limit:r.perPage??Zd,i=await XR({owner:r.owner,repo:r.repo,page:Number(r.page)||1,perPage:Number(o)||Zd},n);if(At(i))return N(i,e,{toolName:v.GITHUB_SEARCH_PULL_REQUESTS});let s=i.data.releases.length>0||i.data.latest!==void 0,a=i.data.pagination?.nextPage,c={...i.data,...a!==void 0?{next:{nextPage:{tool:"ghHistoryResearch",query:{type:"releases",owner:r.owner,repo:r.repo,page:a,perPage:o},why:"Fetch the next page of releases",confidence:"exact"}}}:{}};return xe(e,c,s,v.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:i.rawResponseChars})}var Zd,eS=f(()=>{"use strict";pe();De();JR();Lr();ae();Zd=30});function It(e){if(typeof e=="string")return e;if(Array.isArray(e)&&typeof e[0]=="string")return e[0]}function ep(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map($a),n=e.query?.trim()??"";return[...t,...n?[n]:[]].join(" ")||void 0}function tS(e,t,n){if(!n&&!t)return{text:e};let r=e.length,o=Math.min(Math.max(0,t??0),r),i=Math.max(1,n??r),s=Math.min(o+i,r),a=s<r;return{text:e.slice(o,s),pagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}function Ja(e){return e.pull_request!=null}function vF(e){return e?e.map(t=>typeof t=="string"?t:t.name??"").filter(Boolean):[]}function Za(e){return{number:e.number,title:e.title??"",state:e.state??"open",author:e.user?.login??"unknown",labels:vF(e.labels),created_at:e.created_at??"",updated_at:e.updated_at??"",...e.closed_at?{closed_at:e.closed_at}:{},url:e.html_url??""}}function Br(e,t=[]){return{error:e,type:"http",...t.length>0?{hints:t}:{}}}function tp(e,t,n="anon"){return ke("gh-api-issues",{owner:e.owner,repo:e.repo,issueNumber:e.issueNumber,query:ep(e),state:e.state,author:e.author,assignee:e.assignee,mentions:e.mentions,commenter:e.commenter,involves:e.involves,label:e.label,milestone:e.milestone,created:e.created,updated:e.updated,closed:e.closed,comments:e.comments,reactions:e.reactions,interactions:e.interactions,locked:e.locked,visibility:e.visibility,archived:e.archived,"no-assignee":e["no-assignee"],"no-label":e["no-label"],"no-milestone":e["no-milestone"],"no-project":e["no-project"],match:e.match,sort:e.sort,order:e.order,limit:e.limit,page:e.page,content:e.content,charOffset:e.charOffset,charLength:e.charLength,commentPage:e.commentPage,itemsPerPage:e.itemsPerPage,concise:e.concise,auth:n},t)}var ec=f(()=>{"use strict";Vd();lt()});import{ContentSanitizer as nS}from"@octocodeai/octocode-engine/contentSanitizer";async function rS(e,t){let n=It(e.owner),r=It(e.repo),o=e.issueNumber;if(!n||!r||o==null)return Br("owner, repo, and issueNumber are required for issue detail mode.");let i=await ie(t),s=await i.rest.issues.get({owner:n,repo:r,issue_number:o});if(Ja(s.data))return Br(`Issue #${o} is a pull request; use type:"prs" with prNumber:${o}.`,[`Retry with { type: "prs", owner: "${n}", repo: "${r}", prNumber: ${o} }.`]);let a=e.content?.body!==!1,c=e.content?.comments?.discussion===!0,l=e.content?.comments?.includeBots===!0,u=Za(s.data),d={};if(a){let m=nS.sanitizeContent(s.data.body??"").content,p=tS(m,e.charOffset,e.charLength);u.body=p.text,p.pagination&&(d.body=p.pagination)}if(c){let m=Math.max(1,e.commentPage??1),p=Math.max(1,e.itemsPerPage??30),h=await i.rest.issues.listComments({owner:n,repo:r,issue_number:o,per_page:p,page:m}),g=l?h.data:h.data.filter(b=>!Un(b.user?.login??""));u.comments=g.map(b=>({id:String(b.id),user:b.user?.login??"unknown",body:nS.sanitizeContent(b.body??"").content,created_at:b.created_at??"",updated_at:b.updated_at??"",commentType:"discussion"}));let y=jr(h.headers.link);d.comments={currentPage:m,itemsPerPage:p,totalComments:u.comments.length,hasMore:y,...y?{nextCommentPage:m+1}:{}}}return Object.keys(d).length>0&&(u.contentPagination=d),{data:{type:"issues",owner:n,repo:r,issues:[u],total_count:1},status:200}}async function oS(e,t,n){let r=It(t.owner)??"",o=It(t.repo)??"",i=await ie(n),s=_u(e),a=Math.min(t.limit??30,100),c=t.page??1,l=t.sort&&t.sort!=="best-match"?t.sort:void 0,u=await i.rest.search.issuesAndPullRequests({q:s,sort:l,order:t.order||"desc",per_page:a,page:c}),d=(u.data.items??[]).filter(h=>!Ja(h)).map(h=>Za(h)),m=u.data.total_count??d.length,p=c*a<m&&d.length===a;return{data:{type:"issues",owner:r,repo:o,issues:t.concise?d.map(h=>`#${h.number} ${h.title}`):d,total_count:m,effectiveQuery:s,...u.data.incomplete_results?{incomplete_results:!0}:{},pagination:{currentPage:c,perPage:a,hasMore:p,...p?{nextPage:c+1}:{},totalMatches:m,reportedTotalMatches:m,totalMatchesKind:"reported"}},status:200}}async function iS(e,t){let n=It(e.owner),r=It(e.repo);if(!n||!r)return Br("owner and repo are required for issues mode.");let o=await ie(t),i=Math.min(e.limit??30,100),s=e.page??1,a=e.state==="open"||e.state==="closed"?e.state:"all",c=await o.rest.issues.listForRepo({owner:n,repo:r,state:a,per_page:i,page:s,...e.assignee?{assignee:e.assignee}:{},...e.author?{creator:e.author}:{},...e.mentions?{mentioned:e.mentions}:{},...e.milestone?{milestone:e.milestone}:{},...e.sort==="created"||e.sort==="updated"||e.sort==="comments"?{sort:e.sort}:{},...e.order?{direction:e.order}:{},...typeof e.label=="string"?{labels:e.label}:Array.isArray(e.label)?{labels:e.label.join(",")}:{}}),l=c.data.filter(d=>!Ja(d)).map(d=>Za(d)),u=jr(c.headers.link);return{data:{type:"issues",owner:n,repo:r,issues:e.concise?l.map(d=>`#${d.number} ${d.title}`):l,total_count:l.length,pagination:{currentPage:s,perPage:i,hasMore:u,...u?{nextPage:s+1}:{}}},status:200}}var sS=f(()=>{"use strict";Ae();Ra();Xa();kr();ae();ec()});async function np(e,t,n){let r=await He(t),o=tp(e,n,r);return Qe(o,()=>AF(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function AF(e,t){try{if(e.state==="merged")return Br('state:"merged" is not valid for type:"issues" \u2014 use "open" or "closed".',['For merged PRs use type:"prs" with state:"merged".']);if(e.issueNumber!=null)return await rS(e,t);let n={...e,query:ep(e)};return Fu(n)?await oS(n,e,t):await iS(e,t)}catch(n){return vt(n)?{data:{type:"issues",owner:It(e.owner)??"",repo:It(e.repo)??"",issues:[],total_count:0,pagination:{currentPage:e.page??1,perPage:Math.min(e.limit??30,100),hasMore:!1}},status:200}:ne(n)}}var aS=f(()=>{"use strict";Ae();rt();kr();lt();ae();ec();sS()});var cS=f(()=>{"use strict";ec();aS()});async function lS(e,t,n){let r=t;if(!r.owner||!r.repo)return N("owner and repo are required for issues mode.",e);let o=r.issueNumber??r.prNumber,i=await np({owner:r.owner,repo:r.repo,...o!=null?{issueNumber:o}:{},keywordsToSearch:r.keywordsToSearch,query:r.query,state:r.state,author:r.author,assignee:r.assignee,mentions:r.mentions,commenter:r.commenter,involves:r.involves,label:r.label,milestone:r.milestone,created:r.created,updated:r.updated,closed:r.closed,comments:r.comments,reactions:r.reactions,interactions:r.interactions,locked:r.locked,visibility:r.visibility,"no-assignee":r["no-assignee"],"no-label":r["no-label"],"no-milestone":r["no-milestone"],"no-project":r["no-project"],match:r.match,archived:r.archived,sort:r.sort,order:r.order,limit:r.limit,page:Number(r.page)||1,concise:r.concise,content:r.content,charOffset:r.charOffset,charLength:r.charLength,commentPage:r.commentPage,itemsPerPage:r.itemsPerPage},n);if(At(i))return N(i,e,{toolName:v.GITHUB_SEARCH_PULL_REQUESTS});let s=Array.isArray(i.data.issues)?i.data.issues.length>0:!1,a=i.data.issues,c=(()=>{if(!Array.isArray(a)||a.length===0)return;let u=a[0];if(typeof u=="number")return u;if(typeof u=="string"){let d=u.match(/^#(\d+)\b/);return d?Number(d[1]):void 0}if(u&&typeof u=="object"&&typeof u.number=="number")return u.number})(),l={};return o==null&&c!=null&&(l.readIssue={tool:"ghHistoryResearch",query:{type:"issues",owner:r.owner,repo:r.repo,issueNumber:c,content:{body:!0}},why:`Read issue #${c} body/discussion from this list`,confidence:"heuristic"}),l.searchCode={tool:"ghSearchCode",query:{owner:r.owner,repo:r.repo},why:"Search code in this repository for symbols mentioned in the issue(s)",confidence:"heuristic"},xe(e,{...i.data,next:l},s,v.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:i.rawResponseChars})}var uS=f(()=>{"use strict";pe();De();cS();Lr()});async function dS(e,t,n){let r=t;if(!r.owner||!r.repo)return N("owner and repo are required for commits mode.",e);let o=r.path,i=o&&!o.endsWith("/")?"file":"repo";if(i==="file"&&!o)return N("path is required when querying a specific file in commits mode.",e);let s=await YR({type:i,owner:r.owner,repo:r.repo,path:o,branch:r.branch,since:r.since,until:r.until,author:r.author,page:Number(r.page)||1,perPage:Number(r.perPage)||30,filePage:typeof r.filePage=="number"?r.filePage:void 0,itemsPerPage:typeof r.itemsPerPage=="number"?r.itemsPerPage:void 0,includeDiff:!!r.includeDiff,charOffset:typeof r.charOffset=="number"?r.charOffset:void 0,charLength:typeof r.charLength=="number"?r.charLength:void 0},n);if(At(s))return N(s,e,{toolName:v.GITHUB_SEARCH_PULL_REQUESTS});let{commits:a}=s.data,c=a.length>0,l=a.map(d=>d.messageHeadline?.match(/\(#(\d+)\)/)?.[1]).find(Boolean),u={...s.data,...l?{next:{prDetail:{tool:"ghHistoryResearch",query:{type:"prs",owner:r.owner,repo:r.repo,prNumber:Number(l)},why:`Open PR #${l} referenced by the first commit for review context`,confidence:"heuristic"}}}:{}};return xe(e,u,c,v.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:s.rawResponseChars})}var pS=f(()=>{"use strict";pe();De();Xa();Lr()});function LF(e,t){let n=e?.patches;return n?.mode?{mode:n.mode,...n.files?{files:n.files}:{},...n.ranges?{ranges:n.ranges}:{}}:t==="full"?{mode:"all"}:{mode:"none"}}function _F(e,t){let n=e?.comments;return n?{discussion:n.discussion??!0,reviewInline:n.reviewInline??!0,includeBots:n.includeBots??!1,...n.file?{file:n.file}:{}}:t==="full"?{discussion:!0,reviewInline:!0,includeBots:!1}:!1}function FF(e,t){let n=e?.commits;return n?{list:n.list??!0,includeFiles:n.includeFiles??!1}:t==="full"?{list:!0,includeFiles:!1}:!1}function mS(e){let{content:t,reviewMode:n}=e,r=LF(t,n),o=_F(t,n),i=FF(t,n),s=n==="full";return{body:t?.body??s,changedFiles:(t?.changedFiles??s)||r.mode!=="none",patches:r,comments:o,reviews:t?.reviews??s,commits:i,...n?{reviewMode:n}:{}}}var fS=f(()=>{"use strict"});function ki(e){let t=e.matchString;if(typeof t!="string")return;let n=t.trim().toLowerCase();return n.length>0?n:void 0}function zr(e,t){return typeof e=="string"&&e.toLowerCase().includes(t)}function Oi(e,t=1,n=20){let r=Math.min(Math.max(1,n),100),o=e.length,i=Math.max(1,Math.ceil(o/r)),s=Math.min(Math.max(1,t),i),a=(s-1)*r,c=Math.min(a+r,o);return{items:e.slice(a,c),pagination:{currentPage:s,totalPages:i,itemsPerPage:r,totalItems:o,hasMore:s<i,...s<i?{nextPage:s+1}:{}}}}function Xn(e,t=0,n=12e3){if(typeof e!="string")return;let r=e.length,o=Math.min(Math.max(0,t),r),i=Math.min(Math.max(1,n),5e4),s=Math.min(o+i,r),a=s<r;return{content:e.slice(o,s),pagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}function tc(e,t=500){if(!(typeof e!="string"||e.length===0))return e.length<=t?e:`${e.slice(0,t-3)}...`}function rp(e,t){return{owner:e.owner,repo:e.repo,prNumber:t}}function IF(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function vi(e,t,n){return IF({...rp(e,t),...n})}function op(e,t,n,r,o={}){if(!(!r.hasMore||r.nextCharOffset===void 0))return vi(e,t,{content:n,...o,charOffset:r.nextCharOffset,charLength:e.charLength})}function nc(e,t,n,r,o){if(!(!o.hasMore||o.nextPage===void 0))return vi(e,t,{content:n,[r]:o.nextPage,itemsPerPage:e.itemsPerPage})}function Ur(e){return typeof e=="object"&&e!==null}function rc(e){if(Ur(e)&&!(typeof e.currentPage!="number"||typeof e.totalPages!="number"||typeof e.itemsPerPage!="number"||typeof e.totalItems!="number"||typeof e.hasMore!="boolean"))return e}function oc(e){if(Ur(e)&&!(typeof e.charOffset!="number"||typeof e.charLength!="number"||typeof e.totalChars!="number"||typeof e.hasMore!="boolean"))return e}var Ai=f(()=>{"use strict";ae()});function MF(e,t){return e.filter(n=>{let r=n.commentType;return t.file&&n.path!==t.file?!1:r==="review_inline"?t.reviewInline:t.discussion})}function hS(e,t,n){if(!n.comments)return{};let r=Array.isArray(e.comments)?e.comments:[],o=MF(r,n.comments),i=ki(t),s=i?o.filter(l=>zr(l.body,i)):o,{items:a,pagination:c}=Oi(s,t.commentPage??t.page??1,t.itemsPerPage??20);return{comments:a.map(l=>{let u=Xn(typeof l.body=="string"?l.body:"",t.commentBodyOffset??0,t.charLength??12e3);return{id:l.id,author:l.author,commentType:l.commentType??"discussion",path:l.path,line:l.line,...l.in_reply_to_id!=null?{in_reply_to_id:l.in_reply_to_id}:{},...u?{body:u.content,bodyPagination:u.pagination}:{bodyPreview:tc(typeof l.body=="string"?l.body:"")},createdAt:l.createdAt,updatedAt:l.updatedAt}}),commentPagination:c}}function gS(e,t,n){if(!n.reviews)return{};let r=Array.isArray(e.reviews)?e.reviews:[],o=ki(t);return{reviews:(o?r.filter(s=>zr(s.body,o)):r).map(s=>{let a=typeof s.body=="string"?s.body:"",c=Xn(a||void 0,0,t.charLength??12e3);return{id:s.id,user:s.user,state:s.state,...c?{body:c.content,bodyPagination:c.pagination}:{},submittedAt:s.submittedAt??s.submitted_at,commitId:s.commitId??s.commit_id}})}}function yS(e,t,n){if(!n.commits)return{};let r=Array.isArray(e.commits)?e.commits:[],{items:o,pagination:i}=Oi(r,t.commitPage??t.page??1,t.itemsPerPage??20);return{commits:o.map(s=>({sha:s.sha,message:s.message,author:s.author,date:s.date,...n.commits&&n.commits.includeFiles&&Array.isArray(s.files)?{files:s.files}:{}})),commitPagination:i}}var bS=f(()=>{"use strict";ae();Ai()});function ic(e){return String(e.path??e.filename??"")}function DF(e,t){return{path:ic(e),status:String(e.status??""),additions:Number(e.additions??0),deletions:Number(e.deletions??0),...t&&typeof e.patch=="string"?{patch:e.patch}:{}}}function NF(e){return e.split(`
21
+ `):e.structuredContent!==void 0?JSON.stringify(e.structuredContent,null,2):JSON.stringify(e,null,2)}function Bt(e,t){let n=Ht(e)??{},r=Qe(n),o=ub(),i="results"in r?["results","id","status","data"]:["instructions","status","data"];return o==="json"?JSON.stringify(Do(r,t||i),null,2):F.jsonToYamlString(r,{keysPriority:t||i})}function Do(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(o=>Do(o,t));if(typeof e!="object")return e;let n=e,r={};for(let o of t)o in n&&(r[o]=Do(n[o],t));for(let o of Object.keys(n))o in r||(r[o]=Do(n[o],t));return r}var db=new Set(["currentPage","totalPages","perPage","itemsPerPage","entriesPerPage","filesPerPage","totalMatches","totalFiles","totalEntries","totalItems","totalResults","totalReferences","reportedTotalMatches","reachableTotalMatches","totalMatchesKind","totalMatchesCapped","hasMore","nextPage","charOffset","charLength","totalChars","totalBytes","nextCharOffset"]),pb=["totalMatches","totalItems","totalFiles","totalEntries","totalResults","totalReferences","reportedTotalMatches","reachableTotalMatches"];function mb(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;let t=e,n=Object.keys(t);return n.length===0||!n.every(r=>db.has(r))||pb.some(r=>typeof t[r]=="number"&&t[r]>0)||t.hasMore!==!1?!1:typeof t.totalPages=="number"?t.totalPages<=1:"charOffset"in t||"nextCharOffset"in t?(t.charOffset??0)===0:!0}function Ht(e,t={}){if(e==null||Number.isNaN(e))return;let{inFilesObject:n=!1,depth:r=0}=t;if(Array.isArray(e)){let o=e.map(s=>Ht(s,{inFilesObject:n,depth:r+1})).filter(s=>s!==void 0),i=n&&r>=2;return o.length>0||i?o:void 0}if(typeof e=="object"&&e!==null){let o={},i=!1;for(let[s,a]of Object.entries(e)){if(s==="results"&&r===0&&Array.isArray(a)&&a.length===0){o[s]=[],i=!0;continue}if(s==="warnings"||mb(a))continue;let c=(s==="files"||s==="repositories")&&!n,u=Ht(a,{inFilesObject:n||c,depth:c?0:r+1});u!==void 0&&(o[s]=u,i=!0)}return i?o:void 0}return e}import Ud from"node:path";import{fileURLToPath as fb}from"node:url";function hb(e){if(e.length===0)return"";let t=e[0]??"";for(let r=1;r<e.length;r++){let o=e[r]??"",i=0,s=Math.min(t.length,o.length);for(;i<s&&t[i]===o[i];)i++;if(t=t.slice(0,i),t==="")break}let n=t.lastIndexOf("/");return n>0?t.slice(0,n):""}var Qd=["path","uri","absolutePath"],$d=new Set(["next","location"]);function ta(e,t,n){if(n>8||!e||typeof e!="object")return;if(Array.isArray(e)){for(let i of e)ta(i,t,n+1);return}let r=e,o=gb(r);o&&t.push({obj:r,abs:o});for(let[i,s]of Object.entries(r))$d.has(i)||s&&typeof s=="object"&&ta(s,t,n+1)}function gb(e){let t=e.absolutePath;if(typeof t=="string"&&Ud.isAbsolute(t))return t;let n=e.uri;if(typeof n=="string"&&n.startsWith("file://"))try{return fb(n)}catch{return}let r=e.path;if(typeof r=="string"&&Ud.isAbsolute(r))return r}function mn(e){let t=[];for(let i of e)ta(i?.data,t,0);if(t.length===0)return;let n=hb(t.map(i=>i.abs));if(n.length<=1)return;let r=n+"/",o=r.length;for(let{obj:i,abs:s}of t)s.startsWith(r)&&(i.path=s.slice(o),delete i.absolutePath,delete i.uri);return yb(e,r),n}function yb(e,t){function n(r,o){if(o>8||!r||typeof r!="object")return;if(Array.isArray(r)){for(let s=0;s<r.length;s++){let a=r[s];if(typeof a=="string"){let c="file://"+t;a.includes(c)?r[s]=a.replaceAll(c,""):a.includes(t)&&(r[s]=a.replaceAll(t,""))}else n(a,o+1)}return}let i=r;for(let s of Object.keys(i)){if($d.has(s))continue;let a=i[s];typeof a=="string"?!Qd.includes(s)&&a.includes(t)&&(i[s]=a.replaceAll(t,"")):n(a,o+1)}}for(let r of e)n(r?.data,0)}function Rb(e){let t=[];for(let n of e){let r=n?.data;if(!(!r||typeof r!="object")){for(let o of Object.values(r))if(Array.isArray(o))for(let i of o)i&&typeof i=="object"&&!Array.isArray(i)&&t.push(i)}}return t}function Sb(e){return typeof e=="string"&&e!==""||typeof e=="number"||typeof e=="boolean"}var bb=new Set([...Qd,"owner","repo","name","id","type","kind","reason"]);function fn(e){let t=Rb(e);if(t.length<2)return;let n=t[0],r;for(let i of Object.keys(n)){if(bb.has(i))continue;let s=n[i];Sb(s)&&t.every(a=>a[i]===s)&&((r??={})[i]=s)}if(!r)return;let o=Object.keys(r);for(let i of t)for(let s of o)delete i[s];return r}function na(e,t,n){let r=Math.min(t+n,e.length);if(r>=e.length)return e.length;let o=Math.max(1,Math.floor(n/2)),i=[e.lastIndexOf(`
22
+ `,r-1)+1,e.lastIndexOf("\\n",r-1)+2].filter(a=>a>t&&a<=r),s=Math.max(...i,-1);return s-t>=o?s:r}function Cb(e,t,n){let r=1,o=0;for(;o<t&&o<e.length;){let i=na(e,o,n);if(i<=o)break;o=i,r+=1}return o===t?r:Math.floor(t/n)+1}function Pb(e,t){if(e.length===0)return 1;let n=0,r=0;for(;r<e.length;){let o=na(e,r,t);if(o<=r)return Math.max(1,Math.ceil(e.length/t));r=o,n+=1}return Math.max(1,n)}function ra(e,t){let n=t?.responseCharLength,r=t?.responseCharOffset??0;if(n===void 0)return{text:e};let o=e.length,i=Math.max(1,n),s=Math.min(Math.max(0,r),o),a=na(e,s,i),c=a<o,u=Cb(e,s,i),l=Pb(e,i),d=e.slice(s,a);return{text:`${c?`# Response page ${u}/${l}. Next: responseCharOffset=${a}
23
+ `:`# Response page ${u}/${l}.
24
+ `}${d}`,pagination:{currentPage:u,totalPages:l,hasMore:c,charOffset:s,charLength:a-s,totalChars:o,...c?{nextCharOffset:a}:{}}}}function oa(e,t){return t?{...e,responsePagination:t}:e}var xb=3;async function ee(e,t,n,r){let o=n.concurrency??xb,{results:i,errors:s}=await Bd(e,t,o,n.minQueryTimeoutMs);return wb(n,i,s,e,r)}function wb(e,t,n,r,o){let i=["results","base","shared"],s=["id","status","data"],a=[...new Set([...i,...s,...e.keysPriority||[]])],c=new Array(r.length),u=Lr(r);t.forEach(R=>{let h=R.result.status;c[R.queryIndex]={id:u[R.queryIndex]??Er(R.originalQuery,R.queryIndex),...h!==void 0?{status:h}:{},data:Tb(R.result)}}),n.forEach(R=>{let h=r[R.queryIndex];h&&(c[R.queryIndex]={id:u[R.queryIndex]??Er(h,R.queryIndex),status:"error",data:{error:R.error}})});let l=c.filter(R=>R!==void 0);if(e.finalize){let R=e.finalize({queries:r,results:l,config:e}),h=ra(R.text,o),y=oa(R.structuredContent,h.pagination);return jd(e.toolName,t,n,h.text.length),{content:[{type:"text",text:h.text}],structuredContent:y,isError:R.isError??(l.length>0&&l.every(C=>C.status==="error"))}}let d={results:l};if(Array.isArray(d.results)){let R=mn(d.results);R&&(d.base=R);let h=fn(d.results);h&&(d.shared=h)}let m=Bt(d,a),p=ra(m,o),f=oa(Qe(Ht(d)??{}),p.pagination);return jd(e.toolName,t,n,p.text.length),{content:[{type:"text",text:p.text}],structuredContent:f,isError:l.length>0&&l.every(R=>R.status==="error")}}function jd(e,t,n,r){let o=t.reduce((i,s)=>i+(te(s.result)??N(s.result)),0)+n.reduce((i,s)=>i+N(s),0);try{es(e,o,r)}catch{}}function Tb(e){let t=new Set(["status","mainResearchGoal","researchGoal","reasoning","researchSuggestions","query"]);e.status!=="error"&&t.add("error");let n={};for(let[r,o]of Object.entries(e))t.has(r)||(n[r]=o);return n}var G={PATH_VALIDATION_FAILED:"pathValidationFailed",FILE_ACCESS_FAILED:"fileAccessFailed",FILE_READ_FAILED:"fileReadFailed",FILE_TOO_LARGE:"fileTooLarge",BINARY_FILE_UNSUPPORTED:"binaryFileUnsupported",NO_MATCHES:"noMatches",OUTPUT_TOO_LARGE:"outputTooLarge",COMMAND_NOT_AVAILABLE:"commandNotAvailable",COMMAND_EXECUTION_FAILED:"commandExecutionFailed",COMMAND_TIMEOUT:"commandTimeout",TOOL_EXECUTION_FAILED:"toolExecutionFailed",LSP_SERVER_UNAVAILABLE:"lspServerUnavailable"};var zd={[G.PATH_VALIDATION_FAILED]:{code:G.PATH_VALIDATION_FAILED,category:"VALIDATION",description:"Path validation failed - invalid or unsafe path",recoverability:"user-action-required"},[G.FILE_ACCESS_FAILED]:{code:G.FILE_ACCESS_FAILED,category:"FILE_SYSTEM",description:"Cannot access file - may not exist or lack permissions",recoverability:"unrecoverable"},[G.FILE_READ_FAILED]:{code:G.FILE_READ_FAILED,category:"FILE_SYSTEM",description:"Failed to read file contents",recoverability:"unrecoverable"},[G.FILE_TOO_LARGE]:{code:G.FILE_TOO_LARGE,category:"FILE_SYSTEM",description:"File exceeds size limits for operation",recoverability:"user-action-required"},[G.BINARY_FILE_UNSUPPORTED]:{code:G.BINARY_FILE_UNSUPPORTED,category:"FILE_SYSTEM",description:"Binary file is not supported by text content reader",recoverability:"user-action-required"},[G.NO_MATCHES]:{code:G.NO_MATCHES,category:"SEARCH",description:"Search pattern found no matches",recoverability:"user-action-required"},[G.OUTPUT_TOO_LARGE]:{code:G.OUTPUT_TOO_LARGE,category:"PAGINATION",description:"Output exceeds size limits",recoverability:"user-action-required"},[G.COMMAND_NOT_AVAILABLE]:{code:G.COMMAND_NOT_AVAILABLE,category:"EXECUTION",description:"Required CLI command is not installed or not in PATH",recoverability:"user-action-required"},[G.COMMAND_EXECUTION_FAILED]:{code:G.COMMAND_EXECUTION_FAILED,category:"EXECUTION",description:"System command execution failed",recoverability:"unrecoverable"},[G.COMMAND_TIMEOUT]:{code:G.COMMAND_TIMEOUT,category:"EXECUTION",description:"Command execution timed out",recoverability:"user-action-required"},[G.TOOL_EXECUTION_FAILED]:{code:G.TOOL_EXECUTION_FAILED,category:"EXECUTION",description:"Generic tool execution failure",recoverability:"unrecoverable"},[G.LSP_SERVER_UNAVAILABLE]:{code:G.LSP_SERVER_UNAVAILABLE,category:"EXECUTION",description:"No language server available for semantic analysis \u2014 use text search (localSearchCode) and localGetFileContent instead",recoverability:"user-action-required"}};var Se=class e extends Error{errorCode;category;recoverability;context;constructor(t,n,r,o){let i=zd[t],s=n||i.description;super(s,o?{cause:o}:void 0),this.name="ToolError",this.errorCode=t,this.category=i.category,this.recoverability=i.recoverability,this.context=r,o&&o.stack&&(this.stack=`${this.stack}
25
+ Caused by: ${o.stack}`),Object.setPrototypeOf(this,e.prototype)}isRecoverable(){return this.recoverability==="recoverable"}requiresUserAction(){return this.recoverability==="user-action-required"}toJSON(){return{name:this.name,errorCode:this.errorCode,category:this.category,message:this.message,recoverability:this.recoverability,context:this.context,stack:this.stack}}};function ia(e){return e instanceof Se}function Wd(e,t=G.TOOL_EXECUTION_FAILED,n){if(ia(e))return e;if(e instanceof Error)return new Se(t,e.message,n,e);let r=String(e);return new Se(t,r,n)}function Eb(e){return typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&("type"in e||"status"in e||"scopesSuggestion"in e)}function O(e,t,n={}){let{extra:r}=n,o={status:"error"};if(Eb(e))o.error=e;else if(ia(e))o.error=e.message,o.errorCode=e.errorCode;else if(typeof e=="string")o.error=e;else if(e instanceof Error){let i=Wd(e);o.error=i.message,o.errorCode=i.errorCode}else o.error="Unknown error occurred";if(n.toolName&&(o.toolName=n.toolName),r){let{hints:i,...s}=r;Object.assign(o,s)}return n.rawResponse===void 0?o:Q(o,n.rawResponse)}function xe(e,t,n={}){let r=e.safeParse(t);if(r.success)return{ok:!0,data:r.data};let o=r.error.issues.map(s=>s.message).join("; "),i=n.prefix===!1?o:`Validation error: ${o}`;return{ok:!1,error:O(i,t,{toolName:n.toolName})}}function oe(e,t,n,r,o){let i=n?void 0:"empty",s={...i!==void 0?{status:i}:{},...t};return o?.rawResponse===void 0?s:Q(s,o.rawResponse)}function Mo(e,t){let n={error:e.error||"Provider error",type:"http",status:e.status,rateLimitRemaining:e.rateLimit?.remaining,rateLimitReset:e.rateLimit?.reset?e.rateLimit.reset*1e3:void 0,retryAfter:e.rateLimit?.retryAfter};return O(n,t,{rawResponse:e.rawResponseChars??e.data??(e.error?e:void 0)})}function ye(e,t,n,r){let o=e instanceof Error?e.message:"Unknown error occurred",i=n?`${n}: ${o}`:o;return O(i,t,{toolName:r})}async function Te({toolName:e,query:t,execute:n,contextMessage:r}){try{return await n()}catch(o){return ye(o,t,r,e)}}function sa(e){return e.data!==void 0&&!e.error}import{maskSensitiveData as Vd}from"@octocodeai/octocode-engine/mask";var aa=class extends Error{providerType;constructor(t,n){super(n),this.name="ProviderInitializationError",this.providerType=t}};function Lb(){return ss().provider??is()}function Ab(e){let t=ss(),n=t.provider??is(),{baseUrl:r,token:o}=t;try{let i=ea(n,{type:n,baseUrl:r,token:o,authInfo:e});return{providerType:n,provider:i,capabilities:i.capabilities,baseUrl:r,token:o,authInfo:e}}catch(i){let s=i instanceof Error?i.message:"Unknown provider error",a=Vd(s);throw new aa(n,`Failed to initialize ${n} provider: ${a}`)}}function De(e){let t;return()=>t??=Ab(e)}function No(e,t){return e.capabilities[t]}async function ct(e,t){let n=await t();return sa(n)?{ok:!0,response:n}:{ok:!1,result:Mo(n,e)}}async function Kd(e,t){let n=t??Lb(),r=await Promise.all(e.map(async s=>{try{return{meta:s.meta,response:await s.operation()}}catch(a){let c=a instanceof Error?a.message:String(a);return{meta:s.meta,response:{error:Vd(c),status:500,provider:n}}}})),o=[],i=[];for(let s of r)sa(s.response)?o.push({meta:s.meta,response:s.response}):i.push({meta:s.meta,response:s.response});return{successes:o,failures:i}}import{existsSync as Yb,mkdirSync as la,renameSync as Xb,rmSync as qb}from"fs";import{join as vr}from"path";import{createHash as Jb}from"crypto";var Go=["PATH","TMPDIR","TMP","TEMP","SYSTEMROOT","WINDIR","COMSPEC","PATHEXT"],Ar=[...Go,"HOME","USERPROFILE","APPDATA","LOCALAPPDATA"],Yd=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy"];function Xd(e={},t=Go){let n={};for(let o of t){let i=process.env[o];i!==void 0&&(n[o]=i)}let r=new Set(t);for(let[o,i]of Object.entries(e))r.has(o)&&(i===void 0?delete n[o]:n[o]=i);return n}import{spawn as _b}from"child_process";var kb=10*1024*1024,Ib=5e3;function _r(e,t,n={}){let{timeout:r=3e4,cwd:o,env:i={},allowEnvVars:s=Go,maxOutputSize:a=kb}=n;return new Promise(c=>{let u={killed:!1,stdoutChunks:[],stderrChunks:[],totalOutputSize:0},l=()=>u.stdoutChunks.join(""),d=()=>u.stderrChunks.join(""),m={cwd:o,env:Xd(i,s),stdio:["ignore","pipe","pipe"]},p;try{p=_b(e,t,m)}catch(y){c({stdout:"",stderr:"",exitCode:null,success:!1,error:y instanceof Error?y:new Error(`Failed to spawn command '${e}'`)});return}let f,g=setTimeout(()=>{if(!u.killed){u.killed=!0;try{p.kill("SIGTERM")}catch{}f=setTimeout(()=>{try{p.kill("SIGKILL")}catch{}},Ib),c({stdout:l(),stderr:d(),exitCode:null,success:!1,error:new Error(`Command timeout after ${r}ms`),timedOut:!0})}},r),R=()=>{clearTimeout(g),f!==void 0&&(clearTimeout(f),f=void 0)},h=()=>{if(u.totalOutputSize>a){if(!u.killed){u.killed=!0;try{p.kill("SIGKILL")}catch{}R(),c({stdout:l(),stderr:d(),exitCode:null,success:!1,error:new Error("Output size limit exceeded"),outputLimitExceeded:!0})}return!0}return!1};p.stdout?.on("data",y=>{if(u.killed)return;let S=y.toString();u.totalOutputSize+=Buffer.byteLength(S),!h()&&u.stdoutChunks.push(S)}),p.stderr?.on("data",y=>{if(u.killed)return;let S=y.toString();u.totalOutputSize+=Buffer.byteLength(S),!h()&&u.stderrChunks.push(S)}),p.on("close",y=>{u.killed||(R(),c({stdout:l(),stderr:d(),exitCode:y,success:y===0}))}),p.on("error",y=>{u.killed||(u.killed=!0,R(),c({stdout:l(),stderr:d(),exitCode:null,success:!1,error:y}))})})}var eM=1*1024*1024;function qd(e,t=1e3){for(let n of e){if(n.includes("\0"))return{valid:!1,error:"Null bytes not allowed in arguments"};if(n.length>t)return{valid:!1,error:"Argument too long"}}return{valid:!0}}import{existsSync as Fr,readFileSync as Fb,writeFileSync as vb,mkdirSync as Db,rmSync as Or,readdirSync as Mb,statSync as Nb}from"node:fs";import{join as Ct}from"node:path";import{join as Ho}from"node:path";import{createHash as Jd}from"node:crypto";function Bo(e){return Ho(e,"tmp","clone")}function Uo(e){return Ho(e,"tmp","tree")}function Ob(e){return e?`__sp_${Jd("sha256").update(e).digest("hex").substring(0,6)}`:""}function Zd(e){if(!/[\\/]/.test(e))return e;let t=Jd("sha256").update(e).digest("hex").substring(0,8);return`${e.replace(/[\\/]/g,"_")}__b_${t}`}function ca(e,t,n,r,o){let i=`${Zd(r)}${Ob(o)}`;return Ho(Bo(e),t,n,i)}function kr(e,t,n,r){return Ho(Uo(e),t,n,Zd(r))}var Gb=1440*60*1e3,mM=600*1e3,Hb=2*1024*1024*1024,Bb=50,tp=".octocode-clone-meta.json";function Ub(e){return typeof e=="object"&&e!==null}function Qb(e){if(!Ub(e)||typeof e.clonedAt!="string"||typeof e.expiresAt!="string"||typeof e.owner!="string"||typeof e.repo!="string"||typeof e.branch!="string"||e.source!=="clone"&&e.source!=="directoryFetch"&&e.source!=="treeFetch")return null;let t={clonedAt:e.clonedAt,expiresAt:e.expiresAt,owner:e.owner,repo:e.repo,branch:e.branch,source:e.source};return typeof e.sparsePath=="string"&&(t.sparsePath=e.sparsePath),typeof e.sizeBytes=="number"&&(t.sizeBytes=e.sizeBytes),typeof e.commitSha=="string"&&e.commitSha.length===40&&(t.commitSha=e.commitSha),t}function ua(e){let t=Ct(e,tp);if(!Fr(t))return null;try{return Qb(JSON.parse(Fb(t,"utf-8")))}catch{return null}}function hn(e,t){try{vb(Ct(e,tp),JSON.stringify(t,null,2),"utf-8")}catch{}}function np(e){return Date.now()<new Date(e.expiresAt).getTime()}function gn(e){let t=ua(e);return t?np(t)?Fr(e)?{hit:!0,meta:t}:{hit:!1}:{hit:!1}:{hit:!1}}function $b(){let e=process.env.OCTOCODE_CACHE_TTL_MS;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return Gb}function jb(){let e=process.env.OCTOCODE_MAX_CACHE_SIZE;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return Hb}function zb(){let e=process.env.OCTOCODE_MAX_CLONES;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return Math.floor(t)}return Bb}function yn(e,t,n,r,o,i,s){let a=new Date;return{clonedAt:a.toISOString(),expiresAt:new Date(a.getTime()+$b()).toISOString(),owner:e,repo:t,branch:n,source:r,...o?{sparsePath:o}:{},...i!=null?{sizeBytes:i}:{},...s?{commitSha:s}:{}}}function Pt(e){let t=Ct(e,"..");try{Fr(t)||Db(t,{recursive:!0,mode:448})}catch(n){throw new Error(`Failed to create clone parent directory '${t}': ${n instanceof Error?n.message:String(n)}`)}}function Qo(e){try{Fr(e)&&Or(e,{recursive:!0,force:!0})}catch{}}function Ir(e){try{return Nb(e).isDirectory()}catch{return!1}}function Ut(e){try{return Mb(e)}catch{return[]}}function*rp(e){for(let t of Ut(e)){let n=Ct(e,t);if(Ir(n))for(let r of Ut(n)){let o=Ct(n,r);if(Ir(o))for(let i of Ut(o)){let s=Ct(o,i);Ir(s)&&(yield s)}}}}function ep(e){for(let t of[...Ut(e)]){let n=Ct(e,t);if(Ir(n)){for(let r of[...Ut(n)]){let o=Ct(n,r);if(Ir(o)&&Ut(o).length===0)try{Or(o,{recursive:!0,force:!0})}catch{}}if(Ut(n).length===0)try{Or(n,{recursive:!0,force:!0})}catch{}}}}function Wb(e){let t=0;for(let n of rp(e))try{let r=ua(n);(!r||!np(r))&&(Or(n,{recursive:!0,force:!0}),t++)}catch{}return t}function Vb(e){let t=[];for(let n of rp(e)){let r=ua(n);if(!r)continue;let o=Number.isNaN(Date.parse(r.clonedAt))?0:Date.parse(r.clonedAt);t.push({branchDir:n,clonedAtMs:o,sizeBytes:r.sizeBytes??po(n)})}return t}function Kb(e,t,n){let r=e.reduce((s,a)=>s+a.sizeBytes,0),o=e.length;if(r<=t&&o<=n)return 0;e.sort((s,a)=>s.clonedAtMs-a.clonedAtMs);let i=0;for(let s of e){if(r<=t&&o<=n)break;try{Or(s.branchDir,{recursive:!0,force:!0}),i++,r-=s.sizeBytes,o-=1}catch{}}return i}function op(e){if(!Fr(e))return 0;let t=0;try{t+=Wb(e)}catch{return t}ep(e);let n=Kb(Vb(e),jb(),zb());return t+=n,n>0&&ep(e),t}function ip(e){return op(Bo(e))}function $o(e){return op(Uo(e))}var sp=120*1e3,Zb=30*1e3,eC=300*1e3,tC=100,ap="clone-locks",nC="clone-tmp",cp=[...Ar,"GIT_TERMINAL_PROMPT"];async function up(e,t,n){let r=e.owner,o=e.repo,{sparsePath:i,forceRefresh:s}=e;await dC();let a=e.branch??await Pe(r,o,t),c=rn(),u=ca(c,r,o,a,i);return rC(c,u,async()=>{let l=gn(u);if(!s&&l.hit&&l.meta.source==="clone")return{localPath:u,cached:!0,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}};ip(c),Pt(u);let d=lC(t,n),m=iC(c,u);Qo(m);try{if(i){if(await uC(r,o,a,m,i,d),!Yb(vr(m,i)))throw new Error(`sparsePath "${i}" does not exist in ${r}/${o}@${a} \u2014 nothing was checked out for it. Verify the path with ghViewRepoStructure, then retry with the correct sparsePath (or omit it for a full clone).`)}else await cC(r,o,a,m,d);let p=yn(r,o,a,"clone",i);return hn(m,p),sC(m,u),{localPath:u,cached:!1,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}}}catch(p){throw Qo(m),p}})}async function rC(e,t,n){Pt(t);let r=oC(e,t);la(vr(e,"tmp",ap),{recursive:!0,mode:448});let o=Date.now();for(;;)try{la(r,{mode:448});break}catch(i){if(i.code!=="EEXIST")throw i;if(Date.now()-o>eC)throw new Error(`Timed out waiting for clone cache lock '${r}'.`);await aC(tC)}try{return await n()}finally{qb(r,{recursive:!0,force:!0})}}function lp(e){return Jb("sha256").update(e).digest("hex").slice(0,16)}function oC(e,t){return vr(e,"tmp",ap,lp(t))}function iC(e,t){let n=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=vr(e,"tmp",nC);return la(r,{recursive:!0,mode:448}),vr(r,`${lp(t)}-${n}`)}function sC(e,t){Qo(t),Pt(t),Xb(e,t)}function aC(e){return new Promise(t=>setTimeout(t,e))}async function cC(e,t,n,r,o){let i=pp(o);i.push("clone","--depth","1","--single-branch","--branch",n,"--",dp(e,t),r),await da(i,sp,`full clone of ${e}/${t}`,o)}async function uC(e,t,n,r,o,i){let s=pp(i);s.push("clone","--filter","blob:none","--sparse","--depth","1","--single-branch","--branch",n,"--",dp(e,t),r),await da(s,sp,`sparse clone of ${e}/${t}`,i),await da(["-C",r,"sparse-checkout","set","--skip-checks","--",o],Zb,`sparse-checkout set ${o}`,void 0)}function dp(e,t){return`https://github.com/${e}/${t}.git`}function pp(e){return e?["-c",`http.extraHeader=Authorization: Bearer ${e}`]:[]}function lC(e,t){return e?.token&&typeof e.token=="string"?e.token:t}async function dC(){try{if(!(await _r("git",["--version"],{timeout:5e3,maxOutputSize:1024,allowEnvVars:cp,env:{GIT_TERMINAL_PROMPT:"0"}})).success)throw new Error("git --version returned non-zero")}catch{throw new Error("git is not installed or not on PATH. The ghCloneRepo tool requires git to be available.")}}function pC(e,t){let n=e;return t&&(n=n.replaceAll(t,"[REDACTED]")),n=n.replace(/Authorization:\s*Bearer\s+\S+/gi,"Authorization: Bearer [REDACTED]"),n=n.replace(/Authorization:\s*token\s+\S+/gi,"Authorization: token [REDACTED]"),n}async function da(e,t,n,r){let o=await _r("git",e,{timeout:t,maxOutputSize:5242880,allowEnvVars:cp,env:{GIT_TERMINAL_PROMPT:"0"}});if(!o.success){let i=pC(o.stderr?.trim()||"",r),s=i?`: ${i}`:"";throw new Error(`git ${n} failed${s}`)}}async function mp(e){let{queries:t,authInfo:n}=e,r=De(n);return ee(t,async(o,i)=>Te({toolName:P.GITHUB_CLONE_REPO,query:o,contextMessage:`Clone failed for ${o.owner}/${o.repo}`,execute:async()=>{let s=r();if(!No(s,"cloneRepo"))return ye(new Error("ghCloneRepo is only available with the GitHub provider."),o,"Provider not supported",P.GITHUB_CLONE_REPO);let a;try{a=await up(o,n,s.token)}catch(m){let p=m instanceof Error?m.message:String(m);return O(`Clone failed for ${o.owner}/${o.repo}: ${p}`,o)}let c=Dd(a.localPath),u={kind:o.sparsePath?"tree":"repo",localPath:a.localPath,source:"clone",cached:a.cached,complete:!o.sparsePath,resolvedBranch:a.branch,...o.sparsePath?{requestedPath:o.sparsePath}:{}},l={viewStructure:{tool:"localViewStructure",query:{path:a.localPath},why:"Browse the cloned directory; once you know what to search for, call localSearchCode with real keywords against this localPath",confidence:"exact"}},d={owner:o.owner,repo:o.repo,totalSize:c,location:u,next:l};return oe(o,d,!0,P.GITHUB_CLONE_REPO,{rawResponse:c})}}),{toolName:P.GITHUB_CLONE_REPO,keysPriority:["totalSize","location","error"]},e)}import{readdirSync as mC,statSync as fp}from"node:fs";import{join as fC}from"node:path";var Dr=50,jo=5*1024*1024,pa=300*1024,hp=5,hC=1e4,gp=new Set([".png",".jpg",".jpeg",".gif",".bmp",".ico",".svg",".webp",".mp3",".mp4",".wav",".avi",".mov",".mkv",".webm",".zip",".tar",".gz",".bz2",".7z",".rar",".xz",".exe",".dll",".so",".dylib",".bin",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".woff",".woff2",".ttf",".eot",".otf",".pyc",".class",".o",".obj",".lock",".min.js",".min.css"]),ma={maxDirectoryFiles:Dr,maxTotalSize:jo,maxFileSize:pa};function fa(){return{nonFile:0,missingDownloadUrl:0,oversized:0,binary:0,fileLimit:0,fetchFailed:0,totalSizeLimit:0,pathTraversal:0}}function yp(e){return Object.values(e).every(t=>t===0)}function ha(e,t){if(!t&&e)return["Cannot verify completeness against remote tree; use forceRefresh or ghCloneRepo if completeness matters."];if(!e)return["Directory materialization is partial; inspect skipped counts or use ghCloneRepo before repo-wide reachability/dead-code conclusions."]}async function Rp(e,t,n){let r=[];for(let o=0;o<e.length;o+=t){let i=e.slice(o,o+t),s=await Promise.allSettled(i.map(async a=>{let c=await yC(a.download_url,n);return{entry:a,content:c}}));for(let a of s)a.status==="fulfilled"&&r.push(a.value)}return r}var gC=new Set(["raw.githubusercontent.com","objects.githubusercontent.com","github.com"]);async function yC(e,t){try{let o=new URL(e);if(!gC.has(o.hostname))throw new Error(`Blocked fetch to unexpected host: ${o.hostname}. Only GitHub download URLs are allowed.`)}catch(o){throw o instanceof TypeError?new Error(`Invalid download URL: ${e}`):o}let n=new AbortController,r=setTimeout(()=>n.abort(),hC);try{let o={"User-Agent":"octocode-mcp"};t&&(o.Authorization=`token ${t}`);let i=await fetch(e,{signal:n.signal,headers:o});if(!i.ok)throw new Error(`HTTP ${i.status} fetching ${e}`);return await i.text()}finally{clearTimeout(r)}}function Sp(e,t){let n=[],r=0;function o(i){let s;try{s=mC(i)}catch{return}for(let a of s){if(a.startsWith("."))continue;let c=fC(i,a);try{let u=fp(c);if(u.isDirectory())o(c);else if(u.isFile()){let l=c.substring(t.length+1);r+=u.size,n.push({path:l,size:u.size,type:"file"})}}catch{}}}return o(e),{files:n,fileCount:n.length,totalSize:r}}function bp(e){try{return fp(e).size}catch{return 0}}import{writeFileSync as RC,mkdirSync as Cp,existsSync as ga,rmSync as SC}from"node:fs";import{join as Pp,dirname as bC,resolve as xp,sep as wp}from"node:path";async function ya(e,t,n,r,o,i=!1){let s=rn(),a=kr(s,e,t,r),c=xp(Pp(a,n));if(!c.startsWith(a+wp)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let u=gn(a);if(u.hit&&!i&&ga(c)){let b=Sp(c,a),A=fa();return{localPath:c,repoRoot:a,files:b.files,fileCount:b.fileCount,totalSize:b.totalSize,complete:!0,verified:!1,...u.meta.commitSha?{commitSha:u.meta.commitSha}:{},directoryEntryCount:b.fileCount,eligibleFileCount:b.fileCount,savedFileCount:b.fileCount,skipped:A,limits:ma,warnings:ha(!0,!1),cached:!0,expiresAt:u.meta.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}let l=await U(o),d;try{d=(await l.rest.repos.getBranch({owner:e,repo:t,branch:r})).data.commit.sha}catch{}let{data:m}=await l.rest.repos.getContent({owner:e,repo:t,path:n,ref:r});if(!Array.isArray(m))throw new Error(`Path "${n}" is not a directory. Use type "file" to fetch file content.`);let p=m,f=fa(),g=[];for(let b of p){if(b.type!=="file"){f.nonFile+=1;continue}if(!b.download_url){f.missingDownloadUrl+=1;continue}if(b.size>pa){f.oversized+=1;continue}let A=$l(b.name,{lowercase:!0,leadingDot:!0});if(gp.has(A)){f.binary+=1;continue}g.push(b)}f.fileLimit=Math.max(0,g.length-Dr);let R=g.slice(0,Dr),h=o?.token,y=await Rp(R,hp,h);f.fetchFailed=R.length-y.length;let S=0,C=[];for(let b=0;b<y.length;b+=1){let{entry:A,content:M}=y[b];if(S+M.length>jo){f.totalSizeLimit=y.length-b;break}S+=M.length,C.push({entry:A,content:M})}$o(s),Pt(a),ga(c)&&SC(c,{recursive:!0,force:!0}),Cp(c,{recursive:!0,mode:448});let x=[];for(let{entry:b,content:A}of C){let M=xp(Pp(a,b.path));if(!M.startsWith(a+wp)){f.pathTraversal+=1;continue}let H=bC(M);ga(H)||Cp(H,{recursive:!0,mode:448}),RC(M,A,"utf-8"),x.push({path:b.path,size:A.length,type:"file"})}let T=yn(e,t,r,"treeFetch",void 0,void 0,d);hn(a,T);let L=yp(f),_=L,w=f.nonFile>0;return{localPath:c,repoRoot:a,files:x,fileCount:x.length,totalSize:S,complete:L,verified:_,...d?{commitSha:d}:{},...w?{hasSubdirectories:!0}:{},directoryEntryCount:p.length,eligibleFileCount:g.length,savedFileCount:x.length,skipped:f,limits:ma,warnings:ha(L,_),cached:!1,expiresAt:T.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}import{writeFileSync as CC,mkdirSync as PC,existsSync as Tp}from"node:fs";import{join as xC,dirname as wC,resolve as TC,sep as EC}from"node:path";async function Ra(e,t,n,r,o,i=!1){let s=rn(),a=kr(s,e,t,r),c=TC(xC(a,n));if(!c.startsWith(a+EC)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let u=gn(a);if(!i&&u.hit&&Tp(c))return{localPath:c,repoRoot:a,path:n,size:bp(c),cached:!0,expiresAt:u.meta.expiresAt,owner:e,repo:t,branch:r};let l=await Sr({owner:e,repo:t,path:n,type:"file",branch:r,fullContent:!0,contextLines:0,minify:"none",mainResearchGoal:"Materialize GitHub file content for local research",researchGoal:`Save ${e}/${t}/${n} locally`,reasoning:"GitHub file materialization"},o);if(!("data"in l)||!l.data){let f="error"in l?l.error:void 0;throw new Error(f||`Failed to fetch ${e}/${t}/${n}`)}$o(s),Pt(a);let d=wC(c);Tp(d)||PC(d,{recursive:!0,mode:448}),CC(c,l.data.rawContent,"utf-8");let m=l.data.branch||r,p=yn(e,t,m,"treeFetch");return hn(a,p),{localPath:c,repoRoot:a,path:n,size:l.data.rawContent.length,cached:!1,expiresAt:p.expiresAt,owner:e,repo:t,branch:m}}function zo(e,t){return e&&t?`${e}/${t}`:void 0}function Wo(e){let t=e.lastIndexOf("/");return t<=0?{owner:"",repo:e}:{owner:e.substring(0,t),repo:e.substring(t+1)}}function Vo(e){return{...typeof e?.reportedTotalMatches=="number"?{reportedTotalMatches:e.reportedTotalMatches}:{},...typeof e?.reachableTotalMatches=="number"?{reachableTotalMatches:e.reachableTotalMatches}:{},...e?.totalMatchesKind?{totalMatchesKind:e.totalMatchesKind}:{},...typeof e?.totalMatchesCapped=="boolean"?{totalMatchesCapped:e.totalMatchesCapped}:{},...typeof e?.uniqueFileCount=="number"?{uniqueFileCount:e.uniqueFileCount}:{}}}function AC(e,t=500){if(t<=0)return"";let n=[...e];return n.length<=t?e:t<=3?".".repeat(t):n.slice(0,t-3).join("")+"..."}function Ep(e){return{keywords:e.keywords??[],projectId:zo(e.owner,e.repo),owner:e.owner,path:e.path,filename:e.filename,extension:e.extension,language:e.language,match:e.match,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function Lp(e,t){let n=t.match==="path",r=new Map;for(let i of e.items){let s=i.repository.name||"",{owner:a,repo:c}=Wo(s),u=`${a}/${c}`,l=r.get(u);if(l||(l={id:u,owner:a,repo:c,matches:[]},r.set(u,l)),n||!i.matches?.length){l.matches.push({path:i.path,...n?{}:{pathOnly:!0}});continue}let d=!1;for(let m of i.matches){if(!m.context)continue;let p=AC(m.context),f={path:i.path,value:p};if(m.positions?.length>0){let g=m.positions.filter(([,R])=>R<=p.length);g.length>0&&(f.matchIndices=g.map(([R,h])=>({start:R,end:h,lineOffset:(m.context??"").substring(0,R).split(`
26
+ `).length-1})))}l.matches.push(f),d=!0}d||l.matches.push({path:i.path,pathOnly:!0})}let o={results:Array.from(r.values()),...e.nonExistentScope?{nonExistentScope:!0}:{},...e.incompleteResults?{incompleteResults:!0}:{}};return e.pagination&&e.pagination.totalPages>1&&(o.pagination={currentPage:e.pagination.currentPage,totalPages:e.pagination.totalPages,perPage:e.pagination.entriesPerPage||10,totalMatches:e.pagination.totalMatches||0,...Vo(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}),o}function Ap(e){let t=e;return{keywords:e.keywords,topics:e.topicsToSearch,owner:e.owner,stars:e.stars,updated:e.updated,language:e.language,archived:t.archived,visibility:t.visibility,license:t.license,match:e.match,sort:e.sort,limit:e.limit,page:e.page,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function _p(e){return e.map(t=>{let{owner:n,repo:r}=Wo(t.fullPath);return{owner:n||"",repo:r||t.name,defaultBranch:t.defaultBranch,stars:t.stars,description:t.description||"",url:t.url,createdAt:t.createdAt,updatedAt:t.updatedAt,pushedAt:t.lastActivityAt,visibility:t.visibility,topics:t.topics,forksCount:t.forks,openIssuesCount:t.openIssuesCount,...t.language&&{language:t.language}}})}function Ko(e){return e.startsWith('"')?e:/\s/.test(e)?`"${e.replace(/"/g,'\\"')}"`:e}function kp(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map(Ko),n=e.query?.trim()??"",r=[...t,...n?[n]:[]].join(" ")||void 0;return{projectId:zo(e.owner,e.repo),owner:e.owner,query:r,number:e.prNumber,state:e.state,author:e.author,assignee:e.assignee,commenter:e.commenter,mentions:e.mentions,reviewRequested:e["review-requested"],reviewedBy:e["reviewed-by"],labels:(()=>{let o=e.label;if(o)return Array.isArray(o)?o:[o]})(),baseBranch:e.base,headBranch:e.head,created:e.created,updated:e.updated,closed:e.closed,mergedAt:e["merged-at"],comments:e.comments,reactions:e.reactions,draft:e.draft,match:e.match,checks:e.checks,review:e.review,archived:e.archived,content:e.content,reviewMode:e.reviewMode,filePage:e.filePage,commentPage:e.commentPage,commitPage:e.commitPage,itemsPerPage:e.itemsPerPage,sort:e.sort,order:e.order,limit:e.limit??30,page:e.page,charOffset:e.charOffset,charLength:e.charLength,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function _C(e,t){let n=[];t.some(o=>o.state==="APPROVED")&&n.push("approval"),t.some(o=>o.state==="CHANGES_REQUESTED")&&n.push("changes-requested");let r=e.filter(o=>!Gt(o.author??"")).map(o=>o.body.toLowerCase());return n.length===0&&r.some(o=>/\b(lgtm|looks good|approved|ship it)\b/.test(o))&&n.push("approval"),!n.includes("changes-requested")&&r.some(o=>/\b(change|fix|concern|blocker|blocking|request changes?)\b/.test(o))&&n.push("changes-requested"),r.some(o=>o.includes("?"))&&n.push("question"),n.length>0?n:["discussion"]}function kC(e,t){if(!e||e.length===0)return;let n=Array.from(new Set(e.map(i=>i.author))),r=e.map(i=>i.updatedAt||i.createdAt).filter(Boolean).sort().at(-1),o=e.filter(i=>i.commentType==="review_inline").length;return{totalComments:e.length,inlineComments:o,discussionComments:e.length-o,commenters:n.slice(0,8),...r?{latestCommentAt:r}:{},themes:_C(e,t??[])}}function Ip(e,t={}){let{includeFileChanges:n=!0}=t,r=e.items.map(i=>{let s=i.fileChanges,a=s?.length??0,c=Array.isArray(i.comments)?i.comments:void 0,u=kC(c,i.reviews);return{number:i.number,title:i.title,body:i.body??void 0,...i.bodyPagination&&{bodyPagination:i.bodyPagination},state:i.state,draft:i.draft,author:i.author,assignees:i.assignees,labels:i.labels,sourceBranch:i.sourceBranch,targetBranch:i.targetBranch,sourceSha:i.sourceSha,targetSha:i.targetSha,createdAt:i.createdAt,updatedAt:i.updatedAt,closedAt:i.closedAt,mergedAt:i.mergedAt,commentsCount:i.commentsCount,changedFilesCount:i.changedFilesCount??a,additions:i.additions,deletions:i.deletions,...Array.isArray(i.comments)&&i.comments.length>0&&{comments:i.comments.map(l=>({...l,...l.bodyPagination&&{bodyPagination:l.bodyPagination}}))},...i.reviews&&{reviews:i.reviews},...i.commits&&{commits:i.commits},...u&&{reviewSummary:u},...s&&n?{fileChanges:s}:{},...Array.isArray(i.sanitizationWarnings)&&i.sanitizationWarnings.length>0?{sanitizationWarnings:i.sanitizationWarnings}:{}}}),o=e.pagination?{currentPage:e.pagination.currentPage,totalPages:e.pagination.totalPages,perPage:e.pagination.entriesPerPage||10,...typeof e.pagination.totalMatches=="number"?{totalMatches:e.pagination.totalMatches}:{},...Vo(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}:void 0;return{pullRequests:r,resultData:{pullRequests:r,...e.effectiveQuery?{effectiveQuery:e.effectiveQuery}:{},...o?{pagination:o}:{totalCount:e.totalCount||r.length}},pagination:o}}function Op(e){let t=!!e.fullContent;return{projectId:`${e.owner}/${e.repo}`,path:String(e.path),ref:e.branch?String(e.branch):void 0,startLine:t?void 0:e.startLine,endLine:t?void 0:e.endLine,matchString:t||!e.matchString?void 0:String(e.matchString),contextLines:e.contextLines??5,fullContent:t,forceRefresh:!!e.forceRefresh,charOffset:e.charOffset,charLength:e.charLength,minify:e.minify,matchStringIsRegex:e.matchStringIsRegex,matchStringCaseSensitive:e.matchStringCaseSensitive,mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function Fp(e,t){return{path:e.path,content:e.content,...typeof e.size=="number"&&e.size>0&&{fileSize:e.size},...typeof e.totalLines=="number"&&{totalLines:e.totalLines},...typeof e.sourceChars=="number"&&{sourceChars:e.sourceChars},...typeof e.sourceBytes=="number"&&{sourceBytes:e.sourceBytes},...e.contentView&&{contentView:e.contentView},...e.isPartial&&{isPartial:e.isPartial},...e.startLine&&{startLine:e.startLine},...e.endLine&&{endLine:e.endLine},...e.matchRanges?.length&&{matchRanges:e.matchRanges},...e.matchedLines?.length&&{matchedLines:e.matchedLines},...e.lastModified&&{lastModified:e.lastModified},...e.lastModifiedBy&&{lastModifiedBy:e.lastModifiedBy},...e.pagination&&{pagination:e.pagination},...e.warnings?.length&&{warnings:e.warnings},...e.matchNotFound===!0&&{matchNotFound:!0},...e.searchedFor&&{searchedFor:e.searchedFor},...e.ref&&t.branch!==e.ref?{resolvedBranch:e.ref}:{}}}function Sa(e,t){let n=e.include??[];return{projectId:`${e.owner}/${e.repo}`,ref:t,path:e.path?String(e.path):void 0,depth:typeof e.maxDepth=="number"?e.maxDepth:void 0,itemsPerPage:e.itemsPerPage??bt.ENTRIES_PER_PAGE,page:(()=>{let r=e.page;return typeof r=="number"?r:void 0})(),includeSizes:n.includes("sizes"),includeLanguages:n.includes("languages"),includeContributors:n.includes("contributors"),includeBranches:n.includes("branches"),includeTags:n.includes("tags"),mainResearchGoal:e.mainResearchGoal,researchGoal:e.researchGoal,reasoning:e.reasoning}}function vp(e,t,n,r){let o=r,i=e.branch??r,s=o&&i&&o!==i&&o!=="HEAD",a=Object.entries(n).sort(([p],[f])=>p==="."?-1:f==="."?1:p.localeCompare(f)).map(([p,f])=>({dir:p,files:f.files,folders:f.folders})),c=e.fileSizeMap,u={};if(c){for(let[p,f]of Object.entries(c))if(n[p]){let g=new Set(n[p].files);for(let[R,h]of Object.entries(f))if(g.has(R)){let y=p==="."?R:`${p}/${R}`;u[y]=h}}}let l=Object.values(n).reduce((p,f)=>(p.totalFiles+=f.files.length,p.totalFolders+=f.folders.length,p),{totalFiles:0,totalFolders:0}),d=e,m={structure:a,...Object.keys(u).length>0&&{fileSizes:u},...d.languages?{languages:d.languages,dominantLanguage:d.dominantLanguage}:{},...d.contributors?{contributors:d.contributors,totalContributors:d.contributors.length}:{},...d.branches?{branches:d.branches,totalBranches:d.branches.length}:{},...d.tags?{tags:d.tags,totalTags:d.tags.length}:{},summary:{totalFiles:l.totalFiles,totalFolders:l.totalFolders}};return i&&(m.resolvedBranch=i),s&&(m.branchFallback={requestedBranch:o,actualBranch:i,...e.defaultBranch!==void 0&&{defaultBranch:e.defaultBranch},warning:`Branch '${o}' not found. Showing '${i}' (default branch). Re-query with the correct branch name if branch-specific results are required.`}),e.pagination&&(e.pagination.hasMore||e.pagination.totalPages>1)&&(m.pagination=e.pagination),m}function Yo(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function IC(e){if(typeof e=="string")return{message:e};if(typeof e=="object"&&e!==null){let t=e;return{message:typeof t.error=="string"&&t.error.length>0?t.error:"Provider error",status:Yo(t.status),retryAfterSeconds:Yo(t.retryAfter),rateLimitRemaining:Yo(t.rateLimitRemaining),rateLimitReset:Yo(t.rateLimitReset)}}return{message:"Provider error"}}function Xo(e){let t=[];for(let n of e){if(n.status!=="error")continue;let{message:r,status:o,retryAfterSeconds:i,rateLimitRemaining:s,rateLimitReset:a}=IC(n.data.error),c=o!==void 0?`${r} (HTTP ${o})`:r;t.push({id:n.id,error:c,...o!==void 0?{status:o}:{},...i!==void 0?{retryAfterSeconds:i}:{},...s!==void 0?{rateLimitRemaining:s}:{},...a!==void 0?{rateLimitReset:a}:{}})}return t}function qo(e,t,n){let r=t,o=e.results;if(Array.isArray(o)){let s=o,a=mn(s);a&&(e.base=a);let c=fn(s);c&&(e.shared=c),(a||c)&&(r=[...a?["base"]:[],...c?["shared"]:[],...t])}let i=Bt(e,[...r]);return{structuredContent:Qe(Ht(e)??{}),text:i,isError:n}}import{z as $}from"zod";var OC=$.object({currentPage:$.number(),totalPages:$.number(),hasMore:$.boolean(),nextPage:$.number().optional(),pageSize:$.number().optional(),totalItems:$.number().optional(),perPage:$.number().optional(),totalFound:$.number().optional(),returned:$.number().optional(),totalMatches:$.number().optional(),reportedTotalMatches:$.number().optional().describe("Provider-reported raw total (e.g. GitHub's match count) \u2014 may exceed what pagination can actually reach."),reachableTotalMatches:$.number().optional().describe("Matches reachable by walking pages (bounded by the provider's result window, e.g. GitHub caps at 1000); totalPages is computed from this, not from reportedTotalMatches."),totalMatchesKind:$.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:$.boolean().optional(),totalResults:$.number().optional(),itemsPerPage:$.number().optional()}),TN=$.object({charOffset:$.number(),charLength:$.number(),totalChars:$.number(),hasMore:$.boolean(),nextCharOffset:$.number().optional(),currentPage:$.number().optional(),totalPages:$.number().optional(),chunkMode:$.enum(["semantic","char-limit"]).optional()}),EN=$.object({tool:$.string(),query:$.record($.string(),$.unknown()),why:$.string().optional(),confidence:$.enum(["exact","high","medium","low"]).optional()}),LN=OC.extend({filesPerPage:$.number().optional(),entriesPerPage:$.number().optional(),matchesPerPage:$.number().optional(),totalFiles:$.number().optional(),totalEntries:$.number().optional(),totalMatches:$.number().optional(),totalFilesFound:$.number().optional(),nextMatchPage:$.number().optional()}),FC=["id","mainResearchGoal","researchGoal","reasoning"];function vC(e){let t;for(let n of FC)n in e&&(t??={...e},delete t[n]);return t??e}function Rn(e,t,n="Continue to the next page of results."){return{tool:e,query:vC(t),why:n,confidence:"exact"}}function Jo(e,t,n,r){if(!n||!n.hasMore||n.nextCharOffset===void 0)return;let o=r?.includeCharLength!==!1;return{continueChars:{tool:e,query:{...t,charOffset:n.nextCharOffset,...o&&n.charLength!==void 0?{charLength:n.charLength}:{}}}}}function Zo(e){return typeof e=="object"&&e!==null}function Me(e){return typeof e=="string"&&e.length>0?e:void 0}function je(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Dp(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string");return t.length>0?t:void 0}function $e(e,t){return je(e[t])??0}function DC(e){if(Zo(e))return{nonFile:$e(e,"nonFile"),missingDownloadUrl:$e(e,"missingDownloadUrl"),oversized:$e(e,"oversized"),binary:$e(e,"binary"),fileLimit:$e(e,"fileLimit"),fetchFailed:$e(e,"fetchFailed"),totalSizeLimit:$e(e,"totalSizeLimit"),pathTraversal:$e(e,"pathTraversal")}}function MC(e){if(Zo(e))return{maxDirectoryFiles:$e(e,"maxDirectoryFiles"),maxTotalSize:$e(e,"maxTotalSize"),maxFileSize:$e(e,"maxFileSize")}}var NC=["charOffset","charLength","totalChars","nextCharOffset","nextBlockChar","nextPage","nextMatchPage","filesPerPage","totalFiles","entriesPerPage","totalEntries","matchesPerPage","totalMatches"];function GC(e){if(!Zo(e))return;let{currentPage:t,totalPages:n,hasMore:r}=e;if(typeof t!="number"||typeof n!="number"||typeof r!="boolean")return;let o={currentPage:t,totalPages:n,hasMore:r};for(let i of NC){let s=e[i];typeof s=="number"&&Number.isFinite(s)&&(o[i]=s)}return o}function HC(e,t){return Jo("ghGetFileContent",{owner:t.owner,repo:t.repo,...t.branch!==void 0?{branch:t.branch}:{},path:t.path,...t.minify!==void 0?{minify:t.minify}:{}},e)}function BC(e){return{tool:"ghCloneRepo",query:{owner:e.owner,repo:e.repo,...e.branch!==void 0?{branch:e.branch}:{},sparsePath:e.path},why:"lspGetSemantics (definitions/references) only works on local files \u2014 clone this path locally, then run localSearchCode or lspGetSemantics on it",confidence:"exact"}}function Mp(e,t){let n=GC(e.pagination),r=!1;try{r=_l()}catch{r=!1}let o={...HC(n,t),...r?{cloneForSemantics:BC(t)}:{}};return{path:Me(e.path)??String(t.path??""),content:typeof e.content=="string"?e.content:"",localPath:Me(e.localPath),repoRoot:Me(e.repoRoot),contentView:e.contentView==="none"||e.contentView==="standard"||e.contentView==="symbols"?e.contentView:void 0,totalLines:je(e.totalLines),sourceChars:je(e.sourceChars),resolvedBranch:Me(e.resolvedBranch),pagination:n,...Object.keys(o).length>0?{next:o}:{},...e.isPartial===!0||n?.hasMore===!0?{isPartial:!0}:{},startLine:je(e.startLine),endLine:je(e.endLine),...Array.isArray(e.matchRanges)&&e.matchRanges.length>0?{matchRanges:e.matchRanges}:{},...Array.isArray(e.matchedLines)&&e.matchedLines.length>0?{matchedLines:e.matchedLines}:{},lastModified:Me(e.lastModified),lastModifiedBy:Me(e.lastModifiedBy),warnings:Dp(e.warnings),...e.matchNotFound===!0?{matchNotFound:!0}:{},searchedFor:Me(e.searchedFor),...e.cached===!0?{cached:!0}:{}}}function Np(e,t){let r=(Array.isArray(e.files)?e.files:[]).filter(Zo).map(c=>({path:Me(c.path)??"",size:je(c.size)??0,type:Me(c.type)??"file"})),o=DC(e.skipped),i=e.hasSubdirectories===!0||(o?o.nonFile>0:!1),s=o?Object.entries(o).filter(([,c])=>c>0):[],a=s.length>0?Object.fromEntries(s):void 0;return{path:String(t.path??""),localPath:Me(e.localPath)??"",repoRoot:Me(e.repoRoot),fileCount:je(e.fileCount)??r.length,totalSize:je(e.totalSize)??0,complete:e.complete===!0,verified:e.verified===!0,...typeof e.commitSha=="string"&&e.commitSha.length===40?{commitSha:e.commitSha}:{},...i?{hasSubdirectories:!0}:{},...a?{skippedSummary:a}:{},directoryEntryCount:je(e.directoryEntryCount),eligibleFileCount:je(e.eligibleFileCount),savedFileCount:je(e.savedFileCount),skipped:o,limits:MC(e.limits),warnings:Dp(e.warnings),...r.length>0?{files:r}:{},...e.cached===!0?{cached:!0}:{},resolvedBranch:Me(e.resolvedBranch)}}function UC(e,t){return`${e}/${t}`}function QC(e,t,n){let r=UC(t,n),o=e.get(r);if(o)return o;let i={id:r,owner:t,repo:n};return e.set(r,i),i}function $C(e,t){let n=new Map;return e.forEach(r=>{if(r.status==="error")return;let o=t.get(r.id);if(!o)return;let i=String(o.owner??""),s=String(o.repo??"");if(!i||!s)return;let a=QC(n,i,s),c=r.data;if(o.type==="directory"){let l=a.directories??[];l.push(Np(c,o)),a.directories=l;return}let u=a.files??[];u.push(Mp(c,o)),a.files=u}),Array.from(n.values()).map(r=>{let o={owner:r.owner,repo:r.repo,...r.files?{files:r.files}:{},...r.directories?{directories:r.directories}:{}};return{id:r.id,data:o}})}function jC(e,t){return Xo(e).map(r=>{let o=t.get(r.id),s=/\b404\b|not found/i.test(r.error)&&o?.owner&&o?.repo?`${r.error} \u2014 verify the path (exact case, no leading slash) and the branch (a bad ref also 404s); list the tree with ghViewRepoStructure(owner:"${o.owner}", repo:"${o.repo}")`:r.error;return{id:r.id,owner:o?.owner,repo:o?.repo,path:o?.path?String(o.path):void 0,error:s}})}function Gp(){return({queries:e,results:t})=>{let n=new Map,r=Lr(e);e.forEach((a,c)=>{n.set(r[c],a)});let o=$C(t,n),i=jC(t,n),s={results:o};return i&&i.length>0&&(s.errors=i),qo(s,["results","id","owner","repo","files","directories","path","content","totalLines","startLine","endLine","isPartial","pagination","errors"],o.length===0&&!!(i&&i.length>0))}}async function Hp(e){let{queries:t,authInfo:n}=e,r=De(n);return ee(t,async(o,i)=>{try{let s=xe(Lt,o,{prefix:!1});if(s.ok===!1)return s.error;let a=s.data,c=a.minify??(a.fullContent===!0?"none":"standard"),u={...a,minify:c},l=r();return u.type==="directory"?zC(u,n,l):WC(u,n,l)}catch(s){return ye(s,o,void 0,P.GITHUB_FETCH_CONTENT)}},{toolName:P.GITHUB_FETCH_CONTENT,finalize:Gp()},e)}async function zC(e,t,n){if(!No(n,"fetchDirectoryToDisk"))return ye(new Error('Directory fetch (type: "directory") is only available with the GitHub provider. Use file mode (type: "file") instead.'),e,"Provider not supported",P.GITHUB_FETCH_CONTENT);if(!e.owner||!e.repo)return O("Directory fetch requires both owner and repo.",e,{rawResponse:0});let r=e.branch??await Pe(e.owner,e.repo,t),o=await ya(e.owner,e.repo,String(e.path),r,t,!!e.forceRefresh),i=(o.skipped?.nonFile??0)>0,s=o.skipped?Object.fromEntries(Object.entries(o.skipped).filter(([,l])=>l>0)):void 0,a={kind:"directory",localPath:o.localPath,repoRoot:o.repoRoot,source:"treeFetch",cached:o.cached,complete:o.complete,verified:o.verified,...o.commitSha?{commitSha:o.commitSha}:{},...i?{hasSubdirectories:!0}:{},...s&&Object.keys(s).length>0?{skippedSummary:s}:{},owner:e.owner,repo:e.repo},c={localSearch:{tool:"localSearchCode",query:{path:o.localPath,mode:"discovery"}},viewStructure:{tool:"localViewStructure",query:{path:o.localPath}},...i?{escalateToClone:{tool:"ghCloneRepo",why:"nonFile skips indicate subdirectories were not fetched; clone for full coverage",query:{owner:e.owner,repo:e.repo,...e.branch?{branch:e.branch}:{},...e.path?{sparsePath:String(e.path)}:{}}}}:{}},u={localPath:o.localPath,repoRoot:o.repoRoot,fileCount:o.fileCount,totalSize:o.totalSize,complete:o.complete,verified:o.verified,...o.commitSha?{commitSha:o.commitSha}:{},directoryEntryCount:o.directoryEntryCount,eligibleFileCount:o.eligibleFileCount,savedFileCount:o.savedFileCount,...s&&Object.keys(s).length>0?{skipped:o.skipped}:{},limits:o.limits,...o.warnings?{warnings:o.warnings}:{},files:o.files,...o.cached?{cached:!0}:{},...e.branch!==o.branch?{resolvedBranch:o.branch}:{},location:a,next:c};return oe(e,u,!0,P.GITHUB_FETCH_CONTENT,{rawResponse:o.totalSize??N(o)})}async function WC(e,t,n){let r=await ct(e,()=>n.provider.getFileContent(Op(e)));if(r.ok===!1)return r.result;let o=e.fullContent===!0&&e.minify==="none"?await VC(e,t):void 0,i={...Fp(r.response.data,e),...o?{localPath:o.localPath,repoRoot:o.repoRoot,cached:o.cached,...o.branch?{resolvedBranch:o.branch}:{}}:{}},s=!!(r.response.data.matchNotFound===!0||r.response.data.content&&r.response.data.content.length>0);return oe(e,i,s,P.GITHUB_FETCH_CONTENT,{rawResponse:r.response.rawResponseChars})}async function VC(e,t){if(!e.owner||!e.repo||typeof e.path!="string")return;let n=e.branch??await Pe(e.owner,e.repo,t);return Ra(e.owner,e.repo,e.path,n,t,!!e.forceRefresh)}function Mr(e){let t=new Map;for(let n of e)typeof n.id=="string"&&t.set(n.id,n);return t}function Bp(e,t){let n=Mr(t);return e.some(r=>{let o=n.get(r.id);return typeof o?.owner=="string"&&typeof o?.repo=="string"})}function Up(e){let t=e.data;return{results:Array.isArray(t?.results)?t.results:[],pagination:t?.pagination,...t?.nonExistentScope?{nonExistentScope:!0}:{},...t?.incompleteResults?{incompleteResults:!0}:{},...t?.repoState?{repoState:t.repoState}:{}}}function KC(e){return[...e].sort((t,n)=>{let r=n.matches.length-t.matches.length;return r!==0?r:t.id.localeCompare(n.id)})}function YC(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function XC(e,t){let n=(e.path.split("/").pop()??"").toLowerCase(),r=n.replace(/\.[^.]+$/,""),o=e.value??"",i=0;for(let s of t){let a=s.trim();if(!a)continue;let c=a.toLowerCase();if(n===c||r===c)return 2;(/^[A-Za-z0-9_]+$/.test(a)?new RegExp(`\\b${YC(a)}\\b`,"i").test(o):o.toLowerCase().includes(c))&&(i=Math.max(i,1))}return i}function qC(e,t){return{...e,matches:t}}function ba(e,t){let n=t.filter(o=>typeof o=="string"&&o.trim());return n.length===0?KC(e):e.map(o=>{let i=o.matches.map((s,a)=>({match:s,index:a,score:XC(s,n)}));return i.sort((s,a)=>s.score!==a.score?a.score-s.score:s.index-a.index),{group:qC(o,i.map(s=>s.match)),hasExact:i.some(s=>s.score>0)}}).sort((o,i)=>{if(o.hasExact!==i.hasExact)return o.hasExact?-1:1;let s=i.group.matches.length-o.group.matches.length;return s!==0?s:o.group.id.localeCompare(i.group.id)}).map(o=>o.group)}function $p(e){let t=new Map;for(let{id:n,groups:r}of e)for(let o of r){let i=`${n}\0${o.id}`,s=t.get(i);if(!s){t.set(i,{id:o.id,queryId:n,owner:o.owner,repo:o.repo,matches:[...o.matches]});continue}s.matches.push(...o.matches)}return Array.from(t.values())}function Qp(e){let t=new Map;for(let n of e)for(let r of n.matches){let o=`${n.queryId??""}\0${n.owner}\0${n.repo}\0${r.path}`,i=t.get(o),{path:s,...a}=r;if(i){i.matches.push(a);continue}t.set(o,{owner:n.owner,repo:n.repo,path:r.path,matches:[a]})}return Array.from(t.values())}function jp(e,t,n){if(t.length===0)return[];if(e.length===1){let i=typeof e[0]?.id=="string"?e[0].id:"ghSearchCode",s=typeof e[0]?.id=="string"?e[0].id:void 0,a=s?n.get(s):void 0;return[{id:i,data:{files:Qp(t),...a?{pagination:a}:{}}}]}let r=new Map,o=[];for(let i of t){let s=i.queryId??"ghSearchCode",a=r.get(s);a||(a=[],r.set(s,a),o.push(s)),a.push(i)}return o.map(i=>{let s=n.get(i);return{id:i,data:{files:Qp(r.get(i)),...s?{pagination:s}:{}}}})}function zp(e,t,n){let r=Mr(t),o={};for(let i of e){let s=i.data.files[0];if(!s)continue;let a=r.get(i.id),u=(Array.isArray(a?.keywords)?a.keywords.filter(d=>typeof d=="string"):[])[0]??n[0];if(!u)continue;let l=e.length===1?"getLines":`getLines:${i.id}`;o[l]={tool:"ghGetFileContent",query:{owner:s.owner,repo:s.repo,path:s.path,matchString:u},why:"GitHub code search returns no line numbers; fetch the top hit with matchString to get exact file:line anchors",confidence:"low"}}return Object.keys(o).length>0?o:void 0}function Ca(){return({queries:e,results:t})=>{let n=[],r=new Map,o=[],i=!1,s=[],a=Mr(e);t.forEach((S,C)=>{if(S.status==="error")return;let x=Up(S);x.repoState&&s.push({id:S.id,state:x.repoState,query:a.get(S.id)}),x.incompleteResults&&(i=!0),x.results.reduce((_,w)=>_+w.matches.length,0)===0&&o.push({id:S.id,...x.nonExistentScope?{nonExistentScope:!0}:{},...x.incompleteResults?{incompleteResults:!0}:{}});let L=x.results;n.push({id:S.id,groups:L}),x.pagination&&r.set(S.id,x.pagination)});let c=Array.from(new Set(e.flatMap(S=>{let C=S.keywords;return Array.isArray(C)?C.filter(x=>typeof x=="string"):[]}))),u=ba($p(n),c),l=Xo(t),d=e.some(S=>S.concise===!0),m=jp(e,u,r),p=zp(m,e,c);if(d)for(let S of m)S.data.files=S.data.files.map(C=>`${C.owner}/${C.repo}:${C.path}`);let f={results:m,...p?{next:p}:{}};o.length>0&&(f.emptyQueries=o.map(({id:S,nonExistentScope:C,incompleteResults:x})=>({id:S,...C?{nonExistentScope:C}:{},...x?{incompleteResults:x}:{}}))),l.length>0&&(f.errors=l);let g=[],R=(S,C)=>{g.push(C)};i&&R("ghIncompleteResults","GitHub code search returned incomplete_results: the search index did not fully complete. Empty or partial results may be a false negative \u2014 retry, narrow scope (owner/repo/path), or materialize the repo and search locally before concluding absence."),o.length>0&&Bp(o,e)&&R("ghScopedZeroUnproven","GitHub code search returned no results for a scoped repository query. Treat this as unproven absence: verify the repo/path with ghViewRepoStructure, then materialize or clone a bounded path and search locally before concluding.");let h=8,y=o.filter(({id:S,nonExistentScope:C,incompleteResults:x})=>{if(C||x)return!1;let T=a.get(S)?.keywords;return Array.isArray(T)&&T.length>h});y.length>0&&R("ghQueryPossiblyTooComplex",`Quer${y.length>1?"ies":"y"} ${y.map(S=>S.id).join(", ")} used more than ${h} keywords and returned zero results. GitHub code search can silently under-match an overly long/complex query instead of erroring \u2014 narrow to fewer, more specific keywords before concluding absence.`);for(let{id:S,state:C,query:x}of s)if(C.kind==="renamed"){let[T,L]=C.fullName.split("/");R("ghRepoRenamed",`Query ${S}: the repository was RENAMED to ${C.fullName} \u2014 searches against the old name silently miss. Retry with the new name (see next.retryRenamed).`);let _=x?.keywords;f.next={...f.next??{},[`retryRenamed:${S}`]:{tool:"ghSearchCode",query:{owner:T,repo:L,...Array.isArray(_)?{keywords:_}:{}},why:"Re-run the same search against the renamed repository",confidence:"exact"}}}else C.kind==="archived"?R("ghRepoArchived",`Query ${S}: the repository is ARCHIVED \u2014 the code-search index may lag or exclude it; zero matches is not proof of absence. Materialize the repo and search locally to verify.`):R("ghRepoNotFound",`Query ${S}: the repository was NOT FOUND \u2014 it does not exist (or is private to this token). Check the owner/repo spelling.`);return qo(f,["results","id","data","files","path","owner","repo","queryId","matches","value","pathOnly","matchIndices","pagination","next","tool","query","why","confidence","emptyQueries","nonExistentScope","incompleteResults","errors"],u.length===0&&l.length>0)}}function JC(e){return!!((e.keywords??[]).some(n=>n.trim().length>0)||e.owner||e.path||e.extension||e.filename||e.language)}function ZC(e){if(e.repo&&!e.owner)return{error:"Repository scope requires owner. Provide both owner and repo, or omit repo for a broader search."}}async function eP(e,t,n){try{let r=await U(n),{data:o}=await r.rest.repos.get({owner:e,repo:t}),i=`${e}/${t}`.toLowerCase();return o.full_name&&o.full_name.toLowerCase()!==i?{kind:"renamed",fullName:o.full_name}:o.archived?{kind:"archived"}:void 0}catch(r){return r.status===404?{kind:"notFound"}:void 0}}async function Wp(e){let{queries:t}=e,n=De(e.authInfo);return ee(t,async(r,o)=>{try{let i=ZC(r);if(i)return O(i.error,r);if(!JC(r))return O("At least one search term or scope filter is required.",r);let s=n(),a=await ct(r,()=>s.provider.searchCode(Ep(r)));if(a.ok===!1)return a.result;let c=Lp(a.response.data,r);if(c.results.length===0&&r.owner&&r.repo){let u=await eP(String(r.owner),String(r.repo),e.authInfo);u&&(c.repoState=u)}return oe(r,c,c.results.length>0,P.GITHUB_SEARCH_CODE,{rawResponse:a.response.rawResponseChars})}catch(i){return ye(i,r,void 0,P.GITHUB_SEARCH_CODE)}},{toolName:P.GITHUB_SEARCH_CODE,finalize:Ca()},e)}var tP=/^(\d+)\s*([hdwmy])$/i;function Pa(e){let t=e.trim(),n=tP.exec(t);if(n){let r=Number(n[1]),o=n[2].toLowerCase(),i=new Date;switch(o){case"h":i.setUTCHours(i.getUTCHours()-r);break;case"d":i.setUTCDate(i.getUTCDate()-r);break;case"w":i.setUTCDate(i.getUTCDate()-r*7);break;case"m":i.setUTCMonth(i.getUTCMonth()-r);break;case"y":i.setUTCFullYear(i.getUTCFullYear()-r);break}return{value:i.toISOString()}}return Number.isNaN(Date.parse(t))?{warning:`"${e}" is not a valid date or relative window \u2014 use e.g. "30d", "2w", "6m", "1y", or an ISO date like "2026-01-01". Filter skipped.`}:{value:t}}function xa(e,t,n){if(!e)return;if(!n&&!t)return{patch:e};let r=e.length,o=Math.min(Math.max(0,t??0),r),i=Math.max(1,n??r),s=Math.min(o+i,r),a=s<r;return{patch:e.slice(o,s),patchPagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}function wa(e,t){let n=e.map(l=>{let d=l.patch!==void 0?xa(l.patch,t.charOffset,t.charLength):void 0;return{filename:l.filename,status:l.status,additions:l.additions,deletions:l.deletions,...d!==void 0?{patch:d.patch,...d.patchPagination?{patchPagination:d.patchPagination}:{}}:{},...l.previous_filename?{previousFilename:l.previous_filename}:{}}}),r=Math.max(1,t.filePage??1),o=Math.max(1,t.itemsPerPage??20),i=n.length,s=Math.max(1,Math.ceil(i/o)),a=Math.min(r,s),c=(a-1)*o;return{files:n.slice(c,c+o),filesPagination:{currentPage:a,totalPages:s,itemsPerPage:o,totalFiles:i,hasMore:a<s,...a<s?{nextFilePage:a+1}:{}}}}var nP=5;function Sn(e){return e?e.includes('rel="next"'):!1}async function rP(e,t,n){if(e.length===0)return[];let r=new Array(e.length),o=0,i=Array.from({length:Math.min(t,e.length)},async()=>{for(;;){let s=o++;if(s>=e.length)return;r[s]=await n(e[s],s)}});return await Promise.all(i),r}async function Vp(e,t,n){let r=await pe(t),o=se("gh-api-history",{type:e.type,owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,since:e.since,until:e.until,author:e.author,committer:e.committer,page:e.page,perPage:e.perPage,filePage:e.filePage,itemsPerPage:e.itemsPerPage,includeDiff:e.includeDiff,charOffset:e.charOffset,charLength:e.charLength,auth:r},n);return fe(o,()=>oP(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function oP(e,t){try{let n=await U(t),r=[],o=e.since?Pa(e.since):void 0,i=e.until?Pa(e.until):void 0;o?.warning&&r.push(`since ${o.warning}`),i?.warning&&r.push(`until ${i.warning}`);let s={owner:e.owner,repo:e.repo,per_page:e.perPage,page:e.page,...e.path?{path:e.path}:{},...e.branch?{sha:e.branch}:{},...o?.value?{since:o.value}:{},...i?.value?{until:i.value}:{},...e.author?{author:e.author}:{},...e.committer?{committer:e.committer}:{}},a=await n.rest.repos.listCommits(s),c=a.headers.link,u=Sn(c),l=a.data.map(h=>{let y=h.commit.author,S=h.commit.committer,C=S?.date??y?.date??"",x=h.commit.message,T=x.split(`
27
+ `)[0]??x,L=x.slice(T.length).trim(),_=L.length>500,w=L.length===0?T:`${T}
28
+ ${_?`${L.slice(0,500)}\u2026`:L}`,b=S?.name===y?.name&&S?.email===y?.email||h.committer?.login==="web-flow";return{sha:h.sha,date:C,...w===T?{}:{message:w},..._?{messageTruncated:!0}:{},messageHeadline:T,author:{name:y?.name??"unknown",email:y?.email??"",...h.author?.login?{login:h.author.login}:{}},...S&&!b?{committer:{name:S.name??"unknown",email:S.email??"",...h.committer?.login?{login:h.committer.login}:{}}}:{}}});l.length===0&&(o?.value!==void 0||i?.value!==void 0)&&r.push("no commits matched the since/until window \u2014 GitHub filters by committer date (not author date; rebases and squash-merges reset it), and a path-scoped walk does not follow renames. Widen or drop since/until and inspect commit dates directly.");let d={currentPage:e.page,perPage:e.perPage,hasMore:u,...u?{nextPage:e.page+1}:{}};if(!e.includeDiff)return{data:{type:e.type,owner:e.owner,repo:e.repo,...e.path?{path:e.path}:{},commits:l,pagination:d,...r.length?{warnings:r}:{}},status:200};let m=!1,p=!1,f=await rP(l,nP,async(h,y)=>{try{let S=a.data[y]?.sha??h.sha,C=await n.rest.repos.getCommit({owner:e.owner,repo:e.repo,ref:S});if(e.type==="file"&&e.path){let x=e.path,T=C.data.files?.find(w=>w.filename===x||w.previous_filename===x);if(T){let w=T.patch!==void 0?xa(T.patch,e.charOffset,e.charLength):void 0;return{...h,additions:T.additions,deletions:T.deletions,status:T.status,...w!==void 0?{patch:w.patch,...w.patchPagination?{patchPagination:w.patchPagination}:{}}:{},...T.previous_filename?{previousFilename:T.previous_filename}:{}}}let L=x.endsWith("/")?x:`${x}/`,_=(C.data.files??[]).filter(w=>w.filename.startsWith(L));return _.length>0?(m=!0,{...h,...wa(_,e)}):(p=!0,h)}else{let x=e.path,T=(C.data.files??[]).filter(L=>!x||L.filename.startsWith(x));return{...h,...wa(T,e)}}}catch{}return h}),g=[];m&&g.push(`path '${e.path}' matched no single file in these commits but matches files under it \u2014 treated as a directory filter and returned per-commit changed files (append '/' to select directory mode explicitly).`),p&&g.push(`includeDiff: some commits contain no file matching '${e.path}' (rename or shallow diff?) \u2014 those commits are listed without a diff.`);let R=[...r,...g];return{data:{type:e.type,owner:e.owner,repo:e.repo,...e.path?{path:e.path}:{},commits:f,pagination:d,...R.length?{warnings:R}:{}},status:200}}catch(n){return W(n)}}async function Kp(e,t,n){let r=await pe(t),o=se("gh-api-releases",{owner:e.owner,repo:e.repo,page:e.page,perPage:e.perPage,includeAssets:e.includeAssets===!0,auth:r},n);return fe(o,()=>iP(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function iP(e,t){try{let n=await U(t),[r,o]=await Promise.all([n.rest.repos.listReleases({owner:e.owner,repo:e.repo,per_page:e.perPage,page:e.page}),n.rest.repos.getLatestRelease({owner:e.owner,repo:e.repo}).catch(()=>{})]),i=o?.data,s=r.data.map(c=>({tagName:c.tag_name,...c.name&&c.name!==c.tag_name?{name:c.name}:{},...c.published_at?{publishedAt:c.published_at}:{},...c.prerelease?{prerelease:!0}:{},...c.draft?{draft:!0}:{},...i!==void 0&&c.id===i.id?{latest:!0}:{},...e.includeAssets&&c.assets&&c.assets.length>0?{assets:c.assets.map(u=>({name:u.name,size:u.size,downloadCount:u.download_count,url:u.browser_download_url}))}:{}})),a=Sn(r.headers.link);return{data:{type:"releases",owner:e.owner,repo:e.repo,releases:s,...i?{latest:{tagName:i.tag_name,...i.published_at?{publishedAt:i.published_at}:{}}}:{},pagination:{currentPage:e.page,perPage:e.perPage,hasMore:a,...a?{nextPage:e.page+1}:{}}},status:200}}catch(n){return W(n)}}var sP=30;async function Yp(e,t,n){let r=t;if(!r.owner||!r.repo)return O("owner and repo are required for releases mode.",e);let o=e.limit,i=Number(typeof o=="number"?o:r.itemsPerPage)||sP,s=await Kp({owner:r.owner,repo:r.repo,page:Number(r.page)||1,perPage:i,includeAssets:r.includeAssets===!0},n);if(Ie(s))return O(s,e,{toolName:P.GITHUB_RELEASES});let a=s.data.releases.length>0||s.data.latest!==void 0,c=s.data.pagination?.nextPage,u={...s.data,...c!==void 0?{next:{nextPage:{tool:"ghListReleases",query:{owner:r.owner,repo:r.repo,page:c,itemsPerPage:i},why:"Fetch the next page of releases",confidence:"exact"}}}:{}};return oe(e,u,a,P.GITHUB_RELEASES,{rawResponse:s.rawResponseChars})}function Ye(e){if(typeof e=="string")return e;if(Array.isArray(e)&&typeof e[0]=="string")return e[0]}function Ta(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map(Ko),n=e.query?.trim()??"";return[...t,...n?[n]:[]].join(" ")||void 0}function Xp(e,t,n){if(!n&&!t)return{text:e};let r=e.length,o=Math.min(Math.max(0,t??0),r),i=Math.max(1,n??r),s=Math.min(o+i,r),a=s<r;return{text:e.slice(o,s),pagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}function ei(e){return e.pull_request!=null}function aP(e){return e?e.map(t=>typeof t=="string"?t:t.name??"").filter(Boolean):[]}function ti(e){return{number:e.number,title:e.title??"",state:e.state??"open",author:e.user?.login??"unknown",labels:aP(e.labels),createdAt:e.created_at??"",updatedAt:e.updated_at??"",...e.closed_at?{closedAt:e.closed_at}:{}}}function bn(e,t=[]){return{error:e,type:"http",...t.length>0?{hints:t}:{}}}function Ea(e,t,n="anon"){return se("gh-api-issues",{owner:e.owner,repo:e.repo,issueNumber:e.issueNumber,query:Ta(e),state:e.state,author:e.author,assignee:e.assignee,mentions:e.mentions,commenter:e.commenter,label:e.label,milestone:e.milestone,created:e.created,updated:e.updated,closed:e.closed,comments:e.comments,reactions:e.reactions,locked:e.locked,visibility:e.visibility,archived:e.archived,match:e.match,sort:e.sort,order:e.order,limit:e.limit,page:e.page,content:e.content,charOffset:e.charOffset,charLength:e.charLength,commentPage:e.commentPage,itemsPerPage:e.itemsPerPage,concise:e.concise,auth:n},t)}import{ContentSanitizer as qp}from"@octocodeai/octocode-engine/contentSanitizer";async function ni(e,t,n){try{let r=await e.rest.repos.get({owner:t,repo:n}),[o,i]=r.data.full_name?.split("/")??[];return!o||!i?{owner:t,repo:n,renamed:!1}:{owner:o,repo:i,renamed:o!==t||i!==n}}catch{return{owner:t,repo:n,renamed:!1}}}async function Jp(e,t){let n=Ye(e.owner),r=Ye(e.repo),o=e.issueNumber;if(!n||!r||o==null)return bn("owner, repo, and issueNumber are required for issue detail mode.");let i=await U(t),s=await i.rest.issues.get({owner:n,repo:r,issue_number:o});if(ei(s.data))return bn(`Issue #${o} is a pull request; use type:"prs" with prNumber:${o}.`,[`Retry with { type: "prs", owner: "${n}", repo: "${r}", prNumber: ${o} }.`]);let a=e.content?.body!==!1,c=e.content?.comments?.discussion===!0,u=e.content?.comments?.includeBots===!0,l=ti(s.data),d={};if(a){let m=qp.sanitizeContent(s.data.body??"").content,p=Xp(m,e.charOffset,e.charLength);l.body=p.text,p.pagination&&(d.body=p.pagination)}if(c){let m=Math.max(1,e.commentPage??1),p=Math.max(1,e.itemsPerPage??30),f=await i.rest.issues.listComments({owner:n,repo:r,issue_number:o,per_page:p,page:m}),g=u?f.data:f.data.filter(h=>!Gt(h.user?.login??""));l.comments=g.map(h=>({id:String(h.id),user:h.user?.login??"unknown",body:qp.sanitizeContent(h.body??"").content,createdAt:h.created_at??"",updatedAt:h.updated_at??"",commentType:"discussion"}));let R=Sn(f.headers.link);d.comments={currentPage:m,itemsPerPage:p,totalComments:l.comments.length,hasMore:R,...R?{nextCommentPage:m+1}:{}}}return Object.keys(d).length>0&&(l.contentPagination=d),{data:{type:"issues",owner:n,repo:r,issues:[l],totalCount:1},status:200}}async function Zp(e,t,n){let r=Ye(t.owner)??"",o=Ye(t.repo)??"",i=await U(n),s=[],a=e;if(r&&o){let h=await ni(i,r,o);h.renamed&&(s.push(`Repository ${r}/${o} was renamed to ${h.owner}/${h.repo} \u2014 GitHub search does not follow renames, so the canonical name was searched instead.`),a={...e,owner:h.owner,repo:h.repo})}let c=Cs(a),u=Math.min(t.limit??30,100),l=t.page??1,d=t.sort&&t.sort!=="best-match"?t.sort:void 0,m=await i.rest.search.issuesAndPullRequests({q:c,sort:d,order:t.order||"desc",per_page:u,page:l}),p=Wl(m.headers);p&&s.push(p);let f=(m.data.items??[]).filter(h=>!ei(h)).map(h=>ti(h)),g=m.data.total_count??f.length,R=l*u<g&&f.length===u;return{data:{type:"issues",owner:r,repo:o,issues:t.concise?f.map(h=>`#${h.number} ${h.title}`):f,totalCount:g,effectiveQuery:c,...s.length?{warnings:s}:{},...m.data.incomplete_results?{incompleteResults:!0}:{},pagination:{currentPage:l,perPage:u,hasMore:R,...R?{nextPage:l+1}:{},...g>1e3?{totalMatchesCapped:!0}:{}}},status:200}}async function em(e,t){let n=Ye(e.owner),r=Ye(e.repo);if(!n||!r)return bn("owner and repo are required for issues mode.");let o=await U(t),i=Math.min(e.limit??30,100),s=e.page??1,a=e.state==="open"||e.state==="closed"?e.state:"all",c=await o.rest.issues.listForRepo({owner:n,repo:r,state:a,per_page:i,page:s,...e.assignee?{assignee:e.assignee}:{},...e.author?{creator:e.author}:{},...e.mentions?{mentioned:e.mentions}:{},...e.milestone?{milestone:e.milestone}:{},...e.sort==="created"||e.sort==="updated"||e.sort==="comments"?{sort:e.sort}:{},...e.order?{direction:e.order}:{},...typeof e.label=="string"?{labels:e.label}:Array.isArray(e.label)?{labels:e.label.join(",")}:{}}),u=c.data.filter(p=>!ei(p)).map(p=>ti(p)),l=Sn(c.headers.link),d=!l&&s===1,m=[];return u.length===0&&l&&m.push("This page contained only pull requests (the GitHub issues endpoint returns both; PRs are filtered out) \u2014 follow pagination.nextPage, later pages may contain issues."),{data:{type:"issues",owner:n,repo:r,issues:e.concise?u.map(p=>`#${p.number} ${p.title}`):u,...d?{totalCount:u.length}:{},...m.length?{warnings:m}:{},pagination:{currentPage:s,perPage:i,hasMore:l,...l?{nextPage:s+1}:{}}},status:200}}async function La(e,t,n){let r=await pe(t),o=Ea(e,n,r);return fe(o,()=>cP(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function cP(e,t){try{if(e.state==="merged")return bn('state:"merged" is not valid for type:"issues" \u2014 use "open" or "closed".',['For merged PRs use type:"prs" with state:"merged".']);if(e.issueNumber!=null)return await Jp(e,t);let n={...e,query:Ta(e)};return Ps(n)?await Zp(n,e,t):await em(e,t)}catch(n){return We(n)?{data:{type:"issues",owner:Ye(e.owner)??"",repo:Ye(e.repo)??"",issues:[],totalCount:0,pagination:{currentPage:e.page??1,perPage:Math.min(e.limit??30,100),hasMore:!1}},status:200}:W(n)}}async function tm(e,t,n){let r=t;if(!r.owner||!r.repo)return O("owner and repo are required for issues mode.",e);let o=r.issueNumber??r.prNumber,i=await La({owner:r.owner,repo:r.repo,...o!=null?{issueNumber:o}:{},keywordsToSearch:r.keywordsToSearch,query:r.query,state:r.state,author:r.author,assignee:r.assignee,mentions:r.mentions,commenter:r.commenter,label:r.label,milestone:r.milestone,created:r.created,updated:r.updated,closed:r.closed,comments:r.comments,reactions:r.reactions,locked:r.locked,visibility:r.visibility,match:r.match,archived:r.archived,sort:r.sort,order:r.order,limit:r.limit,page:Number(r.page)||1,concise:r.concise,content:r.content,charOffset:r.charOffset,charLength:r.charLength,commentPage:r.commentPage,itemsPerPage:r.itemsPerPage},n);if(Ie(i))return O(i,e,{toolName:P.GITHUB_ISSUES});let s=Array.isArray(i.data.issues)?i.data.issues.length>0:!1,a=i.data.issues,c=(()=>{if(!Array.isArray(a)||a.length===0)return;let l=a[0];if(typeof l=="number")return l;if(typeof l=="string"){let d=l.match(/^#(\d+)\b/);return d?Number(d[1]):void 0}if(l&&typeof l=="object"&&typeof l.number=="number")return l.number})(),u={};return o==null&&c!=null&&(u.readIssue={tool:"ghSearchIssues",query:{owner:r.owner,repo:r.repo,issueNumber:c,content:{body:!0}},why:`Read issue #${c} body/discussion from this list`,confidence:"low"}),u.searchCode={tool:"ghSearchCode",query:{owner:r.owner,repo:r.repo},why:"Search code in this repository for symbols mentioned in the issue(s)",confidence:"low"},oe(e,{...i.data,next:u},s,P.GITHUB_ISSUES,{rawResponse:i.rawResponseChars})}async function nm(e,t){try{let o=(await(await U(t)).rest.repos.compareCommitsWithBasehead({owner:e.owner,repo:e.repo,basehead:`${e.base}...${e.head}`})).data,i=(o.commits??[]).map(a=>({sha:a.sha,messageHeadline:(a.commit.message??"").split(`
29
+ `)[0]??"",author:a.commit.author?.name??a.author?.login??"unknown",date:a.commit.author?.date??""})),s=o.files??[];return{data:{type:"compare",owner:e.owner,repo:e.repo,base:e.base,head:e.head,status:o.status,aheadBy:o.ahead_by,behindBy:o.behind_by,totalCommits:o.total_commits,commits:i,...e.includeDiff?{files:s.map(a=>({filename:a.filename,status:a.status,additions:a.additions,deletions:a.deletions,...a.patch?{patch:a.patch}:{}}))}:{changedFiles:s.length}},status:200}}catch(n){return W(n)}}async function rm(e,t,n){let r=t;if(!r.owner||!r.repo)return O("owner and repo are required for commits mode.",e);if(r.base&&r.head){let f=await nm({owner:r.owner,repo:r.repo,base:r.base,head:r.head,includeDiff:!!r.includeDiff},n);return Ie(f)?O(f,e,{toolName:P.GITHUB_COMMITS}):oe(e,f.data,f.data.totalCommits>0||f.data.status!=="identical",P.GITHUB_COMMITS)}let o=r.path,i=o&&!o.endsWith("/")?"file":"repo";if(i==="file"&&!o)return O("path is required when querying a specific file in commits mode.",e);let s=e.limit,a=typeof s=="number"?s:r.itemsPerPage,c=await Vp({type:i,owner:r.owner,repo:r.repo,path:o,branch:r.branch,since:r.since,until:r.until,author:r.author,committer:r.committer,page:Number(r.page)||1,perPage:Number(a)||30,filePage:typeof r.filePage=="number"?r.filePage:void 0,itemsPerPage:typeof a=="number"?a:void 0,includeDiff:!!r.includeDiff,charOffset:typeof r.charOffset=="number"?r.charOffset:void 0,charLength:typeof r.charLength=="number"?r.charLength:void 0},n);if(Ie(c))return O(c,e,{toolName:P.GITHUB_COMMITS});let{commits:u}=c.data,l=u.length>0,d=u.map(f=>f.messageHeadline?.match(/\(#(\d+)\)/)?.[1]).find(Boolean),m=!l&&c.data.warnings?.length?{hints:c.data.warnings}:{},p={...c.data,...m,...d?{next:{prDetail:{tool:"ghSearchPullRequests",query:{owner:r.owner,repo:r.repo,prNumber:Number(d)},why:`Open PR #${d} referenced by the first commit for review context`,confidence:"low"}}}:{}};return oe(e,p,l,P.GITHUB_COMMITS,{rawResponse:c.rawResponseChars})}function uP(e,t){let n=e?.patches;return n?.mode?{mode:n.mode,...n.files?{files:n.files}:{},...n.ranges?{ranges:n.ranges}:{}}:t==="full"?{mode:"all"}:{mode:"none"}}function lP(e,t){let n=e?.comments;return n?{discussion:n.discussion??!0,reviewInline:n.reviewInline??!0,includeBots:n.includeBots??!1,...n.file?{file:n.file}:{}}:t==="full"?{discussion:!0,reviewInline:!0,includeBots:!1}:!1}function dP(e,t){let n=e?.commits;return n?{list:n.list??!0,includeFiles:n.includeFiles??!1}:t==="full"?{list:!0,includeFiles:!1}:!1}function om(e){let{content:t,reviewMode:n}=e,r=uP(t,n),o=lP(t,n),i=dP(t,n),s=n==="full";return{body:t?.body??s,changedFiles:(t?.changedFiles??s)||r.mode!=="none",patches:r,comments:o,reviews:t?.reviews??s,commits:i,...n?{reviewMode:n}:{}}}function Nr(e){let t=e.matchString;if(typeof t!="string")return;let n=t.trim().toLowerCase();return n.length>0?n:void 0}function Cn(e,t){return typeof e=="string"&&e.toLowerCase().includes(t)}function Gr(e,t=1,n=20){let r=Math.min(Math.max(1,n),100),o=e.length,i=Math.max(1,Math.ceil(o/r)),s=Math.min(Math.max(1,t),i),a=(s-1)*r,c=Math.min(a+r,o);return{items:e.slice(a,c),pagination:{currentPage:s,totalPages:i,itemsPerPage:r,totalItems:o,hasMore:s<i,...s<i?{nextPage:s+1}:{}}}}function Qt(e,t=0,n=12e3){if(typeof e!="string")return;let r=e.length,o=Math.min(Math.max(0,t),r),i=Math.min(Math.max(1,n),5e4),s=Math.min(o+i,r),a=s<r;return{content:e.slice(o,s),pagination:{charOffset:o,charLength:s-o,totalChars:r,hasMore:a,...a?{nextCharOffset:s}:{}}}}function ri(e,t=500){if(!(typeof e!="string"||e.length===0))return e.length<=t?e:`${e.slice(0,t-3)}...`}function Aa(e,t){return{owner:e.owner,repo:e.repo,prNumber:t}}function pP(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Hr(e,t,n){return pP({...Aa(e,t),...n})}function _a(e,t,n,r,o={}){if(!(!r.hasMore||r.nextCharOffset===void 0))return Hr(e,t,{content:n,...o,charOffset:r.nextCharOffset,charLength:e.charLength})}function oi(e,t,n,r,o){if(!(!o.hasMore||o.nextPage===void 0))return Hr(e,t,{content:n,[r]:o.nextPage,itemsPerPage:e.itemsPerPage})}function Pn(e){return typeof e=="object"&&e!==null}function ii(e){if(Pn(e)&&!(typeof e.currentPage!="number"||typeof e.totalPages!="number"||typeof e.itemsPerPage!="number"||typeof e.totalItems!="number"||typeof e.hasMore!="boolean"))return e}function si(e){if(Pn(e)&&!(typeof e.charOffset!="number"||typeof e.charLength!="number"||typeof e.totalChars!="number"||typeof e.hasMore!="boolean"))return e}function mP(e,t){return e.filter(n=>{let r=n.commentType;return t.file&&n.path!==t.file?!1:r==="review_inline"?t.reviewInline:t.discussion})}function im(e,t,n){if(!n.comments)return{};let r=Array.isArray(e.comments)?e.comments:[],o=mP(r,n.comments),i=Nr(t),s=i?o.filter(u=>Cn(u.body,i)):o,{items:a,pagination:c}=Gr(s,t.commentPage??t.page??1,t.itemsPerPage??20);return{comments:a.map(u=>{let l=Qt(typeof u.body=="string"?u.body:"",t.commentBodyOffset??0,t.charLength??12e3);return{id:u.id,author:u.author,commentType:u.commentType??"discussion",path:u.path,line:u.line,...u.in_reply_to_id!=null?{in_reply_to_id:u.in_reply_to_id}:{},...l?{body:l.content,bodyPagination:l.pagination}:{bodyPreview:ri(typeof u.body=="string"?u.body:"")},createdAt:u.createdAt,updatedAt:u.updatedAt}}),commentPagination:c}}function sm(e,t,n){if(!n.reviews)return{};let r=Array.isArray(e.reviews)?e.reviews:[],o=Nr(t);return{reviews:(o?r.filter(s=>Cn(s.body,o)):r).map(s=>{let a=typeof s.body=="string"?s.body:"",c=Qt(a||void 0,0,t.charLength??12e3);return{id:s.id,user:s.user,state:s.state,...c?{body:c.content,bodyPagination:c.pagination}:{},submittedAt:s.submittedAt??s.submitted_at,commitId:s.commitId??s.commit_id}})}}function am(e,t,n){if(!n.commits)return{};let r=Array.isArray(e.commits)?e.commits:[],{items:o,pagination:i}=Gr(r,t.commitPage??t.page??1,t.itemsPerPage??20);return{commits:o.map(s=>({sha:s.sha,message:s.message,author:s.author,date:s.date,...n.commits&&n.commits.includeFiles&&Array.isArray(s.files)?{files:s.files}:{}})),commitPagination:i}}function ai(e){return String(e.path??e.filename??"")}function fP(e,t){return{path:ai(e),status:String(e.status??""),additions:Number(e.additions??0),deletions:Number(e.deletions??0),...t&&typeof e.patch=="string"?{patch:e.patch}:{}}}function hP(e){return e.split(`
29
30
  `).filter(t=>{if(!t.startsWith("+"))return!0;let n=t.slice(1).trim();return n!==""&&!n.startsWith("//")&&!n.startsWith("/*")&&!n.startsWith("*")}).map(t=>t.startsWith("+")?"+"+t.slice(1).replace(/\s*\/\/.*$/,"").trimEnd():t).join(`
30
- `)}function RS(e,t,n,r){let o=Array.isArray(e.fileChanges)?e.fileChanges:[],i=n.patches.files,s=i&&i.length>0?o.filter(p=>i.includes(ic(p))):o,a=ki(t),c=a?s.filter(p=>zr(ic(p),a)||zr(p.patch,a)):s,{items:l,pagination:u}=Oi(c,t.filePage??t.page??1,t.itemsPerPage??20),d=n.patches.mode!=="none",m=l.map(p=>{let h=DF(p,!1);if(!d||typeof p.patch!="string")return h;let g=r&&!a?NF(p.patch):p.patch,y=Xn(g,t.charOffset??0,t.charLength??12e3);return{...h,patch:y?.content??"",diff:ui(y?.content),...y?{patchPagination:y.pagination}:{}}});return n.changedFiles||n.patches.mode!=="none"?{changedFiles:m,filePagination:u}:o.length===0?{}:{filePathsPreview:o.slice(0,20).map(ic).filter(Boolean),filePathsPagination:{totalFiles:o.length,filesPerPage:20,hasMore:o.length>20,...o.length>20?{nextFilePage:2}:{}}}}var SS=f(()=>{"use strict";ae();pa();Ai()});function Jn(e,t){return{...e,content:t}}function GF(e,t){return{...e,...t}}function PS(e,t,n,r){let o=rp(e,t);return{target:o,...n.body?{}:{getBody:Jn(o,{body:!0})},...n.changedFiles?{}:{getChangedFiles:Jn(o,{changedFiles:!0})},...n.patches.mode!=="none"?{}:{getSelectedPatches:Jn(o,{patches:{mode:"selected",files:[r??"path/from/changedFiles"]}}),getAllPatches:Jn(o,{patches:{mode:"all"}})},...n.comments?{}:{getComments:Jn(o,{comments:{discussion:!0,reviewInline:!0}})},...n.reviews?{}:{getReviews:Jn(o,{reviews:!0})},...n.commits?{}:{getCommits:Jn(o,{commits:{list:!0}})},...n.reviewMode==="full"?{}:{fullReview:GF(o,{reviewMode:"full"})}}}var CS=f(()=>{"use strict";Ai()});function HF(e){return e.replace(/\n{3,}/g,`
31
+ `)}function cm(e,t,n,r){let o=Array.isArray(e.fileChanges)?e.fileChanges:[],i=n.patches.files,s=i&&i.length>0?o.filter(p=>i.includes(ai(p))):o,a=Nr(t),c=a?s.filter(p=>Cn(ai(p),a)||Cn(p.patch,a)):s,{items:u,pagination:l}=Gr(c,t.filePage??t.page??1,t.itemsPerPage??20),d=n.patches.mode!=="none",m=u.map(p=>{let f=fP(p,!1);if(!d||typeof p.patch!="string")return f;let g=r&&!a?hP(p.patch):p.patch,R=Qt(g,t.charOffset??0,t.charLength??12e3);return{...f,patch:R?.content??"",...R?{patchPagination:R.pagination}:{}}});return n.changedFiles||n.patches.mode!=="none"?{changedFiles:m,filePagination:l}:o.length===0?{}:{filePathsPreview:o.slice(0,20).map(ai).filter(Boolean),filePathsPagination:{totalFiles:o.length,filesPerPage:20,hasMore:o.length>20,...o.length>20?{nextFilePage:2}:{}}}}function $t(e,t){return{...e,content:t}}function gP(e,t){return{...e,...t}}function um(e,t,n,r){let o=Aa(e,t);return{target:o,...n.body?{}:{getBody:$t(o,{body:!0})},...n.changedFiles?{}:{getChangedFiles:$t(o,{changedFiles:!0})},...n.patches.mode!=="none"?{}:{getSelectedPatches:$t(o,{patches:{mode:"selected",files:[r??"path/from/changedFiles"]}}),getAllPatches:$t(o,{patches:{mode:"all"}})},...n.comments?{}:{getComments:$t(o,{comments:{discussion:!0,reviewInline:!0}})},...n.reviews?{}:{getReviews:$t(o,{reviews:!0})},...n.commits?{}:{getCommits:$t(o,{commits:{list:!0}})},...n.reviewMode==="full"?{}:{fullReview:gP(o,{reviewMode:"full"})}}}function yP(e){return e.replace(/\n{3,}/g,`
31
32
 
32
- `)}function QF(e){return{...e.changedFiles?{changedFiles:!0}:{},...e.patches.mode!=="none"?{patches:e.patches}:{}}}function jF(e){let t=e.changedFiles;if(Array.isArray(t))for(let n of t){if(!Ur(n))continue;let r=oc(n.patchPagination);if(r?.hasMore)return r}}function BF(e){let t=e.comments;if(Array.isArray(t))for(let n of t){if(!Ur(n))continue;let r=oc(n.bodyPagination);if(r?.hasMore)return r}}function zF(e,t,n,r){let o={},i=oc(e.bodyPagination),s=rc(e.filePagination),a=rc(e.commentPagination),c=rc(e.commitPagination),l=jF(e),u=BF(e),d=QF(n);i&&(o.body={...i,nextQuery:op(t,r,{body:!0},i)}),s&&(o.changedFiles={...s,nextQuery:nc(t,r,d,"filePage",s)}),a&&n.comments&&(o.comments={...a,nextQuery:nc(t,r,{comments:n.comments},"commentPage",a)}),u?.hasMore&&u.nextCharOffset!==void 0&&n.comments&&(o.commentBody={...u,nextQuery:vi(t,r,{content:{comments:n.comments},...t.commentPage!==void 0?{commentPage:t.commentPage}:{},commentBodyOffset:u.nextCharOffset,charLength:t.charLength})}),c&&n.commits&&(o.commits={...c,nextQuery:nc(t,r,{commits:n.commits},"commitPage",c)}),l&&n.patches.mode!=="none"&&(o.patches={...l,nextQuery:op(t,r,{patches:n.patches},l,{filePage:t.filePage??t.page})});let m=e.filePathsPagination;return Ur(m)&&(o.filePaths={...m,hasMore:m.hasMore===!0,nextQuery:m.hasMore===!0?vi(t,r,{content:{changedFiles:!0},filePage:m.nextFilePage}):void 0}),Object.keys(o).length>0?o:void 0}function UF(e){delete e.bodyPagination,delete e.filePagination,delete e.commentPagination,delete e.commitPagination,delete e.filePathsPagination}function xS(e,t,n,r,o){let i=Number(e.number),s=typeof e.body=="string"?e.body:void 0,a=s&&r?HF(s):s,c=n.body?Xn(a,t.charOffset??0,t.charLength??12e3):void 0,l=n.body||n.changedFiles||n.patches.mode!=="none"||!!n.comments||n.reviews||!!n.commits,u=o!==void 0?o:l,m=t.prNumber!==void 0||t.verbose===!0,p=RS(e,t,n,r),h=Array.isArray(p.changedFiles)?p.changedFiles.find(S=>S.path)?.path:void 0,y={...{number:e.number,title:e.title,...e.url?{url:e.url}:{},state:e.state,...e.draft?{draft:e.draft}:{},author:e.author,...Array.isArray(e.assignees)&&e.assignees.length?{assignees:e.assignees}:{},...Array.isArray(e.labels)&&e.labels.length?{labels:e.labels}:{},targetBranch:e.targetBranch,...m?{sourceBranch:e.sourceBranch,...e.sourceSha?{sourceSha:e.sourceSha}:{}}:{},createdAt:e.createdAt,...m?{updatedAt:e.updatedAt}:{},...m||!e.mergedAt?{closedAt:e.closedAt}:{},mergedAt:e.mergedAt,...e.commentsCount?{commentsCount:e.commentsCount}:{},...e.changedFilesCount?{changedFilesCount:e.changedFilesCount}:{},...e.additions?{additions:e.additions}:{},...e.deletions?{deletions:e.deletions}:{},...m&&!c?{bodyPreview:tc(typeof e.body=="string"?e.body:void 0)}:{},...u?{next:PS(t,i,n,h)}:{}},...n.body?c?{body:c.content,bodyPagination:c.pagination}:{bodyEmpty:!0}:{},...p,...hS(e,t,n),...gS(e,t,n),...yS(e,t,n),...e.reviewSummary?{reviewSummary:e.reviewSummary}:{},...Array.isArray(e.sanitizationWarnings)&&e.sanitizationWarnings.length>0?{sanitizationWarnings:e.sanitizationWarnings}:{}},b=zF(y,t,n,i);return UF(y),b&&(y.contentPagination=b),y}var wS=f(()=>{"use strict";bS();SS();CS();Ai()});async function TS(e,t,n){let r=n(),o={...t},i=mS(o),s=o.prNumber!==void 0;if(s||(o.content=void 0,o.reviewMode=void 0),!(o.keywordsToSearch?.length||o.owner||o.repo||o.author||o.assignee||o.prNumber&&o.owner&&o.repo))return N("At least one valid search parameter, filter, or PR number is required.",e);let c=await Wt(o,()=>r.provider.searchPullRequests(CR(o)));if(c.ok===!1)return c.result;let l=s?i.changedFiles||i.patches.mode!=="none":!1,{pullRequests:u,resultData:d}=xR(c.response.data,{includeFileChanges:l});o.prNumber!==void 0&&delete d.pagination;let m=!s&&(!!e.content||!!e.reviewMode),p={...i,body:!1,changedFiles:!1,patches:{mode:"none"},comments:!1,commits:!1},h=o.minify==="standard",g=!0,y=u.map(S=>xS(S,o,m?p:i,h,g));d.pull_requests=y,!s&&o.concise===!0&&(d.pull_requests=y.map(S=>{let x=S;return`#${x.number} ${x.title}`}));let b=y.length>0;return xe(o,d,b,v.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:c.response.rawResponseChars})}var ES=f(()=>{"use strict";pe();De();Qr();Pn();fS();wS()});async function kS(e){let{queries:t,authInfo:n}=e,r=dt(n);return me(t,async(o,i)=>{try{let s=ot(In,o);if(s.ok===!1)return s.error;let a=s.data.type;return a==="releases"?ZR(o,s.data,n):a==="issues"?lS(o,s.data,n):a==="commits"?dS(o,s.data,n):TS(o,s.data,r)}catch(s){return ze(s,o,void 0,v.GITHUB_SEARCH_PULL_REQUESTS)}},{toolName:v.GITHUB_SEARCH_PULL_REQUESTS,keysPriority:["pull_requests","issues","releases","latest","tagName","publishedAt","prerelease","pagination","total_count","error"]},e)}var OS=f(()=>{"use strict";pe();Ke();De();Pn();eS();uS();pS();ES();vl()});function AS(e){return!!(e.topicsToSearch&&(Array.isArray(e.topicsToSearch)?e.topicsToSearch.length>0:e.topicsToSearch))}function LS(e){return!!(e.keywords&&e.keywords.length>0)}function _S(e){return!!(LS(e)||AS(e)||e.owner||e.language||e.stars||e.created||e.updated||e.size||e.forks||e.license||e.goodFirstIssues||e.visibility||e.archived!==void 0)}function vS(e,t){return e?`${e} (${t==="topics"?"topics-based search":"keywords-based search"})`:`${t.charAt(0).toUpperCase()+t.slice(1)}-based repository search`}function FS(e){let t=AS(e),n=LS(e);if(t&&n){let{topicsToSearch:r,keywords:o,...i}=e;return[{label:"topics",query:{...i,reasoning:vS(e.reasoning,"topics"),topicsToSearch:r}},{label:"keywords",query:{...i,reasoning:vS(e.reasoning,"keywords"),keywords:o}}]}return[{label:"combined",query:e}]}var IS=f(()=>{"use strict"});function MS(e,t){if(!e&&!t)return 0;if(!e)return 1;if(!t)return-1;let n=Date.parse(e),r=Date.parse(t);return Number.isNaN(n)&&Number.isNaN(r)?0:Number.isNaN(n)?1:Number.isNaN(r)?-1:r-n}var DS=f(()=>{"use strict"});function GS(e){let t=new Map;for(let n of e){let r=`${n.owner}/${n.repo}`;t.has(r)||t.set(r,n)}return[...t.values()]}function HS(e,t){return[...e].sort((n,r)=>{let o=$F(n,r,t.sort);if(o!==0)return o;let i=NS(r,t)-NS(n,t);if(i!==0)return i;let s=(r.stars??0)-(n.stars??0);return s!==0?s:ip(n).localeCompare(ip(r))})}function $F(e,t,n){switch(n){case"stars":return(t.stars??0)-(e.stars??0);case"forks":return(t.forksCount??0)-(e.forksCount??0);case"help-wanted-issues":return(t.openIssuesCount??0)-(e.openIssuesCount??0);case"updated":return MS(e.updatedAt,t.updatedAt);case"best-match":case void 0:return 0;default:return 0}}function NS(e,t){let n=qF(t),r=ip(e).toLowerCase(),o=e.repo.toLowerCase(),i=(e.description??"").toLowerCase(),s=(e.topics??[]).map(u=>u.toLowerCase()),a=e.language?.toLowerCase(),c=t.language?.toLowerCase();return n.reduce((u,d)=>o===d||r===d?u+80:o.includes(d)||r.includes(d)?u+40:s.includes(d)?u+35:i.includes(d)?u+10:u,0)+(c&&a===c?20:0)}function qF(e){let t=e.keywords??[],n=e.topicsToSearch??[];return[...t,...n].map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)}function ip(e){return`${e.owner}/${e.repo}`}var QS=f(()=>{"use strict";DS()});function sp(e){return{currentPage:e.currentPage,totalPages:e.totalPages,perPage:e.entriesPerPage??10,...e.totalMatches!==void 0?{totalMatches:e.totalMatches}:{},...e.reportedTotalMatches!==void 0?{reportedTotalMatches:e.reportedTotalMatches}:{},...e.reachableTotalMatches!==void 0?{reachableTotalMatches:e.reachableTotalMatches}:{},...e.totalMatchesKind!==void 0?{totalMatchesKind:e.totalMatchesKind}:{},...e.totalMatchesCapped!==void 0?{totalMatchesCapped:e.totalMatchesCapped}:{},hasMore:e.hasMore,...e.hasMore?{nextPage:e.currentPage+1}:{}}}function ap(e){return e.length===0?void 0:[`Repository search partially failed: the ${e.map(n=>`'${n.label}'`).join(", ")} query variant(s) returned an error. Results may be incomplete \u2014 retry or narrow the query.`]}function cp(e,t){let n=e.map(r=>r.response.data.pagination).filter(r=>!!r);if(n.length!==0)return{currentPage:n[0].currentPage,totalPages:Math.max(...n.map(r=>r.totalPages)),hasMore:n.some(r=>r.hasMore),entriesPerPage:n[0].entriesPerPage,totalMatches:t,reachableTotalMatches:t,totalMatchesKind:"lowerBound",totalMatchesCapped:n.some(r=>r.totalMatchesCapped===!0)}}function jS(e){return e.reduce((t,n)=>t+(n.response.rawResponseChars??j(n.response.data??n.response)),0)}var lp=f(()=>{"use strict";ue()});function WF(e){let t=e,n={owner:t.owner??"",repo:t.repo,stars:t.stars,forks:t.forksCount,openIssuesCount:t.openIssuesCount,language:t.language,license:t.license||void 0,description:t.description&&t.description!=="No description"?t.description:void 0,homepage:t.homepage||void 0,pushedAt:t.pushedAt?t.pushedAt.slice(0,10):void 0,createdAt:t.createdAt?t.createdAt.slice(0,10):void 0,updatedAt:t.updatedAt?t.updatedAt.slice(0,10):void 0,defaultBranch:t.defaultBranch&&t.defaultBranch!=="main"&&t.defaultBranch!=="master"?t.defaultBranch:void 0,topics:t.topics?.length?t.topics:void 0,visibility:t.visibility&&t.visibility!=="public"?t.visibility:void 0};return Object.fromEntries(Object.entries(n).filter(([,r])=>r!==void 0))}function VF(e,t){let n=t.concise===!0,r=e.repositories[0],o=r?.owner&&r?.repo?{viewStructure:{tool:"ghViewRepoStructure",query:{owner:r.owner,repo:r.repo,path:""},why:"Orient in the top-ranked repository before reading code",confidence:"heuristic"},searchCode:{tool:"ghSearchCode",query:{owner:r.owner,repo:r.repo},why:"Scope a code search to the top-ranked repository",confidence:"heuristic"}}:void 0;return{data:{pagination:e.pagination,repositories:n?e.repositories.map(i=>`${i.owner?`${i.owner}/`:""}${i.repo}`):e.repositories.map(WF),...o?{next:o}:{}}}}async function BS(e){let{queries:t,authInfo:n}=e,r=dt(n);return me(t,async(o,i)=>{try{if(!_S(o))return N("At least one repository search term or filter is required.",o);let s=r(),a=FS(o),{successes:c,failures:l}=await _b(a.map(w=>({meta:{label:w.label,query:w.query},operation:()=>s.provider.searchRepos(RR(w.query))}))),u=c.map(w=>({label:w.meta.label,query:w.meta.query,response:w.response})),d=l.map(w=>({label:w.meta.label,query:w.meta.query,response:w.response}));if(u.length===0){let w=d[0];return w?va(w.response,o):ze(new Error("Repository search produced no provider results"),o,void 0,v.GITHUB_SEARCH_REPOSITORIES)}let m=o.limit,p=HS(GS(u.flatMap(w=>SR(w.response.data.repositories))),o),h=m!=null?p.slice(0,m):p,g=u.length===1?u[0]:void 0,b=u.length>1?cp(u,p.length):g?.response.data.pagination,S=b?sp(b):void 0,x=h.length>0,k=VF({repositories:h,pagination:S},o),E=ap(d),_=E?{...k.data,warnings:E}:k.data;return xe(o,_,x,v.GITHUB_SEARCH_REPOSITORIES,{rawResponse:jS([...u,...d])})}catch(s){return ze(s,o,void 0,v.GITHUB_SEARCH_REPOSITORIES)}},{toolName:v.GITHUB_SEARCH_REPOSITORIES,keysPriority:["repositories","pagination","error"]},e)}var zS=f(()=>{"use strict";pe();Ke();De();Qr();Pn();IS();QS();lp();lp()});function KF(e,t){let n=e.error,r=typeof n=="object"&&n!==null?n:void 0;return{status:"error",owner:t.owner,repo:t.repo,path:t.path,branch:t.branch,error:typeof r?.error=="string"?r.error:typeof n=="string"?n:"Failed to explore repository structure",...typeof r?.status=="number"?{statusCode:r.status}:{},...typeof r?.type=="string"?{errorType:r.type}:{}}}function YF(e){let t={};for(let[n,r]of Object.entries(e)){let o=n.split("/").pop()??n;if(n!==""&&n!=="."&&ri(o))continue;let i=r.files.filter(a=>!Or(a)),s=r.folders.filter(a=>!ri(a));(i.length>0||s.length>0)&&(t[n]={files:i,folders:s})}return t}async function US(e){let{queries:t,authInfo:n}=e,r=dt(n);return me(t,async(o,i)=>{try{let s=r(),a=`${o.owner}/${o.repo}`,c=o.branch,l=c??await s.provider.resolveDefaultBranch(a),u=await Wt(o,()=>s.provider.getRepoStructure(Kd(o,l))),d=l,m;if(u.ok===!1&&c){let x=u.result.error;if((typeof x=="object"&&x!==null?x.status:void 0)===404){let E=await s.provider.resolveDefaultBranch(a);if(E!==c){let _=await Wt(o,()=>s.provider.getRepoStructure(Kd(o,E)));_.ok!==!1&&(u=_,d=E,m=`Branch/ref '${c}' was not found. Showing '${E}' (default branch) instead. Re-query with the correct branch name if branch-specific results are required.`)}}}if(u.ok===!1)return KF(u.result,o);let p=YF(u.response.data.structure),h=Object.keys(p).length>0,g=OR(u.response.data,o,p,d);m&&(g.branchFallback={requestedBranch:c,actualBranch:d,warning:m});let b=g.structure?.find(x=>(x.files?.length??0)>0),S=b?b.dir==="."?b.files[0]:`${b.dir}/${b.files[0]}`:void 0;return g.next={...S?{fetchFile:{tool:"ghGetFileContent",query:{owner:o.owner,repo:o.repo,path:S,...o.branch?{branch:o.branch}:{}},why:"Read the first listed file",confidence:"heuristic"}}:{},materialize:{tool:"ghGetFileContent",query:{owner:o.owner,repo:o.repo,path:String(o.path??""),type:"directory",...o.branch?{branch:o.branch}:{}},why:"Materialize this directory locally for exact line anchors, local search, or LSP",confidence:"exact"}},xe(o,g,h,v.GITHUB_VIEW_REPO_STRUCTURE,{rawResponse:u.response.rawResponseChars})}catch(s){return ze(s,o,"Failed to explore repository structure",v.GITHUB_VIEW_REPO_STRUCTURE)}},{toolName:v.GITHUB_VIEW_REPO_STRUCTURE,keysPriority:["resolvedBranch","branchFallback","summary","pagination","structure","error"]},e)}var $S=f(()=>{"use strict";pe();Ke();oi();De();Qr();Pn()});import{existsSync as qS}from"fs";import{delimiter as XF,dirname as JF,join as WS}from"path";function VS(){return process.platform==="win32"?"npm.cmd":"npm"}function ZF(){let e=JF(process.execPath);return WS(e,VS())}function eI(){return process.platform==="win32"?[]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin"]}function tI(){let e=(process.env.PATH??"").split(XF).map(t=>t.trim()).filter(Boolean);return[...new Set([...e,...eI()])]}function nI(){let e=ZF();if(qS(e))return{command:process.execPath,argsPrefix:[e]};let t=VS();for(let n of tI()){let r=WS(n,t);if(qS(r))return{command:r,argsPrefix:[]}}return{command:t,argsPrefix:[]}}async function Zn(e,t,n={}){if(!rI.includes(e))return{stdout:"",stderr:"",error:new Error(`Command '${e}' is not allowed`)};let r=Mb(t);if(!r.valid)return{stdout:"",stderr:"",error:new Error(`Invalid arguments: ${r.error}`)};let{timeout:o=3e4,cwd:i,env:s}=n,a=nI(),c=await Kn(a.command,[...a.argsPrefix,e,...t],{timeout:o,cwd:i,env:s,allowEnvVars:oI});return{stdout:c.stdout,stderr:c.stderr,exitCode:c.exitCode??void 0,error:c.error}}var rI,oI,Li=f(()=>{"use strict";_a();rI=["view","search","ping","config","whoami"],oI=[...Ri,...Fb]});async function ac(){if(sc)return sc;try{let e=await Zn("config",["get","registry","--no-workspaces"],{timeout:1e4});if(!e.error&&e.exitCode===0){let t=e.stdout.trim().replace(/\/+$/,"");if(t&&t.startsWith("http"))return sc=t,t}}catch{}return sc=$r,$r}var $r,sc,_i=f(()=>{"use strict";Li();$r="https://registry.npmjs.org",sc=null});function Ii(e){try{return new URL(e).host||e}catch{return e}}function KS(e,t=Date.now()){let n=Fi.get(Ii(e));if(!(!n||n.state==="closed")&&n.state==="open"){let r=t-n.openedAt;if(r<up)throw new dp(Ii(e),up-r);n.state="half-open"}}function pp(e){let t=Fi.get(Ii(e));t&&(t.failures=0,t.state="closed")}function YS(e,t=Date.now()){let n=Ii(e),r=Fi.get(n)??{failures:0,state:"closed",openedAt:0};r.state==="half-open"?(r.state="open",r.openedAt=t):(r.failures+=1,r.failures>=iI&&(r.state="open",r.openedAt=t)),Fi.set(n,r)}function XS(e,t=Date.now()){let n=Fi.get(Ii(e));return!n||n.state==="closed"?!1:n.state==="open"?t-n.openedAt<up:!1}var Fi,iI,up,dp,mp=f(()=>{"use strict";Fi=new Map,iI=5,up=3e4;dp=class extends Error{retryable=!1;host;retryAfterMs;constructor(t,n){super(`Circuit open for ${t}: too many recent failures \u2014 failing fast, retry in ~${Math.ceil(n/1e3)}s.`),this.name="CircuitOpenError",this.host=t,this.retryAfterMs=n}}});import{z as L}from"zod";var cc,sI,JS,aI,lc=f(()=>{"use strict";cc=L.looseObject({name:L.string(),version:L.string(),repository:L.union([L.string(),L.object({url:L.string().optional(),type:L.string().optional(),directory:L.string().optional()})]).optional(),main:L.string().optional(),module:L.string().optional(),type:L.string().optional(),exports:L.unknown().optional(),types:L.string().optional(),typings:L.string().optional(),description:L.string().optional(),keywords:L.array(L.string()).optional(),license:L.union([L.string(),L.object({type:L.string().optional()})]).optional(),homepage:L.string().optional(),author:L.union([L.string(),L.object({name:L.string().optional(),email:L.string().optional(),url:L.string().optional()})]).optional(),maintainers:L.array(L.object({name:L.string().optional(),email:L.string().optional()})).optional(),engines:L.record(L.string(),L.string()).optional(),dependencies:L.record(L.string(),L.string()).optional(),devDependencies:L.record(L.string(),L.string()).optional(),peerDependencies:L.record(L.string(),L.string()).optional(),time:L.record(L.string(),L.string().optional()).optional()}),sI=L.looseObject({package:L.looseObject({name:L.string().nullish(),version:L.string().nullish(),description:L.string().nullish(),links:L.looseObject({npm:L.string().nullish(),homepage:L.string().nullish(),repository:L.string().nullish()}).nullish()}),score:L.looseObject({final:L.number().nullish(),detail:L.looseObject({quality:L.number().nullish(),popularity:L.number().nullish(),maintenance:L.number().nullish()}).nullish()}).nullish()}),JS=L.looseObject({objects:L.array(sI),total:L.union([L.number(),L.string()]).optional()}),aI=L.union([L.string(),L.boolean(),L.number(),L.null(),L.record(L.string(),L.unknown())])});function ZS(e){let t=e.get("Retry-After");if(!t)return;let n=parseInt(t,10);return isNaN(n)?void 0:n}function lI(e,t,n,r){e&&Rn({limit_type:"primary",retry_after_seconds:ZS(r),api_method:t,api_url:n,provider:e})}function uI(e,t,n,r,o){e.body?.cancel?.().catch(()=>{});let i=new Error(qo.FETCH_HTTP_ERROR.message(e.status,e.statusText));return i.status=e.status,i.headers=e.headers,r&&e.status!==404&&Lg(r),e.status===429&&lI(o,t,n,e.headers),i.retryable=e.status===429||e.status===408||e.status>=500&&e.status<600,i}function dI(e,t,n,r){let o=Math.min(t*Math.pow(2,e-1),n);if(o+=Math.floor(Math.random()*t),r&&r.headers&&typeof r.headers.get=="function"){let i=ZS(r.headers);i!==void 0&&(o=Math.min(i*1e3,n))}return o}async function Mt(e,t={}){let{maxRetries:n=3,initialDelayMs:r=1e3,maxDelayMs:o=cI,headers:i={},method:s="GET",includeVersion:a=!1,signal:c,rateLimitProvider:l,packageRegistry:u}=t,d=e;if(a){let y=e.includes("?")?"&":"?";d=`${e}${y}version=${encodeURIComponent(Bn)}`}let m={"User-Agent":`Octocode-MCP/${Bn}`,...i},p=globalThis.fetch;if(!p)throw new Error(qo.FETCH_NOT_AVAILABLE.message);KS(d);let h,g=n+1;for(let y=1;y<=g;y++){if(c?.aborted)throw new Error("Request aborted");try{let b=await p(d,{method:s,headers:m,signal:c});if(!b.ok)throw uI(b,s,d,u,l);if(b.status===204)return pp(d),null;let S=await b.json();return pp(d),S}catch(b){let S=b;if(c?.aborted||b instanceof Error&&b.name==="AbortError")throw new Error("Request aborted");if(S&&S.retryable===!1)throw b;if(h=b instanceof Error?b:new Error(String(b)),y===g)break;let x=dI(y,r,o,S);await new Promise(k=>setTimeout(k,x))}}throw YS(d),new Error(qo.FETCH_FAILED_AFTER_RETRIES.message(g,h?.message||""))}var cI,uc=f(()=>{"use strict";Ks();at();Xs();mp();cI=6e4});function wn(e){return e.replace(/^git\+/,"").replace(/\.git$/,"")}function Ve(e){return e===void 0?0:j(e)}async function dc(e){try{let t=`${pI}/${encodeURIComponent(e)}`,n=await Mt(t,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3),packageRegistry:"npm"});return{downloads:typeof n?.downloads=="number"?n.downloads:void 0,rawResponseChars:Ve(n)}}catch{return{rawResponseChars:0}}}function eP(e){if(typeof e=="string")return[e];if(!e||typeof e!="object")return;let n=Object.entries(e).flatMap(([r,o])=>typeof o=="string"?[`${r}:${o}`]:o&&typeof o=="object"?Object.entries(o).filter(([,i])=>typeof i=="string").map(([i,s])=>`${r}:${i}:${s}`):[]).slice(0,12);return n.length>0?n:void 0}function tP(e,t){if(typeof e=="string"){let n=t?.replace(/^@[^/]+\//,"")??"";return[n?`${n} \u2192 ${e}`:e]}if(e&&typeof e=="object"){let n=Object.entries(e).filter(([,r])=>typeof r=="string").map(([r,o])=>`${r} \u2192 ${o}`).slice(0,8);return n.length>0?n:void 0}}function mI(e){return e.type==="module"||e.module?"module":e.main?"commonjs":e.types||e.typings?"types-only":"unknown"}function pc(e,t=!1,n="cli"){let r=null,o;e.repository&&(typeof e.repository=="string"?r=wn(e.repository):(e.repository.url&&(r=wn(e.repository.url)),e.repository.directory&&(o=e.repository.directory.replace(/^\.\//,""))));let i;if(e.time){let c=(e.version?e.time[e.version]:void 0)||e.time.modified;c&&(i=c)}let s={name:e.name,npmUrl:`https://www.npmjs.com/package/${encodeURIComponent(e.name)}`,repoUrl:r,version:e.version||"latest",mainEntry:e.main||null,moduleEntry:e.module||null,typeDefinitions:e.types||e.typings||null,packageType:mI(e),...o?{repositoryDirectory:o}:{},...eP(e.exports)?{exports:eP(e.exports)}:{},...tP(e.bin,e.name)?{bin:tP(e.bin,e.name)}:{},lastPublished:i,source:n};return e.description&&(s.description=e.description),e.license&&(s.license=typeof e.license=="string"?e.license:e.license.type),t&&(e.author&&(typeof e.author=="string"?s.author=e.author:e.author.name&&(s.author=e.author.name)),e.keywords&&e.keywords.length>0&&(s.keywords=e.keywords),e.homepage&&(s.homepage=e.homepage),e.engines&&Object.keys(e.engines).length>0&&(s.engines=e.engines),e.dependencies&&Object.keys(e.dependencies).length>0&&(s.dependencies=e.dependencies),e.peerDependencies&&Object.keys(e.peerDependencies).length>0&&(s.peerDependencies=e.peerDependencies)),s}function fI(e){return typeof e.links?.repository=="string"?wn(e.links.repository):typeof e.repository=="string"?wn(e.repository):typeof e.repository?.url=="string"?wn(e.repository.url):null}function nP(e){if(!e.name)return null;let t=(e.links?.npm??"")||`https://www.npmjs.com/package/${encodeURIComponent(e.name)}`,n=e.links?.homepage??void 0;return{name:e.name,npmUrl:t,repoUrl:fI(e),version:e.version??"unknown",source:"cli",...e.description?{description:e.description}:{},...n?{homepage:n}:{},...e.keywords&&e.keywords.length>0?{keywords:e.keywords}:{}}}function fp(e){return e.startsWith("@")?"@"+e.slice(1).replace("/","%2F"):e}function rP(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=Number.parseInt(e,10);if(Number.isFinite(n))return n}return t}var pI,hp=f(()=>{"use strict";uc();ue();pI="https://api.npmjs.org/downloads/point/last-week"});function gp(e){if(!e)return!1;let t=e.toLowerCase();return t.includes("fetch failed")||t.includes("failed to fetch")||t.includes("network")||t.includes("econnrefused")||t.includes("enotfound")||t.includes("etimedout")||t.includes("socket hang up")||t.includes("connect timeout")||t.includes("command timeout")||t.includes("circuit open")||t.includes("circuit breaker")}async function yp(e){try{let t=await ac(),n=fp(e),r=`${t}/${n}`,o=AbortSignal.timeout(8e3);try{let s=await Mt(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/vnd.npm.install-v1+json"},signal:o,packageRegistry:"npm"}),a=Ve(s);if(s?.modified)return{lastPublished:s.modified,rawResponseChars:a}}catch{}let i=await Mt(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:o,packageRegistry:"npm"});return{lastPublished:i?.time?.modified||void 0,rawResponseChars:Ve(i)}}catch{return{rawResponseChars:0}}}async function fc(e,t,n){let[r,o]=await Promise.all([dc(e),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):yp(e)]);return r.downloads!==void 0&&(t.weeklyDownloads=r.downloads),o.lastPublished&&!t.lastPublished&&(t.lastPublished=o.lastPublished),{pkg:t,rawResponseChars:n+r.rawResponseChars+o.rawResponseChars}}function mc(e){let t=e.toLowerCase();return t.includes("404")||t.includes("not found")||t.includes("e404")}async function gI(e,t){try{let n=await Zn("view",[e,"--json"],{timeout:hI});if(!n)return{pkg:null,rawResponseChars:0};if(n.error||n.exitCode!==0){let c=n.error?.message||n.stderr||`npm exited ${n.exitCode}`;return{pkg:null,...mc(c)?{}:{errorDetail:c},rawResponseChars:Ve(n.stdout)}}let r=n.stdout.trim();if(!r||r==="undefined")return{pkg:null,rawResponseChars:0};let o;try{o=JSON.parse(r)}catch{return{pkg:null,errorDetail:"Invalid npm view JSON output",rawResponseChars:r.length}}let i=Ve(o),s=cc.safeParse(o);return s.success?{pkg:pc(s.data,t,"cli"),rawResponseChars:i}:{pkg:null,errorDetail:"Invalid npm view response format",rawResponseChars:i}}catch(n){let r=n instanceof Error?n.message:String(n);return{pkg:null,...mc(r)?{}:{errorDetail:r},rawResponseChars:0}}}async function yI(e,t){try{let n=await ac(),r=fp(e),o=`${n}/${r}/latest`,i;try{i=await Mt(o,{maxRetries:1,initialDelayMs:500,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(l){let u=l instanceof Error?l.message:String(l);return u.includes("404")||u.toLowerCase().includes("not found")?{pkg:null,rawResponseChars:0}:{pkg:null,errorDetail:u,rawResponseChars:0}}let s=Ve(i);if(!i||typeof i!="object")return{pkg:null,rawResponseChars:s};let a=cc.safeParse(i);return a.success?{pkg:pc(a.data,t,"registry"),rawResponseChars:s}:{pkg:null,errorDetail:"Invalid npm registry response format",rawResponseChars:s}}catch(n){let r=n instanceof Error?n.message:String(n);return{pkg:null,...mc(r)?{}:{errorDetail:r},rawResponseChars:0}}}function bI(e){return[`https://cdn.jsdelivr.net/npm/${e}/package.json`,`https://unpkg.com/${e}/package.json`]}async function bp(e,t){let n=0,r;for(let o of bI(e)){let i;try{i=await Mt(o,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3)})}catch(c){let l=c instanceof Error?c.message:String(c);mc(l)||(r=l);continue}if(n+=Ve(i),!i||typeof i!="object")continue;let s=cc.safeParse(i);if(!s.success){r="Invalid npm CDN package.json response format";continue}return{pkg:pc(s.data,t,"cdn"),rawResponseChars:n}}return{pkg:null,...r?{errorDetail:r}:{},rawResponseChars:n}}async function hc(e,t=!1){let[n,r]=await Promise.allSettled([gI(e,t),yI(e,t)]),o=n.status==="fulfilled"?n.value:{pkg:null,rawResponseChars:0},i=r.status==="fulfilled"?r.value:{pkg:null,rawResponseChars:0},s=o.pkg?o:i.pkg?i:null;return s?.pkg?fc(e,s.pkg,s.rawResponseChars):{pkg:null,errorDetail:o.errorDetail||i.errorDetail,rawResponseChars:o.rawResponseChars+i.rawResponseChars}}async function oP(e,t,n=!1){let{pkg:r,errorDetail:o,rawResponseChars:i}=await hc(e,t);if(!r){if(o){let s=gp(o);if(s&&n){let a=await bp(e,t);if(a.pkg){let c=await fc(e,a.pkg,a.rawResponseChars);return{packages:c.pkg?[c.pkg]:[],totalFound:c.pkg?1:0,rawResponseChars:i+c.rawResponseChars}}}return{error:`NPM view failed for '${e}': ${o}`,rawResponseChars:i,hints:s?["npm registry is unreachable.","Use `ghSearchRepos` to find the source repo directly by package name or domain terms."]:["Ensure npm is installed and available in PATH","Check package name for typos",`Try: npm view ${e} --json`]}}return{packages:[],totalFound:0,rawResponseChars:i}}return{packages:[r],totalFound:1,rawResponseChars:i}}var hI,Rp=f(()=>{"use strict";Li();uc();lc();_i();hp();hI=3e3});async function RI(e,t,n,r=0){let o=Math.max(t+r,t),i=await Zn("search",[e,"--json","--searchlimit",String(o)],{timeout:8e3});if(!i)return{error:"NPM CLI search unavailable",rawResponseChars:0};if(i.error||i.exitCode!==0)return{error:`NPM CLI search failed: ${i.error?.message||i.stderr||`npm exited ${i.exitCode}`}`,rawResponseChars:Ve(i.stdout)};let s=i.stdout.trim();if(!s)return{packages:[],totalFound:0,rawResponseChars:0};let a;try{a=JSON.parse(s)}catch{return{error:"Invalid npm search JSON output",rawResponseChars:s.length}}let c=Ve(a);if(!Array.isArray(a))return{error:"Invalid npm search response format",rawResponseChars:c};let u=[...a].sort((h,g)=>{let y=h?.score?.final??0;return(g?.score?.final??0)-y}).slice(r,r+t),d=await Promise.all(u.map(async h=>{if(!h||typeof h!="object")return null;let g=h;if(!g.name)return null;if(n){let y=await hc(g.name,!0);if(y.pkg)return y}return{pkg:nP(g),rawResponseChars:0}})),m=d.map(h=>h?.pkg).filter(h=>!!h),p=d.reduce((h,g)=>h+(g?.rawResponseChars??0),0);return{packages:m,totalFound:a.length,rawResponseChars:c+p}}async function SI(e,t,n,r=0){try{let o=r>0?`&from=${r}`:"",i=`${$r}/-/v1/search?text=${encodeURIComponent(e)}&size=${t}${o}`,s;try{s=await Mt(i,{maxRetries:1,initialDelayMs:500,signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(h){return{error:`NPM registry search failed: ${h instanceof Error?h.message:String(h)}`,hints:["Check package name for typos","Try searching with a simpler term"]}}let a=Ve(s);if(!s||typeof s!="object")return{packages:[],totalFound:0,rawResponseChars:a};let c=JS.safeParse(s);if(!c.success)return{error:`Invalid npm registry search response format: ${c.error.issues.map(g=>g.message).join("; ")}`,rawResponseChars:a,hints:["Try a different search term","Try itemsPerPage=1 for an exact package lookup"]};let u=[...c.data.objects].sort((h,g)=>{let y=h.score?.final??0;return(g.score?.final??0)-y}).map(h=>h.package).filter(h=>typeof h.name=="string"&&h.name.length>0).slice(0,t),d=await Promise.all(u.map(async h=>{if(n){let g=await hc(h.name,!0);if(g.pkg)return g}return{pkg:{name:h.name,npmUrl:(h.links?.npm??"")||`https://www.npmjs.com/package/${encodeURIComponent(h.name)}`,repoUrl:h.links?.repository&&typeof h.links.repository=="string"?wn(h.links.repository):null,version:h.version??"unknown",source:"registry",...h.description?{description:h.description}:{},...h.links?.homepage?{homepage:h.links.homepage}:{}},rawResponseChars:0}})),m=d.map(h=>h.pkg).filter(h=>!!h),p=d.reduce((h,g)=>h+g.rawResponseChars,0);return{packages:m,totalFound:rP(c.data.total,m.length),rawResponseChars:a+p}}catch(o){return{error:`NPM registry search failed: ${o instanceof Error?o.message:String(o)}`,hints:["Check package name for typos","Try searching with a simpler term","Ensure npm registry is accessible"]}}}async function Sp(e,t){let n="https://api.npms.io/v2/search",r="octocode-mcp/1.0 (+https://github.com/bgauryy/octocode-mcp)";try{let o=`${n}?q=${encodeURIComponent(e)}&size=${t}`,i;try{i=await Mt(o,{maxRetries:1,initialDelayMs:500,headers:{Accept:"application/json","User-Agent":r},signal:AbortSignal.timeout(8e3)})}catch(c){return{error:`Web search failed: ${c instanceof Error?c.message:String(c)}`}}if(!i||typeof i!="object")return{packages:[],totalFound:0,rawResponseChars:Ve(i)};let s=i;if(!Array.isArray(s.results))return{packages:[],totalFound:0,rawResponseChars:Ve(i)};let a=s.results.slice(0,t).map(c=>c.package).filter(c=>typeof c?.name=="string"&&c.name.length>0).map(c=>({name:c.name,npmUrl:c.links?.npm??`https://www.npmjs.com/package/${encodeURIComponent(c.name)}`,repoUrl:c.links?.repository&&typeof c.links.repository=="string"?wn(c.links.repository):null,version:c.version??"unknown",source:"web",...c.description?{description:c.description}:{},...c.links?.homepage?{homepage:c.links.homepage}:{}}));return{packages:a,totalFound:typeof s.total=="number"?s.total:a.length,rawResponseChars:Ve(i)}}catch(o){return{error:`Web search failed: ${o instanceof Error?o.message:String(o)}`}}}async function Pp(e,t,n,r=0){try{let o=await RI(e,t,n,r);if(!("error"in o))return o}catch{}return SI(e,t,n,r)}async function Cp(e){if(e.packages.length===0)return e;let t=e.packages[0];if(t.weeklyDownloads!==void 0&&t.lastPublished)return e;let[n,r]=await Promise.all([t.weeklyDownloads!==void 0?Promise.resolve({downloads:void 0,rawResponseChars:0}):dc(t.name),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):yp(t.name)]),o={...t};return n.downloads!==void 0&&(o.weeklyDownloads=n.downloads),r.lastPublished&&(o.lastPublished=r.lastPublished),{...e,packages:[o,...e.packages.slice(1)]}}var iP=f(()=>{"use strict";Li();uc();lc();_i();hp();Rp()});function Mi(e){return e.startsWith("@")&&e.includes("/")?!0:e.includes(" ")?!1:/^[a-z0-9][a-z0-9._-]*$/i.test(e)}function sP(e){return e.replace(/^@/,"").replace(/[/_-]/g," ").replace(/\s+/g," ").trim()}async function xp(e,t,n,r=0){let o=ke("npm-search",{name:e,limit:t,metadata:n,from:r});return Qe(o,async()=>{if(XS($r)){if(r===0&&t===1&&Mi(e)){let u=await bp(e,n);if(u.pkg){let d=await fc(e,u.pkg,u.rawResponseChars);return{packages:d.pkg?[d.pkg]:[],totalFound:d.pkg?1:0,rawResponseChars:d.rawResponseChars}}}let l=await Sp(e,t);return!("error"in l)&&l.packages.length>0?l:{error:"npm registry circuit open and web search returned no results.",hints:["Use `ghSearchRepos` to find the source repo directly."]}}if(r===0&&Mi(e)){let l=await oP(e,n,t===1);if("error"in l){if(!gp(l.error))return l}else if(l.packages.length>0||t===1)return l}let s=await Pp(e,t,n,r);if(!("error"in s)&&s.packages.length>0)return Cp(s);let a=sP(e);if(a!==e){let l=await Pp(a,t,n,r);if(!("error"in l)&&l.packages.length>0)return Cp(l)}let c=await Sp(e,t);return!("error"in c)&&c.packages.length>0?c:"error"in s?{...s,hints:["npm registry and web search (npms.io) are both unreachable.","Use `ghSearchRepos` to find the source repo directly by package name or domain terms."]}:s},{shouldCache:i=>!("error"in i||"totalFound"in i&&i.totalFound===0)})}var aP=f(()=>{"use strict";Li();lt();mp();lc();_i();Rp();iP()});var cP=f(()=>{"use strict";_i();aP()});async function lP(e){let t=Mi(e.name),n=e.itemsPerPage??(t?1:10),r=Math.max(0,((e.page??1)-1)*n);return xp(e.name,n,!0,r)}var uP=f(()=>{"use strict";cP()});function CI(e){return"error"in e}function gc(e){return"npmUrl"in e}function xI(e){return gc(e)&&e.path?e.path:e.name}function wI(e){return gc(e)?e.repoUrl:e.repository}function TI(e){if(!e)return;let t=e.replace(/^\.\//,"").replace(/^\//,"");return t.length>0?t:void 0}function EI(e){if(!e)return;let t=e.trim();if(!t)return;t=t.replace(/^git\+/,"");let n=i=>i.replace(/\.git$/,""),r=t.match(/^[^@/]+@([^:/]+):(.+)$/);if(r&&r[1]&&r[2])return n(`https://${r[1]}/${r[2]}`);let o=t.match(/^(?:ssh|git|https?):\/\/(.+)$/);if(o&&o[1]){let i=o[1].replace(/^[^@/]+@/,"");return n(`https://${i}`)}return n(t)}function wp(e){if(!e)return;let t=e.match(/^https:\/\/github\.com\/([^/]+)\/([^/#?]+)/i);if(!(!t||!t[1]||!t[2]))return{owner:t[1],repo:t[2]}}function dP(e,t){let n=wp(e);if(!n)return;let{owner:r,repo:o}=n;return{viewRepoStructure:{tool:"ghViewRepoStructure",query:{owner:r,repo:o,...t?{path:t}:{}}},latestRelease:{tool:"ghHistoryResearch",query:{type:"releases",owner:r,repo:o},why:"npm latest can diverge from the repo release line \u2014 verify against the repo releases/tags"},searchCode:{tool:"ghSearchCode",query:{owner:r,repo:o}},cloneRepo:{tool:"ghCloneRepo",query:{owner:r,repo:o,...t?{sparsePath:t}:{}}}}}function kI(e){let t=xI(e),n=EI(wI(e)),r={name:t};gc(e)&&(e.version&&e.version!=="unknown"&&(r.version=e.version),e.description&&(r.description=e.description),e.license&&(r.license=e.license),typeof e.weeklyDownloads=="number"&&(r.downloads=e.weeklyDownloads)),n&&(r.repository=n);let o=TI(gc(e)?e.repositoryDirectory:void 0);o&&(r.repositoryDirectory=o);let i=dP(n,o);if(i&&(r.next=i),r.version&&wp(n)){let s=`npm version ${r.version} is the registry's latest publish and may not correspond to a release/tag in the linked repository \u2014 verify against the repo's releases or tags before citing it as the repo's latest release.`;r.warnings=[s],r.diagnostics=[{level:"warning",code:"npmRepoTagDivergence",message:s}]}return r}function OI(e){if(e.length<=1)return{packages:e};let t={},n=new Map,r=1,o=e.map(i=>{if(!i.repository)return i;let s=wp(i.repository);if(!s)return i;let a=`${i.repository}\0${i.repositoryDirectory??""}`,c=n.get(a);c||(c=`r${r++}`,n.set(a,c),t[c]={repository:i.repository,owner:s.owner,repo:s.repo,...i.repositoryDirectory?{repositoryDirectory:i.repositoryDirectory}:{},next:dP(i.repository,i.repositoryDirectory)});let{repository:l,repositoryDirectory:u,next:d,...m}=i;return{...m,repositoryId:c}});return Object.keys(t).length?{packages:o,repositories:t}:{packages:e}}function vI(e,t,n,r){let o=Math.max(1,e.page??1),i=r?10:1,s=r&&n>=i,a=Math.max(1,Math.ceil(t/i)),c=s||o<a,l=s&&o>=a?o+1:a;return{currentPage:o,totalPages:l,perPage:i,totalFound:t,returned:n,hasMore:c,...c?{nextPage:o+1}:{}}}async function pP(e){return me(e.queries,async t=>{try{if(!t.packageName)return N("Package name is required for package search",t);let n=await lP({name:t.packageName,page:t.page,mainResearchGoal:t.mainResearchGoal,researchGoal:t.researchGoal,reasoning:t.reasoning});if(CI(n))return N(n.error,t,{rawResponse:n});let r=n.packages,o=r.map(kI),i=o.length>0,s=r.length>1||n.totalFound>1,a=vI(t,n.totalFound,o.length,s),l={...OI(o),pagination:a};return xe(t,l,i,v.PACKAGE_SEARCH,{rawResponse:n.rawResponseChars??n})}catch(n){return N(n,t,{toolName:v.PACKAGE_SEARCH})}},{toolName:v.PACKAGE_SEARCH,keysPriority:["packages","pagination","error"]},e)}var mP=f(()=>{"use strict";uP();Ke();De();pe()});import{redactPath as Di}from"@octocodeai/octocode-engine/pathUtils";var fP=f(()=>{"use strict"});var mt,yc=f(()=>{"use strict";Oa();Wn();fP();mt={pathValidationFailed:(e,t,n)=>new je($.PATH_VALIDATION_FAILED,t||`Path validation failed: ${Di(e,n)}`,{path:e}),fileAccessFailed:(e,t,n)=>{let r=Di(e,n),o=`Cannot access file: ${r}`,i=t?.code;return i==="ENOENT"?o=`File not found: ${r}. Verify the path exists using localFindFiles.`:i==="EACCES"?o=`Permission denied: ${r}. Check file permissions.`:i==="EISDIR"?o=`Path is a directory: ${r}. Use localViewStructure instead.`:i==="ENOTDIR"?o=`Invalid path: ${r}. A component of the path is not a directory.`:i==="ENAMETOOLONG"&&(o=`Path too long: ${r}`),new je($.FILE_ACCESS_FAILED,o,{path:e,errorCode:i},t)},fileReadFailed:(e,t,n)=>new je($.FILE_READ_FAILED,`Failed to read file: ${Di(e,n)}`,{path:e,errorCode:t?.code},t),fileTooLarge:(e,t,n)=>new je($.FILE_TOO_LARGE,(()=>{let r=o=>Number.isInteger(o)?`${o}KB`:`${o.toFixed(1)}KB`;return`File too large: ${r(t)} (limit: ${r(n)})`})(),{path:e,sizeKB:t,limitKB:n}),binaryFileUnsupported:e=>new je($.BINARY_FILE_UNSUPPORTED,`Binary file unsupported: ${Di(e)}. Use localSearchCode to grep embedded strings.`,{path:e}),outputTooLarge:(e,t)=>new je($.OUTPUT_TOO_LARGE,`Output too large: ${e} (limit: ${t})`,{size:e,limit:t}),commandNotAvailable:(e,t)=>new je($.COMMAND_NOT_AVAILABLE,`Command '${e}' is not available. ${t||"Please install it and ensure it is in your PATH."}`,{command:e,installHint:t}),commandExecutionFailed:(e,t,n)=>new je($.COMMAND_EXECUTION_FAILED,n?`Command '${e}' failed: ${n}`:`Command execution failed: ${e}`,{command:e,stderr:n},t),toolExecutionFailed:(e,t)=>new je($.TOOL_EXECUTION_FAILED,`Tool execution failed: ${e}`,{toolName:e},t)}});import hP from"path";import{pathValidator as AI}from"@octocodeai/octocode-engine/pathValidator";import{getConfigSync as LI}from"@octocodeai/config";function ft(e,t){if(!e.path?.trim()){let s=mt.pathValidationFailed("","path is required");return{isValid:!1,errorResult:N(s,e,{toolName:t})}}let n=process.env.WORKSPACE_ROOT?.trim()||LI().local.workspaceRoot||process.cwd(),r=e.path.replace(/^file:\/\//,""),o=hP.isAbsolute(r)?r:hP.resolve(n,r),i=AI.validate(o);if(!i.isValid){let s=mt.pathValidationFailed(e.path,i.error);return{isValid:!1,errorResult:N(s,e,{toolName:t,extra:{cwd:n,resolvedPath:o}})}}return{isValid:!0,sanitizedPath:i.sanitizedPath??o}}var Vt=f(()=>{"use strict";yc();_d()});var Dt,Ni=f(()=>{"use strict";Dt={MCP_MAX_TOKENS:25e3,CHARS_PER_TOKEN:4,MAX_FETCH_CONTENT_CHARS:5e4,MAX_OUTPUT_SIZE_BYTES:10*1024*1024,LARGE_FILE_THRESHOLD_KB:100,MAX_ENTRIES_BEFORE_PAGINATION:100,MAX_FILES_DEFAULT:1e3,DEFAULT_ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200,MAX_LIST_ITEMS_DETAILED:100,MAX_LIST_ITEMS_SIMPLE:200,MAX_ARCHIVE_ENTRIES_PER_PAGE:100,MAX_DIR_ENTRIES_PER_PAGE:100,MAX_DIR_ENTRIES_TREE:1e3,DEFAULT_EXEC_TIMEOUT_MS:3e4,DEFAULT_MAX_MATCHES_PER_FILE:3,DEFAULT_CONTEXT_LINES:5,DEFAULT_MATCH_CONTENT_LENGTH:500,MAX_MATCH_CONTENT_LENGTH:800,DEFAULT_MATCHES_PER_PAGE:10,MAX_MATCHES_PER_PAGE:100,DEFAULT_FILES_PER_PAGE:20,MAX_FILES_PER_PAGE:50,MAX_RIPGREP_DIRECTORY_SIZE_MB:100,MAX_FILE_COUNT_FOR_SEARCH:1e3,ESTIMATED_AVG_FILE_SIZE_BYTES:50*1024,LARGE_RESULT_BYTES_HINT:1.5*1024*1024,BINARY_MAX_BYTES:10*1024,BINARY_DEFAULT_HEX_LINES:20,BINARY_DEFAULT_MIN_STRING_LENGTH:6,MAX_ARCHIVE_FILES:1e3,DEFAULT_ARCHIVE_MAX_FILES:200,GLOBAL_MEMORY_LIMIT_BYTES:100*1024*1024,PER_OPERATION_MEMORY_LIMIT_BYTES:10*1024*1024,MEMORY_RESERVATION_TIMEOUT_MS:300*1e3,TOKEN_CRITICAL_THRESHOLD:5e4,TOKEN_HIGH_THRESHOLD:25e3,TOKEN_MODERATE_THRESHOLD:1e4,TOKEN_NOTICE_THRESHOLD:2500}});function gP(e,t){return n=>t}var yP=f(()=>{"use strict"});import{open as _I,readFile as FI,stat as II}from"fs/promises";function Tp(e,t){let n=Math.abs(t-e);return n>=50&&n/e>=.02?{sourceChars:e,sourceBytes:t}:{sourceChars:e}}function Ep(e,t,n){return{...e,...Tp(t,n)}}function bP(e){let t=e.fullContent===!0,n=e.matchString!==void 0,r=e.startLine!==void 0||e.endLine!==void 0;if(e.minify==="symbols"&&(n||r))return{status:"error",error:'minify:"symbols" returns a whole-file signature skeleton and cannot be combined with matchString/startLine/endLine \u2014 remove the line/match constraints, or use minify:"standard" (or "none") to extract a specific range.'};if(t&&n)return{status:"error",error:"Cannot use fullContent with matchString \u2014 these are mutually exclusive extraction methods. Choose ONE: fullContent=true to read the entire file, OR matchString to extract matching sections, OR startLine+endLine for a known line range."};if(t&&r)return{status:"error",error:"Cannot use fullContent with startLine/endLine \u2014 these are mutually exclusive extraction methods. Choose ONE: fullContent=true to read the entire file, OR startLine+endLine for a known line range, OR matchString to extract matching sections."};if(n&&r)return{status:"error",error:"Cannot use matchString with startLine/endLine \u2014 these are mutually exclusive extraction methods. Choose ONE: matchString to extract matching sections, OR startLine+endLine for a known line range, OR fullContent=true to read the entire file."};let o=e.startLine!==void 0,i=e.endLine!==void 0;return o&&!i?{status:"error",error:`startLine=${e.startLine} provided without endLine \u2014 both are required for line-range extraction.`}:i&&!o?{status:"error",error:`endLine=${e.endLine} provided without startLine \u2014 both are required for line-range extraction.`}:null}async function RP(e,t){try{return{fileStats:await II(t)}}catch(n){let r=mt.fileAccessFailed(e.path,n instanceof Error?n:void 0);return{errorResult:N(r,e,{toolName:v.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function SP(e,t){return t>Dt.LARGE_FILE_THRESHOLD_KB&&!e.matchString&&!e.startLine&&!e.fullContent}function PP(e,t,n){let r=mt.fileTooLarge(e.path,n,Dt.LARGE_FILE_THRESHOLD_KB);return N(r,e,{toolName:v.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}function CP(e,t){let n=mt.binaryFileUnsupported(e.path);return N(n,e,{toolName:v.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}async function xP(e){let n=Buffer.alloc(8192),r;try{r=await _I(e,"r");let{bytesRead:o}=await r.read(n,0,8192,0);if(o===0)return!1;let i=n.subarray(0,o);if(i.includes(0))return!0;try{new TextDecoder("utf-8",{fatal:!0}).decode(i)}catch{return!0}let s=0,a=0,c=0;for(;c<i.length;){let l=i[c];if(l===27&&c+1<i.length&&i[c+1]===91){for(c+=2;c<i.length&&(i[c]<64||i[c]>126);)c+=1;c+=1;continue}s+=1;let u=l===9||l===10||l===13;l<32&&!u&&(a+=1),c+=1}return s>0&&a/s>.05}catch{return!1}finally{await r?.close().catch(gP("binary sample handle close",void 0))}}async function wP(e,t){try{return{content:await FI(t,"utf-8")}}catch(n){let r=n instanceof Error?n:void 0,i=r?.code==="EISDIR"?mt.fileAccessFailed(e.path,r):mt.fileReadFailed(e.path,r);return{errorResult:N(i,e,{toolName:v.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function TP(e,t){return{status:"empty",errorCode:$.NO_MATCHES,totalLines:t}}var bc=f(()=>{"use strict";Ni();pe();Vt();yc();Wn();yP()});function MI(e,t,n){let r=oa(t,e.matchString,e.contextLines??5,e.matchStringIsRegex??!1,e.matchStringCaseSensitive??!1);if(r.lines.length===0)return{isPartial:!1,earlyResult:TP(e,n)};let o=r.lines.join(`
33
- `),i=e.contextLines??5,s=r.matchingLines.slice(0,10).join(", "),a=r.matchingLines.length>10?` (+${r.matchingLines.length-10} more)`:"",c=`Found ${r.matchCount} occurrence${r.matchCount===1?"":"s"} of "${e.matchString}" on line${r.matchingLines.length===1?"":"s"} ${s}${a} \u2014 all shown as ${r.matchRanges.length} slice${r.matchRanges.length===1?"":"s"}, \xB1${i} lines of context each; these lines are lineHint anchors for lspGetSemantics.`,l,u,d;if(r.matchRanges.length>0){let m=r.matchRanges[0],p=r.matchRanges[r.matchRanges.length-1];m&&p&&(l=m.start,u=p.end,r.matchRanges.length>1&&(d=r.matchRanges))}return{resultContent:o,isPartial:!0,actualStartLine:l,actualEndLine:u,matchRanges:d,warnings:[c]}}function DI(e){return e.startLine!==void 0&&e.endLine!==void 0}function NI(e,t,n){let r=e.startLine,o=e.endLine,i=Math.max(1,r),s=Math.min(o,n);if(o<r)return{isPartial:!1,earlyResult:{status:"empty",totalLines:n,errorCode:$.NO_MATCHES,warnings:[`startLine ${r} is greater than endLine ${o} \u2014 startLine must be \u2264 endLine`,`Use startLine=1 to ${n} with startLine \u2264 endLine for a valid range`]}};if(i>n)return{isPartial:!1,earlyResult:{status:"empty",totalLines:n,errorCode:$.NO_MATCHES,warnings:[`Requested startLine ${r} exceeds file length (${n} lines)`,`Use startLine=1 to ${n} for valid range`]}};let a=[];return o>n&&a.push(`Requested endLine ${o} adjusted to ${n} (file end)`),{resultContent:t.slice(i-1,s).join(`
34
- `),isPartial:!0,actualStartLine:i,actualEndLine:s,warnings:a}}function EP(e,t,n){let r=t.split(`
35
- `),o=_t(t);return e.matchString?MI(e,r,o):DI(e)?NI(e,r,o):{resultContent:t,isPartial:!1}}var kP=f(()=>{"use strict";Ku();_r();Wn();bc()});async function OP(e,t,n){let r=String(t.path),o=t.charLength,i=t.charOffset??0,s=o,a=!1,c,l=i;s===void 0&&!t.fullContent&&e.length>n&&(s=n,a=!0,c=`Auto-paginated: Content (${e.length} chars) exceeds ${n} char limit`);let u="char-limit",d=s;if(s!==void 0){let g=await da(e,l,s,r);u=g.chunkMode,d=g.length}let m=ca(e,l,d,s!==void 0?{pageSize:s}:void 0),p;if(m.hasMore&&u==="char-limit"&&la(m.paginatedContent)){let g=m.charOffset+m.charLength;p=await ua(e,g,r)}let h=_s("localGetFileContent",{path:r,charLength:s??m.charLength,minify:t.minify},m);return{windowedContent:m.paginatedContent,pagination:m,effectiveCharLength:s,explicitCharOffset:i,autoPaginated:a,autoPaginateWarning:c,chunkMode:u,nextBlockChar:p,next:h,showPagination:s!==void 0||i>0||a}}async function vP(e,t,n,r,o,i=!0,s=i?"standard":"none"){if(!t.resultContent||t.resultContent.trim().length===0)return{status:"empty",totalLines:r};let a=[...t.warnings??[]],c=String(e.path),l=i?D.applyContentViewMinification(t.resultContent,c):t.resultContent,u=await OP(l,e,o);u.autoPaginateWarning&&a.push(u.autoPaginateWarning);let d=t.isPartial||u.pagination.hasMore;return{path:c,content:u.windowedContent,contentView:s,...d&&{isPartial:d},totalLines:r,...t.actualStartLine!==void 0&&t.actualEndLine!==void 0&&{startLine:t.actualStartLine,endLine:t.actualEndLine,...t.matchRanges!==void 0&&{matchRanges:t.matchRanges}},...n.mtime&&{modified:n.mtime.toISOString()},...u.showPagination&&{pagination:{...Ju(u.pagination),chunkMode:u.chunkMode,...u.nextBlockChar!==void 0&&{nextBlockChar:u.nextBlockChar}}},...u.next?{next:u.next}:{},...a.length>0&&{warnings:a}}}async function kp(e,t,n,r,o,i,s){let a=await OP(t,e,s),c=[...a.autoPaginateWarning?[a.autoPaginateWarning]:[],...i?[i]:[]];return{path:e.path,content:a.windowedContent,contentView:"symbols",...a.pagination.hasMore&&{isPartial:!0},totalLines:n,...Tp(r,o),...a.showPagination&&{pagination:{...Ju(a.pagination),chunkMode:a.chunkMode,...a.nextBlockChar!==void 0&&{nextBlockChar:a.nextBlockChar}}},...a.next?{next:a.next}:{},...c.length>0&&{warnings:c}}}function AP(e,t){return typeof e.content!="string"?e:{...e,contentView:t}}var LP=f(()=>{"use strict";Ee();Zu();ed();Be();bc()});import{ContentSanitizer as GI}from"@octocodeai/octocode-engine/contentSanitizer";async function Rc(e){let t=zn();try{let n=ft(e,v.LOCAL_FETCH_CONTENT);if(!n.isValid)return n.errorResult;let r=bP(e);if(r)return r;let o=n.sanitizedPath,i=String(e.path),{fileStats:s,errorResult:a}=await RP(e,o);if(a||!s)return a;let c=typeof s.size=="bigint"?Number(s.size):s.size,l=c/1024;if(await xP(o))return W(CP(e,o),c);if(SP(e,l))return W(PP(e,o,l),c);let{content:u,errorResult:d}=await wP(e,o);if(d||u===void 0)return d;let m=GI.sanitizeContent(u,i),p=m.content,h=p.length,g=Buffer.byteLength(p,"utf-8"),y=m.hasSecrets?`Secrets detected and redacted: ${m.secretsDetected.join(", ")}`:void 0,b=e.minify,S=b==="standard"||b==="symbols",x=S?"standard":"none",k;if(b==="symbols"){let M=D.extractSignatures(p,i);if(M===null){let A=ia(p,i);if(A!==null)return W(await kp(e,A,_t(p),h,g,y,t),h);k=`minify:"symbols" is not supported for this file type (${i.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(M!==null){let A=_t(p),q=D.applyContentViewMinification(M,i);return W(await kp(e,q,A,h,g,y,t),h)}}let E=_t(p),_=EP(e,p,t),w=M=>{let A=[...k?[k]:[],...y?[y]:[]];if(A.length===0)return M;let q=M.warnings??[];return{...M,warnings:[...q,...A]}};if(_.earlyResult){let M=_.earlyResult.content,A=S&&typeof M=="string"?{..._.earlyResult,content:D.applyContentViewMinification(M,i)}:_.earlyResult;return W(Ep(w(Op(AP(A,x),e,E)),h,g),h)}let G=await vP(e,_,s,E,t,S,x);return W(Ep(w(Op(G,e,E)),h,g),h)}catch(n){return N(n,e,{toolName:v.LOCAL_FETCH_CONTENT})}}function Op(e,t,n){return e}var Sc=f(()=>{"use strict";Ee();_r();aa();pe();Vt();ue();sa();bc();kP();LP()});async function _P(e){let{queries:t}=e;return me(t||[],async n=>ut({toolName:v.LOCAL_FETCH_CONTENT,query:n,contextMessage:"localGetFileContent execution failed",execute:async()=>{let r=ot(Mn,n);return r.ok===!1?r.error:await Rc(r.data)}}),{toolName:v.LOCAL_FETCH_CONTENT,finalize:HI()},e)}function HI(){return({results:e})=>{let t={results:QI(e)},n=Ea(t.results);n&&(t.base=n);let r=ka(t.results);return r&&(t.shared=r),{structuredContent:xt(t),text:jI(t),isError:t.results.length>0&&t.results.every(o=>o.status==="error")}}}function QI(e){return e.map(t=>({...t,data:structuredClone(t.data)}))}function jI(e){let t=[];e.base&&t.push(`base: ${e.base}`,"");for(let n of e.results){let r=n.data,o=typeof r.content=="string"?r.content:void 0,i={...r};delete i.content,t.push(`result: ${n.id}${n.status?` (${n.status})`:""}`);let s=qn({data:i},["data","path","resolvedPath","contentView","startLine","endLine","totalLines","isPartial","pagination","sourceChars","sourceBytes","warnings","error"]).trimEnd();s&&t.push(s),o!==void 0&&t.push("content (copy-safe):",o),t.push("")}return e.shared&&t.push(qn({shared:e.shared},["shared"]).trimEnd()),t.join(`
33
+ `)}function RP(e){return{...e.changedFiles?{changedFiles:!0}:{},...e.patches.mode!=="none"?{patches:e.patches}:{}}}function SP(e){let t=e.changedFiles;if(Array.isArray(t))for(let n of t){if(!Pn(n))continue;let r=si(n.patchPagination);if(r?.hasMore)return r}}function bP(e){let t=e.comments;if(Array.isArray(t))for(let n of t){if(!Pn(n))continue;let r=si(n.bodyPagination);if(r?.hasMore)return r}}function CP(e,t,n,r){let o={},i=si(e.bodyPagination),s=ii(e.filePagination),a=ii(e.commentPagination),c=ii(e.commitPagination),u=SP(e),l=bP(e),d=RP(n);i&&(o.body={...i,nextQuery:_a(t,r,{body:!0},i)}),s&&(o.changedFiles={...s,nextQuery:oi(t,r,d,"filePage",s)}),a&&n.comments&&(o.comments={...a,nextQuery:oi(t,r,{comments:n.comments},"commentPage",a)}),l?.hasMore&&l.nextCharOffset!==void 0&&n.comments&&(o.commentBody={...l,nextQuery:Hr(t,r,{content:{comments:n.comments},...t.commentPage!==void 0?{commentPage:t.commentPage}:{},commentBodyOffset:l.nextCharOffset,charLength:t.charLength})}),c&&n.commits&&(o.commits={...c,nextQuery:oi(t,r,{commits:n.commits},"commitPage",c)}),u&&n.patches.mode!=="none"&&(o.patches={...u,nextQuery:_a(t,r,{patches:n.patches},u,{filePage:t.filePage??t.page})});let m=e.filePathsPagination;return Pn(m)&&(o.filePaths={...m,hasMore:m.hasMore===!0,nextQuery:m.hasMore===!0?Hr(t,r,{content:{changedFiles:!0},filePage:m.nextFilePage}):void 0}),Object.keys(o).length>0?o:void 0}function PP(e){delete e.bodyPagination,delete e.filePagination,delete e.commentPagination,delete e.commitPagination,delete e.filePathsPagination}function lm(e,t,n,r,o){let i=Number(e.number),s=typeof e.body=="string"?e.body:void 0,a=s&&r?yP(s):s,c=n.body?Qt(a,t.charOffset??0,t.charLength??12e3):void 0,u=n.body||n.changedFiles||n.patches.mode!=="none"||!!n.comments||n.reviews||!!n.commits,l=o!==void 0?o:u,m=t.prNumber!==void 0||t.verbose===!0,p=cm(e,t,n,r),f=Array.isArray(p.changedFiles)?p.changedFiles.find(y=>y.path)?.path:void 0,R={...{number:e.number,title:e.title,state:e.state,...e.draft?{draft:e.draft}:{},author:e.author,...Array.isArray(e.assignees)&&e.assignees.length?{assignees:e.assignees}:{},...Array.isArray(e.labels)&&e.labels.length?{labels:e.labels}:{},targetBranch:e.targetBranch,...m?{sourceBranch:e.sourceBranch,...e.sourceSha?{sourceSha:e.sourceSha}:{}}:{},createdAt:e.createdAt,...m?{updatedAt:e.updatedAt}:{},...m||!e.mergedAt?{closedAt:e.closedAt}:{},mergedAt:e.mergedAt,...e.commentsCount?{commentsCount:e.commentsCount}:{},...e.changedFilesCount?{changedFilesCount:e.changedFilesCount}:{},...e.additions?{additions:e.additions}:{},...e.deletions?{deletions:e.deletions}:{},...m&&!c?{bodyPreview:ri(typeof e.body=="string"?e.body:void 0)}:{},...l?{next:um(t,i,n,f)}:{}},...n.body?c?{body:c.content,bodyPagination:c.pagination}:{bodyEmpty:!0}:{},...p,...im(e,t,n),...sm(e,t,n),...am(e,t,n),...e.reviewSummary?{reviewSummary:e.reviewSummary}:{},...Array.isArray(e.sanitizationWarnings)&&e.sanitizationWarnings.length>0?{sanitizationWarnings:e.sanitizationWarnings}:{}},h=CP(R,t,n,i);return PP(R),h&&(R.contentPagination=h),R}async function dm(e,t,n){let r=n(),o={...t},i=om(o),s=o.prNumber!==void 0;if(s||(o.content=void 0,o.reviewMode=void 0),!(o.keywordsToSearch?.length||o.owner||o.repo||o.author||o.assignee||o.prNumber&&o.owner&&o.repo))return O("At least one valid search parameter, filter, or PR number is required.",e);let c=await ct(o,()=>r.provider.searchPullRequests(kp(o)));if(c.ok===!1)return c.result;let u=s?i.changedFiles||i.patches.mode!=="none":!1,{pullRequests:l,resultData:d}=Ip(c.response.data,{includeFileChanges:u});o.prNumber!==void 0&&delete d.pagination;let m=!s&&(!!e.content||!!e.reviewMode),p={...i,body:!1,changedFiles:!1,patches:{mode:"none"},comments:!1,commits:!1},f=o.minify==="standard",g=s,R=l.map(y=>lm(y,o,m?p:i,f,g));d.pullRequests=R,!s&&o.concise===!0&&(d.pullRequests=R.map(y=>{let S=y;return`#${S.number} ${S.title}`}));let h=R.length>0;if(!s&&h){let y=R[0].number,S=o.owner,C=o.repo;y!=null&&S&&C&&(d.next={readPr:{tool:"ghSearchPullRequests",query:{owner:S,repo:C,prNumber:y,content:{body:!0,changedFiles:!0,comments:{discussion:!0}}},why:"Read any PR from this list \u2014 swap prNumber for the # you want.",confidence:"low"}})}return oe(o,d,h,P.GITHUB_PULL_REQUESTS,{rawResponse:c.response.rawResponseChars})}async function Br(e){let{queries:t,authInfo:n}=e,r=De(n);return ee(t,async(o,i)=>{try{let s=xe(Mi,o);if(s.ok===!1)return s.error;let a=s.data.type;return a==="releases"?await Yp(o,s.data,n):a==="issues"?await tm(o,s.data,n):a==="commits"?await rm(o,s.data,n):await dm(o,s.data,r)}catch(s){return ye(s,o,void 0,P.GITHUB_PULL_REQUESTS)}},{toolName:P.GITHUB_PULL_REQUESTS,keysPriority:["pullRequests","issues","releases","latest","tagName","publishedAt","prerelease","pagination","totalCount","error"]},e)}function ci(e,t){return{...e,queries:e.queries.map(n=>({...n,type:t}))}}function pm(e){return Br(ci(e,"prs"))}function mm(e){return Br(ci(e,"issues"))}function fm(e){return Br(ci(e,"commits"))}function hm(e){return Br(ci(e,"releases"))}var xP=`
34
+ query($q: String!, $first: Int!, $after: String, $owner: String!, $repo: String!) {
35
+ search(query: $q, type: DISCUSSION, first: $first, after: $after) {
36
+ discussionCount
37
+ pageInfo { hasNextPage endCursor }
38
+ nodes {
39
+ ... on Discussion {
40
+ number
41
+ title
42
+ url
43
+ createdAt
44
+ updatedAt
45
+ answerChosenAt
46
+ upvoteCount
47
+ author { login }
48
+ category { name }
49
+ comments { totalCount }
50
+ }
51
+ }
52
+ }
53
+ repository(owner: $owner, name: $repo) {
54
+ hasDiscussionsEnabled
55
+ }
56
+ }`;async function gm(e,t,n){let r=await pe(t),o=se("gh-api-discussions",{owner:e.owner,repo:e.repo,keywords:(e.keywords??[]).join(" "),perPage:e.perPage,after:e.after??"",auth:r},n);return fe(o,()=>wP(e,t),{shouldCache:i=>"data"in i&&!("error"in i)})}async function wP(e,t){try{let n=await U(t),r=(e.keywords??[]).map(l=>l.trim()).filter(Boolean).join(" "),o=`repo:${e.owner}/${e.repo}${r?` ${r}`:""}`,i=await n.graphql(xP,{q:o,first:e.perPage,owner:e.owner,repo:e.repo,...e.after?{after:e.after}:{}}),a=(i.search.nodes??[]).filter(l=>typeof l.number=="number").map(l=>({number:l.number,title:l.title,url:l.url,...l.author?.login?{author:l.author.login}:{},...l.category?.name?{category:l.category.name}:{},...l.createdAt?{createdAt:l.createdAt}:{},...l.updatedAt?{updatedAt:l.updatedAt}:{},...l.answerChosenAt?{answered:!0}:{},...typeof l.upvoteCount=="number"?{upvotes:l.upvoteCount}:{},...typeof l.comments?.totalCount=="number"?{comments:l.comments.totalCount}:{}})),c=i.search.pageInfo.hasNextPage===!0,u=i.search.pageInfo.endCursor??void 0;return{data:{type:"discussions",owner:e.owner,repo:e.repo,totalCount:i.search.discussionCount,discussions:a,pagination:{perPage:e.perPage,hasMore:c,...c&&u?{nextCursor:u}:{}},...typeof i.repository?.hasDiscussionsEnabled=="boolean"?{hasDiscussionsEnabled:i.repository.hasDiscussionsEnabled}:{}},status:200}}catch(n){return W(n)}}var TP=30;async function ym(e){let{queries:t,authInfo:n,sessionId:r}=e;return ee(t,async(o,i)=>{try{if(!o.owner||!o.repo)return O("owner and repo are required to search discussions.",o);let s=Number(o.limit??o.itemsPerPage)||TP,a=await gm({owner:o.owner,repo:o.repo,keywords:o.keywordsToSearch,perPage:s,...o.after?{after:o.after}:{}},n,r);if(Ie(a))return O(a,o,{toolName:P.GITHUB_DISCUSSIONS});let c=a.data.discussions.length>0,u=!c&&a.data.hasDiscussionsEnabled===!1?["This repository has Discussions disabled \u2014 an empty result here means the feature is off, not that no matching discussions exist."]:[],l=a.data.pagination.nextCursor,d={...a.data,...u.length>0?{warnings:u}:{},...l?{next:{nextPage:{tool:"ghSearchDiscussions",query:{owner:o.owner,repo:o.repo,...o.keywordsToSearch?{keywordsToSearch:o.keywordsToSearch}:{},itemsPerPage:s,after:l},why:"Fetch the next page of discussions",confidence:"exact"}}}:{}};return oe(o,d,c,P.GITHUB_DISCUSSIONS,{rawResponse:a.rawResponseChars})}catch(s){return ye(s,o,"Failed to search repository discussions",P.GITHUB_DISCUSSIONS)}},{toolName:P.GITHUB_DISCUSSIONS,keysPriority:["totalCount","discussions","pagination","error"]},e)}function Sm(e){return!!(e.topicsToSearch&&(Array.isArray(e.topicsToSearch)?e.topicsToSearch.length>0:e.topicsToSearch))}function ui(e){return!!(e.keywords&&e.keywords.length>0)}function bm(e){return!!(ui(e)||Sm(e)||e.owner||e.language||e.stars||e.updated||e.forks||e.license||e.goodFirstIssues||e.visibility||e.archived!==void 0)}function Rm(e,t){return e?`${e} (${t==="topics"?"topics-based search":"keywords-based search"})`:`${t.charAt(0).toUpperCase()+t.slice(1)}-based repository search`}function Cm(e){let t=Sm(e),n=ui(e);if(t&&n){let{topicsToSearch:r,keywords:o,...i}=e;return[{label:"topics",query:{...i,reasoning:Rm(e.reasoning,"topics"),topicsToSearch:r}},{label:"keywords",query:{...i,reasoning:Rm(e.reasoning,"keywords"),keywords:o}}]}return[{label:"combined",query:e}]}function Pm(e,t){if(!e&&!t)return 0;if(!e)return 1;if(!t)return-1;let n=Date.parse(e),r=Date.parse(t);return Number.isNaN(n)&&Number.isNaN(r)?0:Number.isNaN(n)?1:Number.isNaN(r)?-1:r-n}function wm(e){let t=new Map;for(let n of e){let r=`${n.owner}/${n.repo}`;t.has(r)||t.set(r,n)}return[...t.values()]}function Tm(e,t){return[...e].sort((n,r)=>{let o=EP(n,r,t.sort);if(o!==0)return o;let i=xm(r,t)-xm(n,t);if(i!==0)return i;let s=(r.stars??0)-(n.stars??0);return s!==0?s:ka(n).localeCompare(ka(r))})}function EP(e,t,n){switch(n){case"stars":return(t.stars??0)-(e.stars??0);case"forks":return(t.forksCount??0)-(e.forksCount??0);case"help-wanted-issues":return(t.openIssuesCount??0)-(e.openIssuesCount??0);case"updated":return Pm(e.updatedAt,t.updatedAt);case"best-match":case void 0:return 0;default:return 0}}function xm(e,t){let n=LP(t),r=ka(e).toLowerCase(),o=e.repo.toLowerCase(),i=(e.description??"").toLowerCase(),s=(e.topics??[]).map(l=>l.toLowerCase()),a=e.language?.toLowerCase(),c=t.language?.toLowerCase();return n.reduce((l,d)=>o===d||r===d?l+80:o.includes(d)||r.includes(d)?l+40:s.includes(d)?l+35:i.includes(d)?l+10:l,0)+(c&&a===c?20:0)}function LP(e){let t=e.keywords??[],n=e.topicsToSearch??[];return[...t,...n].map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)}function ka(e){return`${e.owner}/${e.repo}`}function Ia(e){return{currentPage:e.currentPage,totalPages:e.totalPages,perPage:e.entriesPerPage??10,...e.totalMatches!==void 0?{totalMatches:e.totalMatches}:{},...e.reportedTotalMatches!==void 0?{reportedTotalMatches:e.reportedTotalMatches}:{},...e.reachableTotalMatches!==void 0?{reachableTotalMatches:e.reachableTotalMatches}:{},...e.totalMatchesKind!==void 0?{totalMatchesKind:e.totalMatchesKind}:{},...e.totalMatchesCapped!==void 0?{totalMatchesCapped:e.totalMatchesCapped}:{},hasMore:e.hasMore,...e.hasMore?{nextPage:e.currentPage+1}:{}}}function Oa(e){return e.length===0?void 0:[`Repository search partially failed: the ${e.map(n=>`'${n.label}'`).join(", ")} query variant(s) returned an error. Results may be incomplete \u2014 retry or narrow the query.`]}function Fa(e,t){let n=e.map(r=>r.response.data.pagination).filter(r=>!!r);if(n.length!==0)return{currentPage:n[0].currentPage,totalPages:Math.max(...n.map(r=>r.totalPages)),hasMore:n.some(r=>r.hasMore),entriesPerPage:n[0].entriesPerPage,totalMatches:t,reachableTotalMatches:t,totalMatchesKind:"lowerBound",totalMatchesCapped:n.some(r=>r.totalMatchesCapped===!0)}}function Em(e){return e.reduce((t,n)=>t+(n.response.rawResponseChars??N(n.response.data??n.response)),0)}function AP(e){let t=e,n={owner:t.owner??"",repo:t.repo,stars:t.stars,forks:t.forksCount,openIssuesCount:t.openIssuesCount,language:t.language,license:t.license||void 0,description:t.description&&t.description!=="No description"?t.description:void 0,homepage:t.homepage||void 0,pushedAt:t.pushedAt?t.pushedAt.slice(0,10):void 0,createdAt:t.createdAt?t.createdAt.slice(0,10):void 0,updatedAt:t.updatedAt?t.updatedAt.slice(0,10):void 0,defaultBranch:t.defaultBranch&&t.defaultBranch!=="main"&&t.defaultBranch!=="master"?t.defaultBranch:void 0,topics:t.topics?.length?t.topics:void 0,visibility:t.visibility&&t.visibility!=="public"?t.visibility:void 0};return Object.fromEntries(Object.entries(n).filter(([,r])=>r!==void 0))}function _P(e,t){let n=t.concise===!0,r=e.repositories[0],o=r?.owner&&r?.repo?{viewStructure:{tool:"ghViewRepoStructure",query:{owner:r.owner,repo:r.repo,path:""},why:"Orient in the top-ranked repository before reading code",confidence:"low"},searchCode:{tool:"ghSearchCode",query:{owner:r.owner,repo:r.repo},why:"Scope a code search to the top-ranked repository",confidence:"low"}}:void 0;return{data:{pagination:e.pagination,repositories:n?e.repositories.map(i=>`${i.owner?`${i.owner}/`:""}${i.repo}`):e.repositories.map(AP),...o?{next:o}:{}}}}async function Lm(e){let{queries:t,authInfo:n}=e,r=De(n);return ee(t,async(o,i)=>{try{if(!bm(o))return O("At least one repository search term or filter is required.",o);let s=r(),a=Cm(o),{successes:c,failures:u}=await Kd(a.map(w=>({meta:{label:w.label,query:w.query},operation:()=>s.provider.searchRepos(Ap(w.query))}))),l=c.map(w=>({label:w.meta.label,query:w.meta.query,response:w.response})),d=u.map(w=>({label:w.meta.label,query:w.meta.query,response:w.response}));if(l.length===0){let w=d[0];return w?Mo(w.response,o):ye(new Error("Repository search produced no provider results"),o,void 0,P.GITHUB_SEARCH_REPOSITORIES)}let m=o.limit,p=Tm(wm(l.flatMap(w=>_p(w.response.data.repositories))),o),f=m!=null?p.slice(0,m):p,g=l.length===1?l[0]:void 0,h=l.length>1?Fa(l,p.length):g?.response.data.pagination,y=h?Ia(h):void 0,S=f.length>0,C=_P({repositories:f,pagination:y},o),x=Oa(d),T;if(o.owner&&ui(o)){let w=(Array.isArray(o.keywords)?o.keywords:[o.keywords]).filter(A=>typeof A=="string"&&A.trim().length>0).slice(0,3),b=w.some(A=>f.some(M=>M.repo?.toLowerCase()===A.toLowerCase()));if(w.length>0&&!b)try{let A=await U(n);for(let M of w){let H=await ni(A,String(o.owner),M);if(H.renamed){T={warning:`No repositories matched under owner "${o.owner}", but "${o.owner}/${M}" now resolves to "${H.owner}/${H.repo}" \u2014 the repository may have been transferred. Retry scoped to owner:"${H.owner}" (see next.retryUnderCanonicalOwner).`,next:{retryUnderCanonicalOwner:{tool:"ghSearchRepos",query:{...o,owner:H.owner,keywords:[H.repo]},why:"Re-run scoped to the repository's current owner after a detected transfer.",confidence:"exact"}}};break}}}catch{}}let L=[...x??[],...T?[T.warning]:[],...!S&&!T?['No repositories matched. Keywords are ANDed \u2014 try fewer or broader keywords, drop a topic/filter (topics are sparse), or add match:"readme" for full-text search.']:[]],_={...C.data,...L.length>0?{warnings:L}:{},...T?{next:T.next}:{}};return oe(o,_,S,P.GITHUB_SEARCH_REPOSITORIES,{rawResponse:Em([...l,...d])})}catch(s){return ye(s,o,void 0,P.GITHUB_SEARCH_REPOSITORIES)}},{toolName:P.GITHUB_SEARCH_REPOSITORIES,keysPriority:["repositories","pagination","error"]},e)}function kP(e,t){let n=e.error,r=typeof n=="object"&&n!==null?n:void 0,o=typeof r?.status=="number"?r.status:void 0,i=typeof t.path=="string"?t.path.replace(/\/+$/,""):"",s=i.includes("/")?i.slice(0,i.lastIndexOf("/")):"",a=i.split("/").pop()||t.repo,c=o===404?{retryParent:{tool:"ghViewRepoStructure",query:{owner:t.owner,repo:t.repo,...s?{path:s}:{},...t.branch?{branch:t.branch}:{}},why:"Retry at the parent directory \u2014 the path or branch may be wrong.",confidence:"low"},searchPath:{tool:"ghSearchCode",query:{owner:t.owner,repo:t.repo,match:"path",keywords:[a]},why:"Locate the path by name in case it moved or was renamed.",confidence:"low"}}:void 0;return{status:"error",owner:t.owner,repo:t.repo,path:t.path,branch:t.branch,error:typeof r?.error=="string"?r.error:typeof n=="string"?n:"Failed to explore repository structure",...typeof r?.status=="number"?{statusCode:r.status}:{},...typeof r?.type=="string"?{errorType:r.type}:{},...c?{next:c}:{}}}function IP(e){let t={};for(let[n,r]of Object.entries(e)){let o=n.split("/").pop()??n;if(n!==""&&n!=="."&&yr(o))continue;let i=r.files.filter(a=>!cn(a)),s=r.folders.filter(a=>!yr(a));(i.length>0||s.length>0)&&(t[n]={files:i,folders:s})}return t}async function Am(e){let{queries:t,authInfo:n}=e,r=De(n);return ee(t,async(o,i)=>{try{let s=r(),a=`${o.owner}/${o.repo}`,c=o.branch,u=c??await s.provider.resolveDefaultBranch(a),l=await ct(o,()=>s.provider.getRepoStructure(Sa(o,u))),d=u,m;if(l.ok===!1&&c){let C=l.result.error;if((typeof C=="object"&&C!==null?C.status:void 0)===404){let T=await s.provider.resolveDefaultBranch(a);if(T!==c){let L=await ct(o,()=>s.provider.getRepoStructure(Sa(o,T)));L.ok!==!1&&(l=L,d=T,m=`Branch/ref '${c}' was not found. Showing '${T}' (default branch) instead. Re-query with the correct branch name if branch-specific results are required.`)}}}if(l.ok===!1)return kP(l.result,o);let p=IP(l.response.data.structure),f=Object.keys(p).length>0,g=vp(l.response.data,o,p,d);m&&(g.branchFallback={requestedBranch:c,actualBranch:d,warning:m});let h=g.structure?.find(C=>(C.files?.length??0)>0),y=String(o.path??"").replace(/\/+$/,""),S=h?(()=>{let C=h.dir==="."?h.files[0]:`${h.dir}/${h.files[0]}`;return y?`${y}/${C}`:C})():void 0;return g.next={...S?{fetchFile:{tool:"ghGetFileContent",query:{owner:o.owner,repo:o.repo,path:S,...d?{branch:d}:{}},why:"Read the first listed file",confidence:"low"}}:{},materialize:{tool:"ghGetFileContent",query:{owner:o.owner,repo:o.repo,path:String(o.path??""),type:"directory",...d?{branch:d}:{}},why:"Materialize this directory locally for exact line anchors, local search, or LSP",confidence:"exact"}},oe(o,g,f,P.GITHUB_VIEW_REPO_STRUCTURE,{rawResponse:l.response.rawResponseChars})}catch(s){return ye(s,o,"Failed to explore repository structure",P.GITHUB_VIEW_REPO_STRUCTURE)}},{toolName:P.GITHUB_VIEW_REPO_STRUCTURE,keysPriority:["resolvedBranch","branchFallback","summary","pagination","structure","error"]},e)}import{existsSync as _m}from"fs";import{delimiter as OP,dirname as FP,join as km}from"path";function Im(){return process.platform==="win32"?"npm.cmd":"npm"}function vP(){let e=FP(process.execPath);return km(e,Im())}function DP(){return process.platform==="win32"?[]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin"]}function MP(){let e=(process.env.PATH??"").split(OP).map(t=>t.trim()).filter(Boolean);return[...new Set([...e,...DP()])]}function NP(){let e=vP();if(_m(e))return{command:process.execPath,argsPrefix:[e]};let t=Im();for(let n of MP()){let r=km(n,t);if(_m(r))return{command:r,argsPrefix:[]}}return{command:t,argsPrefix:[]}}var GP=["view","search","ping","config","whoami"],HP=[...Ar,...Yd];async function jt(e,t,n={}){if(!GP.includes(e))return{stdout:"",stderr:"",error:new Error(`Command '${e}' is not allowed`)};let r=qd(t);if(!r.valid)return{stdout:"",stderr:"",error:new Error(`Invalid arguments: ${r.error}`)};let{timeout:o=3e4,cwd:i,env:s}=n,a=NP(),c=await _r(a.command,[...a.argsPrefix,e,...t],{timeout:o,cwd:i,env:s,allowEnvVars:HP});return{stdout:c.stdout,stderr:c.stderr,exitCode:c.exitCode??void 0,error:c.error}}var xn="https://registry.npmjs.org",li=null;async function di(){if(li)return li;try{let e=await jt("config",["get","registry","--no-workspaces"],{timeout:1e4});if(!e.error&&e.exitCode===0){let t=e.stdout.trim().replace(/\/+$/,"");if(t&&t.startsWith("http"))return li=t,t}}catch{}return li=xn,xn}var Ur=new Map,BP=5,va=3e4;function Qr(e){try{return new URL(e).host||e}catch{return e}}var Da=class extends Error{retryable=!1;host;retryAfterMs;constructor(t,n){super(`Circuit open for ${t}: too many recent failures \u2014 failing fast, retry in ~${Math.ceil(n/1e3)}s.`),this.name="CircuitOpenError",this.host=t,this.retryAfterMs=n}};function Om(e,t=Date.now()){let n=Ur.get(Qr(e));if(!(!n||n.state==="closed")&&n.state==="open"){let r=t-n.openedAt;if(r<va)throw new Da(Qr(e),va-r);n.state="half-open"}}function Ma(e){let t=Ur.get(Qr(e));t&&(t.failures=0,t.state="closed")}function Fm(e,t=Date.now()){let n=Qr(e),r=Ur.get(n)??{failures:0,state:"closed",openedAt:0};r.state==="half-open"?(r.state="open",r.openedAt=t):(r.failures+=1,r.failures>=BP&&(r.state="open",r.openedAt=t)),Ur.set(n,r)}function vm(e,t=Date.now()){let n=Ur.get(Qr(e));return!n||n.state==="closed"?!1:n.state==="open"?t-n.openedAt<va:!1}import{z as E}from"zod";var pi=E.looseObject({name:E.string(),version:E.string(),repository:E.union([E.string(),E.object({url:E.string().optional(),type:E.string().optional(),directory:E.string().optional()})]).optional(),main:E.string().optional(),module:E.string().optional(),type:E.string().optional(),exports:E.unknown().optional(),types:E.string().optional(),typings:E.string().optional(),description:E.string().optional(),keywords:E.array(E.string()).optional(),license:E.union([E.string(),E.object({type:E.string().optional()})]).optional(),homepage:E.string().optional(),author:E.union([E.string(),E.object({name:E.string().optional(),email:E.string().optional(),url:E.string().optional()})]).optional(),maintainers:E.array(E.object({name:E.string().optional(),email:E.string().optional()})).optional(),engines:E.record(E.string(),E.string()).optional(),dependencies:E.record(E.string(),E.string()).optional(),devDependencies:E.record(E.string(),E.string()).optional(),peerDependencies:E.record(E.string(),E.string()).optional(),time:E.record(E.string(),E.string().optional()).optional()}),UP=E.looseObject({package:E.looseObject({name:E.string().nullish(),version:E.string().nullish(),description:E.string().nullish(),links:E.looseObject({npm:E.string().nullish(),homepage:E.string().nullish(),repository:E.string().nullish()}).nullish()}),score:E.looseObject({final:E.number().nullish(),detail:E.looseObject({quality:E.number().nullish(),popularity:E.number().nullish(),maintenance:E.number().nullish()}).nullish()}).nullish()}),Dm=E.looseObject({objects:E.array(UP),total:E.union([E.number(),E.string()]).optional()}),QP=E.union([E.string(),E.boolean(),E.number(),E.null(),E.record(E.string(),E.unknown())]);var $P=6e4;function Mm(e){let t=e.get("Retry-After");if(!t)return;let n=parseInt(t,10);return isNaN(n)?void 0:n}function jP(e,t,n,r){e&&St({limit_type:"primary",retry_after_seconds:Mm(r),api_method:t,api_url:n,provider:e})}function zP(e,t,n,r,o){e.body?.cancel?.().catch(()=>{});let i=new Error(cr.FETCH_HTTP_ERROR.message(e.status,e.statusText));return i.status=e.status,i.headers=e.headers,r&&e.status!==404&&Il(r),e.status===429&&jP(o,t,n,e.headers),i.retryable=e.status===429||e.status===408||e.status>=500&&e.status<600,i}function WP(e,t,n,r){let o=Math.min(t*Math.pow(2,e-1),n);if(o+=Math.floor(Math.random()*t),r&&r.headers&&typeof r.headers.get=="function"){let i=Mm(r.headers);i!==void 0&&(o=Math.min(i*1e3,n))}return o}async function Xe(e,t={}){let{maxRetries:n=3,initialDelayMs:r=1e3,maxDelayMs:o=$P,headers:i={},method:s="GET",includeVersion:a=!1,signal:c,rateLimitProvider:u,packageRegistry:l}=t,d=e;if(a){let R=e.includes("?")?"&":"?";d=`${e}${R}version=${encodeURIComponent(Mt)}`}let m={"User-Agent":`Octocode-MCP/${Mt}`,...i},p=globalThis.fetch;if(!p)throw new Error(cr.FETCH_NOT_AVAILABLE.message);Om(d);let f,g=n+1;for(let R=1;R<=g;R++){if(c?.aborted)throw new Error("Request aborted");try{let h=await p(d,{method:s,headers:m,signal:c});if(!h.ok)throw zP(h,s,d,l,u);if(h.status===204)return Ma(d),null;let y=await h.json();return Ma(d),y}catch(h){let y=h;if(c?.aborted||h instanceof Error&&h.name==="AbortError")throw new Error("Request aborted");if(y&&y.retryable===!1)throw h;if(f=h instanceof Error?h:new Error(String(h)),R===g)break;let S=WP(R,r,o,y);await new Promise(C=>setTimeout(C,S))}}throw Fm(d),new Error(cr.FETCH_FAILED_AFTER_RETRIES.message(g,f?.message||""))}function xt(e){return e.replace(/^git\+/,"").replace(/\.git$/,"")}var VP="https://api.npmjs.org/downloads/point/last-week";function we(e){return e===void 0?0:N(e)}async function mi(e){try{let t=`${VP}/${encodeURIComponent(e)}`,n=await Xe(t,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3),packageRegistry:"npm"});return{downloads:typeof n?.downloads=="number"?n.downloads:void 0,rawResponseChars:we(n)}}catch{return{rawResponseChars:0}}}function Nm(e){if(typeof e=="string")return[e];if(!e||typeof e!="object")return;let n=Object.entries(e).flatMap(([r,o])=>typeof o=="string"?[`${r}:${o}`]:o&&typeof o=="object"?Object.entries(o).filter(([,i])=>typeof i=="string").map(([i,s])=>`${r}:${i}:${s}`):[]).slice(0,12);return n.length>0?n:void 0}function Gm(e,t){if(typeof e=="string"){let n=t?.replace(/^@[^/]+\//,"")??"";return[n?`${n} \u2192 ${e}`:e]}if(e&&typeof e=="object"){let n=Object.entries(e).filter(([,r])=>typeof r=="string").map(([r,o])=>`${r} \u2192 ${o}`).slice(0,8);return n.length>0?n:void 0}}function KP(e){return e.type==="module"||e.module?"module":e.main?"commonjs":e.types||e.typings?"types-only":"unknown"}function fi(e,t=!1,n="cli"){let r=null,o;e.repository&&(typeof e.repository=="string"?r=xt(e.repository):(e.repository.url&&(r=xt(e.repository.url)),e.repository.directory&&(o=e.repository.directory.replace(/^\.\//,""))));let i;if(e.time){let c=(e.version?e.time[e.version]:void 0)||e.time.modified;c&&(i=c)}let s={name:e.name,npmUrl:`https://www.npmjs.com/package/${encodeURIComponent(e.name)}`,repoUrl:r,version:e.version||"latest",mainEntry:e.main||null,moduleEntry:e.module||null,typeDefinitions:e.types||e.typings||null,packageType:KP(e),...o?{repositoryDirectory:o}:{},...Nm(e.exports)?{exports:Nm(e.exports)}:{},...Gm(e.bin,e.name)?{bin:Gm(e.bin,e.name)}:{},lastPublished:i,source:n};return e.description&&(s.description=e.description),e.license&&(s.license=typeof e.license=="string"?e.license:e.license.type),t&&(e.author&&(typeof e.author=="string"?s.author=e.author:e.author.name&&(s.author=e.author.name)),e.keywords&&e.keywords.length>0&&(s.keywords=e.keywords),e.homepage&&(s.homepage=e.homepage),e.engines&&Object.keys(e.engines).length>0&&(s.engines=e.engines),e.dependencies&&Object.keys(e.dependencies).length>0&&(s.dependencies=e.dependencies),e.peerDependencies&&Object.keys(e.peerDependencies).length>0&&(s.peerDependencies=e.peerDependencies)),s}function YP(e){return typeof e.links?.repository=="string"?xt(e.links.repository):typeof e.repository=="string"?xt(e.repository):typeof e.repository?.url=="string"?xt(e.repository.url):null}function Hm(e){if(!e.name)return null;let t=(e.links?.npm??"")||`https://www.npmjs.com/package/${encodeURIComponent(e.name)}`,n=e.links?.homepage??void 0;return{name:e.name,npmUrl:t,repoUrl:YP(e),version:e.version??"unknown",source:"cli",...e.description?{description:e.description}:{},...n?{homepage:n}:{},...e.keywords&&e.keywords.length>0?{keywords:e.keywords}:{}}}function Na(e){return e.startsWith("@")?"@"+e.slice(1).replace("/","%2F"):e}function Bm(e,t){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){let n=Number.parseInt(e,10);if(Number.isFinite(n))return n}return t}var XP=3e3;function Ga(e){if(!e)return!1;let t=e.toLowerCase();return t.includes("fetch failed")||t.includes("failed to fetch")||t.includes("network")||t.includes("econnrefused")||t.includes("enotfound")||t.includes("etimedout")||t.includes("socket hang up")||t.includes("connect timeout")||t.includes("command timeout")||t.includes("circuit open")||t.includes("circuit breaker")}async function Ha(e){try{let t=await di(),n=Na(e),r=`${t}/${n}`,o=AbortSignal.timeout(8e3);try{let s=await Xe(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/vnd.npm.install-v1+json"},signal:o,packageRegistry:"npm"}),a=we(s);if(s?.modified)return{lastPublished:s.modified,rawResponseChars:a}}catch{}let i=await Xe(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:o,packageRegistry:"npm"});return{lastPublished:i?.time?.modified||void 0,rawResponseChars:we(i)}}catch{return{rawResponseChars:0}}}async function gi(e,t,n){let[r,o]=await Promise.all([mi(e),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):Ha(e)]);return r.downloads!==void 0&&(t.weeklyDownloads=r.downloads),o.lastPublished&&!t.lastPublished&&(t.lastPublished=o.lastPublished),{pkg:t,rawResponseChars:n+r.rawResponseChars+o.rawResponseChars}}function hi(e){let t=e.toLowerCase();return t.includes("404")||t.includes("not found")||t.includes("e404")}async function qP(e,t){try{let n=await jt("view",[e,"--json"],{timeout:XP});if(!n)return{pkg:null,rawResponseChars:0};if(n.error||n.exitCode!==0){let c=n.error?.message||n.stderr||`npm exited ${n.exitCode}`;return{pkg:null,...hi(c)?{}:{errorDetail:c},rawResponseChars:we(n.stdout)}}let r=n.stdout.trim();if(!r||r==="undefined")return{pkg:null,rawResponseChars:0};let o;try{o=JSON.parse(r)}catch{return{pkg:null,errorDetail:"Invalid npm view JSON output",rawResponseChars:r.length}}let i=we(o),s=pi.safeParse(o);return s.success?{pkg:fi(s.data,t,"cli"),rawResponseChars:i}:{pkg:null,errorDetail:"Invalid npm view response format",rawResponseChars:i}}catch(n){let r=n instanceof Error?n.message:String(n);return{pkg:null,...hi(r)?{}:{errorDetail:r},rawResponseChars:0}}}async function JP(e,t){try{let n=await di(),r=Na(e),o=`${n}/${r}/latest`,i;try{i=await Xe(o,{maxRetries:1,initialDelayMs:500,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(u){let l=u instanceof Error?u.message:String(u);return l.includes("404")||l.toLowerCase().includes("not found")?{pkg:null,rawResponseChars:0}:{pkg:null,errorDetail:l,rawResponseChars:0}}let s=we(i);if(!i||typeof i!="object")return{pkg:null,rawResponseChars:s};let a=pi.safeParse(i);return a.success?{pkg:fi(a.data,t,"registry"),rawResponseChars:s}:{pkg:null,errorDetail:"Invalid npm registry response format",rawResponseChars:s}}catch(n){let r=n instanceof Error?n.message:String(n);return{pkg:null,...hi(r)?{}:{errorDetail:r},rawResponseChars:0}}}function ZP(e){return[`https://cdn.jsdelivr.net/npm/${e}/package.json`,`https://unpkg.com/${e}/package.json`]}async function Ba(e,t){let n=0,r;for(let o of ZP(e)){let i;try{i=await Xe(o,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3)})}catch(c){let u=c instanceof Error?c.message:String(c);hi(u)||(r=u);continue}if(n+=we(i),!i||typeof i!="object")continue;let s=pi.safeParse(i);if(!s.success){r="Invalid npm CDN package.json response format";continue}return{pkg:fi(s.data,t,"cdn"),rawResponseChars:n}}return{pkg:null,...r?{errorDetail:r}:{},rawResponseChars:n}}async function yi(e,t=!1){let[n,r]=await Promise.allSettled([qP(e,t),JP(e,t)]),o=n.status==="fulfilled"?n.value:{pkg:null,rawResponseChars:0},i=r.status==="fulfilled"?r.value:{pkg:null,rawResponseChars:0},s=o.pkg?o:i.pkg?i:null;return s?.pkg?gi(e,s.pkg,s.rawResponseChars):{pkg:null,errorDetail:o.errorDetail||i.errorDetail,rawResponseChars:o.rawResponseChars+i.rawResponseChars}}async function Um(e,t,n=!1){let{pkg:r,errorDetail:o,rawResponseChars:i}=await yi(e,t);if(!r){if(o){let s=Ga(o);if(s&&n){let a=await Ba(e,t);if(a.pkg){let c=await gi(e,a.pkg,a.rawResponseChars);return{packages:c.pkg?[c.pkg]:[],totalFound:c.pkg?1:0,rawResponseChars:i+c.rawResponseChars}}}return{error:`NPM view failed for '${e}': ${o}`,rawResponseChars:i,hints:s?["npm registry is unreachable.","Use `ghSearchRepos` to find the source repo directly by package name or domain terms."]:["Ensure npm is installed and available in PATH","Check package name for typos",`Try: npm view ${e} --json`]}}return{packages:[],totalFound:0,rawResponseChars:i}}return{packages:[r],totalFound:1,rawResponseChars:i}}async function ex(e,t,n,r=0){let o=Math.max(t+r,t),i=await jt("search",[e,"--json","--searchlimit",String(o)],{timeout:8e3});if(!i)return{error:"NPM CLI search unavailable",rawResponseChars:0};if(i.error||i.exitCode!==0)return{error:`NPM CLI search failed: ${i.error?.message||i.stderr||`npm exited ${i.exitCode}`}`,rawResponseChars:we(i.stdout)};let s=i.stdout.trim();if(!s)return{packages:[],totalFound:0,rawResponseChars:0};let a;try{a=JSON.parse(s)}catch{return{error:"Invalid npm search JSON output",rawResponseChars:s.length}}let c=we(a);if(!Array.isArray(a))return{error:"Invalid npm search response format",rawResponseChars:c};let l=[...a].sort((f,g)=>{let R=f?.score?.final??0;return(g?.score?.final??0)-R}).slice(r,r+t),d=await Promise.all(l.map(async f=>{if(!f||typeof f!="object")return null;let g=f;if(!g.name)return null;if(n){let R=await yi(g.name,!0);if(R.pkg)return R}return{pkg:Hm(g),rawResponseChars:0}})),m=d.map(f=>f?.pkg).filter(f=>!!f),p=d.reduce((f,g)=>f+(g?.rawResponseChars??0),0);return{packages:m,totalFound:a.length,rawResponseChars:c+p}}async function tx(e,t,n,r=0){try{let o=r>0?`&from=${r}`:"",i=`${xn}/-/v1/search?text=${encodeURIComponent(e)}&size=${t}${o}`,s;try{s=await Xe(i,{maxRetries:1,initialDelayMs:500,signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(f){return{error:`Could not reach the npm search API (${f instanceof Error?f.message:String(f)}). The package may not exist, or the registry search endpoint is unavailable.`,hints:['Verify the exact package name / scope (e.g. "@scope/name")',"For an exact known name, query it directly instead of a keyword search","Ensure the npm registry is accessible from this environment"]}}let a=we(s);if(!s||typeof s!="object")return{packages:[],totalFound:0,rawResponseChars:a};let c=Dm.safeParse(s);if(!c.success)return{error:`Invalid npm registry search response format: ${c.error.issues.map(g=>g.message).join("; ")}`,rawResponseChars:a,hints:["Try a different search term","Try itemsPerPage=1 for an exact package lookup"]};let l=[...c.data.objects].sort((f,g)=>{let R=f.score?.final??0;return(g.score?.final??0)-R}).map(f=>f.package).filter(f=>typeof f.name=="string"&&f.name.length>0).slice(0,t),d=await Promise.all(l.map(async f=>{if(n){let g=await yi(f.name,!0);if(g.pkg)return g}return{pkg:{name:f.name,npmUrl:(f.links?.npm??"")||`https://www.npmjs.com/package/${encodeURIComponent(f.name)}`,repoUrl:f.links?.repository&&typeof f.links.repository=="string"?xt(f.links.repository):null,version:f.version??"unknown",source:"registry",...f.description?{description:f.description}:{},...f.links?.homepage?{homepage:f.links.homepage}:{}},rawResponseChars:0}})),m=d.map(f=>f.pkg).filter(f=>!!f),p=d.reduce((f,g)=>f+g.rawResponseChars,0);return{packages:m,totalFound:Bm(c.data.total,m.length),rawResponseChars:a+p}}catch(o){return{error:`NPM registry search failed: ${o instanceof Error?o.message:String(o)}`,hints:["Check package name for typos","Try searching with a simpler term","Ensure npm registry is accessible"]}}}async function Ua(e,t){let n="https://api.npms.io/v2/search",r="octocode-mcp/1.0 (+https://github.com/bgauryy/octocode-mcp)";try{let o=`${n}?q=${encodeURIComponent(e)}&size=${t}`,i;try{i=await Xe(o,{maxRetries:1,initialDelayMs:500,headers:{Accept:"application/json","User-Agent":r},signal:AbortSignal.timeout(8e3)})}catch(c){return{error:`Web search failed: ${c instanceof Error?c.message:String(c)}`}}if(!i||typeof i!="object")return{packages:[],totalFound:0,rawResponseChars:we(i)};let s=i;if(!Array.isArray(s.results))return{packages:[],totalFound:0,rawResponseChars:we(i)};let a=s.results.slice(0,t).map(c=>c.package).filter(c=>typeof c?.name=="string"&&c.name.length>0).map(c=>({name:c.name,npmUrl:c.links?.npm??`https://www.npmjs.com/package/${encodeURIComponent(c.name)}`,repoUrl:c.links?.repository&&typeof c.links.repository=="string"?xt(c.links.repository):null,version:c.version??"unknown",source:"web",...c.description?{description:c.description}:{},...c.links?.homepage?{homepage:c.links.homepage}:{}}));return{packages:a,totalFound:typeof s.total=="number"?s.total:a.length,rawResponseChars:we(i)}}catch(o){return{error:`Web search failed: ${o instanceof Error?o.message:String(o)}`}}}async function Qa(e,t,n,r=0){try{let o=await ex(e,t,n,r);if(!("error"in o))return o}catch{}return tx(e,t,n,r)}async function $a(e){if(e.packages.length===0)return e;let t=e.packages[0];if(t.weeklyDownloads!==void 0&&t.lastPublished)return e;let[n,r]=await Promise.all([t.weeklyDownloads!==void 0?Promise.resolve({downloads:void 0,rawResponseChars:0}):mi(t.name),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):Ha(t.name)]),o={...t};return n.downloads!==void 0&&(o.weeklyDownloads=n.downloads),r.lastPublished&&(o.lastPublished=r.lastPublished),{...e,packages:[o,...e.packages.slice(1)]}}function zt(e){return e.startsWith("@")&&e.includes("/")?!0:e.includes(" ")?!1:/^[a-z0-9][a-z0-9._-]*$/i.test(e)}function Qm(e){return e.replace(/^@/,"").replace(/[/_-]/g," ").replace(/\s+/g," ").trim()}async function ja(e,t,n,r=0){let o=se("npm-search",{name:e,limit:t,metadata:n,from:r});return fe(o,async()=>{if(vm(xn)){if(r===0&&t===1&&zt(e)){let l=await Ba(e,n);if(l.pkg){let d=await gi(e,l.pkg,l.rawResponseChars);return{packages:d.pkg?[d.pkg]:[],totalFound:d.pkg?1:0,rawResponseChars:d.rawResponseChars}}}let u=await Ua(e,t);return!("error"in u)&&u.packages.length>0?u:{error:"npm registry circuit open and web search returned no results.",hints:["Use `ghSearchRepos` to find the source repo directly."]}}if(r===0&&zt(e)){let u=await Um(e,n,t===1);if("error"in u){if(!Ga(u.error))return u}else if(u.packages.length>0||t===1)return u}let s=await Qa(e,t,n,r);if(!("error"in s)&&s.packages.length>0)return $a(s);let a=Qm(e);if(a!==e){let u=await Qa(a,t,n,r);if(!("error"in u)&&u.packages.length>0)return $a(u)}let c=await Ua(e,t);return!("error"in c)&&c.packages.length>0?c:"error"in s?{...s,hints:["npm registry and web search (npms.io) are both unreachable.","Use `ghSearchRepos` to find the source repo directly by package name or domain terms."]}:s},{shouldCache:i=>!("error"in i||"totalFound"in i&&i.totalFound===0)})}async function $m(e){let t=zt(e.name),n=e.itemsPerPage??(t?1:10),r=Math.max(0,((e.page??1)-1)*n);return ja(e.name,n,!0,r)}function za(e){if(e===void 0)return;let n=(Array.isArray(e)?e.join(" "):e).trim();return n.length>0?n:void 0}var rx=/\b(?:404|e404)\b|not\s+found|no\s+such\s+package|does\s+not\s+exist/i;function Wa(e){return rx.test(e)}function ox(e){return"error"in e}function Ri(e){return"npmUrl"in e}function ix(e){return Ri(e)&&e.path?e.path:e.name}function sx(e){return Ri(e)?e.repoUrl:e.repository}function ax(e){if(!e)return;let t=e.replace(/^\.\//,"").replace(/^\//,"");return t.length>0?t:void 0}var cx={github:"github.com",gitlab:"gitlab.com",bitbucket:"bitbucket.org"};function ux(e){if(!e)return;let t=e.trim();if(!t)return;t=t.replace(/^git\+/,"");let n=s=>s.replace(/\.git$/,""),r=t.match(/^(github|gitlab|bitbucket):(.+)$/i);if(r&&r[1]&&r[2]){let s=cx[r[1].toLowerCase()];return n(`https://${s}/${r[2]}`)}let o=t.match(/^[^@/]+@([^:/]+):(.+)$/);if(o&&o[1]&&o[2])return n(`https://${o[1]}/${o[2]}`);let i=t.match(/^(?:ssh|git|https?):\/\/(.+)$/);if(i&&i[1]){let s=i[1].replace(/^[^@/]+@/,"");return n(`https://${s}`)}return n(t)}function Va(e){if(!e)return;let t=e.match(/^https:\/\/github\.com\/([^/]+)\/([^/#?]+)/i);if(!(!t||!t[1]||!t[2]))return{owner:t[1],repo:t[2]}}function jm(e,t){let n=Va(e);if(!n)return;let{owner:r,repo:o}=n;return{viewRepoStructure:{tool:"ghViewRepoStructure",query:{owner:r,repo:o,...t?{path:t}:{}}},latestRelease:{tool:"ghListReleases",query:{owner:r,repo:o},why:"npm latest can diverge from the repo release line \u2014 verify against the repo releases/tags (requires ENABLE_RELEASES)"},searchCode:{tool:"ghSearchCode",query:{owner:r,repo:o}},cloneRepo:{tool:"ghCloneRepo",query:{owner:r,repo:o,...t?{sparsePath:t}:{}}}}}function lx(e){let t=ix(e),n=ux(sx(e)),r={name:t};Ri(e)&&(e.version&&e.version!=="unknown"&&(r.version=e.version),e.description&&(r.description=e.description),e.license&&(r.license=e.license),typeof e.weeklyDownloads=="number"&&(r.downloads=e.weeklyDownloads)),n&&(r.repository=n);let o=ax(Ri(e)?e.repositoryDirectory:void 0);o&&(r.repositoryDirectory=o);let i=jm(n,o);return i&&(r.next=i),r.version&&Va(n)&&(r.warnings=[`npm version ${r.version} is the registry's latest publish and may not correspond to a release/tag in the linked repository \u2014 verify against the repo's releases or tags before citing it as the repo's latest release.`]),r}function dx(e){if(e.length<=1)return{packages:e};let t={},n=new Map,r=1,o=e.map(i=>{if(!i.repository)return i;let s=Va(i.repository);if(!s)return i;let a=`${i.repository}\0${i.repositoryDirectory??""}`,c=n.get(a);c||(c=`r${r++}`,n.set(a,c),t[c]={repository:i.repository,owner:s.owner,repo:s.repo,...i.repositoryDirectory?{repositoryDirectory:i.repositoryDirectory}:{},next:jm(i.repository,i.repositoryDirectory)});let{repository:u,repositoryDirectory:l,next:d,...m}=i;return{...m,repositoryId:c}});return Object.keys(t).length?{packages:o,repositories:t}:{packages:e}}function px(e,t,n,r){let o=Math.max(1,e.page??1),i=r?10:1,s=r&&n>=i,a=Math.max(1,Math.ceil(t/i)),c=s||o<a,u=s&&o>=a?o+1:a;return{currentPage:o,totalPages:u,perPage:i,totalFound:t,returned:n,hasMore:c,...c?{nextPage:o+1}:{}}}async function zm(e){return ee(e.queries,async t=>{try{let n=t.packageName??za(t.keywords);if(!n)return O("Provide a packageName or keywords for package search",t);let r=await $m({name:n,page:t.page,mainResearchGoal:t.mainResearchGoal,researchGoal:t.researchGoal,reasoning:t.reasoning});if(ox(r)){if(Wa(r.error)){let d=zt(n);return oe(t,{packages:[],hints:[d?`No package published under the exact name "${n}". Check the spelling, and try the scoped (@scope/name) vs unscoped form.`:`No packages matched "${n}". Try different or fewer keywords, or search by an exact package name.`]},!1,P.PACKAGE_SEARCH,{rawResponse:r})}return O(r.error,t,{rawResponse:r})}let o=r.packages,i=o.map(lx),s=i.length>0,a=o.length>1||r.totalFound>1,c=px(t,r.totalFound,i.length,a),l={...dx(i),pagination:c};return oe(t,l,s,P.PACKAGE_SEARCH,{rawResponse:r.rawResponseChars??r})}catch(n){return O(n,t,{toolName:P.PACKAGE_SEARCH})}},{toolName:P.PACKAGE_SEARCH,keysPriority:["packages","pagination","error"]},e)}import{ContentSanitizer as Cx}from"@octocodeai/octocode-engine/contentSanitizer";import Wm from"path";import{pathValidator as Vm}from"@octocodeai/octocode-engine/pathValidator";import{redactPath as $r}from"@octocodeai/octocode-engine/pathUtils";var Ee={pathValidationFailed:(e,t,n)=>new Se(G.PATH_VALIDATION_FAILED,t||`Path validation failed: ${$r(e,n)}`,{path:e}),fileAccessFailed:(e,t,n)=>{let r=$r(e,n),o=`Cannot access file: ${r}`,i=t?.code;return i==="ENOENT"?o=`File not found: ${r}. Verify the path exists using localFindFiles.`:i==="EACCES"?o=`Permission denied: ${r}. Check file permissions.`:i==="EISDIR"?o=`Path is a directory: ${r}. Use localViewStructure instead.`:i==="ENOTDIR"?o=`Invalid path: ${r}. A component of the path is not a directory.`:i==="ENAMETOOLONG"&&(o=`Path too long: ${r}`),new Se(G.FILE_ACCESS_FAILED,o,{path:e,errorCode:i},t)},fileReadFailed:(e,t,n)=>new Se(G.FILE_READ_FAILED,`Failed to read file: ${$r(e,n)}`,{path:e,errorCode:t?.code},t),fileTooLarge:(e,t,n)=>new Se(G.FILE_TOO_LARGE,(()=>{let r=o=>Number.isInteger(o)?`${o}KB`:`${o.toFixed(1)}KB`;return`File too large: ${r(t)} (limit: ${r(n)}). Use startLine/endLine, matchString, or charOffset/charLength to read a bounded slice.`})(),{path:e,sizeKB:t,limitKB:n}),binaryFileUnsupported:e=>new Se(G.BINARY_FILE_UNSUPPORTED,`Binary file unsupported: ${$r(e)}. Use localSearchCode to grep embedded strings.`,{path:e}),outputTooLarge:(e,t)=>new Se(G.OUTPUT_TOO_LARGE,`Output too large: ${e} (limit: ${t})`,{size:e,limit:t}),commandNotAvailable:(e,t)=>new Se(G.COMMAND_NOT_AVAILABLE,`Command '${e}' is not available. ${t||"Please install it and ensure it is in your PATH."}`,{command:e,installHint:t}),commandExecutionFailed:(e,t,n)=>new Se(G.COMMAND_EXECUTION_FAILED,n?`Command '${e}' failed: ${n}`:`Command execution failed: ${e}`,{command:e,stderr:n},t),toolExecutionFailed:(e,t)=>new Se(G.TOOL_EXECUTION_FAILED,`Tool execution failed: ${e}`,{toolName:e},t)};import{getConfigSync as Km}from"@octocodeai/config";function mx(e=Km().local.allowedPaths){for(let t of e)typeof t=="string"&&t.trim()!==""&&Vm.addAllowedRoot(t)}function Le(e,t){if(!e.path?.trim()){let s=Ee.pathValidationFailed("","path is required");return{isValid:!1,errorResult:O(s,e,{toolName:t})}}mx();let n=process.env.WORKSPACE_ROOT?.trim()||Km().local.workspaceRoot||process.cwd(),r=e.path.replace(/^file:\/\//,""),o=Wm.isAbsolute(r)?r:Wm.resolve(n,r),i=Vm.validate(o);if(!i.isValid){let s=Ee.pathValidationFailed(e.path,i.error);return{isValid:!1,errorResult:O(s,e,{toolName:t,extra:{cwd:n,resolvedPath:o}})}}return{isValid:!0,sanitizedPath:i.sanitizedPath??o}}import{open as fx,readFile as hx,stat as gx}from"fs/promises";var wt={MCP_MAX_TOKENS:25e3,CHARS_PER_TOKEN:4,MAX_FETCH_CONTENT_CHARS:5e4,MAX_OUTPUT_SIZE_BYTES:10*1024*1024,LARGE_FILE_THRESHOLD_KB:100,MAX_ENTRIES_BEFORE_PAGINATION:100,MAX_FILES_DEFAULT:1e3,DEFAULT_ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200,MAX_LIST_ITEMS_DETAILED:100,MAX_LIST_ITEMS_SIMPLE:200,MAX_ARCHIVE_ENTRIES_PER_PAGE:100,MAX_DIR_ENTRIES_PER_PAGE:100,MAX_DIR_ENTRIES_TREE:1e3,DEFAULT_EXEC_TIMEOUT_MS:3e4,DEFAULT_MAX_MATCHES_PER_FILE:3,DEFAULT_CONTEXT_LINES:5,DEFAULT_MATCH_CONTENT_LENGTH:500,MAX_MATCH_CONTENT_LENGTH:800,DEFAULT_MATCHES_PER_PAGE:10,MAX_MATCHES_PER_PAGE:100,DEFAULT_FILES_PER_PAGE:20,MAX_FILES_PER_PAGE:50,MAX_RIPGREP_DIRECTORY_SIZE_MB:100,MAX_FILE_COUNT_FOR_SEARCH:1e3,ESTIMATED_AVG_FILE_SIZE_BYTES:50*1024,LARGE_RESULT_BYTES_HINT:1.5*1024*1024,BINARY_MAX_BYTES:10*1024,BINARY_DEFAULT_HEX_LINES:20,BINARY_DEFAULT_MIN_STRING_LENGTH:6,MAX_ARCHIVE_FILES:1e3,DEFAULT_ARCHIVE_MAX_FILES:200,GLOBAL_MEMORY_LIMIT_BYTES:100*1024*1024,PER_OPERATION_MEMORY_LIMIT_BYTES:10*1024*1024,MEMORY_RESERVATION_TIMEOUT_MS:300*1e3,TOKEN_CRITICAL_THRESHOLD:5e4,TOKEN_HIGH_THRESHOLD:25e3,TOKEN_MODERATE_THRESHOLD:1e4,TOKEN_NOTICE_THRESHOLD:2500};function Ym(e,t){return n=>t}function Ka(e,t){let n=Math.abs(t-e);return n>=50&&n/e>=.02?{sourceChars:e,sourceBytes:t}:{sourceChars:e}}function Ya(e,t,n){return{...e,...Ka(t,n)}}function Xm(e){let t=e.fullContent===!0,n=e.matchString!==void 0,r=e.startLine!==void 0||e.endLine!==void 0;if(e.minify==="symbols"&&(n||r))return{status:"error",error:'minify:"symbols" returns a whole-file signature skeleton and cannot be combined with matchString/startLine/endLine \u2014 remove the line/match constraints, or use minify:"standard" (or "none") to extract a specific range.'};if(t&&n)return{status:"error",error:"Cannot use fullContent with matchString \u2014 these are mutually exclusive extraction methods. Choose ONE: fullContent=true to read the entire file, OR matchString to extract matching sections, OR startLine+endLine for a known line range."};if(t&&r)return{status:"error",error:"Cannot use fullContent with startLine/endLine \u2014 these are mutually exclusive extraction methods. Choose ONE: fullContent=true to read the entire file, OR startLine+endLine for a known line range, OR matchString to extract matching sections."};if(n&&r)return{status:"error",error:"Cannot use matchString with startLine/endLine \u2014 these are mutually exclusive extraction methods. Choose ONE: matchString to extract matching sections, OR startLine+endLine for a known line range, OR fullContent=true to read the entire file."};let o=e.startLine!==void 0,i=e.endLine!==void 0;return o&&!i?{status:"error",error:`startLine=${e.startLine} provided without endLine \u2014 both are required for line-range extraction.`}:i&&!o?{status:"error",error:`endLine=${e.endLine} provided without startLine \u2014 both are required for line-range extraction.`}:null}async function qm(e,t){try{return{fileStats:await gx(t)}}catch(n){let r=Ee.fileAccessFailed(e.path,n instanceof Error?n:void 0);return{errorResult:O(r,e,{toolName:P.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function Jm(e){let t=e.startLine!==void 0&&e.endLine!==void 0;return e.minify??(e.fullContent===!0||t?"none":"standard")}function Zm(e,t,n){return n!=="none"?!1:t>wt.LARGE_FILE_THRESHOLD_KB&&!e.matchString&&!e.startLine&&!e.charLength}function ef(e,t,n){let r=Ee.fileTooLarge(e.path,n,wt.LARGE_FILE_THRESHOLD_KB);return O(r,e,{toolName:P.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}function tf(e,t){let n=Ee.binaryFileUnsupported(e.path);return O(n,e,{toolName:P.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}async function nf(e){let n=Buffer.alloc(8192),r;try{r=await fx(e,"r");let{bytesRead:o}=await r.read(n,0,8192,0);if(o===0)return!1;let i=n.subarray(0,o);if(i.includes(0))return!0;try{new TextDecoder("utf-8",{fatal:!0}).decode(i)}catch{return!0}let s=0,a=0,c=0;for(;c<i.length;){let u=i[c];if(u===27&&c+1<i.length&&i[c+1]===91){for(c+=2;c<i.length&&(i[c]<64||i[c]>126);)c+=1;c+=1;continue}s+=1;let l=u===9||u===10||u===13;u<32&&!l&&(a+=1),c+=1}return s>0&&a/s>.05}catch{return!1}finally{await r?.close().catch(Ym("binary sample handle close",void 0))}}async function rf(e,t){try{return{content:await hx(t,"utf-8")}}catch(n){let r=n instanceof Error?n:void 0,i=r?.code==="EISDIR"?Ee.fileAccessFailed(e.path,r):Ee.fileReadFailed(e.path,r);return{errorResult:O(i,e,{toolName:P.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function of(e,t){return{status:"empty",errorCode:G.NO_MATCHES,totalLines:t}}function yx(e,t,n){let r=bo(t,e.matchString,e.contextLines??5,e.matchStringIsRegex??!1,e.matchStringCaseSensitive??!1);if(r.lines.length===0)return{isPartial:!1,earlyResult:of(e,n)};let o=r.lines.join(`
57
+ `),i=e.contextLines??5,s=r.matchingLines.slice(0,10).join(", "),a=r.matchingLines.length>10?` (+${r.matchingLines.length-10} more)`:"",c=`Found ${r.matchCount} occurrence${r.matchCount===1?"":"s"} of "${e.matchString}" on line${r.matchingLines.length===1?"":"s"} ${s}${a} \u2014 all shown as ${r.matchRanges.length} slice${r.matchRanges.length===1?"":"s"}, \xB1${i} lines of context each; these lines are lineHint anchors for lspGetSemantics.`,u,l,d;if(r.matchRanges.length>0){let m=r.matchRanges[0],p=r.matchRanges[r.matchRanges.length-1];m&&p&&(u=m.start,l=p.end,d=r.matchRanges)}return{resultContent:o,isPartial:!0,actualStartLine:u,actualEndLine:l,matchRanges:d,matchedLines:r.matchingLines,warnings:[c]}}function Rx(e){return e.startLine!==void 0&&e.endLine!==void 0}function Sx(e,t,n){let r=String(n).length;return e.slice(t-1,n).map((o,i)=>`${String(t+i).padStart(r," ")}\u2192 ${o}`).join(`
58
+ `)}function bx(e,t,n){let r=e.startLine,o=e.endLine,i=Math.max(1,r),s=Math.min(o,n);if(o<r)return{isPartial:!1,earlyResult:{status:"empty",totalLines:n,errorCode:G.NO_MATCHES,warnings:[`startLine ${r} is greater than endLine ${o} \u2014 startLine must be \u2264 endLine`,`Use startLine=1 to ${n} with startLine \u2264 endLine for a valid range`]}};if(i>n)return{isPartial:!1,earlyResult:{status:"empty",totalLines:n,errorCode:G.NO_MATCHES,warnings:[`Requested startLine ${r} exceeds file length (${n} lines)`,`Use startLine=1 to ${n} for valid range`]}};let a=[];return o>n&&a.push(`Requested endLine ${o} adjusted to ${n} (file end)`),{resultContent:Sx(t,i,s),isPartial:!0,actualStartLine:i,actualEndLine:s,warnings:a}}function sf(e,t,n){let r=t.split(`
59
+ `),o=Ve(t);return e.matchString?yx(e,r,o):Rx(e)?bx(e,r,o):{resultContent:t,isPartial:!1}}async function af(e,t,n){let r=String(t.path),o=t.charLength,i=t.charOffset??0,s=o,a=!1,c,u=i;s===void 0&&!t.fullContent&&e.length>n&&(s=n,a=!0,c=`Auto-paginated: Content (${e.length} chars) exceeds ${n} char limit`);let l="char-limit",d=s;if(s!==void 0){let g=await To(e,u,s,r);l=g.chunkMode,d=g.length}let m=Po(e,u,d,s!==void 0?{pageSize:s}:void 0),p;if(m.hasMore&&l==="char-limit"&&xo(m.paginatedContent)){let g=m.charOffset+m.charLength;p=await wo(e,g,r)}let f=Jo("localGetFileContent",{path:r,charLength:s??m.charLength,minify:t.minify},m);return{windowedContent:m.paginatedContent,pagination:m,effectiveCharLength:s,explicitCharOffset:i,autoPaginated:a,autoPaginateWarning:c,chunkMode:l,nextBlockChar:p,next:f,showPagination:s!==void 0||i>0||a}}async function cf(e,t,n,r,o,i=!0,s=i?"standard":"none"){if(!t.resultContent||t.resultContent.trim().length===0)return{status:"empty",totalLines:r};let a=[...t.warnings??[]],c=String(e.path),u=i?F.applyContentViewMinification(t.resultContent,c):t.resultContent,l=await af(u,e,o);l.autoPaginateWarning&&a.push(l.autoPaginateWarning);let d=t.isPartial||l.pagination.hasMore;return{path:c,content:l.windowedContent,contentView:s,returnedChars:l.windowedContent.length,...d&&{isPartial:d},totalLines:r,...t.actualStartLine!==void 0&&t.actualEndLine!==void 0&&{startLine:t.actualStartLine,endLine:t.actualEndLine,...t.matchRanges!==void 0&&{matchRanges:t.matchRanges},...t.matchedLines!==void 0&&{matchedLines:t.matchedLines}},...n.mtime&&{modified:n.mtime.toISOString()},...l.showPagination&&{pagination:{...vs(l.pagination),chunkMode:l.chunkMode,...l.nextBlockChar!==void 0&&{nextBlockChar:l.nextBlockChar}}},...l.next?{next:l.next}:{},...a.length>0&&{warnings:a}}}async function Xa(e,t,n,r,o,i,s){let a=await af(t,e,s),c=[...a.autoPaginateWarning?[a.autoPaginateWarning]:[],...i?[i]:[]];return{path:e.path,content:a.windowedContent,contentView:"symbols",returnedChars:a.windowedContent.length,...a.pagination.hasMore&&{isPartial:!0},totalLines:n,...Ka(r,o),...a.showPagination&&{pagination:{...vs(a.pagination),chunkMode:a.chunkMode,...a.nextBlockChar!==void 0&&{nextBlockChar:a.nextBlockChar}}},...a.next?{next:a.next}:{},...c.length>0&&{warnings:c}}}function uf(e,t){return typeof e.content!="string"?e:{...e,contentView:t}}function qa(e,t){let n=Cx.sanitizeContent(e,t);return{text:n.content,warning:n.hasSecrets?`Secrets detected and redacted: ${n.secretsDetected.join(", ")}`:void 0}}async function lf(e){let t=Nt();try{let n=Le(e,P.LOCAL_FETCH_CONTENT);if(!n.isValid)return n.errorResult;let r=Xm(e);if(r)return r;let o=n.sanitizedPath,i=String(e.path),{fileStats:s,errorResult:a}=await qm(e,o);if(a||!s)return a;let c=typeof s.size=="bigint"?Number(s.size):s.size,u=c/1024;if(await nf(o))return Q(tf(e,o),c);let l=Jm(e);if(Zm(e,u,l))return Q(ef(e,o,u),c);let{content:d,errorResult:m}=await rf(e,o);if(m||d===void 0)return m;let p=d.length,f=Buffer.byteLength(d,"utf-8"),g=d,R=e.matchString!==void 0&&l!=="none",h=R?"none":l,y=R&&e.minify!==void 0?`minify:"${e.minify}" is not applied to matchString extractions \u2014 matched slices are returned verbatim so the content always contains the matched text.`:void 0,S=h==="standard"||h==="symbols",C=S?"standard":"none",x;if(h==="symbols"){let b=F.extractSignatures(g,i);if(b===null){let A=Co(g,i);if(A!==null){let M=qa(A,i);return Q(await Xa(e,M.text,Ve(g),p,f,M.warning,t),p)}x=`minify:"symbols" is not supported for this file type (${i.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(b!==null){let A=Ve(g),M=F.applyContentViewMinification(b,i),H=qa(M,i);return Q(await Xa(e,H.text,A,p,f,H.warning,t),p)}}let T=Ve(g),L=sf(e,g,t),_=b=>{let A=b.content;if(typeof A!="string")return b;let M=qa(A,i),H=[...x?[x]:[],...y?[y]:[],...M.warning?[M.warning]:[]],k=b.warnings??[];return{...b,content:M.text,...H.length>0&&{warnings:[...k,...H]}}};if(L.earlyResult){let b=L.earlyResult.content,A=S&&typeof b=="string"?{...L.earlyResult,content:F.applyContentViewMinification(b,i)}:L.earlyResult;return Q(Ya(_(uf(A,C)),p,f),p)}let w=await cf(e,L,s,T,t,S,C);return Q(Ya(_(w),p,f),p)}catch(n){return O(n,e,{toolName:P.LOCAL_FETCH_CONTENT})}}async function df(e){let{queries:t}=e;return ee(t||[],async n=>Te({toolName:P.LOCAL_FETCH_CONTENT,query:n,contextMessage:"localGetFileContent execution failed",execute:async()=>{let r=xe(_t,n);return r.ok===!1?r.error:await lf(r.data)}}),{toolName:P.LOCAL_FETCH_CONTENT,finalize:Px()},e)}function Px(){return({results:e})=>{let t={results:xx(e)},n=mn(t.results);n&&(t.base=n);let r=fn(t.results);return r&&(t.shared=r),{structuredContent:Qe(t),text:wx(t),isError:t.results.length>0&&t.results.every(o=>o.status==="error")}}}function xx(e){return e.map(t=>({...t,data:structuredClone(t.data)}))}function wx(e){let t=[];e.base&&t.push(`base: ${e.base}`,"");for(let n of e.results){let r=n.data,o=typeof r.content=="string"?r.content:void 0,i={...r};delete i.content,t.push(`result: ${n.id}${n.status?` (${n.status})`:""}`);let s=Bt({data:i},["data","path","resolvedPath","contentView","startLine","endLine","totalLines","isPartial","pagination","sourceChars","sourceBytes","returnedChars","warnings","error"]).trimEnd();s&&t.push(s),o!==void 0&&t.push("content (copy-safe):",o),t.push("")}return e.shared&&t.push(Bt({shared:e.shared},["shared"]).trimEnd()),t.join(`
36
60
  `).trimEnd()+`
37
- `}var FP=f(()=>{"use strict";pe();Ke();Dr();kd();Sc();Al();De();Vn();Sc()});function qr(e){return e===0?"0.0B":e<1024?`${e}.0B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e<1024*1024*1024*1024?`${(e/(1024*1024*1024)).toFixed(1)}GB`:`${(e/(1024*1024*1024*1024)).toFixed(1)}TB`}function Gi(e){let t=e.trim();if(/^\d+$/.test(t))return parseInt(t,10);let n=t.match(/^(\d+(?:\.\d+)?)(B|KB|MB|GB|TB)$/i);if(n&&n[1]&&n[2]){let s=parseFloat(n[1]);switch(n[2].toUpperCase()){case"B":return Math.round(s);case"KB":return Math.round(s*1024);case"MB":return Math.round(s*1024*1024);case"GB":return Math.round(s*1024*1024*1024);case"TB":return Math.round(s*1024*1024*1024*1024)}}let r=t.match(/^(\d+(?:\.\d+)?)([KMGT])$/i);if(!r||!r[1]||!r[2])throw new Error(`Invalid size format: ${e}`);let o=parseFloat(r[1]);switch(r[2].toUpperCase()){case"K":return Math.round(o*1024);case"M":return Math.round(o*1024*1024);case"G":return Math.round(o*1024*1024*1024);default:return Math.round(o*1024*1024*1024*1024)}}var Pc=f(()=>{"use strict"});function IP(e){let t=e.filter(o=>o.type==="file").length,n=e.filter(o=>o.type==="directory").length,r=e.reduce((o,i)=>i.type==="file"&&i.size?o+Gi(i.size):o,0);return`${e.length} entries (${t} files, ${n} dirs, ${qr(r)})`}function MP(e,t){let n=e.length,r=t.itemsPerPage||Dt.DEFAULT_ENTRIES_PER_PAGE,o=Math.max(1,Math.ceil(n/r)),i=Math.min(t.page||1,o),s=(i-1)*r,a=Math.min(s+r,n),c=i<o;return{paginatedEntries:e.slice(s,a),endIdx:a,pagination:{currentPage:i,totalPages:o,entriesPerPage:r,totalEntries:n,hasMore:c,...c?{nextPage:i+1}:{}}}}function Cc(e){if(e.skipped<=0)return[];let t=e.skipped-e.permissionDenied;return e.permissionDenied>0&&t>0?[`${e.skipped} entries skipped (${e.permissionDenied} permission denied, ${t} other errors)`]:e.permissionDenied>0?[`${e.permissionDenied} ${e.permissionDenied===1?"entry":"entries"} skipped due to permission denied`]:[`${e.skipped} ${e.skipped===1?"entry":"entries"} skipped due to access errors`]}var vp=f(()=>{"use strict";Ni();Pc()});function UI(e,t){let n=t??zI,r=new Set(e.split("/").filter(Boolean));return n.filter(o=>!r.has(o))}async function er(e){let t=e.details??!1,n=e.showFileLastModified??!1,r=n||(e.sortBy||"modified")==="modified";try{let o=ft(e,v.LOCAL_FIND_FILES);if(!o.isValid)return o.errorResult;let i={...e,path:o.sanitizedPath},s={...i,excludeDir:UI(i.path,i.excludeDir)},{warnings:a,query:c}=KI(s),l=e.limit??1e4,u=D.queryFileSystem({path:c.path,recursive:!0,includeRoot:!0,showHidden:!0,maxDepth:c.maxDepth,minDepth:c.minDepth,names:c.names,pathPattern:c.pathPattern,regex:c.regex,entryType:c.entryType,empty:c.empty,modifiedWithin:c.modifiedWithin,modifiedBefore:c.modifiedBefore,accessedWithin:c.accessedWithin,sizeGreater:c.sizeGreater,sizeLess:c.sizeLess,permissions:c.permissions,executable:c.executable,readable:c.readable,writable:c.writable,excludeDir:c.excludeDir,limit:1e4}),d=u.totalDiscovered,m=u.wasCapped,p=u.entries.map(K=>$I(K,r)),h=e.sortBy||"modified";qI(p,h,r);let g=p.slice(0,l),y=WI(g,t,n),b=y.length,S=e.itemsPerPage||20,x=e.page||1,k=Math.max(1,Math.ceil(b/S)),E=(x-1)*S,_=Math.min(E+S,b),G=y.slice(E,_),M=[...u.warnings,...Cc(u)],A=[...a,...M],q=x<k,H={...b===0?{status:"empty"}:{},path:i.path,files:G,pagination:{currentPage:x,totalPages:k,filesPerPage:S,totalFiles:b,hasMore:q,...q?{nextPage:x+1}:{},...m||d>b?{totalFilesFound:d}:{}},...q?{next:{nextPage:Ls(v.LOCAL_FIND_FILES,{...i,page:x+1},"Continue to the next page of matched files.")}}:{},...A.length>0&&{warnings:A}};return W(DP(H,e,{totalFiles:b}),u.entries.reduce((K,I)=>K+I.path.length,0))}catch(o){return N(o,e,{toolName:v.LOCAL_FIND_FILES})}}function $I(e,t){let n={path:e.path,type:e.entryType==="directory"?"directory":e.entryType==="symlink"?"symlink":"file",...e.size!==void 0?{size:e.size}:{},...e.permissions?{permissions:e.permissions}:{}};return t&&e.modifiedMs!==void 0&&(n.modified=new Date(e.modifiedMs).toISOString()),n}function DP(e,t,n){return e}function qI(e,t,n){e.sort((r,o)=>{switch(t){case"size":return(o.size??0)-(r.size??0);case"name":return(r.path.split("/").pop()||"").localeCompare(o.path.split("/").pop()||"");case"path":return r.path.localeCompare(o.path);default:return n&&r.modified&&o.modified?new Date(o.modified).getTime()-new Date(r.modified).getTime():r.path.localeCompare(o.path)}})}function WI(e,t,n){return e.map(r=>{let o={path:r.path,type:r.type};return r.size!==void 0&&r.type!=="directory"&&(t?o.size=r.size:o.sizeFormatted=qr(r.size)),t&&r.permissions&&(o.permissions=r.permissions),r.modified&&(o.modified=r.modified),o})}function KI(e){let t=[],n={...e},r=[{key:"modifiedBefore",value:e.modifiedBefore},{key:"modifiedWithin",value:e.modifiedWithin},{key:"accessedWithin",value:e.accessedWithin}];for(let{key:o,value:i}of r)i&&!VI.test(i)&&(t.push(`${o}="${i}" has an unsupported format \u2014 filter was skipped. Use a relative duration like "7d", "2h", "1w", or "3m".`),delete n[o]);return{warnings:t,query:n}}var zI,VI,Hi=f(()=>{"use strict";Vt();Pc();Ee();pe();ae();ue();Be();vp();zI=[];VI=/^\d+[hdwm]$/});async function NP(e){let{queries:t}=e;return me(t||[],async n=>ut({toolName:v.LOCAL_FIND_FILES,query:n,contextMessage:"localFindFiles execution failed",execute:async()=>{let r=ot(Dn,n);return r.ok===!1?r.error:await er(r.data)}}),{toolName:v.LOCAL_FIND_FILES},e)}var GP=f(()=>{"use strict";_l();pe();Ke();Hi();De();Vn();Hi()});function Bi(e){return xc.exec(e)?.[1]?.toLowerCase()??""}function r0(e){let t=Bi(e);if(!t)return!1;for(let n of n0)if(Qi[n].extensions.includes(t))return!0;return!1}function Ip(e,t,n){if(n&&n!=="auto")return Qi[n];let r=Bi(e),o=(t??"").toLowerCase();for(let i of Ap){let s=Qi[i];if(i!=="generic"&&o&&(i===o||s.extensions.includes(o)))return s}for(let i of Ap){let s=Qi[i];if(i!=="generic"&&s.extensions.includes(r))return s}return Qi.generic}function wc(e){return YI.test(e)?"generated":JI.test(e)?"fixture":XI.test(e)?"test":e0.test(e)?"config":ZI.test(e)?"docs":!ji.test(e)&&(t0.test(e)||r0(e))?"source":"unknown"}function Mp(e){if(!e)return!1;if(ji.test(e))return!0;let t=wc(e);return t==="test"||t==="docs"||t==="fixture"||t==="generated"}var Ap,de,Lp,_p,HP,Qi,Fp,ji,YI,XI,JI,ZI,e0,t0,n0,xc,Tc=f(()=>{"use strict";Ap=["typescript","javascript","rust","python","go","java","scala","markdown","json","yaml","generic"],de={exactWholeWord:6,exactCaseInsensitive:3,substring:1,declarationLine:8,exportLine:4,importLine:3,configKeyLine:4,headingLine:4,commentOrStringPenalty:-2,pathUnderQuery:4,pathSegmentToken:3,extMatchesLangType:2,sourceDir:1.5,lowSignalPathPenalty:-5,rareQueryTokenScale:2,rareQueryTokenCap:3,matchCountScale:1.5,matchCountCap:6},Lp=2e3,_p=/^\s*(\/\/|#|\*|\/\*|<!--|--)/,HP={declaration:[/\b(function|class|interface|type|enum|const|let|var)\s+\w/,/\b\w+\s*[:=]\s*(async\s+)?(function|\()/],export:[/\bexport\b/,/\bmodule\.exports\b/,/\bexport\s+default\b/],import:[/\b(import|require)\b/,/\bfrom\s+['"]/]},Qi={typescript:{id:"typescript",extensions:["ts","tsx","mts","cts"],...HP},javascript:{id:"javascript",extensions:["js","jsx","mjs","cjs"],...HP},rust:{id:"rust",extensions:["rs"],declaration:[/\b(fn|struct|enum|trait|impl|mod|type|const|static|macro_rules!)\b/],export:[/\bpub(\s*\([^)]*\))?\s+(fn|struct|enum|trait|mod|type|const|static)\b/],import:[/\buse\s+/,/\bextern\s+crate\b/]},python:{id:"python",extensions:["py","pyi"],declaration:[/^\s*(async\s+)?def\s+\w/,/^\s*class\s+\w/,/^\s*@\w/],export:[/^\s*__all__\s*=/],import:[/^\s*(import|from)\s+/]},go:{id:"go",extensions:["go"],declaration:[/\b(func|type|struct|interface)\b/,/^\s*(const|var)\s+/],export:[/\b(func|type)\s+[A-Z]\w*/],import:[/^\s*import\s+/,/^\s*"[^"]+"\s*$/]},java:{id:"java",extensions:["java"],declaration:[/\b(class|interface|enum|record)\s+\w/,/\b\w+\s*\([^)]*\)\s*\{/],export:[/\b(public|protected)\b/,/^\s*@\w/],import:[/^\s*import\s+/]},scala:{id:"scala",extensions:["scala","sc"],declaration:[/\b(class|object|trait|def|val|var|type|case\s+class)\s+\w/],export:[/\b(export|implicit)\b/,/^\s*@\w/],import:[/^\s*import\s+/]},markdown:{id:"markdown",extensions:["md","markdown","mdx"],declaration:[],export:[],import:[/^\s*\[[^\]]+\]\([^)]+\)/]},json:{id:"json",extensions:["json","jsonc","json5"],declaration:[],export:[],import:[]},yaml:{id:"yaml",extensions:["yaml","yml"],declaration:[],export:[],import:[]},generic:{id:"generic",extensions:[],declaration:[/\b(function|def|fn|func|class|struct|interface|type)\b/],export:[/\b(export|public|pub)\b/],import:[/\b(import|require|use|include)\b/]}},Fp=/^\s*#{1,6}\s/,ji=/(^|\/)(dist|build|out|coverage|node_modules|vendor|\.next|__snapshots__)(\/|$)/,YI=/(\.min\.|\.bundle\.|\.generated\.|\.d\.ts$|-lock\.)/,XI=/(^|\/)(tests?|__tests__|spec|e2e)(\/|$)|\.(test|spec)\./,JI=/(^|\/)(fixtures?|__fixtures__|snapshots?)(\/|$)/,ZI=/(^|\/)(docs?|examples?)(\/|$)|\.(md|markdown|mdx|rst|txt)$/i,e0=/(^|\/)(config|\.github)(\/|$)|\.(json|ya?ml|toml|ini|cfg|conf|env)$|(^|\/)[^/]*\.config\.[jt]s$/i,t0=/(^|\/)(src|lib|app|packages|internal|pkg|cmd|crates|include|sources?)(\/|$)/,n0=new Set(["typescript","javascript","rust","python","go","java","scala"]),xc=/\.([a-z0-9]+)$/i});function Dp(e,t,n,r={}){if(t==="matchCount")return{files:[...e].sort(QP),cappedCandidates:0};if(t==="path")return{files:[...e].sort((d,m)=>d.path.localeCompare(m.path)),cappedCandidates:0};if(t==="created"||t==="modified"||t==="accessed")return{files:[...e],cappedCandidates:0};let o=r.candidateCap??Lp,i=e,s=[],a=0;if(e.length>o){let d=[...e].sort(QP);i=d.slice(0,o),s=d.slice(o),a=s.length}let c=jp(i,n),l=i.map(d=>{try{return{file:d,s:Bp(d,n,c)}}catch{return{file:d,s:o0()}}});l.sort((d,m)=>{if(m.s.score!==d.s.score)return m.s.score-d.s.score;let p=(m.file.matchCount??0)-(d.file.matchCount??0);return p!==0?p:d.file.path.localeCompare(m.file.path)});let u={files:[...l.map(d=>d.file),...s],cappedCandidates:a};return r.debug&&(u.debug=new Map(l.map(d=>[d.file.path,d.s]))),u}function o0(){return{score:0,profile:"generic",pathRole:"unknown",reasons:["ranking unavailable for this file"]}}function QP(e,t){let n=(t.matchCount??0)-(e.matchCount??0);return n!==0?n:e.path.localeCompare(t.path)}function zi(e,t){for(let n of e)if(n.test(t))return!0;return!1}function Ec(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Np(e){return!!e&&/^[A-Za-z_$][\w$]*$/.test(e.trim())}function Gp(e,t,n){if(e.indexOf(`
61
+ `}function wn(e){return e===0?"0.0B":e<1024?`${e}.0B`:e<1024*1024?`${(e/1024).toFixed(1)}KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)}MB`:e<1024*1024*1024*1024?`${(e/(1024*1024*1024)).toFixed(1)}GB`:`${(e/(1024*1024*1024*1024)).toFixed(1)}TB`}function jr(e){let t=e.trim();if(/^\d+$/.test(t))return parseInt(t,10);let n=t.match(/^(\d+(?:\.\d+)?)(B|KB|MB|GB|TB)$/i);if(n&&n[1]&&n[2]){let s=parseFloat(n[1]);switch(n[2].toUpperCase()){case"B":return Math.round(s);case"KB":return Math.round(s*1024);case"MB":return Math.round(s*1024*1024);case"GB":return Math.round(s*1024*1024*1024);case"TB":return Math.round(s*1024*1024*1024*1024)}}let r=t.match(/^(\d+(?:\.\d+)?)([KMGT])$/i);if(!r||!r[1]||!r[2])throw new Error(`Invalid size format: ${e}`);let o=parseFloat(r[1]);switch(r[2].toUpperCase()){case"K":return Math.round(o*1024);case"M":return Math.round(o*1024*1024);case"G":return Math.round(o*1024*1024*1024);default:return Math.round(o*1024*1024*1024*1024)}}function Ja(e){let t=e.indexOf("{");if(t===-1)return[e];let n=e.indexOf("}",t);if(n===-1)return[e];let r=e.slice(0,t),o=e.slice(t+1,n).split(","),i=e.slice(n+1);return o.flatMap(s=>Ja(`${r}${s}${i}`))}function pf(e){let t=new Map,n=0,r=!1,o=0,i=0,s=new Set;for(let a of e){for(let c of a.entries)t.has(c.path)||t.set(c.path,c);n+=a.totalDiscovered,r=r||a.wasCapped,o+=a.skipped,i+=a.permissionDenied;for(let c of a.warnings)s.add(c)}return{entries:[...t.values()],totalDiscovered:n,wasCapped:r,skipped:o,permissionDenied:i,warnings:[...s]}}function mf(e){let t=e.filter(o=>o.type==="file").length,n=e.filter(o=>o.type==="directory").length,r=e.reduce((o,i)=>i.type==="file"&&i.size?o+jr(i.size):o,0);return`${e.length} entries (${t} files, ${n} dirs, ${wn(r)})`}function ff(e,t){let n=e.length,r=t.itemsPerPage||20,o=Math.max(1,Math.ceil(n/r)),i=t.page||1,s=Math.min(i,o),a=i>o,c=(s-1)*r,u=Math.min(c+r,n),l=s<o;return{paginatedEntries:e.slice(c,u),endIdx:u,pagination:{currentPage:s,totalPages:o,entriesPerPage:r,totalEntries:n,hasMore:l,...l?{nextPage:s+1}:{},...a?{outOfRange:!0}:{}}}}function Si(e){if(e.skipped<=0)return[];let t=e.skipped-e.permissionDenied;return e.permissionDenied>0&&t>0?[`${e.skipped} entries skipped (${e.permissionDenied} permission denied, ${t} other errors)`]:e.permissionDenied>0?[`${e.permissionDenied} ${e.permissionDenied===1?"entry":"entries"} skipped due to permission denied`]:[`${e.skipped} ${e.skipped===1?"entry":"entries"} skipped due to access errors`]}function hf(e){let t=e.find(r=>r.type==="file");if(t)return{fetch:{tool:"localGetFileContent",query:{path:t.path,minify:"standard"},why:'Read the first matched file (minify:"symbols" for a skeleton, minify:"none" for exact bytes).',confidence:"exact"}};let n=e.find(r=>r.type==="directory");if(n)return{viewStructure:{tool:"localViewStructure",query:{path:n.path},why:"Orient inside the first matched directory before reading files.",confidence:"exact"}}}var Tx=["node_modules",".git","dist","build","out","coverage","target",".next",".cache"];function Ex(e,t){let n=t??Tx,r=new Set(e.split("/").filter(Boolean));return n.filter(o=>!r.has(o))}async function gf(e){let t=e.detail==="full",n=e.detail==="modified"||t,r=n||(e.sortBy||"modified")==="modified";try{let o=Le(e,P.LOCAL_FIND_FILES);if(!o.isValid)return o.errorResult;let i={...e,path:o.sanitizedPath},s={...i,excludeDir:Ex(i.path,i.excludeDir)},{warnings:a,query:c}=Ix(s),u=e.limit??1e4,l={path:c.path,recursive:!0,includeRoot:!0,showHidden:!0,maxDepth:c.maxDepth,minDepth:c.minDepth,names:c.names,extensions:c.extensions,regex:c.regex,entryType:c.entryType,empty:c.empty,modifiedWithin:c.time?.modifiedWithin,modifiedBefore:c.time?.modifiedBefore,accessedWithin:c.time?.accessedWithin,sizeGreater:c.size?.greater,sizeLess:c.size?.less,permissions:c.permissions,executable:c.access==="executable",readable:c.access==="readable",writable:c.access==="writable",excludeDir:c.excludeDir,limit:1e4},d=c.pathPattern?Ja(c.pathPattern):void 0,m=d&&d.length>1?pf(d.map(Y=>F.queryFileSystem({...l,pathPattern:Y}))):F.queryFileSystem({...l,pathPattern:c.pathPattern}),p=m.totalDiscovered,f=m.wasCapped,g=m.entries.map(Y=>Lx(Y,r)),R=e.sortBy||"modified";Ax(g,R,r);let h=g.slice(0,u),y=_x(h,t,n),S=y.length,C=e.itemsPerPage||20,x=e.page||1,T=Math.max(1,Math.ceil(S/C)),L=(x-1)*C,_=Math.min(L+C,S),w=y.slice(L,_),b=S>0&&L>=S,A=w,M=[...m.warnings,...Si(m),...f?[`results capped at ${1e4} during the walk before sorting \u2014 sortBy:"${R}" only orders that partial set, not the true top-N across the whole tree`]:[],...b?[`page:${x} is out of range (only ${T} page(s), ${S} total file(s)) \u2014 returned 0 files. Use page:1..${T}.`]:[]],H=[...a,...M],k=x<T,Z={...hf(A)??{},...k?{nextPage:Rn(P.LOCAL_FIND_FILES,{...i,page:x+1},"Continue to the next page of matched files.")}:{}},v={...S===0?{status:"empty"}:{},path:i.path,files:A,pagination:{currentPage:x,totalPages:T,filesPerPage:C,totalFiles:S,hasMore:k,...k?{nextPage:x+1}:{},...f||p>S?{totalFilesFound:p}:{},...b?{outOfRange:!0}:{}},...Object.keys(Z).length>0?{next:Z}:{},...H.length>0&&{warnings:H}};return Q(v,m.entries.reduce((Y,ae)=>Y+ae.path.length,0))}catch(o){return O(o,e,{toolName:P.LOCAL_FIND_FILES})}}function Lx(e,t){let n={path:e.path,type:e.entryType==="directory"?"directory":e.entryType==="symlink"?"symlink":"file",...e.size!==void 0?{size:e.size}:{},...e.permissions?{permissions:e.permissions}:{}};return t&&e.modifiedMs!==void 0&&(n.modified=new Date(e.modifiedMs).toISOString()),n}function Ax(e,t,n){e.sort((r,o)=>{switch(t){case"size":return(o.size??0)-(r.size??0);case"name":return(r.path.split("/").pop()||"").localeCompare(o.path.split("/").pop()||"");case"path":return r.path.localeCompare(o.path);default:return n&&r.modified&&o.modified?new Date(o.modified).getTime()-new Date(r.modified).getTime():r.path.localeCompare(o.path)}})}function _x(e,t,n){return e.map(r=>{let o={path:r.path,type:r.type};return r.size!==void 0&&r.type!=="directory"&&(t?o.size=r.size:o.sizeFormatted=wn(r.size)),t&&r.permissions&&(o.permissions=r.permissions),r.modified&&(o.modified=r.modified),o})}var kx=/^\d+[hdwm]$/;function Ix(e){let t=[],n=e.time;if(!n)return{warnings:t,query:e};let r={...n},o=[{key:"modifiedBefore",value:n.modifiedBefore},{key:"modifiedWithin",value:n.modifiedWithin},{key:"accessedWithin",value:n.accessedWithin}];for(let{key:i,value:s}of o)s&&!kx.test(s)&&(t.push(`time.${i}="${s}" has an unsupported format \u2014 filter was skipped. Use a relative duration like "7d", "2h", "1w", or "3m".`),delete r[i]);return{warnings:t,query:{...e,time:r}}}async function yf(e){let{queries:t}=e;return ee(t||[],async n=>Te({toolName:P.LOCAL_FIND_FILES,query:n,contextMessage:"localFindFiles execution failed",execute:async()=>{let r=xe(kt,n);return r.ok===!1?r.error:await gf(r.data)}}),{toolName:P.LOCAL_FIND_FILES},e)}import{readFileSync as vx}from"node:fs";import{posix as Sf}from"node:path";var Ox=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","export","extends","false","finally","for","function","if","import","in","instanceof","new","null","return","super","switch","this","throw","true","try","typeof","var","void","while","with","yield","let","static","async","await"]);function bi(e){return e?!Ox.has(e):!1}import{posix as Ci}from"node:path";var ec=[".ts",".tsx",".js",".jsx",".mjs",".cjs"],Fx={".js":".ts",".jsx":".tsx",".mjs":".mts",".cjs":".cts"};function Rf(e){return e.split("\\").join("/")}function Wt(e,t,n){let r=Rf(e);if(!r.startsWith(".")&&!r.startsWith("/"))return null;let o=Ci.dirname(Rf(t)),i=r.startsWith("/")?r.slice(1):Ci.normalize(Ci.join(o,r)),s=[];if(ec.some(c=>i.endsWith(c))){s.push(i);for(let[c,u]of Object.entries(Fx))if(i.endsWith(c)){s.push(i.slice(0,-c.length)+u);break}}else{s.push(i);for(let c of ec)s.push(`${i}${c}`);for(let c of ec)s.push(Ci.join(i,`index${c}`))}for(let c of s)if(n.has(c))return c;return null}var Dx=1e6,bf=["node_modules","dist","build","out","coverage",".git","target",".next",".cache"];function Mx(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Nx(e,t){let n=e.match(new RegExp(`\\b${Mx(t)}\\b`,"g"));return n?n.length:0}function Cf(e,t,n){let r=F.getSupportedGraphFactExtensions(),i=F.queryFileSystem({path:e,recursive:!0,showHidden:!1,entryType:"f",extensions:r,excludeDir:t,stopAtLimit:!0,limit:n}).entries,s=i.length>=n,a=new Set(i.map(f=>Sf.normalize(f.relativePath.split("\\").join("/")))),c=new Map,u=new Map,l=new Set,d=new Set,m=new Map,p=0;for(let f of i){let g=Sf.normalize(f.relativePath.split("\\").join("/"));if((f.size??0)>Dx){p++;continue}let R;try{R=vx(f.path,"utf-8")}catch{p++;continue}let h=F.extractGraphFacts(R,g);if(!h){p++;continue}let y;try{y=JSON.parse(h)}catch{p++;continue}let S=(y.declarations??[]).filter(b=>bi(b.name)).map(b=>({id:b.id,name:b.name,kind:b.kind,line:b.line,exported:b.exported??!1})),C=new Map;for(let b of S)!b.exported||C.has(b.name)||C.set(b.name,Nx(R,b.name));let x=(y.exports??[]).filter(b=>b.source&&b.name!=="*").map(b=>({specifier:b.source,localName:b.localName??b.name,importedName:b.name,line:b.line})),T=(y.calls??[]).filter(b=>b.kind==="dynamic-import").map(b=>b.callee),L={relativePath:g,declarations:S,imports:(y.imports??[]).map(b=>({specifier:b.specifier,localName:b.localName,importedName:b.importedName,line:b.line})),namedReexports:x,calls:(y.calls??[]).filter(b=>b.kind!=="dynamic-import").map(b=>({caller:b.caller,callee:b.callee})),referenceCounts:C};c.set(g,L);let _=new Set,w=new Set;for(let b of[...L.imports,...L.namedReexports]){let A=Wt(b.specifier,g,a);A&&A!==g&&_.add(A)}for(let b of T){let A=Wt(b,g,a);A&&A!==g&&(_.add(A),w.add(A),d.add(A))}for(let b of y.exports??[]){if(!b.source||b.name!=="*")continue;let A=Wt(b.source,g,a);if(A&&A!==g){_.add(A),l.add(A);let M=m.get(A)??[];M.push(g),m.set(A,M)}}u.set(g,{relativePath:g,importsFiles:_,dynamicImportsFiles:w})}return{facts:c,fileGraph:u,filesScanned:c.size,filesSkipped:p,truncated:s,starReexportTargets:l,dynamicImportTargets:d,starReexporters:m}}import{readFileSync as Gx}from"node:fs";import{posix as tc}from"node:path";var Hx=/(\.(test|spec)\.[^/]+$)|(^|\/)(__tests__|tests?)\//i,Bx=/\.(mjs|cjs|jsx?|tsx?)$/i;function Ux(e){let t=[];for(let n of e.split(/\s+/)){let r=n.includes("=")?[n,n.slice(n.indexOf("=")+1)]:[n];for(let o of r){let i=o.replace(/^["']|["']$/g,"");Bx.test(i)&&!i.startsWith("-")&&t.push(i)}}return t}function nc(e){return e.split("\\").join("/")}function Pf(e){return e.replace(/^\.\//,"")}var Qx=["dist","build","out"],$x={".js":".ts",".jsx":".tsx",".mjs":".mts",".cjs":".cts"};function xf(e){for(let[t,n]of Object.entries($x))if(e.endsWith(t))return e.slice(0,-t.length)+n}function jx(e,t){let n=[],r=xf(e);r&&n.push(r);for(let o of Qx){let i=`${o}/`;if(!e.startsWith(i))continue;let a=`src/${e.slice(i.length)}`;n.push(a);let c=xf(a);c&&n.push(c)}return n.find(o=>t.has(o))}function zr(e,t){if(typeof e=="string"){t.push(e);return}if(Array.isArray(e)){for(let n of e)zr(n,t);return}if(e&&typeof e=="object")for(let n of Object.values(e))zr(n,t)}function wf(e,t,n,r){let o=[],i=new Set,s=!1;if(t&&t.length>0){let a=nc(e).replace(/\/$/,"");for(let c of t){let u=Pf(nc(c));u.startsWith(a+"/")&&(u=u.slice(a.length+1)),u=tc.normalize(u),r.has(u)?i.add(u):o.push(`entrypoint not found in scan: ${c} \u2014 pass it relative to the scanned path (e.g. "src/index.ts"), or as an absolute path under it`)}}else{let a;try{let c=tc.join(e,"package.json");a=JSON.parse(Gx(c,"utf-8"))}catch{}if(a){let c=[];if(zr(a.main,c),zr(a.exports,c),zr(a.bin,c),a.scripts&&typeof a.scripts=="object")for(let u of Object.values(a.scripts))typeof u=="string"&&c.push(...Ux(u));for(let u of c){let l=tc.normalize(Pf(nc(u))),d=r.has(l)?l:jx(l,r);d&&i.add(d)}}i.size===0&&(o.push("no entrypoints resolved from package.json \u2014 pass `entrypoints` explicitly, or every export in a reachable file will read as unreachable"),s=!0)}if(n)for(let a of r)Hx.test(a)&&i.add(a);return{entrypoints:[...i],warnings:o,lowConfidence:s}}function rc(e,t){let n=new Set,r=[];for(let o of t)n.has(o)||(n.add(o),r.push(o));for(;r.length>0;){let o=r.pop(),i=e.get(o);if(i)for(let s of i.importsFiles)n.has(s)||(n.add(s),r.push(s))}return n}function Tf(e){let t=0,n=new Map,r=new Map,o=new Set,i=[],s=[],a=[];for(let c of e.keys())if(!n.has(c))for(a.push({node:c,iterator:(e.get(c)?.importsFiles??new Set).values()}),n.set(c,t),r.set(c,t),t++,i.push(c),o.add(c);a.length>0;){let u=a[a.length-1],l=u.iterator.next();if(!l.done){let d=l.value;if(!n.has(d))n.set(d,t),r.set(d,t),t++,i.push(d),o.add(d),a.push({node:d,iterator:(e.get(d)?.importsFiles??new Set).values()});else if(o.has(d)){let m=r.get(u.node),p=n.get(d);r.set(u.node,Math.min(m,p))}continue}if(a.pop(),a.length>0){let d=a[a.length-1],m=r.get(d.node),p=r.get(u.node);r.set(d.node,Math.min(m,p))}if(r.get(u.node)===n.get(u.node)){let d=[],m;do m=i.pop(),o.delete(m),d.push(m);while(m!==u.node);(d.length>1||(e.get(d[0])?.importsFiles.has(d[0])??!1))&&s.push({files:d})}}return s}function Wr(e,t){return`${e}::${t}`}function oc(e,t,n,r,o,i,s){let a=Wr(e,t);if(s.has(a))return!1;if(n.has(e)||r.has(a))return!0;s.add(a);for(let c of o.get(a)??[])if(oc(c.file,c.localName,n,r,o,i,s))return!0;for(let c of i.get(e)??[])if(oc(c,t,n,r,o,i,s))return!0;return!1}function Ef(e,t,n,r,o,i){let s=new Set(t.declarations.filter(l=>l.exported).map(l=>l.name)),a=new Set;for(let l of s)oc(e,l,n,r,o,i,new Set)&&a.add(l);let c=l=>!s.has(l)||a.has(l),u=!0;for(;u;){u=!1;for(let l of s){if(a.has(l))continue;let d=t.calls.filter(f=>f.callee===l);if(d.some(f=>f.caller!==l&&c(f.caller))){a.add(l),u=!0;continue}let m=d.filter(f=>f.caller===l||!c(f.caller)).length;(t.referenceCounts.get(l)??0)-m>1&&(a.add(l),u=!0)}}return a}function Lf(e,t){let n=t.excludeDir&&t.excludeDir.length>0?t.excludeDir:bf,r=t.maxFiles??2e4,{facts:o,fileGraph:i,filesScanned:s,filesSkipped:a,truncated:c,dynamicImportTargets:u,starReexporters:l}=Cf(e,n,r),d=new Set(o.keys()),{entrypoints:m,warnings:p,lowConfidence:f}=wf(e,t.entrypoints,t.includeTests??!0,d);c&&p.push(`scan stopped at maxFiles (${r}) \u2014 results are partial, not a full-repo verdict`);let g=m.filter(v=>{let Y=o.get(v);return(i.get(v)?.importsFiles.size??0)===0&&(Y?.declarations.length??0)===0&&(Y?.namedReexports.length??0)===0}),R=g.length>0;R&&p.push(`${g.length} entrypoint file(s) parsed to no imports/exports (likely an extractor parse failure on that file) \u2014 reachability from them is unreliable, so "unreachable-file" results here are low-confidence and may be false positives: ${g.join(", ")}`);let h=rc(i,m),y=new Set(m),S=new Map([...i].map(([v,Y])=>[v,{relativePath:Y.relativePath,importsFiles:new Set([...Y.importsFiles].filter(ae=>!Y.dynamicImportsFiles.has(ae))),dynamicImportsFiles:new Set}])),C=rc(S,m),x=[...h].filter(v=>!C.has(v)).sort();x.length>0&&p.push(`${x.length} file(s) reachable only through a dynamic import() \u2014 lower confidence than static analysis, verify with lspGetSemantics before treating as proof: ${x.join(", ")}`);let T=new Map;for(let[v,Y]of o){let ae=new Map;for(let ie of Y.imports){let ce=Wt(ie.specifier,v,d);ce&&ae.set(ie.localName,ce)}T.set(v,ae)}let L=new Set,_=new Map;for(let v of h){let Y=o.get(v);if(!Y)continue;let ae=T.get(v);for(let ie of Y.imports){let ce=ae?.get(ie.localName);ce&&L.add(Wr(ce,ie.importedName))}for(let ie of Y.namedReexports){let ce=Wt(ie.specifier,v,d);if(!ce)continue;let _e=Wr(ce,ie.importedName),Et=_.get(_e)??[];Et.push({file:v,localName:ie.localName}),_.set(_e,Et)}}let w=new Map;for(let[v,Y]of l){let ae=Y.filter(ie=>h.has(ie));ae.length>0&&w.set(v,ae)}let b=new Set(w.keys()),A=[],M=Tf(i),H=new Map,k=[],B=0;for(let v of M){if(!v.files.every(ie=>!h.has(ie)))continue;let ae=B++;for(let ie of v.files)H.set(ie,ae);k.push({id:ae,files:v.files,reason:"mutually-referencing cluster with no path from any entrypoint \u2014 each file looks locally referenced by the others, but the cluster as a whole is unreachable"})}let Z=new Map;for(let[v,Y]of o){let ae=y.has(v),ie=h.has(v);for(let ce of Y.declarations){if(!ce.exported)continue;if(!ie){let Et=H.get(v);A.push({file:v,name:ce.name,kind:ce.kind,line:ce.line,reason:Et!==void 0?"dead-cluster":"unreachable-file",...Et!==void 0?{clusterId:Et}:{}});continue}if(ae||b.has(v)||u.has(v))continue;let _e=Z.get(v);_e||(_e=Ef(v,Y,y,L,_,w),Z.set(v,_e)),_e.has(ce.name)||A.push({file:v,name:ce.name,kind:ce.kind,line:ce.line,reason:"unreferenced-export",viaHeuristic:_.has(Wr(v,ce.name))?"reexport-chain":"lexical-count"})}}return{filesScanned:s,filesSkipped:a,entrypointsResolved:m,deadExports:A,deadClusters:k,warnings:p,...f||R?{confidence:"low"}:{}}}var zx=100;function Wx(e,t,n){let r=Math.max(1,Math.ceil(e.length/n)),o=Math.min(Math.max(1,t),r),i=(o-1)*n;return{pageItems:e.slice(i,i+n),currentPage:o,totalPages:r,hasMore:o<r,outOfRange:t>r}}async function Af(e){try{let t=Le(e,P.LOCAL_FIND_DEAD_CODE);if(!t.isValid)return t.errorResult;let n=Lf(t.sanitizedPath,e),r=e.itemsPerPage??zx,o=e.page??1,{pageItems:i,currentPage:s,totalPages:a,hasMore:c,outOfRange:u}=Wx(n.deadExports,o,r),l=[...n.warnings,...u?[`page:${o} is out of range (only ${a} page(s), ${n.deadExports.length} total candidates) \u2014 returned page ${s} instead.`]:[]],d={path:e.path,filesScanned:n.filesScanned,filesSkipped:n.filesSkipped,entrypointsResolved:n.entrypointsResolved,deadExports:i,deadClusters:n.deadClusters,pagination:{currentPage:s,totalPages:a,entriesPerPage:r,totalEntries:n.deadExports.length,hasMore:c,...u?{outOfRange:!0}:{}},...l.length>0?{warnings:l}:{},...n.confidence?{confidence:n.confidence}:{}};c&&(d.next={nextPage:Rn(P.LOCAL_FIND_DEAD_CODE,{...e,page:s+1},"Continue to the next page of dead-export candidates.")});let m=i[0];if(m){let p=t.sanitizedPath.replace(/\/+$/,"");d.next={...d.next,verifyReferences:{tool:le,query:{type:"references",uri:`${p}/${m.file}`,symbolName:m.name,lineHint:m.line,includeDeclaration:!1,groupByFile:!0},why:`Verify candidate "${m.name}" before any delete claim \u2014 zero references = confirmed dead. Repeat per candidate using each entry's file/name/line; start with viaHeuristic:"reexport-chain" candidates (most fragile).`,confidence:"high"}}}return d}catch(t){let n=Ee.toolExecutionFailed(P.LOCAL_FIND_DEAD_CODE,t instanceof Error?t:new Error(String(t)));return O(n,e,{toolName:P.LOCAL_FIND_DEAD_CODE})}}async function _f(e){let{queries:t}=e;return ee(t||[],async n=>Te({toolName:P.LOCAL_FIND_DEAD_CODE,query:n,contextMessage:"localFindDeadCode execution failed",execute:async()=>{let r=xe(It,n);return r.ok===!1?r.error:await Af(r.data)}}),{toolName:P.LOCAL_FIND_DEAD_CODE},e)}import{validateRipgrepQuery as Pw}from"@octocodeai/octocode-core/schemas/runtime";var ic=["typescript","javascript","rust","python","go","java","scala","markdown","json","yaml","generic"],ne={exactWholeWord:6,exactCaseInsensitive:3,substring:1,declarationLine:8,exportLine:4,importLine:3,configKeyLine:4,headingLine:4,commentOrStringPenalty:-2,pathUnderQuery:4,pathSegmentToken:3,extMatchesLangType:2,sourceDir:1.5,lowSignalPathPenalty:-5,testPathPenalty:-3.5,rareQueryTokenScale:2,rareQueryTokenCap:3,matchCountScale:1.5,matchCountCap:6},sc=2e3,ac=/^\s*(\/\/|#|\*|\/\*|<!--|--)/,kf={declaration:[/\b(function|class|interface|type|enum|const|let|var)\s+\w/,/\b\w+\s*[:=]\s*(async\s+)?(function|\()/],export:[/\bexport\b/,/\bmodule\.exports\b/,/\bexport\s+default\b/],import:[/\b(import|require)\b/,/\bfrom\s+['"]/]},Vr={typescript:{id:"typescript",extensions:["ts","tsx","mts","cts"],...kf},javascript:{id:"javascript",extensions:["js","jsx","mjs","cjs"],...kf},rust:{id:"rust",extensions:["rs"],declaration:[/\b(fn|struct|enum|trait|impl|mod|type|const|static|macro_rules!)\b/],export:[/\bpub(\s*\([^)]*\))?\s+(fn|struct|enum|trait|mod|type|const|static)\b/],import:[/\buse\s+/,/\bextern\s+crate\b/]},python:{id:"python",extensions:["py","pyi"],declaration:[/^\s*(async\s+)?def\s+\w/,/^\s*class\s+\w/,/^\s*@\w/],export:[/^\s*__all__\s*=/],import:[/^\s*(import|from)\s+/]},go:{id:"go",extensions:["go"],declaration:[/\b(func|type|struct|interface)\b/,/^\s*(const|var)\s+/],export:[/\b(func|type)\s+[A-Z]\w*/],import:[/^\s*import\s+/,/^\s*"[^"]+"\s*$/]},java:{id:"java",extensions:["java"],declaration:[/\b(class|interface|enum|record)\s+\w/,/\b\w+\s*\([^)]*\)\s*\{/],export:[/\b(public|protected)\b/,/^\s*@\w/],import:[/^\s*import\s+/]},scala:{id:"scala",extensions:["scala","sc"],declaration:[/\b(class|object|trait|def|val|var|type|case\s+class)\s+\w/],export:[/\b(export|implicit)\b/,/^\s*@\w/],import:[/^\s*import\s+/]},markdown:{id:"markdown",extensions:["md","markdown","mdx"],declaration:[],export:[],import:[/^\s*\[[^\]]+\]\([^)]+\)/]},json:{id:"json",extensions:["json","jsonc","json5"],declaration:[],export:[],import:[]},yaml:{id:"yaml",extensions:["yaml","yml"],declaration:[],export:[],import:[]},generic:{id:"generic",extensions:[],declaration:[/\b(function|def|fn|func|class|struct|interface|type)\b/],export:[/\b(export|public|pub)\b/],import:[/\b(import|require|use|include)\b/]}},cc=/^\s*#{1,6}\s/,Kr=/(^|\/)(dist|build|out|coverage|node_modules|vendor|\.next|__snapshots__)(\/|$)/,Vx=/(\.min\.|\.bundle\.|\.generated\.|\.d\.ts$|-lock\.)/,Kx=/(^|\/)(tests?|__tests__|spec|e2e)(\/|$)|\.(test|spec)\./,Yx=/(^|\/)(fixtures?|__fixtures__|snapshots?)(\/|$)/,Xx=/(^|\/)(docs?|examples?)(\/|$)|\.(md|markdown|mdx|rst|txt)$/i,qx=/(^|\/)(config|\.github)(\/|$)|\.(json|ya?ml|toml|ini|cfg|conf|env)$|(^|\/)[^/]*\.config\.[jt]s$/i,Jx=/(^|\/)(src|lib|app|packages|internal|pkg|cmd|crates|include|sources?)(\/|$)/,Zx=new Set(["typescript","javascript","rust","python","go","java","scala"]),Pi=/\.([a-z0-9]+)$/i;function Yr(e){return Pi.exec(e)?.[1]?.toLowerCase()??""}function ew(e){let t=Yr(e);if(!t)return!1;for(let n of Zx)if(Vr[n].extensions.includes(t))return!0;return!1}function uc(e,t,n){if(n&&n!=="auto")return Vr[n];let r=Yr(e),o=(t??"").toLowerCase();for(let i of ic){let s=Vr[i];if(i!=="generic"&&o&&(i===o||s.extensions.includes(o)))return s}for(let i of ic){let s=Vr[i];if(i!=="generic"&&s.extensions.includes(r))return s}return Vr.generic}function xi(e){return Vx.test(e)?"generated":Yx.test(e)?"fixture":Kx.test(e)?"test":qx.test(e)?"config":Xx.test(e)?"docs":!Kr.test(e)&&(Jx.test(e)||ew(e))?"source":"unknown"}function lc(e){if(!e)return!1;if(Kr.test(e))return!0;let t=xi(e);return t==="test"||t==="docs"||t==="fixture"||t==="generated"}function dc(e,t,n,r={}){if(t==="matchCount"){let m=[...e].sort(If);return{files:r.sortReverse?m.reverse():m,cappedCandidates:0}}if(t==="path"){let m=[...e].sort((p,f)=>p.path.localeCompare(f.path));return{files:r.sortReverse?m.reverse():m,cappedCandidates:0}}if(t==="created"||t==="modified"||t==="accessed")return{files:[...e],cappedCandidates:0};let o=r.candidateCap??sc,i=e,s=[],a=0;if(e.length>o){let m=[...e].sort(If);i=m.slice(0,o),s=m.slice(o),a=s.length}let c=hc(i,n),u=i.map(m=>{try{return{file:m,s:gc(m,n,c)}}catch{return{file:m,s:tw()}}});u.sort((m,p)=>{if(p.s.score!==m.s.score)return p.s.score-m.s.score;let f=(p.file.matchCount??0)-(m.file.matchCount??0);return f!==0?f:m.file.path.localeCompare(p.file.path)});let l=[...u.map(m=>m.file),...s],d={files:r.sortReverse?l.reverse():l,cappedCandidates:a};return r.debug&&(d.debug=new Map(u.map(m=>[m.file.path,m.s]))),d}function tw(){return{score:0,profile:"generic",pathRole:"unknown",reasons:["ranking unavailable for this file"]}}function If(e,t){let n=(t.matchCount??0)-(e.matchCount??0);return n!==0?n:e.path.localeCompare(t.path)}function Xr(e,t){for(let n of e)if(n.test(t))return!0;return!1}function wi(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function pc(e){return!!e&&/^[A-Za-z_$][\w$]*$/.test(e.trim())}function mc(e,t,n){if(e.indexOf(`
38
62
  `)<0)return e;let o=e.split(`
39
- `);if(t){let i=n?t:t.toLowerCase();for(let s of o)if((n?s:s.toLowerCase()).includes(i))return s}return o.find(i=>i.trim().length>0)??o[0]??""}function Hp(e,t,n,r){if(n==="markdown")return/<!--/.test(e)?"comment":"code";if(n==="json")return"code";if(_p.test(e))return"comment";let o=i0(e,t,r);if(o<0)return"code";let i=s0(e);return i>=0&&o>i?"comment":jP(e,o)?"string":"code"}function i0(e,t,n){return t?n?e.indexOf(t):e.toLowerCase().indexOf(t.toLowerCase()):-1}function s0(e){let t=-1,n=i=>{i>=0&&(t<0||i<t)&&(t=i)};for(let i of["//","/*","<!--"])n(e.indexOf(i));let r=/(^|\s)#(?![!{])/.exec(e);r&&n(r.index+(r[1]?.length??0));let o=/(^|\s)--\s/.exec(e);return o&&n(o.index+(o[1]?.length??0)),t}function jP(e,t){let n="";for(let r=0;r<t&&r<e.length;r++){let o=e[r];n?o===n&&e[r-1]!=="\\"&&(n=""):(o==='"'||o==="'"||o==="`")&&(n=o)}return n!==""}var Qp=f(()=>{"use strict";Tc();zp()});function a0(e){if(!e)return;let t=/[A-Za-z_$][\w$]*/.exec(e);return t?t[0]:void 0}function c0(e,t){if(!e)return[];let n=new Set,r=[];for(let o of e.matchAll(/[A-Za-z_$][\w$]*/g)){let i=o[0],s=t?i:i.toLowerCase();n.has(s)||(n.add(s),r.push(i))}return r}function l0(e,t,n,r,o){if(!e||e.length===0)return 0;let i=Np(n.keyword),s=0,a="";for(let c of e){let l=c.value??"";if(!l)continue;let u=Gp(l,r,n.caseSensitive),d=0,m=[];r&&i&&(new RegExp(`(^|[^\\w$])${Ec(r)}([^\\w$]|$)`,n.caseSensitive?"":"i").test(u)?(d+=de.exactWholeWord,m.push("whole-word match")):!n.caseSensitive&&u.toLowerCase().includes(r.toLowerCase())?(d+=de.exactCaseInsensitive,m.push("case-insensitive match")):u.includes(r)&&(d+=de.substring,m.push("substring match")));let p=c.kind;if(p)d+=u0(p,m);else{let h=Hp(u,r,t.id,n.caseSensitive);h!=="code"?(d+=de.commentOrStringPenalty,m.push(h==="comment"?"comment match (weak)":"string literal (weak)")):(zi(t.declaration,u)&&(d+=de.declarationLine,m.push("declaration line")),zi(t.export,u)&&(d+=de.exportLine,m.push("export/public line")),zi(t.import,u)&&(d+=de.importLine,m.push("import line")),t.id==="markdown"&&Fp.test(u)&&(d+=de.headingLine,m.push("markdown heading")),(t.id==="json"||t.id==="yaml")&&d0(u,r)&&(d+=de.configKeyLine,m.push("config key match")))}d>s&&(s=d,a=m.join(", "))}return a&&o.push(a),s}function u0(e,t){switch(e){case"declaration":return t.push("AST: declaration"),de.declarationLine;case"export":return t.push("AST: export/public"),de.exportLine;case"configKey":return t.push("AST: config key"),de.configKeyLine;case"heading":return t.push("AST: heading"),de.headingLine;case"import":return t.push("AST: import"),de.importLine;case"comment":case"string":return t.push(`AST: ${e} (weak)`),de.commentOrStringPenalty;case"callsite":return t.push("AST: callsite"),1;default:return 0}}function d0(e,t){let n=e.indexOf(":");if(n<0)return!1;let r=e.slice(0,n);return t?r.includes(t):/["'\w]/.test(r)}function p0(e,t,n,r,o,i){let s=0;if(n){let c=e.toLowerCase(),l=n.toLowerCase();c.split("/").some(u=>u.replace(xc,"").includes(l))&&(s+=de.pathSegmentToken,i.push("query token in path"))}let a=Bi(e);return r.extensions.includes(a)&&t.langType&&(s+=de.extMatchesLangType,i.push("extension matches langType")),o==="source"&&(s+=de.sourceDir,i.push("source file")),s}function m0(e,t,n){return t.explicitLowSignal?0:e==="generated"||e==="fixture"?(n.push(`${e} file (penalized)`),de.lowSignalPathPenalty):0}function f0(e,t){if(e<=0)return 0;let n=Math.log2(e+1)*de.matchCountScale,r=Math.min(n,de.matchCountCap);return e>1&&t.push(`match count saturated (${e})`),r}function jp(e,t){let n=c0(t.keyword,t.caseSensitive);if(n.length<2||e.length<2)return;let r=new Map,o=new Map;for(let i of e){let s=n.filter(a=>h0(i,a,t.caseSensitive));if(s.length!==0){r.set(i.path,s);for(let a of s)o.set(a,(o.get(a)??0)+1)}}if(r.size!==0)return{candidateCount:e.length,fileTokens:r,documentFrequency:o}}function h0(e,t,n){let r=n?"":"i",o=new RegExp(`(^|[^\\w$])${Ec(t)}([^\\w$]|$)`,r);for(let i of e.matches??[])if(o.test(i.value??""))return!0;return o.test(e.path)}function g0(e,t,n){if(!t)return 0;let r=t.fileTokens.get(e.path);if(!r?.length)return 0;let o="",i=0,s=0;for(let a of r){let c=t.documentFrequency.get(a)??t.candidateCount;if(c>t.candidateCount/2)continue;let l=Math.log2((t.candidateCount+1)/(c+1)),u=Math.min(l*de.rareQueryTokenScale,de.rareQueryTokenCap);u>i&&(i=u,o=a,s=c)}return i<=0?0:(n.push(`rare query token: ${o} (${s}/${t.candidateCount} files)`),i)}function Bp(e,t,n){let r=Ip(e.path,t.langType,t.profileOverride),o=wc(e.path),i=a0(t.keyword),s=[],a=0;return a+=l0(e.matches,r,t,i,s),a+=p0(e.path,t,i,r,o,s),t.queryPath&&e.path.startsWith(t.queryPath.replace(/\/+$/,"")+"/")&&(a+=de.pathUnderQuery,s.push("under requested subtree")),a+=m0(o,t,s),ji.test(e.path)&&!t.explicitLowSignal&&(a+=de.lowSignalPathPenalty,s.push("low-signal path (penalized)")),a+=f0(e.matchCount??0,s),a+=g0(e,n,s),{score:Math.round(a*100)/100,profile:r.id,pathRole:o,reasons:s}}var zp=f(()=>{"use strict";Tc();Qp()});var BP=f(()=>{"use strict";Tc();zp();Qp()});function zP(e,t,n,r){let o=e.find(a=>a.path),i=o?.matches?.find(a=>a.line),s={};if(o?.path){if(i?.line){let c=R0(i);s.fetch={tool:"localGetFileContent",query:Up({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"none"}),why:'Read exact source around the first match (set minify:"standard" for a token-lean slice, or drop the line range with minify:"symbols" for a skeleton).',confidence:"exact"}}else s.fetch={tool:"localGetFileContent",query:{path:o.path,minify:"standard"},why:'Read the first matched file (minify:"symbols" gives a skeleton for orientation; minify:"none" gives exact bytes).',confidence:r.isFileListMode?"heuristic":"exact"};let a=S0(i,t,n);if(a&&i?.line){let c={uri:o.path,symbolName:a.symbol,lineHint:a.line??i.line};s.lspDefinition={tool:"lspGetSemantics",query:{...c,type:"definition"},why:"Use the grep line as an LSP lineHint to resolve the symbol definition.",confidence:"heuristic"},s.lspReferences={tool:"lspGetSemantics",query:{...c,type:"references"},why:"Use the grep line as an LSP lineHint to inspect semantic usages.",confidence:"heuristic"}}}return r.currentPage<r.totalFilePages&&(s.nextPage={tool:"localSearchCode",query:Up({...t,page:r.currentPage+1}),why:"Continue to the next page of matched files.",confidence:"exact"}),r.hasFileWithMoreMatches&&(s.nextMatchPage={tool:"localSearchCode",query:Up({...t,maxMatchesPerFile:r.matchesPerPage,matchPage:r.matchPage+1}),why:"Continue within files that have more matches than this response returned.",confidence:"exact"}),s}function R0(e){let t=Math.max(1,e.line??1),n=Math.max(t,e.endLine??t);return{startLine:Math.max(1,t-8),endLine:n+8}}function S0(e,t,n){if(t.countLinesPerFile||t.countMatchesPerFile||t.countUnique||t.unique)return;if(n==="structural")return P0(e?.metavars,e?.metavarRanges);if(t.matchWindow)return;if(t.onlyMatching){let o=$p(e?.value);return o?{symbol:o}:void 0}let r=$p(t.keywords);return r?{symbol:r}:void 0}function P0(e,t){if(e)for(let[n,r]of Object.entries(e))for(let[o,i]of r.entries()){let s=$p(i);if(s)return{symbol:s,line:t?.[n]?.[o]?.line}}}function $p(e){if(typeof e!="string")return;let t=e.trim();if(b0.test(t)&&!y0.has(t))return t}function Up(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}var y0,b0,qp=f(()=>{"use strict";y0=new Set(["async","await","break","case","catch","class","const","def","do","else","enum","export","for","function","if","import","interface","let","match","return","struct","switch","type","var","while","true","false","null","undefined","NaN","Infinity","this","super"]),b0=/^[A-Za-z_$][A-Za-z0-9_$]*$/});async function kc(e,t,n,r,o){let i=n==="structural"?"path":"relevance",s=t.sort??i,a;try{a=Dp(e,s,C0(t),{debug:!!t.debugRanking})}catch{a={files:e,cappedCandidates:0},r.push("Relevance ranking failed; returning results in unranked engine order.")}let c=a.files,l=a.debug,u=c.length,d=!!(t.filesOnly||t.filesWithoutMatch),m=!!(t.countLinesPerFile||t.countMatchesPerFile),p=d||m,h=c.reduce((H,K)=>H+(K.matchCount??0),0),g=p?o?.totalOccurrences??o?.totalStructuralMatches??h:h,y=t,b=Math.min(y.itemsPerPage||Dt.DEFAULT_FILES_PER_PAGE,t.maxFiles||Number.POSITIVE_INFINITY),S=y.page||1,x=Math.max(1,Math.ceil(u/b)),k=(S-1)*b,E=Math.min(k+b,u),_=c.slice(k,E),w=y.maxMatchesPerFile||Dt.DEFAULT_MATCHES_PER_PAGE,G=_.map(H=>{let K=H.matches?.length??0,I=Math.ceil(K/w),ye=Math.max(1,y.matchPage||1),Te=(ye-1)*w,nn=Math.min(Te+w,K),lo=p?void 0:H.matches?.slice(Te,nn),Os=lo?.length,uo=l?.get(H.path);return{path:H.path,...d?{}:t.countLinesPerFile?{totalMatchedLines:H.matchCount||1}:t.countMatchesPerFile?{totalOccurrences:H.matchCount||1}:{totalMatchRows:K,...Os!==void 0?{returnedMatchRows:Os}:{}},...lo!==void 0&&{matches:lo},...uo?{ranking:{score:uo.score,profile:uo.profile,pathRole:uo.pathRole,reasons:uo.reasons}}:{},pagination:!p&&K>w?{currentPage:ye,totalPages:I,matchesPerPage:w,totalMatches:K,hasMore:ye<I,...ye<I?{nextMatchPage:ye+1}:{}}:void 0}}),M=G.filter(H=>H.pagination?.hasMore),A=zP(G,t,n,{isFileListMode:p,currentPage:S,totalFilePages:x,matchPage:y.matchPage||1,matchesPerPage:w,hasFileWithMoreMatches:M.length>0}),q={searchEngine:n,...o?{stats:o}:{},files:G,pagination:{currentPage:S,totalPages:x,filesPerPage:b,totalFiles:u,...d?{}:{totalMatches:g},hasMore:S<x,...S<x?{nextPage:S+1}:{}},...r.length>0?{warnings:r}:{},...Object.keys(A).length>0?{next:A}:{}};return UP(q,t,{totalMatches:g,totalFiles:u})}function UP(e,t,n){return e}function C0(e){let t=e.rankingProfile,n=!!(e.include?.length||Mp(e.path));return{queryPath:e.path,keyword:e.keywords,langType:e.langType,caseSensitive:e.caseSensitive,wholeWord:e.wholeWord,profileOverride:t,explicitLowSignal:n}}var $P=f(()=>{"use strict";Ni();BP();qp()});var Oc=f(()=>{"use strict";$P();qp()});function qP(e){let t=[],n=[],r=e.pattern;if(typeof r!="string"||r.length===0)return t.push("pattern is empty \u2014 provide a non-empty search string"),{isValid:!1,errors:t,warnings:n};let o=D.validateRipgrepPattern(r,e.fixedString,e.perlRegex);return o.valid||t.push(`invalid regex: ${o.error??"unknown regex parse error"}`),!e.fixedString&&x0(r)&&n.push(`pattern '${r}' looks literal \u2014 pass fixedString: true to skip regex parsing and avoid accidental wildcards`),!e.perlRegex&&w0(r)&&n.push("pattern uses lookaround (?= / ?! / ?<= / ?<!) which requires perlRegex: true; ripgrep will refuse it otherwise"),{isValid:t.length===0,errors:t,warnings:n}}function x0(e){return/[\\^$|()[\]{}+*?]/.test(e)?!1:!!(e.includes(".")&&/^[\w.\-/:]+$/.test(e)||e.length>2&&/^\w+$/.test(e))}function w0(e){return/\(\?[=!<]/.test(e)}var WP=f(()=>{"use strict";Ee()});import{validateRipgrepQuery as T0}from"@octocodeai/octocode-core/schemas/runtime";function E0(e){return e==="created"||e==="modified"||e==="accessed"?e:"path"}function k0(e){return{path:e.path,pattern:e.keywords??"",fixedString:e.fixedString,perlRegex:e.perlRegex,caseSensitive:e.caseSensitive,caseInsensitive:e.caseInsensitive,wholeWord:e.wholeWord,invertMatch:e.invertMatch,multiline:e.multiline,multilineDotall:e.multilineDotall,filesOnly:e.filesOnly,filesWithoutMatch:e.filesWithoutMatch,countLinesPerFile:e.countLinesPerFile,countMatchesPerFile:e.countMatchesPerFile,contextLines:e.contextLines,langType:e.langType,include:e.include,exclude:e.exclude,excludeDir:e.excludeDir,noIgnore:e.noIgnore,hidden:e.hidden,sort:E0(e.sort),sortReverse:e.sortReverse,classifyMatches:e.sort==="relevance"||e.sort===void 0,maxSnippetChars:e.matchContentLength,onlyMatching:e.onlyMatching,unique:e.unique,countUnique:e.countUnique,matchWindow:e.matchWindow}}function O0(e){let t=0;for(let n of e)if(t+=n.path.length,n.matches)for(let r of n.matches)t+=r.value?.length??0;return t}async function VP(e){let t=[],n=T0(e);if(!n.isValid)return N(new Error(`Query validation failed: ${n.errors.join("; ")}`),e,{toolName:v.LOCAL_RIPGREP,extra:{warnings:n.warnings}});t.push(...n.warnings);let r=jt.safeParse(e);if(!r.success){let g=r.error.issues.map(y=>y.message);return N(new Error(`Query validation failed: ${g.join(", ")}`),e,{toolName:v.LOCAL_RIPGREP,extra:{warnings:t}})}let o=r.data;if(!o.path)return N(new Error("Path is required for search"),o,{toolName:v.LOCAL_RIPGREP,extra:{warnings:t}});let s=ft(o,v.LOCAL_RIPGREP);if(!s.isValid)return s.errorResult;let a={...o,path:s.sanitizedPath},c=qP({pattern:a.keywords??"",fixedString:a.fixedString,perlRegex:a.perlRegex});if(!c.isValid)return N(new Error(`Pattern validation failed: ${c.errors.join("; ")}`),o,{toolName:v.LOCAL_RIPGREP,extra:{warnings:[...t,...c.warnings]}});let l=[...c.warnings],u;try{u=await D.searchRipgrep(k0(a))}catch(g){return N(g instanceof Error?g:new Error(String(g)),o,{toolName:v.LOCAL_RIPGREP})}let d=u.files.map(g=>({path:g.path,matchCount:g.matchCount,matches:g.matches.map(y=>{let b={line:y.line,column:y.column,value:y.value};return y.count!==void 0&&(b.count=y.count),y.kind!==void 0&&(b.kind=y.kind),y.scoreHint!==void 0&&(b.scoreHint=y.scoreHint),b})})),m=O0(d),p={totalOccurrences:u.stats.matchCount,matchedLines:u.stats.matchedLines,filesMatched:u.stats.filesMatched,filesSearched:u.stats.filesSearched,bytesSearched:u.stats.bytesSearched??void 0,searchTime:u.stats.searchTime};if(d.length===0)return W({status:"empty",searchEngine:"rg",stats:p,warnings:[...t,...l]},m);!a.filesOnly&&m>Dt.LARGE_RESULT_BYTES_HINT&&l.push(`Result payload is large (~${Math.round(m/1024)}KB).`);let h=await kc(d,o,"rg",[...t,...l],p);return W(h,m)}var KP=f(()=>{"use strict";Vt();Fs();Ni();pe();Oc();WP();ue();Ee()});var YP,XP,JP=f(()=>{"use strict";YP={bash:{kind:"extension",canonicalLanguage:"Shell",extension:"bash",extensions:["bash"]},c:{kind:"extension",canonicalLanguage:"C",extension:"c",extensions:["c"]},cc:{kind:"extension",canonicalLanguage:"C++",extension:"cc",extensions:["cc"]},cjs:{kind:"extension",canonicalLanguage:"JavaScript",extension:"cjs",extensions:["cjs"]},cpp:{kind:"extension",canonicalLanguage:"C++",extension:"cpp",extensions:["cpp"]},cs:{kind:"extension",canonicalLanguage:"C#",extension:"cs",extensions:["cs"]},cts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"cts",extensions:["cts"]},cxx:{kind:"extension",canonicalLanguage:"C++",extension:"cxx",extensions:["cxx"]},go:{kind:"extension",canonicalLanguage:"Go",extension:"go",extensions:["go"]},h:{kind:"extension",canonicalLanguage:"C",extension:"h",extensions:["h"]},html:{kind:"extension",canonicalLanguage:"HTML",extension:"html",extensions:["html"]},htm:{kind:"extension",canonicalLanguage:"HTML",extension:"htm",extensions:["htm"]},hpp:{kind:"extension",canonicalLanguage:"C++",extension:"hpp",extensions:["hpp"]},js:{kind:"extension",canonicalLanguage:"JavaScript",extension:"js",extensions:["js"]},json:{kind:"extension",canonicalLanguage:"JSON",extension:"json",extensions:["json"]},jsonc:{kind:"extension",canonicalLanguage:"JSON",extension:"jsonc",extensions:["jsonc"]},jsx:{kind:"extension",canonicalLanguage:"JavaScript",extension:"jsx",extensions:["jsx"]},java:{kind:"extension",canonicalLanguage:"Java",extension:"java",extensions:["java"]},less:{kind:"extension",canonicalLanguage:"Less",extension:"less",extensions:["less"]},md:{kind:"extension",canonicalLanguage:"Markdown",extension:"md",extensions:["md"]},mdx:{kind:"extension",canonicalLanguage:"MDX",extension:"mdx",extensions:["mdx"]},mjs:{kind:"extension",canonicalLanguage:"JavaScript",extension:"mjs",extensions:["mjs"]},mts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"mts",extensions:["mts"]},py:{kind:"extension",canonicalLanguage:"Python",extension:"py",extensions:["py"]},pyi:{kind:"extension",canonicalLanguage:"Python",extension:"pyi",extensions:["pyi"]},rs:{kind:"extension",canonicalLanguage:"Rust",extension:"rs",extensions:["rs"]},scala:{kind:"extension",canonicalLanguage:"Scala",extension:"scala",extensions:["scala"]},sc:{kind:"extension",canonicalLanguage:"Scala",extension:"sc",extensions:["sc"]},scss:{kind:"extension",canonicalLanguage:"SCSS",extension:"scss",extensions:["scss"]},sh:{kind:"extension",canonicalLanguage:"Shell",extension:"sh",extensions:["sh"]},ts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"ts",extensions:["ts"]},tsx:{kind:"extension",canonicalLanguage:"TypeScript",extension:"tsx",extensions:["tsx"]},toml:{kind:"extension",canonicalLanguage:"TOML",extension:"toml",extensions:["toml"]},yaml:{kind:"extension",canonicalLanguage:"YAML",extension:"yaml",extensions:["yaml"]},yml:{kind:"extension",canonicalLanguage:"YAML",extension:"yml",extensions:["yml"]},zsh:{kind:"extension",canonicalLanguage:"Shell",extension:"zsh",extensions:["zsh"]}},XP={bash:{kind:"language",canonicalLanguage:"Shell",extensions:["sh","bash","zsh"]},c:{kind:"language",canonicalLanguage:"C",extensions:["c","h"]},"c++":{kind:"language",canonicalLanguage:"C++",extensions:["cpp","hpp","cc","cxx","hh","hxx"]},cpp:{kind:"language",canonicalLanguage:"C++",extensions:["cpp","hpp","cc","cxx","hh","hxx"]},csharp:{kind:"language",canonicalLanguage:"C#",extensions:["cs"]},css:{kind:"language",canonicalLanguage:"CSS",extensions:["css"]},go:{kind:"language",canonicalLanguage:"Go",extensions:["go"]},html:{kind:"language",canonicalLanguage:"HTML",extensions:["html","htm"]},java:{kind:"language",canonicalLanguage:"Java",extensions:["java"]},javascript:{kind:"language",canonicalLanguage:"JavaScript",extensions:["js","jsx","mjs","cjs"]},json:{kind:"language",canonicalLanguage:"JSON",extensions:["json","jsonc"]},less:{kind:"language",canonicalLanguage:"Less",extensions:["less"]},markdown:{kind:"language",canonicalLanguage:"Markdown",extensions:["md","markdown"]},python:{kind:"language",canonicalLanguage:"Python",extensions:["py","pyi"]},rust:{kind:"language",canonicalLanguage:"Rust",extensions:["rs"]},scala:{kind:"language",canonicalLanguage:"Scala",extensions:["scala","sc","sbt"]},scss:{kind:"language",canonicalLanguage:"SCSS",extensions:["scss"]},shell:{kind:"language",canonicalLanguage:"Shell",extensions:["sh","bash","zsh"]},typescript:{kind:"language",canonicalLanguage:"TypeScript",extensions:["ts","tsx","mts","cts"]},toml:{kind:"language",canonicalLanguage:"TOML",extensions:["toml"]},yaml:{kind:"language",canonicalLanguage:"YAML",extensions:["yaml","yml"]},yml:{kind:"language",canonicalLanguage:"YAML",extensions:["yaml","yml"]}}});function v0(e){return e.trim().replace(/^\./,"").toLowerCase()}function tr(e){if(!e?.trim())return;let t=v0(e),n=YP[t]??XP[t];return n?{raw:e,normalized:t,...n}:{raw:e,normalized:t,kind:"unknown",canonicalLanguage:e.trim()}}function A0(e){return[...e??[]].map(t=>`**/*.${t}`)}function Wp(e){return[...e??[]].map(t=>`*.${t}`)}function Ui(e){let t=tr(e);return t?t.kind==="extension"&&t.extension?{extension:t.extension}:t.canonicalLanguage?{language:t.canonicalLanguage}:{}:{}}function vc(e){let t=tr(e);return t?t.kind==="extension"&&t.extension?{include:A0([t.extension])}:t.kind==="language"?{langType:t.normalized}:t.normalized?{langType:t.normalized}:{}:{}}function Ac(e){let t=tr(e);return t?t.kind==="extension"&&t.extension?Wp([t.extension]):t.kind==="language"?Wp(t.extensions):t.normalized?Wp([t.normalized]):[]:[]}function Vp(e){let t=tr(e);if(!t)return;let r=(t.extensions?.length?t.extensions:[t.normalized.replace(/^[.*]+/,"")]).filter(Boolean).map(o=>`*.${o}`);return r.length?r:void 0}function Lc(e){return tr(e)?.canonicalLanguage}var ZP=f(()=>{"use strict";JP()});var Kp=f(()=>{"use strict";ZP()});import{readFile as L0,stat as _0}from"node:fs/promises";function D0(e){if(!e||!/\)\s*\{/.test(e))return"";let t=e.replace(/\)\s*\{/,"): $R {");return t===e?"":` Try: \`${t}\`.`}function tC(e){return e.include?.length?e.include:Vp(e.langType)}async function N0(e){try{return(await _0(e)).isFile()}catch{return!1}}async function G0(e,t){let n=await L0(e,"utf8"),r=await D.structuralSearch(n,e,t.pattern,t.rule);return{files:r.length>0?[{path:e,matches:r}]:[],totalMatches:r.length,parsedFiles:1,skippedByPreFilter:0,skippedUnsupported:0,skippedUnreadable:0,skippedLarge:0,warnings:[]}}async function nC(e){let t=ft(e,v.LOCAL_RIPGREP);if(!t.isValid)return t.errorResult;let n;try{n=await N0(t.sanitizedPath)?await G0(t.sanitizedPath,e):await D.structuralSearchFiles({path:t.sanitizedPath,pattern:e.pattern,rule:e.rule,...tC(e)?{include:tC(e)}:{},...e.exclude?.length?{exclude:e.exclude}:{},...e.excludeDir?.length?{excludeDir:e.excludeDir}:eC.length?{excludeDir:eC}:{},...e.hidden!==void 0?{hidden:e.hidden}:{},...e.noIgnore!==void 0?{noIgnore:e.noIgnore}:{},maxFiles:e.maxFiles??F0,maxFileBytes:I0})}catch(s){let a=s instanceof Error?s.message:String(s),c=e.langType||"source";return N(new Error(`Invalid structural ${e.rule?"rule":"pattern"}: ${a} \u2014 patterns must be valid ${c} and match a complete node; a class/def usually needs a body (add \`$$$BODY\`). Run \`octocode tools localSearchCode --scheme\` for the live schema.`),e,{toolName:v.LOCAL_RIPGREP})}let r=n.files.map(s=>({path:s.path,matchCount:s.matches.length,matches:s.matches.map(a=>({line:a.startLine,endLine:a.endLine,value:a.text.replace(/\s+/g," ").trim().slice(0,300),column:a.startCol,endColumn:a.endCol,metavars:a.metavars,...a.metavarRanges&&Object.keys(a.metavarRanges).length>0?{metavarRanges:a.metavarRanges}:{}}))})),o={totalStructuralMatches:n.totalMatches},i=[...n.warnings];return(r.length===0||n.totalMatches===0)&&e.pattern&&!e.rule&&i.push(M0+D0(e.pattern)),await kc(r,e,"structural",i,o)}var eC,F0,I0,M0,rC=f(()=>{"use strict";Ee();Vt();pe();Kp();Oc();eC=[],F0=2e3,I0=1e6,M0="0 structural matches. A pattern matches a complete AST node \u2014 a class/function usually needs a body (add `$$$BODY`), and Python/TS definitions may carry a return type (`-> $RET:`) or decorators the pattern must include. For partial or relational matches use a YAML `rule` instead of `pattern`."});function H0(e){let t=e.mode;if(!t)return e;let n={...e};return t==="discovery"&&n.filesOnly===void 0?n.filesOnly=!0:t==="detailed"&&n.contextLines===void 0&&(n.contextLines=3),n}async function ht(e){let t=H0(e);if(t.mode==="structural")return await nC(t);t.contextLines===void 0&&(t.contextLines=2);try{return await VP(t)}catch(n){let r=n instanceof Error?n.message:String(n);return r.includes("Output size limit exceeded")?{status:"error",error:r,errorCode:$.OUTPUT_TOO_LARGE}:N(n,t,{toolName:v.LOCAL_RIPGREP})}}var Wr=f(()=>{"use strict";Vt();Wn();pe();KP();rC()});async function oC(e){let{queries:t}=e;return me(t||[],async n=>ut({toolName:v.LOCAL_RIPGREP,query:n,contextMessage:"localSearchCode execution failed",execute:async()=>{let r=ot(jt,n);return r.ok===!1?r.error:await ht(r.data)}}),{toolName:v.LOCAL_RIPGREP},e)}var iC=f(()=>{"use strict";Fs();pe();Ke();Wr();De();Vn();Oc()});function B0(e,t){let n=t+1;for(;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n++,n++;return n+1}function sC(e,t){let n=e[t];return n===void 0?!1:Q0.has(n)||n==="{"&&$0(e,t)}function z0(e,t,n){let r=n.pop()??!1,o=sC(e,t+1);return o&&r?{unsafe:!0,next:t+1}:((o||r)&&n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:o?cC(e,t+1):t+1})}function U0(e,t,n){return n.some(r=>r)?{unsafe:!0,next:t+1}:(n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:cC(e,t)})}function aC(e){if(e.length>j0)return{safe:!1,reason:"Pattern too long (max 1000 characters)"};let t="Nested quantifiers detected (potential ReDoS). Simplify the pattern.",n=[],r=0;for(;r<e.length;){let o=e[r];if(o==="\\"){r+=2;continue}if(o==="["){r=B0(e,r);continue}if(o==="("){n.push(!1),r++;continue}if(o===")"){let i=z0(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}if(sC(e,r)){let i=U0(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}r++}return{safe:!0}}function $0(e,t){if(e[t]!=="{")return!1;let n=e.indexOf("}",t);return n===-1?!1:/^\{\d+,?\d*\}$/.test(e.slice(t,n+1))}function cC(e,t){return e[t]==="{"?t=e.indexOf("}",t)+1:t++,t<e.length&&(e[t]==="?"||e[t]==="+")&&t++,t}var Q0,j0,lC=f(()=>{"use strict";Q0=new Set(["+","*","?"]),j0=1e3});function uC(e,t){let n=e;if(t.pattern){let r=t.pattern;if(r.includes("*")||r.includes("?")||r.includes("[")){let i=r.replace(/[.+^${}()|[\]\\*?]/g,"\\$&");i=i.replace(/\\\*/g,".*").replace(/\\\?/g,".").replace(/\\\[!/g,"[^").replace(/\\\[/g,"[").replace(/\\\]/g,"]");try{let s=`^${i}$`;if(!aC(s).safe)return n=n.filter(l=>(l.name.includes("/")?l.name.split("/").pop():l.name).includes(r)),n;let c=new RegExp(s,"i");n=n.filter(l=>{let u=l.name.includes("/")?l.name.split("/").pop():l.name;return c.test(u)})}catch{n=n.filter(s=>(s.name.includes("/")?s.name.split("/").pop():s.name).includes(r))}}else n=n.filter(i=>(i.name.includes("/")?i.name.split("/").pop():i.name).includes(r))}return t.directoriesOnly&&(n=n.filter(r=>r.type==="directory")),t.filesOnly&&(n=n.filter(r=>r.type==="file")),n}function dC(e){let t=[],n=[],r=[];for(let o of e)o.type==="directory"?n.push(o.name):o.type==="symlink"?r.push(o.name):t.push(o.size?`${o.name} (${o.size})`:o.name);return{...t.length>0&&{files:t},...n.length>0&&{folders:n},...r.length>0&&{links:r}}}function pC(e){let t={type:e.type==="directory"?"dir":e.type==="symlink"?"link":"file"};return e.depth!==void 0&&e.depth>0&&(t.depth=e.depth),e.size&&e.type==="file"&&(t.size=e.size),e.modified&&(t.modified=e.modified),e.permissions&&(t.permissions=e.permissions),t}var mC=f(()=>{"use strict";lC()});async function _c(e){try{let t=ft(e,v.LOCAL_VIEW_STRUCTURE);if(!t.isValid)return t.errorResult;let n=e.showFileLastModified??(e.sortBy==="time"||e.details===!0);return q0(e,t.sanitizedPath,n)}catch(t){let n=mt.toolExecutionFailed("LOCAL_VIEW_STRUCTURE",t instanceof Error?t:void 0);return{status:"error",error:n.message,errorCode:n.errorCode}}}function q0(e,t,n=!1){let r=!!(e.maxDepth||e.recursive),o=r?e.maxDepth||(e.recursive?5:2):1,i=V0(e),s=r&&e.limit&&!W0(e,i)?e.limit*2:1e4,a;try{a=D.queryFileSystem({path:t,recursive:r,includeRoot:!1,showHidden:e.hidden??!1,maxDepth:o,names:i,extensions:e.extensions,entryType:K0(e),limit:s})}catch(x){return J0(x,e,t)}let c=a.entries.map(x=>Y0(x,n,e.details??!1)),l=uC(c,e),u=e.sortBy??"name";l=l.sort((x,k)=>{let E=0;switch(u){case"size":{let _=x.sizeBytes??(x.size?Gi(x.size):0),w=k.sizeBytes??(k.size?Gi(k.size):0);E=_-w;break}case"time":n&&x.modified&&k.modified?E=x.modified.localeCompare(k.modified):E=x.name.localeCompare(k.name);break;case"extension":E=(x.extension||"").localeCompare(k.extension||"");break;default:E=x.name.localeCompare(k.name);break}return e.reverse?-E:E}),e.limit&&(l=l.slice(0,e.limit));let d=l.length,{paginatedEntries:m,pagination:p}=MP(l,e),g=e.details===!0||e.showFileLastModified===!0?{path:t,entries:m.map(x=>({...pC(x),path:x.path??`${t.replace(/\/$/,"")}/${x.name}`}))}:{path:t,...dC(m)},y=[...a.warnings,...Cc({skipped:a.skipped,permissionDenied:a.permissionDenied}),...a.wasCapped?[`Results capped at ${s} entries \u2014 add a pattern/extensions filter or reduce depth to narrow the scope.`]:[]],b=d===0,S=IP(l);return W(fC({...b?{status:"empty"}:{},...g,summary:S,...p.hasMore||p.totalPages>1?{pagination:p}:{},...p.hasMore?{next:{nextPage:Ls(v.LOCAL_VIEW_STRUCTURE,{...e,page:p.currentPage+1},"Continue to the next page of directory entries.")}}:{},...y.length>0&&{warnings:y}},e),a.entries.reduce((x,k)=>x+k.path.length,0))}function W0(e,t){return!!((typeof e.pattern=="string"?e.pattern:void 0)&&!t)}function V0(e){let t=typeof e.pattern=="string"?e.pattern:void 0;if(t&&!t.includes("["))return t.includes("*")||t.includes("?")?[t]:[`*${t}*`]}function K0(e){if(e.filesOnly&&!e.directoriesOnly)return"f";if(e.directoriesOnly&&!e.filesOnly)return"d"}function Y0(e,t,n){let r=e.entryType==="directory"?"directory":e.entryType==="symlink"?"symlink":"file",o={name:e.relativePath||e.name,path:e.path,type:r,...e.size!==void 0?{size:qr(e.size),sizeBytes:e.size}:{},...e.extension?{extension:e.extension}:{},depth:e.depth};return(n||t)&&e.modifiedMs!==void 0&&(o.modified=new Date(e.modifiedMs).toISOString()),n&&e.permissions&&(o.permissions=X0(e.permissions)),o}function X0(e){let t=Number.parseInt(e,8);if(!Number.isFinite(t))return e;let n=["---","--x","-w-","-wx","r--","r-x","rw-","rwx"];return`${n[t>>6&7]}${n[t>>3&7]}${n[t&7]}`}function J0(e,t,n){let r=e instanceof Error?e.message:String(e),o=/ENOENT|not found|no such file/i.test(r),i=/EACCES|permission denied/i.test(r),s=/ENOTDIR|not a directory/i.test(r),a=mt.pathValidationFailed(n,o?`Directory not found: ${n}`:i?`Permission denied: ${n}`:s?`Not a directory: ${n}`:`Cannot access path: ${n}`);return N(a,t,{toolName:v.LOCAL_VIEW_STRUCTURE})}function fC(e,t){return e}var Fc=f(()=>{"use strict";Pc();pe();Vt();yc();mC();vp();ue();Ee();Be()});async function hC(e){let{queries:t}=e;return me(t||[],async n=>ut({toolName:v.LOCAL_VIEW_STRUCTURE,query:n,contextMessage:"localViewStructure execution failed",execute:async()=>{let r=ot(Nn,n);return r.ok===!1?r.error:await _c(r.data)}}),{toolName:v.LOCAL_VIEW_STRUCTURE,keysPriority:["path","summary","pagination","files","folders","entries"]},e)}var gC=f(()=>{"use strict";Il();pe();Ke();Fc();De();Vn();Fc()});function eM(e){let t=e.payload;return t.kind==="empty"?t.category:t.empty?.category}function yC(e,t){if(t===void 0||t==="progressIdle")return e;let n=eM(e);if(!n||!Z0.has(n))return e;let r=`Language server did not confirm indexing completion (readiness: ${t}) \u2014 zero results may mean the project is not yet indexed, not that the symbol is absent. Retry the query, or warm the relevant consumer files first.`;return{...e,warnings:[...e.warnings??[],r]}}var Z0,bC=f(()=>{"use strict";Z0=new Set(["noLocations","noReferences","noCalls","noTypeHierarchy","noHover"])});import{readFile as tM,stat as nM}from"node:fs/promises";import{SymbolResolver as rM,SymbolResolutionError as oM}from"@octocodeai/octocode-engine/lsp/resolver";import{LSP_ERROR_CODES as Ic}from"@octocodeai/octocode-engine/lsp/lspErrorCodes";async function Yp(e,t){let n=e.uri,r=ft({...e,path:n},t);if(!r.isValid)return{ok:!1,error:r.errorResult};let o=r.sanitizedPath;try{if((await nM(o)).isDirectory())return{ok:!1,error:{status:"error",error:`Path is a directory, not a file: ${o}. lspGetSemantics needs a single file uri.`,errorType:"not_a_file",errorCode:Ic.LSP_REQUEST_FAILED,hints:["Pass the path to a specific source file (e.g. via search --op on a file, or workspaceSymbol with symbolName for whole-project lookup)."]}}}catch{return{ok:!1,error:{status:"error",error:`File not found: ${o}. Check the path and spelling.`,errorType:"file_not_found",errorCode:Ic.LSP_REQUEST_FAILED,hints:[`Could not find file: ${n??"<missing>"}. Run search/localFindFiles to get the exact path first.`]}}}try{return{ok:!0,value:{uri:o,absolutePath:o,content:await tM(o,"utf-8")}}}catch(i){return{ok:!1,error:{status:"error",error:i instanceof Error?i.message:String(i),errorType:"file_not_found",errorCode:Ic.LSP_REQUEST_FAILED,hints:[`Could not read file: ${n??"<missing>"}`]}}}}async function RC(e,t){let n=await Yp(e,t);if(n.ok===!1)return n;if(e.type==="documentSymbols")return{ok:!1,error:{status:"error",error:"documentSymbols is file-level and does not use a symbol anchor"}};let r=new rM({lineSearchRadius:5});try{let o=r.resolvePositionFromContent(n.value.content,{symbolName:e.symbolName,lineHint:e.lineHint,orderHint:e.orderHint??0}),i=e.symbolName.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(`\\b${i}\\b`,"g"),a=(n.value.content.match(s)??[]).length,c=Math.abs(o.foundAtLine-(e.lineHint??0)),l=a>1&&c>3?!0:void 0;return{ok:!0,value:{...n.value,resolvedSymbol:{name:e.symbolName,uri:n.value.absolutePath,range:iM(o.position),foundAtLine:o.foundAtLine,orderHint:e.orderHint,position:o.position,...l&&{isAmbiguous:l}}}}}catch(o){if(o instanceof oM)return{ok:!1,error:{status:"empty",error:o.message,errorType:"symbol_not_found",errorCode:Ic.SYMBOL_NOT_FOUND,searchRadius:o.searchRadius,hints:[`Symbol "${e.symbolName}" was not found near line ${e.lineHint}.`,"Run localSearchCode with the exact symbol name to refresh lineHint, then retry."]}};throw o}}function iM(e){return{start:e,end:{line:e.line,character:e.character}}}var Xp=f(()=>{"use strict";Vt()});function Zp(e,t){return/unsupported/i.test(t)?"unsupportedOperation":/could not find symbol|symbol.*not found/i.test(t)?"symbolNotFound":/call/i.test(t)?"noCalls":e==="references"?"noReferences":e==="hover"?"noHover":e==="documentSymbols"?"anchorFailed":"noLocations"}function em(e,t){let n=e.uri??"";return{type:e.type,uri:n,lsp:{},payload:{kind:"empty",category:Zp(e.type,t),reason:t}}}function gt(e,t,n,r=!1){return{type:e,uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:r},payload:{kind:"empty",category:Zp(e,n),reason:n}}}function yt(e,t,n){let r=Math.max(1,n),o=Math.max(1,Math.ceil(e.length/r)),i=Math.min(Math.max(1,t),o),s=(i-1)*r,a=e.slice(s,s+r),c=i<o;return{pageItems:a,pagination:{currentPage:i,totalPages:o,totalResults:e.length,hasMore:c,itemsPerPage:r,...c?{nextPage:i+1}:{}}}}var Tn,Mc,Jp,Dc=f(()=>{"use strict";kt();Tn=40,Mc=40,Jp=10});function $i(e,t,n,r,o){let i=o.length>0,s=o.map(El),{pageItems:a,pagination:c}=yt(s,e.page??1,e.itemsPerPage??Mc);return{type:e.type,uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:r},payload:i?{kind:n,locations:a}:{kind:"empty",category:"noLocations",reason:`${r} returned no locations`},...i?{pagination:c}:{}}}function tm(e,t,n){let r=n.map(l=>{let u=l.uri===t.uri&&l.range.start.line===t.resolvedSymbol.position.line&&l.range.start.character===t.resolvedSymbol.position.character;return{...l,...u?{isDefinition:!0}:{}}}),o=e.groupByFile?SC(r):void 0,i=o??r.map(El),{pageItems:s,pagination:a}=yt(i,e.page??1,e.itemsPerPage??Mc),c=r.length===0?{category:"noReferences",reason:"referencesProvider returned no references"}:void 0;return{type:"references",uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"referencesProvider",source:"lsp"},payload:{kind:"references",...o?{byFile:s}:{locations:s},totalReferences:r.length,totalFiles:new Set(r.map(l=>l.uri)).size,...c?{empty:c}:{}},pagination:a}}async function nm(e,t,n){let r=PC(n),o=!!(r.markdown||r.text);return{type:"hover",uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"hoverProvider"},payload:o?{kind:"hover",...r}:{kind:"empty",category:"noHover",reason:"hoverProvider returned no hover content"}}}function SC(e){let t=new Map;for(let n of e){let r=n.range.start.line+1,o=t.get(n.uri);if(o){o.count+=1,o.lines.push(r),n.isDefinition&&(o.hasDefinition=!0);continue}t.set(n.uri,{uri:n.uri,count:1,firstLine:r,firstCharacter:n.range.start.character,lines:[r],...n.isDefinition?{hasDefinition:!0}:{}})}return[...t.values()]}function PC(e){if(!e||typeof e!="object")return{};let n=e.contents;if(typeof n=="string")return{text:n.trim()};if(Array.isArray(n))return{markdown:n.map(r=>CC(r)).join(`
40
- `).trim()};if(n&&typeof n=="object"){let r=n;if(typeof r.value=="string")return r.kind==="markdown"?{markdown:r.value.trim()}:{text:r.value.trim()}}return{}}function CC(e){if(typeof e=="string")return e;if(e&&typeof e=="object"){let t=e.value;if(typeof t=="string")return t}return String(e)}var xC=f(()=>{"use strict";kt();Dc()});import{safeReadFile as sM}from"@octocodeai/octocode-engine/lsp/validation";function qi(e){return`${e.uri}:${e.range.start.line}:${e.name}`}async function TC(e,t,n){if(t<=0)return e;let r=await sM(e.uri);if(!r)return e;let o=ci(r),i=n?.[0]?.start.line??e.range.start.line,s=Math.max(0,i-t),a=Math.min(o.length-1,i+t),c=o.slice(s,a+1).map((l,u)=>{let d=s+u+1;return`${d===i+1?">":" "}${String(d).padStart(4," ")}| ${l}`}).join(`
41
- `);return{...e,content:c,displayRange:{startLine:s+1,endLine:a+1}}}async function aM(e,t){return Promise.all(e.map(async n=>({...n,from:await TC(n.from,t,n.fromRanges)})))}async function cM(e,t){return Promise.all(e.map(async n=>({...n,to:await TC(n.to,t)})))}async function rm(e,t,n,r,o){if(n<=0||!e)return{calls:[],...wC};try{let i=await e.getIncomingCalls(t),s=o>0?await aM(i,o):i;if(n===1)return{calls:s,truncatedByDepth:s.length>0,cycleCount:0,failedRequestCount:0};let a=await Promise.all(s.map(async c=>{let l=qi(c.from);return r.has(l)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(l),rm(e,c.from,n-1,r,o))}));return{calls:[...s,...a.flatMap(c=>c.calls)],truncatedByDepth:a.some(c=>c.truncatedByDepth),cycleCount:a.reduce((c,l)=>c+l.cycleCount,0),failedRequestCount:a.reduce((c,l)=>c+l.failedRequestCount,0)}}catch{return{calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1}}}async function om(e,t,n,r,o){if(n<=0||!e)return{calls:[],...wC};try{let i=await e.getOutgoingCalls(t),s=o>0?await cM(i,o):i;if(n===1)return{calls:s,truncatedByDepth:s.length>0,cycleCount:0,failedRequestCount:0};let a=await Promise.all(s.map(async c=>{let l=qi(c.to);return r.has(l)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(l),om(e,c.to,n-1,r,o))}));return{calls:[...s,...a.flatMap(c=>c.calls)],truncatedByDepth:a.some(c=>c.truncatedByDepth),cycleCount:a.reduce((c,l)=>c+l.cycleCount,0),failedRequestCount:a.reduce((c,l)=>c+l.failedRequestCount,0)}}catch{return{calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1}}}var wC,EC=f(()=>{"use strict";_r();wC={truncatedByDepth:!1,cycleCount:0,failedRequestCount:0}});function OC(e){return W(e,j(e))}function vC(e,t){return e.format!=="compact"||!LC(t)?t:uM(t)}function AC(e){if(!LC(e))return e;let n=e.payload.locations?.[0],r=n?.displayRange?.startLine;if(!n?.uri||typeof r!="number")return e;let o=n.uri.startsWith("file://")?decodeURIComponent(n.uri.slice(7)):n.uri;return{...e,next:{readSite:{tool:"localGetFileContent",query:{path:o,startLine:Math.max(1,r-3),endLine:(n.displayRange?.endLine??r)+10},why:"Read the top result location with surrounding context",confidence:"exact"}}}}function LC(e){return nr(e)&&typeof e.type=="string"&&typeof e.uri=="string"&&nr(e.payload)}function uM(e){return{...e,format:"compact",payload:dM(e.payload)}}function dM(e){switch(e.kind){case"definition":case"typeDefinition":case"implementation":return{kind:e.kind,locations:e.locations.map(kC)};case"references":return{kind:"references",...e.byFile?{byFile:e.byFile.map(mM)}:{locations:(e.locations??[]).map(kC)},totalReferences:e.totalReferences,totalFiles:e.totalFiles};case"callers":case"callees":case"callHierarchy":return{kind:e.kind,...e.root?{root:_C(e.root)}:{},direction:e.direction,calls:e.calls.map(fM),...e.incomingCalls!==void 0?{incomingCalls:e.incomingCalls}:{},...e.outgoingCalls!==void 0?{outgoingCalls:e.outgoingCalls}:{},completeness:e.completeness};case"documentSymbols":return{kind:"documentSymbols",symbols:e.symbols.map(pM)};case"hover":case"empty":case"workspaceSymbol":case"typeHierarchy":case"diagnostic":return e}}function pM(e){if(!nr(e))return String(e);let t=Xe(e,"line"),n=Xe(e,"character"),r=Xe(e,"endLine"),o=Kt(e,"kind"),i=Kt(e,"name"),s=Xe(e,"childCount"),a=Kt(e,"containerName");return[`${t}:${n}${r!==t?`-${r}`:""}`,o,i,a?`< ${a}`:"",s>0?`children=${s}`:""].filter(Boolean).join(" ")}function kC(e){if(typeof e=="string")return e;let t=e.displayRange?`${e.displayRange.startLine}-${e.displayRange.endLine}`:"?",n=e.isDefinition?" def":"",r=e.content?` | ${IC(e.content,180)}`:"";return`${e.uri}:${t}${n}${r}`}function mM(e){if(!nr(e))return String(e);let t=Kt(e,"uri"),n=Xe(e,"firstLine"),r=Xe(e,"firstCharacter"),o=Xe(e,"count"),i=FC(e,"lines").map(a=>typeof a=="number"?a:void 0).filter(a=>a!==void 0).join(","),s=e.hasDefinition===!0?" def":"";return`${t}:${n}:${r} count=${o} lines=${i}${s}`}function fM(e){if(!nr(e))return String(e);let t=Kt(e,"direction"),n=_C(e.item),r=FC(e,"ranges").map(hM).join(","),o=Xe(e,"rangeCount"),i=Xe(e,"rangeSampleCount"),s=Kt(e,"contentPreview");return[t,n,r?`ranges=${r}`:"",o>i?`totalRanges=${o}`:"",s?`| ${IC(s,180)}`:""].filter(Boolean).join(" ")}function _C(e){if(!nr(e))return String(e);let t=Kt(e,"name"),n=Kt(e,"kind"),r=Kt(e,"uri"),o=Xe(e,"line"),i=Xe(e,"endLine"),s=Xe(e,"selectionLine"),a=s>0?` sel=${s}`:"";return`${t} ${n} ${r}:${o}-${i}${a}`}function hM(e){return nr(e)?`${Xe(e,"line")}:${Xe(e,"character")}`:String(e)}function nr(e){return typeof e=="object"&&e!==null}function Kt(e,t,n=""){let r=e[t];return typeof r=="string"?r:n}function Xe(e,t,n=0){let r=e[t];return typeof r=="number"?r:n}function FC(e,t){let n=e[t];return Array.isArray(n)?n:[]}function IC(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,Math.max(0,t-3))}... (truncated for single-line display \u2014 use charOffset or startLine to read full content)`:n}function MC(e,t){let n=NC(e.fromRanges);return{direction:"incoming",item:Nc(e.from),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...GC(e.from,t)}}function DC(e,t){let n=NC(e.fromRanges);return{direction:"outgoing",item:Nc(e.to),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...GC(e.to,t)}}function Nc(e){return{name:e.name,kind:Vr(e.kind),uri:e.uri,line:e.range.start.line+1,endLine:e.range.end.line+1,...e.selectionRange?{selectionLine:e.selectionRange.start.line+1}:{}}}function NC(e){let t=new Set,n=[];for(let r of e){let o=r.start.line+1,i=r.start.character,s=`${o}:${i}`;if(!t.has(s)&&(t.add(s),n.push({line:o,character:i}),n.length>=lM))break}return n}function GC(e,t){return t<=0||!e.content?{}:{contentPreview:e.content}}function Vr(e){if(typeof e=="string")return e;switch(typeof e=="number"?e:void 0){case 1:return"file";case 2:return"module";case 3:return"namespace";case 4:return"package";case 5:return"class";case 6:return"method";case 7:return"property";case 8:return"field";case 9:return"constructor";case 10:return"enum";case 11:return"interface";case 12:return"function";case 13:return"variable";case 14:return"constant";case 15:return"string";case 16:return"number";case 17:return"boolean";case 18:return"array";case 19:return"object";case 20:return"key";case 21:return"null";case 22:return"enumMember";case 23:return"struct";case 24:return"event";case 25:return"operator";case 26:return"typeParameter";default:return"unknown"}}var lM,Wi=f(()=>{"use strict";ue();lM=8});async function im(e,t,n){let o=(await n.prepareCallHierarchy(t.uri,t.resolvedSymbol.position,t.content))[0];if(!o)return gt(e.type,t,"No callable symbol found",!0);let i=e.depth??1,s={calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:0},a=e.type==="callers"||e.type==="callHierarchy"?await rm(n,o,i,new Set([qi(o)]),e.contextLines??0):s,c=e.type==="callees"||e.type==="callHierarchy"?await om(n,o,i,new Set([qi(o)]),e.contextLines??0):s,l=S=>/node_modules\/typescript\/lib\/lib\.[^/]*\.d\.ts$/.test(S.to.uri),u=c.calls.filter(l).length,d=c.calls.filter(S=>!l(S)),m=[...a.calls.map(S=>({direction:"incoming",...S})),...d.map(S=>({direction:"outgoing",...S}))],p=m.map(S=>S.direction==="incoming"?MC(S,e.contextLines??0):DC(S,e.contextLines??0)),{pageItems:h,pagination:g}=yt(p,e.page??1,e.itemsPerPage??Jp),y=e.type==="callers"?"incoming":e.type==="callees"?"outgoing":"both",b=!a.truncatedByDepth&&!c.truncatedByDepth&&a.failedRequestCount+c.failedRequestCount===0;return{type:e.type,uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"callHierarchyProvider"},payload:{kind:e.type,root:Nc(o),direction:y,calls:h,incomingCalls:a.calls.length,outgoingCalls:d.length,completeness:{complete:b,truncatedByDepth:a.truncatedByDepth||c.truncatedByDepth,cycleCount:a.cycleCount+c.cycleCount,failedRequestCount:a.failedRequestCount+c.failedRequestCount,dynamicCallsExcluded:!0,...u>0&&{stdlibCallsExcluded:u}},...m.length===0?{empty:{category:"noCalls",reason:"callHierarchyProvider returned no calls"}}:{}},pagination:g}}async function sm(e,t,n){let o=(await n.prepareTypeHierarchy(t.uri,t.resolvedSymbol.position,t.content))[0];if(!o)return gt(e.type,t,"No type-hierarchy item found at position",!0);let i=e.type==="supertypes"?"supertypes":"subtypes",s=i==="supertypes"?await n.typeHierarchySupertypes(o):await n.typeHierarchySubtypes(o),{pageItems:a,pagination:c}=yt(s,e.page??1,e.itemsPerPage??Tn);return{type:e.type,uri:t.uri,resolvedSymbol:Qt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"typeHierarchyProvider"},payload:s.length>0?{kind:"typeHierarchy",direction:i,root:o,items:a,totalItems:s.length}:{kind:"empty",category:"noTypeHierarchy",reason:`typeHierarchyProvider returned no ${i} for this symbol`},pagination:c}}var HC=f(()=>{"use strict";EC();kt();Wi();Dc()});var Vi=f(()=>{"use strict";Dc();xC();HC()});import Ki from"node:path";import{readFile as gM}from"node:fs/promises";import{resolveImportAliasDefinitions as yM}from"@octocodeai/octocode-engine/lsp/resolver";async function BC(e,t,n){if(typeof e.openDocument=="function")try{let r=Ki.extname(t.uri).slice(1),o=QC.includes(r)?QC:[r],i=await ht({path:n,keywords:t.resolvedSymbol.name,fixedString:!0,wholeWord:!0,filesOnly:!0,maxFiles:bM,include:o.filter(Boolean).map(s=>`*.${s}`)});for(let s of i.files??[]){let a=typeof s.path=="string"?s.path:void 0;if(!a)continue;let c=Ki.isAbsolute(a)?a:Ki.join(n,a);if(Ki.resolve(c)!==Ki.resolve(t.uri))try{let l=await gM(c,"utf-8");if(l.length>RM)continue;await e.openDocument(c,l)}catch{}}}catch{}}async function zC(e,t,n){switch(e.type){case"definition":return n.hasCapability("definitionProvider")?$i(e,t,"definition","definitionProvider",await yM({anchorUri:t.uri,symbolName:t.resolvedSymbol.name,locations:await n.gotoDefinition(t.uri,t.resolvedSymbol.position,t.content)})):gt(e.type,t,"definitionProvider unsupported",!0);case"typeDefinition":return n.hasCapability("typeDefinitionProvider")?$i(e,t,"typeDefinition","typeDefinitionProvider",await n.typeDefinition(t.uri,t.resolvedSymbol.position,t.content)):gt(e.type,t,"typeDefinitionProvider unsupported",!0);case"implementation":return n.hasCapability("implementationProvider")?$i(e,t,"implementation","implementationProvider",await n.implementation(t.uri,t.resolvedSymbol.position,t.content)):gt(e.type,t,"implementationProvider unsupported",!0);case"references":return n.hasCapability("referencesProvider")?tm(e,t,await n.findReferences(t.uri,t.resolvedSymbol.position,e.includeDeclaration??!0,t.content)):gt(e.type,t,"referencesProvider unsupported",!0);case"hover":return n.hasCapability("hoverProvider")?nm(e,t,await n.hover(t.uri,t.resolvedSymbol.position,t.content)):gt(e.type,t,"hoverProvider unsupported",!0);case"callers":case"callees":case"callHierarchy":return n.hasCapability("callHierarchyProvider")?im(e,t,n):gt(e.type,t,"callHierarchyProvider unsupported",!0);case"supertypes":case"subtypes":return n.hasCapability("typeHierarchyProvider")?sm(e,t,n):gt(e.type,t,"typeHierarchyProvider unsupported",!0)}}var jC,bM,RM,QC,UC=f(()=>{"use strict";Wr();Vi();jC=new Set(["references","callers","callees","callHierarchy","implementation"]),bM=12,RM=512*1024,QC=["ts","tsx","mts","cts","js","jsx","mjs","cjs"]});import cm from"node:path";import{fileURLToPath as SM}from"node:url";import{unavailableHintFor as PM}from"@octocodeai/octocode-engine/lsp/manager";import{detectLanguageId as CM}from"@octocodeai/octocode-engine/lsp/config";function $C(e){return am||(am=new Set(D.getSupportedJsTsExtensions().map(t=>`.${t}`))),am.has(cm.extname(e).toLowerCase())}function Tt(e,t){let n=CM(e),r=PM(n,void 0);throw new je($.LSP_SERVER_UNAVAILABLE,`No ${n} language server is available for ${e}, so "${t}" cannot be answered semantically. ${r} Meanwhile, use localSearchCode (text or structural search) to find the symbol's occurrences and localGetFileContent to read the surrounding code.`)}function qC(e,t){let n=e.startsWith("file://")?SM(e):e;return cm.isAbsolute(n)?n:cm.resolve(t,n)}function lm(){return[...D.getSupportedJsTsExtensions(),...xM]}function WC(){return lm().map(e=>`**/*.${e}`)}async function VC(e,t){let n=e.symbolName?.trim();if(n)try{return(await D.searchRipgrep({path:t,pattern:n,fixedString:!0,caseSensitive:!0,filesOnly:!0,include:WC(),excludeDir:[...wM],maxSnippetChars:1})).files[0]?.path}catch{return}}async function um(e,t){if(e.uri)return qC(e.uri,t);let n=await VC(e,t);if(n)return n;try{let o=D.queryFileSystem({path:t,recursive:!0,includeRoot:!1,showHidden:!1,entryType:"f",extensions:lm(),maxDepth:5,limit:1}).entries[0];if(o)return o.path}catch{}return t}function dm(e){return e instanceof Error?e.message:String(e)}function pm(e,t){if(!$C(e))return null;try{let n=D.extractJsSymbols(t,e);if(!n)return null;let r=JSON.parse(n);return Array.isArray(r)?r:null}catch{return null}}var am,xM,wM,Gc=f(()=>{"use strict";Oa();Wn();Ee();xM=["py","rs","go","java","kt","cs","c","cc","cpp","h","hpp","rb","php","swift","scala","lua","dart","ex","exs","erl","hrl","clj","cljs"];wM=[".git","node_modules","dist","out","coverage","target"]});import{acquirePooledClient as TM,isLanguageServerAvailable as EM}from"@octocodeai/octocode-engine/lsp/manager";import{resolveWorkspaceRootForFile as kM}from"@octocodeai/octocode-engine/lsp/workspaceRoot";async function hm(e){let t=await Yp(e,Ie);if(t.ok===!1)return t.error;let n=e.workspaceRoot??await kM(t.value.uri),r=await EM(t.value.uri,n),o=r?await TM(n,t.value.uri):null,i=!!o?.hasCapability("documentSymbolProvider"),s=[],a,c=pm(t.value.uri,t.value.content);if(c?.length)s=c,a="native";else if(i&&o){let y=await o.documentSymbols(t.value.uri,t.value.content);s=Array.isArray(y)?y:[],a="lsp"}else{let y=Sy(t.value.content,t.value.uri);y&&(s=y,a="markdown")}let l=a!==void 0;!l&&!r&&Tt(t.value.uri,"documentSymbols");let u=KC(s),d=XC(s),{pageItems:m,pagination:p}=yt(u,e.page??1,e.itemsPerPage??Tn),h=JC(u,y=>y.kind),g=l?void 0:{category:"unsupportedOperation",reason:"documentSymbolProvider unsupported"};return{type:"documentSymbols",uri:t.value.uri,lsp:{serverAvailable:r,...a==="lsp"?{provider:"documentSymbolProvider"}:{},...a?{source:a}:{}},summary:{totalSymbols:u.length,returnedSymbols:m.length,topLevelSymbols:d,kinds:h},payload:{kind:"documentSymbols",symbols:m,...g?{empty:g}:{}},pagination:p}}function KC(e){let t=[];for(let n of e)gm(n,t);return t.sort((n,r)=>n.line-r.line||n.character-r.character)}function gm(e,t,n){if(!e||typeof e!="object")return;let r=e,o=YC(r);if(typeof r.name=="string"&&o&&t.push({name:r.name,kind:Vr(r.kind),line:o.start.line+1,character:o.start.character,endLine:o.end.line+1,childCount:Array.isArray(r.children)?r.children.length:0,...n?{containerName:n}:{}}),Array.isArray(r.children)&&OM.has(Vr(r.kind))){let i=typeof r.name=="string"?r.name:n;for(let s of r.children)gm(s,t,i)}}function YC(e){if(mm(e.range))return e.range;let t=e.location;return t&&mm(t.range)?t.range:void 0}function mm(e){if(!e||typeof e!="object")return!1;let t=e;return fm(t.start)&&fm(t.end)}function fm(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.line=="number"&&typeof t.character=="number"}function XC(e){return e.filter(t=>t&&typeof t=="object"&&"name"in t).length}function JC(e,t){let n={};for(let r of e){let o=t(r);n[o]=(n[o]??0)+1}return n}var OM,ZC=f(()=>{"use strict";sa();kt();Xp();Vi();Wi();Gc();OM=new Set(["file","module","namespace","package","class","enum","interface","markdownHeading","struct"])});import ex from"node:path";import{acquirePooledClient as tx,isLanguageServerAvailable as nx}from"@octocodeai/octocode-engine/lsp/manager";import{resolveWorkspaceRootForFile as vM}from"@octocodeai/octocode-engine/lsp/workspaceRoot";async function ym(e){let t=e.symbolName??"",n=ex.resolve(e.workspaceRoot??process.cwd()),r=await um(e,n);await nx(r,n)||Tt(r,"workspaceSymbol");let i=await tx(n,r);if(i||Tt(r,"workspaceSymbol"),!i.hasCapability("workspaceSymbolProvider"))return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:"workspaceSymbolProvider unsupported"}};let s;try{ex.extname(r)&&await i.openDocument(r),s=await i.workspaceSymbol(t)}catch(u){return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:`workspaceSymbolProvider failed: ${dm(u)}`}}}let a=rx(s),{pageItems:c,pagination:l}=yt(a,e.page??1,e.itemsPerPage??Tn);return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},summary:{query:t,totalSymbols:a.length},payload:a.length>0?{kind:"workspaceSymbol",query:t,symbols:c,totalSymbols:a.length}:{kind:"empty",category:"noWorkspaceSymbols",reason:`workspaceSymbolProvider returned no symbols for query "${t}"`},pagination:l}}function rx(e){return e.flatMap(t=>{if(!t||typeof t!="object")return[];let n=t,r=typeof n.name=="string"?n.name:void 0;if(!r)return[];let o=n.kind,i=n.location,s=i?.range,a=typeof i?.uri=="string"?i.uri:"",c=(s?.start?.line??0)+1,l=(s?.end?.line??s?.start?.line??0)+1,u=typeof n.containerName=="string"?n.containerName:void 0;return[{name:r,kind:Vr(o),line:c,character:s?.start?.character??0,endLine:l,childCount:0,...u?{containerName:u}:{},uri:a}]})}async function bm(e){let t=e.uri??"",n=e.workspaceRoot??(t?await vM(t):process.cwd());await nx(t,n)||Tt(t,"diagnostic");let o=await tx(n,t);if(o||Tt(t,"diagnostic"),!o.hasCapability("diagnosticProvider"))return{type:"diagnostic",uri:t,lsp:{serverAvailable:!0,provider:"diagnosticProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:"diagnosticProvider (pull) unsupported \u2014 server uses push (publishDiagnostics) instead"},warnings:['This server pushes diagnostics via textDocument/publishDiagnostics. Pull diagnostics (type: "diagnostic") require LSP 3.17 pull support. Check server docs to enable it.']};let i=await o.getDiagnostics(t),s=ox(i),a=s.filter(d=>d.severity===1).length,c=s.filter(d=>d.severity===2).length,{pageItems:l,pagination:u}=yt(s,e.page??1,e.itemsPerPage??Tn);return{type:"diagnostic",uri:t,lsp:{serverAvailable:!0,provider:"diagnosticProvider"},summary:{totalDiagnostics:s.length,errorCount:a,warningCount:c},payload:s.length>0?{kind:"diagnostic",diagnostics:l,totalDiagnostics:s.length,errorCount:a,warningCount:c}:{kind:"empty",category:"noDiagnostics",reason:"No diagnostics \u2014 file has no errors or warnings"},pagination:u}}function ox(e){if(e&&typeof e=="object"){let t=e;return(Array.isArray(t.items)?t.items:[]).flatMap(r=>ix(r))}return[]}function ix(e){if(!e||typeof e!="object")return[];let t=e,n=t.range,r=typeof t.message=="string"?t.message:"";return r?[{severity:typeof t.severity=="number"?t.severity:void 0,message:r,line:(n?.start?.line??0)+1,endLine:(n?.end?.line??n?.start?.line??0)+1,character:n?.start?.character??0,...t.code!==void 0?{code:t.code}:{},...typeof t.source=="string"?{source:t.source}:{}}]:[]}var sx=f(()=>{"use strict";Vi();Wi();Gc()});var ax=f(()=>{"use strict";Gc();ZC();sx()});import{acquirePooledClient as AM,isLanguageServerAvailable as LM}from"@octocodeai/octocode-engine/lsp/manager";import{resolveWorkspaceRootForFile as _M}from"@octocodeai/octocode-engine/lsp/workspaceRoot";async function cx(e){return me(e.queries||[],async t=>ut({toolName:Ie,query:t,contextMessage:"lspGetSemantics execution failed",execute:async()=>{let n=await FM(t);return OC(AC(vC(t,n)))}}),{toolName:Ie,minQueryTimeoutMs:3e4},e)}async function FM(e){if(e.type==="documentSymbols")return hm(e);if(e.type==="workspaceSymbol")return ym(e);if(e.type==="diagnostic")return bm(e);let t=await RC(e,Ie);if(t.ok===!1){let a=typeof t.error.error=="string"?t.error.error:"Symbol anchor resolution failed";return em(e,a)}let n=e.workspaceRoot??await _M(t.value.uri);await LM(t.value.uri,n)||Tt(t.value.uri,e.type);let o=await AM(n,t.value.uri);o||Tt(t.value.uri,e.type),jC.has(e.type)&&await BC(o,t.value,n);let i=o.getReadiness?.(),s=await zC(e,t.value,o);return yC(s,i)}var lx=f(()=>{"use strict";Ke();Vn();kt();bC();Xp();UC();Vi();ax();Wi()});function C(e,t,n={}){let r=n.severity??(MM.has(e)?"error":"warning"),o=n.blocksAnswer??(IM.has(e)||r==="error");return{code:e,severity:r,message:t,blocksAnswer:o,...n.queryPath?{queryPath:n.queryPath}:{},...n.predicateId?{predicateId:n.predicateId}:{},...n.backend?{backend:n.backend}:{},...n.repair?{repair:n.repair}:{},...n.continuation?{continuation:n.continuation}:{}}}function ux(e){return e.some(t=>t.blocksAnswer)}var IM,MM,Yt,te=f(()=>{"use strict";IM=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","negativeUniverseRequired","residualNotExact","fieldTypeMismatch","requiresMaterialization","vendorNoEquivalent","lossyTransform","unsupportedVendorPredicate","responseShapeMismatch","materializationNotAllowed","materializationFailed","parserFailed","lspUnavailable","symbolNotFound","budgetExhausted","rateLimited","authRequired","contentTruncated"]),MM=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","fieldTypeMismatch","unsupportedVendorPredicate","responseShapeMismatch","materializationNotAllowed","materializationFailed","authRequired","symbolNotFound"]);Yt=class extends Error{diagnostics;constructor(t){super(t.map(n=>`${n.code}: ${n.message}`).join("; ")),this.name="OqlValidationError",this.diagnostics=t}}});function J(...e){throw new Yt(e)}function rr(e){let t=e;return t&&Array.isArray(t.issues)?t.issues.map(n=>`${n.path.join(".")||"(root)"}: ${n.message}`).join("; "):"Invalid OQL query."}var Kr=f(()=>{"use strict";te()});import{z as T}from"zod";function px(e,t){let n=qM[e];if(!n||t===void 0)return null;let r=n.safeParse(t);return r.success?null:r.error.issues.map(o=>`params.${o.path.join(".")||"(root)"}: ${o.message}`).join("; ")}var Oe,DM,dx,NM,GM,HM,QM,jM,BM,zM,UM,$M,qM,mx=f(()=>{"use strict";Oe=T.number().int().min(1),DM=T.number().int().min(0),dx=T.enum(["symbols","files","dependencies","relations"]),NM=T.object({match:T.enum(["file","path"]).optional(),concise:T.boolean().optional(),extension:T.string().optional(),filename:T.string().optional(),page:Oe.optional(),limit:Oe.optional()}).passthrough(),GM=T.object({type:T.enum(["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation","workspaceSymbol","supertypes","subtypes","diagnostic"]).optional(),uri:T.string().optional(),symbolName:T.string().optional(),symbolKind:T.string().optional(),lineHint:Oe.optional(),orderHint:T.number().int().optional(),includeDeclaration:T.boolean().optional(),depth:T.number().int().min(0).max(20).optional(),groupByFile:T.boolean().optional(),workspaceRoot:T.string().optional(),format:T.enum(["structured","compact"]).optional(),page:Oe.optional(),itemsPerPage:Oe.optional()}).passthrough(),HM=T.object({keywords:T.array(T.string()).optional(),topicsToSearch:T.union([T.string(),T.array(T.string())]).transform(e=>typeof e=="string"?[e]:e).optional(),language:T.string().optional(),owner:T.string().optional(),stars:T.union([T.string(),T.number()]).optional(),forks:T.string().optional(),goodFirstIssues:T.string().optional(),size:T.string().optional(),created:T.string().optional(),updated:T.string().optional(),license:T.string().optional(),match:T.array(T.enum(["name","description","readme"])).optional(),visibility:T.enum(["public","private"]).optional(),archived:T.boolean().optional(),sort:T.enum(["stars","forks","help-wanted-issues","updated","best-match"]).optional(),concise:T.boolean().optional(),page:Oe.optional()}).passthrough(),QM=T.object({packageName:T.string().optional(),keywords:T.array(T.string()).optional(),mode:T.enum(["lean","full"]).optional(),page:Oe.optional()}).passthrough(),jM=T.object({prNumber:Oe.optional(),concise:T.boolean().optional(),state:T.enum(["open","closed","merged"]).optional(),author:T.string().optional(),label:T.union([T.string(),T.array(T.string())]).optional(),keywordsToSearch:T.union([T.string(),T.array(T.string())]).transform(e=>typeof e=="string"?[e]:e).optional(),head:T.string().optional(),base:T.string().optional(),created:T.string().optional(),updated:T.string().optional(),closed:T.string().optional(),"merged-at":T.string().optional(),draft:T.boolean().optional(),archived:T.boolean().optional(),sort:T.enum(["created","updated","best-match","comments","reactions"]).optional(),order:T.enum(["asc","desc"]).optional(),reviewMode:T.string().optional(),filePage:Oe.optional(),commentPage:Oe.optional(),commitPage:Oe.optional(),charOffset:DM.optional(),charLength:Oe.optional(),minify:T.enum(["none","standard"]).optional(),limit:Oe.optional(),page:Oe.optional(),matchString:T.string().optional(),matchScope:T.enum(["body","title","comments","reviews","all"]).optional(),content:T.record(T.string(),T.unknown()).optional()}).passthrough(),BM=T.object({path:T.string().optional(),branch:T.string().optional(),since:T.string().optional(),until:T.string().optional(),author:T.string().optional(),includeDiff:T.boolean().optional(),limit:Oe.optional(),page:Oe.optional()}).passthrough(),zM=T.object({prNumber:Oe.optional(),files:T.array(T.string()).optional(),baseRef:T.string().optional(),headRef:T.string().optional(),path:T.string().optional()}).passthrough(),UM=T.object({goal:T.string().optional(),intent:T.enum(["general","reachability","dependencies","symbols"]).optional(),facets:T.array(dx).optional(),mode:T.enum(["plan","analyze","prove"]).optional(),maxFiles:Oe.optional()}).passthrough(),$M=T.object({goal:T.string().optional(),intent:T.enum(["general","reachability","dependencies","symbols"]).optional(),facets:T.array(dx).optional(),mode:T.enum(["plan","analyze","prove"]).optional(),maxFiles:Oe.optional(),subject:T.string().optional(),subjectKind:T.enum(["file","symbol","function","class","method","interface","type","dependency","package","entrypoint"]).optional(),relation:T.union([T.string(),T.array(T.string())]).optional(),verdict:T.union([T.string(),T.array(T.string())]).optional(),direction:T.enum(["incoming","outgoing","both"]).optional(),proof:T.enum(["none","lsp"]).optional(),proofLimit:Oe.max(25).optional(),includePackets:T.boolean().optional(),includeFacts:T.boolean().optional(),includeEdges:T.boolean().optional()}).passthrough(),qM={semantics:GM,repositories:HM,packages:QM,pullRequests:jM,commits:BM,diff:zM,research:UM,graph:$M,code:NM}});function fx(e,t){let n=e.from,r=typeof e.repo=="string"||typeof e.owner=="string",o=e.path;if(n)return r&&J(C("ambiguousSugar","Provide either `from` or top-level repo/owner sugar, not both.",{queryPath:"from"})),WM(n);if(r){let i=typeof e.owner=="string"?e.owner:void 0,s=typeof e.repo=="string"?e.repo:void 0;i&&s&&!s.includes("/")&&(s=`${i}/${s}`);let a={kind:"github"};return s&&(a.repo=s),i&&!s&&(a.owner=i),typeof e.ref=="string"&&(a.ref=e.ref),a}if(typeof o=="string")return{kind:"local",path:o};if(Array.isArray(o)&&typeof o[0]=="string")return{kind:"local",path:o[0]};if(t==="packages")return{kind:"npm"};if(t==="repositories")return{kind:"github"};Ml.includes(t)||J(C("invalidQuery","A corpus is required: provide `from`, a `repo`, or a local `path`.",{queryPath:"from"}))}function WM(e){if(e.kind!=="github")return e;let t=e.owner,n=e.repo;if(t&&n&&!n.includes("/")){n=`${t}/${n}`;let r={kind:"github",repo:n};return e.ref&&(r.ref=e.ref),r}return e}var hx=f(()=>{"use strict";te();un();Kr()});function gx(e,t){let n={...e.scope??{}},r=e.path,o=t?.kind==="local"&&!e.from&&typeof e.repo!="string"&&typeof e.owner!="string";return r!==void 0&&!o&&(e.scope&&e.scope.path!==void 0&&J(C("ambiguousSugar","Both top-level `path` and `scope.path` provided; the path intent is ambiguous.",{queryPath:"path"})),n.path=r),Object.keys(n).length>0?n:void 0}var yx=f(()=>{"use strict";te();Kr()});function Yr(e){return e?e.kind==="all"||e.kind==="any"?1+e.of.reduce((t,n)=>t+Yr(n),0):e.kind==="not"?1+Yr(e.predicate):1:0}var Rm=f(()=>{"use strict"});function bx(e,t){let n=YM(e);e.where&&n&&J(C("ambiguousSugar","Provide either a canonical `where` predicate or top-level match sugar, not both.",{queryPath:"where"}));let r=e.where??n;if(e.filesWithoutMatch&&r&&(r={kind:"not",predicate:r}),e.invert===!0&&r&&(r={kind:"not",predicate:r}),!r)return void 0;Sm(r,"where"),Pm(r,"where",new Map);let o=dn.safeParse(r);return o.success||J(C("invalidQuery",rr(o.error),{queryPath:"where"})),o.data}function KM(e){let t=e.controls?.budget?.maxBooleanExpansion;return typeof t=="number"&&t>0?t:VM}function YM(e){let t=n=>{let r=Yr(n),o=KM(e);return r>o&&J(C("budgetExhausted",`Boolean sugar expanded to ${r} predicate nodes, over controls.budget.maxBooleanExpansion (${o}). Narrow the query or raise the budget.`,{queryPath:"where"})),n};if(Array.isArray(e.and))return{kind:"all",of:e.and.map(Xr)};if(Array.isArray(e.or))return{kind:"any",of:e.or.map(Xr)};if(Array.isArray(e.noneOf))return{kind:"not",predicate:{kind:"any",of:e.noneOf.map(Xr)}};if(Array.isArray(e.xor)){e.xor.length!==2&&J(C("invalidQuery","xor is binary; use oneOf for multi-way exclusive matching.",{queryPath:"xor"}));let n=Xr(e.xor[0]),r=Xr(e.xor[1]);return t({kind:"any",of:[{kind:"all",of:[n,{kind:"not",predicate:r}]},{kind:"all",of:[{kind:"not",predicate:n},r]}]})}if(Array.isArray(e.oneOf))return t(XM(e.oneOf.map(Xr)));if(typeof e.pattern=="string"||e.rule!==void 0)return typeof e.pattern=="string"&&e.rule!==void 0&&J(C("invalidQuery","A structural predicate uses exactly one of `pattern` or `rule`.",{queryPath:"pattern"})),typeof e.lang!="string"&&J(C("invalidQuery","Structural sugar requires `lang`.",{queryPath:"lang"})),{kind:"structural",lang:e.lang,...typeof e.pattern=="string"?{pattern:e.pattern}:{},...e.rule!==void 0?{rule:e.rule}:{}};if(typeof e.text=="string")return{kind:"text",value:e.text};if(typeof e.regex=="string")return{kind:"regex",value:e.regex}}function Xr(e){if(e&&typeof e=="object"&&"kind"in e)return e;J(C("invalidQuery","Boolean sugar children must be predicate objects with a `kind`.",{queryPath:"where"}))}function XM(e){return{kind:"any",of:e.map((n,r)=>{let o=e.filter((i,s)=>s!==r).map(i=>({kind:"not",predicate:i}));return{kind:"all",of:[n,...o]}})}}function Sm(e,t){switch(e.kind){case"all":case"any":(!Array.isArray(e.of)||e.of.length===0)&&J(C("invalidQuery",`Empty \`${e.kind}.of\` is invalid.`,{queryPath:t})),e.of.forEach((n,r)=>Sm(n,`${t}.of[${r}]`));break;case"not":e.predicate||J(C("invalidQuery","`not` must contain exactly one child.",{queryPath:t})),Sm(e.predicate,`${t}.predicate`);break;case"structural":typeof e.pattern=="string"==(e.rule!==void 0)&&J(C("invalidQuery","A structural predicate uses exactly one of `pattern` or `rule`.",{queryPath:t}));break;case"field":JM(e,t);break;default:break}}function Pm(e,t,n){if(typeof e.id=="string"){let r=n.get(e.id);r!==void 0&&r.node!==e&&J(C("invalidQuery",`Duplicate predicate id "${e.id}" at ${r.path} and ${t}; ids must be unique across \`where\`.`,{queryPath:t,predicateId:e.id})),r===void 0&&n.set(e.id,{path:t,node:e})}e.kind==="all"||e.kind==="any"?e.of.forEach((r,o)=>Pm(r,`${t}.of[${o}]`,n)):e.kind==="not"&&Pm(e.predicate,`${t}.predicate`,n)}function JM(e,t){if(e.op==="exists"){e.value!==void 0&&J(C("fieldTypeMismatch","`exists` takes no value.",{queryPath:t}));return}e.value===void 0&&J(C("fieldTypeMismatch",`Operator "${e.op}" requires a value.`,{queryPath:t})),e.op==="in"&&(!Array.isArray(e.value)||e.value.length===0)&&J(C("fieldTypeMismatch","`in` requires a non-empty array of values.",{queryPath:t}))}var VM,Rx=f(()=>{"use strict";Rr();te();Rm();Kr();VM=64});function Sx(e){if(!e)return!1;switch(e.kind){case"structural":return!0;case"regex":return e.dialect==="pcre2";case"all":case"any":return!0;case"not":return Sx(e.predicate);default:return!1}}function Px(e,t,n,r){let o;return typeof e.materialize=="string"?o={mode:e.materialize}:e.materialize&&typeof e.materialize=="object"&&(o=e.materialize),r==="materialize"&&t?.kind==="github"?o?{...o,mode:o.mode==="never"?"required":o.mode,strategy:o.strategy??"subtree"}:{mode:"required",strategy:"subtree"}:r==="semantics"&&t?.kind==="github"?{...o??{},mode:"required",strategy:"file"}:t?.kind!=="github"||o?o:Sx(n)?{mode:"auto",strategy:"subtree"}:{mode:"never"}}var Cx=f(()=>{"use strict"});function xx(e,t){let n=e.params?{...e.params}:void 0;return t!=="graph"||!n||!eD(n)?n:{...n,proof:"lsp",proofLimit:typeof n.proofLimit=="number"&&n.proofLimit>0?n.proofLimit:5}}function eD(e){if(e.proof!==void 0||e.mode==="plan"||e.mode==="prove")return!1;if(e.relation!==void 0||e.direction!==void 0)return!0;let t=typeof e.goal=="string"?e.goal.toLowerCase():"";return ZM.some(n=>t.includes(n))}var ZM,wx=f(()=>{"use strict";ZM=["relationship","relationships","reference","references","who uses","used by","usage","caller","callers","callee","callees","call hierarchy","blast radius","safe to delete","what breaks","delete","dead code","unused export","unused symbol","retained by"]});function Yi(e){let t=bh.safeParse(e);t.success||J(C("invalidQuery",rr(t.error)));let n={...t.data},r=n.filesWithoutMatch?"files":n.target??nD(n);r===void 0&&J(C("invalidQuery",`Could not determine \`target\`; specify one of: ${ln.join(", ")}.`,{queryPath:"target"})),Fo.includes(r)&&J(C("unsupportedTarget",`Target "${r}" is reserved until proof/dry-run support exists.`,{queryPath:"target",repair:{message:`Use an active target: ${ln.join(", ")}.`}})),ln.includes(r)||J(C("unknownField",`Unknown target "${r}".`));for(let h of Object.keys(n))tD.has(h)||J(C("unknownField",`Unknown field "${h}" is not part of OQL.`,{queryPath:h}));let o=n.filesOnly===!0?Array.isArray(n.select)?n.select:["path","next.fetch"]:n.select,i=n.filesOnly===!0?"discovery":n.view??"paginated",s=fx(n,r),a=gx(n,s),c=bx(n,r),l=Px(n,s,c,r),u=rD(n),d=xx(n,r),m={schema:"oql",...n.id?{id:n.id}:{},target:r,...s?{from:s}:{},...d?{params:d}:{},...a?{scope:a}:{},...c?{where:c}:{},...l?{materialize:l}:{},...u?{fetch:u}:{},...o?{select:o}:{},view:i,...n.controls?{controls:n.controls}:{},...n.limit!==void 0?{limit:n.limit}:{},...n.page!==void 0?{page:n.page}:{},...n.itemsPerPage!==void 0?{itemsPerPage:n.itemsPerPage}:{},...n.explain!==void 0?{explain:n.explain}:{}};if(m.target==="code"&&!m.where&&J(C("invalidQuery",'target:"code" requires a `where` predicate (text/regex/structural). `where` omission is not a wildcard.',{queryPath:"where"})),(m.target==="content"||m.target==="structure")&&m.where&&J(C("invalidQuery",`target:"${m.target}" does not use \`where\`. Use fetch.content.match for content anchors, or target:"code"/"files" for predicates.`,{queryPath:"where"})),(m.target==="content"||m.target==="structure")&&m.from?.kind==="github"&&!(m.from.repo&&m.from.repo.includes("/"))&&J(C("invalidQuery",`target:"${m.target}" over GitHub requires a concrete repository ("owner/name"); a provider-wide or owner-only source cannot read a specific tree.`,{queryPath:"from",repair:{message:'Set from:{kind:"github",repo:"owner/name"} (and scope.path for a subtree).'}})),m.target==="materialize"&&(m.where&&J(C("invalidQuery",'target:"materialize" does not use `where`; it clones/caches a corpus and returns a stable local checkpoint. Run a search against the returned localPath instead.',{queryPath:"where"})),m.from?.kind!=="github"&&m.from?.kind!=="materialized"&&J(C("invalidQuery",'target:"materialize" needs from:{kind:"github",repo:"owner/name"} (and scope.path to bound the subtree) or an already-materialized `from`.',{queryPath:"from",repair:{message:'Set from:{kind:"github",repo:"owner/name"} with scope.path.'}}))),m.params!==void 0){let h=px(m.target,m.params);h&&J(C("invalidQuery",h,{queryPath:"params"}))}let p=Ds.safeParse(m);return p.success||J(C("invalidQuery",rr(p.error))),p.data}function nD(e){if(e.where!==void 0||typeof e.text=="string"||typeof e.regex=="string"||typeof e.pattern=="string"||e.rule!==void 0||Array.isArray(e.and)||Array.isArray(e.or)||Array.isArray(e.xor)||Array.isArray(e.noneOf)||Array.isArray(e.oneOf))return"code";if(e.fetch?.content)return"content";if(e.fetch?.tree)return"structure"}function rD(e){return e.fetch?{...e.fetch}:void 0}var tD,Hc=f(()=>{"use strict";Rr();te();mx();un();Kr();hx();yx();Rx();Cx();wx();tD=new Set(["schema","id","target","from","scope","where","materialize","fetch","select","view","controls","limit","page","itemsPerPage","params","explain","repo","owner","ref","path","text","regex","pattern","rule","lang","and","or","xor","noneOf","oneOf","invert","filesOnly","filesWithoutMatch","mainResearchGoal","researchGoal","reasoning","verbose"])});function Tx(e){let t=Rh.safeParse(e);t.success||J(C("invalidQuery",rr(t.error)));let n=t.data,r=new Set(["schema","id","queries","combine","limit","page","itemsPerPage","explain"]);for(let i of Object.keys(n))r.has(i)||J(C("unknownField",`Unknown batch field "${i}" is not part of OQL.`,{queryPath:i}));n.queries.length>5&&J(C("invalidQuery","OQL batches are capped at 5 queries per call.",{queryPath:"queries"}));let o=n.queries.map((i,s)=>{try{return Yi(i)}catch(a){throw a instanceof Yt?new Yt(a.diagnostics.map(c=>({...c,queryPath:`queries[${s}]${c.queryPath?`.${c.queryPath}`:""}`}))):a}});return{schema:"oql",...n.id?{id:n.id}:{},queries:o,combine:n.combine??"independent",...n.limit!==void 0?{limit:n.limit}:{},...n.page!==void 0?{page:n.page}:{},...n.itemsPerPage!==void 0?{itemsPerPage:n.itemsPerPage}:{},...n.explain!==void 0?{explain:n.explain}:{}}}var Ex=f(()=>{"use strict";Rr();te();Kr();Hc()});function kx(e){return Nl(e)?Tx(e):Yi(e)}var Ox=f(()=>{"use strict";un();Ex();Hc();Hc()});function Xi(e){let t=iD(e),n=aD(e),r=t==="proof"&&n;return{...e.queryId?{queryId:e.queryId}:{},...e.queryIndex!==void 0?{queryIndex:e.queryIndex}:{},results:e.results,...e.shared&&Object.keys(e.shared).length?{shared:e.shared}:{},...e.pagination?{pagination:e.pagination}:{},...e.next&&Object.keys(e.next).length?{next:e.next}:{},...e.nextHints&&Object.keys(e.nextHints).length?{nextHints:e.nextHints}:{},diagnostics:e.diagnostics,provenance:e.provenance,evidence:{answerReady:r,complete:n,kind:t},...e.plan?{plan:e.plan}:{}}}function iD(e){return!e.executable||e.diagnostics.some(t=>oD.has(t.code))?"unsupported":e.approximate||sD(e.diagnostics)?"candidate":ux(e.diagnostics)||vx(e)?"partial":"proof"}function sD(e){return e.some(t=>t.code==="providerSemanticsApproximate")}function vx(e){return!!(e.pagination?.hasMore||e.next&&Object.keys(e.next).some(t=>t.startsWith("next.page")||t==="next.matchPage"))}function aD(e){return!e.executable||vx(e)?!1:!e.diagnostics.some(t=>t.blocksAnswer||t.code==="partialResult")}function Ax(e){return e.some(t=>!t.exact)}function Qc(e,t,n,r,o){return Xi({queryId:n,queryIndex:r,results:[],diagnostics:e,provenance:[],executable:!1,plan:t,...o&&Object.keys(o).length?{next:o}:{}})}var oD,Ji=f(()=>{"use strict";te();oD=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","unsupportedVendorPredicate","vendorNoEquivalent","responseShapeMismatch"])});function jc(e){return e.kind==="all"||e.kind==="any"?e.of.flatMap(jc):e.kind==="not"?jc(e.predicate):[e]}function Cm(e){if(e?.kind!=="github")return{};if(e.repo?.includes("/")){let[t,n]=e.repo.split("/");return{owner:t,repo:n}}return{...e.owner?{owner:e.owner}:{},...e.repo?{repo:e.repo}:{}}}function Ne(e){if(e?.path)return Array.isArray(e.path)?e.path[0]:e.path}function Jr(e){if(e?.language)return Array.isArray(e.language)?e.language[0]:e.language}function xm(e){return typeof e.limit=="number"?e.limit:typeof e.itemsPerPage=="number"?e.itemsPerPage:void 0}var En=f(()=>{"use strict"});import or from"node:path";import{statSync as cD}from"node:fs";function Lx(e){let t=or.resolve(e);try{if(cD(t).isDirectory())return`${t}${or.sep}`}catch{}return`${or.dirname(t)}${or.sep}`}function _x(e){return e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0}function Fx(e,t){let n=_x(e);if(!n)return;let r=Lx(n);for(let o of t){let i=o.path;typeof i=="string"&&i.startsWith(r)&&(o.path=i.slice(r.length))}}function Ix(e){let t=_x(e);if(!t)return;let n=Lx(t).slice(0,-or.sep.length);return r=>({kind:"local",path:or.isAbsolute(r)?r:or.join(n,r)})}var wm=f(()=>{"use strict"});function Mx(e,t){for(let n of t)n.proofGrade??=lD(e,n)}function lD(e,t){return t.kind==="code"?Zi(e.where,"structural")||t.metavars!==void 0||t.metavarRanges!==void 0?"structural":Zi(e.where,"text")||Zi(e.where,"regex")||t.line!==void 0||t.snippet!==void 0||t.matchIndices!==void 0?"text":"candidate":t.kind==="content"||t.kind==="file"||t.kind==="tree"?"text":t.kind!=="record"?"candidate":t.recordType==="semantics"?"semantic":t.recordType==="graph"?es(t.data)?"missing":"graph":t.recordType==="research"?es(t.data)?"missing":t.data.mode==="prove"?"graph":"candidate":t.recordType==="diff"?"text":"candidate"}function Zi(e,t){return e?e.kind===t?!0:e.kind==="all"||e.kind==="any"?e.of.some(n=>Zi(n,t)):e.kind==="not"?Zi(e.predicate,t):!1:!1}function es(e){let t=e.missingProof;if(Array.isArray(t)&&t.length>0)return!0;let n=e.packets;return Array.isArray(n)&&n.some(r=>{if(!uD(r))return!1;let o=r.missingProof;return r.proofStatus==="missing"||Array.isArray(o)&&o.length>0})}function uD(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var Tm=f(()=>{"use strict"});function dD(e){let t=e.where;if(t){if(t.kind==="text")return{text:t.value,...t.case==="sensitive"?{caseSensitive:!0}:{}};if(t.kind==="regex")return{text:t.value,regex:!0,...t.case==="sensitive"?{caseSensitive:!0}:{}}}}function Dx(e,t){let n=e,r=t.fileFrom?t.fileFrom(n.path):n.source??t.query.from;if(!r)return;let o=typeof n.line=="number"?{startLine:n.line,contextLines:2}:void 0,i=o?void 0:dD(t.query),s={"next.fetch":{query:{schema:"oql",target:"content",from:r,...t.fileFrom?{}:{scope:{path:n.path}},fetch:{content:{contentView:"none",...o?{range:o}:{},...i?{match:i}:{}}}},why:"Read the exact content at this hit.",confidence:"exact"}};return t.fileFrom&&(s["next.semantic"]={query:{schema:"oql",target:"semantics",from:r,params:{type:"documentSymbols"}},why:"List the semantic symbols in this file.",confidence:"exact"}),s}function Nx(e,t){let n=e,r=n.range?.charOffset;if(typeof r=="number")return{"next.charRange":{query:{...t.query,fetch:{...t.query.fetch,content:{...t.query.fetch?.content,charOffset:r+(n.range?.charLength??2e4)}}},why:"Read the next content window.",confidence:"exact"}}}function pD(e,t){let n={kind:"local",path:e};return{"next.structure":{query:{schema:"oql",target:"structure",from:n},why:`List the ${t} tree.`,confidence:"exact"},"next.files":{query:{schema:"oql",target:"files",from:n},why:`Enumerate files in the ${t}.`,confidence:"exact"}}}function mD(e){let t=e.data;return typeof t?.localPath=="string"?t.localPath:void 0}function Gx(e){let t=mD(e);return t?pD(t,"materialized"):void 0}function Hx(e,t){return jx(e,t,{why:"Upgrade this candidate research to LSP-proven relationships for the current page (bounded proof).",force:!0})}function Qx(e,t){let n=t.query.params??{};if(n.proof==="none"||n.proof==="lsp"||n.mode==="prove")return;let r=e.data;if(es(r))return jx(e,t,{why:"Upgrade this candidate graph page to LSP-proven relationships (bounded proof)."})}function jx(e,t,n){let r=t.query.from;if(r?.kind!=="local"&&r?.kind!=="materialized")return;let o=e.data;if(!n.force&&!es(o))return;let i=typeof o?.intent=="string"&&o.intent.length>0?o.intent:typeof t.query.params?.intent=="string"&&t.query.params.intent.length>0?t.query.params.intent:"reachability",s=Math.min(25,Math.max(1,t.query.itemsPerPage??10)),a=t.query.params??{},c=hD(o,a);return{"next.graph":{query:{schema:"oql",target:"graph",from:r,params:{...a,mode:"prove",proof:"lsp",intent:i,proofLimit:s,...c?{facets:c}:{}},...t.query.page?{page:t.query.page}:{},...t.query.itemsPerPage?{itemsPerPage:t.query.itemsPerPage}:{}},why:n.why,confidence:"exact"}}}function hD(e,t){let n=Array.isArray(t.facets)?t.facets:Array.isArray(e.facets)?e.facets:void 0;if(!n)return;let r=n.filter(o=>typeof o=="string"&&fD.has(o));return r.length>0?r:void 0}var fD,Bx=f(()=>{"use strict";Tm();fD=new Set(["symbols","files","dependencies","relations"])});import ts from"node:path";import{statSync as gD}from"node:fs";function zx(e,t){let n=e.data,r=typeof n?.uri=="string"?n.uri:void 0,o=RD(e)??SD(t.query),i=yD(r,o);if(!i)return;let s=typeof n.line=="number"?n.line:typeof n.startLine=="number"?n.startLine:void 0;return{"next.fetch":{query:{schema:"oql",target:"content",from:{kind:"local",path:i},fetch:{content:{contentView:"none",...s?{range:{startLine:s,contextLines:2}}:{}}}},why:"Read the code at this symbol location.",confidence:"exact"}}}function yD(e,t){if(e&&ts.isAbsolute(e))return e;if(t&&ts.isAbsolute(t)){let n=bD(t);return e?ts.resolve(n,e):t}return t??e}function bD(e){try{return gD(e).isDirectory()?e:ts.dirname(e)}catch{return ts.dirname(e)}}function RD(e){let t=e.source;if(t?.kind==="local")return t.path;if(t?.kind==="materialized")return t.localPath}function SD(e){if(e.from?.kind==="local")return e.from.path;if(e.from?.kind==="materialized")return e.from.localPath}var Ux=f(()=>{"use strict"});function PD(e){return e.from?.kind!=="github"?"owner/repo":e.from.repo?.includes("/")?e.from.repo:e.from.owner&&e.from.repo?`${e.from.owner}/${e.from.repo}`:e.from.repo??"owner/repo"}function CD(e){let t=PD(e),n=Ne(e.scope),r=e.from?.kind==="github"&&e.from.ref?`${t}@${e.from.ref}`:t,o=n?`${t}/${n}`:t,i=e.from?.kind==="github"&&e.from.ref?` --branch ${e.from.ref}`:"";return n?`Use \`search ${$x(e)} ${n} --repo ${r} --materialize required\` for one-step local proof, or \`clone ${o}${i}\` / \`cache fetch ${t} ${n}${i} --depth tree\` before retrying local search.`:`Choose a bounded path first with \`search ${t} --tree\`, then use \`search ${$x(e)} <path> --repo ${r} --materialize required\`, \`clone ${t}/<path>${i}\`, or \`cache fetch ${t} <path>${i} --depth tree\`. For deliberate whole-repo work, use \`clone ${t}${i}\` or \`cache fetch ${t}${i} --depth clone\`.`}function $x(e){let t=e.where;return t?.kind==="text"||t?.kind==="regex"?t.value:t?.kind==="structural"?"pattern":"<term>"}function qx(e,t){let n={},r=typeof e.limit=="number"&&e.itemsPerPage===void 0;if(t.pagination?.hasMore&&e.target!=="content"&&!r){let i=t.pagination.totalItemsKind==="files"||t.pagination.itemUnit==="files";n["next.page"]=t.pagination.next??{query:{...e,page:(e.page??1)+1},why:i?`More file pages remain (page/itemsPerPage count matched files; rows are per-match \u2014 this page holds ${t.results.length} rows).`:"More result pages remain.",confidence:"exact"}}t.diagnostics.some(i=>i.code==="matchTruncated")&&(n["next.matchPage"]={query:{...e,controls:{...e.controls,search:{...e.controls?.search,matchPage:(e.controls?.search?.matchPage??1)+1}}},why:"Per-file matches were capped; page within files.",confidence:"exact"}),t.diagnostics.some(i=>i.code==="providerUnindexed")&&e.from?.kind==="github"&&e.target==="code"&&(n["next.materialize"]={query:{schema:"oql",target:"materialize",from:e.from,...e.scope?{scope:e.scope}:{},materialize:{mode:"required"}},why:`GitHub code search returned no results; this is not proof of absence. ${CD(e)}`,confidence:"heuristic"});let o={query:e,fileFrom:Ix(e)};for(let i of t.results){let s=i.kind==="record"?`record:${i.recordType}`:i.kind,a=xD[s];if(!a)continue;let c=a(i,o);c&&Object.keys(c).length&&(i.next=c)}return n}function Wx(e){let t={},n=!1;for(let r of e){let o=r.next;if(o)for(let[i,s]of Object.entries(o)){if(!s.why||!s.confidence)continue;let a={why:s.why,confidence:s.confidence},c=t[i];if(c||(t[i]=a,n=!0),!c||Em(c,a)){let{why:l,confidence:u,...d}=s;o[i]=d}}}return n?t:void 0}function Em(e,t){return e.why===t.why&&e.confidence===t.confidence}var xD,km=f(()=>{"use strict";En();wm();Bx();Ux();xD={code:Dx,content:Nx,"record:materialized":Gx,"record:semantics":zx,"record:research":Hx,"record:graph":Qx}});function we(e,t){return Bc(e,{queries:[{...wD,...t}]})}function kn(e){let n=e.structuredContent?.results?.[0];return{data:n?.data,status:n?.status}}function Zr(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function ns(e){return typeof e=="string"?e:void 0}var wD,Xt=f(()=>{"use strict";Om();wD={mainResearchGoal:"octocode search (OQL)",researchGoal:"OQL target execution",reasoning:"Compiled from an OQL query."}});function Jt(e,t=!1){if(!e)return t?{hasMore:!0}:void 0;let n=e.itemsPerPage??e.entriesPerPage??e.filesPerPage??e.perPage,r=e.totalItems??e.totalEntries??e.totalFiles??e.totalMatches,o=e.totalMatchesCapped===!0,i=!o&&typeof r=="number"&&Number.isFinite(r)&&typeof n=="number"&&Number.isFinite(n)&&n>0,s=i?Math.max(1,Math.ceil(r/n)):void 0,a=i?s:o?void 0:e.totalPages,c=o?e.hasMore??(typeof e.currentPage=="number"&&typeof e.totalPages=="number"?e.currentPage<e.totalPages:t):typeof e.currentPage=="number"&&typeof a=="number"?e.currentPage<a:e.hasMore??t,l=e.nextPage!==void 0&&c?e.nextPage:void 0;return{hasMore:!!c,...e.currentPage!==void 0?{currentPage:e.currentPage}:{},...a!==void 0?{totalPages:a}:{},...l!==void 0?{nextPage:l}:{},...n!==void 0?{itemsPerPage:n}:{},...r!==void 0?{totalItems:r}:{},...e.reportedTotalMatches!==void 0?{reportedTotalItems:e.reportedTotalMatches}:{},...e.reachableTotalMatches!==void 0?{reachableTotalItems:e.reachableTotalMatches}:{},...e.totalMatchesKind!==void 0?{totalItemsKind:e.totalMatchesKind}:{},...e.totalMatchesCapped!==void 0?{totalItemsCapped:e.totalMatchesCapped}:{},...e.uniqueFileCount!==void 0?{uniqueFileCount:e.uniqueFileCount}:{}}}var zc=f(()=>{"use strict"});function vm(e){return Jt(e)}function TD(e){if(e)return Jt({currentPage:e.currentPage,totalPages:e.totalPages,nextPage:e.nextPage,hasMore:e.hasMore,itemsPerPage:e.filesPerPage??e.itemsPerPage??e.perPage,totalItems:e.totalFiles??e.totalItems,reportedTotalMatches:e.totalMatches??e.reportedTotalMatches,reachableTotalMatches:e.reachableTotalMatches,totalMatchesKind:e.totalFiles!==void 0?"files":e.totalMatchesKind,totalMatchesCapped:e.totalMatchesCapped,uniqueFileCount:e.uniqueFileCount??e.totalFiles})}function eo(e,t){let n=[];for(let r of e.files??[]){let o=r.matches??[];if(o.length===0){let i=r;n.push({kind:"code",source:t,path:r.path,...i.totalMatchedLines!==void 0?{totalMatchedLines:i.totalMatchedLines}:{},...i.totalOccurrences!==void 0?{totalOccurrences:i.totalOccurrences}:{}});continue}for(let i of o){let s=i.metavars,a=i.metavarRanges,c=i;n.push({kind:"code",source:t,path:r.path,line:i.line,...i.endLine!==void 0?{endLine:i.endLine}:{},...i.column!==void 0?{column:i.column}:{},...i.value!==void 0?{snippet:i.value}:{},...c.kind!==void 0?{matchKind:c.kind}:{},...c.scoreHint!==void 0?{scoreHint:c.scoreHint}:{},...s&&Object.keys(s).length?{metavars:s}:{},...a&&Object.keys(a).length?{metavarRanges:a}:{}})}}return{results:n,pagination:Am(TD(e.pagination),n.length)}}function Am(e,t,n=!1){if(e)return e.totalItemsKind!=="files"&&!n?e:{...e,itemUnit:"files",rowCount:t,...e.reportedTotalItems!==void 0?{reportedRowCount:e.reportedTotalItems}:{}}}function rs(e,t){return{results:(e.files??[]).map(r=>{let o=r.type,i=o==="d"||o==="directory"?"directory":"file";return{kind:"file",source:t,path:r.path,entryType:i,...r.size!==void 0?{size:r.size}:{},...r.modified!==void 0?{modified:r.modified}:{}}}),pagination:vm(e.pagination)}}function Vx(e,t){if(!e.entries&&(e.files||e.folders)){let r=e.path??"",o=s=>`${r.replace(/\/$/,"")}/${s}`;return{results:[...(e.folders??[]).map(s=>({kind:"tree",source:t,path:o(s),entryType:"directory",depth:0})),...(e.files??[]).map(s=>({kind:"tree",source:t,path:o(s),entryType:"file",depth:0}))],pagination:vm(e.pagination)}}return{results:(e.entries??[]).map(r=>{let o=r.type,i=o==="dir"||o==="directory"?"directory":"file",s=kD(r.size);return{kind:"tree",source:t,path:r.path??r.name??"",entryType:i,depth:r.depth??0,...s!==void 0?{size:s}:{}}}),pagination:vm(e.pagination)}}function kD(e){if(typeof e=="number")return e;if(typeof e!="string")return;let t=e.trim().match(/^([0-9.]+)\s*([kmgt]?b)$/i);if(!t){let o=Number(e);return Number.isFinite(o)?o:void 0}let n=Number(t[1]),r=ED[t[2].toLowerCase()]??1;return Number.isFinite(n)?Math.round(n*r):void 0}function Kx(e,t,n,r="standard"){let o=e.pagination,i=typeof o?.charOffset=="number",s={...e.startLine!==void 0?{startLine:e.startLine}:{},...e.endLine!==void 0?{endLine:e.endLine}:{},...i?{charOffset:o.charOffset,...typeof o.charLength=="number"?{charLength:o.charLength}:{}}:{}};return{results:[{kind:"content",source:t,path:e.filePath??n,content:e.content??"",contentView:r,...Object.keys(s).length?{range:s}:{}}],...o?.hasMore!==void 0?{pagination:{hasMore:!!o.hasMore}}:{}}}var ED,On=f(()=>{"use strict";zc();ED={b:1,kb:1024,mb:1024**2,gb:1024**3,tb:1024**4}});function Yx(e){return JSON.stringify(e)}function Lm(e,t){let n=" ".repeat(t),r=[];e.pattern!==void 0&&r.push(`${n}pattern: ${Yx(e.pattern)}`),e.kind!==void 0&&r.push(`${n}kind: ${Yx(e.kind)}`);for(let o of["inside","has","not"]){let i=e[o];i&&(r.push(`${n}${o}:`),r.push(...Lm(i,t+1)))}for(let o of["all","any"]){let i=e[o];if(i&&i.length>0){r.push(`${n}${o}:`);for(let s of i){let a=Lm(s,t+1),c=`${" ".repeat(t+1)}- `,l=`${" ".repeat(t+1)} `;if(a.length!==0){r.push(c+a[0].trimStart());for(let u of a.slice(1))r.push(l+u.trimStart())}}}}return e.stopBy!==void 0&&r.push(`${n}stopBy: ${e.stopBy}`),r}function Xx(e){return["rule:",...Lm(e,1)].join(`
42
- `)}var Jx=f(()=>{"use strict"});function Zx(e,t){t==="sensitive"?e.caseSensitive=!0:t==="insensitive"&&(e.caseInsensitive=!0)}function ew(e){switch(e.kind){case"text":{let t={keywords:e.value,fixedString:!0};return Zx(t,e.case),e.wholeWord&&(t.wholeWord=!0),{match:t}}case"regex":{let t={keywords:e.value};return e.dialect==="pcre2"&&(t.perlRegex=!0),Zx(t,e.case),e.wholeWord&&(t.wholeWord=!0),e.multiline&&(t.multiline=!0),e.dotAll&&(t.multilineDotall=!0),{match:t}}case"structural":{let t={mode:"structural",langType:e.lang};return typeof e.pattern=="string"&&(t.pattern=e.pattern),typeof e.rule=="string"?t.rule=e.rule:e.rule!==void 0&&(t.rule=Xx(e.rule)),{match:t}}case"field":return{unsupported:{code:"unsupportedPredicate",message:"Field predicates compile through the files backend, not local code search.",predicateId:e.id}};default:return{unsupported:{code:"unsupportedBoolean",message:`Boolean predicate "${e.kind}" is not compilable to a single local-search call.`}}}}function Zt(e){if(e.kind==="text"||e.kind==="regex"||e.kind==="structural"||e.kind==="field")return ew(e);if(e.kind==="not"){let t=e.predicate;if(t.kind==="text"||t.kind==="regex"||t.kind==="field"){let n=ew(t);return n.unsupported?n:{...n,negate:!0}}return{unsupported:{code:"unsupportedBoolean",message:"not() over structural/boolean predicates is not supported by the local-search adapter."}}}return{unsupported:{code:"unsupportedBoolean",message:`Boolean predicate "${e.kind}" requires multiple backend calls; not supported by the single-call local-search adapter.`}}}var os=f(()=>{"use strict";Jx()});var Uc=f(()=>{"use strict";Kp()});function tw(e,t,n){let r=e.where,o=r?jc(r):[],i=r&&OD.has(r.kind)&&o.length===1?[]:o.filter(s=>s!==r);return i.length>0?{ok:!1,diagnostics:i.map(s=>C("lossyTransform","GitHub code search compiled only part of `where`; an unconsumed predicate would be silently dropped \u2014 materialize for local proof.",{backend:n,...s.id?{predicateId:s.id}:{}}))}:{ok:!0,diagnostics:[],query:t}}function vD(e){if(e.kind!=="field"||e.op!=="="||typeof e.value!="string"||e.value.length===0)return null;switch(e.field){case"basename":return{filename:e.value,match:"path"};case"extension":return{extension:e.value.replace(/^\./,""),match:"path"};case"path":return{keywords:[e.value],match:"path"};default:return null}}function is(e,t={}){if(!e.where)return{ok:!1,diagnostics:[C("vendorNoEquivalent",t.unsupportedMessage??"GitHub code search needs a positive code predicate.",{backend:t.unsupportedBackend??"ghSearchCode"})]};let n=vD(e.where);if(n){let m=nw(e,t);if(m.length>0)return{ok:!1,diagnostics:m};let{owner:p,repo:h}=Cm(e.from),g=e.params??{},y=typeof g.extension=="string"||typeof n.extension=="string"?{}:Ui(Jr(e.scope)),b=xm(e),S=Ne(e.scope);return tw(e,{...p?{owner:p}:{},...h?{repo:h}:{},...y,...n,...S?{path:S}:{},...typeof g.extension=="string"?{extension:g.extension}:{},...b?{limit:b}:{},...e.page?{page:e.page}:{}},t.unsupportedBackend??"ghSearchCode")}let r=Zt(e.where);if(r.unsupported||r.negate||r.match?.mode==="structural")return{ok:!1,diagnostics:[C("unsupportedVendorPredicate",r.unsupported?.message??t.unsupportedMessage??"This predicate cannot be evaluated by GitHub code search; materialize for local proof.",{backend:t.unsupportedBackend??"ghSearchCode",...r.unsupported?.predicateId?{predicateId:r.unsupported.predicateId}:{}})]};let o=nw(e,t);if(o.length>0)return{ok:!1,diagnostics:o};let i=r.match?.keywords??"";if(i.trim().length===0)return{ok:!1,diagnostics:[C("vendorNoEquivalent","GitHub code search needs a non-empty search term.",{backend:t.unsupportedBackend??"ghSearchCode"})]};let{owner:s,repo:a}=Cm(e.from),c=e.params??{},l=typeof c.extension=="string"?{}:Ui(Jr(e.scope)),u=xm(e),d=typeof c.match=="string"?c.match:t.defaultMatch;return tw(e,{...s?{owner:s}:{},...a?{repo:a}:{},keywords:r.match?.fixedString===!0&&i.includes(" ")?i.split(/\s+/).filter(Boolean):[i],...l,...Ne(e.scope)?{path:Ne(e.scope)}:{},...d?{match:d}:{},...typeof c.concise=="boolean"?{concise:c.concise}:{},...typeof c.extension=="string"?{extension:c.extension}:{},...typeof c.filename=="string"?{filename:c.filename}:{},...u?{limit:u}:{},...e.page?{page:e.page}:{}},t.unsupportedBackend??"ghSearchCode")}function nw(e,t){let n=[],r=t.unsupportedBackend??"ghSearchCode";return Array.isArray(e.scope?.language)&&e.scope.language.length>1&&n.push(C("lossyTransform","GitHub code search cannot express multiple scope.language values without dropping values; materialize for local proof.",{backend:r,queryPath:"scope.language"})),Array.isArray(e.scope?.path)&&e.scope.path.length>1&&n.push(C("lossyTransform","GitHub code search cannot express multiple scope.path values without dropping values; materialize for local proof.",{backend:r,queryPath:"scope.path"})),n}var OD,_m=f(()=>{"use strict";os();te();Uc();En();OD=new Set(["text","regex","structural","field"])});function Fm(e){if(e?.kind!=="github")return{};if(e.repo&&e.repo.includes("/")){let[t,n]=e.repo.split("/");return{owner:t,repo:n}}return{owner:e.owner}}function ir(e){let n=e.structuredContent?.results?.[0];if(n)return"data"in n?n.data:n}function Im(e){return e.structuredContent?.results?.[0]?.status}function rw(e){return!e||e==="."?"":e.replace(/^\/+|\/+$/g,"")}function Mm(...e){return e.map(rw).filter(Boolean).join("/")}function ow(e){return e?Array.isArray(e)?[...e]:Object.entries(e).map(([t,n])=>({dir:t,files:n.files,folders:n.folders})):[]}function Dm(e){return rw(e).split("/").filter(Boolean).length}function AD(e){return e.trim().toLowerCase().replace(/^\*\./,"").replace(/^\./,"")}function LD(e){let t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}function _D(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function FD(e,t){let n=t.trim();if(!n)return!0;let r=e.split("/").pop()??e;if(!n.includes("*")&&!n.includes("?"))return r.includes(n)||e.includes(n);let o=n.split("**").map(s=>s.split("*").map(a=>a.split("?").map(_D).join("[^/]")).join("[^/]*")).join(".*"),i=new RegExp(`^${o}$`);return i.test(r)||i.test(e)}function iw(e,t){let n=t.fetch?.tree;if(!n)return[...e];let r=(n.extensions??[]).map(AD).filter(Boolean);return e.filter(o=>n.filesOnly&&o.entryType!=="file"||n.directoriesOnly&&o.entryType!=="directory"||n.pattern&&!FD(o.path,n.pattern)?!1:o.entryType==="directory"||r.length===0||r.includes(LD(o.path)))}function Nm(e){if(typeof e!="string")return e.path;let t=e.indexOf(":");return t>=0?e.slice(t+1):e}function sw(e){if(typeof e=="string")return;let t={...e.owner!==void 0?{owner:e.owner}:{},...e.repo!==void 0?{repo:e.repo}:{},...e.queryId!==void 0?{queryId:e.queryId}:{}};return Object.keys(t).length?t:void 0}function aw(e){return typeof e=="string"?[]:e.matches??[]}function Fe(e){return e.from??{kind:"github"}}function cw(e){if(e?.startLine===void 0)return{};let t=e.contextLines??0,n=Math.max(1,e.startLine-t),r=(e.endLine??e.startLine)+t;return{startLine:n,endLine:r}}var Gm=f(()=>{"use strict"});function ID(e,t){return e>0?[]:[C("providerUnindexed",`${t} returned no results \u2014 GitHub may not index this repo/branch (or the name redirected). Do not treat this as absence: verify with \`search owner/repo[/path] --tree\`, then use bounded local proof via \`search <term> <path> --repo owner/repo --materialize required\`, \`clone owner/repo[/path]\`, or \`cache fetch owner/repo [path] --depth file|tree|clone\`.`,{backend:t,severity:"warning",blocksAnswer:!0})]}function to(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function MD(e){if(Im(e)==="error"){let r=ir(e)?.error;if(typeof r=="string"&&r)return{message:r};if(r&&typeof r=="object"){let o=r;return{message:typeof o.error=="string"&&o.error?o.error:"GitHub backend error",status:to(o.status),retryAfterSeconds:to(o.retryAfter),rateLimitRemaining:to(o.rateLimitRemaining)}}return{message:"GitHub backend error"}}let n=e.structuredContent?.errors?.[0];if(n)return{message:typeof n.error=="string"&&n.error?n.error:"GitHub backend error",status:to(n.status),retryAfterSeconds:to(n.retryAfterSeconds),rateLimitRemaining:to(n.rateLimitRemaining)}}function DD(e,t){let n=/rate limit|secondary rate/i.test(e.message),r=/bad credentials|requires authentication|saml|not accessible by/i.test(e.message);if(e.status===429||e.status===403&&(e.rateLimitRemaining===0||e.retryAfterSeconds!==void 0||n)||e.status===void 0&&n){let o=e.retryAfterSeconds!==void 0?` Retry after ~${e.retryAfterSeconds}s.`:"";return C("rateLimited",`${e.message}${o}`,{backend:t,severity:"warning",repair:{message:"Wait for the rate-limit window to reset and re-run the same query, or authenticate (OCTOCODE_TOKEN/GH_TOKEN/GITHUB_TOKEN) to raise limits."}})}return e.status===401||(e.status===403||e.status===void 0)&&r?C("authRequired",e.message,{backend:t,repair:{message:"Provide a valid token (OCTOCODE_TOKEN/GH_TOKEN/GITHUB_TOKEN) with access to this repo, then re-run the same query."}}):C("invalidQuery",e.message,{backend:t})}function ND(e,t){let n=MD(e);return n?[DD(n,t)]:Im(e)==="empty"?[C("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1})]:[]}function ss(e,t,n){let r=ND(e,n);return r.some(o=>o.severity!=="info")?r:[...r,...ID(t,n)]}var lw=f(()=>{"use strict";te();Gm()});async function uw(e){let t=is(e,{defaultMatch:"file",unsupportedBackend:"localFindFiles",unsupportedMessage:'target:"files" over a GitHub source can only list files containing a term via the provider; everything else needs materialization (set materialize.mode:"auto" with a bounded scope.path, or use a local source).'});if(!t.ok)return{results:[],diagnostics:t.diagnostics,provenance:[]};let n=await we("ghSearchCode",t.query),r=ir(n),o=new Set,i=[];for(let a of r?.files??[]){let c=Nm(a);o.has(c)||(o.add(c),i.push({kind:"file",source:Fe(e),path:c,entryType:"file"}))}let s=Jt(r?.pagination);return{results:i,...s?{pagination:s}:{},diagnostics:[...ss(n,i.length,"ghSearchCode"),...i.length>0?[C("providerSemanticsApproximate","GitHub lists files containing a term via provider code search (index may be incomplete); materialize for an exact file set.",{backend:"ghSearchCode",severity:"info",blocksAnswer:!1})]:[]],provenance:[{backend:"ghSearchCode",source:Fe(e)}]}}async function dw(e){let t=is(e);if(!t.ok)return{results:[],diagnostics:t.diagnostics,provenance:[]};let n=await we("ghSearchCode",t.query),r=ir(n),o=[];for(let s of r?.files??[]){let a=Nm(s),c=sw(s),l=aw(s);if(l.length===0){o.push({kind:"code",source:Fe(e),path:a,...c?{metadata:c}:{}});continue}for(let u of l)o.push({kind:"code",source:Fe(e),path:a,...u.value!==void 0?{snippet:u.value}:{},...u.matchIndices!==void 0?{matchIndices:u.matchIndices}:{},...c?{metadata:c}:{}})}let i=Am(Jt(r?.pagination),o.length,!0);return{results:o,...i?{pagination:i}:{},diagnostics:[...ss(n,o.length,"ghSearchCode"),...o.length>0?[C("providerSemanticsApproximate","GitHub code search returns path-level hits without line numbers; follow next.fetch for exact location/lines.",{backend:"ghSearchCode",severity:"info",blocksAnswer:!1})]:[]],provenance:[{backend:"ghSearchCode",source:Fe(e)}]}}async function pw(e){let{owner:t,repo:n}=Fm(Fe(e)),r=e.fetch?.content,o=r?.contentView??"standard",i=cw(r?.range),s={...t?{owner:t}:{},...n?{repo:n}:{},path:Ne(e.scope)??"",type:"file",minify:o,...Fe(e).kind==="github"&&Fe(e).ref?{branch:Fe(e).ref}:{},...i,...r?.match?.text!==void 0?{matchString:r.match.text}:{},...r?.match?.regex?{matchStringIsRegex:!0}:{},...r?.match?.caseSensitive?{matchStringCaseSensitive:!0}:{},...r?.charOffset!==void 0?{charOffset:r.charOffset}:{},...r?.charLength!==void 0?{charLength:r.charLength}:{},...r?.fullContent?{fullContent:!0}:{}},a=await we("ghGetFileContent",s),c=ir(a),l=o,u=c?.pagination,d=c?.results??c?.files??[],m=d.map(h=>{let g=h.pagination??u,y=typeof g?.charOffset=="number",b={...h.startLine!==void 0?{startLine:h.startLine}:{},...h.endLine!==void 0?{endLine:h.endLine}:{},...y?{charOffset:g.charOffset,...typeof g.charLength=="number"?{charLength:g.charLength}:{}}:{}};return{kind:"content",source:Fe(e),path:h.path,content:h.content,contentView:l,...Object.keys(b).length?{range:b}:{}}}),p=u??d.find(h=>h.pagination)?.pagination;return{results:m,...p?.hasMore!==void 0?{pagination:{hasMore:!!p.hasMore,...p.currentPage!==void 0?{currentPage:p.currentPage}:{},...p.totalPages!==void 0?{totalPages:p.totalPages}:{},...p.charLength!==void 0?{itemsPerPage:p.charLength}:{},...p.totalChars!==void 0?{totalItems:p.totalChars,totalItemsKind:"chars"}:{}}}:{},diagnostics:[...ss(a,m.length,"ghGetFileContent")],provenance:[{backend:"ghGetFileContent",source:Fe(e)}]}}async function mw(e){let{owner:t,repo:n}=Fm(Fe(e)),r={...t?{owner:t}:{},...n?{repo:n}:{},path:Ne(e.scope)??"",...Fe(e).kind==="github"&&Fe(e).ref?{branch:Fe(e).ref}:{},...e.fetch?.tree?.maxDepth!==void 0?{maxDepth:e.fetch.tree.maxDepth}:{},...e.fetch?.tree?.includeSizes?{includeSizes:!0}:{},...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{}},o=await we("ghViewRepoStructure",r),i=ir(o),s=[],a=Ne(e.scope);for(let u of ow(i?.structure)){let d=u.dir??".";for(let m of u.folders??[]){let p=Mm(a,d,m);s.push({kind:"tree",source:Fe(e),path:p,entryType:"directory",depth:Dm(p)})}for(let m of u.files??[]){let p=Mm(a,d,m);s.push({kind:"tree",source:Fe(e),path:p,entryType:"file",depth:Dm(p)})}}let c=iw(s,e),l=Jt(i?.pagination);return{results:e.limit!==void 0?c.slice(0,e.limit):c,...l?{pagination:l}:{},diagnostics:[...ss(o,c.length,"ghViewRepoStructure")],provenance:[{backend:"ghViewRepoStructure",source:Fe(e)}]}}var fw=f(()=>{"use strict";Xt();zc();On();te();_m();En();lw();Gm()});async function hw(e){switch(e.target){case"content":return pw(e);case"structure":return mw(e);case"files":return uw(e);default:return dw(e)}}var gw=f(()=>{"use strict";fw()});function no(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}var Hm=f(()=>{"use strict"});function sr(e){let t={};return e?.include&&(t.include=e.include),e?.exclude&&(t.exclude=e.exclude),e?.excludeDir&&(t.excludeDir=e.excludeDir),e?.hidden!==void 0&&(t.hidden=e.hidden),e?.noIgnore!==void 0&&(t.noIgnore=e.noIgnore),t}function bw(e){return GD.test(e)}function Rw(e,t){let n=Array.isArray(e)?e.filter(r=>typeof r=="string"):[];return[...new Set([...n,...t])]}function ar(e,t,n){if(n){e.langType=n;return}let r=vc(Jr(t));r.langType&&(e.langType=r.langType),r.include?.length&&(e.include=Rw(e.include,r.include))}function HD(e){return Ac(Jr(e))}function yw(e){let t=no(e),n=t.match(/^\*\*\/(\*\.[^/]+)$/);if(n)return n[1];if(!t.includes("/"))return t}function ro(e){return!!(e?.include?.length||e?.exclude?.length)}function as(e,t){t?.excludeDir&&(e.excludeDir=t.excludeDir),t?.minDepth!==void 0&&(e.minDepth=t.minDepth),t?.maxDepth!==void 0&&(e.maxDepth=t.maxDepth);let n=(t?.include??[]).map(yw).filter(i=>!!i);n.length>0&&!e.names&&(e.names=Rw(e.names,n));let r=(t?.include??[]).filter(i=>!yw(i));r.length===1&&!e.pathPattern&&(e.pathPattern=r[0]);let o=HD(t);o.length>0&&!e.names&&!e.pathPattern&&(e.names=o)}function Sw(e,t){if(ro(t.scope)){qc(e),e.page=1;return}t.itemsPerPage&&(e.itemsPerPage=t.itemsPerPage),t.page&&(e.page=t.page)}function qc(e){e.limit=$c,e.itemsPerPage=$c}function Pw(e,t){let n=t.controls?.search?.sort;(n==="size"||n==="name"||n==="path"||n==="modified")&&(e.sortBy=n)}function Wc(e){let t={},n=e.controls?.search;return n&&(n.onlyMatching&&(t.onlyMatching=!0),n.unique&&(t.unique=!0),n.countUnique&&(t.countUnique=!0),n.countMatchesPerFile&&(t.countMatchesPerFile=!0),n.countLinesPerFile&&(t.countLinesPerFile=!0),n.contextLines!==void 0&&(t.contextLines=n.contextLines),n.invertMatch&&(t.invertMatch=!0),n.matchWindow!==void 0&&(t.matchWindow=n.matchWindow),n.matchContentLength!==void 0&&(t.matchContentLength=n.matchContentLength),n.maxMatchesPerFile!==void 0&&(t.maxMatchesPerFile=n.maxMatchesPerFile),n.matchPage!==void 0&&(t.matchPage=n.matchPage),n.sort&&n.sort!=="size"&&n.sort!=="name"&&(t.sort=n.sort),n.sortReverse&&(t.sortReverse=!0),n.rankingProfile&&(t.rankingProfile=n.rankingProfile),n.debugRanking&&(t.debugRanking=!0)),e.controls?.budget?.maxFiles!==void 0&&(t.maxFiles=e.controls.budget.maxFiles),t}var $c,GD,cr=f(()=>{"use strict";ae();Uc();En();Hm();$c=1e4;GD=/[|()[\]{}^$*+?]|\\[bBdDwWsS]/});function Cw(e){return e.kind==="all"||e.kind==="any"?!0:e.kind==="not"?Qm(e.predicate):!1}function QD(e){return e.kind==="text"||e.kind==="regex"}function Vc(e){return e?.kind==="not"&&QD(e.predicate)}function Qm(e){return e.kind==="all"||e.kind==="any"||e.kind==="not"}function jm(e){return e.kind==="text"||e.kind==="regex"||e.kind==="structural"?!0:e.kind==="not"?jm(e.predicate):!1}function Kc(e,t,n){let r=e.kind==="not",o=e.kind==="not"?e.predicate:e;if(o.kind!=="field"){n.push(C("unsupportedPredicate","Only field predicates (and field-negation) compile to the files backend.",{backend:"localFindFiles"}));return}let i=o,s=i.value;switch(i.field){case"basename":case"path":i.op==="regex"?t.regex=String(s):i.op==="glob"||i.op==="="||i.op==="in"?t.names=Array.isArray(s)?s.map(String):[String(s)]:n.push(cs(i));break;case"extension":{let a=(Array.isArray(s)?s:[s]).map(c=>`*.${String(c).replace(/^\./,"")}`);i.op==="="||i.op==="in"||i.op==="glob"?t.names=a:n.push(cs(i));break}case"size":i.op===">"||i.op===">="?t.sizeGreater=String(s):i.op==="<"||i.op==="<="?t.sizeLess=String(s):n.push(cs(i));break;case"modified":i.op==="within"?t.modifiedWithin=String(s):i.op==="before"?t.modifiedBefore=String(s):n.push(C("unsupportedPredicate",'field "modified" supports only `within` / `before` (relative windows like "7d"); findFiles has no absolute-date filter for >/</>=/<=.',{backend:"localFindFiles"}));break;case"accessed":i.op==="within"?t.accessedWithin=String(s):n.push(cs(i));break;case"empty":t.empty=!!s;break;case"permissions":t.permissions=String(s);break;case"executable":case"readable":case"writable":t[i.field]=!!s;break;case"entryType":t.entryType=String(s)==="directory"?"d":"f";break;default:n.push(cs(i));break}r&&n.push(C("residualNotExact","Negated field predicates over findFiles are best-effort.",{backend:"localFindFiles",severity:"warning"}))}function cs(e){return C("unsupportedPredicate",`field "${e.field}" with operator "${e.op}" is not supported by the files backend.`,{backend:"localFindFiles"})}function Nt(e,t){let n=[];e.status==="error"?n.push(C("invalidQuery",e.error??"Backend error",{backend:t})):e.status==="empty"&&n.push(C("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1}));for(let r of e.warnings??[])n.push(C(jD(r),r,{backend:t,severity:"warning",blocksAnswer:!1}));return n}function jD(e){let t=e.toLowerCase();return t.includes("skipped parsing")||t.includes("parse error")?"partialParse":t.includes("capped")||t.includes("truncat")?"matchTruncated":t.includes("redact")||t.includes("sanitiz")||t.includes("secret")?"sanitized":"partialResult"}function Gt(e,t,n){return{backend:e,source:t,...n?.id?{pushed:[n.id]}:{}}}var oo=f(()=>{"use strict";te()});import Bm from"node:path";async function ww(e,t,n){let r={path:n,details:!0,...e.fetch?.tree?.maxDepth!==void 0?{maxDepth:e.fetch.tree.maxDepth,recursive:!0}:{},...e.fetch?.tree?.pattern?{pattern:e.fetch.tree.pattern}:{},...e.fetch?.tree?.includeSizes?{includeSizes:!0}:{},...e.fetch?.tree?.extensions?.length?{extensions:e.fetch.tree.extensions}:{},...e.fetch?.tree?.filesOnly?{filesOnly:!0}:{},...e.fetch?.tree?.directoriesOnly?{directoriesOnly:!0}:{},...e.fetch?.tree?.sortBy?{sortBy:e.fetch.tree.sortBy}:{},...e.fetch?.tree?.reverse?{reverse:!0}:{},...e.scope?.hidden!==void 0?{hidden:e.scope.hidden}:{},...e.limit?{limit:e.limit}:{},...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{}},o=await _c(r);return{...Vx(o,t),diagnostics:Nt(o,"localViewStructure"),provenance:[Gt("localViewStructure",t,void 0)]}}async function Tw(e,t,n){let r=e.fetch?.content,o=r?.contentView??"standard",i=BD(r?.range),s={path:n,minify:o,...i,...r?.match?.text!==void 0?{matchString:r.match.text}:{},...r?.match?.regex?{matchStringIsRegex:!0}:{},...r?.match?.caseSensitive?{matchStringCaseSensitive:!0}:{},...r?.range?.contextLines!==void 0&&r?.range?.startLine===void 0?{contextLines:r.range.contextLines}:{},...r?.charOffset!==void 0?{charOffset:r.charOffset}:{},...r?.charLength!==void 0?{charLength:r.charLength}:{},...r?.fullContent?{fullContent:!0}:{}},a=await Rc(s);return{...Kx(a,t,n,o),diagnostics:Nt(a,"localGetFileContent"),provenance:[Gt("localGetFileContent",t,void 0)]}}function BD(e){if(e?.startLine===void 0)return{};let t=e.contextLines??0,n=Math.max(1,e.startLine-t),r=(e.endLine??e.startLine)+t;return{startLine:n,endLine:r}}function ls(e,t,n){if(!ro(t.scope)||e.status==="error")return e;let r=(e.files??[]).filter(d=>zD(d.path,n,t.scope)),o=Math.max(1,t.page??1),i=Math.max(1,(t.itemsPerPage??t.limit??r.length)||1),s=Math.max(1,Math.ceil(r.length/i)),a=(o-1)*i,c=r.slice(a,a+i),{status:l,...u}=e;return{...u,...c.length===0?{status:"empty"}:{},files:c,pagination:{currentPage:o,totalPages:s,filesPerPage:i,totalFiles:r.length,hasMore:o<s,...o<s?{nextPage:o+1}:{}}}}function zD(e,t,n){let r=no(UD(e,t)),o=n?.include??[];return o.length>0&&!o.some(i=>xw(r,i))?!1:!(n?.exclude??[]).some(i=>xw(r,i))}function UD(e,t){let n=Bm.relative(t,e);return!n||n.startsWith("..")||Bm.isAbsolute(n)?e:n}function xw(e,t){let n=no(t),r=no(e),o=$D(n);return o.test(r)?!0:n.includes("/")?!1:o.test(Bm.posix.basename(r))}function $D(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n],o=e[n+1],i=e[n+2];if(r==="*"&&o==="*"&&i==="/"){t+="(?:.*/)?",n+=2;continue}if(r==="*"&&o==="*"){t+=".*",n+=1;continue}if(r==="*"){t+="[^/]*";continue}if(r==="?"){t+="[^/]";continue}t+=qD(r)}return new RegExp(`${t}$`)}function qD(e){return/[|\\{}()[\]^$+?.]/.test(e)?`\\${e}`:e}var Yc=f(()=>{"use strict";Fc();Sc();On();cr();oo();Hm()});function Xc(e,t){return e?{...e,...t,entryType:e.entryType==="directory"||t.entryType==="directory"?"directory":"file",...e.size!==void 0||t.size!==void 0?{size:e.size??t.size}:{},...e.modified!==void 0||t.modified!==void 0?{modified:e.modified??t.modified}:{}}:t}function us(e){let t=new Map;for(let n of e)t.set(n.path,Xc(t.get(n.path),n));return t}function Ew(e,t){let n=new Map;for(let[r,o]of e){let i=t.get(r);i&&n.set(r,Xc(o,i))}return n}function kw(e,t){return new Set([...e].filter(n=>t.has(n)))}var ds=f(()=>{"use strict"});async function zm(e,t,n,r){let o={path:n,entryType:"f"};as(o,e.scope),ro(e.scope)&&(qc(o),o.page=1);let i=await er(o),s=ls(i,e,n);return r.push({backend:"localFindFiles",source:e.from}),us(rs({...s,files:(s.files??[]).filter(a=>a.type===void 0||a.type==="f"||a.type==="file")},t).results)}async function Ow(e,t,n,r,o,i){let s={path:r,details:!0};as(s,e.scope),Kc(t,s,i),ro(e.scope)&&(qc(s),s.page=1);let a=await er(s),c=ls(a,e,r);return o.push({backend:"localFindFiles",source:e.from}),us(rs(c,n).results)}var vw=f(()=>{"use strict";Hi();On();cr();oo();Yc();ds()});async function Aw(e,t,n,r,o,i){let s=Zt(t);if(s.unsupported)return i.push(C(s.unsupported.code,s.unsupported.message,{backend:"localSearchCode"})),new Map;let a=s.match,c={path:r,filesOnly:!0,maxFiles:$c,...sr(e.scope)};ar(c,e.scope,a.langType),a.mode==="structural"?(c.mode="structural",a.pattern!==void 0&&(c.pattern=a.pattern),typeof a.rule=="string"&&(c.rule=a.rule)):(c.keywords=a.keywords,a.fixedString&&(c.fixedString=!0),a.perlRegex&&(c.perlRegex=!0),a.caseSensitive&&(c.caseSensitive=!0),a.caseInsensitive&&(c.caseInsensitive=!0),a.wholeWord&&(c.wholeWord=!0));let l=await ht(c);return o.push({backend:"localSearchCode",source:e.from}),us((l.files??[]).map(u=>({kind:"file",source:n,path:u.path,entryType:"file"})))}async function Lw(e,t,n,r){let o=await ht(Fw(e,n,r.predicate)),i=Nt(o,"localSearchCode");return{results:(o.files??[]).map(a=>({kind:"file",source:t,path:a.path,entryType:"file"})),diagnostics:i,provenance:[Gt("localSearchCode",t,r)]}}async function _w(e,t,n,r){let o=await ht(Fw(e,n,r.predicate));return{...eo(o,t),diagnostics:Nt(o,"localSearchCode"),provenance:[Gt("localSearchCode",t,r)]}}function Fw(e,t,n){let o=Zt(n).match,i={path:t,filesWithoutMatch:!0,...sr(e.scope),...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{},...Wc(e)};return ar(i,e.scope,o.langType),i.keywords=o.keywords,o.fixedString&&(i.fixedString=!0),o.perlRegex&&(i.perlRegex=!0),o.caseSensitive&&(i.caseSensitive=!0),o.caseInsensitive&&(i.caseInsensitive=!0),o.wholeWord&&(i.wholeWord=!0),o.multiline&&(i.multiline=!0),o.multilineDotall&&(i.multilineDotall=!0),i}var Jc=f(()=>{"use strict";Wr();os();On();te();cr();oo();ds()});async function Iw(e,t,n,r){let o=[],i=[],a=[...(await Zc(e,r,t,n,o,i)).values()].sort(WD(e));return a.length===0&&!i.some(c=>c.severity==="error")&&i.push(C("zeroMatches","Boolean file query matched no files.",{backend:"localSearchCode",severity:"info",blocksAnswer:!1})),{results:a,diagnostics:i,provenance:o}}function WD(e){let t=e.controls?.search?.sort,n=(r,o)=>r.path.localeCompare(o.path);if(t==="size")return(r,o)=>(o.size??0)-(r.size??0)||n(r,o);if(t==="modified")return(r,o)=>(o.modified??"").localeCompare(r.modified??"")||n(r,o);if(t==="name"){let r=o=>o.slice(o.lastIndexOf("/")+1);return(o,i)=>r(o.path).localeCompare(r(i.path))||n(o,i)}return n}async function Zc(e,t,n,r,o,i){switch(t.kind){case"all":return(await Promise.all(t.of.map(a=>Zc(e,a,n,r,o,i)))).reduce((a,c)=>a===void 0?c:Ew(a,c));case"any":{let s=await Promise.all(t.of.map(c=>Zc(e,c,n,r,o,i))),a=new Map;for(let c of s)for(let[l,u]of c)a.set(l,Xc(a.get(l),u));return a}case"not":{let s=await zm(e,n,r,o),a=await Zc(e,t.predicate,n,r,o,i);return new Map([...s].filter(([c])=>!a.has(c)))}default:return Mw(e,t,n,r,o,i)}}async function Mw(e,t,n,r,o,i){return t.kind==="field"?Ow(e,t,n,r,o,i):Aw(e,t,n,r,o,i)}async function Dw(e,t,n){return new Set((await zm(e,e.from,t,n)).keys())}async function Nw(e,t,n,r,o){return new Set((await Mw(e,t,e.from,n,r,o)).keys())}var Um=f(()=>{"use strict";te();vw();Jc();ds()});async function Gw(e,t,n,r){let o=[],i=[],s=await el(e,r,t,n,o,i),a=new Set,c=s.rows.filter(l=>s.files.has(l.path)).filter(l=>{let u=`${l.path}:${l.line??""}`;return a.has(u)?!1:(a.add(u),!0)});return c.length===0&&!i.some(l=>l.severity==="error")&&i.push(C("zeroMatches","Boolean code query matched no occurrences.",{backend:"localSearchCode",severity:"info",blocksAnswer:!1})),{results:c,diagnostics:i,provenance:o}}async function el(e,t,n,r,o,i){switch(t.kind){case"all":{let s=await Promise.all(t.of.map(l=>el(e,l,n,r,o,i))),a=s.map(l=>l.files).reduce((l,u)=>l===void 0?u:kw(l,u)),c=s.flatMap(l=>l.rows);return{files:a,rows:c}}case"any":{let s=await Promise.all(t.of.map(l=>el(e,l,n,r,o,i))),a=new Set;for(let l of s)for(let u of l.files)a.add(u);let c=s.flatMap(l=>l.rows);return{files:a,rows:c}}case"not":{let s=await Dw(e,r,o),a=await el(e,t.predicate,n,r,o,i);return{files:new Set([...s].filter(c=>!a.files.has(c))),rows:[]}}case"field":return{files:await Nw(e,t,r,o,i),rows:[]};default:{let s=await VD(e,t,n,r,o,i);return{files:new Set(s.map(a=>a.path)),rows:s}}}}async function VD(e,t,n,r,o,i){let s=Zt(t);if(s.unsupported)return i.push(C(s.unsupported.code,s.unsupported.message,{backend:"localSearchCode"})),[];let a=s.match,c={path:r,...sr(e.scope)};ar(c,e.scope,a.langType),a.mode==="structural"?(c.mode="structural",a.pattern!==void 0&&(c.pattern=a.pattern),typeof a.rule=="string"&&(c.rule=a.rule)):(c.keywords=a.keywords,a.fixedString&&(c.fixedString=!0),a.perlRegex&&(c.perlRegex=!0),a.caseSensitive&&(c.caseSensitive=!0),a.caseInsensitive&&(c.caseInsensitive=!0),a.wholeWord&&(c.wholeWord=!0),a.multiline&&(c.multiline=!0),a.multilineDotall&&(c.multilineDotall=!0));let l=await ht(c);return o.push({backend:"localSearchCode",source:n}),eo(l,n).results}var Hw=f(()=>{"use strict";Wr();os();On();te();cr();Um();ds()});async function tl(e,t,n){let r=e.where;if(Cw(r))return Gw(e,t,n,r);if(e.view==="discovery"&&Vc(r))return _w(e,t,n,r);let o=Zt(r);if(o.unsupported)return{results:[],diagnostics:[C(o.unsupported.code,o.unsupported.message,{backend:"localSearchCode",...o.unsupported.predicateId?{predicateId:o.unsupported.predicateId}:{}})],provenance:[]};let i=o.match,s={path:n,...sr(e.scope),...e.view==="discovery"?{filesOnly:!0}:{},...e.view==="detailed"?{contextLines:3}:{},...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{},...Wc(e)};ar(s,e.scope,i.langType),i.mode==="structural"?(s.mode="structural",i.pattern!==void 0&&(s.pattern=i.pattern),typeof i.rule=="string"&&(s.rule=i.rule)):(s.keywords=i.keywords,i.fixedString&&(s.fixedString=!0),i.perlRegex&&(s.perlRegex=!0),i.caseSensitive&&(s.caseSensitive=!0),i.caseInsensitive&&(s.caseInsensitive=!0),i.wholeWord&&(s.wholeWord=!0),i.multiline&&(s.multiline=!0),i.multilineDotall&&(s.multilineDotall=!0),o.negate&&(s.invertMatch=!0));let a=await ht(s),c=eo(a,t),l=Nt(a,"localSearchCode"),u=KD(a);if(u.length>0){let d=u.reduce((p,h)=>p+(h.total??0),0),m=u.reduce((p,h)=>p+h.shown,0);l.push(C("matchTruncated",`${u.length} file(s) have more matches (showed ${m} of ${d}) \u2014 page with controls.search.matchPage, or raise controls.search.maxMatchesPerFile.`,{backend:"localSearchCode",severity:"info",blocksAnswer:!1,repair:{message:"Follow next.matchPage to page within files, or set controls.search.maxMatchesPerFile higher."}}))}return i.mode==="structural"&&i.pattern!==void 0&&c.results.length===0&&l.push(C("zeroMatches","Structural pattern matched 0 nodes. A pattern must match the COMPLETE node \u2014 if the target has a return type or typed params the pattern omits, it returns 0 (not genuine absence).",{backend:"localSearchCode",severity:"info",blocksAnswer:!1,repair:{message:'To find a named symbol, prefer a rule over a pattern: where = { kind:"structural", lang, rule:{ kind:"<node e.g. function_declaration>", has:{ pattern:"<name>" } } }. Or complete the pattern (e.g. add a return type `: $R`).'}})),i.mode!=="structural"&&i.fixedString===!0&&c.results.length===0&&i.keywords!==void 0&&bw(i.keywords)&&l.push(C("zeroMatches",`Literal search for "${i.keywords}" matched 0 \u2014 a text predicate searches for a FIXED string, so the regex metacharacters in it were matched literally (not as a pattern). This may be a false "not found".`,{backend:"localSearchCode",severity:"info",blocksAnswer:!1,repair:{message:'If you meant a pattern, use a regex predicate (where = { kind:"regex", value:"<pattern>" }) so metacharacters like | ( ) [ ] ^ $ * + ? \\b are interpreted.'}})),{...c,diagnostics:l,provenance:[Gt("localSearchCode",t,r)]}}function KD(e){let t=[];for(let n of e.files??[]){let r=n.returnedMatchRows??n.matches?.length??0,o=n.pagination?.totalMatches??n.totalMatchRows??n.matchCount,i=n.pagination?.hasMore===!0,s=typeof o=="number"&&o>r;(i||s)&&t.push({path:n.path,shown:r,total:o})}return t}var $m=f(()=>{"use strict";Wr();os();On();te();cr();oo();Hw();Jc()});async function Qw(e,t,n){let r=e.where;if(Vc(r))return Lw(e,t,n,r);if(r&&Qm(r))return Iw(e,t,n,r);if(r&&jm(r)){let l=await tl({...e,view:"discovery"},t,n),u=l.results.map(d=>({kind:"file",source:t,path:d.path,entryType:"file"}));return{...l,results:u}}let o={path:n,details:!0,showFileLastModified:!0};as(o,e.scope),Sw(o,e),Pw(o,e);let i=[];r&&Kc(r,o,i);let s=await er(o),a=ls(s,e,n);return{...rs(a,t),diagnostics:[...i,...Nt(a,"localFindFiles")],provenance:[Gt("localFindFiles",t,r)]}}var jw=f(()=>{"use strict";Hi();On();cr();oo();$m();Um();Jc();Yc()});import YD from"node:fs";import XD from"node:path";function JD(e){if(e.from?.kind==="local")return e.from.path;if(e.from?.kind==="materialized")return e.from.localPath;throw new Error("localExecute requires a local or materialized source.")}async function ps(e){let t=e.from,n=JD(e),r=Ne(e.scope),o=r?XD.join(n,r):n;if(!YD.existsSync(o))return{results:[],diagnostics:[C("invalidQuery",`Local path does not exist: ${o}. Check the path/spelling (and branch or materialization for remote sources) before treating this as absence.`,{backend:"localExecute",queryPath:o,repair:{message:'Verify the path exists (orient with target:"structure" on a known-good parent), fix typos, or materialize the remote source first.'}})],provenance:[]};switch(e.target){case"files":return Qw(e,t,o);case"structure":return ww(e,t,o);case"content":return Tw(e,t,o);default:return tl(e,t,o)}}var qm=f(()=>{"use strict";te();$m();jw();Yc();En()});import Bw from"node:path";function zw(e){return[...new Set(e)]}function $w(e){if(e.kind!=="github")return{};if(e.repo&&e.repo.includes("/")){let[t,n]=e.repo.split("/");return{owner:t,repo:n}}return{owner:e.owner}}function qw(e){let t=e.structuredContent,n=t?.results?.[0],r=n?.data;return{localPath:r?.localPath&&t?.base&&!Bw.isAbsolute(r.localPath)?Bw.join(t.base,r.localPath):r?.localPath,cached:r?.cached,error:r?.error,status:n?.status}}async function Ww(e){if(e.from?.kind!=="github")return ps(e);let t=e.from,{owner:n,repo:r}=$w(t);if(!n||!r)return{results:[],diagnostics:[C("materializationFailed","Materialization requires a concrete owner/repo.",{backend:"ghCloneRepo"})],provenance:[]};let o=Ne(e.scope),i={owner:n,repo:r,...t.ref?{branch:t.ref}:{},...e.materialize?.strategy!=="repo"&&o?{sparsePath:o}:{},...e.materialize?.forceRefresh?{forceRefresh:!0}:{}},s=await we("ghCloneRepo",i),{localPath:a,cached:c,error:l,status:u}=qw(s);if(u==="error"||!a)return{results:[],diagnostics:[C("materializationFailed",l??"Clone/fetch failed; cannot run local proof.",{backend:"ghCloneRepo"})],provenance:[{backend:"ghCloneRepo",source:t}]};let d=e.scope??{},m={...e,from:{kind:"materialized",localPath:a,source:t},scope:{...d,path:void 0,excludeDir:zw([...d.excludeDir??[],".git"]),exclude:zw([...d.exclude??[],".octocode-clone-meta.json","**/.octocode-clone-meta.json"])}},p=await ps(m);return{...p,diagnostics:[...p.diagnostics,...c?[C("staleCache","Result came from a cached clone; set materialize.forceRefresh to refresh.",{backend:"ghCloneRepo",severity:"info",blocksAnswer:!1})]:[]],provenance:[{backend:"ghCloneRepo",source:t,materializedPath:a,cache:c?"hit":"miss"},...p.provenance]}}async function Vw(e){if(e.from?.kind==="materialized"){let p=e.from.localPath;return{results:[Uw(p,e.from.source,void 0,!0)],diagnostics:[],provenance:[{backend:"ghCloneRepo",source:e.from}]}}if(e.from?.kind!=="github")return{results:[],diagnostics:[C("invalidQuery",'target:"materialize" needs a GitHub source (owner/repo) or an already-materialized `from`.',{backend:"ghCloneRepo"})],provenance:[]};let t=e.from,{owner:n,repo:r}=$w(t);if(!n||!r)return{results:[],diagnostics:[C("materializationFailed","Materialization requires a concrete owner/repo.",{backend:"ghCloneRepo"})],provenance:[]};let i=e.materialize?.strategy==="repo"?void 0:Ne(e.scope),s={owner:n,repo:r,...t.ref?{branch:t.ref}:{},...i?{sparsePath:i}:{},...e.materialize?.forceRefresh?{forceRefresh:!0}:{}},a=await we("ghCloneRepo",s),{localPath:c,cached:l,error:u,status:d}=qw(a);if(d==="error"||!c)return{results:[],diagnostics:[C("materializationFailed",u??"Clone/fetch failed; no checkpoint produced.",{backend:"ghCloneRepo"})],provenance:[{backend:"ghCloneRepo",source:t}]};let m=!i;return{results:[Uw(c,t,t.ref,m,l)],diagnostics:l?[C("staleCache","Checkpoint served from a cached clone; set materialize.forceRefresh to refresh.",{backend:"ghCloneRepo",severity:"info",blocksAnswer:!1})]:[],provenance:[{backend:"ghCloneRepo",source:t,materializedPath:c,cache:l?"hit":"miss"}]}}function Uw(e,t,n,r,o){return{kind:"record",recordType:"materialized",id:e,...t?{source:t}:{},data:{localPath:e,repoRoot:e,...t?{sourceRef:t}:{},...n?{ref:n}:{},cache:o?"hit":"miss",complete:r}}}var Kw=f(()=>{"use strict";Xt();qm();te();En()});import Wm from"node:path";function nl(e){let t={reachable:0,"candidate-dead":0,"transitive-dead":0,"candidate-unused-file":0,"candidate-unused-dependency":0,unknown:0},n=0,r=0;for(let o of e)t[o.verdict]+=1,n+=o.why.length,r+=o.retainedBy.length+(o.retains?.length??0);return{byVerdict:t,facts:n,edges:r}}function ms(e){let t=e.root,n=[...e.symbols.map(a=>ZD(t,a)),...e.files.map(a=>rN(t,a)),...e.dependencies.filter(a=>a.kind==="unusedDependency").map(a=>oN(a))],r=a=>a==="reachable"?1:a==="unknown"?.5:0;n.sort((a,c)=>r(a.verdict)-r(c.verdict));let{byVerdict:o,facts:i,edges:s}=nl(n);return{packets:n,graphSummary:{subjects:n.length,facts:i,edges:s,byVerdict:o}}}function ZD(e,t){let n={id:`sym:${t.file}#${t.symbol}`,kind:"symbol",name:t.symbol,symbolKind:t.kind,uri:t.file,range:{start:{line:t.line}}},r=eN(t.verdict),o=r!=="reachable",i=[{id:`${n.id}:exports`,subject:n,claim:"exports",source:t.evidenceSource,confidence:t.evidenceSource==="ast"?"exact":"heuristic",flags:["declaration"]}],s=t.retainedBy.map((c,l)=>({id:`${n.id}:ref:${l}`,from:{id:`file:${c}`,kind:"file",uri:c},to:n,relation:t.retentionSource==="ast"?"imports":"references",source:t.retentionSource==="ast"?"ast":"ripgrep",confidence:t.retentionSource==="ast"?"exact":"heuristic",flags:t.externalRefs>0?void 0:["unreachable"]})),a=[{kind:"lsp-unavailable",severity:o?"high":"low",location:{uri:t.file,range:{start:{line:t.line}}}}];return{subject:n,verdict:r,proofStatus:r==="transitive-dead"&&t.directRefs>0?"conflicting-evidence":"candidate",why:i,retainedBy:s,missingProof:a,risk:tN(r),next:nN(e,t)}}function eN(e){switch(e){case"reachable":return"reachable";case"candidate-unused-export":case"unused-export":return"candidate-dead";case"transitive-dead":return"transitive-dead";default:return"unknown"}}function tN(e){switch(e){case"reachable":return{deleteRisk:"high",reason:"Reachable from entrypoints via AST import/call retention (or lexical fallback); likely used \u2014 do not delete without confirming."};case"candidate-dead":return{deleteRisk:"medium",reason:"No reachable retainers found in analyze (AST import/call scan, then lexical fallback). Confirm with LSP references (next.semantic) before deleting."};case"transitive-dead":return{deleteRisk:"medium",reason:"Only retained from unreachable code (AST or lexical scan). Confirm the retention chain with LSP before deleting."};default:return{deleteRisk:"unknown",reason:"Insufficient evidence."}}}function nN(e,t){let n=Wm.resolve(e,t.file);return{"next.fetch":{query:{schema:"oql",target:"content",from:{kind:"local",path:n},fetch:{content:{range:{startLine:t.line,contextLines:3},contentView:"none"}}},why:"Read the declaration at this symbol.",confidence:"exact"},"next.semantic":{query:{schema:"oql",target:"semantics",from:{kind:"local",path:n},params:{type:"references",symbolName:t.symbol,lineHint:t.line,includeDeclaration:!1}},why:"Confirm references with LSP \u2014 upgrades this candidate to proof.",confidence:"exact"},"next.search":{query:{schema:"oql",target:"code",from:{kind:"local",path:e},where:{kind:"text",value:t.symbol},view:"discovery"},why:"Find string/dynamic usages of the name the reference scan may miss.",confidence:"heuristic"}}}function rN(e,t){let n={id:`file:${t.file}`,kind:"file",uri:t.file};return{subject:n,verdict:"candidate-unused-file",proofStatus:"needs-framework-graph",why:[{id:`${n.id}:no-importer`,subject:n,claim:"unresolved",source:"graph",confidence:"heuristic",value:{reason:"no static importer reaches this file from an entrypoint"}}],retainedBy:[],missingProof:[{kind:"dynamic-import-unresolved",severity:"medium"},{kind:"framework-entrypoint-unknown",severity:"medium"}],risk:{deleteRisk:"medium",reason:"No static importer found, but dynamic imports, framework entrypoints, and config globs are not modeled. Verify before deleting."},next:{"next.fetch":{query:{schema:"oql",target:"content",from:{kind:"local",path:Wm.resolve(e,t.file)},fetch:{content:{contentView:"symbols"}}},why:"Read the file outline.",confidence:"exact"},"next.search":{query:{schema:"oql",target:"code",from:{kind:"local",path:e},where:{kind:"text",value:Wm.basename(t.file)},view:"discovery"},why:"Find references to the file name (dynamic import / config).",confidence:"heuristic"}}}}function oN(e){let t={id:`dep:${e.manifest}#${e.packageName}`,kind:"dependency",name:e.packageName,uri:e.manifest};return{subject:t,verdict:"candidate-unused-dependency",proofStatus:"candidate",why:[{id:`${t.id}:declared`,subject:t,claim:"declares",source:"manifest",confidence:"exact",value:{declaredIn:e.declaredIn}},{id:`${t.id}:no-import`,subject:t,claim:"unresolved",source:"regex",confidence:"heuristic",value:{reason:"no import specifier resolves to this package"}}],retainedBy:[],missingProof:[{kind:"manifest-rule-missing",severity:"medium"},{kind:"dynamic-import-unresolved",severity:"low"}],risk:{deleteRisk:"medium",reason:"No import specifier resolves to this dependency, but it may be used via config, scripts, types, or transitive re-export. Verify before removing."},next:{}}}var Yw=f(()=>{"use strict"});var rl=f(()=>{"use strict";Yw()});function Xw(e){let n=(Array.isArray(e)?e:e===void 0?[]:[e]).filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim().toLowerCase());return n.length?new Set(n):void 0}function Vm(e){return{...typeof e.subject=="string"&&e.subject.trim()?{subject:e.subject.trim().toLowerCase()}:{},...typeof e.subjectKind=="string"&&e.subjectKind.trim()?{subjectKind:e.subjectKind.trim().toLowerCase()}:{},relations:Xw(e.relation),verdicts:Xw(e.verdict),direction:e.direction==="incoming"||e.direction==="outgoing"?e.direction:"both",includePackets:e.includePackets!==!1,includeFacts:e.includeFacts!==!1,includeEdges:e.includeEdges!==!1}}function iN(e,t){if(t.subjectKind){let r=e.kind.toLowerCase(),o=e.symbolKind===void 0?void 0:String(e.symbolKind).toLowerCase();if(r!==t.subjectKind&&o!==t.subjectKind)return!1}return t.subject?[e.id,e.name,e.uri].filter(r=>typeof r=="string").map(r=>r.toLowerCase()).some(r=>r.includes(t.subject)):!0}function lr(e,t){return!t.relations||!e?!0:t.relations.has(e.toLowerCase())}function fs(e,t){if(!iN(e.subject,t)||t.verdicts&&!t.verdicts.has(e.verdict.toLowerCase()))return!1;if(!t.relations)return!0;let n=t.direction!=="outgoing"&&e.retainedBy.some(i=>lr(i.relation,t)),r=t.direction!=="incoming"&&(e.retains??[]).some(i=>lr(i.relation,t)),o=e.why.some(i=>lr(i.claim,t));return n||r||o}function ol(e,t){e.set(t.id,t)}function Jw(e,t,n){lr(t.claim,n)&&e.set(t.id,t)}function hs(e,t,n,r){lr(n.relation,r)&&(ol(e,n.from),ol(e,n.to),t.set(n.id,n))}function Zw(e){let t=e.location?.range?.start.line;return[e.kind,e.severity,e.location?.uri??"",t===void 0?"":String(t)].join(":")}var il=f(()=>{"use strict"});import eT from"node:path";function gs(e){return{files:e.length,declarations:e.reduce((t,n)=>t+n.declarations.length,0),imports:e.reduce((t,n)=>t+n.imports.length,0),exports:e.reduce((t,n)=>t+n.exports.length,0),calls:e.reduce((t,n)=>t+n.calls.length,0),edges:e.reduce((t,n)=>t+n.edges.length,0)}}function nT(e,t,n,r,o,i){if(n.size!==0)for(let s of t)for(let a of s.edges){let c=aN(a.relation);if(!lr(c,i))continue;let l=tT(a.from,e,a.line),u=tT(a.to,e,a.line);!n.has(l.id)&&!n.has(u.id)||hs(r,o,{id:`ast:${l.id}->${u.id}:${c}:${a.line}`,from:l,to:u,relation:c,source:"ast",confidence:"exact",via:{uri:s.file,range:{start:{line:a.line}}}},i)}}function aN(e){let t=e.trim();return sN.has(t)?t:"references"}function tT(e,t,n){let r=cN(e,t);return r?{id:`sym:${r.uri}#${r.name}`,kind:"symbol",name:r.name,uri:r.uri,range:{start:{line:n}}}:{id:`ast:${e}`,kind:"symbol",name:e,uri:e,range:{start:{line:n}}}}function cN(e,t){if(!e.startsWith("symbol:"))return;let n=e.slice(7),r=n.lastIndexOf("#");if(r<1||r===n.length-1)return;let o=n.slice(0,r),i=n.slice(r+1);return{uri:eT.isAbsolute(o)?eT.relative(t,o):o,name:i}}var sN,Km=f(()=>{"use strict";il();sN=new Set(["contains","defines","exports","imports","references","calls","constructs","extends","implements","typeUses"])});function ur(e,t){let n=Math.max(1,e.page??1),r=Math.max(1,e.itemsPerPage??e.limit??lN),o=Math.max(1,Math.ceil(t/r)),i=(n-1)*r;return{packetsStart:i,packetsEnd:i+r,pagination:{currentPage:n,totalPages:o,itemsPerPage:r,totalItems:t,hasMore:n<o}}}function rT(e,t,n,r,o,i){let s=t.filter(g=>fs(g,r)),a=ur(e,s.length),c=s.slice(a.packetsStart,a.packetsEnd),l=new Map,u=new Map,d=new Map,m=new Map,p={},h={};for(let g of s)p[g.verdict]=(p[g.verdict]??0)+1,h[g.proofStatus]=(h[g.proofStatus]??0)+1;for(let g of c){if(ol(l,g.subject),r.includeFacts)for(let y of g.why)Jw(d,y,r);if(r.includeEdges){if(r.direction!=="outgoing")for(let y of g.retainedBy)hs(l,u,y,r);if(r.direction!=="incoming")for(let y of g.retains??[])hs(l,u,y,r)}for(let y of g.missingProof)m.set(Zw(y),y)}return r.includeEdges&&nT(i,o,new Set(l.keys()),l,u,r),{data:{kind:"relationshipGraph",filters:{...r.subject?{subject:r.subject}:{},...r.subjectKind?{subjectKind:r.subjectKind}:{},...r.relations?{relation:[...r.relations]}:{},...r.verdicts?{verdict:[...r.verdicts]}:{},direction:r.direction,includePackets:r.includePackets,includeFacts:r.includeFacts,includeEdges:r.includeEdges},summary:{totalPackets:s.length,returnedPackets:c.length,nodes:l.size,edges:u.size,facts:d.size,missingProof:m.size,byVerdict:p,proofStatus:h},graphSummary:n,packetPage:a.pagination,nodes:[...l.values()],edges:[...u.values()],facts:[...d.values()],missingProof:[...m.values()],...r.includePackets?{packets:c}:{},caveats:['target:"graph" uses native AST facts where available plus research-packet reachability. LSP proof is page-bounded; follow next.page / next.semantic before treating deletion as safe.']},pagination:a.pagination}}function oT(e){let{byVerdict:t,facts:n,edges:r}=nl(e);return{subjects:e.length,facts:n,edges:r,byVerdict:t}}var lN,ys=f(()=>{"use strict";rl();il();Km();il();Km();lN=25});function sl(e){if(!e)return[];for(let t of iT){let n=e[t];if(Array.isArray(n))return n}return[e]}function sT(e){let t=e?.repositories;if(!t||typeof t!="object"||Array.isArray(t))return;let n={};for(let[r,o]of Object.entries(t)){if(!o||typeof o!="object"||Array.isArray(o))continue;let i=o,s={};for(let a of["repository","repositoryDirectory","owner","repo"])typeof i[a]=="string"&&(s[a]=i[a]);Object.keys(s).length>0&&(n[r]=s)}return Object.keys(n).length?{repositories:n}:void 0}function aT(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e))uN.has(n)||(r===null||typeof r=="string"||typeof r=="number"||typeof r=="boolean")&&(t[n]=r);return Object.keys(t).length?t:void 0}function Ym(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function io(e){return typeof e.value=="string"&&e.value.trim()?e.value.trim().split(/\s+/,1)[0]:void 0}function dN(e,t){let n=r=>typeof t[r]=="string"||typeof t[r]=="number"?String(t[r]):void 0;switch(e){case"repository":return n("fullName")??(n("owner")&&n("repo")?`${n("owner")}/${n("repo")}`:n("url"))??io(t);case"package":{let r=n("name")??n("packageName"),o=n("version");return r?o?`${r}@${o}`:r:io(t)}case"pullRequest":return n("number")?`#${n("number")}`:n("url")??io(t);case"commit":return n("sha")?.slice(0,12)??n("oid")?.slice(0,12)??io(t);case"materialized":return n("localPath")??n("repoRoot");case"diff":return n("path")??n("filename")??(n("number")?`#${n("number")}`:io(t));case"semantics":{let r=n("uri"),o=n("line")??n("startLine");return r?o?`${r}:${o}`:r:void 0}case"research":return n("intent")??n("goal")??"research";case"graph":return n("intent")?`graph:${n("intent")}`:"graph"}return io(t)}function vn(e,t,n,r){return e.map(o=>{let i=o&&typeof o=="object"?o:{value:o},s=dN(t,i);return{kind:"record",recordType:t,...s?{id:s}:{},...n?{source:n}:{},...r?{metadata:r}:{},data:i}})}var iT,uN,bs=f(()=>{"use strict";iT=["repositories","pull_requests","commits","packages","results","locations","references","symbols","strings","entries","incomingCalls","outgoingCalls"],uN=new Set([...iT,"pagination","contentPagination","next"])});import{statSync as pN}from"node:fs";import al from"node:path";function cl(e,t){if(typeof e=="string"&&e.trim())return e;if(e instanceof Error&&e.message)return e.message;if(e&&typeof e=="object"){let n=e;if(typeof n.error=="string"&&n.error.trim())return n.error;if(typeof n.message=="string"&&n.message.trim())return n.message;let r=JSON.stringify(e);if(r)return r}return t}function cT(e,t){if(!t||al.isAbsolute(t))return t;let n=e.structuredContent;return n?.base?al.join(n.base,t):t}function Rs(e){try{let t=al.isAbsolute(e)?e:al.resolve(e);return pN(t).isDirectory()}catch{return!1}}function An(e){if(!e||e.kind!=="github")return{};if(e.repo&&e.repo.includes("/")){let[t,n]=e.repo.split("/");return{owner:t,repo:n}}return{owner:e.owner}}function bt(e){return e.params??{}}function Ss(e,t){let n={...bt(e)};if(n.page===void 0&&e.page!==void 0&&(n.page=e.page),t&&n[t]===void 0){let r=e.limit??e.itemsPerPage;r!==void 0&&(n[t]=r)}return n}var Ln=f(()=>{"use strict"});function ll(e){return e==="plan"||e==="prove"?e:"analyze"}function mN(e){if(!e||e.length===0)return;let t=new Set;for(let n of e){let r=n.trim(),o=r.startsWith("data.")?r.slice(5):r;lT.includes(o)&&t.add(o)}return t.size>0?t:void 0}function uT(e,t){let n=mN(e.select),r={manifests:t.manifests,files:t.files,dependencies:t.dependencies,symbols:t.symbols,graphFacts:t.graphFacts},o={},i=Math.max(1,e.page??1),s,a=1,c=!1;for(let l of lT){if(n&&!n.has(l))continue;let u=r[l]??[],{packetsStart:d,packetsEnd:m,pagination:p}=ur(e,u.length);o[l]=u.slice(d,m),o[`${l}Page`]=p,s=p.itemsPerPage,a=Math.max(a,p.totalPages??1),p.hasMore&&(c=!0)}return Object.keys(o).length===0?{fields:o}:{fields:o,pagination:{currentPage:i,...s!==void 0?{itemsPerPage:s}:{},totalPages:a,hasMore:c||i<a}}}function dT(e,t){if(!e)return t;if(!t)return e;let n=e.currentPage??t.currentPage,r=e.itemsPerPage??t.itemsPerPage;return{...n!==void 0?{currentPage:n}:{},...r!==void 0?{itemsPerPage:r}:{},totalPages:Math.max(e.totalPages??1,t.totalPages??1),...e.totalItems!==void 0?{totalItems:e.totalItems}:{},hasMore:!!(e.hasMore||t.hasMore)}}function Xm(e,t){let{status:n,data:r}=kn(e);return n==="error"?[C("invalidQuery",cl(r?.error,`${t} failed`),{backend:t})]:n==="empty"?[C("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1})]:[]}function dr(e,t,n,r){let{data:o,status:i}=kn(e),s=Xm(e,n),a=i==="error"?[]:sl(o);a.length===0&&!s.some(m=>m.code==="zeroMatches"||m.severity==="error")&&s.push(C("zeroMatches",`${n} returned no results.`,{backend:n,severity:"info",blocksAnswer:!1}));let c=o?.pagination,l=c?.hasMore===!0||!!o?.next||typeof c?.currentPage=="number"&&typeof c?.totalPages=="number"&&c.currentPage<c.totalPages,u=Jt(c,l),d=t==="package"?sT(o):void 0;return{results:vn(a,t,r,aT(o)),...d?{shared:d}:{},...u?{pagination:u}:{},diagnostics:s,provenance:[{backend:n,source:r}]}}function Jm(e,t){let n=typeof e.nextPage=="number"?e.nextPage:typeof e.currentPage=="number"?e.currentPage+1:(t.page??1)+1;return{query:{...t,params:{...t.params??{},page:n}},why:"Continue the LSP semantic result page.",confidence:"exact"}}function pT(e,t){let n=e?.pagination;if(n?.hasMore)return{hasMore:!0,...n.currentPage!==void 0?{currentPage:n.currentPage}:{},...n.totalPages!==void 0?{totalPages:n.totalPages}:{},...n.itemsPerPage!==void 0?{itemsPerPage:n.itemsPerPage}:{},...n.totalItems!==void 0?{totalItems:n.totalItems}:{},next:Jm(n,t)}}var lT,pr=f(()=>{"use strict";te();Xt();zc();ys();bs();Ln();lT=["manifests","files","dependencies","symbols","graphFacts"]});function fN(e){let t=e.scope?.language;if(t)return Array.isArray(t)?t[0]:t}async function mT(e){let{owner:t}=An(e.from),n=Ss(e,"limit"),r=typeof n.language=="string"?n.language:fN(e),o=Lc(r);o&&(n.language=o);let i=await we("ghSearchRepos",{...t?{owner:t}:{},...n}),s=dr(i,"repository","ghSearchRepos",e.from??{kind:"github"});return s.results.length===0&&hN(n)&&s.diagnostics.push(C("zeroMatches","GitHub repository search requires EVERY term to match (AND semantics). Zero results for a multi-term query usually means over-constraint, not absence.",{backend:"ghSearchRepos",severity:"info",blocksAnswer:!1,repair:{message:'Retry with the single most distinctive term (e.g. the project name), or move concepts to topic:"..." filters.'}})),s}function hN(e){let t=e.keywords??e.keywordsToSearch;return Array.isArray(t)?t.length>1||t.length===1&&typeof t[0]=="string"&&t[0].trim().includes(" "):typeof t=="string"&&t.trim().includes(" ")}async function fT(e){let t=await we("npmSearch",{...Ss(e)});return dr(t,"package","npmSearch",e.from??{kind:"npm"})}var hT=f(()=>{"use strict";Xt();te();Uc();pr();Ln()});async function Zm(e){let{owner:t,repo:n}=An(e.from),r=e.target==="commits",o=r?void 0:yN(e),i=r?gN(e):void 0,s=Ss(e,r?"perPage":"limit");(o||i)&&(delete s.matchString,delete s.matchScope);let a=await we("ghHistoryResearch",{...t?{owner:t}:{},...n?{repo:n}:{},...r?{type:"commits"}:{},...s}),c=dr(a,r?"commit":"pullRequest","ghHistoryResearch",e.from??{kind:"github"});return o?yT(c,o):i?gT(c,i):c}function gN(e){let t=bt(e);return typeof t.matchString=="string"&&t.matchString.length>0?t.matchString:void 0}function gT(e,t){let n=t.toLowerCase(),r=e.results.length,o=e.results.filter(s=>{if(s.kind!=="record")return!1;let a=s.data,c=a.message,l=typeof c=="string"?c:"",u=l.toLowerCase().indexOf(n);if(u<0)return!1;let d=Math.max(0,u-80),m=Math.min(l.length,u+t.length+80);return a.match={matchString:t,scope:"message",spotlight:(d>0?"\u2026":"")+l.slice(d,m)+(m<l.length?"\u2026":"")},!0}),i=e.diagnostics.filter(s=>s.code!=="zeroMatches");return o.length===0?i.push(C("zeroMatches",`No commit message matched "${t}" (content filter over ${r} fetched commit(s); not a search-index query). Broaden the fetch (branch/perPage/page).`,{backend:"ghHistoryResearch",severity:"info",blocksAnswer:!1})):o.length<r&&i.push(C("partialResult",`Content filter kept ${o.length} of ${r} fetched commit(s) matching "${t}" in message. This filters fetched content only \u2014 page the fetch to widen the candidate set.`,{backend:"ghHistoryResearch",severity:"info",blocksAnswer:!1})),{...e,results:o,diagnostics:i}}function yN(e){let t=bt(e),n=typeof t.matchString=="string"?t.matchString:void 0;if(!n)return;let r=t.matchScope==="title"||t.matchScope==="comments"||t.matchScope==="reviews"||t.matchScope==="all"?t.matchScope:"body";return{needle:n,scope:r}}function bN(e,t){let n=[],r=i=>{typeof i=="string"&&i.length>0&&n.push(i)},o=i=>{let s=e[i];if(Array.isArray(s))for(let a of s)a&&typeof a=="object"&&r(a.body)};return(t==="body"||t==="all")&&r(e.body),(t==="title"||t==="all")&&r(e.title),(t==="comments"||t==="all")&&o("comments"),(t==="reviews"||t==="all")&&o("reviews"),n.join(`
43
- `)}function yT(e,t){let n=t.needle.toLowerCase(),r=e.results.length,o=e.results.filter(s=>{if(s.kind!=="record")return!1;let a=s.data,c=bN(a,t.scope),l=c.toLowerCase().indexOf(n);if(l<0)return!1;let u=Math.max(0,l-80),d=Math.min(c.length,l+t.needle.length+80);return a.match={matchString:t.needle,scope:t.scope,spotlight:(u>0?"\u2026":"")+c.slice(u,d)+(d<c.length?"\u2026":"")},!0}),i=e.diagnostics.filter(s=>s.code!=="zeroMatches");return o.length===0?i.push(C("zeroMatches",`No pull request ${t.scope} matched "${t.needle}" (content filter over ${r} fetched PR(s); not a search-index query). Broaden the fetch (state/keywordsToSearch/page) or the match scope.`,{backend:"ghHistoryResearch",severity:"info",blocksAnswer:!1})):o.length<r&&i.push(C("partialResult",`Content filter kept ${o.length} of ${r} fetched PR(s) matching "${t.needle}" in ${t.scope}. This filters fetched content only \u2014 page the fetch to widen the candidate set.`,{backend:"ghHistoryResearch",severity:"info",blocksAnswer:!1})),{...e,results:o,diagnostics:i}}var bT=f(()=>{"use strict";Xt();te();pr();Ln()});function so(e){let t=e??{};return t.prNumber!==void 0&&t.prNumber!==null?{kind:"prPatch",prNumber:t.prNumber,...Array.isArray(t.files)?{files:t.files}:{}}:typeof t.baseRef=="string"&&typeof t.headRef=="string"&&typeof t.path=="string"?{kind:"directFile",baseRef:t.baseRef,headRef:t.headRef,path:t.path}:{kind:"neither"}}var ul=f(()=>{"use strict"});import dl from"node:path";function RT(e){let n=e.structuredContent?.results?.[0];if(!n)return{};let r="data"in n?n.data:n,o=r?.files?.[0]??r?.results?.[0]??r??{},i=o.content;return{content:typeof i=="string"?i:void 0,status:n.status,error:o.error??r?.error??n.error}}async function PT(e){let t=bt(e),{owner:n,repo:r}=An(e.from),o=so(t);if(o.kind==="prPatch"){let i=await we("ghHistoryResearch",{...n?{owner:n}:{},...r?{repo:r}:{},content:{patches:{mode:"all"}},...t});return dr(i,"diff","ghHistoryResearch",e.from??{kind:"github"})}return o.kind==="directFile"?e.from?.kind==="local"||e.from?.kind==="materialized"?RN(e,{baseRef:o.baseRef,headRef:o.headRef,path:o.path}):SN(e,n,r,{baseRef:o.baseRef,headRef:o.headRef,path:o.path}):{results:[],diagnostics:[C("invalidQuery",'target:"diff" needs either {prNumber} (PR patch diff) or {baseRef,headRef,path} (direct file diff between two refs).',{backend:"ghHistoryResearch",repair:{message:"Add params.prNumber for a PR patch, or params.baseRef + params.headRef + params.path for a direct file diff."}})],provenance:[]}}async function RN(e,t){let n=e.from,r=n?.kind==="local"?n.path:n?.kind==="materialized"?n.localPath:void 0;if(!r)return{results:[],diagnostics:[C("invalidQuery","Local direct file diff needs from.path.",{backend:"localGetFileContent"})],provenance:[]};let o=p=>({results:[],diagnostics:[C("invalidQuery",p,{backend:"git"})],provenance:[{backend:"git",source:e.from}]}),i=Rs(r)?r:dl.dirname(r),s=dl.isAbsolute(t.path)?dl.relative(i,t.path):t.path;if(!s||s.startsWith("..")||s.startsWith("-"))return o(`params.path must resolve inside from.path for a local ref diff (got "${t.path}").`);if(!ST.test(t.baseRef)||!ST.test(t.headRef))return o("baseRef/headRef must be plain git revisions (branch, tag, sha, HEAD~N).");let a=`./${s.split(dl.sep).join("/")}`,c=p=>Kn("git",["-C",i,"show",`${p}:${a}`],{timeout:15e3}),[l,u]=await Promise.all([c(t.baseRef),c(t.headRef)]);if(!l.success||!u.success){let p=l.success?u:l,h=l.success?t.headRef:t.baseRef;return o(`git show ${h}:${a} failed: ${p.stderr.trim().split(`
44
- `)[0]||p.error?.message||`exit ${p.exitCode}`}. from.path must be inside a git repository and the path must exist at both refs.`)}let d=ef(l.stdout,u.stdout);return{results:[{kind:"record",recordType:"diff",id:`${t.baseRef}..${t.headRef}:${s}`,...e.from?{source:e.from}:{},data:{path:s,baseRef:t.baseRef,headRef:t.headRef,additions:d.additions,deletions:d.deletions,patch:d.patch,unchanged:d.unchanged}}],diagnostics:d.additions===0&&d.deletions===0?[C("zeroMatches",`${s} is identical at ${t.baseRef} and ${t.headRef}.`,{backend:"git",severity:"info",blocksAnswer:!1})]:[],provenance:[{backend:"git",source:e.from}]}}async function SN(e,t,n,r){if(!t||!n)return{results:[],diagnostics:[C("invalidQuery","Direct file diff needs a concrete owner/repo.",{backend:"ghGetFileContent"})],provenance:[]};let o=m=>we("ghGetFileContent",{owner:t,repo:n,path:r.path,branch:m,fullContent:!0,minify:"none"}),[i,s]=await Promise.all([o(r.baseRef),o(r.headRef)]),a=RT(i),c=RT(s),l=[{label:"base",ref:r.baseRef,...a},{label:"head",ref:r.headRef,...c}].find(m=>m.status==="error"||typeof m.content!="string");if(l){let m=cl(l.error,`Could not read ${l.label} ref "${l.ref}" for ${r.path}.`);return{results:[],diagnostics:[C("invalidQuery",m,{backend:"ghGetFileContent"})],provenance:[{backend:"ghGetFileContent",source:e.from}]}}let u=ef(a.content??"",c.content??"");return{results:[{kind:"record",recordType:"diff",id:r.path,...e.from?{source:e.from}:{},data:{path:r.path,baseRef:r.baseRef,headRef:r.headRef,additions:u.additions,deletions:u.deletions,patch:u.patch,unchanged:u.unchanged}}],diagnostics:u.additions===0&&u.deletions===0?[C("zeroMatches","Files are identical at both refs.",{backend:"ghGetFileContent",severity:"info",blocksAnswer:!1})]:[],provenance:[{backend:"ghGetFileContent",source:e.from}]}}function ef(e,t){let n=e===""?[]:e.split(`
45
- `),r=t===""?[]:t.split(`
46
- `),o=n.length,i=r.length,s=Array.from({length:o+1},()=>new Array(i+1).fill(0));for(let p=o-1;p>=0;p--)for(let h=i-1;h>=0;h--)s[p][h]=n[p]===r[h]?s[p+1][h+1]+1:Math.max(s[p+1][h],s[p][h+1]);let a=[],c=0,l=0,u=0,d=0,m=0;for(;d<o&&m<i;)n[d]===r[m]?(a.push(` ${n[d]}`),u++,d++,m++):s[d+1][m]>=s[d][m+1]?(a.push(`- ${n[d]}`),l++,d++):(a.push(`+ ${r[m]}`),c++,m++);for(;d<o;)a.push(`- ${n[d++]}`),l++;for(;m<i;)a.push(`+ ${r[m++]}`),c++;return{additions:c,deletions:l,unchanged:u,patch:a.join(`
47
- `)}}var ST,CT=f(()=>{"use strict";Xt();te();ul();_a();pr();Ln();ST=/^[A-Za-z0-9][A-Za-z0-9._/@^~-]*$/});import Ge from"node:path";function PN(e,t,n){let r=t??n??".";if(!e)return r;if(Ge.isAbsolute(e))return e;if(n&&Ge.isAbsolute(n))return Ge.resolve(n,e);if(t&&Ge.isAbsolute(t)){let o=Rs(t)?t:Ge.dirname(t);return Ge.resolve(o,e)}return e}function xT(){return C("partialResult",'Zero LSP results after bounded consumer warm-up \u2014 still not proof of unused. Cross-check with a text search (target:"code") for dynamic, re-exported, or string-based usage before concluding.',{backend:"lspGetSemantics",blocksAnswer:!0})}function CN(e,t){let n=[],r=e?.lsp;r?.serverAvailable===!1&&n.push(C("lspUnavailable",r.source==="native"?"Language server was unavailable; native fallback returned partial semantic data.":"Language server was unavailable; semantic proof is incomplete.",{backend:"lspGetSemantics"}));let o=e?.payload;o?.kind==="empty"?o.category==="symbolNotFound"||o.category==="anchorFailed"?n.push(C("symbolNotFound",`${o.reason??"Symbol anchor resolution failed."} Refresh the lineHint from a search/AST anchor and retry.`,{backend:"lspGetSemantics"})):(o.category==="noReferences"||o.category==="noCalls")&&n.push(xT()):(o?.kind==="references"&&o.totalReferences===0||o?.kind==="callers"&&o.incomingCalls===0||o?.kind==="callees"&&o.outgoingCalls===0||o?.kind==="callHierarchy"&&o.incomingCalls===0&&o.outgoingCalls===0)&&n.push(xT());let i=e?.pagination;return i?.hasMore&&n.push(C("partialResult","Semantic result is paginated; follow the continuation before treating it as complete proof.",{backend:"lspGetSemantics",blocksAnswer:!0,continuation:Jm(i,t)})),n}async function wT(e){let t,n,r=[],o=[],i=bt(e),s=i.type==="workspaceSymbol",a=typeof i.uri=="string"?i.uri:void 0,c=typeof i.workspaceRoot=="string"?i.workspaceRoot:void 0;if(e.from?.kind==="local")if(s){let E=e.from.path,_=Rs(E);n=c??(_?Ge.resolve(E):void 0),t=a??(_?void 0:E)}else t=a??e.from.path;else if(e.from?.kind==="materialized"){let E=Ne(e.scope),_=E?Ge.isAbsolute(E)?E:Ge.join(e.from.localPath,E):void 0;s?(n=c??e.from.localPath,t=a??_):t=a??_??e.from.localPath}else if(e.from?.kind==="github"){let{owner:E,repo:_}=An(e.from);if(!E||!_)return o.push(C("invalidQuery","Remote semantics needs owner/repo.",{backend:"lspGetSemantics"})),{results:[],diagnostics:o,provenance:r};let w=typeof i.uri=="string"?i.uri:void 0,G=Ne(e.scope),M=w&&!Ge.isAbsolute(w)?w:G,A=await we("ghCloneRepo",{owner:E,repo:_,...e.from.ref?{branch:e.from.ref}:{},...M?{sparsePath:M}:{}}),q=kn(A).data,H=cT(A,q?.localPath);if(!H)return o.push(C("materializationFailed","Could not materialize repo for remote LSP.",{backend:"ghCloneRepo"})),{results:[],diagnostics:o,provenance:r};r.push({backend:"ghCloneRepo",source:e.from,materializedPath:H}),s?(n=c??H,w?t=Ge.isAbsolute(w)?w:Ge.join(H,w):G&&(t=Ge.isAbsolute(G)?G:Ge.join(H,G))):w?t=Ge.isAbsolute(w)?w:Ge.join(H,w):G?t=Ge.isAbsolute(G)?G:Ge.join(H,G):t=H}if(!t&&!n)return o.push(C("invalidQuery",'target:"semantics" needs a `from` anchor.',{backend:"lspGetSemantics"})),{results:[],diagnostics:o,provenance:r};let{uri:l,symbolKind:u,workspaceRoot:d,...m}=i,p=await we("lspGetSemantics",{...m,...n?{workspaceRoot:n}:{},...t?{uri:t}:{}}),{data:h,status:g}=kn(p),y=h,b=pT(y,e),S=PN(ns(y?.uri),t,n),x=TN(e,S),k=wN(xN(y),u);return{results:g==="error"?[]:vn(k,"semantics",x),...b?{pagination:b}:{},diagnostics:[...o,...Xm(p,"lspGetSemantics"),...CN(y,e)],provenance:[...r,{backend:"lspGetSemantics",source:x}]}}function xN(e){if(!e)return[];let n=(Ym(e.payload)?e.payload:void 0)?.symbols;if(Array.isArray(n)){let r=ns(e.uri);return n.map(o=>Ym(o)?{...r&&typeof o.uri!="string"?{uri:r}:{},...o}:o)}return sl(e)}function wN(e,t){if(typeof t!="string"||!t.trim())return e;let n=t.trim().toLowerCase();return e.filter(r=>{if(!r||typeof r!="object")return!1;let o=r.kind;return String(o??"").toLowerCase()===n})}function TN(e,t){return e.from?.kind==="local"?{...e.from,path:t}:e.from?.kind==="materialized"?{...e.from,localPath:t}:e.from?.kind==="github"?{kind:"materialized",localPath:t,source:e.from}:e.from??{kind:"local",path:t}}var TT=f(()=>{"use strict";Xt();te();En();bs();pr();Ln()});import{builtinModules as EN}from"node:module";var tf,ET,kT,OT,Ps=f(()=>{"use strict";tf=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],ET="package.json",kT=new Set([".claude",".context",".cursor",".git","node_modules","dist","out","coverage","target",".next",".turbo",".yarn"]),OT=new Set(EN.flatMap(e=>[e,`node:${e}`]))});import pl from"node:path";function ml(){if(Cs)return Cs;try{let e=D.getSupportedGraphFactExtensions().map(t=>(t.startsWith(".")?t:`.${t}`).toLowerCase());Cs=new Set(e.length>0?e:tf)}catch{Cs=new Set(tf)}return Cs}function vT(){if(xs)return xs;try{let e=JSON.parse(D.getGraphFactCapabilities());xs=Array.isArray(e)?e.filter(kN):[]}catch{xs=[]}return xs}function kN(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.extension=="string"&&typeof t.language=="string"&&Array.isArray(t.factFamilies)}function nf(e,t){let n={};for(let r of e){let o=t(r)||"unknown";n[o]=(n[o]??0)+1}return n}function fl(e,t,n){return hl(pl.resolve(e,t),n)}function hl(e,t){let n=ml(),r=[e];for(let o of n)r.push(`${e}${o}`);for(let o of n)r.push(pl.join(e,`index${o}`));return r.find(o=>t.has(o))}function ws(e){return e.startsWith("./")||e.startsWith("../")}function AT(e){if(e.startsWith("@")){let[t,n]=e.split("/");return t&&n?`${t}/${n}`:void 0}return e.split("/")[0]}function LT(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function rf(e){return typeof e=="string"&&e.trim()?e:void 0}function gl(e){return typeof e=="string"&&e.length>0}function _T(e){return typeof e=="string"}function FT(e){return[...new Set(e)]}function Ht(e,t){return pl.relative(e,t)||pl.basename(t)}function IT(e){return/\b(function|class|const|let|var|type|interface|enum)\b/.exec(e)?.[1]??"export"}function MT(e,t){return!!(e===t||e.endsWith(`.${t}`)||e.endsWith(`::${t}`))}var Cs,xs,Ts=f(()=>{"use strict";Ee();Ps()});import en from"node:path";import{readFile as ON,readdir as vN}from"node:fs/promises";async function DT(e,t){let n=[];async function r(o){if(n.length>=t)return;let i=await vN(o,{withFileTypes:!0});for(let s of i){if(n.length>=t)return;if(s.isDirectory()){if(kT.has(s.name))continue;await r(en.join(o,s.name));continue}s.isFile()&&n.push(en.join(o,s.name))}}return await r(e),n}async function NT(e){return(await Promise.all(e.map(async n=>AN(n)))).filter(n=>n!==null)}async function AN(e){let t=await LN(e);if(!t)return null;let n=en.dirname(e),r=new Map;for(let o of["dependencies","devDependencies","peerDependencies","optionalDependencies"]){let i=LT(t[o]);if(i)for(let s of Object.keys(i))r.set(s,[...r.get(s)??[],o])}return{path:e,dir:n,name:rf(t.name),deps:r,entrypoints:_N(n,t)}}async function LN(e){try{let t=JSON.parse(await ON(e,"utf8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function _N(e,t){let n=new Set;for(let o of["main","module","types","typings"]){let i=rf(t[o]);i&&n.add(en.resolve(e,i))}let r=t.bin;if(typeof r=="string"&&n.add(en.resolve(e,r)),r&&typeof r=="object"&&!Array.isArray(r))for(let o of Object.values(r))typeof o=="string"&&n.add(en.resolve(e,o));GT(e,t.exports,n);for(let o of["src/index.ts","src/index.tsx","src/index.js","index.ts","index.js","src/lib.rs","src/main.rs","main.rs","__init__.py","main.py","src/main.py","main.go","cmd/main.go","src/main/java/Main.java"])n.add(en.resolve(e,o));return[...n]}function GT(e,t,n){if(typeof t=="string"){n.add(en.resolve(e,t));return}if(!(!t||typeof t!="object"||Array.isArray(t)))for(let r of Object.values(t))GT(e,r,n)}function HT(e,t,n,r){let o=new Map,i=new Map;for(let a of n){let c=FN(a.path,t);if(!c)continue;let l=o.get(c.path)??new Set;o.set(c.path,l);for(let u of a.externalPackages){l.add(u);let d=i.get(`${c.path}\0${u}`)??new Set;d.add(a.rel),i.set(`${c.path}\0${u}`,d)}}let s=[];for(let a of t){let c=o.get(a.path)??new Set;for(let l of c)r.has(l)||a.deps.has(l)||s.push({kind:"unlistedDependency",packageName:l,manifest:Ht(e,a.path),usedBy:[...i.get(`${a.path}\0${l}`)??[]],declaredIn:[],verdict:"unlisted-dependency"});for(let[l,u]of a.deps)u.length>1&&s.push({kind:"duplicateDependency",packageName:l,manifest:Ht(e,a.path),usedBy:[...i.get(`${a.path}\0${l}`)??[]],declaredIn:u,verdict:"duplicate-dependency"}),!c.has(l)&&!r.has(l)&&s.push({kind:"unusedDependency",packageName:l,manifest:Ht(e,a.path),usedBy:[],declaredIn:u,verdict:"candidate-unused-dependency"})}return s}function FN(e,t){return t.filter(r=>e.startsWith(`${r.dir}${en.sep}`)).sort((r,o)=>o.dir.length-r.dir.length)[0]}var QT=f(()=>{"use strict";Ps();Ts()});import ao from"node:path";import{readFile as IN}from"node:fs/promises";async function jT(e,t){let n=ml(),r=t.filter(i=>n.has(ao.extname(i).toLowerCase()));return await Promise.all(r.map(async i=>{let s=await IN(i,"utf8").catch(()=>""),a=ao.extname(i).toLowerCase(),c=MN(s,i,Ht(e,i)),l=FT(c?c.imports.map(u=>u.specifier):DN(s));return{path:i,rel:Ht(e,i),extension:a,language:c?.language??a.slice(1),imports:l,externalPackages:l.filter(u=>!ws(u)).map(AT).filter(gl).filter(u=>!OT.has(u)),...c?{graphFacts:c}:{}}}))}function MN(e,t,n){try{let r=D.extractGraphFacts(e,t);if(!r)return;let o=JSON.parse(r);return o.kind!=="graphFacts"||o.source!=="native-ast"||!Array.isArray(o.declarations)||!Array.isArray(o.imports)||!Array.isArray(o.exports)||!Array.isArray(o.calls)||!Array.isArray(o.edges)?void 0:{file:n,source:o.source,language:o.language??ao.extname(t).slice(1),declarations:o.declarations.map(i=>({name:i.name,kind:i.kind,line:i.line,exported:i.exported,...i.parent?{parent:i.parent}:{}})),imports:o.imports.map(i=>({specifier:i.specifier,line:i.line,importKind:i.importKind,...i.localName?{localName:i.localName}:{},...i.importedName?{importedName:i.importedName}:{}})),exports:o.exports.map(i=>({name:i.name,line:i.line,exportKind:i.exportKind,...i.localName?{localName:i.localName}:{},...i.source?{source:i.source}:{}})),calls:o.calls.map(i=>({caller:i.caller,callee:i.callee,line:i.line,kind:i.kind})),edges:o.edges.map(i=>({from:i.from,to:i.to,relation:i.relation,source:i.source,line:i.line})),diagnostics:Array.isArray(o.diagnostics)?o.diagnostics.filter(_T):[]}}catch{return}}function of(e,t,n){let r=n.length>0?n.map(l=>l.extension).sort():[...ml()].map(l=>l.slice(1)).sort(),o=[...new Set(n.flatMap(l=>l.factFamilies))].sort(),i=nf(e,l=>l.language),s=nf(t,l=>l.language),a=new Set(t.map(l=>l.file)),c=new Map;for(let l of e)a.has(l.rel)||c.set(l.extension,(c.get(l.extension)??0)+1);return{graphFactExtensions:r,capabilityCount:n.length,factFamilies:o,sourceFilesByLanguage:i,graphFilesByLanguage:s,missingGraphFacts:[...c.entries()].sort(([l],[u])=>l.localeCompare(u)).map(([l,u])=>({extension:l.startsWith(".")?l.slice(1):l,files:u,reason:"extension entered the source universe, but native graph facts were unavailable or parser output was empty"}))}}function DN(e){let t=[],n=[/\bimport\s+(?:type\s+)?(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/g,/\bexport\s+(?:type\s+)?[^'"]*?\s+from\s+['"]([^'"]+)['"]/g,/\bimport\s*\(\s*['"]([^'"]+)['"]\s*\)/g,/\brequire\s*\(\s*['"]([^'"]+)['"]\s*\)/g];for(let r of n)for(let o of e.matchAll(r))o[1]&&t.push(o[1]);return t}function BT(e){let t=new Set(e.map(o=>o.path)),n=new Map(e.map(o=>[o.path,ao.dirname(o.path)])),r=new Map;for(let o of e){let i=[],s=n.get(o.path)??ao.dirname(o.path);for(let a of o.imports){if(!ws(a))continue;let c=fl(s,a,t);c&&i.push(c)}r.set(o.path,i)}return r}function zT(e,t,n){let r=new Set(n.map(i=>i.path)),o=new Set;for(let i of t)for(let s of i.entrypoints){let a=hl(s,r);a&&o.add(a)}for(let i of["src/index.ts","src/index.tsx","src/index.js","index.ts","index.js","src/lib.rs","src/main.rs","lib.rs","main.rs","mod.rs"]){let s=hl(ao.resolve(e,i),r);s&&o.add(s)}return[...o]}function UT(e,t){let n=new Set,r=[...e];for(;r.length>0;){let o=r.pop();if(!(!o||n.has(o))){n.add(o);for(let i of t.get(o)??[])r.push(i)}}return n}var $T=f(()=>{"use strict";Ee();Ps();Ts()});import NN from"node:path";import{readFile as qT}from"node:fs/promises";async function WT(e){return(await Promise.all(e.map(async n=>{let r=GN(n);if(r.length>0)return r;let o=await qT(n.path,"utf8").catch(()=>"");return HN(n.rel,o)}))).flat()}function GN(e){let t=e.graphFacts;return t?t.declarations.filter(n=>n.exported).map(n=>({symbol:n.name,kind:n.kind,file:e.rel,line:n.line,evidenceSource:"ast"})):[]}function HN(e,t){let n=[],r=t.split(/\r?\n/);for(let o=0;o<r.length;o++){let i=r[o]??"",s=/\bexport\s+(?:async\s+)?(?:function|class|const|let|var|type|interface|enum)\s+([A-Za-z_$][\w$]*)/.exec(i);s&&n.push({symbol:s[1],kind:IT(i),file:e,line:o+1,evidenceSource:"regex"});let a=/\bexport\s*\{([^}]+)\}/.exec(i);if(a)for(let c of a[1].split(",")){let l=c.trim().split(/\s+as\s+/)[0]?.trim();l&&/^[A-Za-z_$][\w$]*$/.test(l)&&n.push({symbol:l,kind:"export",file:e,line:o+1,evidenceSource:"regex"})}}return n}function VT(e,t,n){let r=new Map(t.map(a=>[a.rel,a])),o=new Map(t.map(a=>[a.path,a])),i=new Set(t.map(a=>a.path)),s=QN(t);return e.map(a=>{let c=r.get(a.file),l=jN(a,t,c,s,i,o),u=l.length>0?"ast":"ripgrep",d=l.length>0?l:t.filter(g=>g.rel!==a.file&&BN(g.path,a.symbol)).map(g=>g.rel),m=d.filter(g=>{let y=r.get(g);return y?n.has(y.path):!1}),p=c?n.has(c.path):!1,h=m.length>0?"reachable":d.length>0?"transitive-dead":p?"candidate-unused-export":"unused-export";return{symbol:a.symbol,kind:a.kind,file:a.file,line:a.line,evidenceSource:a.evidenceSource,retentionSource:u,directRefs:d.length,externalRefs:m.length,retainedBy:d,verdict:h}})}function QN(e){let t=new Map;for(let n of e){let r=n.graphFacts;if(r){for(let o of r.declarations){if(!o.exported)continue;let i=t.get(o.name)??new Set;i.add(n.path),t.set(o.name,i)}for(let o of r.exports){let i=t.get(o.name)??new Set;i.add(n.path),t.set(o.name,i)}}}return t}function jN(e,t,n,r,o,i){let s=r.get(e.symbol)??(n?new Set([n.path]):new Set),a=new Set;for(let c of t){if(c.rel===e.file)continue;let l=c.graphFacts;if(l){for(let u of l.imports){let d=u.importedName&&u.importedName!=="default"?u.importedName:void 0,m=u.localName;if(!(d===e.symbol||m===e.symbol)||!ws(u.specifier))continue;let h=fl(NN.dirname(c.path),u.specifier,o);if(h&&s.has(h)){a.add(c.rel);break}}if(!a.has(c.rel)){for(let u of l.calls)if(MT(u.callee,e.symbol)){a.add(c.rel);break}}}}return[...a].sort()}function BN(e,t){return sf.get(e)?.has(t)??!1}async function KT(e){sf.clear(),await Promise.all(e.map(async t=>{let n=await qT(t.path,"utf8").catch(()=>"");sf.set(t.path,new Set(n.match(/[A-Za-z_$][\w$]*/g)??[]))}))}var sf,YT=f(()=>{"use strict";Ts();sf=new Map});import zN from"node:path";async function yl(e){let t=zN.resolve(e.root),n=e.mode??"analyze",r=e.goal?.trim()||"Analyze this repository.",o=UN(r,e.intent,e.facets),i=$N(o,e.facets),s=qN(o,i),a=vT();if(n==="plan")return WN({root:t,goal:r,intent:o,facets:i,mode:n,flow:s,graphCapabilities:of([],[],a)});let c=await DT(t,e.maxFiles??5e3),l=await NT(c.filter(w=>w.endsWith(ET))),u=await jT(t,c),d=u.map(w=>w.graphFacts).filter(w=>w!==void 0),m=of(u,d,a);await KT(u);let p=new Set(l.map(w=>w.name).filter(gl)),h=BT(u),g=zT(t,l,u),y=UT(g,h),b=u.filter(w=>!y.has(w.path)).map(w=>({kind:"unusedFile",file:w.rel,retainedBy:[],verdict:"unused-file"})),S=HT(t,l,u,p),x=await WT(u),k=VT(x,u,y),E=k.filter(w=>w.verdict==="candidate-unused-export"||w.verdict==="unused-export").length,_=k.filter(w=>w.verdict==="transitive-dead").length;return{kind:"researchFlow",goal:r,intent:o,facets:i,mode:n,root:t,flow:s,summary:{manifests:l.length,sourceFiles:u.length,entrypoints:g.length,reachableFiles:y.size,unusedFiles:b.length,unlistedDependencies:S.filter(w=>w.kind==="unlistedDependency").length,unusedDependencies:S.filter(w=>w.kind==="unusedDependency").length,duplicateDependencies:S.filter(w=>w.kind==="duplicateDependency").length,exportedSymbols:k.length,candidateUnusedExports:E,transitiveDeadExports:_,nativeGraphFiles:d.length,nativeGraphDeclarations:d.reduce((w,G)=>w+G.declarations.length,0),nativeGraphCalls:d.reduce((w,G)=>w+G.calls.length,0)},manifests:l.map(w=>({manifest:Ht(t,w.path),...w.name?{name:w.name}:{},entrypoints:w.entrypoints.map(G=>Ht(t,G)),dependencyCount:[...w.deps.keys()].length})),files:b,dependencies:S,symbols:k,graphFacts:d,graphCapabilities:m,caveats:["Analyze uses native AST graph facts for inventory and preferred cross-file retention (named imports / call callees). Lexical token scan is fallback only when AST finds no retainers.",'Graph facts are syntax inventory, not semantic identity. Upgrade candidates with target:graph proof:"lsp" (or lspGetSemantics references/callers) before destructive cleanup.',"Dynamic imports, framework entrypoints, generated files, test-only retention, and package-manager-specific workspace rules may require project-specific refinement."]}}function UN(e,t,n){let r=`${t??""} ${n?.join(" ")??""} ${e}`.toLowerCase();return/dead|unused|reachab|entry\s*point|transitive/.test(r)?"reachability":/dep|package|manifest|unlisted|duplicate/.test(r)?"dependencies":/symbol|export|reference|lsp|ast/.test(r)?"symbols":"general"}function $N(e,t){if(t&&t.length>0)return[...new Set(t)];switch(e){case"reachability":return["entrypoints","files","symbols","dependencies"];case"dependencies":return["manifests","dependencies","imports"];case"symbols":return["symbols","references","ast","lsp"];case"general":return["structure","symbols","dependencies"]}}function qN(e,t){let n=[{id:"orient",purpose:"Discover manifests, source files, and analysis boundaries.",tools:["localFindFiles","localViewStructure"],produces:["fileUniverse","manifestSet"],evidence:"proof"},{id:"manifest-graph",purpose:"Extract package entrypoints, declared dependencies, workspace package names, and script hints.",tools:["package.json parser"],produces:["entrypoints","declaredDependencies","workspacePackages"],evidence:"heuristic"}];return(e==="reachability"||t.includes("symbols"))&&n.push({id:"symbol-inventory",purpose:"Enumerate exports and declaration anchors for symbol-level questions.",tools:["extractGraphFacts","export regex fallback"],produces:["symbols","lineHints"],evidence:"heuristic"},{id:"reference-scan",purpose:"Candidate cross-file retention from native AST imports/calls (preferred) with lexical token fallback. Upgrade via target:graph proof:lsp \u2014 analyze does not run LSP.",tools:["extractGraphFacts","token scan fallback"],produces:["directRefs","externalRefs","retainedBy","transitiveDead"],evidence:"heuristic"}),(e==="dependencies"||t.includes("dependencies"))&&n.push({id:"dependency-audit",purpose:"Compare import specifiers with package manifests to find unlisted, unused, and duplicate dependencies.",tools:["package.json parser","import graph"],produces:["unlistedDependencies","unusedDependencies","duplicateDependencies"],evidence:"heuristic"}),n}function WN(e){return{kind:"researchFlow",goal:e.goal,intent:e.intent,facets:e.facets,mode:e.mode,root:e.root,flow:e.flow,summary:{manifests:0,sourceFiles:0,entrypoints:0,reachableFiles:0,unusedFiles:0,unlistedDependencies:0,unusedDependencies:0,duplicateDependencies:0,exportedSymbols:0,candidateUnusedExports:0,transitiveDeadExports:0,nativeGraphFiles:0,nativeGraphDeclarations:0,nativeGraphCalls:0},manifests:[],files:[],dependencies:[],symbols:[],graphFacts:[],graphCapabilities:e.graphCapabilities,caveats:["Planning mode returned the research flow without scanning files."]}}var af=f(()=>{"use strict";QT();$T();YT();Ps();Ts()});async function XT(e){let t=bt(e),n=e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0;if(!n)return{results:[],diagnostics:[C("requiresMaterialization",'target:"research" needs a complete local file universe. Use a local/materialized source, or materialize a bounded GitHub corpus first.',{backend:"smartOqlResearch",repair:{message:'Run target:"materialize" for a bounded GitHub repo/subtree, then run target:"research" against the returned localPath.'}})],provenance:[]};let r=Array.isArray(t.facets)?t.facets.filter(h=>typeof h=="string"):void 0,o=ll(t.mode);if(o==="prove"&&typeof t.intent!="string")return{results:[],diagnostics:[C("invalidQuery",'target:"research" mode:"prove" requires params.intent so the proof lane is deterministic. Use intent:"reachability"|"dependencies"|"symbols"|"general", then follow packet next.semantic/next.fetch continuations for missing proof.',{backend:"smartOqlResearch",queryPath:"params.intent",repair:{message:'Add params.intent. Example: params:{ mode:"prove", intent:"reachability", facets:["symbols","files","relations"] }.'}})],provenance:[{backend:"smartOqlResearch",source:e.from}]};let i;try{i=await yl({root:n,goal:typeof t.goal=="string"?t.goal:void 0,intent:typeof t.intent=="string"?t.intent:void 0,facets:r,mode:o,maxFiles:typeof t.maxFiles=="number"?t.maxFiles:void 0})}catch(h){return{results:[],diagnostics:[C("invalidQuery",h instanceof Error?h.message:"Could not analyze the requested research root.",{backend:"smartOqlResearch"})],provenance:[{backend:"smartOqlResearch",source:e.from}]}}let{packets:s,graphSummary:a}=i.mode==="plan"?{packets:[],graphSummary:void 0}:ms(i),c=[...i.caveats];t.mode==="prove"&&c.push(`mode:"prove" requested on target:"research": packets are candidate-grade unless LSP proof is attached. Native AST facts are included where available, but LSP reference proof is not run here. Use target:"graph" with proof:"lsp" or follow each packet's next.semantic.`);let l=a?ur(e,s.length):void 0,u=l?s.slice(l.packetsStart,l.packetsEnd):[];l&&s.length>0&&l.packetsStart>=s.length&&c.push(`Packet page ${l.pagination.currentPage} is outside the available packet range (${l.pagination.totalPages} page(s)).`);let d=e.view==="detailed"?uT(e,i):{fields:{}},m={kind:i.kind,goal:i.goal,intent:i.intent,facets:i.facets,mode:i.mode,root:i.root,flow:i.flow,summary:i.summary,graphCapabilities:i.graphCapabilities,nativeGraphSummary:gs(i.graphFacts),caveats:c,...a?{graphSummary:a,packetPage:l?.pagination,packets:u}:{},...d.fields},p=dT(l?.pagination,d.pagination);return{results:vn([m],"research",e.from),...p?{pagination:p}:{},diagnostics:[],provenance:[{backend:"smartOqlResearch",source:e.from}]}}var JT=f(()=>{"use strict";te();af();rl();ys();pr();bs();Ln()});import bl from"node:path";function lf(e,t){return e==="plan"||t.proof==="none"?!1:t.proof==="lsp"||e==="prove"}function eE(e,t){if(typeof t.proofLimit=="number")return Math.min(25,t.proofLimit);let n=e.itemsPerPage??e.limit??5;return Math.max(1,Math.min(5,n))}async function tE(e,t,n,r,o){let i=n.filter(l=>fs(l,r)),s=ur(t,i.length),a=i.slice(s.packetsStart,s.packetsEnd).filter(l=>l.subject.kind==="symbol").slice(0,o),c=[];for(let l of a){let u=await KN(e,l);if(l.proof={...l.proof??{},lsp:u},u.status==="unavailable"||u.status==="error"){c.push(C(u.status==="unavailable"?"lspUnavailable":"partialResult",u.message??"LSP proof escalation did not complete.",{backend:"lspGetSemantics",severity:"warning"}));continue}if(typeof u.totalReferences!="number"){c.push(C("partialResult","LSP proof escalation returned without a numeric reference count.",{backend:"lspGetSemantics",blocksAnswer:!0}));continue}l.missingProof=l.missingProof.filter(d=>d.kind!=="lsp-unavailable"),VN(l,u),u.paginationOpen&&(l.missingProof.push({kind:"pagination-open",severity:"high",location:l.subject}),c.push(C("partialResult","LSP proof result is paginated; follow the semantic continuation before deletion.",{backend:"lspGetSemantics",blocksAnswer:!0}))),u.totalReferences===0?(l.proofStatus="confirmed-by-lsp",l.risk={deleteRisk:l.verdict==="reachable"?"high":"medium",reason:"LSP references found zero non-declaration references for this symbol. Still verify dynamic/framework retention before deleting."}):typeof u.totalReferences=="number"&&(l.proofStatus=l.verdict==="reachable"?"confirmed-by-lsp":"conflicting-evidence",l.risk={deleteRisk:"high",reason:"LSP found non-declaration references. Inspect proof.lsp.files and next.fetch before deleting."})}return c}function VN(e,t){if(t.status!=="ok"||!t.totalReferences||t.files.length===0)return;let n=new Set(e.retainedBy.map(r=>r.id));for(let[r,o]of t.files.entries()){let i={id:`file:${o}`,kind:"file",uri:o},s={id:`${e.subject.id}:lsp-ref:${r}`,from:i,to:e.subject,relation:"references",source:"lsp",confidence:"exact",flags:o===e.subject.uri?["same-file"]:["external"]};n.has(s.id)||(e.retainedBy.push(s),n.add(s.id))}}async function KN(e,t){let n=t.subject.name,r=t.subject.range?.start.line;if(!n||typeof r!="number")return{status:"error",files:[],paginationOpen:!1,message:"Symbol packet has no name or line hint for LSP proof."};let o=bl.isAbsolute(t.subject.uri)?t.subject.uri:bl.resolve(e,t.subject.uri);try{let i=await we("lspGetSemantics",{type:"references",uri:o,symbolName:n,lineHint:r,includeDeclaration:!1,groupByFile:!0,itemsPerPage:50}),s=YN(i);if(s)return{status:s.code==="localToolsDisabled"?"unavailable":"error",files:[],paginationOpen:!1,message:s.message};let{data:a,status:c}=kn(i);if(c==="error")return{status:"error",files:[],paginationOpen:!1,message:ns(a?.error)??"lspGetSemantics returned error."};let l=a?.lsp;if(l?.serverAvailable===!1)return{status:"unavailable",files:[],paginationOpen:!1,message:l.source==="native"?"Language server unavailable; native fallback cannot prove cross-file references.":"Language server unavailable; reference proof is incomplete."};let u=a?.payload&&typeof a.payload=="object"?a.payload:void 0,d=a?.pagination,m=Zr(a?.totalReferences)??Zr(u?.totalReferences)??Zr(a?.referenceCount)??Zr(u?.referenceCount)??Zr(d?.totalItems)??ZT(u)??ZT(a);return{status:"ok",...typeof m=="number"?{totalReferences:m}:{},files:XN(a,e),paginationOpen:d?.hasMore===!0}}catch(i){return{status:"error",files:[],paginationOpen:!1,message:i instanceof Error?i.message:"Could not run LSP proof."}}}function YN(e){let t=e.structuredContent;if(!t||typeof t!="object")return;let n=t;if(n.status!=="error")return;let r=n.error&&typeof n.error=="object"?n.error:void 0;return{...typeof r?.code=="string"?{code:r.code}:{},message:typeof r?.message=="string"&&r.message||typeof n.code=="string"&&n.code||"Direct tool call failed."}}function ZT(e){if(e)for(let t of["references","locations","results","byFile"]){let n=e[t];if(Array.isArray(n))return t!=="byFile"?n.length:n.reduce((r,o)=>{if(!o||typeof o!="object")return r+1;let i=o.count;return r+(typeof i=="number"?i:1)},0)}}function XN(e,t){let n=new Set;return cf(e,n,t),[...n].slice(0,25)}function cf(e,t,n){if(t.size>=25||e===null||e===void 0)return;if(Array.isArray(e)){for(let o of e)cf(o,t,n);return}if(typeof e!="object")return;let r=e;for(let o of["uri","file","path"]){let i=r[o];typeof i=="string"&&JN(i)&&t.add(bl.isAbsolute(i)?bl.relative(n,i):i)}for(let o of["references","locations","byFile","results","files","groups","items"])cf(r[o],t,n)}function JN(e){return e.includes("/")||e.includes("\\")||/\.[cm]?[jt]sx?$/.test(e)}var nE=f(()=>{"use strict";Xt();te();ys()});async function rE(e){let t=bt(e),n=e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0;if(!n)return{results:[],diagnostics:[C("requiresMaterialization",'target:"graph" needs a complete local file universe. Use a local/materialized source, or materialize a bounded GitHub corpus first.',{backend:"smartOqlGraph",repair:{message:'Run target:"materialize" for a bounded GitHub repo/subtree, then run target:"graph" against the returned localPath.'}})],provenance:[]};let r=Array.isArray(t.facets)?t.facets.filter(h=>typeof h=="string"):void 0,o=ll(t.mode);if(o==="prove"&&typeof t.intent!="string")return{results:[],diagnostics:[C("invalidQuery",'target:"graph" mode:"prove" requires params.intent so the proof lane is deterministic. Use intent:"reachability"|"dependencies"|"symbols"|"general", then follow graph packet next.semantic/next.fetch continuations for missing proof.',{backend:"smartOqlGraph",queryPath:"params.intent",repair:{message:'Add params.intent. Example: params:{ mode:"prove", intent:"reachability", direction:"incoming" }.'}})],provenance:[{backend:"smartOqlGraph",source:e.from}]};let i;try{i=await yl({root:n,goal:typeof t.goal=="string"?t.goal:void 0,intent:typeof t.intent=="string"?t.intent:void 0,facets:r,mode:o,maxFiles:typeof t.maxFiles=="number"?t.maxFiles:void 0})}catch(h){return{results:[],diagnostics:[C("invalidQuery",h instanceof Error?h.message:"Could not analyze the requested graph root.",{backend:"smartOqlGraph"})],provenance:[{backend:"smartOqlGraph",source:e.from}]}}let s=i.mode==="plan"?void 0:ms(i),a=Vm(t),c=s?.packets??[],l=lf(i.mode,t)?await tE(n,e,c,a,eE(e,t)):[],u=oT(c),d=rT(e,c,u,a,i.graphFacts,n),m=[...d.data.caveats??[],...i.caveats,...i.mode==="plan"?['mode:"plan" requested: graph packets were not built.']:[],...t.mode==="prove"?[lf(i.mode,t)?'mode:"prove" requested: LSP proof escalation ran for the current graph page only. Follow next.page and next.semantic for remaining/open proof.':'mode:"prove" requested: graph rows are candidate-grade only. Follow packet next.semantic to confirm references.']:[]],p={...d.data,goal:i.goal,intent:i.intent,facets:i.facets,mode:i.mode,root:i.root,flow:i.flow,graphCapabilities:i.graphCapabilities,nativeGraphSummary:gs(i.graphFacts),caveats:m};return{results:vn([p],"graph",e.from),pagination:d.pagination,diagnostics:l,provenance:[{backend:"smartOqlGraph",source:e.from}]}}var oE=f(()=>{"use strict";te();af();rl();ys();nE();pr();bs();Ln()});var iE,sE=f(()=>{"use strict";hT();bT();CT();TT();JT();oE();iE={repositories:mT,packages:fT,pullRequests:Zm,commits:Zm,diff:PT,semantics:wT,research:XT,graph:rE}});function aE(e){let t=[];return e.fetch?.content?.contentView==="symbols"&&ZN.has(e.target)&&t.push(C("signatureUnsupported",`A "symbols" content view is not available for target:"${e.target}" (PR/commit/diff content has no symbol skeleton); request "none" or "standard".`,{queryPath:"fetch.content.contentView",severity:"warning",blocksAnswer:!1,repair:{message:'Set fetch.content.contentView to "none" or "standard".'}})),t}var ZN,cE=f(()=>{"use strict";te();ZN=new Set(["pullRequests","commits","diff"])});function lE(e){let t={schema:Rt.schema,view:e.view??Rt.view,page:e.page??Rt.page,itemsPerPage:e.itemsPerPage??Rt.itemsPerPage,maxPlanNodes:e.controls?.budget?.maxPlanNodes??Rt.maxPlanNodes};return e.from?.kind==="github"&&(t["materialize.mode"]=e.materialize?.mode??Rt.githubMaterializeMode),e.target==="content"&&(t["fetch.content.contentView"]=e.fetch?.content?.contentView??Rt.contentView),e.target==="code"&&(t.codeContext=e.view==="detailed"?Rt.detailedCodeContext:Rt.normalCodeContext,t["search.sort"]=e.controls?.search?.sort??Rt.localSearchSort),t}var Rt,uE=f(()=>{"use strict";Rt={schema:"oql",view:"paginated",page:1,itemsPerPage:25,githubMaterializeMode:"never",textCase:"smart",regexDialectLocal:"rust",regexCase:"smart",contentView:"standard",contentCharLength:2e4,matchContentLength:500,maxPlanNodes:128,maxBooleanExpansion:64,normalCodeContext:2,detailedCodeContext:3,localSearchSort:"relevance",localRankingProfile:"auto"}});function eG(e){return e?.mode==="auto"||e?.mode==="required"}function tG(e,t){let n=e.target==="files"?mr:_n;switch(t.kind){case"text":case"regex":case"structural":return{route:"PUSHDOWN",backend:_n,exact:!0,reason:`${t.kind} evaluated locally by ${_n}`};case"field":return{route:"PUSHDOWN",backend:n,exact:!0,reason:`field predicate evaluated locally by ${n}`}}}function nG(e,t,n){let r=eG(e.materialize);if(n)return rG(e,t,r);if(e.target==="files")return t.kind==="text"||t.kind==="regex"&&t.dialect!=="pcre2"?r?{route:"ROUTE",backend:mr,exact:!0,reason:"files-containing-term routed to materialization for an exact file set"}:{route:"PUSHDOWN",backend:tn,exact:!1,reason:"files containing the term listed via provider code search (approximate)",diagnostic:{code:"providerSemanticsApproximate",message:"GitHub lists files containing a term via provider code search; materialize for an exact file set."}}:t.kind==="field"&&t.op==="="&&(t.field==="path"||t.field==="basename"||t.field==="extension")?r?{route:"ROUTE",backend:mr,exact:!0,reason:"path/name field equality routed to materialization for an exact file set"}:{route:"PUSHDOWN",backend:tn,exact:!0,reason:"path/name field equality listed via provider path search"}:r?{route:"ROUTE",backend:mr,exact:!0,reason:`${Rl(t)} over a file listing routed to materialization`}:{route:"UNSUPPORTED",backend:mr,exact:!1,reason:`GitHub cannot enumerate files by ${Rl(t)} without materialization`,diagnostic:{code:"requiresMaterialization",message:`target:"files" over GitHub cannot enumerate by ${Rl(t)} without materialization (set materialize.mode "auto"/"required" with scope.path).`}};switch(t.kind){case"text":return e.materialize?.mode==="required"?{route:"ROUTE",backend:_n,exact:!0,reason:"literal text routed to materialization because materialize.mode is required"}:t.case==="sensitive"||t.wholeWord===!0?r?{route:"ROUTE",backend:_n,exact:!0,reason:"case-sensitive / whole-word text routed to materialization for exact proof"}:{route:"PUSHDOWN",backend:tn,exact:!1,reason:"GitHub code search cannot honor case:sensitive / wholeWord (case-insensitive substring); approximate",diagnostic:{code:"providerSemanticsApproximate",message:"GitHub code search is a case-insensitive substring match and cannot honor case:sensitive or wholeWord; materialize for exact proof."}}:{route:"PUSHDOWN",backend:tn,exact:!0,reason:"literal text pushed to GitHub code search"};case"regex":return t.dialect==="pcre2"?uf(e,"PCRE2 regex",r):r?{route:"ROUTE",backend:_n,exact:!0,reason:"regex routed to bounded materialization for exact local proof"}:{route:"PUSHDOWN",backend:tn,exact:!1,reason:"regex pushed to GitHub search (provider regex is approximate)",diagnostic:{code:"providerSemanticsApproximate",message:"GitHub regex search is approximate; materialize for exact regex proof."}};case"structural":return uf(e,"structural AST",r);case"field":return t.field==="path"||t.field==="basename"||t.field==="extension"?t.op==="glob"||t.op==="regex"?r?{route:"ROUTE",backend:mr,exact:!0,reason:"path glob/regex routed to materialization for proof"}:{route:"PUSHDOWN",backend:tn,exact:!1,reason:"provider path filter is prefix-only / approximate",diagnostic:{code:"providerSemanticsApproximate",message:"GitHub path qualifiers are prefix filters; materialize to prove glob/regex."}}:{route:"PUSHDOWN",backend:tn,exact:!0,reason:"path/name predicate pushed to provider"}:uf(e,`field "${t.field}"`,r)}}function Rl(e){switch(e.kind){case"text":return"text match";case"regex":return e.dialect==="pcre2"?"PCRE2 regex":"regex match";case"structural":return"structural AST match";case"field":return`field "${e.field}"`}}function rG(e,t,n){let r=Rl(t);return n?{route:"ROUTE",backend:e.target==="files"?mr:_n,exact:!0,reason:`negated ${r} needs a complete universe; routed to bounded materialization for local proof`}:{route:"UNSUPPORTED",backend:tn,exact:!1,reason:`negated ${r} cannot be proven by the GitHub provider (no complete universe)`,diagnostic:{code:"negativeUniverseRequired",message:"Negation over a GitHub provider source needs a complete candidate universe; materialize to prove absence."}}}function uf(e,t,n){if(n)return{route:"ROUTE",backend:_n,exact:!0,reason:`${t} requires local proof; routed to bounded materialization`};let r=e.materialize?.mode;return{route:"UNSUPPORTED",backend:tn,exact:!1,reason:`${t} cannot be evaluated by the GitHub provider`,diagnostic:r==="never"?{code:"materializationNotAllowed",message:`${t} needs local proof but materialize.mode is "never".`}:{code:"requiresMaterialization",message:`${t} needs bounded materialization (set materialize.mode "auto" or "required").`}}}function dE(e,t,n=!1){return e.sourceKind==="github"?nG(e,t,n):tG(e,t)}var _n,mr,tn,pE=f(()=>{"use strict";_n="localSearchCode",mr="localFindFiles",tn="ghSearchCode"});function co(e){if(e.target==="diff"&&e.variant){let t=e.sourceKind==="materialized"?"local":e.sourceKind;return df.find(n=>n.id===`${t}.diff.${e.variant}`)}return df.find(t=>t.target===e.target&&t.sourceKinds.includes(e.sourceKind))}function pf(e){return df.find(t=>t.id===e)}function mf(e){let t=oG(e.source,e.target);if(e.target==="diff"){let n=so(e.params),r=n.kind==="prPatch"?"prPatch":n.kind==="directFile"?"directFile":void 0;if(r)return co({sourceKind:t,target:"diff",variant:r})}return co({sourceKind:t,target:e.target})}function mE(e,t){return e.backends.map(n=>({backend:n.backend,operation:n.operation,exact:n.exact,source:t}))}function fE(e){return{id:e.id,status:e.status,sourceKinds:e.sourceKinds,target:e.target,backends:e.backends}}function oG(e,t){return e?.kind?e.kind:t==="packages"?"npm":"github"}var df,hE=f(()=>{"use strict";ul();df=[{id:"github.code",target:"code",sourceKinds:["github"],status:"active",backends:[{backend:"ghSearchCode",operation:"searchCode",exact:!0}],rowKind:"code",adapterModule:"transformers/github/code.ts",adapterFunctions:["toGithubCodeSearchToolQuery"]},{id:"github.files",target:"files",sourceKinds:["github"],status:"active",backends:[{backend:"ghSearchCode",operation:"findFiles",exact:!1}],rowKind:"file",adapterModule:"adapters/github.ts",adapterFunctions:["githubFiles"]},{id:"github.content",target:"content",sourceKinds:["github"],status:"active",backends:[{backend:"ghGetFileContent",operation:"getContent",exact:!0}],rowKind:"content",adapterModule:"adapters/github.ts",adapterFunctions:["githubContent"]},{id:"github.structure",target:"structure",sourceKinds:["github"],status:"active",backends:[{backend:"ghViewRepoStructure",operation:"viewStructure",exact:!0}],rowKind:"tree",adapterModule:"adapters/github.ts",adapterFunctions:["githubStructure"]},{id:"local.code.textRegex",target:"code",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localSearchCode",operation:"searchCode",exact:!0}],rowKind:"code",adapterModule:"adapters/local.ts",adapterFunctions:["executeCode"]},{id:"local.code.structural",target:"code",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localSearchCode",operation:"searchCode",exact:!0}],rowKind:"code",adapterModule:"adapters/local.ts",adapterFunctions:["executeCode"]},{id:"local.files",target:"files",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localFindFiles",operation:"findFiles",exact:!0}],rowKind:"file",adapterModule:"adapters/local.ts",adapterFunctions:["executeFiles"]},{id:"local.content",target:"content",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localGetFileContent",operation:"getContent",exact:!0}],rowKind:"content",adapterModule:"adapters/local.ts",adapterFunctions:["executeContent"]},{id:"local.structure",target:"structure",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localViewStructure",operation:"viewStructure",exact:!0}],rowKind:"tree",adapterModule:"adapters/local.ts",adapterFunctions:["executeStructure"]},{id:"local.semantics",target:"semantics",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"lspGetSemantics",operation:"getSemantics",exact:!0}],rowKind:"record",recordType:"semantics",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeSemantics"]},{id:"github.semantics",target:"semantics",sourceKinds:["github"],status:"active",backends:[{backend:"ghCloneRepo",operation:"materialize",exact:!0},{backend:"lspGetSemantics",operation:"getSemantics",exact:!0}],rowKind:"record",recordType:"semantics",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeSemantics"]},{id:"github.repositories",target:"repositories",sourceKinds:["github"],status:"active",backends:[{backend:"ghSearchRepos",operation:"searchRepos",exact:!0}],rowKind:"record",recordType:"repository",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeRepositories"]},{id:"npm.packages",target:"packages",sourceKinds:["npm"],status:"active",backends:[{backend:"npmSearch",operation:"searchPackages",exact:!0}],rowKind:"record",recordType:"package",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executePackages"]},{id:"github.pullRequests",target:"pullRequests",sourceKinds:["github"],status:"active",backends:[{backend:"ghHistoryResearch",operation:"searchPullRequests",exact:!0}],rowKind:"record",recordType:"pullRequest",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeHistory"]},{id:"github.commits",target:"commits",sourceKinds:["github"],status:"active",backends:[{backend:"ghHistoryResearch",operation:"searchCommits",exact:!0}],rowKind:"record",recordType:"commit",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeHistory"]},{id:"github.diff.prPatch",target:"diff",sourceKinds:["github"],status:"active",backends:[{backend:"ghHistoryResearch",operation:"diff",exact:!0}],rowKind:"record",recordType:"diff",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeDiff"]},{id:"github.diff.directFile",target:"diff",sourceKinds:["github"],status:"active",backends:[{backend:"ghGetFileContent",operation:"diff",exact:!0}],rowKind:"record",recordType:"diff",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeDiff"]},{id:"local.diff.directFile",target:"diff",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localGetFileContent",operation:"diff",exact:!0}],rowKind:"record",recordType:"diff",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeDiff"]},{id:"local.research",target:"research",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"smartOqlResearch",operation:"runResearchFlow",exact:!1}],rowKind:"record",recordType:"research",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeResearch"]},{id:"local.graph",target:"graph",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"smartOqlGraph",operation:"queryRelationshipGraph",exact:!1}],rowKind:"record",recordType:"graph",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeGraph"]},{id:"github.materialize",target:"materialize",sourceKinds:["github"],status:"active",backends:[{backend:"ghCloneRepo",operation:"materialize",exact:!0}],rowKind:"record",recordType:"materialized",adapterModule:"adapters/materialize.ts",adapterFunctions:["executeMaterializeCheckpoint"]}]});function iG(e,t){return e.id??t}function Sl(e,t,n,r,o,i=!1){let s=iG(t,n);if(t.kind==="all"||t.kind==="any"){let c=t.of.map((d,m)=>Sl(e,d,`${n}.of[${m}]`,r,o,i)),l=sG(t.kind,c),u=`${t.kind} over ${c.length} children`;return r.sourceKind==="github"&&(r.target==="code"||r.target==="files")&&l!=="UNSUPPORTED"&&(r.materialize?.mode==="auto"||r.materialize?.mode==="required"?(l="ROUTE",u+=" (routed to materialization: GitHub cannot evaluate a multi-leaf boolean in one call)"):(l="UNSUPPORTED",u+=" (GitHub cannot evaluate a multi-leaf boolean; materialize for local proof)",o.diagnostics.push(C("requiresMaterialization","A multi-leaf boolean over a GitHub code source needs bounded materialization (clone then local set-algebra).",{queryPath:n,repair:{message:'Add materialize:{mode:"auto"} with scope.path, or run one query per branch.'}})))),o.nodes.push({predicateId:s,path:n,route:l,reason:u}),l}if(t.kind==="not"){let c=Sl(e,t.predicate,`${n}.predicate`,r,o,!i);return o.nodes.push({predicateId:s,path:n,route:c,reason:"not requires a complete evaluation universe to be exact"}),c}let a=dE(r,t,i);return o.nodes.push({predicateId:s,path:n,route:a.route,backend:a.backend,reason:a.reason}),a.diagnostic&&o.diagnostics.push(C(a.diagnostic.code,a.diagnostic.message,{predicateId:s,queryPath:n,backend:a.backend})),a.route!=="UNSUPPORTED"&&gE(o.backendCalls,{backend:a.backend,source:a.route==="ROUTE"?void 0:e.from,operation:aG(e.target),exact:a.exact}),a.route}function sG(e,t){return t.includes("UNSUPPORTED")&&e==="any"?"UNSUPPORTED":t.every(n=>n==="PUSHDOWN")?"PUSHDOWN":t.includes("ROUTE")?"ROUTE":t.includes("RESIDUAL")||t.includes("UNSUPPORTED")?"RESIDUAL":t[0]??"PUSHDOWN"}function aG(e){switch(e){case"code":return"searchCode";case"content":return"getContent";case"structure":return"viewStructure";case"files":return"findFiles";case"semantics":return"getSemantics";case"repositories":return"searchRepos";case"packages":return"searchPackages";case"pullRequests":return"searchPullRequests";case"commits":return"searchCommits";case"diff":return"diff";case"research":return"runResearchFlow";case"graph":return"queryRelationshipGraph";case"materialize":return"materialize"}}function gE(e,t){e.some(r=>r.backend===t.backend&&r.operation===t.operation&&r.exact===t.exact)||e.push(t)}function Pl(e,t){if(!t)return;let n=fE(t);e.transformers?.some(o=>o.id===n.id)||(e.transformers=[...e.transformers??[],n])}function Es(e,t,n){if(!t)return!1;for(let r of mE(t,n))gE(e.backendCalls,r);return!0}function yE(e,t){return ff(e,t,"files")}function ff(e,t,n,r=co({sourceKind:"materialized",target:n})){let o=co({sourceKind:"github",target:"materialize"});if(!o||!r)return!1;e.transformers=(e.transformers??[]).filter(s=>s.id!==`github.${n}`),Pl(e,o),Pl(e,r);let i=new Set(r.backends.map(s=>`${s.backend}:${s.operation}`));return e.backendCalls=e.backendCalls.filter(s=>!i.has(`${s.backend}:${s.operation}`)),Es(e,o,t),Es(e,r,void 0),!0}function Cl(e){return e?e.kind==="structural"?!0:e.kind==="all"||e.kind==="any"?e.of.some(Cl):e.kind==="not"?Cl(e.predicate):!1:!1}function bE(e){return e.target==="code"?pf(Cl(e.where)?"local.code.structural":"local.code.textRegex"):co({sourceKind:"materialized",target:e.target})}function RE(e,t){return e.target==="code"&&(t.kind==="local"||t.kind==="materialized")?pf(Cl(e.where)?"local.code.structural":"local.code.textRegex")??mf({source:t,target:e.target,params:e.params}):mf({source:t,target:e.target,params:e.params})}var SE=f(()=>{"use strict";pE();te();hE()});function PE(e){return e.kind==="not"&&e.predicate.kind==="not"?PE(e.predicate.predicate):e}function CE(e){let t=e.controls?.search?.sort;if(!t)return[];let n=e.target==="code"||e.target==="files"?Dl[e.target]:void 0;if(n)return n.includes(t)?[]:[C("lossyTransform",`controls.search.sort:"${t}" has no ${e.target}-lane equivalent and is ignored (default ordering applies). Sorts for target:"${e.target}": ${n.join("|")}.`,{queryPath:"controls.search.sort",severity:"warning",blocksAnswer:!1})];let r=e.target==="repositories"||e.target==="packages"?` Pass the sort through params.sort instead (validated by the target:"${e.target}" params).`:"";return[C("lossyTransform",`controls.search.sort:"${t}" is not applied for target:"${e.target}" \u2014 only target:"code" and target:"files" support controls.search.sort.${r}`,{queryPath:"controls.search.sort",severity:"warning",blocksAnswer:!1})]}function xE(e,t){if(e.from?.kind!=="github"||e.target!=="code"&&e.target!=="files"||!e.where||e.materialize?.mode==="required"||t.some(o=>o.route==="ROUTE"))return[];let n=PE(e.where),r=is({...e,where:n},{...e.target==="files"?{defaultMatch:"file"}:{}});return r.ok?[]:r.diagnostics}function wE(e,t){let n=e.materialize;if(!n||e.from?.kind!=="github")return;if(n.mode==="never")return{...n,required:!1,reason:'provider-only execution (materialize.mode:"never")'};let r=!!e.scope?.path||n.strategy==="file",o=n.strategy==="repo";return o&&!n.allowFullRepo?t.push(C("materializationNotAllowed",'strategy:"repo" requires allowFullRepo:true and a byte budget; repair to "subtree" with a concrete scope.path.',{queryPath:"materialize",repair:{message:'Use materialize.strategy:"subtree" with scope.path.'}})):!o&&!r&&t.push(C("materializationNotAllowed",'Bounded materialization needs scope.path (or strategy:"file"); refusing to clone an unbounded scope.',{queryPath:"materialize",repair:{message:"Add scope.path to bound the materialized subtree."}})),{...n,strategy:n.strategy??"subtree",required:n.mode==="required",reason:n.mode==="required"?"local-only proof required; must materialize before execution":"planner may materialize bounded source for local proof"}}var TE=f(()=>{"use strict";te();_m();un()});function EE(e,t){let n={nodes:[],diagnostics:[],backendCalls:[],transformers:[]},r=e.materialize,o=e.from??{kind:"github"},i={sourceKind:o.kind==="npm"?"github":o.kind,target:e.target,materialize:r},s=RE(e,o);if(Pl(n,s),e.where)Sl(e,e.where,"where",i,n),o.kind==="github"&&n.nodes.some(h=>h.route==="ROUTE")&&ff(n,o,e.target,bE(e));else if(e.target==="diff"){let h=so(e.params);h.kind==="prPatch"||h.kind==="directFile"?Es(n,s,o)||n.diagnostics.push(C("unsupportedTarget",`No transformer registered for target:"diff" lane "${h.kind}".`,{queryPath:"target",backend:"ghHistoryResearch",severity:"error"})):n.diagnostics.push(C("invalidQuery",'target:"diff" needs either {prNumber} (PR patch diff) or {baseRef,headRef,path} (direct file diff between two refs).',{queryPath:"params",backend:"ghHistoryResearch",repair:{message:"Add params.prNumber for a PR patch, or params.baseRef + params.headRef + params.path for a direct file diff."}}))}else{let h=o.kind==="github"&&e.target==="files"&&!e.where,g=r?.mode==="auto"||r?.mode==="required";!(h?g&&yE(n,o):Es(n,s,o))&&(!h||g)&&n.diagnostics.push(C("unsupportedTarget",h?'No transformer chain registered for target:"files" GitHub materialization.':`No transformer registered for target:"${e.target}" from ${o.kind}.`,{queryPath:"target",severity:"error"}))}o.kind==="github"&&e.target==="files"&&!e.where&&(r?.mode==="auto"||r?.mode==="required"||n.diagnostics.push(C("requiresMaterialization",'target:"files" over a GitHub source needs bounded materialization to enumerate files (set materialize.mode "auto"/"required" with scope.path), or use a local source.',{queryPath:"target",backend:"localFindFiles",severity:"error",repair:{message:'Add materialize:{mode:"auto"} with scope.path, or use a local `from`.'}}))),n.diagnostics.push(...xE(e,n.nodes)),n.diagnostics.push(...CE(e)),n.diagnostics.push(...aE(e));let a=wE(e,n.diagnostics),c=e.controls?.budget?.maxPlanNodes??Rt.maxPlanNodes,l=!1,u=n.nodes;u.length>c&&(l=!0,u=u.slice(0,c),n.diagnostics.push(C("planTruncated",`Explain plan truncated to ${c} nodes; execution semantics are unchanged.`)));let d=Yr(e.where);!l&&n.nodes.length!==d&&n.diagnostics.push(C("invalidQuery",`Planner invariant violated: ${n.nodes.length} routed vs ${d} predicate nodes.`));let m={input:t,normalized:e,defaults:lE(e),nodes:u,backendCalls:n.backendCalls,...n.transformers?.length?{transformers:n.transformers}:{},...a?{materialization:a}:{},budgets:e.controls?.budget,...l?{truncated:l}:{},diagnostics:n.diagnostics},p=!n.nodes.some(h=>h.route==="UNSUPPORTED")&&!n.diagnostics.some(h=>h.severity==="error"&&h.code!=="planTruncated");return{plan:m,executable:p}}var kE=f(()=>{"use strict";ul();cE();te();uE();Rm();SE();TE()});function cG(e){if(!(!e||e.from?.kind!=="github"||e.target!=="files"||e.where))return{"next.materialize":{query:{schema:"oql",target:"materialize",from:e.from,...e.scope?{scope:e.scope}:{},materialize:{mode:"required"}},why:'target:"files" over GitHub needs a local corpus to enumerate; clone a bounded path (add scope.path to narrow), then list files from the materialized checkpoint.',confidence:"heuristic"}}}function OE(e,t,n,r,o,i){let s=o&&i?lG(i):[],a=o&&i?uG(i):void 0;if(!e.executable){let c=e.plan.nodes.some(l=>l.route==="UNSUPPORTED");return o&&!c?{...n?{queryId:n}:{},...r!==void 0?{queryIndex:r}:{},results:[],diagnostics:[...e.plan.diagnostics,...s],provenance:[],evidence:{answerReady:!1,complete:!1,kind:"partial"},...t?{plan:t}:{},...a?{next:a}:{}}:Qc(e.plan.diagnostics,t,n,r,cG(i))}return{...n?{queryId:n}:{},...r!==void 0?{queryIndex:r}:{},results:[],diagnostics:[...e.plan.diagnostics,...s],provenance:[],evidence:{answerReady:!1,complete:!1,kind:"partial"},...t?{plan:t}:{},...a?{next:a}:{}}}function lG(e){if(e.target!=="research"&&e.target!=="graph")return[];let t=e.target==="research"?'Dry run only planned target:"research"; execute without --dry-run to get the summary plus paged candidate packets. Compact text shows packet subject IDs and next.graph; follow next.graph to upgrade the current page to bounded LSP proof.':'Dry run only planned target:"graph"; execute without --dry-run to get reachability packets. Use params:{mode:"prove",proof:"lsp"} or follow next.graph to run bounded LSP proof for the current page.';return[C("partialResult",t,{backend:e.target==="graph"?"smartOqlGraph":"smartOqlResearch",blocksAnswer:!1,severity:"info"})]}function uG(e){if(e.target!=="research"&&e.target!=="graph")return;let t=e.from;if(t?.kind!=="local"&&t?.kind!=="materialized")return;let n=e.params??{},r=typeof n.intent=="string"&&n.intent.length>0?n.intent:"reachability",o=Math.min(25,Math.max(1,e.itemsPerPage??10));return{"next.graph":{query:{schema:"oql",target:"graph",from:t,params:{...n,mode:"prove",proof:"lsp",intent:r,proofLimit:o},...e.page?{page:e.page}:{},...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{}},why:"Run the bounded LSP proof lane for this research/graph page.",confidence:"exact"}}}var vE=f(()=>{"use strict";te();Ji()});function AE(e,t){let n=e.select;if(!n||n.length===0)return[];let r=new Set,o=new Set,i=!1,s=[];for(let a of n){let c=a.trim();c==="next"?i=!0:c.startsWith("next.")?r.add(c):pG.has(c)?o.add(c):mG.has(c)?o.add("data"):fG.has(c)||(c.includes(".")?o.add("data"):s.push(c))}for(let a of t){let c=a;for(let l of Object.keys(c))if(!dG.has(l)){if(l==="next"){if(i)continue;let u=c.next;if(!u)continue;if(r.size===0){delete c.next;continue}for(let d of Object.keys(u))r.has(d)||delete u[d];Object.keys(u).length===0&&delete c.next;continue}o.has(l)||delete c[l]}}return s.length?[C("unknownField",`select contains unknown field(s): ${s.join(", ")}. They were ignored.`,{queryPath:"select",severity:"warning",blocksAnswer:!1})]:[]}var dG,pG,mG,fG,LE=f(()=>{"use strict";te();dG=new Set(["kind","source","recordType","id","proofGrade"]),pG=new Set(["path","line","endLine","column","snippet","matchIndices","metadata","content","contentView","range","metavars","metavarRanges","matchKind","scoreHint","proofGrade","size","modified","entryType","depth","children","data"]),mG=new Set(["manifests","files","dependencies","symbols","graphFacts","packets","nodes","edges","facts"]),fG=new Set(["pagination","diagnostics","provenance","evidence","repo","localPath"])});function ks(e){if(e.length===0)return;let t=r=>JSON.stringify(r.source??null),n=t(e[0]);if(e.every(r=>t(r)===n))for(let r of e)delete r.source}async function xl(e,t,n,r){let o=EE(e,t),s=!!e.explain||!!n.dryRun?o.plan:void 0;if(!o.executable||n.dryRun)return OE(o,s,e.id,r,n.dryRun,e);let a=await yG(e,o);Fx(e,a.results),hG(e,a),gG(a);let c=qx(e,a);Mx(e,a.results);let l=AE(e,a.results),u=Wx(a.results);return Xi({queryId:e.id,queryIndex:r,results:a.results,...a.shared?{shared:a.shared}:{},...a.pagination?{pagination:a.pagination}:{},...Object.keys(c).length?{next:c}:{},...u?{nextHints:u}:{},diagnostics:[...o.plan.diagnostics,...a.diagnostics,...l],provenance:a.provenance,executable:!0,approximate:Ax(o.plan.backendCalls),plan:s})}function hG(e,t){if(e.target==="content")return;let n=typeof e.limit=="number"&&e.limit>0;if(e.target==="code"&&(t.pagination?.totalItemsKind==="files"||t.pagination?.itemUnit==="files")&&!n)return;let r=n?e.limit:typeof e.itemsPerPage=="number"?e.itemsPerPage:void 0;if(!r||r<1||t.results.length<=r)return;let o=t.pagination?.totalItems??t.results.length,i=t.pagination?.currentPage??e.page??1;if(t.results=t.results.slice(0,r),n){let s=t.pagination?.hasMore??!0;t.pagination={...t.pagination,currentPage:i,itemsPerPage:r,totalItems:o,totalItemsCapped:!0,hasMore:s};return}t.pagination={...t.pagination,currentPage:i,itemsPerPage:t.pagination?.itemsPerPage??r,totalItems:o,totalPages:t.pagination?.totalPages??Math.max(1,Math.ceil(o/r)),hasMore:!0}}function gG(e){let t=e.shared?.repositories;if(!t||typeof t!="object"||Array.isArray(t))return;let n=new Set;for(let o of e.results){if(o.kind!=="record"||o.recordType!=="package")continue;let i=o.data.repositoryId;typeof i=="string"&&n.add(i)}if(n.size===0){delete e.shared?.repositories,e.shared&&Object.keys(e.shared).length===0&&delete e.shared;return}let r={};for(let o of n){let i=t[o];i!==void 0&&(r[o]=i)}e.shared={...e.shared,repositories:r}}async function yG(e,t){if(e.target==="materialize")return Vw(e);let n=iE[e.target];return n?n(e):e.from?.kind==="local"||e.from?.kind==="materialized"?ps(e):e.from?.kind==="github"&&e.target==="files"&&!e.where||t.plan.nodes.some(o=>o.route==="ROUTE")||t.plan.materialization?.required===!0||e.materialize?.mode==="required"?Ww(e):hw(e)}var hf=f(()=>{"use strict";gw();qm();Kw();sE();Ji();kE();km();vE();wm();Tm();LE()});async function _E(e,t,n){let r=await Promise.all(e.queries.map(async(i,s)=>{let a=await xl(i,t,n,s);return{queryId:i.id??`q${s}`,queryIndex:s,envelope:a}})),o={...e.id?{batchId:e.id}:{},mode:e.combine??"independent",children:r,diagnostics:[]};if(e.combine==="merge"){let i=bG(r);i.error?o.diagnostics.push(i.error):i.envelope&&(o.merged=i.envelope),o.merged&&ks(o.merged.results)}else for(let i of r)ks(i.envelope.results);return o}function bG(e){let t=new Set;for(let u of e)for(let d of u.envelope.results)t.add(d.kind);if(t.size>1)return{error:{code:"invalidQuery",severity:"error",message:'combine:"merge" requires compatible rows (same target/result kind); use combine:"independent".',blocksAnswer:!0,repair:{message:'Set combine:"independent" to keep per-query envelopes.'}}};let n=new Set,r=[],o=[],i=[],s={},a={},c=!1,l=!1;for(let u of e){for(let d of u.envelope.results){let m=CG(d);n.has(m)||(n.add(m),r.push(d))}o.push(...u.envelope.diagnostics),i.push(...u.envelope.provenance),RG(s,u.envelope.nextHints),SG(a,u.envelope.shared),u.envelope.evidence.kind==="candidate"&&(c=!0),PG(u.envelope)&&(l=!0)}return l&&o.push(C("partialResult",'combine:"merge" has child queries with more pages remaining; a merged batch carries no single continuation cursor \u2014 page each query with combine:"independent" to reach completeness.',{severity:"info",blocksAnswer:!1})),{envelope:Xi({results:r,...Object.keys(a).length?{shared:a}:{},...l?{pagination:{hasMore:!0}}:{},...Object.keys(s).length?{nextHints:s}:{},diagnostics:o,provenance:i,executable:e.every(u=>u.envelope.evidence.kind!=="unsupported"),approximate:c})}}function RG(e,t){if(t)for(let[n,r]of Object.entries(t)){let o=e[n];(!o||Em(o,r))&&(e[n]=r)}}function SG(e,t){if(t)for(let[n,r]of Object.entries(t)){let o=e[n];(o===void 0||JSON.stringify(o)===JSON.stringify(r))&&(e[n]=r)}}function PG(e){return!!(e.pagination?.hasMore||e.next&&Object.keys(e.next).some(t=>t.startsWith("next.page")))}function CG(e){let t=e.path??"",n=e.line??"",r=JSON.stringify(e.source??{});return`${e.kind}:${r}:${t}:${n}`}var FE=f(()=>{"use strict";te();Ji();km();hf()});var IE={};KE(IE,{runOqlSearch:()=>xG});async function xG(e,t={}){let n;try{n=kx(e)}catch(o){if(o instanceof Yt)return Qc(o.diagnostics);throw o}if(Gl(n))return _E(n,e,t);let r=await xl(n,e,t);return ks(r.results),r}var ME=f(()=>{"use strict";Ox();te();Ji();un();FE();hf()});async function NE(e){let t=wG(e),n=Hn.safeParse(t);if(!n.success)throw n.error;let{runOqlSearch:r}=await Promise.resolve().then(()=>(ME(),IE)),o=await r(n.data,{authInfo:e.authInfo});return TG(o)}function wG(e){let t={...e};return delete t.authInfo,delete t.sessionId,delete t.responseCharOffset,delete t.responseCharLength,t}function TG(e){let t=EG(e),n=t.results.some(r=>r.status==="error");return{content:[{type:"text",text:JSON.stringify(t,null,2)}],...n?{isError:!0}:{},structuredContent:t}}function EG(e){return Hl(e)?{results:e.children.map(t=>DE(t.envelope,t.queryId)),mode:e.mode,...e.merged?{merged:GE(e.merged)}:{},...e.diagnostics.length>0?{diagnostics:e.diagnostics}:{}}:{results:[DE(e,e.queryId??"oqlSearch-1")]}}function DE(e,t){let n=GE(e);return{id:e.queryId??t,...OG(e),data:n}}function GE(e){let t={...e.nextHints??{}},n=Object.keys(t).length>0,r=e.results.map(o=>{let i=o.next;if(!i)return o;let s={},a=!1;for(let[c,l]of Object.entries(i)){if(!l.why||!l.confidence){s[c]=l;continue}let u={why:l.why,confidence:l.confidence},d=t[c];if(d||(t[c]=u,n=!0),!d||kG(d,u)){let{why:m,confidence:p,...h}=l;s[c]=h,a=!0}else s[c]=l}return a?{...o,next:s}:o});return{...e,results:r,...n?{nextHints:t}:{}}}function kG(e,t){return e.why===t.why&&e.confidence===t.confidence}function OG(e){return e.evidence.kind==="unsupported"||e.diagnostics.some(t=>t.severity==="error")?{status:"error"}:e.results.length===0?{status:"empty"}:{}}var HE=f(()=>{"use strict";Rr();un()});var gf,QE=f(()=>{"use strict";pe();gf={hasTool(e){return zu(e)},getDescription(e){return Bu[e]??""},getToolName(e){return v[e]??String(e)}}});function vG(e,t){return t.getToolName(e)}function Et(e,t,n){let r=vG(t,e);return{...n,name:r,description:yf(r,e)}}function AG(e=gf){let t=Et(e,"GITHUB_SEARCH_CODE",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:yo,inputSchema:bo,executionFn:WR,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),n=Et(e,"GITHUB_FETCH_CONTENT",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Fn,inputSchema:go,executionFn:DR,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),r=Et(e,"GITHUB_VIEW_REPO_STRUCTURE",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:xo,inputSchema:wo,executionFn:US,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),o=Et(e,"GITHUB_SEARCH_REPOSITORIES",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:So,inputSchema:Po,executionFn:BS,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),i=Et(e,"GITHUB_SEARCH_PULL_REQUESTS",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:In,inputSchema:Ro,executionFn:kS,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),s=Et(e,"PACKAGE_SEARCH",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:To,inputSchema:Eo,executionFn:pP,security:"remote",requiresServerRuntime:!0}}),a=Et(e,"GITHUB_CLONE_REPO",{isDefault:!0,isLocal:!0,isClone:!0,type:"content",skipMetadataCheck:!0,direct:{schema:yr,inputSchema:fo,executionFn:Zb,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),c=Et(e,"LOCAL_RIPGREP",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:jt,inputSchema:vo,executionFn:oC,security:"basic"}}),l=Et(e,"LOCAL_VIEW_STRUCTURE",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:Nn,inputSchema:Ao,executionFn:hC,security:"basic"}}),u=Et(e,"LOCAL_FIND_FILES",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:Dn,inputSchema:Oo,executionFn:NP,security:"basic"}}),d=Et(e,"LOCAL_FETCH_CONTENT",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:Mn,inputSchema:ko,executionFn:_P,security:"basic"}}),m={name:Ie,description:yf(Ie,e),isDefault:!0,isLocal:!0,skipMetadataCheck:!0,type:"content",direct:{schema:Lo,inputSchema:_o,executionFn:cx,security:"basic",requiresServerRuntime:!0}},p={name:rn,description:yf(rn,e),isDefault:!0,isLocal:!1,type:"search",direct:{schema:Io,inputSchema:Hn,executionFn:NE,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}},h=[t,n,r,o,i,s,a,c,l,u,d,m,...po()?[p]:[]];return{GITHUB_SEARCH_CODE:t,GITHUB_FETCH_CONTENT:n,GITHUB_VIEW_REPO_STRUCTURE:r,GITHUB_SEARCH_REPOSITORIES:o,GITHUB_SEARCH_PULL_REQUESTS:i,PACKAGE_SEARCH:s,GITHUB_CLONE_REPO:a,LOCAL_RIPGREP:c,LOCAL_VIEW_STRUCTURE:l,LOCAL_FIND_FILES:u,LOCAL_FETCH_CONTENT:d,LSP_GET_SEMANTIC_CONTENT:m,OQL_SEARCH:p,ALL_TOOLS:h}}var yf,Je,Jne,Zne,ere,tre,nre,rre,ore,ire,sre,are,cre,lre,ure,jE,BE=f(()=>{"use strict";zl();eR();NR();VR();OS();zS();$S();mP();FP();GP();iC();gC();lx();HE();kt();mo();QE();yf=(e,t=gf)=>t.getDescription(e);Je=AG(),Jne=Je.GITHUB_SEARCH_CODE,Zne=Je.GITHUB_FETCH_CONTENT,ere=Je.GITHUB_VIEW_REPO_STRUCTURE,tre=Je.GITHUB_SEARCH_REPOSITORIES,nre=Je.GITHUB_SEARCH_PULL_REQUESTS,rre=Je.PACKAGE_SEARCH,ore=Je.GITHUB_CLONE_REPO,ire=Je.LOCAL_RIPGREP,sre=Je.LOCAL_VIEW_STRUCTURE,are=Je.LOCAL_FIND_FILES,cre=Je.LOCAL_FETCH_CONTENT,lre=Je.LSP_GET_SEMANTIC_CONTENT,ure=Je.OQL_SEARCH,jE=Je.ALL_TOOLS});import{ContentSanitizer as LG}from"@octocodeai/octocode-engine/security";import{getRuntimeSurface as _G}from"@octocodeai/config";function Rf(e){let t=e;if(t.structuredContent)try{t={...t,structuredContent:xt(t.structuredContent)}}catch{}return IG(t)?MG(t):(t.content?.length&&(t={...t,content:t.content.map(n=>{if(n.type==="text"&&"text"in n&&typeof n.text=="string")try{let{content:r}=LG.sanitizeContent(n.text);return{...n,text:r}}catch{return n}return n})}),t)}function IG(e){return _G()==="mcp"&&process.env[FG]!=="true"&&e.isError!==!0&&e.structuredContent!==void 0}function MG(e){let t=(e.content??[]).filter(n=>n.type!=="text");return{...e,content:[{type:"text",text:DG(e.structuredContent)},...t]}}function DG(e){let t=["structuredContent available"];if(bf(e)){if(typeof e.status=="string"&&t.push(`status=${e.status}`),Array.isArray(e.results)){t.push(`results=${e.results.length}`);let r=NG(e.results);r.error>0&&t.push(`errors=${r.error}`),r.empty>0&&t.push(`empty=${r.empty}`)}let n=e.pagination;bf(n)&&typeof n.hasMore=="boolean"&&t.push(`hasMore=${n.hasMore}`)}return`${t.join(" \xB7 ")}. Read structuredContent for full data.`}function NG(e){let t=0,n=0;for(let r of e)bf(r)&&(r.status==="error"&&(t+=1),r.status==="empty"&&(n+=1));return{error:t,empty:n}}function bf(e){return typeof e=="object"&&e!==null}function Sf(e,t){let n=HG(t),r={content:[{type:"text",text:`error: tool "${e}" threw an exception
48
- message: ${n.message}`}],structuredContent:{status:"error",tool:e,code:GG,error:{name:n.name,message:n.message,code:n.code}},isError:!0};try{return Rf(r)}catch{return r}}function HG(e){if(e instanceof Error){let t=e.code;return{name:e.name||"Error",message:e.message||String(e),code:typeof t=="string"?t:void 0}}if(typeof e=="string")return{name:"Error",message:e};if(e&&typeof e=="object"){let t=e,n=typeof t.message=="string"?t.message:QG(t)??"Unknown error",r=typeof t.name=="string"?t.name:"Error",o=typeof t.code=="string"?t.code:void 0;return{name:r,message:n,code:o}}return{name:"Error",message:e===void 0?"undefined":String(e)}}function QG(e){try{return JSON.stringify(e)}catch{return}}var FG,GG,zE=f(()=>{"use strict";Dr();FG="OCTOCODE_MCP_FULL_TEXT";GG="TOOL_CALLBACK_EXCEPTION"});import{withSecurityValidation as jG,withBasicSecurityValidation as BG}from"@octocodeai/octocode-engine/security";function UE(e,t){let n=jG(e,(r,o,i)=>t(r,o,i));return(r,o)=>n(r,o)}function $E(e,t){let n=BG(r=>e(r),t);return(r,o)=>n(r,o)}var qE=f(()=>{"use strict"});import{getConfigSync as zG}from"@octocodeai/config";function $G(e){let t=e;return n=>t(n)}function qG(e){let{direct:t}=e;return{name:e.name,schema:t.schema,inputSchema:t.inputSchema,execute:$G(t.executionFn),security:t.security,isLocal:e.isLocal,isClone:e.isClone,requiresServerRuntime:t.requiresServerRuntime,requiresProviders:t.requiresProviders}}function VG(e){return WG.find(t=>t.name===e)}async function Bc(e,t){let n=VG(e);if(!n)throw new Error(`Unknown tool: ${e}`);try{let r=KG(n,t);return await YG(n),XG(n),await JG(n,r)}catch(r){return Sf(n.name,r)}}function KG(e,t){let n=e.inputSchema.safeParse(t);if(!n.success)throw n.error;return n.data}async function YG(e){e.requiresServerRuntime&&(wl||(wl=UG().catch(t=>{throw wl=null,t})),await wl),e.requiresProviders&&(Tl||(Tl=yb().then(()=>{}).catch(t=>{throw Tl=null,t})),await Tl)}function XG(e){if(!e.isLocal&&!e.isClone)return;let t=zG();if(e.isLocal&&!t.local.enabled){let n=new Error(`Tool "${e.name}" requires local tools. Set ENABLE_LOCAL=true to use it.`);throw n.code="localToolsDisabled",n}}async function JG(e,t){try{let n=e.security==="remote"?await ZG(e,t):await eH(e,t);return Rf(n)}catch(n){return Sf(e.name,n)}}async function ZG(e,t){return UE(e.name,async(r,o,i)=>e.execute({...r,authInfo:o,sessionId:i}))(t,{})}async function eH(e,t){return $E(e.execute,e.name)(t)}var wl,Tl,UG,WG,WE=f(()=>{"use strict";Yo();xd();BE();zE();qE();Kl();wl=null,Tl=null,UG=vg;WG=jE.map(qG)});var Om=f(()=>{"use strict";Kl();WE()});Om();ju();import{completeMetadata as tH}from"@octocodeai/octocode-core";var Pf=null;function nH(){return Pf||(Pf=ra(tH)),Pf}async function rH(){return nH()}Dr();export{Ul as DIRECT_TOOL_CATEGORIES,xh as DIRECT_TOOL_DEFINITIONS,st as DirectToolInputError,xO as buildDirectToolExampleQuery,Bc as executeDirectTool,pn as findDirectToolDefinition,HL as formatCallToolResultForOutput,hO as formatDirectToolMetadataSchemaText,bO as formatDirectToolOutputSchemaText,fO as formatDirectToolSchemaText,gO as getDirectToolAutoFilledFields,Sr as getDirectToolCategory,RO as getDirectToolDescription,No as getDirectToolDisplayFields,yO as getDirectToolOutputFields,rH as loadToolContent,_h as prepareDirectToolInput,vO as prepareDirectToolInputFromJsonText,mO as sortDirectToolNames};
63
+ `);if(t){let i=n?t:t.toLowerCase();for(let s of o)if((n?s:s.toLowerCase()).includes(i))return s}return o.find(i=>i.trim().length>0)??o[0]??""}function fc(e,t,n,r){if(n==="markdown")return/<!--/.test(e)?"comment":"code";if(n==="json")return"code";if(ac.test(e))return"comment";let o=nw(e,t,r);if(o<0)return"code";let i=rw(e);return i>=0&&o>i?"comment":Of(e,o)?"string":"code"}function nw(e,t,n){return t?n?e.indexOf(t):e.toLowerCase().indexOf(t.toLowerCase()):-1}function rw(e){let t=-1,n=i=>{i>=0&&(t<0||i<t)&&(t=i)};for(let i of["//","/*","<!--"])n(e.indexOf(i));let r=/(^|\s)#(?![!{])/.exec(e);r&&n(r.index+(r[1]?.length??0));let o=/(^|\s)--\s/.exec(e);return o&&n(o.index+(o[1]?.length??0)),t}function Of(e,t){let n="";for(let r=0;r<t&&r<e.length;r++){let o=e[r];n?o===n&&e[r-1]!=="\\"&&(n=""):(o==='"'||o==="'"||o==="`")&&(n=o)}return n!==""}function ow(e){if(!e)return;let t=/[A-Za-z_$][\w$]*/.exec(e);return t?t[0]:void 0}function iw(e,t){if(!e)return[];let n=new Set,r=[];for(let o of e.matchAll(/[A-Za-z_$][\w$]*/g)){let i=o[0],s=t?i:i.toLowerCase();n.has(s)||(n.add(s),r.push(i))}return r}function sw(e,t,n,r,o){if(!e||e.length===0)return 0;let i=pc(n.keyword),s=0,a="";for(let c of e){let u=c.value??"";if(!u)continue;let l=mc(u,r,n.caseSensitive),d=0,m=[];r&&i&&(new RegExp(`(^|[^\\w$])${wi(r)}([^\\w$]|$)`,n.caseSensitive?"":"i").test(l)?(d+=ne.exactWholeWord,m.push("whole-word match")):!n.caseSensitive&&l.toLowerCase().includes(r.toLowerCase())?(d+=ne.exactCaseInsensitive,m.push("case-insensitive match")):l.includes(r)&&(d+=ne.substring,m.push("substring match")));let p=c.kind;if(p)d+=aw(p,m);else{let f=fc(l,r,t.id,n.caseSensitive);f!=="code"?(d+=ne.commentOrStringPenalty,m.push(f==="comment"?"comment match (weak)":"string literal (weak)")):(Xr(t.declaration,l)&&(d+=ne.declarationLine,m.push("declaration line")),Xr(t.export,l)&&(d+=ne.exportLine,m.push("export/public line")),Xr(t.import,l)&&(d+=ne.importLine,m.push("import line")),t.id==="markdown"&&cc.test(l)&&(d+=ne.headingLine,m.push("markdown heading")),(t.id==="json"||t.id==="yaml")&&cw(l,r)&&(d+=ne.configKeyLine,m.push("config key match")))}d>s&&(s=d,a=m.join(", "))}return a&&o.push(a),s}function aw(e,t){switch(e){case"declaration":return t.push("AST: declaration"),ne.declarationLine;case"export":return t.push("AST: export/public"),ne.exportLine;case"configKey":return t.push("AST: config key"),ne.configKeyLine;case"heading":return t.push("AST: heading"),ne.headingLine;case"import":return t.push("AST: import"),ne.importLine;case"comment":case"string":return t.push(`AST: ${e} (weak)`),ne.commentOrStringPenalty;case"callsite":return t.push("AST: callsite"),1;default:return 0}}function cw(e,t){let n=e.indexOf(":");if(n<0)return!1;let r=e.slice(0,n);return t?r.includes(t):/["'\w]/.test(r)}function uw(e,t,n,r,o,i){let s=0;if(n){let c=e.toLowerCase(),u=n.toLowerCase();c.split("/").some(l=>l.replace(Pi,"").includes(u))&&(s+=ne.pathSegmentToken,i.push("query token in path"))}let a=Yr(e);return r.extensions.includes(a)&&t.langType&&(s+=ne.extMatchesLangType,i.push("extension matches langType")),o==="source"&&(s+=ne.sourceDir,i.push("source file")),s}function lw(e,t,n){return t.explicitLowSignal?0:e==="generated"||e==="fixture"?(n.push(`${e} file (penalized)`),ne.lowSignalPathPenalty):e==="test"?(n.push("test file (penalized)"),ne.testPathPenalty):0}function dw(e,t){if(e<=0)return 0;let n=Math.log2(e+1)*ne.matchCountScale,r=Math.min(n,ne.matchCountCap);return e>1&&t.push(`match count saturated (${e})`),r}function hc(e,t){let n=iw(t.keyword,t.caseSensitive);if(n.length<2||e.length<2)return;let r=new Map,o=new Map;for(let i of e){let s=n.filter(a=>pw(i,a,t.caseSensitive));if(s.length!==0){r.set(i.path,s);for(let a of s)o.set(a,(o.get(a)??0)+1)}}if(r.size!==0)return{candidateCount:e.length,fileTokens:r,documentFrequency:o}}function pw(e,t,n){let r=n?"":"i",o=new RegExp(`(^|[^\\w$])${wi(t)}([^\\w$]|$)`,r);for(let i of e.matches??[])if(o.test(i.value??""))return!0;return o.test(e.path)}function mw(e,t,n){if(!t)return 0;let r=t.fileTokens.get(e.path);if(!r?.length)return 0;let o="",i=0,s=0;for(let a of r){let c=t.documentFrequency.get(a)??t.candidateCount;if(c>t.candidateCount/2)continue;let u=Math.log2((t.candidateCount+1)/(c+1)),l=Math.min(u*ne.rareQueryTokenScale,ne.rareQueryTokenCap);l>i&&(i=l,o=a,s=c)}return i<=0?0:(n.push(`rare query token: ${o} (${s}/${t.candidateCount} files)`),i)}function gc(e,t,n){let r=uc(e.path,t.langType,t.profileOverride),o=xi(e.path),i=ow(t.keyword),s=[],a=0;return a+=sw(e.matches,r,t,i,s),a+=uw(e.path,t,i,r,o,s),t.queryPath&&e.path.startsWith(t.queryPath.replace(/\/+$/,"")+"/")&&(a+=ne.pathUnderQuery,s.push("under requested subtree")),a+=lw(o,t,s),Kr.test(e.path)&&!t.explicitLowSignal&&(a+=ne.lowSignalPathPenalty,s.push("low-signal path (penalized)")),a+=dw(e.matchCount??0,s),a+=mw(e,n,s),{score:Math.round(a*100)/100,profile:r.id,pathRole:o,reasons:s}}var fw=new Set(["async","await","break","case","catch","class","const","def","do","else","enum","export","for","function","if","import","interface","let","match","return","struct","switch","type","var","while","true","false","null","undefined","NaN","Infinity","this","super"]),hw=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Ff(e,t,n,r){let o=e.find(a=>a.path),i=o?.matches?.find(a=>a.line),s={};if(o?.path){if(i?.line){let c=gw(i);s.fetch={tool:"localGetFileContent",query:yc({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"none"}),why:'Read exact source around the first match (set minify:"standard" for a token-lean slice, or drop the line range with minify:"symbols" for a skeleton).',confidence:"exact"}}else s.fetch={tool:"localGetFileContent",query:{path:o.path,minify:"standard"},why:'Read the first matched file (minify:"symbols" gives a skeleton for orientation; minify:"none" gives exact bytes).',confidence:r.isFileListMode?"low":"exact"};let a=yw(i,t,n);if(a&&i?.line){let c={uri:o.path,symbolName:a.symbol,lineHint:a.line??i.line};s.lspDefinition={tool:"lspGetSemantics",query:{...c,type:"definition"},why:"Use the grep line as an LSP lineHint to resolve the symbol definition.",confidence:"low"},s.lspReferences={tool:"lspGetSemantics",query:{...c,type:"references"},why:"Use the grep line as an LSP lineHint to inspect semantic usages.",confidence:"low"}}}return r.currentPage<r.totalFilePages&&(s.nextPage={tool:"localSearchCode",query:yc({...t,page:r.currentPage+1}),why:"Continue to the next page of matched files.",confidence:"exact"}),r.hasFileWithMoreMatches&&(s.nextMatchPage={tool:"localSearchCode",query:yc({...t,maxMatchesPerFile:r.matchesPerPage,matchPage:r.matchPage+1}),why:"Continue within files that have more matches than this response returned.",confidence:"exact"}),s}function gw(e){let t=Math.max(1,e.line??1),n=Math.max(t,e.endLine??t);return{startLine:Math.max(1,t-8),endLine:n+8}}function yw(e,t,n){if(t.output==="countLines"||t.output==="countMatches"||t.unique==="list"||t.unique==="count")return;if(n==="structural")return Rw(e?.metavars,e?.metavarRanges);if(t.matchWindow)return;if(t.output==="matchOnly"){let o=Rc(e?.value);return o?{symbol:o}:void 0}let r=Rc(t.searchText);return r?{symbol:r}:void 0}function Rw(e,t){if(e)for(let[n,r]of Object.entries(e))for(let[o,i]of r.entries()){let s=Rc(i);if(s)return{symbol:s,line:t?.[n]?.[o]?.line}}}function Rc(e){if(typeof e!="string")return;let t=e.trim();if(hw.test(t)&&!fw.has(t))return t}function yc(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}async function Ti(e,t,n,r,o){let i=t.sort??"relevance",s=n==="structural"&&i==="relevance"?"path":i,a;try{a=dc(e,s,Sw(t),{debug:!1,sortReverse:t.sortReverse})}catch{a={files:e,cappedCandidates:0},r.push("Relevance ranking failed; returning results in unranked engine order.")}let c=a.files,u=a.debug,l=c.length,d=t.output==="files"||t.output==="filesWithout",m=t.output==="countLines"||t.output==="countMatches",p=d||m,f=c.reduce((H,k)=>H+(k.matchCount??0),0),g=p?o?.totalOccurrences??o?.totalStructuralMatches??f:f,R=t,h=Math.min(R.itemsPerPage||wt.DEFAULT_FILES_PER_PAGE,t.maxFiles||Number.POSITIVE_INFINITY),y=R.page||1,S=Math.max(1,Math.ceil(l/h)),C=(y-1)*h,x=Math.min(C+h,l),T=c.slice(C,x),L=l>0&&C>=l;L&&r.push(`page:${y} is out of range (only ${S} page(s), ${l} total file(s)) \u2014 returned 0 files. Use page:1..${S}.`);let _=R.maxMatchesPerFile||wt.DEFAULT_MATCHES_PER_PAGE,w=T.map(H=>{let k=H.matches?.length??0,B=Math.max(1,Math.ceil(k/_)),Z=Math.max(1,R.matchPage||1),v=(Z-1)*_,Y=k>0&&v>=k,ae=Math.min(v+_,k),ie=p?void 0:H.matches?.slice(v,ae),ce=ie?.length;Y&&r.push(`${H.path}: matchPage:${Z} is out of range under maxMatchesPerFile:${_} (only ${B} page(s), ${k} total match(es) for this file) \u2014 returned 0 rows for this file. Use matchPage:1..${B}, or drop matchPage to re-derive it from the current maxMatchesPerFile.`);let _e=u?.get(H.path);return{path:H.path,...d?{}:t.output==="countLines"?{totalMatchedLines:H.matchCount||1}:t.output==="countMatches"?{totalOccurrences:H.matchCount||1}:{totalMatchRows:k,...ce!==void 0?{returnedMatchRows:ce}:{}},...ie!==void 0&&{matches:ie},..._e?{ranking:{score:_e.score,profile:_e.profile,pathRole:_e.pathRole,reasons:_e.reasons}}:{},pagination:!p&&(k>_||Y)?{currentPage:Z,totalPages:B,matchesPerPage:_,totalMatches:k,hasMore:Z<B,...Z<B?{nextMatchPage:Z+1}:{},...Y?{outOfRange:!0}:{}}:void 0}}),b=w.filter(H=>H.pagination?.hasMore),A=Ff(w,t,n,{isFileListMode:p,currentPage:y,totalFilePages:S,matchPage:R.matchPage||1,matchesPerPage:_,hasFileWithMoreMatches:b.length>0}),M={searchEngine:n,...o?{stats:o}:{},files:w,pagination:{currentPage:y,totalPages:S,filesPerPage:h,totalFiles:l,...d?{}:{totalMatches:g},hasMore:y<S,...y<S?{nextPage:y+1}:{},...L?{outOfRange:!0}:{}},...r.length>0?{warnings:r}:{},...Object.keys(A).length>0?{next:A}:{}};return vf(M,t,{totalMatches:g,totalFiles:l})}function vf(e,t,n){return e}function Sw(e){let t=e.rankingProfile,n=!!(e.include?.length||lc(e.path));return{queryPath:e.path,keyword:e.searchText,langType:e.langType,caseSensitive:e.caseMode==="sensitive",wholeWord:e.wholeWord,profileOverride:t,explicitLowSignal:n}}function Df(e){let t=[],n=[],r=e.pattern;if(typeof r!="string"||r.length===0)return t.push("pattern is empty \u2014 provide a non-empty search string"),{isValid:!1,errors:t,warnings:n};let o=F.validateRipgrepPattern(r,e.fixedString,e.perlRegex);return o.valid||t.push(`invalid regex: ${o.error??"unknown regex parse error"}`),!e.fixedString&&bw(r)&&n.push(`pattern '${r}' looks literal \u2014 set regex:"fixed" to skip regex parsing and avoid accidental wildcards`),!e.perlRegex&&Cw(r)&&n.push("pattern uses lookaround (?= / ?! / ?<= / ?<!) which requires perlRegex: true; ripgrep will refuse it otherwise"),{isValid:t.length===0,errors:t,warnings:n}}function bw(e){return/[\\^$|()[\]{}+*?]/.test(e)?!1:!!(e.includes(".")&&/^[\w.\-/:]+$/.test(e)||e.length>2&&/^\w+$/.test(e))}function Cw(e){return/\(\?[=!<]/.test(e)}import Tn from"node:path";function xw(e){return e==="created"||e==="modified"||e==="accessed"?e:"path"}function ww(e){return{path:e.path,pattern:e.searchText??"",fixedString:e.regex==="fixed",perlRegex:e.regex==="perl",caseSensitive:e.caseMode==="sensitive",caseInsensitive:e.caseMode==="insensitive",wholeWord:e.wholeWord,invertMatch:e.invertMatch,multiline:e.multiline==="on"||e.multiline==="dotall",multilineDotall:e.multiline==="dotall",filesOnly:e.output==="files",filesWithoutMatch:e.output==="filesWithout",countLinesPerFile:e.output==="countLines",countMatchesPerFile:e.output==="countMatches",contextLines:e.contextLines,langType:e.langType,include:e.include,exclude:e.exclude,excludeDir:e.excludeDir,noIgnore:e.noIgnore,hidden:e.hidden,sort:xw(e.sort),sortReverse:e.sortReverse,classifyMatches:e.sort==="relevance"||e.sort===void 0,maxSnippetChars:e.matchContentLength,onlyMatching:e.output==="matchOnly",unique:e.unique==="list"||e.unique==="count",countUnique:e.unique==="count",matchWindow:e.matchWindow,maxCollectedFiles:1e4}}function Tw(e){let t=0;for(let n of e)if(t+=n.path.length,n.matches)for(let r of n.matches)t+=r.value?.length??0;return t}function Ew(e,t){let n=Tn.isAbsolute(e)?e:Tn.join(t,e),r=Tn.relative(t,n);if(!r||r.startsWith("..")||Tn.isAbsolute(r))return 0;let o=Tn.dirname(r);return o==="."?0:o.split(Tn.sep).filter(Boolean).length}async function Mf(e){let t=[],n=Pw(e);if(!n.isValid)return O(new Error(`Query validation failed: ${n.errors.join("; ")}`),e,{toolName:P.LOCAL_RIPGREP,extra:{warnings:n.warnings}});t.push(...n.warnings);let r=tt.safeParse(e);if(!r.success){let h=r.error.issues.map(y=>y.message);return O(new Error(`Query validation failed: ${h.join(", ")}`),e,{toolName:P.LOCAL_RIPGREP,extra:{warnings:t}})}let o=r.data;if(!o.path)return O(new Error("Path is required for search"),o,{toolName:P.LOCAL_RIPGREP,extra:{warnings:t}});let s=Le(o,P.LOCAL_RIPGREP);if(!s.isValid)return s.errorResult;let a={...o,path:s.sanitizedPath},c=Df({pattern:a.searchText??"",fixedString:a.regex==="fixed",perlRegex:a.regex==="perl"});if(!c.isValid)return O(new Error(`Pattern validation failed: ${c.errors.join("; ")}`),o,{toolName:P.LOCAL_RIPGREP,extra:{warnings:[...t,...c.warnings]}});let u=[...c.warnings],l;try{l=await F.searchRipgrep(ww(a))}catch(h){return O(h instanceof Error?h:new Error(String(h)),o,{toolName:P.LOCAL_RIPGREP})}let d=l.files.map(h=>({path:h.path,matchCount:h.matchCount,matches:h.matches.map(y=>{let S={line:y.line,column:y.column,value:y.value};return y.count!==void 0&&(S.count=y.count),y.kind!==void 0&&(S.kind=y.kind),y.scoreHint!==void 0&&(S.scoreHint=y.scoreHint),S})})),m=a.maxDepth,p=m===void 0?d:d.filter(h=>Ew(h.path,a.path)<=m);m!==void 0&&p.length!==d.length&&u.push(`Applied maxDepth:${m} after native text search; filtered ${d.length-p.length} deeper file(s).`);let f=Tw(p),g={totalOccurrences:l.stats.matchCount,matchedLines:l.stats.matchedLines,filesMatched:p.length,filesSearched:l.stats.filesSearched,bytesSearched:l.stats.bytesSearched??void 0,searchTime:l.stats.searchTime,capped:l.stats.capped??void 0,capReason:l.stats.capReason??void 0};if(l.stats.capped&&u.push(`Search hit native collection cap (${l.stats.capReason??"resource limit"}); narrow path/include/keywords for exhaustive results.`),p.length===0){let h=['No matches \u2014 broaden the search: try caseMode:"insensitive", a shorter/partial term, or regex:"smart" instead of "fixed".',...a.include?.length||a.maxDepth!==void 0?["Filters are active (include/maxDepth) \u2014 drop them to search the wider tree."]:[],...a.wholeWord?["wholeWord:true excludes partial hits \u2014 drop it to match substrings."]:[]];return Q({status:"empty",searchEngine:"rg",stats:g,hints:h,warnings:[...t,...u]},f)}a.output!=="files"&&f>wt.LARGE_RESULT_BYTES_HINT&&u.push(`Result payload is large (~${Math.round(f/1024)}KB).`);let R=await Ti(p,o,"rg",[...t,...u],g);return Q(R,f)}import{readFile as _w,stat as kw}from"node:fs/promises";var Nf={bash:{kind:"extension",canonicalLanguage:"Shell",extension:"bash",extensions:["bash"]},c:{kind:"extension",canonicalLanguage:"C",extension:"c",extensions:["c"]},cc:{kind:"extension",canonicalLanguage:"C++",extension:"cc",extensions:["cc"]},cjs:{kind:"extension",canonicalLanguage:"JavaScript",extension:"cjs",extensions:["cjs"]},cpp:{kind:"extension",canonicalLanguage:"C++",extension:"cpp",extensions:["cpp"]},cs:{kind:"extension",canonicalLanguage:"C#",extension:"cs",extensions:["cs"]},cts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"cts",extensions:["cts"]},cxx:{kind:"extension",canonicalLanguage:"C++",extension:"cxx",extensions:["cxx"]},go:{kind:"extension",canonicalLanguage:"Go",extension:"go",extensions:["go"]},h:{kind:"extension",canonicalLanguage:"C",extension:"h",extensions:["h"]},html:{kind:"extension",canonicalLanguage:"HTML",extension:"html",extensions:["html"]},htm:{kind:"extension",canonicalLanguage:"HTML",extension:"htm",extensions:["htm"]},hpp:{kind:"extension",canonicalLanguage:"C++",extension:"hpp",extensions:["hpp"]},js:{kind:"extension",canonicalLanguage:"JavaScript",extension:"js",extensions:["js"]},json:{kind:"extension",canonicalLanguage:"JSON",extension:"json",extensions:["json"]},jsonc:{kind:"extension",canonicalLanguage:"JSON",extension:"jsonc",extensions:["jsonc"]},jsx:{kind:"extension",canonicalLanguage:"JavaScript",extension:"jsx",extensions:["jsx"]},java:{kind:"extension",canonicalLanguage:"Java",extension:"java",extensions:["java"]},less:{kind:"extension",canonicalLanguage:"Less",extension:"less",extensions:["less"]},md:{kind:"extension",canonicalLanguage:"Markdown",extension:"md",extensions:["md"]},mdx:{kind:"extension",canonicalLanguage:"MDX",extension:"mdx",extensions:["mdx"]},mjs:{kind:"extension",canonicalLanguage:"JavaScript",extension:"mjs",extensions:["mjs"]},mts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"mts",extensions:["mts"]},py:{kind:"extension",canonicalLanguage:"Python",extension:"py",extensions:["py"]},pyi:{kind:"extension",canonicalLanguage:"Python",extension:"pyi",extensions:["pyi"]},rs:{kind:"extension",canonicalLanguage:"Rust",extension:"rs",extensions:["rs"]},scala:{kind:"extension",canonicalLanguage:"Scala",extension:"scala",extensions:["scala"]},sc:{kind:"extension",canonicalLanguage:"Scala",extension:"sc",extensions:["sc"]},scss:{kind:"extension",canonicalLanguage:"SCSS",extension:"scss",extensions:["scss"]},sh:{kind:"extension",canonicalLanguage:"Shell",extension:"sh",extensions:["sh"]},ts:{kind:"extension",canonicalLanguage:"TypeScript",extension:"ts",extensions:["ts"]},tsx:{kind:"extension",canonicalLanguage:"TypeScript",extension:"tsx",extensions:["tsx"]},toml:{kind:"extension",canonicalLanguage:"TOML",extension:"toml",extensions:["toml"]},yaml:{kind:"extension",canonicalLanguage:"YAML",extension:"yaml",extensions:["yaml"]},yml:{kind:"extension",canonicalLanguage:"YAML",extension:"yml",extensions:["yml"]},zsh:{kind:"extension",canonicalLanguage:"Shell",extension:"zsh",extensions:["zsh"]}},Gf={bash:{kind:"language",canonicalLanguage:"Shell",extensions:["sh","bash","zsh"]},c:{kind:"language",canonicalLanguage:"C",extensions:["c","h"]},"c++":{kind:"language",canonicalLanguage:"C++",extensions:["cpp","hpp","cc","cxx","hh","hxx"]},cpp:{kind:"language",canonicalLanguage:"C++",extensions:["cpp","hpp","cc","cxx","hh","hxx"]},csharp:{kind:"language",canonicalLanguage:"C#",extensions:["cs"]},css:{kind:"language",canonicalLanguage:"CSS",extensions:["css"]},go:{kind:"language",canonicalLanguage:"Go",extensions:["go"]},html:{kind:"language",canonicalLanguage:"HTML",extensions:["html","htm"]},java:{kind:"language",canonicalLanguage:"Java",extensions:["java"]},javascript:{kind:"language",canonicalLanguage:"JavaScript",extensions:["js","jsx","mjs","cjs"]},json:{kind:"language",canonicalLanguage:"JSON",extensions:["json","jsonc"]},less:{kind:"language",canonicalLanguage:"Less",extensions:["less"]},markdown:{kind:"language",canonicalLanguage:"Markdown",extensions:["md","markdown"]},python:{kind:"language",canonicalLanguage:"Python",extensions:["py","pyi"]},rust:{kind:"language",canonicalLanguage:"Rust",extensions:["rs"]},scala:{kind:"language",canonicalLanguage:"Scala",extensions:["scala","sc","sbt"]},scss:{kind:"language",canonicalLanguage:"SCSS",extensions:["scss"]},shell:{kind:"language",canonicalLanguage:"Shell",extensions:["sh","bash","zsh"]},typescript:{kind:"language",canonicalLanguage:"TypeScript",extensions:["ts","tsx","mts","cts"]},toml:{kind:"language",canonicalLanguage:"TOML",extensions:["toml"]},yaml:{kind:"language",canonicalLanguage:"YAML",extensions:["yaml","yml"]},yml:{kind:"language",canonicalLanguage:"YAML",extensions:["yaml","yml"]}};function Lw(e){return e.trim().replace(/^\./,"").toLowerCase()}function Hf(e){if(!e?.trim())return;let t=Lw(e),n=Nf[t]??Gf[t];return n?{raw:e,normalized:t,...n}:{raw:e,normalized:t,kind:"unknown",canonicalLanguage:e.trim()}}function Sc(e){let t=Hf(e);if(!t)return;let r=(t.extensions?.length?t.extensions:[t.normalized.replace(/^[.*]+/,"")]).filter(Boolean).map(o=>`*.${o}`);return r.length?r:void 0}var Aw=/^\s*(\/\/|\/\*|\*|#)/;function Uf(e,t,n){let r=t&&Object.keys(t).length>0;if(n)return{...e?{metavars:e}:{},...r?{metavarRanges:t??void 0}:{}};let o;if(e){o={};for(let[s,a]of Object.entries(e))a.length<=1&&(o[s]=a.map(Bf));Object.keys(o).length===0&&(o=void 0)}let i;if(r&&t){i={};for(let[s,a]of Object.entries(t)){let u=(a.length>1?a.filter(l=>!Aw.test(l.text)):a).map(l=>({...l,text:Bf(l.text)}));u.length>0&&(i[s]=u)}Object.keys(i).length===0&&(i=void 0)}return{...o?{metavars:o}:{},...i?{metavarRanges:i}:{}}}function Bf(e){return e.length>120?`${e.slice(0,120)}\u2026`:e}var Qf=[],$f=2e3,Iw=1e6,Ow="0 structural matches. A pattern matches a complete AST node \u2014 a class/function usually needs a body (add `$$$BODY`), and Python/TS definitions may carry a return type (`-> $RET:`) or decorators the pattern must include. For partial or relational matches use a YAML `rule` instead of `pattern`.";function zf(e){if(!e||!/\)\s*\{/.test(e))return;let t=e.replace(/\)\s*\{/,"): $R {");return t===e?void 0:t}function Fw(e){let t=zf(e);return t?` Try: \`${t}\`.`:""}function jf(e){return e.include?.length?e.include:Sc(e.langType)}async function vw(e){try{return(await kw(e)).isFile()}catch{return!1}}async function Dw(e,t,n){let r=await _w(e,"utf8"),o=await F.structuralSearch(r,e,n??t.pattern,t.rule);return{files:o.length>0?[{path:e,matches:o}]:[],totalMatches:o.length,parsedFiles:1,skippedByPreFilter:0,skippedUnsupported:0,skippedUnreadable:0,skippedLarge:0,warnings:[]}}async function Wf(e){let t=Le(e,P.LOCAL_RIPGREP);if(!t.isValid)return t.errorResult;let n=await vw(t.sanitizedPath),r=!!e.captureText,o=S=>({path:t.sanitizedPath,pattern:S??e.pattern,rule:e.rule,...jf(e)?{include:jf(e)}:{},...e.exclude?.length?{exclude:e.exclude}:{},...e.excludeDir?.length?{excludeDir:e.excludeDir}:Qf.length?{excludeDir:Qf}:{},...e.hidden!==void 0?{hidden:e.hidden}:{},...e.noIgnore!==void 0?{noIgnore:e.noIgnore}:{},maxFiles:e.maxFiles??$f,maxFileBytes:Iw}),i=S=>n?Dw(t.sanitizedPath,e,S):F.structuralSearchFiles(o(S)),s,a=!1,c;try{if(s=await i(),s.totalMatches===0&&e.pattern&&!e.rule&&!/[;}]\s*$/.test(e.pattern))try{let S=await i(`${e.pattern};`);S.totalMatches>0&&(s=S,a=!0)}catch{}if(s.totalMatches===0&&e.pattern&&!e.rule){let S=zf(e.pattern);if(S)try{let C=await i(S);C.totalMatches>0&&(s=C,c=S)}catch{}}}catch(S){let C=S instanceof Error?S.message:String(S),x=e.langType||"source";return O(new Error(`Invalid structural ${e.rule?"rule":"pattern"}: ${C} \u2014 patterns must be valid ${x} and match a complete node; a class/def usually needs a body (add \`$$$BODY\`). Run \`octocode tools localSearchCode --scheme\` for the live schema.`),e,{toolName:P.LOCAL_RIPGREP})}let u=s.files.map(S=>({path:S.path,matchCount:S.matches.length,matches:S.matches.map(C=>({line:C.startLine,endLine:C.endLine,value:C.text.replace(/\s+/g," ").trim().slice(0,300),column:C.startCol,endColumn:C.endCol,...Uf(C.metavars,C.metavarRanges,r)}))})),l=e.maxDepth,d=u,m=0;if(typeof l=="number"&&!n){let S=t.sanitizedPath.replace(/\/+$/,"");d=u.filter(C=>(C.path.startsWith(`${S}/`)?C.path.slice(S.length+1):C.path).split("/").length<=l+1),m=u.length-d.length}let p=d.reduce((S,C)=>S+(C.matchCount??C.matches?.length??0),0),f=e.maxFiles??$f,R=(s.parsedFiles??0)+(s.skippedUnreadable??0)+(s.skippedLarge??0)>=f,h={totalStructuralMatches:typeof l=="number"?p:s.totalMatches,...R?{capReached:!0}:{}},y=[...s.warnings];if(m>0&&y.push(`maxDepth ${l}: dropped ${m} deeper file(s) \u2014 raise maxDepth or omit it to include them.`),a&&y.push(`Matched after appending ';' \u2014 statement patterns must parse as complete statements; the bare pattern parsed as an expression fragment. Results are for "${e.pattern};".`),c&&y.push(`Matched after adding a return-type metavar \u2014 the bare pattern missed functions that declare a return type. Results are for "${c}".`),s.totalMatches===0&&!n)try{let S=F.structuralSearchFilesDetailed(o()),C=S.query;if(C){let x=[`query parsed as ${C.kind}`];C.literalAnchor&&x.push(`literal anchor "${C.literalAnchor}"`),x.push(`pre-filter: ${C.preFilter}`),C.unsafeReason&&x.push(`unsafe: ${C.unsafeReason}`),y.push(`Engine explanation: ${x.join(", ")}.`);for(let T of[...C.diagnostics??[],...S.diagnostics??[]].slice(0,3))y.push(`Engine ${T.severity} [${T.stage}/${T.code}]: ${T.message}${T.recovery?` \u2014 ${T.recovery}`:""}`)}}catch{}return(d.length===0||h.totalStructuralMatches===0)&&e.pattern&&!e.rule&&m===0&&y.push(Ow+Fw(e.pattern)),await Ti(d,e,"structural",y,h)}function Mw(e){let t=e.mode;if(!t)return e;let n={...e};return t==="discovery"&&n.output==="content"?n.output="files":t==="detailed"&&n.contextLines===void 0&&(n.contextLines=3),n}async function Ei(e){let t=Mw(e);if(t.mode==="structural")return await Wf(t);t.contextLines===void 0&&(t.contextLines=2);try{return await Mf(t)}catch(n){let r=n instanceof Error?n.message:String(n);return r.includes("Output size limit exceeded")?{status:"error",error:r,errorCode:G.OUTPUT_TOO_LARGE}:O(n,t,{toolName:P.LOCAL_RIPGREP})}}async function Vf(e){let{queries:t}=e;return ee(t||[],async n=>Te({toolName:P.LOCAL_RIPGREP,query:n,contextMessage:"localSearchCode execution failed",execute:async()=>{let r=xe(tt,n);return r.ok===!1?r.error:await Ei(r.data)}}),{toolName:P.LOCAL_RIPGREP},e)}var Nw=new Set(["+","*","?"]),Gw=1e3;function Hw(e,t){let n=t+1;for(;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n++,n++;return n+1}function Kf(e,t){let n=e[t];return n===void 0?!1:Nw.has(n)||n==="{"&&Qw(e,t)}function Bw(e,t,n){let r=n.pop()??!1,o=Kf(e,t+1);return o&&r?{unsafe:!0,next:t+1}:((o||r)&&n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:o?Xf(e,t+1):t+1})}function Uw(e,t,n){return n.some(r=>r)?{unsafe:!0,next:t+1}:(n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:Xf(e,t)})}function Yf(e){if(e.length>Gw)return{safe:!1,reason:"Pattern too long (max 1000 characters)"};let t="Nested quantifiers detected (potential ReDoS). Simplify the pattern.",n=[],r=0;for(;r<e.length;){let o=e[r];if(o==="\\"){r+=2;continue}if(o==="["){r=Hw(e,r);continue}if(o==="("){n.push(!1),r++;continue}if(o===")"){let i=Bw(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}if(Kf(e,r)){let i=Uw(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}r++}return{safe:!0}}function Qw(e,t){if(e[t]!=="{")return!1;let n=e.indexOf("}",t);return n===-1?!1:/^\{\d+,?\d*\}$/.test(e.slice(t,n+1))}function Xf(e,t){return e[t]==="{"?t=e.indexOf("}",t)+1:t++,t<e.length&&(e[t]==="?"||e[t]==="+")&&t++,t}function qf(e,t){let n=e;if(t.pattern){let r=t.pattern;if(r.includes("*")||r.includes("?")||r.includes("[")){let i=r.replace(/[.+^${}()|[\]\\*?]/g,"\\$&");i=i.replace(/\\\*/g,".*").replace(/\\\?/g,".").replace(/\\\[!/g,"[^").replace(/\\\[/g,"[").replace(/\\\]/g,"]");try{let s=`^${i}$`;if(!Yf(s).safe)return n=n.filter(u=>(u.name.includes("/")?u.name.split("/").pop():u.name).includes(r)),n;let c=new RegExp(s,"i");n=n.filter(u=>{let l=u.name.includes("/")?u.name.split("/").pop():u.name;return c.test(l)})}catch{n=n.filter(s=>(s.name.includes("/")?s.name.split("/").pop():s.name).includes(r))}}else n=n.filter(i=>(i.name.includes("/")?i.name.split("/").pop():i.name).includes(r))}return n}function Jf(e){let t=[],n=[],r=[];for(let o of e)o.type==="directory"?n.push(o.name):o.type==="symlink"?r.push(o.name):t.push(o.size?`${o.name} (${o.size})`:o.name);return{...t.length>0&&{files:t},...n.length>0&&{folders:n},...r.length>0&&{links:r}}}function Zf(e){let t={type:e.type==="directory"?"dir":e.type==="symlink"?"link":"file"};return e.depth!==void 0&&e.depth>0&&(t.depth=e.depth),e.size&&e.type==="file"&&(t.size=e.size),e.modified&&(t.modified=e.modified),e.permissions&&(t.permissions=e.permissions),t}function eh(e){let t={},n=e.find(o=>o.type==="file"&&o.path);n?.path&&(t.fetch={tool:"localGetFileContent",query:{path:n.path,minify:"standard"},why:'Read the first listed file (minify:"symbols" for a skeleton, minify:"none" for exact bytes).',confidence:"exact"});let r=e.find(o=>o.type==="directory"&&o.path);return r?.path&&(t.viewDeeper={tool:"localViewStructure",query:{path:r.path},why:"Descend into the first listed subdirectory.",confidence:"exact"}),t.fetch||t.viewDeeper?t:void 0}var $w=["node_modules",".git","dist","build","out","coverage","target",".next",".cache"];function jw(e,t){let n=t??$w,r=new Set(e.split("/").filter(Boolean));return n.filter(o=>!r.has(o))}async function th(e){try{let t=Le(e,P.LOCAL_VIEW_STRUCTURE);if(!t.isValid)return t.errorResult;let n=e.detail==="modified"||e.detail==="full"||e.sortBy==="time";return zw(e,t.sanitizedPath,n)}catch(t){let n=Ee.toolExecutionFailed("LOCAL_VIEW_STRUCTURE",t instanceof Error?t:void 0);return{status:"error",error:n.message,errorCode:n.errorCode}}}function zw(e,t,n=!1){let r=!!(e.maxDepth||e.recursive),o=r?e.maxDepth||(e.recursive?5:2):1,i=Vw(e),s=Ww(e,i),a=r&&s?1e4:1e4,c=jw(t,e.excludeDir),u;try{u=F.queryFileSystem({path:t,recursive:r,includeRoot:!1,showHidden:e.hidden??!1,maxDepth:o,names:i,extensions:e.extensions,entryType:Kw(e),excludeDir:c,limit:a})}catch(L){return qw(L,e,t)}let l=u.entries.map(L=>Yw(L,n,e.detail==="full")),d=qf(l,e),m=e.sortBy??"name";d=d.sort((L,_)=>{let w=0;switch(m){case"size":{let b=L.sizeBytes??(L.size?jr(L.size):0),A=_.sizeBytes??(_.size?jr(_.size):0);w=b-A;break}case"time":n&&L.modified&&_.modified?w=L.modified.localeCompare(_.modified):w=L.name.localeCompare(_.name);break;case"extension":w=(L.extension||"").localeCompare(_.extension||"");break;default:w=L.name.localeCompare(_.name);break}return e.reverse?-w:w}),e.limit&&(d=d.slice(0,e.limit));let p=d.length,{paginatedEntries:f,pagination:g}=ff(d,e),h=e.detail==="full"||e.detail==="modified"?{path:t,entries:f.map(L=>({...Zf(L),path:L.path??`${t.replace(/\/$/,"")}/${L.name}`}))}:{path:t,...Jf(f)},y=[...u.warnings,...Si({skipped:u.skipped,permissionDenied:u.permissionDenied}),...u.wasCapped?[`Results capped at ${a} entries during the walk before sorting \u2014 sortBy:"${m}" only orders that partial set, not the true top-N across the whole tree. Add pattern/extensions/entryType/excludeDir or reduce depth to narrow the scope.`]:[],...g.outOfRange?[`page:${e.page} is out of range (only ${g.totalPages} page(s), ${g.totalEntries} total entries) \u2014 returned page ${g.currentPage} instead.`]:[]],S=p===0,C=mf(d),T={...eh(f)??{},...g.hasMore?{nextPage:Rn(P.LOCAL_VIEW_STRUCTURE,{...e,page:g.currentPage+1},"Continue to the next page of directory entries.")}:{}};return Q({...S?{status:"empty"}:{},...h,summary:C,...g.hasMore||g.totalPages>1||g.outOfRange?{pagination:g}:{},...Object.keys(T).length>0?{next:T}:{},...y.length>0&&{warnings:y}},u.entries.reduce((L,_)=>L+_.path.length,0))}function Ww(e,t){return!!((typeof e.pattern=="string"?e.pattern:void 0)&&!t)}function Vw(e){let t=typeof e.pattern=="string"?e.pattern:void 0;if(t&&!t.includes("["))return t.includes("*")||t.includes("?")?[t]:[`*${t}*`]}function Kw(e){return e.entryType}function Yw(e,t,n){let r=e.entryType==="directory"?"directory":e.entryType==="symlink"?"symlink":"file",o={name:e.relativePath||e.name,path:e.path,type:r,...e.size!==void 0?{size:wn(e.size),sizeBytes:e.size}:{},...e.extension?{extension:e.extension}:{},depth:e.depth};return(n||t)&&e.modifiedMs!==void 0&&(o.modified=new Date(e.modifiedMs).toISOString()),n&&e.permissions&&(o.permissions=Xw(e.permissions)),o}function Xw(e){let t=Number.parseInt(e,8);if(!Number.isFinite(t))return e;let n=["---","--x","-w-","-wx","r--","r-x","rw-","rwx"];return`${n[t>>6&7]}${n[t>>3&7]}${n[t&7]}`}function qw(e,t,n){let r=e instanceof Error?e.message:String(e),o=/ENOENT|not found|no such file/i.test(r),i=/EACCES|permission denied/i.test(r),s=/ENOTDIR|not a directory/i.test(r),a=Ee.pathValidationFailed(n,o?`Directory not found: ${n}`:i?`Permission denied: ${n}`:s?`Not a directory: ${n}`:`Cannot access path: ${n}`);return O(a,t,{toolName:P.LOCAL_VIEW_STRUCTURE})}async function nh(e){let{queries:t}=e;return ee(t||[],async n=>Te({toolName:P.LOCAL_VIEW_STRUCTURE,query:n,contextMessage:"localViewStructure execution failed",execute:async()=>{let r=xe(Ot,n);return r.ok===!1?r.error:await th(r.data)}}),{toolName:P.LOCAL_VIEW_STRUCTURE,keysPriority:["path","summary","pagination","files","folders","entries"]},e)}import{acquirePooledClientDetailed as HT,isLanguageServerAvailable as BT}from"@octocodeai/octocode-engine/lsp/manager";import{resolveWorkspaceRootForFile as UT}from"@octocodeai/octocode-engine/lsp/workspaceRoot";var Jw=new Set(["noLocations","noReferences","noCalls","noTypeHierarchy","noHover"]);function Zw(e){let t=e.payload;return t.kind==="empty"?t.category:t.empty?.category}function rh(e,t){if(t===void 0||t==="progressIdle")return e;let n=Zw(e);if(!n||!Jw.has(n))return e;let r=`Language server did not confirm indexing completion (readiness: ${t}) \u2014 zero results may mean the project is not yet indexed, not that the symbol is absent. Retry the query, or warm the relevant consumer files first.`;return{...e,warnings:[...e.warnings??[],r]}}import{readFile as eT,stat as tT}from"node:fs/promises";import{SymbolResolver as nT,SymbolResolutionError as rT}from"@octocodeai/octocode-engine/lsp/resolver";import{toUri as oT}from"@octocodeai/octocode-engine/lsp/uri";import{LSP_ERROR_CODES as Li}from"@octocodeai/octocode-engine/lsp/lspErrorCodes";async function bc(e,t){let n=e.uri,r=Le({...e,path:n},t);if(!r.isValid)return{ok:!1,error:r.errorResult};let o=r.sanitizedPath;try{if((await tT(o)).isDirectory())return{ok:!1,error:{status:"error",error:`Path is a directory, not a file: ${o}. lspGetSemantics needs a single file uri.`,errorType:"not_a_file",errorCode:Li.LSP_REQUEST_FAILED,hints:["Pass the path to a specific source file (e.g. via search --op on a file, or workspaceSymbol with symbolName for whole-project lookup)."]}}}catch{return{ok:!1,error:{status:"error",error:`File not found: ${o}. Check the path and spelling.`,errorType:"file_not_found",errorCode:Li.LSP_REQUEST_FAILED,hints:[`Could not find file: ${n??"<missing>"}. Run search/localFindFiles to get the exact path first.`]}}}try{return{ok:!0,value:{uri:oT(o),absolutePath:o,content:await eT(o,"utf-8")}}}catch(i){return{ok:!1,error:{status:"error",error:i instanceof Error?i.message:String(i),errorType:"file_not_found",errorCode:Li.LSP_REQUEST_FAILED,hints:[`Could not read file: ${n??"<missing>"}`]}}}}async function oh(e,t){let n=await bc(e,t);if(n.ok===!1)return n;if(e.type==="documentSymbols")return{ok:!1,error:{status:"error",error:"documentSymbols is file-level and does not use a symbol anchor"}};let r=new nT({lineSearchRadius:5});try{let o=r.resolvePositionFromContent(n.value.content,{symbolName:e.symbolName,lineHint:e.lineHint,orderHint:e.orderHint??0}),i=e.symbolName.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),s=new RegExp(`\\b${i}\\b`,"g"),a=(n.value.content.match(s)??[]).length,c=e.lineHint!==void 0?Math.abs(o.foundAtLine-e.lineHint):void 0,u=a>1&&c!==void 0&&c>0?!0:void 0;return{ok:!0,value:{...n.value,resolvedSymbol:{name:e.symbolName,uri:n.value.uri,range:iT(o.position),foundAtLine:o.foundAtLine,orderHint:e.orderHint,position:o.position,...u&&{isAmbiguous:u},...c!==void 0&&c>0?{lineDeviation:c}:{}}}}}catch(o){if(o instanceof rT)return{ok:!1,error:{status:"empty",error:o.message,errorType:"symbol_not_found",errorCode:Li.SYMBOL_NOT_FOUND,searchRadius:o.searchRadius,hints:[`Symbol "${e.symbolName}" was not found near line ${e.lineHint}.`,"Run localSearchCode with the exact symbol name to refresh lineHint, then retry."]}};throw o}}function iT(e){return{start:e,end:{line:e.line,character:e.character}}}import Zr from"node:path";import{readFile as PT}from"node:fs/promises";import{resolveImportAliasDefinitions as xT}from"@octocodeai/octocode-engine/lsp/resolver";var Tt=40,Ai=40,Cc=10;function Pc(e,t){return/unsupported/i.test(t)?"unsupportedOperation":/could not find symbol|symbol.*not found/i.test(t)?"symbolNotFound":/call/i.test(t)?"noCalls":e==="references"?"noReferences":e==="hover"?"noHover":e==="documentSymbols"?"anchorFailed":"noLocations"}function xc(e,t){let n=e.uri??"";return{type:e.type,uri:n,lsp:{},payload:{kind:"empty",category:Pc(e.type,t),reason:t}}}function Ne(e,t,n,r=!1){return{type:e,uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:r},payload:{kind:"empty",category:Pc(e,n),reason:n}}}function Ge(e,t,n){let r=Math.max(1,n),o=Math.max(1,Math.ceil(e.length/r)),i=Math.min(Math.max(1,t),o),s=(i-1)*r,a=e.slice(s,s+r),c=i<o;return{pageItems:a,pagination:{currentPage:i,totalPages:o,totalResults:e.length,hasMore:c,itemsPerPage:r,...c?{nextPage:i+1}:{}}}}function qr(e,t,n,r,o){let i=o.length>0,s=o.map(Fi),{pageItems:a,pagination:c}=Ge(s,e.page??1,e.itemsPerPage??Ai);return{type:e.type,uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:r},payload:i?{kind:n,locations:a}:{kind:"empty",category:"noLocations",reason:`${r} returned no locations`},...i?{pagination:c}:{}}}function wc(e,t,n,r){let o=n.map(d=>{let m=d.uri===t.uri&&d.range.start.line===t.resolvedSymbol.position.line&&d.range.start.character===t.resolvedSymbol.position.character;return{...d,...m?{isDefinition:!0}:{}}}),i=e.groupByFile?ih(o):void 0,s=i??o.map(Fi),{pageItems:a,pagination:c}=Ge(s,e.page??1,e.itemsPerPage??Ai),u=o.length===0?{category:"noReferences",reason:"referencesProvider returned no references"}:void 0,l=r?.possiblyTruncated===!0?[`Reference warmup opened ${r.warmedFiles}/${r.candidates} candidate file(s) and may be incomplete because the candidate set hit the warmup cap; narrow workspaceRoot/path or confirm with localSearchCode before unused/safe-delete claims.`]:[];return{type:"references",uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"referencesProvider",source:"lsp"},payload:{kind:"references",...i?{byFile:a}:{locations:a},totalReferences:o.length,totalFiles:new Set(o.map(d=>d.uri)).size,...o.length>0&&o.every(d=>d.isDefinition)?{definitionOnly:!0}:{},...r?{warmup:r}:{},...u?{empty:u}:{}},pagination:c,...l.length>0?{warnings:l}:{}}}async function Tc(e,t,n){let r=sh(n),o=!!(r.markdown||r.text);return{type:"hover",uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"hoverProvider"},payload:o?{kind:"hover",...r}:{kind:"empty",category:"noHover",reason:"hoverProvider returned no hover content"}}}function ih(e){let t=new Map;for(let n of e){let r=n.range.start.line+1,o=t.get(n.uri);if(o){o.count+=1,o.lines.push(r),n.isDefinition&&(o.hasDefinition=!0);continue}t.set(n.uri,{uri:n.uri,count:1,firstLine:r,firstCharacter:n.range.start.character,lines:[r],...n.isDefinition?{hasDefinition:!0}:{}})}return[...t.values()]}function sh(e){if(!e||typeof e!="object")return{};let n=e.contents;if(typeof n=="string")return{text:n.trim()};if(Array.isArray(n))return{markdown:n.map(r=>ah(r)).join(`
64
+ `).trim()};if(n&&typeof n=="object"){let r=n;if(typeof r.value=="string")return r.kind==="markdown"?{markdown:r.value.trim()}:{text:r.value.trim()}}return{}}function ah(e){if(typeof e=="string")return e;if(e&&typeof e=="object"){let t=e.value;if(typeof t=="string")return t}return String(e)}import{safeReadLineWindow as sT}from"@octocodeai/octocode-engine/lsp/validation";var aT={maxNodes:100,maxRequests:50},ch={truncatedByDepth:!1,truncatedByBudget:!1,visitedNodeCount:0,requestCount:0,cycleCount:0,failedRequestCount:0};function uh(e){return{...aT,...e,visitedNodeCount:0,requestCount:0,truncatedByBudget:!1}}function lh(e){return e.requestCount>=e.maxRequests?(e.truncatedByBudget=!0,!1):(e.requestCount+=1,!0)}function dh(e){return e.visitedNodeCount>=e.maxNodes?(e.truncatedByBudget=!0,!1):(e.visitedNodeCount+=1,!0)}function qe(e,t){return{...e,truncatedByBudget:t.truncatedByBudget,visitedNodeCount:t.visitedNodeCount,requestCount:t.requestCount}}function Jr(e){return`${e.uri}:${e.range.start.line}:${e.name}`}async function ph(e,t,n){if(t<=0)return e;let r=n?.[0]?.start.line??e.range.start.line,o=await sT(e.uri,r,t);if(!o)return e;let i=So(o).length,s=Math.max(0,r-t),a=s+Math.max(0,i-1);return{...e,content:o,displayRange:{startLine:s+1,endLine:a+1}}}async function cT(e,t){return Promise.all(e.map(async n=>({...n,from:await ph(n.from,t,n.fromRanges)})))}async function uT(e,t){return Promise.all(e.map(async n=>({...n,to:await ph(n.to,t)})))}async function Ec(e,t,n,r,o,i=uh(void 0)){if(n<=0||!e)return{calls:[],...ch};if(!lh(i))return qe({calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:0},i);try{let s=await e.getIncomingCalls(t),a=o>0?await cT(s,o):s;if(n===1)return qe({calls:a,truncatedByDepth:a.length>0,cycleCount:0,failedRequestCount:0},i);let c=[];for(let u of a){let l=Jr(u.from);if(r.has(l)){c.push(qe({calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0},i));continue}if(!dh(i)||(r.add(l),c.push(await Ec(e,u.from,n-1,r,o,i)),i.truncatedByBudget))break}return qe({calls:[...a,...c.flatMap(u=>u.calls)],truncatedByDepth:c.some(u=>u.truncatedByDepth),cycleCount:c.reduce((u,l)=>u+l.cycleCount,0),failedRequestCount:c.reduce((u,l)=>u+l.failedRequestCount,0)},i)}catch{return qe({calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1},i)}}async function Lc(e,t,n,r,o,i=uh(void 0)){if(n<=0||!e)return{calls:[],...ch};if(!lh(i))return qe({calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:0},i);try{let s=await e.getOutgoingCalls(t),a=o>0?await uT(s,o):s;if(n===1)return qe({calls:a,truncatedByDepth:a.length>0,cycleCount:0,failedRequestCount:0},i);let c=[];for(let u of a){let l=Jr(u.to);if(r.has(l)){c.push(qe({calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0},i));continue}if(!dh(i)||(r.add(l),c.push(await Lc(e,u.to,n-1,r,o,i)),i.truncatedByBudget))break}return qe({calls:[...a,...c.flatMap(u=>u.calls)],truncatedByDepth:c.some(u=>u.truncatedByDepth),cycleCount:c.reduce((u,l)=>u+l.cycleCount,0),failedRequestCount:c.reduce((u,l)=>u+l.failedRequestCount,0)},i)}catch{return qe({calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1},i)}}var lT=new Set(["unsupportedOperation","symbolNotFound","anchorFailed","noLocations","noReferences","noHover","noCalls","noWorkspaceSymbols","noTypeHierarchy","noDiagnostics"]),dT=new Set(["symbolNotFound","anchorFailed"]);function pT(e){if(e.kind==="empty"&&typeof e.category=="string")return{category:e.category,...typeof e.reason=="string"?{reason:e.reason}:{}};let t=e.empty;if(ut(t)&&typeof t.category=="string")return{category:t.category,...typeof t.reason=="string"?{reason:t.reason}:{}}}function mT(e){switch(e.slice(e.lastIndexOf(".")+1).toLowerCase()){case"rs":return"^\\s*pub\\s";case"py":case"pyi":return"^\\s*(def|class)\\s";case"go":return"^(func|type|var|const)\\s";case"java":case"kt":case"scala":case"cs":return"^\\s*(public|protected|internal)\\s";case"rb":return"^\\s*(def|class|module)\\s";default:return"^\\s*export\\s"}}function fT(e,t){let n=e.symbolName;if(typeof n=="string"&&n.trim())return n.trim();let r=t.resolvedSymbol?.name;if(typeof r=="string"&&r.trim())return r.trim()}function Ac(e,t){if(!_c(t))return t;let n=t.payload,r=n.locations?.[0],o=r?.displayRange?.startLine;if(r?.uri&&typeof o=="number"){let c=r.uri.startsWith("file://")?decodeURIComponent(r.uri.slice(7)):r.uri;return{...t,next:{readSite:{tool:"localGetFileContent",query:{path:c,startLine:Math.max(1,o-3),endLine:(r.displayRange?.endLine??o)+10},why:"Read the top result location with surrounding context",confidence:"exact"}}}}let i=pT(n);if(i?.category==="unsupportedOperation"&&t.type==="documentSymbols"&&t.uri){let c=t.uri.startsWith("file://")?decodeURIComponent(t.uri.slice(7)):t.uri;return{...t,next:{textSearch:{tool:"localSearchCode",query:{path:c,searchText:mT(c),regex:"perl"},why:"documentSymbols is unsupported for this file's language server \u2014 fall back to a regex search over top-level declarations for an outline.",confidence:"low"}}}}let s=fT(e,t);if(!i||!s||!lT.has(i.category))return t;let a={textSearch:{tool:"localSearchCode",query:{keywords:s},why:`Semantic ${t.type} returned no result (${i.category}) \u2014 fall back to a text search for "${s}"`,confidence:"low"}};return dT.has(i.category)&&t.uri&&(a.reAnchor={tool:"lspGetSemantics",query:{type:"documentSymbols",uri:t.uri},why:"Re-anchor: list this file's symbols to find the correct lineHint, then retry the semantic query",confidence:"medium"}),{...t,next:a}}var hT=8;function fh(e){return Q(e,N(e))}function hh(e,t){return e.format!=="compact"||!_c(t)?t:gT(t)}function _c(e){return ut(e)&&typeof e.type=="string"&&typeof e.uri=="string"&&ut(e.payload)}function gT(e){return{...e,format:"compact",payload:yT(e.payload)}}function yT(e){switch(e.kind){case"definition":case"typeDefinition":case"implementation":return{kind:e.kind,locations:e.locations.map(mh)};case"references":return{kind:"references",...e.byFile?{byFile:e.byFile.map(ST)}:{locations:(e.locations??[]).map(mh)},totalReferences:e.totalReferences,totalFiles:e.totalFiles};case"callers":case"callees":case"callHierarchy":return{kind:e.kind,...e.root?{root:gh(e.root)}:{},direction:e.direction,calls:e.calls.map(bT),...e.incomingCalls!==void 0?{incomingCalls:e.incomingCalls}:{},...e.outgoingCalls!==void 0?{outgoingCalls:e.outgoingCalls}:{},completeness:e.completeness};case"documentSymbols":return{kind:"documentSymbols",symbols:e.symbols.map(RT)};case"hover":case"empty":case"workspaceSymbol":case"typeHierarchy":case"diagnostic":return e}}function RT(e){if(!ut(e))return String(e);let t=Ae(e,"line"),n=Ae(e,"character"),r=Ae(e,"endLine"),o=lt(e,"kind"),i=lt(e,"name"),s=Ae(e,"childCount"),a=lt(e,"containerName");return[`${t}:${n}${r!==t?`-${r}`:""}`,o,i,a?`< ${a}`:"",s>0?`children=${s}`:""].filter(Boolean).join(" ")}function mh(e){if(typeof e=="string")return e;let t=e.displayRange?`${e.displayRange.startLine}-${e.displayRange.endLine}`:"?",n=e.isDefinition?" def":"",r=e.content?` | ${Rh(e.content,180)}`:"";return`${e.uri}:${t}${n}${r}`}function ST(e){if(!ut(e))return String(e);let t=lt(e,"uri"),n=Ae(e,"firstLine"),r=Ae(e,"firstCharacter"),o=Ae(e,"count"),i=yh(e,"lines").map(a=>typeof a=="number"?a:void 0).filter(a=>a!==void 0).join(","),s=e.hasDefinition===!0?" def":"";return`${t}:${n}:${r} count=${o} lines=${i}${s}`}function bT(e){if(!ut(e))return String(e);let t=lt(e,"direction"),n=gh(e.item),r=yh(e,"ranges").map(CT).join(","),o=Ae(e,"rangeCount"),i=Ae(e,"rangeSampleCount"),s=lt(e,"contentPreview");return[t,n,r?`ranges=${r}`:"",o>i?`totalRanges=${o}`:"",s?`| ${Rh(s,180)}`:""].filter(Boolean).join(" ")}function gh(e){if(!ut(e))return String(e);let t=lt(e,"name"),n=lt(e,"kind"),r=lt(e,"uri"),o=Ae(e,"line"),i=Ae(e,"endLine"),s=Ae(e,"selectionLine"),a=s>0?` sel=${s}`:"";return`${t} ${n} ${r}:${o}-${i}${a}`}function CT(e){return ut(e)?`${Ae(e,"line")}:${Ae(e,"character")}`:String(e)}function ut(e){return typeof e=="object"&&e!==null}function lt(e,t,n=""){let r=e[t];return typeof r=="string"?r:n}function Ae(e,t,n=0){let r=e[t];return typeof r=="number"?r:n}function yh(e,t){let n=e[t];return Array.isArray(n)?n:[]}function Rh(e,t){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,Math.max(0,t-3))}... (truncated for single-line display \u2014 use charOffset or startLine to read full content)`:n}function Sh(e,t){let n=Ch(e.fromRanges);return{direction:"incoming",item:_i(e.from),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...Ph(e.from,t)}}function bh(e,t){let n=Ch(e.fromRanges);return{direction:"outgoing",item:_i(e.to),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...Ph(e.to,t)}}function _i(e){return{name:e.name,kind:En(e.kind),uri:e.uri,line:e.range.start.line+1,endLine:e.range.end.line+1,...e.selectionRange?{selectionLine:e.selectionRange.start.line+1}:{}}}function Ch(e){let t=new Set,n=[];for(let r of e){let o=r.start.line+1,i=r.start.character,s=`${o}:${i}`;if(!t.has(s)&&(t.add(s),n.push({line:o,character:i}),n.length>=hT))break}return n}function Ph(e,t){return t<=0||!e.content?{}:{contentPreview:e.content}}function En(e){if(typeof e=="string")return e;switch(typeof e=="number"?e:void 0){case 1:return"file";case 2:return"module";case 3:return"namespace";case 4:return"package";case 5:return"class";case 6:return"method";case 7:return"property";case 8:return"field";case 9:return"constructor";case 10:return"enum";case 11:return"interface";case 12:return"function";case 13:return"variable";case 14:return"constant";case 15:return"string";case 16:return"number";case 17:return"boolean";case 18:return"array";case 19:return"object";case 20:return"key";case 21:return"null";case 22:return"enumMember";case 23:return"struct";case 24:return"event";case 25:return"operator";case 26:return"typeParameter";default:return"unknown"}}async function kc(e,t,n){let o=(await n.prepareCallHierarchy(t.absolutePath,t.resolvedSymbol.position,t.content))[0];if(!o)return Ne(e.type,t,"No callable symbol found",!0);let i=e.depth??1,s={calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:0,truncatedByBudget:!1,visitedNodeCount:0,requestCount:0},a=e.type==="callers"||e.type==="callHierarchy"?await Ec(n,o,i,new Set([Jr(o)]),e.contextLines??0):s,c=e.type==="callees"||e.type==="callHierarchy"?await Lc(n,o,i,new Set([Jr(o)]),e.contextLines??0):s,u=y=>/node_modules\/typescript\/lib\/lib\.[^/]*\.d\.ts$/.test(y.to.uri),l=c.calls.filter(u).length,d=c.calls.filter(y=>!u(y)),m=[...a.calls.map(y=>({direction:"incoming",...y})),...d.map(y=>({direction:"outgoing",...y}))],p=m.map(y=>y.direction==="incoming"?Sh(y,e.contextLines??0):bh(y,e.contextLines??0)),{pageItems:f,pagination:g}=Ge(p,e.page??1,e.itemsPerPage??Cc),R=e.type==="callers"?"incoming":e.type==="callees"?"outgoing":"both",h=!a.truncatedByDepth&&!c.truncatedByDepth&&!a.truncatedByBudget&&!c.truncatedByBudget&&a.failedRequestCount+c.failedRequestCount===0;return{type:e.type,uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"callHierarchyProvider"},payload:{kind:e.type,root:_i(o),direction:R,calls:f,incomingCalls:a.calls.length,outgoingCalls:d.length,completeness:{complete:h,truncatedByDepth:a.truncatedByDepth||c.truncatedByDepth,truncatedByBudget:a.truncatedByBudget||c.truncatedByBudget,visitedNodeCount:a.visitedNodeCount+c.visitedNodeCount,requestCount:a.requestCount+c.requestCount,cycleCount:a.cycleCount+c.cycleCount,failedRequestCount:a.failedRequestCount+c.failedRequestCount,dynamicCallsExcluded:!0,...l>0&&{stdlibCallsExcluded:l}},...m.length===0?{empty:{category:"noCalls",reason:"callHierarchyProvider returned no calls"}}:{}},pagination:g}}async function Ic(e,t,n){let o=(await n.prepareTypeHierarchy(t.absolutePath,t.resolvedSymbol.position,t.content))[0];if(!o)return Ne(e.type,t,"No type-hierarchy item found at position",!0);let i=e.type==="supertypes"?"supertypes":"subtypes",s=i==="supertypes"?await n.typeHierarchySupertypes(o):await n.typeHierarchySubtypes(o),{pageItems:a,pagination:c}=Ge(s,e.page??1,e.itemsPerPage??Tt);return{type:e.type,uri:t.uri,resolvedSymbol:Ze(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"typeHierarchyProvider"},payload:s.length>0?{kind:"typeHierarchy",direction:i,root:o,items:a,totalItems:s.length}:{kind:"empty",category:"noTypeHierarchy",reason:`typeHierarchyProvider returned no ${i} for this symbol`},pagination:c}}var Th=new Set(["references","callers","callees","callHierarchy","implementation"]),xh=100,wT=512*1024,wh=["ts","tsx","mts","cts","js","jsx","mjs","cjs"];async function Eh(e,t,n){let r={candidates:0,warmedFiles:0,skippedLarge:0,possiblyTruncated:!1};if(typeof e.openDocument!="function")return r;try{let o=Zr.extname(t.absolutePath).slice(1),i=wh.includes(o)?wh:[o],s=await Ei({path:n,searchText:t.resolvedSymbol.name,regex:"fixed",wholeWord:!0,output:"files",maxFiles:xh,include:i.filter(Boolean).map(c=>`*.${c}`)}),a={candidates:s.files?.length??0,warmedFiles:0,skippedLarge:0,possiblyTruncated:(s.files?.length??0)>=xh||!!s.stats?.capped};for(let c of s.files??[]){let u=typeof c.path=="string"?c.path:void 0;if(!u)continue;let l=Zr.isAbsolute(u)?u:Zr.join(n,u);if(Zr.resolve(l)!==Zr.resolve(t.absolutePath))try{let d=await PT(l,"utf-8");if(d.length>wT){a.skippedLarge+=1;continue}await e.openDocument(l,d),a.warmedFiles+=1}catch{}}return a}catch{return r}}async function Lh(e,t,n,r){switch(e.type){case"definition":return n.hasCapability("definitionProvider")?qr(e,t,"definition","definitionProvider",await xT({anchorUri:t.uri,symbolName:t.resolvedSymbol.name,locations:await n.gotoDefinition(t.absolutePath,t.resolvedSymbol.position,t.content)})):Ne(e.type,t,"definitionProvider unsupported",!0);case"typeDefinition":return n.hasCapability("typeDefinitionProvider")?qr(e,t,"typeDefinition","typeDefinitionProvider",await n.typeDefinition(t.absolutePath,t.resolvedSymbol.position,t.content)):Ne(e.type,t,"typeDefinitionProvider unsupported",!0);case"implementation":return n.hasCapability("implementationProvider")?qr(e,t,"implementation","implementationProvider",await n.implementation(t.absolutePath,t.resolvedSymbol.position,t.content)):Ne(e.type,t,"implementationProvider unsupported",!0);case"references":return n.hasCapability("referencesProvider")?wc(e,t,await n.findReferences(t.absolutePath,t.resolvedSymbol.position,e.includeDeclaration??!0,t.content),r):Ne(e.type,t,"referencesProvider unsupported",!0);case"hover":return n.hasCapability("hoverProvider")?Tc(e,t,await n.hover(t.absolutePath,t.resolvedSymbol.position,t.content)):Ne(e.type,t,"hoverProvider unsupported",!0);case"callers":case"callees":case"callHierarchy":return n.hasCapability("callHierarchyProvider")?kc(e,t,n):Ne(e.type,t,"callHierarchyProvider unsupported",!0);case"supertypes":case"subtypes":return n.hasCapability("typeHierarchyProvider")?Ic(e,t,n):Ne(e.type,t,"typeHierarchyProvider unsupported",!0)}}import Fc from"node:path";import{fileURLToPath as TT}from"node:url";import{unavailableHintFor as ET}from"@octocodeai/octocode-engine/lsp/manager";import{detectLanguageId as LT}from"@octocodeai/octocode-engine/lsp/config";var Oc;function vc(e){return Oc||(Oc=new Set(F.getSupportedJsTsExtensions().map(t=>`.${t}`))),Oc.has(Fc.extname(e).toLowerCase())}function ze(e,t,n){let r=LT(e),o=ET(r,void 0),i=n?.message?` LSP startup detail (${n.kind??"startupFailed"}): ${n.message}.`:"";throw new Se(G.LSP_SERVER_UNAVAILABLE,`No ${r} language server is available for ${e}, so "${t}" cannot be answered semantically.${i} ${o} Meanwhile, use localSearchCode (text or structural search) to find the symbol's occurrences and localGetFileContent to read the surrounding code.`)}var AT=["py","rs","go","java","kt","cs","c","cc","cpp","h","hpp","rb","php","swift","scala","lua","dart","ex","exs","erl","hrl","clj","cljs"];function Ah(e,t){let n=e.startsWith("file://")?TT(e):e;return Fc.isAbsolute(n)?n:Fc.resolve(t,n)}function Dc(){return[...F.getSupportedJsTsExtensions(),...AT]}function _h(){return Dc().map(e=>`**/*.${e}`)}var _T=[".git","node_modules","dist","out","coverage","target"];async function kh(e,t){let n=e.symbolName?.trim();if(n)try{return(await F.searchRipgrep({path:t,pattern:n,fixedString:!0,caseSensitive:!0,filesOnly:!0,include:_h(),excludeDir:[..._T],maxSnippetChars:1})).files[0]?.path}catch{return}}async function Mc(e,t){if(e.uri)return Ah(e.uri,t);let n=await kh(e,t);if(n)return n;try{let o=F.queryFileSystem({path:t,recursive:!0,includeRoot:!1,showHidden:!1,entryType:"f",extensions:Dc(),maxDepth:5,limit:1}).entries[0];if(o)return o.path}catch{}return t}function Nc(e){return e instanceof Error?e.message:String(e)}function Gc(e,t){if(!vc(e))return null;try{let n=F.extractJsSymbols(t,e);if(!n)return null;let r=JSON.parse(n);return Array.isArray(r)?r:null}catch{return null}}function kT(e){if(!e||typeof e!="object")return!1;let t=e,n=r=>!!r&&typeof r=="object"&&typeof r.line=="number"&&typeof r.character=="number";return n(t.start)&&n(t.end)}function Ih(e,t){if(!vc(e))return null;try{let n=F.extractGraphFacts(t,e);if(!n)return null;let r=JSON.parse(n),i=(Array.isArray(r.declarations)?r.declarations:[]).filter(s=>typeof s.name=="string"&&bi(s.name)&&typeof s.kind=="string"&&kT(s.range)).map(s=>({name:s.name,kind:s.kind,range:s.range}));return i.length>0?i:null}catch{return null}}import{acquirePooledClient as IT,isLanguageServerAvailable as OT}from"@octocodeai/octocode-engine/lsp/manager";import{resolveWorkspaceRootForFile as FT}from"@octocodeai/octocode-engine/lsp/workspaceRoot";async function Uc(e){let t=await bc(e,le);if(t.ok===!1)return t.error;let n=e.workspaceRoot??await FT(t.value.absolutePath),r=await OT(t.value.absolutePath,n),o=r?await IT(n,t.value.absolutePath):null,i=!!o?.hasCapability("documentSymbolProvider"),s=[],a,c=Gc(t.value.uri,t.value.content),u=c?.length?null:Ih(t.value.uri,t.value.content);if(c?.length)s=c,a="native";else if(u?.length)s=u,a="native-graph-facts";else if(i&&o){let h=await o.documentSymbols(t.value.absolutePath,t.value.content);s=Array.isArray(h)?h:[],a="lsp"}else{let h=od(t.value.content,t.value.uri);h&&(s=h,a="markdown")}let l=a!==void 0;!l&&!r&&ze(t.value.uri,"documentSymbols");let d=Oh(s),m=vh(s),{pageItems:p,pagination:f}=Ge(d,e.page??1,e.itemsPerPage??Tt),g=Dh(d,h=>h.kind),R=l?void 0:{category:"unsupportedOperation",reason:"documentSymbolProvider unsupported"};return{type:"documentSymbols",uri:t.value.uri,lsp:{serverAvailable:r,...a==="lsp"?{provider:"documentSymbolProvider"}:{},...a?{source:a}:{}},summary:{totalSymbols:d.length,returnedSymbols:p.length,topLevelSymbols:m,kinds:g},payload:{kind:"documentSymbols",symbols:p,...R?{empty:R}:{}},pagination:f}}function Oh(e){let t=[];for(let n of e)Qc(n,t);return t.sort((n,r)=>n.line-r.line||n.character-r.character)}function Qc(e,t,n){if(!e||typeof e!="object")return;let r=e,o=Fh(r);if(typeof r.name=="string"&&o&&t.push({name:r.name,kind:En(r.kind),line:o.start.line+1,character:o.start.character,endLine:o.end.line+1,childCount:Array.isArray(r.children)?r.children.length:0,...n?{containerName:n}:{}}),Array.isArray(r.children)&&vT.has(En(r.kind))){let i=typeof r.name=="string"?r.name:n;for(let s of r.children)Qc(s,t,i)}}var vT=new Set(["file","module","namespace","package","class","enum","interface","markdownHeading","struct"]);function Fh(e){if(Hc(e.range))return e.range;let t=e.location;return t&&Hc(t.range)?t.range:void 0}function Hc(e){if(!e||typeof e!="object")return!1;let t=e;return Bc(t.start)&&Bc(t.end)}function Bc(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.line=="number"&&typeof t.character=="number"}function vh(e){return e.filter(t=>t&&typeof t=="object"&&"name"in t).length}function Dh(e,t){let n={};for(let r of e){let o=t(r);n[o]=(n[o]??0)+1}return n}import Mh from"node:path";import{readFile as DT}from"node:fs/promises";import{acquirePooledClientDetailed as Nh,isLanguageServerAvailable as Gh}from"@octocodeai/octocode-engine/lsp/manager";import{resolveImportAliasDefinitions as MT}from"@octocodeai/octocode-engine/lsp/resolver";import{resolveWorkspaceRootForFile as Hh}from"@octocodeai/octocode-engine/lsp/workspaceRoot";async function $c(e){let t=e.symbolName??"",n=Mh.resolve(e.workspaceRoot??(e.uri?await Hh(e.uri):process.cwd())),r=await Mc(e,n);await Gh(r,n)||ze(r,"workspaceSymbol");let i=await Nh(n,r);i.ok===!1&&ze(r,"workspaceSymbol",i);let s=i.client;if(!s.hasCapability("workspaceSymbolProvider"))return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:"workspaceSymbolProvider unsupported"}};let a;try{Mh.extname(r)&&await s.openDocument(r),a=await s.workspaceSymbol(t)}catch(d){return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:`workspaceSymbolProvider failed: ${Nc(d)}`}}}let c=await GT(s,Bh(a)),{pageItems:u,pagination:l}=Ge(c,e.page??1,e.itemsPerPage??Tt);return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},summary:{query:t,totalSymbols:c.length},payload:c.length>0?{kind:"workspaceSymbol",query:t,symbols:u,totalSymbols:c.length}:{kind:"empty",category:"noWorkspaceSymbols",reason:`workspaceSymbolProvider returned no symbols for query "${t}"`},pagination:l}}var NT=10;async function GT(e,t){return t.length===0||t.length>NT?t:Promise.all(t.map(async n=>{try{if(!n.uri)return n;let r=n.uri.startsWith("file://")?decodeURIComponent(n.uri.slice(7)):n.uri,o=await DT(r,"utf8");await e.openDocument(r);let i=await MT({anchorUri:r,symbolName:n.name,locations:await e.gotoDefinition(r,{line:n.line-1,character:n.character},o)});if(!Array.isArray(i)||i.length!==1)return n;let s=i[0],a=(s.range?.start?.line??-1)+1;return!s.uri||a<1||s.uri===n.uri&&a===n.line?n:{...n,uri:s.uri,line:a,endLine:(s.range?.end?.line??s.range?.start?.line??a-1)+1,character:s.range?.start?.character??n.character}}catch{return n}}))}function Bh(e){return e.flatMap(t=>{if(!t||typeof t!="object")return[];let n=t,r=typeof n.name=="string"?n.name:void 0;if(!r)return[];let o=n.kind,i=n.location,s=i?.range,a=typeof i?.uri=="string"?i.uri:"",c=(s?.start?.line??0)+1,u=(s?.end?.line??s?.start?.line??0)+1,l=typeof n.containerName=="string"?n.containerName:void 0;return[{name:r,kind:En(o),line:c,character:s?.start?.character??0,endLine:u,childCount:0,...l?{containerName:l}:{},uri:a}]})}async function jc(e){let t=e.uri??"",n=e.workspaceRoot??(t?await Hh(t):process.cwd());await Gh(t,n)||ze(t,"diagnostic");let o=await Nh(n,t);o.ok===!1&&ze(t,"diagnostic",o);let i=o.client;if(!i.hasCapability("diagnosticProvider"))return{type:"diagnostic",uri:t,lsp:{serverAvailable:!0,provider:"diagnosticProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:"diagnosticProvider (pull) unsupported \u2014 server uses push (publishDiagnostics) instead"},warnings:['This server pushes diagnostics via textDocument/publishDiagnostics. Pull diagnostics (type: "diagnostic") require LSP 3.17 pull support. Check server docs to enable it.']};let s=await i.getDiagnostics(t),a=Uh(s),c=a.filter(m=>m.severity===1).length,u=a.filter(m=>m.severity===2).length,{pageItems:l,pagination:d}=Ge(a,e.page??1,e.itemsPerPage??Tt);return{type:"diagnostic",uri:t,lsp:{serverAvailable:!0,provider:"diagnosticProvider"},summary:{totalDiagnostics:a.length,errorCount:c,warningCount:u},payload:a.length>0?{kind:"diagnostic",diagnostics:l,totalDiagnostics:a.length,errorCount:c,warningCount:u}:{kind:"empty",category:"noDiagnostics",reason:"No diagnostics \u2014 file has no errors or warnings"},pagination:d}}function Uh(e){if(e&&typeof e=="object"){let t=e;return(Array.isArray(t.items)?t.items:[]).flatMap(r=>Qh(r))}return[]}function Qh(e){if(!e||typeof e!="object")return[];let t=e,n=t.range,r=typeof t.message=="string"?t.message:"";return r?[{severity:typeof t.severity=="number"?t.severity:void 0,message:r,line:(n?.start?.line??0)+1,endLine:(n?.end?.line??n?.start?.line??0)+1,character:n?.start?.character??0,...t.code!==void 0?{code:t.code}:{},...typeof t.source=="string"?{source:t.source}:{}}]:[]}async function $h(e){return ee(e.queries||[],async t=>Te({toolName:le,query:t,contextMessage:"lspGetSemantics execution failed",execute:async()=>{let n=await QT(t);return fh(Ac(t,hh(t,n)))}}),{toolName:le,minQueryTimeoutMs:3e4},e)}async function QT(e){if(e.type==="documentSymbols")return Uc(e);if(e.type==="workspaceSymbol")return $c(e);if(e.type==="diagnostic")return jc(e);let t=await oh(e,le);if(t.ok===!1){let u=typeof t.error.error=="string"?t.error.error:"Symbol anchor resolution failed";return xc(e,u)}let n=e.workspaceRoot??await UT(t.value.absolutePath);await BT(t.value.absolutePath,n)||ze(t.value.uri,e.type);let o=await HT(n,t.value.absolutePath);o.ok===!1&&ze(t.value.uri,e.type,o);let i=o.client,s=Th.has(e.type)?await Eh(i,t.value,n):void 0,a=i.getReadiness?.(),c=await Lh(e,t.value,i,s);return rh(c,a)}var ki={hasTool(e){return Ls(e)},getDescription(e){return Es[e]??""},getToolName(e){return P[e]??String(e)}};var zc=(e,t=ki)=>t.getDescription(e);function $T(e,t){return t.getToolName(e)}function be(e,t,n){let r=$T(t,e);return{...n,name:r,description:zc(r,e)}}var Je={security:"remote",requiresServerRuntime:!0,requiresProviders:!0};function jT(e=ki){let t=be(e,"GITHUB_SEARCH_CODE",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:In,inputSchema:On,executionFn:Wp,...Je}}),n=be(e,"GITHUB_FETCH_CONTENT",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Lt,inputSchema:kn,executionFn:Hp,...Je}}),r=be(e,"GITHUB_VIEW_REPO_STRUCTURE",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Un,inputSchema:Qn,executionFn:Am,...Je}}),o=be(e,"GITHUB_SEARCH_REPOSITORIES",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:Hn,inputSchema:Bn,executionFn:Lm,...Je}}),i=be(e,"GITHUB_PULL_REQUESTS",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:Fn,inputSchema:vn,executionFn:pm,...Je}}),s=be(e,"GITHUB_ISSUES",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:Dn,inputSchema:Mn,executionFn:mm,...Je}}),a=be(e,"GITHUB_COMMITS",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:Nn,inputSchema:Gn,executionFn:fm,...Je}}),c=be(e,"GITHUB_RELEASES",{isDefault:!1,isLocal:!1,type:"history",direct:{schema:qt,inputSchema:Jt,executionFn:hm,...Je}}),u=be(e,"GITHUB_DISCUSSIONS",{isDefault:!1,isLocal:!1,type:"history",direct:{schema:Zt,inputSchema:en,executionFn:ym,...Je}}),l=be(e,"PACKAGE_SEARCH",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:$n,inputSchema:jn,executionFn:zm,security:"remote",requiresServerRuntime:!0}}),d=be(e,"GITHUB_CLONE_REPO",{isDefault:!0,isLocal:!0,isClone:!0,type:"content",skipMetadataCheck:!0,direct:{schema:Xt,inputSchema:An,executionFn:mp,...Je}}),m=be(e,"LOCAL_RIPGREP",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:tt,inputSchema:Yn,executionFn:Vf,security:"basic"}}),p=be(e,"LOCAL_VIEW_STRUCTURE",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:Ot,inputSchema:Xn,executionFn:nh,security:"basic"}}),f=be(e,"LOCAL_FIND_FILES",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:kt,inputSchema:Vn,executionFn:yf,security:"basic"}}),g=be(e,"LOCAL_FIND_DEAD_CODE",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:It,inputSchema:Kn,executionFn:_f,security:"basic"}}),R=be(e,"LOCAL_FETCH_CONTENT",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:_t,inputSchema:zn,executionFn:df,security:"basic"}}),h={name:le,description:zc(le,e),isDefault:!0,isLocal:!0,skipMetadataCheck:!0,type:"content",direct:{schema:qn,inputSchema:Jn,executionFn:$h,security:"basic",requiresServerRuntime:!0}},y=[t,n,r,o,i,s,a,...Ln()?[c]:[],...Vt()?[u]:[],l,d,m,p,f,g,R,h];return{GITHUB_SEARCH_CODE:t,GITHUB_FETCH_CONTENT:n,GITHUB_VIEW_REPO_STRUCTURE:r,GITHUB_SEARCH_REPOSITORIES:o,GITHUB_PULL_REQUESTS:i,GITHUB_ISSUES:s,GITHUB_COMMITS:a,GITHUB_RELEASES:c,GITHUB_DISCUSSIONS:u,PACKAGE_SEARCH:l,GITHUB_CLONE_REPO:d,LOCAL_RIPGREP:m,LOCAL_VIEW_STRUCTURE:p,LOCAL_FIND_FILES:f,LOCAL_FIND_DEAD_CODE:g,LOCAL_FETCH_CONTENT:R,LSP_GET_SEMANTIC_CONTENT:h,ALL_TOOLS:y}}var Re=jT(),pW=Re.GITHUB_SEARCH_CODE,mW=Re.GITHUB_FETCH_CONTENT,fW=Re.GITHUB_VIEW_REPO_STRUCTURE,hW=Re.GITHUB_SEARCH_REPOSITORIES,gW=Re.GITHUB_PULL_REQUESTS,yW=Re.GITHUB_ISSUES,RW=Re.GITHUB_COMMITS,SW=Re.GITHUB_RELEASES,bW=Re.GITHUB_DISCUSSIONS,CW=Re.PACKAGE_SEARCH,PW=Re.GITHUB_CLONE_REPO,xW=Re.LOCAL_RIPGREP,wW=Re.LOCAL_VIEW_STRUCTURE,TW=Re.LOCAL_FIND_FILES,EW=Re.LOCAL_FIND_DEAD_CODE,LW=Re.LOCAL_FETCH_CONTENT,AW=Re.LSP_GET_SEMANTIC_CONTENT,jh=Re.ALL_TOOLS;import{ContentSanitizer as zT}from"@octocodeai/octocode-engine/security";import{getRuntimeSurface as WT}from"@octocodeai/config";var Wh="OCTOCODE_MCP_FULL_TEXT",VT="[content withheld: sanitization failed \u2014 retry the call; if this persists, report it]";function Wc(e){let t=e;if(t.structuredContent)try{t={...t,structuredContent:Qe(t.structuredContent)}}catch{t={...t,structuredContent:{status:"error",code:"SANITIZATION_FAILED",error:"structuredContent withheld: sanitization failed \u2014 retry the call; if this persists, report it"},isError:!0}}return KT(t)?YT(t):(t.content?.length&&(t={...t,content:t.content.map(n=>{if(n.type==="text"&&"text"in n&&typeof n.text=="string")try{let{content:r}=zT.sanitizeContent(n.text);return{...n,text:r}}catch{return{...n,text:VT}}return n})}),t)}function KT(e){return WT()==="mcp"&&process.env[Wh]!=="true"&&e.isError!==!0&&e.structuredContent!==void 0}function YT(e){let t=(e.content??[]).filter(n=>n.type!=="text");return{...e,content:[{type:"text",text:XT(e.structuredContent)},...t]}}var zh=3;function XT(e){let t=["structuredContent available"];if(eo(e)){if(typeof e.status=="string"&&t.push(`status=${e.status}`),Array.isArray(e.results)){t.push(`results=${e.results.length}`);let r=JT(e.results);r.error>0&&t.push(`errors=${r.error}`),r.empty>0&&t.push(`empty=${r.empty}`)}let n=e.pagination;if(eo(n)&&typeof n.hasMore=="boolean"&&t.push(`hasMore=${n.hasMore}`),Array.isArray(e.results)&&e.results.length>0){let r=e.results.slice(0,zh).map(qT).filter(Boolean);if(r.length>0){let o=e.results.length-zh;t.push(`[${r.join(" \xB7 ")}${o>0?` \xB7 +${o} more`:""}]`)}}}return`${t.join(" \xB7 ")}. Read structuredContent for full data; if your client cannot read structuredContent, set ${Wh}=true.`}function qT(e){if(!eo(e))return"";let t=[];typeof e.id=="string"&&t.push(e.id),t.push(typeof e.status=="string"?e.status:"ok");let n=e.data;return eo(n)&&typeof n.path=="string"&&n.path&&t.push(n.path.split("/").slice(-2).join("/").slice(0,80)),t.join(" ")}function JT(e){let t=0,n=0;for(let r of e)eo(r)&&(r.status==="error"&&(t+=1),r.status==="empty"&&(n+=1));return{error:t,empty:n}}function eo(e){return typeof e=="object"&&e!==null}var ZT="TOOL_CALLBACK_EXCEPTION";function Vc(e,t){let n=eE(t),r={content:[{type:"text",text:`error: tool "${e}" threw an exception
65
+ message: ${n.message}`}],structuredContent:{status:"error",tool:e,code:ZT,error:{name:n.name,message:n.message,code:n.code}},isError:!0};try{return Wc(r)}catch{return r}}function eE(e){if(e instanceof Error){let t=e.code;return{name:e.name||"Error",message:e.message||String(e),code:typeof t=="string"?t:void 0}}if(typeof e=="string")return{name:"Error",message:e};if(e&&typeof e=="object"){let t=e,n=typeof t.message=="string"?t.message:tE(t)??"Unknown error",r=typeof t.name=="string"?t.name:"Error",o=typeof t.code=="string"?t.code:void 0;return{name:r,message:n,code:o}}return{name:"Error",message:e===void 0?"undefined":String(e)}}function tE(e){try{return JSON.stringify(e)}catch{return}}import{withSecurityValidation as nE,withBasicSecurityValidation as rE}from"@octocodeai/octocode-engine/security";function Vh(e,t){let n=nE(e,(r,o)=>t(r,o));return(r,o)=>n(r,o)}function Kh(e,t){let n=rE((r,o)=>e(r,o),t);return(r,o)=>n(r,o)}var Ii=null,Oi=null,iE=Al;function sE(e){let t=e;return n=>t(n)}function aE(e){let{direct:t}=e;return{name:e.name,schema:t.schema,inputSchema:t.inputSchema,execute:sE(t.executionFn),security:t.security,isLocal:e.isLocal,isClone:e.isClone,requiresServerRuntime:t.requiresServerRuntime,requiresProviders:t.requiresProviders}}var cE=jh.map(aE);function uE(e){return cE.find(t=>t.name===e)}async function Yh(e,t){let n=uE(e);if(!n)throw new Error(`Unknown tool: ${e}`);try{let r=lE(n,t);return await dE(n),pE(n),await mE(n,r)}catch(r){return Vc(n.name,r)}}function lE(e,t){let n=e.inputSchema.safeParse(t);if(!n.success)throw n.error;return n.data}async function dE(e){e.requiresServerRuntime&&(Ii||(Ii=iE().catch(t=>{throw Ii=null,t})),await Ii),e.requiresProviders&&(Oi||(Oi=vd().then(()=>{}).catch(t=>{throw Oi=null,t})),await Oi)}function pE(e){if(!e.isLocal&&!e.isClone)return;let t=oE();if(e.isLocal&&!t.local.enabled){let n=new Error(`Tool "${e.name}" requires local tools. Set ENABLE_LOCAL=true to use it.`);throw n.code="localToolsDisabled",n}}async function mE(e,t){try{let n=e.security==="remote"?await fE(e,t):await hE(e,t);return Wc(n)}catch(n){return Vc(e.name,n)}}async function fE(e,t){return Vh(e.name,async(r,o)=>e.execute({...r,authInfo:o.authInfo,sessionId:o.sessionId,signal:o.signal}))(t,{})}async function hE(e,t){return Kh(e.execute,e.name)(t)}import{completeMetadata as gE}from"@octocodeai/octocode-core";var Kc=null;function yE(){return Kc||(Kc=gE),Kc}async function RE(){return yE()}export{Hi as DIRECT_TOOL_CATEGORIES,Nu as DIRECT_TOOL_DEFINITIONS,Fe as DirectToolInputError,Hg as buildDirectToolExampleQuery,Yh as executeDirectTool,nt as findDirectToolDefinition,lb as formatCallToolResultForOutput,Ig as formatDirectToolMetadataSchemaText,vg as formatDirectToolOutputSchemaText,kg as formatDirectToolSchemaText,Og as getDirectToolAutoFilledFields,Ft as getDirectToolCategory,Dg as getDirectToolDescription,er as getDirectToolDisplayFields,Fg as getDirectToolOutputFields,RE as loadToolContent,Wu as prepareDirectToolInput,zg as prepareDirectToolInputFromJsonText,Ag as sortDirectToolNames};