@octocodeai/octocode-tools-core 16.5.1 → 16.6.0

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 (90) hide show
  1. package/README.md +113 -95
  2. package/dist/direct.js +38 -33
  3. package/dist/github/githubAPI.d.ts +22 -0
  4. package/dist/github/history.d.ts +3 -0
  5. package/dist/github/prTransformation.d.ts +1 -1
  6. package/dist/index.d.ts +6 -8
  7. package/dist/index.js +45 -40
  8. package/dist/oql/adapters/compile.d.ts +25 -0
  9. package/dist/oql/adapters/github.d.ts +3 -0
  10. package/dist/oql/adapters/local.d.ts +7 -0
  11. package/dist/oql/adapters/materialize.d.ts +11 -0
  12. package/dist/oql/adapters/pagination.d.ts +21 -0
  13. package/dist/oql/adapters/researchTargets.d.ts +50 -0
  14. package/dist/oql/adapters/resultMap.d.ts +20 -0
  15. package/dist/oql/adapters/ruleYaml.d.ts +11 -0
  16. package/dist/oql/adapters/runner.d.ts +14 -0
  17. package/dist/oql/adapters/v2.d.ts +32 -0
  18. package/dist/oql/capabilities.d.ts +31 -0
  19. package/dist/oql/defaults.d.ts +26 -0
  20. package/dist/oql/diagnostics.d.ts +25 -0
  21. package/dist/oql/diffLanes.d.ts +29 -0
  22. package/dist/oql/envelope.d.ts +19 -0
  23. package/dist/oql/features.d.ts +7 -0
  24. package/dist/oql/index.d.ts +26 -0
  25. package/dist/oql/index.js +49 -0
  26. package/dist/oql/normalize.d.ts +5 -0
  27. package/dist/oql/planner.d.ts +7 -0
  28. package/dist/oql/research/analyze.d.ts +134 -0
  29. package/dist/oql/research/packets.d.ts +80 -0
  30. package/dist/oql/run.d.ts +32 -0
  31. package/dist/oql/schema.d.ts +1018 -0
  32. package/dist/oql/schemeText.d.ts +138 -0
  33. package/dist/oql/shorthand.d.ts +177 -0
  34. package/dist/oql/targetParams.d.ts +20 -0
  35. package/dist/oql/transformers/contract.d.ts +19 -0
  36. package/dist/oql/transformers/github/code.d.ts +17 -0
  37. package/dist/oql/transformers/github/common.d.ts +8 -0
  38. package/dist/oql/transformers/language.d.ts +1 -0
  39. package/dist/oql/transformers/registry.d.ts +16 -0
  40. package/dist/oql/transformers/types.d.ts +11 -0
  41. package/dist/oql/types.d.ts +633 -0
  42. package/dist/oql/v2params.d.ts +22 -0
  43. package/dist/providers/types.d.ts +1 -1
  44. package/dist/schema.d.ts +13 -0
  45. package/dist/schema.js +8 -0
  46. package/dist/serverConfig.d.ts +0 -1
  47. package/dist/session.d.ts +2 -24
  48. package/dist/shared/config/defaults.d.ts +1 -2
  49. package/dist/shared/config/index.d.ts +2 -3
  50. package/dist/shared/config/index.js +2 -3
  51. package/dist/shared/config/resolverSections.d.ts +1 -3
  52. package/dist/shared/config/runtimeSurface.d.ts +2 -2
  53. package/dist/shared/config/schemas.d.ts +0 -1
  54. package/dist/shared/config/types.d.ts +0 -8
  55. package/dist/shared/credentials/index.js +1 -2
  56. package/dist/shared/index.d.ts +0 -1
  57. package/dist/shared/languageSelectors.d.ts +23 -0
  58. package/dist/shared/paths.d.ts +0 -2
  59. package/dist/shared/paths.js +1 -1
  60. package/dist/shared/session/index.js +1 -2
  61. package/dist/tools/directToolCatalog.d.ts +15 -56
  62. package/dist/tools/directToolCatalog.exec.d.ts +11 -0
  63. package/dist/tools/directToolCatalog.meta.d.ts +82 -0
  64. package/dist/tools/github_clone_repo/cache.d.ts +1 -1
  65. package/dist/tools/github_clone_repo/types.d.ts +2 -0
  66. package/dist/tools/github_fetch_content/scheme.d.ts +104 -0
  67. package/dist/tools/github_fetch_content/types.d.ts +27 -0
  68. package/dist/tools/lsp/semantic_content/scheme.d.ts +170 -2
  69. package/dist/tools/lsp/shared/resolveSymbolAnchor.d.ts +2 -2
  70. package/dist/tools/lsp/shared/semanticTypes.d.ts +34 -5
  71. package/dist/tools/oql_search/execution.d.ts +7 -0
  72. package/dist/tools/package_search/execution.d.ts +10 -0
  73. package/dist/tools/providerMappers.d.ts +7 -7
  74. package/dist/tools/toolConfig.d.ts +1 -0
  75. package/dist/tools/toolNames.d.ts +2 -0
  76. package/dist/types/server.d.ts +0 -1
  77. package/dist/types/session.d.ts +0 -19
  78. package/dist/utils/contextUtils.d.ts +15 -1
  79. package/dist/utils/core/types.d.ts +2 -1
  80. package/dist/utils/markdownOutline.d.ts +10 -0
  81. package/dist/utils/response/groupedFinalizer.d.ts +0 -23
  82. package/package.json +11 -3
  83. package/dist/commands/BaseCommandBuilder.d.ts +0 -14
  84. package/dist/commands/FindCommandBuilder.d.ts +0 -23
  85. package/dist/commands/LsCommandBuilder.d.ts +0 -15
  86. package/dist/shared/logger/index.d.ts +0 -2
  87. package/dist/shared/logger/logger.d.ts +0 -17
  88. package/dist/utils/pagination/outputSizeLimit.d.ts +0 -16
  89. package/dist/utils/ranking/evidenceRanker.d.ts +0 -86
  90. package/dist/utils/response/structuredPagination.d.ts +0 -9
package/dist/direct.js CHANGED
@@ -5,42 +5,47 @@ 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
- import{z as as}from"zod";var zp=null;function Qp(e){let t=`[${e.module}]`,n=e.data&&Object.keys(e.data).length>0?` ${JSON.stringify(e.data)}`:"";process.stderr.write(`${t} ${e.level}: ${e.message}${n}
9
- `)}function Xe(e){function t(n,r,o){let i={level:n,module:e,message:r,...o&&{data:o}};(zp??Qp)(i)}return{debug:(n,r)=>t("debug",n,r),info:(n,r)=>t("info",n,r),warn:(n,r)=>t("warn",n,r),error:(n,r)=>t("error",n,r)}}function tt(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/\/$/,"")}function xt(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 Hn(e){if(!e.token.refreshTokenExpiresAt)return!1;let t=new Date(e.token.refreshTokenExpiresAt);return isNaN(t.getTime())?!0:new Date>=t}var Kt=new Map,$p=300*1e3;function jp(e){let t=tt(e),n=Kt.get(t);return!n||Date.now()-n.cachedAt>=$p?!1:n.credentials?!xt(n.credentials):!0}function Xr(e){e?Kt.delete(tt(e)):Kt.clear()}function hs(e){let t=tt(e);if(jp(t))return Kt.get(t).credentials}function ys(e,t){let n=tt(e);Kt.set(n,{credentials:t,cachedAt:Date.now()})}import{existsSync as Cs,readFileSync as Ts,writeFileSync as Ps,unlinkSync as hE,statSync as tm,chmodSync as nm}from"node:fs";import{createCipheriv as rm,createDecipheriv as om,randomBytes as Es}from"node:crypto";import{existsSync as Kp,mkdirSync as Yp}from"node:fs";import{join as ue}from"node:path";import Gn from"node:os";import Vp from"node:path";var Un=Gn.platform()==="win32",Jr=Gn.platform()==="darwin",Wp=Gn.platform()==="linux",At=Gn.homedir();function Zr(){return Un?process.env.APPDATA||Vp.join(At,"AppData","Roaming"):At}var qr=".octocode",Xp=448;function Jp(e){let t=process.env[e];return t&&t.trim().length>0?t:void 0}function Zp(){return Un?ue(Zr(),qr):Jr?ue(At,qr):ue(Jp("XDG_CONFIG_HOME")??ue(At,".config"),qr)}var Re=Zp(),be={home:Re,config:ue(Re,".octocoderc"),credentials:ue(Re,"credentials.json"),key:ue(Re,".key"),session:ue(Re,"session.json"),stats:ue(Re,"stats.json"),tmp:ue(Re,"tmp"),clone:ue(Re,"tmp","clone"),tree:ue(Re,"tmp","tree"),binary:ue(Re,"tmp","binary"),repos:ue(Re,"tmp","clone"),logs:ue(Re,"logs"),unzip:ue(Re,"tmp","unzip"),cliConfig:ue(Re,"config.json"),lspConfig:ue(Re,"lsp-servers.json")};function Rs(){Kp(be.home)||Yp(be.home,{recursive:!0,mode:Xp})}import{z as le}from"zod";var qp=le.object({token:le.string(),tokenType:le.literal("oauth"),scopes:le.array(le.string()).optional(),refreshToken:le.string().optional(),expiresAt:le.string().optional(),refreshTokenExpiresAt:le.string().optional()}),em=le.object({hostname:le.string(),username:le.string(),token:qp,gitProtocol:le.enum(["ssh","https"]),createdAt:le.string(),updatedAt:le.string()}),bs=le.object({version:le.number(),credentials:le.record(le.string(),em)});var Ss=Xe("token-storage");function im(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***")}var ws=be.home,mt=be.credentials,pt=be.key,_s="aes-256-gcm",sm=16;function ft(){Rs()}function xs(){if(ft(),Cs(pt))return tm(pt).mode&511&63&&nm(pt,384),Buffer.from(Ts(pt,"utf8"),"hex");let e=Es(32);return Ps(pt,e.toString("hex"),{mode:384}),e}function eo(e){let t=xs(),n=Es(sm),r=rm(_s,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 to(e){let t=xs(),[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=om(_s,t,i);a.setAuthTag(s);let c=a.update(o,"hex","utf8");return c+=a.final("utf8"),c}function Bn(){if(ft(),!Cs(mt))return{version:1,credentials:{}};try{let e=Ts(mt,"utf8"),t=to(e),n=JSON.parse(t),r=bs.safeParse(n);return r.success?r.data:(Ss.warn("Credentials file has invalid format \u2014 starting fresh",{file:mt}),{version:1,credentials:{}})}catch(e){let t=e instanceof Error&&e.message?im(e.message):void 0;return Ss.warn("Could not read credentials file \u2014 you may need to login again",{file:mt,...t&&{reason:t}}),{version:1,credentials:{}}}}function As(e){ft();let t=eo(JSON.stringify(e,null,2));Ps(mt,t,{mode:384})}import{refreshToken as am}from"@octokit/oauth-methods";import{request as cm}from"@octokit/request";var Yt="178c6fc778ccc68e1d6a",Lt="github.com";function um(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 lm(e){return e==="github.com"||e===Lt?"https://api.github.com":`https://${e}/api/v3`}async function Ls(e,t=Lt,n=Yt){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(Hn(r))return{success:!1,error:"Refresh token has expired. Please login again."};try{let o=await am({clientType:"github-app",clientId:n,clientSecret:"",refreshToken:r.token.refreshToken,request:cm.defaults({baseUrl:lm(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?um(o.message):"Token refresh failed"}}}async function Os(e,t=Lt,n=Yt){let r=await e.getCredentials(t);if(!r||!r.token)return{token:null,source:"none"};if(!xt(r))return{token:r.token.token,source:"stored",username:r.username};if(r.token.refreshToken){let o=await Ls(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 no=["OCTOCODE_TOKEN","GH_TOKEN","GITHUB_TOKEN"];function Is(){for(let e of no){let t=process.env[e];if(t?.trim())return{token:t.trim(),source:`env:${e}`}}return null}import{execFile as dm}from"child_process";var pm=["/opt/homebrew/bin","/usr/local/bin","/home/linuxbrew/.linuxbrew/bin"];function ro(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=pm.filter(a=>!o.has(a)),s=i.length?`${i.join(":")}:${r}`:r;dm("gh",n,{encoding:"utf8",timeout:5e3,env:{...process.env,PATH:s}},(a,c)=>{if(a||!c){t(null);return}t(c.trim()||null)})})}var oo=null;function ks(e){oo=e}function mm(){if(!oo)throw new Error("Token resolution not initialized. Call initTokenResolution() first.");return oo}async function zn(e){let t=e?.hostname??Lt,n=e?.clientId??Yt,r=e?.getGhCliToken??ro,o=Is();if(o)return{token:o.token,source:o.source,wasRefreshed:!1};let i=await mm().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{}return null}var Sm=Xe("token-storage");async function vs(e){let t=tt(e.hostname),n={...e,hostname:t,updatedAt:new Date().toISOString()};try{let r=Bn();return r.credentials[t]=n,As(r),Xr(t),{success:!0}}catch(r){let o=r instanceof Error?r.message:String(r);throw Sm.error("CRITICAL: Storage failed",{error:o.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***")}),new Error("Failed to store credentials")}}async function io(e="github.com",t){let n=tt(e);if(!t?.bypassCache){let i=hs(n);if(i!==void 0)return i}let o=Bn().credentials[n]||null;return ys(n,o),o}async function Fs(e,t){let n=await io(e);return n?(n.token=t,n.updatedAt=new Date().toISOString(),await vs(n),!0):!1}async function Ms(e,t){return Os({getCredentials:io,updateToken:Fs},e,t)}ks({getTokenWithRefresh:Ms});import{randomUUID as ww}from"node:crypto";import{existsSync as Us,readFileSync as Bs,writeFileSync as wm,unlinkSync as uw,renameSync as _m}from"node:fs";import{z as B}from"zod";var Cm=B.object({rawChars:B.number(),responseChars:B.number(),savedChars:B.number(),calls:B.number()}),Tm=B.object({hits:B.record(B.string(),B.number()).default({}),rateLimits:B.number().default(0)}),Qn=B.record(B.string(),B.number()).default({}),Pm=B.object({toolCalls:B.number(),errors:B.number(),rateLimits:B.number(),rateLimitsByProvider:Qn,rawChars:B.number(),responseChars:B.number(),savedChars:B.number(),charSavingsCalls:B.number(),githubCacheHits:B.number(),githubCacheRateLimits:B.number(),packageRegistryFailures:B.number().default(0),packageRegistryFailuresByRegistry:Qn}),$n=B.object({toolCalls:B.number(),errors:B.number(),rateLimits:B.number(),rateLimitsByProvider:Qn,charsSavedByTool:B.record(B.string(),Cm).default({}),githubCacheHits:Tm.default({hits:{},rateLimits:0}),packageRegistryFailures:Qn,totalUsage:Pm.optional()}),Ns=B.object({version:B.literal(1),sessionId:B.string(),createdAt:B.string(),lastActiveAt:B.string(),stats:$n.optional()}),Ds=B.object({version:B.literal(1),stats:$n});function Hs(e){return Object.values(e).reduce((t,n)=>t+n,0)}function Em(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:Hs(n.hits),githubCacheRateLimits:n.rateLimits,packageRegistryFailures:Hs(o),packageRegistryFailuresByRegistry:o}}function Je(e){let t={...e,rateLimitsByProvider:e.rateLimitsByProvider??{},charsSavedByTool:e.charsSavedByTool??{},githubCacheHits:e.githubCacheHits??{hits:{},rateLimits:0},packageRegistryFailures:e.packageRegistryFailures??{}};return{...t,totalUsage:Em(t)}}function so(){return Je({toolCalls:0,errors:0,rateLimits:0,rateLimitsByProvider:{},charsSavedByTool:{},githubCacheHits:{hits:{},rateLimits:0},packageRegistryFailures:{}})}var zs=Xe("session"),Ot=be.session,It=be.stats;function Gs(e,t){let n=`${e}.tmp`;wm(n,JSON.stringify(t,null,2),{mode:384}),_m(n,e)}function xm(e){let{stats:t,...n}=e;return n}function Am(e){let t=JSON.parse(e),n=Ds.safeParse(t);if(n.success)return Je(n.data.stats);let r=$n.safeParse(t);return r.success?Je(r.data):null}function Lm(e){let t=e?Je(e):so();if(!Us(It))return t;try{let n=Bs(It,"utf8"),r=Am(n);return r||(zs.warn("Stats file has invalid format",{file:It}),t)}catch{return t}}function ao(e){ft(),Gs(It,{version:e.version,stats:Je(e.stats)}),Gs(Ot,xm(e))}function Qs(){if(!Us(Ot))return null;try{let e=Bs(Ot,"utf8"),t=JSON.parse(e),n=Ns.safeParse(t);return n.success?{...n.data,stats:Lm(n.data.stats)}:(zs.warn("Session file has invalid format",{file:Ot}),null)}catch{return null}}var Om=6e4,nt=null,Xt=!1,co=null,$s=!1,js=null,Vs=null,Ws=null,uo=!1;function Im(){$s||($s=!0,js=()=>{jn()},Vs=()=>{jn()},Ws=()=>{jn()},process.on("exit",js),process.on("SIGINT",Vs),process.on("SIGTERM",Ws))}function km(){co||(co=setInterval(()=>{Xt&&nt&&(ao(nt),Xt=!1)},Om),co.unref())}function Ks(){if(nt)return nt;let e=Qs();return e&&(nt=e),e}function Ys(e){nt=e,Xt=!0,Im(),km()}function jn(){if(!uo&&Xt&&nt){uo=!0;try{ao(nt),Xt=!1}catch{}finally{uo=!1}}}function vm(e){return Je(e)}function Fm(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 Xs(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 Mm(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 Vn(e){let t=Ks();if(!t)return{success:!1,session:null};let n=vm(t.stats),r=Je({toolCalls:n.toolCalls+(e.toolCalls??0),errors:n.errors+(e.errors??0),rateLimits:n.rateLimits+(e.rateLimits??0),rateLimitsByProvider:Xs(n.rateLimitsByProvider,e.rateLimitsByProvider),charsSavedByTool:Fm(n.charsSavedByTool,e.charsSavedByTool),githubCacheHits:Mm(n.githubCacheHits,e.githubCacheHits),packageRegistryFailures:Xs(n.packageRegistryFailures,e.packageRegistryFailures)}),o={...t,lastActiveAt:new Date().toISOString(),stats:r};return Ys(o),{success:!0,session:o}}function lo(e,t,n){let r=Number.isFinite(t)?Math.max(0,t):0,o=Number.isFinite(n)?Math.max(0,n):0;return Vn({charsSavedByTool:{[e]:{rawChars:r,responseChars:o,savedChars:Math.max(0,r-o),calls:1}}})}function po(e,t=1){return Vn({githubCacheHits:{hits:{[e]:t},rateLimits:0}})}var Wn={apiUrl:"https://api.github.com"},gt={enabled:!1,enableClone:!1,allowedPaths:[],workspaceRoot:void 0},kt={enabled:null,enableAdditional:null,disabled:null},Jt={timeout:3e4,maxRetries:3},Kn={logging:!0},Yn={configPath:void 0},rt={format:"yaml",pagination:{defaultCharLength:2e4}},mo={version:1,github:Wn,local:gt,tools:kt,network:Jt,telemetry:Kn,lsp:Yn,output:rt},Zt=5e3,qt=3e5,en=0,tn=10,nn=1e3,rn=5e4;import{existsSync as Js,readFileSync as Bm}from"node:fs";import{z as q}from"zod";var fo=q.looseObject({$schema:q.string().optional(),version:q.number().int().optional(),github:q.record(q.string(),q.unknown()).optional(),local:q.record(q.string(),q.unknown()).optional(),tools:q.record(q.string(),q.unknown()).optional(),network:q.record(q.string(),q.unknown()).optional(),telemetry:q.record(q.string(),q.unknown()).optional(),lsp:q.record(q.string(),q.unknown()).optional(),output:q.record(q.string(),q.unknown()).optional()});var go=be.config;function zm(e){let t="",n=0,r=!1,o="";for(;n<e.length;){let i=e[n],s=e[n+1];if(!r&&(i==='"'||i==="'")){r=!0,o=i,t+=i,n++;continue}if(r){if(t+=i,i==="\\"&&n+1<e.length){t+=e[n+1],n+=2;continue}i===o&&(r=!1),n++;continue}if(i==="/"&&s==="/"){for(;n<e.length&&e[n]!==`
10
- `;)n++;continue}if(i==="/"&&s==="*"){for(n+=2;n<e.length-1;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,"$1"),t}function Qm(e){let t=zm(e);return JSON.parse(t)}function ho(){return Js(go)}function yo(){let e=go;if(!Js(e))return{success:!1,error:"Config file does not exist",path:e};try{let t=Bm(e,"utf-8");if(!t.trim())return{success:!0,config:{},path:e};let n=Qm(t),r=fo.safeParse(n);return r.success?{success:!0,config:r.data,path:e}:{success:!1,error:`Config file has invalid structure: ${r.error.issues[0]?.message??"unknown error"}`,path:e}}catch(t){return{success:!1,error:`Failed to parse config file: ${t instanceof Error?t.message:"Unknown error"}`,path:e}}}function vt(){return be.home}function $m(e,t){if(e==null)return null;if(typeof e!="string")return`${t}: Must be a string`;try{let n=new URL(e);return["http:","https:"].includes(n.protocol)?null:`${t}: Only http/https URLs allowed`}catch{return`${t}: Invalid URL format`}}function So(e,t,n,r){return e==null?null:typeof e!="number"||isNaN(e)?`${t}: Must be a number`:e<n||e>r?`${t}: Must be between ${n} and ${r}`:null}function Co(e,t){return e==null?null:typeof e!="boolean"?`${t}: Must be a boolean`:null}function Zs(e,t){if(e==null)return null;if(!Array.isArray(e))return`${t}: Must be an array`;for(let n=0;n<e.length;n++)if(typeof e[n]!="string")return`${t}[${n}]: Must be a string`;return null}function jm(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];typeof r=="string"&&(r.trim()===""?t.push(`local.allowedPaths[${n}]: empty or whitespace-only path`):!r.startsWith("/")&&!r.startsWith("~")?t.push(`local.allowedPaths[${n}]: must be absolute path or start with ~ (got "${r}")`):r.includes("..")&&t.push(`local.allowedPaths[${n}]: path traversal (..) not allowed (got "${r}")`))}return t}function Ro(e,t){return e===void 0||e===null?null:Zs(e,t)}function qs(e,t){return e==null?null:typeof e!="string"?`${t}: Must be a string`:null}function Vm(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("github: Must be an object");return}let r=$m(e.apiUrl,"github.apiUrl");r&&t.push(r)}function Wm(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("local: Must be an object");return}let n=e,r=Co(n.enabled,"local.enabled");r&&t.push(r);let o=Co(n.enableClone,"local.enableClone");o&&t.push(o);let i=Zs(n.allowedPaths,"local.allowedPaths");if(i)t.push(i);else if(Array.isArray(n.allowedPaths)){let s=jm(n.allowedPaths);t.push(...s)}if(n.workspaceRoot!==void 0&&n.workspaceRoot!==null){let s=qs(n.workspaceRoot,"local.workspaceRoot");s?t.push(s):typeof n.workspaceRoot=="string"&&!n.workspaceRoot.startsWith("/")&&!n.workspaceRoot.startsWith("~")?t.push('local.workspaceRoot: must be an absolute path or start with ~ (got "'+n.workspaceRoot+'")'):typeof n.workspaceRoot=="string"&&n.workspaceRoot.includes("..")&&t.push('local.workspaceRoot: path traversal (..) not allowed (got "'+n.workspaceRoot+'")')}}function Km(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("tools: Must be an object");return}let n=e,r=Ro(n.enabled,"tools.enabled");r&&t.push(r);let o=Ro(n.enableAdditional,"tools.enableAdditional");o&&t.push(o);let i=Ro(n.disabled,"tools.disabled");i&&t.push(i)}function Ym(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("network: Must be an object");return}let n=e,r=So(n.timeout,"network.timeout",Zt,qt);r&&t.push(r);let o=So(n.maxRetries,"network.maxRetries",en,tn);o&&t.push(o)}function Xm(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("telemetry: Must be an object");return}let r=Co(e.logging,"telemetry.logging");r&&t.push(r)}function Jm(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("lsp: Must be an object");return}let r=qs(e.configPath,"lsp.configPath");r&&t.push(r)}function Zm(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("output: Must be an object");return}let n=e;if(n.format!==void 0&&(typeof n.format!="string"?t.push("output.format: Must be a string"):["yaml","json"].includes(n.format)||t.push("output.format: Must be one of: yaml, json")),n.pagination!==void 0&&n.pagination!==null)if(typeof n.pagination!="object"||Array.isArray(n.pagination))t.push("output.pagination: Must be an object");else{let r=n.pagination,o=So(r.defaultCharLength,"output.pagination.defaultCharLength",nn,rn);o&&t.push(o)}}function To(e){let t=[],n=[];if(typeof e!="object"||e===null||Array.isArray(e))return{valid:!1,errors:["Configuration must be a JSON object"],warnings:[]};let r=e;r.version!==void 0&&(typeof r.version!="number"||!Number.isInteger(r.version)?t.push("version: Must be an integer"):r.version>1&&n.push(`version: Config version ${r.version} is newer than supported version ${1}`)),Vm(r.github,t),Wm(r.local,t),Km(r.tools,t),Ym(r.network,t),Xm(r.telemetry,t),Jm(r.lsp,t),Zm(r.output,t);let o=new Set(["$schema","version","github","local","tools","network","telemetry","lsp","output"]);for(let i of Object.keys(r))o.has(i)||n.push(`Unknown configuration key: ${i}`);return{valid:t.length===0,errors:t,warnings:n,config:t.length===0?e:void 0}}var qm="__octocodeRuntimeSurface__";function Po(){return globalThis[qm]??"mcp"}function ea(e){if(e==null)return;let t=e.trim().toLowerCase();if(t!==""){if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function Eo(e){if(e==null)return;let t=e.trim();if(t==="")return;let n=parseInt(t,10);if(!isNaN(n))return n}function Xn(e){if(e==null)return;let t=e.trim();if(t!=="")return t.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function ta(e){if(e==null)return;let t=e.trim().toLowerCase();if(t!=="")return!(t==="false"||t==="0")}function na(e){return{apiUrl:process.env.GITHUB_API_URL?.trim()||e?.apiUrl||Wn.apiUrl}}function ra(e){let t=Po()==="cli",n=ea(process.env.ENABLE_LOCAL),r=ea(process.env.ENABLE_CLONE),o=Xn(process.env.ALLOWED_PATHS),i=process.env.WORKSPACE_ROOT?.trim()||void 0;return{enabled:n??e?.enabled??(t?!0:gt.enabled),enableClone:r??e?.enableClone??(t?!0:gt.enableClone),allowedPaths:o??e?.allowedPaths??gt.allowedPaths,workspaceRoot:i??e?.workspaceRoot??gt.workspaceRoot}}function oa(e){let t=Xn(process.env.TOOLS_TO_RUN),n=Xn(process.env.ENABLE_TOOLS),r=Xn(process.env.DISABLE_TOOLS);return{enabled:t??e?.enabled??kt.enabled,enableAdditional:n??e?.enableAdditional??kt.enableAdditional,disabled:r??e?.disabled??kt.disabled}}function ia(e){let t=Eo(process.env.REQUEST_TIMEOUT),n=Eo(process.env.MAX_RETRIES),r=t??e?.timeout??Jt.timeout;r=Math.max(Zt,Math.min(qt,r));let o=n??e?.maxRetries??Jt.maxRetries;return o=Math.max(en,Math.min(tn,o)),{timeout:r,maxRetries:o}}function sa(e){return{logging:ta(process.env.LOG)??e?.logging??Kn.logging}}function aa(e){return{configPath:(process.env.OCTOCODE_LSP_CONFIG?.trim()||void 0)??e?.configPath??Yn.configPath}}var ef=new Set(["yaml","json"]);function ca(e){let t=process.env.OCTOCODE_OUTPUT_FORMAT?.trim().toLowerCase(),n=Eo(process.env.OCTOCODE_OUTPUT_DEFAULT_CHAR_LENGTH),r=t||e?.format||rt.format,o=n??e?.pagination?.defaultCharLength??rt.pagination.defaultCharLength,i=Math.max(nn,Math.min(rn,o));return{format:ef.has(r)?r:rt.format,pagination:{defaultCharLength:i}}}var Jn=Xe("octocode-config");function wo(e,t){let n=e!==void 0,r=process.env.GITHUB_API_URL!==void 0||process.env.ENABLE_LOCAL!==void 0||process.env.ENABLE_CLONE!==void 0||process.env.ALLOWED_PATHS!==void 0||process.env.WORKSPACE_ROOT!==void 0||process.env.TOOLS_TO_RUN!==void 0||process.env.ENABLE_TOOLS!==void 0||process.env.DISABLE_TOOLS!==void 0||process.env.REQUEST_TIMEOUT!==void 0||process.env.MAX_RETRIES!==void 0||process.env.LOG!==void 0||process.env.OCTOCODE_LSP_CONFIG!==void 0||process.env.OCTOCODE_OUTPUT_FORMAT!==void 0||process.env.OCTOCODE_OUTPUT_DEFAULT_CHAR_LENGTH!==void 0,o;return n&&r?o="mixed":n?o="file":o="defaults",{version:e?.version??mo.version,github:na(e?.github),local:ra(e?.local),tools:oa(e?.tools),network:ia(e?.network),telemetry:sa(e?.telemetry),lsp:aa(e?.lsp),output:ca(e?.output),source:o,configPath:n?t:void 0}}function _o(){let e=yo();if(e.success&&e.config){let t=To(e.config);if(t.warnings.length>0)for(let n of t.warnings)Jn.warn(`Warning: ${n}`);if(!t.valid){for(let n of t.errors)Jn.warn(`Validation error: ${n}`);return Jn.warn("Config file has validation errors \u2014 falling back to defaults with env overrides"),wo(void 0)}return wo(e.config,e.path)}return e.error&&ho()&&Jn.warn(e.error),wo(void 0)}var Zn=null,ua=0,tf=6e4;function ge(){let e=Date.now();return Zn&&e-ua<tf||(Zn=_o(),ua=e),Zn}import{existsSync as cf,readdirSync as uf,lstatSync as lf}from"node:fs";import{join as df}from"node:path";function qn(e){if(!cf(e))return 0;let t=0,n=[e];for(;n.length>0;){let r=n.pop(),o;try{o=uf(r)}catch{continue}for(let i of o){let s=df(r,i);try{let a=lf(s);if(a.isSymbolicLink())continue;a.isDirectory()?n.push(s):a.isFile()&&(t+=a.size)}catch{}}}return t}var ht="16.5.1";var xo={NOT_INITIALIZED:{code:"CONFIG_NOT_INITIALIZED",message:"Configuration not initialized. Call initialize() and await its completion before calling getServerConfig()."}},ot={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"}},it={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})`}},mf={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"}},Pe={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}`}},$e={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"}},ne={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}`}},ff={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}`}},st={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"}},Ao={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}`}},$_={...xo,...ot,...it,...mf,...Pe,...$e,...ne,...ff,...st,...Ao};import{maskSensitiveData as gf}from"@octocodeai/octocode-engine/mask";var sn=null,on=null,hf=zn;var yf=new Set(["env:OCTOCODE_TOKEN","env:GH_TOKEN","env:GITHUB_TOKEN","octocode-storage","gh-cli","none"]);async function da(){try{let e=await hf({hostname:"github.com"});if(e?.token){let t=e.source??"none";return{token:e.token,source:yf.has(t)?t:"none"}}return{token:null,source:"none"}}catch{return{token:null,source:"none"}}}async function pa(){if(sn!==null)return;if(on!==null)return on;let e=(async()=>{let t=ge(),n=await da();sn={version:ht,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,loggingEnabled:t.telemetry.logging,enableLocal:t.local.enabled,enableClone:t.local.enableClone,outputFormat:t.output.format,tokenSource:n.source}})();on=e;try{await e}catch(t){throw on===e&&(sn=null,on=null),t}}function ma(){if(!sn){let e=gf(xo.NOT_INITIALIZED.message);throw new Error(e)}return sn}async function fa(){return(await da()).token}function er(){return"github"}function Lo(){let e=ge().github.apiUrl;return{provider:"github",baseUrl:e!=="https://api.github.com"?e:void 0}}import{ContentSanitizer as lg}from"@octocodeai/octocode-engine/contentSanitizer";import{createRequire as Rf}from"node:module";var bf=Rf(import.meta.url),ga="@octocodeai/octocode-engine",tr,Sf=()=>bf(ga),Oo=class extends Error{constructor(n){super(`Failed to load native dependency ${ga}`);this.cause=n;this.name="ContextUtilsLoadError"}cause};function V(){if(tr)return tr;try{return tr=Sf(),tr}catch(e){throw new Oo(e)}}var O={applyContentViewMinification(e,t){return V().applyContentViewMinification(e,t)},applyMinification(e,t){return V().applyMinification(e,t)},minifyContent(e,t){return V().minifyContent(e,t)},minifyContentSync(e,t){return V().minifyContentSync(e,t)},minifyContentResult(e,t){return V().minifyContentResult(e,t)},minifyMarkdownCore(e){return V().minifyMarkdownCore(e)},extractSignatures(e,t){return V().extractSignatures(e,t)},extractJsSymbols(e,t){return V().extractJsSymbols(e,t)},findInFileReferences(e,t,n,r){return V().findInFileReferences(e,t,n,r)},getSupportedJsTsExtensions(){return V().getSupportedJsTsExtensions()},structuralSearch(e,t,n,r){return V().structuralSearch(e,t,n,r)},structuralSearchFiles(e){return V().structuralSearchFiles(e)},getSupportedStructuralExtensions(){return V().getSupportedStructuralExtensions()},inspectBinaryNative(e){return V().inspectBinaryNative(e)},extractBinaryStringsNative(e,t,n,r=0){return V().extractBinaryStringsNative(e,t,n,r)},validateRipgrepPattern(e,t,n){return V().validateRipgrepPattern(e,t,n)},getSemanticBoundaryOffsets(e,t){return V().getSemanticBoundaryOffsets(e,t)},jsonToYamlString(e,t){return V().jsonToYamlString(e,t)},parseRipgrepJson(e,t){return V().parseRipgrepJson(e,t)},searchRipgrep(e){return V().searchRipgrep(e)},queryFileSystem(e){return V().queryFileSystem(e)},extractMatchingLines(e,t,n){return V().extractMatchingLines(e,t,n)},filterPatch(e,t){return V().filterPatch(e,t)},charToByteOffset(e,t){return V().charToByteOffset(e,t)},byteToCharOffset(e,t){return V().byteToCharOffset(e,t)},byteSliceContent(e,t,n){return V().byteSliceContent(e,t,n)},sliceContent(e,t,n,r){return V().sliceContent(e,t,n,r)},get SIGNATURES_ONLY_HINT(){return V().SIGNATURES_ONLY_HINT}};import{Octokit as Pf}from"octokit";import{throttling as Ef}from"@octokit/plugin-throttling";import{createHash as wf}from"crypto";import{completeMetadata as Cf}from"@octocodeai/octocode-core";var Ee="lspGetSemantics",ha=["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation"];function Ft(e){return{name:e.name,uri:e.uri,foundAtLine:e.foundAtLine,...e.orderHint!==void 0&&{orderHint:e.orderHint},...e.isAmbiguous===!0&&{isAmbiguous:!0}}}function Io(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 de=Cf.toolNames,nx=new Set([de.LOCAL_RIPGREP,de.LOCAL_FETCH_CONTENT,de.LOCAL_FIND_FILES,de.LOCAL_VIEW_STRUCTURE,de.LOCAL_BINARY_INSPECT,Ee]);var Tf=null;function ko(){return Tf}async function v(e,t){let n=ko();n&&await n.logError(e,t)}async function at(e){let t=ko();t&&await t.logRateLimit(e)}function ya(e){let t=ko();t&&t.logPackageRegistryFailure(e)}function _f(e){return wf("sha256").update(e).digest("hex").substring(0,16)}var xf=Pf.plugin(Ef),Af=300*1e3,vo=50,Lf=60*1e3;function Fo(e){return Date.now()-e.createdAt>Af}var Ge=new Map,an=null,cn=null;function Pa(){for(let[e,t]of Ge.entries())Fo(t)&&Ge.delete(e);if(Ge.size>vo){let e=[...Ge.entries()].filter(([n])=>n!=="DEFAULT").sort((n,r)=>n[1].createdAt-r[1].createdAt),t=Ge.size-vo;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&Ge.delete(r[0])}}}function Of(){cn||(cn=setInterval(Pa,Lf),typeof cn=="object"&&"unref"in cn&&cn.unref())}var Ra=3,ba=60;function Sa(e,t,n){at({limit_type:e,retry_after_seconds:t,api_method:n.method,api_url:n.url,provider:"github"})}var If=()=>({onRateLimit:(e,t,n,r)=>(Sa("primary",e,t),r<Ra&&e<ba),onSecondaryRateLimit:(e,t,n,r)=>(Sa("secondary",e,t),r<Ra&&e<ba)});function Ca(e){let t=ma(),n=t.githubApiUrl,r={debug:()=>{},info:()=>{},warn:()=>{},error:(...i)=>console.error(...i)},o={userAgent:`octocode-mcp/${ht}`,baseUrl:n,request:{timeout:t.timeout||3e4,log:r},throttle:If(),log:r,...e&&{auth:e}};return new xf(o)}async function re(e){if(Of(),e?.token){let n=_f(e.token),r=Ge.get(n);if(r&&!Fo(r))return r.client;Ge.size>=vo&&Pa();let o=Ca(e.token);return Ge.set(n,{client:o,createdAt:Date.now()}),o}let t=Ge.get("DEFAULT");return t&&!Fo(t)?t.client:an||(an=(async()=>{try{let n=await fa(),r=Ca(n??void 0);return Ge.set("DEFAULT",{client:r,createdAt:Date.now()}),r}finally{an=null}})(),an)}var kf=200,un=new Map;async function ke(e,t,n){let r=`${e}/${t}`,o=un.get(r);if(o)return o;let i=await re(n);try{let{data:a}=await i.rest.repos.get({owner:e,repo:t}),c=a.default_branch;return Ta(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}),Ta(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 Ta(e,t){if(un.size>=kf){let n=un.keys().next().value;n!==void 0&&un.delete(n)}un.set(e,t)}import{RequestError as _a}from"octokit";var N={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"},ae={[N.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."},[N.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."},[N.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},[N.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)."},[N.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."},[N.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."},[N.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."},[N.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."},[N.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."},[N.UNKNOWN]:{message:"Unknown error occurred",explanation:"An unexpected error occurred that does not match known error patterns."}},Ea={401:N.AUTH_REQUIRED,403:N.FORBIDDEN_PERMISSIONS,404:N.NOT_FOUND,422:N.INVALID_REQUEST,502:N.SERVER_UNAVAILABLE,503:N.SERVER_UNAVAILABLE,504:N.SERVER_UNAVAILABLE},Mo={CONNECTION_FAILED:["ENOTFOUND","ECONNREFUSED"],TIMEOUT:["timeout"]},No={SECONDARY:/\bsecondary rate\b/i,GRAPHQL_TYPE:"RATE_LIMITED"},nr={RESET_BUFFER_SECONDS:1,SECONDARY_FALLBACK_SECONDS:60};function Se(e){return t=>{}}function wa(e,t){return n=>t}var vf=["cannot be searched","do not exist","does not exist","could not be found","cannot be found"];function yt(e){if(!(e instanceof _a)||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 vf.some(o=>r.includes(o))})}function X(e){return e instanceof _a?Ff(e):e instanceof Error?zf(e):{error:typeof e=="string"?e:ae[N.UNKNOWN].message,type:"unknown"}}function Ff(e){let{status:t,message:n,response:r}=e;if(t===403)return Nf(n,r);if(t===429)return Mf(n,r);let o=Ea[t];return o?Bf(o,t):Mt(N.UNKNOWN,{error:n||ae[N.UNKNOWN].message,status:t})}function Do(e,t){let n=e?.[t],r=n===void 0?NaN:parseInt(String(n),10);return isNaN(r)?void 0:r}function Mf(e,t){let n=t?.headers,r=Do(n,"retry-after"),o=Do(n,"x-ratelimit-reset"),i=Do(n,"x-ratelimit-remaining")??0,s=o?new Date(o*1e3):null,a=r??(s?Math.max(Math.ceil((s.getTime()-Date.now())/1e3)+nr.RESET_BUFFER_SECONDS,0):void 0);return at({limit_type:"primary",retry_after_seconds:a,rate_limit_remaining:i,rate_limit_reset_ms:s?s.getTime():void 0,provider:"github"}).catch(Se("rate-limit logging")),Mt(N.RATE_LIMIT_PRIMARY,{error:e||ae[N.RATE_LIMIT_PRIMARY].messageWithoutTime,status:429,rateLimitRemaining:i,rateLimitReset:s?s.getTime():void 0,retryAfter:a,scopesSuggestion:ae[N.RATE_LIMIT_PRIMARY].suggestion})}function Nf(e,t){let n=t?.headers;if(No.SECONDARY.test(e))return Df(n);let r=n?.["x-ratelimit-remaining"],o=Uf(t);return r!==void 0&&String(r)==="0"||o?Hf(n):Gf(n)}function Df(e){let t=Number(e?.["retry-after"]),n=isNaN(t)?nr.SECONDARY_FALLBACK_SECONDS:t;return at({limit_type:"secondary",retry_after_seconds:n,provider:"github"}).catch(Se("rate-limit logging")),Mt(N.RATE_LIMIT_SECONDARY,{error:ae[N.RATE_LIMIT_SECONDARY].message(n),status:403,rateLimitRemaining:0,retryAfter:n,scopesSuggestion:ae[N.RATE_LIMIT_SECONDARY].suggestion})}function Hf(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)+nr.RESET_BUFFER_SECONDS,0):void 0,i=r?ae[N.RATE_LIMIT_PRIMARY].messageWithTime(r,o):ae[N.RATE_LIMIT_PRIMARY].messageWithoutTime;return at({limit_type:"primary",retry_after_seconds:o,rate_limit_remaining:0,rate_limit_reset_ms:r?r.getTime():void 0,provider:"github"}).catch(Se("rate-limit logging")),Mt(N.RATE_LIMIT_PRIMARY,{error:i,status:403,rateLimitRemaining:0,rateLimitReset:r?r.getTime():void 0,retryAfter:o,scopesSuggestion:ae[N.RATE_LIMIT_PRIMARY].suggestion})}function Gf(e){let t=e?.["x-accepted-oauth-scopes"],n=e?.["x-oauth-scopes"],r=ae[N.FORBIDDEN_PERMISSIONS].suggestion;return t&&n&&(r=Qf(String(t),String(n))),Mt(N.FORBIDDEN_PERMISSIONS,{error:ae[N.FORBIDDEN_PERMISSIONS].message,status:403,scopesSuggestion:r})}function Uf(e){return e?.data?.errors?.some(n=>n.type===No.GRAPHQL_TYPE)??!1}function Bf(e,t){let n=ae[e];return Mt(e,{error:n.message,status:t,..."suggestion"in n&&{scopesSuggestion:n.suggestion}})}function zf(e){return Mo.CONNECTION_FAILED.some(t=>e.message.includes(t))?{error:ae[N.NETWORK_CONNECTION_FAILED].message,type:"network",scopesSuggestion:ae[N.NETWORK_CONNECTION_FAILED].suggestion}:Mo.TIMEOUT.some(t=>e.message.includes(t))?{error:ae[N.REQUEST_TIMEOUT].message,type:"network",scopesSuggestion:ae[N.REQUEST_TIMEOUT].suggestion}:{error:e.message,type:"unknown"}}function Mt(e,t){return{type:"http",...t}}function Qf(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?ae[N.FORBIDDEN_PERMISSIONS].suggestionWithScopes(o):ae[N.FORBIDDEN_PERMISSIONS].fallbackSuggestion}function $f(e){return`user:${e}`}var jf=/[@/]/,Vf=/(?:^|\/)([^/]+\.[A-Za-z][A-Za-z0-9]{0,9})$/,Wf=/^[A-Za-z0-9_-]+$/;function xa(e){return e.startsWith('"')||Wf.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}var ln=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($f(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=jf.test(t)&&!t.startsWith('"')?`"${t}"`:t;this.queryParts.push(`${n}:${o}`)}return this}build(){return this.queryParts.join(" ").trim()}},Ho=class extends ln{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(xa))}return this}addSearchFilters(t){let n=t.path,r=t.filename,o=typeof n=="string"&&!r?n.match(Vf):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}},Go=class extends ln{addQueryTerms(t){return Array.isArray(t.keywords)&&t.keywords.length>0&&this.queryParts.push(...t.keywords.map(xa)),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}},Uo=class extends ln{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 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}addEngagementFilters(t){return this.addSimpleFilter(t.comments,"comments"),this.addSimpleFilter(t.reactions,"reactions"),this.addSimpleFilter(t.interactions,"interactions"),this}addReviewFilters(t){return t.review&&this.queryParts.push(`review:${t.review}`),this}addOrganizationFilters(t){return this.addArrayFilter(t.label,"label",!0),t.milestone&&this.queryParts.push(`milestone:"${t.milestone}"`),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 Aa(e){return new Ho().addQueryTerms(e).addSearchFilters(e).addOwnerRepo(e).addMatchFilters(e).build()}function La(e){return new Go().addQueryTerms(e).addOwnerRepo(e).addRepoFilters(e).addMatchFilters(e).addQualityFilters(e).build()}function Oa(e){return new Uo().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addBranchFilters(e).addDateFilters(e).addEngagementFilters(e).addReviewFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function Ia(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)}import Kf from"node-cache";import Yf from"crypto";var Xf="v1",Jf=300*1e3,Rt=new Kf({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1}),Nt={hits:0,misses:0,sets:0,totalKeys:0,lastReset:new Date},ka={"gh-api-code":3600,"gh-api-repos":7200,"gh-api-prs":1800,"gh-api-file-content":300,"gh-repo-structure-api":7200,"github-user":900,"npm-search":14400,default:86400},dn=new Map;function Zf(e){return e.match(/^v\d+-([^:]+):/)?.[1]}function qf(e){return e.startsWith("gh-api-")||e.startsWith("gh-repo-")||e==="github-user"}function eg(e){let t=Zf(e);if(!(!t||!qf(t)))try{po(t,1)}catch{}}function tg(){let e=Date.now();for(let[t,n]of dn.entries())e-n.startedAt>Jf&&dn.delete(t)}var ng=new Set([]);function rg(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(ng.has(o)){n=!0;continue}r[o]=t[o]}return n?r:e}function we(e,t,n){let r=Bo(rg(t)),o=n?`${n}:${r}`:r,i=Yf.createHash("sha256").update(o).digest("hex");return`${Xf}-${e}:${i}`}function Bo(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=>Bo(o,t)).join(",")}]`:`{${Object.keys(e).sort().map(o=>{let i=e[o];return`"${o}":${Bo(i,t)}`}).join(",")}}`)}function og(e){return ka[e]||ka.default}function ig(e,t,n){try{return Rt.set(e,t,n),Nt.sets++,Nt.totalKeys=Rt.keys().length,!0}catch{try{let r=Rt.keys();for(let o of r)Rt.get(o);return Rt.set(e,t,n),Nt.sets++,Nt.totalKeys=Rt.keys().length,!0}catch{return!1}}}async function _e(e,t,n={}){if(n.skipCache)return await t();if(!n.forceRefresh)try{let i=Rt.get(e);if(i!==void 0)return Nt.hits++,eg(e),i}catch{}tg();let r=dn.get(e);if(r)return r.promise;let o=(async()=>{try{let i=await t();if(n.forceRefresh||Nt.misses++,(n.shouldCache??(()=>!0))(i)){let a=n.ttl;if(!a){let u=e.match(/^v\d+-([^:]+):/)?.[1]??"default";a=og(u)}ig(e,i,a)}return i}finally{dn.delete(e)}})();return dn.set(e,{promise:o,startedAt:Date.now()}),o}import{DISCOVERY_IGNORED_FILE_EXTENSIONS as kx,DISCOVERY_IGNORED_FILE_NAMES as vx,DISCOVERY_IGNORED_FOLDER_NAMES as Fx,getDiscoveryExtension as va,shouldIgnoreDiscoveryDir as pn,shouldIgnoreDiscoveryFile as Dt}from"@octocodeai/octocode-engine/security";import{completeMetadata as zo}from"@octocodeai/octocode-core";var S=new Proxy({},{get(e,t){return zo.toolNames[t]},ownKeys(){return Object.keys(zo.toolNames)},getOwnPropertyDescriptor(e,t){let n=zo.toolNames;if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}});import{completeMetadata as sg}from"@octocodeai/octocode-core";var Qo=new Proxy({},{get(e,t){return sg.tools[t]?.description??""}});import{completeMetadata as ag}from"@octocodeai/octocode-core";function $o(e){return Object.prototype.hasOwnProperty.call(ag.tools,e)}import{completeMetadata as cg}from"@octocodeai/octocode-core";function jo(){return cg.baseSchema}var ug=new Proxy({},{get(e,t){return jo()[t]},ownKeys(){return Array.from(new Set([...Reflect.ownKeys(jo())]))},getOwnPropertyDescriptor(e,t){let n=jo();if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}});var Fa=Symbol.for("octocode.rawResponseChars");function F(e){if(typeof e=="string")return e.length;try{return JSON.stringify(e)?.length??0}catch{return String(e).length}}function Ma(e){if(!(typeof e!="number"||!Number.isFinite(e)))return Math.max(0,e)}function D(e,t){let n=typeof t=="number"?Ma(t):F(t);if(n===void 0)return e;try{Object.defineProperty(e,Fa,{value:n,enumerable:!1,configurable:!0})}catch{}return e}function ee(e){if(!(typeof e!="object"||e===null))return Ma(e[Fa])}function rr(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}var Na=30;async function Da(e,t,n){let r=we("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},n);return await _e(r,async()=>await dg(e,t),{shouldCache:i=>"data"in i&&!i.error})}async function dg(e,t){try{let n=await re(t);if(e.keywords&&e.keywords.length>0&&e.keywords.filter(b=>b&&b.trim()).length===0)return await v(S.GITHUB_SEARCH_CODE,ne.QUERY_EMPTY.code),{error:ne.QUERY_EMPTY.message,type:"http",status:400};let r=Aa(e);if(!r.trim())return await v(S.GITHUB_SEARCH_CODE,ne.QUERY_EMPTY.code),{error:ne.QUERY_EMPTY.message,type:"http",status:400};let o=Math.min(typeof e.limit=="number"?e.limit:Na,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 pg(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:rr(a.headers),rawResponseChars:F(a.data)}}catch(n){if(yt(n)){let o=Math.min(typeof e.limit=="number"?e.limit:Na,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 X(n)}}async function pg(e,t){let n=mg(e),r=new Set,o=!1,i=[],s=new Set,a=e.filter(p=>!Dt(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 w=>{let T=w.fragment,A=lg.sanitizeContent(T||"",p.path);T=A.content,A.hasSecrets&&r.add(`Secrets detected in ${p.path}: ${A.secretsDetected.join(", ")}`),A.warnings.length>0&&A.warnings.forEach(G=>r.add(`${p.path}: ${G}`));try{let G=await O.minifyContent(T||"",p.path);T=G.content,G.failed?o=!0:G.type!=="failed"&&(f.push(G.type),i.push(G.type))}catch{o=!0}return{context:T||"",positions:w.matches?.map(G=>Array.isArray(G.indices)&&G.indices.length>=2?[G.indices[0],G.indices[1]]:[0,0])||[]}})),h=g.filter(w=>w.status==="fulfilled").map(w=>w.value),b=g.filter(w=>w.status==="rejected").length;b>0&&(u+=b);let R=p,C=Array.from(new Set(f));return{path:p.path,matches:h,url:p.html_url,repository:{nameWithOwner:p.repository.full_name,url:p.repository.url,pushedAt:p.repository.pushed_at||void 0},...R.last_modified_at&&{lastModifiedAt:R.last_modified_at},...C.length>0&&{minificationType:C.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 mg(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 Ha=30;function Ga(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 Ua(e,t,n){let r=we("gh-api-repos",{keywords:e.keywords,topicsToSearch:e.topicsToSearch,owner:e.owner,stars:e.stars,size:e.size,created:e.created,updated:e.updated,language:e.language,match:e.match,sort:e.sort,limit:e.limit,page:e.page},n);return await _e(r,async()=>await gg(e,t),{shouldCache:i=>"data"in i&&!i.error})}async function fg(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{try{i=(await t.rest.repos.listForUser({username:e.owner,per_page:n,page:r,sort:o})).data,s=void 0}catch(p){return X(p)}}let a=i.map(p=>{let g=p.full_name.split("/"),h=g[0]||"",b=g[1]||"";return{owner:h,repo:b,defaultBranch:p.default_branch,stars:p.stargazers_count||0,description:p.description?p.description.length>150?p.description.substring(0,150)+"...":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},...Ga(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:F(i)}}async function gg(e,t){try{let n=await re(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 fg({owner:o,sort:e.sort,limit:e.limit,page:e.page},n);let i=La(e);if(!i.trim())return await v(S.GITHUB_SEARCH_REPOSITORIES,ne.QUERY_EMPTY.code),{error:ne.QUERY_EMPTY.message,type:"http",status:400};let s=Math.min(e.limit||Ha,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(R=>{let w=R.full_name.split("/"),T=w[0]||"",A=w[1]||"";return{owner:T,repo:A,defaultBranch:R.default_branch,stars:R.stargazers_count||0,description:R.description?R.description.length>150?R.description.substring(0,150)+"...":R.description:"No description",url:R.html_url,createdAt:R.created_at,updatedAt:R.updated_at,pushedAt:R.pushed_at,visibility:R.visibility,...R.topics&&R.topics.length>0&&{topics:R.topics},...R.forks_count&&R.forks_count>0&&{forksCount:R.forks_count},...R.open_issues_count&&R.open_issues_count>0&&{openIssuesCount:R.open_issues_count},...R.language&&{language:R.language},...Ga(R)}}),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)),h=g<f,b=Math.min(p,f*s);return{data:{repositories:d,pagination:{currentPage:g,totalPages:f,perPage:s,totalMatches:p,reportedTotalMatches:m,reachableTotalMatches:b,totalMatchesKind:"reported",totalMatchesCapped:m>p,hasMore:h,...h?{nextPage:g+1}:{}}},status:200,headers:rr(l.headers),rawResponseChars:F(l.data)}}catch(n){if(yt(n)){let r=Math.min(e.limit||Ha,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 X(n)}}function Ht(e){return!!(e&&typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&"type"in e)}function ce(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 hg(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 Ze(e){return{error:e.error,status:e.status||500,provider:"github",hints:e.hints,rateLimit:hg(e)}}function or(e){return yg(e)?Ze({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 yg(e){if(typeof e!="object"||e===null||!("error"in e))return!1;let n=e.error;return typeof n=="string"||Rg(n)}function Rg(e){return typeof e=="object"&&e!==null&&typeof e.toString=="function"}function Ba(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 bg(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,...Ba(e.pagination)},repositoryContext:e._researchContext?.repositoryContext,nonExistentScope:e.nonExistentScope,incompleteResults:e.incompleteResults}}function Sg(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,...Ba(e.pagination)},nonExistentScope:e.nonExistentScope}}async function za(e,t,n=ce){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 Da(s,t);return Ht(a)?Ze(a):a.data?{data:bg(a.data),status:200,provider:"github",rawResponseChars:a.rawResponseChars??F(a.data)}:{error:"No data returned from GitHub API",status:500,provider:"github"}}async function Qa(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 Ua(n,t);return"error"in r?or(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:Sg(r.data),status:200,provider:"github",rawResponseChars:r.rawResponseChars??F(r.data)}}import{RequestError as $a}from"octokit";async function Tg(e,t,n,r,o,i,s,a){let c=await ke(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=X(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 Ka(e,r,o,i,s||c);return m.length>0&&(l.hints=[...l.hints||[],...Wa(i,m)]),{...l,...d&&{scopesSuggestion:d}}}async function Pg(e,t,n,r,o,i){let s=X(t),a=await Ka(e,n,r,o,i||"main");return a.length>0&&(s.hints=[...s.hints||[],...Wa(o,a)]),s}async function ja(e,t){let n=e.replace(/\s/g,"");if(!n)return await v(S.GITHUB_FETCH_CONTENT,Pe.FILE_EMPTY.code),{error:Pe.FILE_EMPTY.message,type:"unknown",status:404};try{let r=Buffer.from(n,"base64");return r.indexOf(0)!==-1?(await v(S.GITHUB_FETCH_CONTENT,Pe.BINARY_FILE.code),{error:Pe.BINARY_FILE.message,type:"unknown",status:415}):{data:r.toString("utf-8"),status:200}}catch{return await v(S.GITHUB_FETCH_CONTENT,Pe.DECODE_FAILED.code),{error:Pe.DECODE_FAILED.message,type:"unknown",status:422}}}async function Va(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"?ja(s,o):a==="utf-8"?{data:s,status:200}:{error:`Unsupported blob encoding: ${a}`,type:"unknown",status:415}}catch(i){return X(i)}}async function Eg(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 ke(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 Va(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 X(s)}}async function ir(e,t){try{let n=await re(t),{owner:r,repo:o,path:i,branch:s}=e,a={owner:r,repo:o,path:i,...s&&{ref:s}},c,u=s;try{c=await n.rest.repos.getContent(a)}catch(d){if(d instanceof $a&&d.status===404)if(s){let m=await Tg(n,d,a,r,o,i,s,t);if("result"in m)c=m.result,u=m.actualBranch;else return m}else return await Pg(n,d,r,o,i,s);else{if(d instanceof $a&&d.status===413)return await Eg(n,r,o,i,s||u,t);throw d}}let l=c.data;if(Array.isArray(l))return await v(S.GITHUB_FETCH_CONTENT,Pe.PATH_IS_DIRECTORY.code),{error:Pe.PATH_IS_DIRECTORY.message(S.GITHUB_VIEW_REPO_STRUCTURE),type:"unknown",status:400};if("content"in l&&l.type==="file"){let d=typeof l.content=="string"?l.content:"",m=l.size??0,p;if(d.length>0)p=await ja(d,i);else if(m>0&&"sha"in l&&typeof l.sha=="string"&&l.sha)p=await Va(n,r,o,l.sha,i);else return await v(S.GITHUB_FETCH_CONTENT,Pe.FILE_EMPTY.code),{error:Pe.FILE_EMPTY.message,type:"unknown",status:404};if("error"in p)return p;if(!u&&!s)try{u=await ke(r,o,t)}catch{}return{data:{rawContent:p.data,branch:u||void 0,resolvedRef:u||s||"HEAD"},status:200,rawResponseChars:F(l)}}return await v(S.GITHUB_FETCH_CONTENT,Pe.UNSUPPORTED_TYPE.code),{error:Pe.UNSUPPORTED_TYPE.message(l.type),type:"unknown",status:415}}catch(n){return X(n)}}function Wa(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 Ka(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[]}}function Be(){try{return ge().output.pagination.defaultCharLength}catch{return rt.pagination.defaultCharLength}}import{ContentSanitizer as qa}from"@octocodeai/octocode-engine/contentSanitizer";function mn(e){if(e.length===0)return[];let t=e.split(/\r?\n/);return t.length>0&&t[t.length-1]===""&&t.pop(),t}function bt(e){return mn(e).length}function Vo(e,t){return O.byteToCharOffset(e,t)}function Ya(e,t){return O.charToByteOffset(e,t)}function Xa(e){return O.charToByteOffset(e,e.length)}function Wo(e,t,n,r){return O.sliceContent(e,t,n,r)}function Gt(e,t=0,n,r={}){let o=r.mode??"characters",i=e.length,s=Xa(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 h=Math.min(t,s),b=Math.min(h+n,s);d=Vo(e,h),m=Vo(e,b),m<i&&Ya(e,m)<b&&(m+=1);let R=Wo(e,d,m-d);c=R.text,d=R.charOffset,m=R.charOffset+R.charLength,u=R.byteOffset,l=R.byteOffset+R.byteLength,p=l<s;let C=r.actualOffset??h;f=Math.floor(C/a)+1,g=Math.max(f,Math.ceil(s/a))}else{let h=Wo(e,t,n);c=h.text,d=h.charOffset,m=h.charOffset+h.charLength,u=h.byteOffset,l=h.byteOffset+h.byteLength,p=m<i;let b=r.actualOffset??d;f=Math.floor(b/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 Ja(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 wg=8e3,_g="__octocode_generic__.unknown";function xg(e){return e&&e.trim().length>0?e:_g}function Za(e,t){return O.getSemanticBoundaryOffsets(e,xg(t)).filter(n=>Number.isInteger(n)&&n>=0&&n<=e.length)}function Ag(e,t){let n=e.indexOf(`
11
- `,t);return n===-1?void 0:n+1}function sr(e){let t=e.trimEnd().split(`
12
- `).at(-1)??"";return t.length>0&&(t[0]===" "||t[0]===" ")}function ar(e,t,n){let r=Ag(e,Math.max(0,t));if(r!==void 0)return Za(e,n).find(o=>o>=r&&o>t)}function cr(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=Za(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<=wg?{length:c-o,chunkMode:"semantic"}:{length:i,chunkMode:"char-limit"}}function ur(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(`
13
- `),a={isRegex:r,caseSensitive:o,contextLines:n,maxMatches:i},c=O.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)}}function Og(){let e=Be();return Math.min(e,8e3)}function lr(e,t){return{sourceChars:e,sourceBytes:t}}function ec(e,t,n){let r=e.content??"",o=n??Og();if(r.length<=o&&t===0)return e;let i=e.path??void 0,{length:s,chunkMode:a}=cr(r,t,o,i),c=Gt(r,t,s),u;if(c.hasMore&&a==="char-limit"&&sr(c.paginatedContent)){let l=c.charOffset+c.charLength;u=ar(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,chunkMode:a,...u!==void 0&&{nextBlockChar:u}}}}async function tc(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}}async function nc(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",h=g?"standard":"none",b;if(m==="symbols"){let Q=O.extractSignatures(e,o);if(Q===null&&(b=`minify:"symbols" is not supported for this file type (${o.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`),Q!==null){let M=qa.sanitizeContent(Q,o),fe=O.applyContentViewMinification(M.content,o),ie=[O.SIGNATURES_ONLY_HINT];return u&&ie.push('matchString was ignored \u2014 minify:"symbols" returns the full skeleton index. Use startLine/endLine from the gutter to read the matching body.'),M.hasSecrets&&ie.push(`Secrets detected and redacted: ${M.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:fe,contentView:"symbols",isSkeleton:!0,branch:r,totalLines:bt(e),...lr(p,f),isPartial:!1,signaturesExtracted:!0,hints:ie}}}let R=new Set,C=e,w=C.split(`
14
- `),T=bt(C),A=e,G,$,x=!1,L;if(i)A=e;else if(u){let Q=d===!0,M;try{M=ur(w,u,c,l??!1,Q)}catch{return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:T,...lr(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(M.matchCount===0){let j=l?[`Regex "${u}" matched no lines. Verify the pattern, check flags (case-${Q?"sensitive":"insensitive"}), or use fullContent=true to inspect the file.`]:[`"${u}" not found in file${Q?" (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:T,...lr(p,f),matchNotFound:!0,searchedFor:u,hints:j}}A=M.lines.join(`
15
- `);let fe=M.matchRanges[0],ie=M.matchRanges[M.matchRanges.length-1];s=fe.start,a=ie.end,G=fe.start,$=ie.end,x=!0,M.matchRanges.length>1&&(L=M.matchRanges);let Ye=M.matchingLines.slice(0,5).join(", "),_t=M.matchingLines.length>5?` and ${M.matchingLines.length-5} more`:"";R.add(M.matchCount>1?`Found ${M.matchCount} occurrences of "${u}" on lines ${Ye}${_t} \u2014 all shown as ${M.matchRanges.length} slice${M.matchRanges.length===1?"":"s"}, \xB1${c} lines of context each.`:`Found "${u}" on line ${M.matchingLines[0]}`)}else if(s!==void 0||a!==void 0){let Q=s||1,M=a||T;if(Q<1||Q>T)A=e;else if(M<Q)A=e;else{let fe=Math.max(1,Q),ie=Math.min(T,M),Ye=w.slice(fe-1,ie);G=fe,$=ie,x=!0,A=Ye.join(`
16
- `),M>T&&R.add(`Requested endLine ${M} adjusted to ${T} (file end)`)}}let z=qa.sanitizeContent(A,o);if(A=g?O.applyContentViewMinification(z.content,o):z.content,z.hasSecrets&&R.add(`Secrets detected and redacted: ${z.secretsDetected.join(", ")}`),z.warnings.length>0&&z.warnings.forEach(Q=>R.add(Q)),T>2e3&&m!=="symbols"&&!u&&!s&&!a&&!i){let Q=Math.max(1,T-200);R.add(`Large file (${T} lines) \u2014 minify:"symbols" for an export index, or startLine=${Q} for the tail.`)}let se=Array.from(R);return{owner:t,repo:n,path:o,content:A,...h!=="standard"&&{contentView:h},branch:r,totalLines:T,...lr(p,f),...x&&{startLine:G,endLine:$,isPartial:x},...L&&{matchRanges:L},...se.length>0&&{matchLocations:se},...(se.length>0||b)&&{warnings:[...b?[b]:[],...se]}}}async function rc(e,t,n){let r=we("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch},n),o=await _e(r,async()=>await ir(e,t),{shouldCache:p=>"data"in p&&!p.error,forceRefresh:e.forceRefresh===!0});if(!("data"in o)||!o.data)return o;let i=o.data.branch||o.data.resolvedRef||e.branch||"",s=await nc(o.data.rawContent,e.owner,e.repo,i,e.path,e.fullContent||!1,e.startLine,e.endLine,e.contextLines??5,e.matchString,e.matchStringIsRegex,e.matchStringCaseSensitive,e.minify??"standard");if("error"in s)return{error:s.error||"Unknown error",status:500,type:"unknown"};let{signaturesExtracted:a,...c}=s,u=e.charOffset??0,l=e.charLength,d=a?c:ec(c,u,l),m=(e.charOffset??0)>0;if(!e.noTimestamp&&!m)try{let p=await re(t),f=await _e(we("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,ts:!0},n),()=>tc(p,e.owner,e.repo,e.path,e.branch),{shouldCache:g=>g!==null,forceRefresh:e.forceRefresh===!0});f&&(d.lastModified=f.lastModified,d.lastModifiedBy=f.lastModifiedBy)}catch{}return{data:d,status:200,rawResponseChars:o.rawResponseChars}}function Ig(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,isSkeleton:e.isSkeleton,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:kg(e,t),matchNotFound:e.matchNotFound,searchedFor:e.searchedFor}}function kg(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 oc(e,t,n=ce){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 rc(i,t);if(Ht(s))return Ze(s);if(!s.data)return{error:"No data returned from GitHub API",status:500,provider:"github"};let a=s.data.hints;return{data:Ig(s.data,e),status:200,provider:"github",rawResponseChars:s.rawResponseChars??F(s.data),...a?.length?{hints:a}:{}}}import{ContentSanitizer as ac}from"@octocodeai/octocode-engine/contentSanitizer";var Fg=2,Mg=20;function fn(e,t=Mg){let n=e?mn(e):[];return{lines:n.slice(0,t),moreCount:Math.max(0,n.length-t)}}function ic(e,t,n){if(!e)return"";if(t===void 0&&n===void 0)return e;let r={additions:t,deletions:n};return O.filterPatch(e,r)}function sc(e){return e?O.filterPatch(e,{trimContext:!0,contextLines:Fg}):""}function Ko(e){let t=ac.sanitizeContent(e.title??""),n=e.body?ac.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 Ng=Be(),Dg=Math.round(Be()/4),cc=3;function uc(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 gn(e,t={}){let n=t.charOffset??0,r=t.charLength??Ng,o=t.charLength??Dg,i=typeof e.body=="string"?O.minifyMarkdownCore(e.body):e.body,s=uc(i,n,r,!t.includeFullBody),a=(e.comments??[]).sort((f,g)=>{let h=f.commentType==="review_inline"?0:1,b=g.commentType==="review_inline"?0:1;return h-b}),c=a.filter(f=>f.commentType==="review_inline").length,u=a.length-c,l=t.includeFullCommentDetails?a:a.slice(0,cc),d=l.map(f=>{let g=uc(f.body,n,o,!t.includeFullCommentDetails);return{...f,body:g.value??"",...g.pagination?{body_pagination:g.pagination}:{}}}),m=!t.includeFullCommentDetails&&(a.length>l.length||d.some(f=>"body_pagination"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 ${cc} 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(f=>({id:0,name:f,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: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,changed_files:e.file_changes?.total_count||0,...e.file_changes&&{file_changes: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&&{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 hn(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 dr(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?ic(a.patch,c?.additions,c?.deletions):void 0}}):e.map(a=>({...a,patch:a.patch?sc(a.patch):a.patch}))}import{ContentSanitizer as Yo}from"@octocodeai/octocode-engine/contentSanitizer";function pr(e){let t=e.content;return!!(e.reviewMode==="full"||t?.changedFiles||t?.patches?.mode&&t.patches.mode!=="none")}function lc(e){return e.reviewMode==="full"?{discussion:!0,reviewInline:!0}:e.content?.comments??null}function dc(e){let t=lc(e);return t?t.discussion!==!1:!1}function pc(e){let t=lc(e);return t?t.reviewInline!==!1:!1}function mc(e){let t=e.content;return!!(e.reviewMode==="full"||t?.commits)}function fc(e){let t=e.content;return!!(e.reviewMode==="full"||t?.reviews)}function gc(e){return!!e.content?.comments?.includeBots}var Hg=new Set(["vercel","pkg-pr-new","coderabbitai","github-actions","codecov","changeset-bot","netlify","sonarcloud","socket-security"]);function hc(e){let t=e.toLowerCase();return t.endsWith("[bot]")||Hg.has(t.replace(/\[bot\]$/,""))}function Xo(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
+ var US=Object.defineProperty;var y=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(r){throw n=[r],r}};var $S=(e,t)=>{for(var n in t)US(e,n,{get:t[n],enumerable:!0})};import{completeMetadata as jS}from"@octocodeai/octocode-core";var $,we,Wt,$M,To=y(()=>{"use strict";$=jS.toolNames,we=$.LSP_GET_SEMANTIC_CONTENT,Wt="oqlSearch",$M=new Set([$.LOCAL_RIPGREP,$.LOCAL_FETCH_CONTENT,$.LOCAL_FIND_FILES,$.LOCAL_VIEW_STRUCTURE,$.LOCAL_BINARY_INSPECT,we])});function Kt(e){return{name:e.name,uri:e.uri,foundAtLine:e.foundAtLine,...e.orderHint!==void 0&&{orderHint:e.orderHint},...e.isAmbiguous===!0&&{isAmbiguous:!0}}}function ea(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 Uu,yn=y(()=>{"use strict";To();Uu=["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation","workspaceSymbol","supertypes","subtypes","diagnostic"]});var fe=y(()=>{"use strict"});import{z as Eo}from"zod";function G(e,t){return Eo.preprocess(n=>typeof n=="number"&&Number.isFinite(n)?Math.min(Math.max(n,e),t):n,Eo.number().int().min(e).max(t))}function te(e,t={}){let{maxQueries:n=5}=t;return Eo.object({queries:Eo.array(e).min(1).max(n).describe("Parallel queries."),...VS}).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 oe,bn,Rn,VS,Ne=y(()=>{"use strict";fe();oe=G(1,1e3).optional().default(1),bn=G(0,100).optional(),Rn=G(1,1e9).optional(),VS={responseCharOffset:G(0,1e8).optional().describe("Full-response char offset; re-call with returned value when hasMore."),responseCharLength:G(1,5e4).optional().describe("Full-response char window.")}});import{z as $u}from"zod";function WS(e,t){return e?.description&&!t.description?t.describe(e.description):t}function ju(e,t){let n={};for(let[r,o]of Object.entries(t))n[r]=WS(e.shape[r],o);return n}function KS(e,t){let n=e;return n.safeExtend?n.safeExtend(t):e.extend(t)}function qu(e,t){if(!t?.length)return e;let n=new Set(t);return $u.object(Object.fromEntries(Object.entries(e.shape).filter(([r])=>!n.has(r))))}function ae(e,t={},n={}){let r=qu(e,n.omit),o=KS(r,ju(r,t));return n.strict?o.strict():o}function de(e,t={},n={}){let r=qu(e,n.omit),o=$u.object({...r.shape,...ju(r,t)});return n.strict?o.strict():o}var Ke=y(()=>{"use strict"});import{z as xe}from"zod";var YS,Ge,kt=y(()=>{"use strict";YS=xe.object({currentPage:xe.number(),totalPages:xe.number(),hasMore:xe.boolean(),charOffset:xe.number(),charLength:xe.number(),totalChars:xe.number(),nextCharOffset:xe.number().optional()}).optional(),Ge={hints:xe.array(xe.string()).optional(),base:xe.string().optional(),shared:xe.record(xe.string(),xe.union([xe.string(),xe.number(),xe.boolean()])).optional(),responsePagination:YS}});import{CloneRepoQuerySchema as XS}from"@octocodeai/octocode-core/schemas";import{GitHubCloneRepoOutputSchema as JS}from"@octocodeai/octocode-core/schemas/outputs";var or,ko,aD,na=y(()=>{"use strict";Ne();Ke();kt();or=ae(XS),ko=te(or),aD=JS.extend(Ge)});import{z as T}from"zod";import{FileContentQuerySchema as Ku}from"@octocodeai/octocode-core/schemas";var ZS,eC,Vu,Wu,Yu,tC,Sn,Oo,gD,vo=y(()=>{"use strict";fe();Ne();Ke();kt();ZS=T.enum(["none","standard","symbols"]).optional().default("standard"),eC=T.object({currentPage:T.number(),totalPages:T.number(),hasMore:T.boolean(),nextPage:T.number().optional(),nextMatchPage:T.number().optional(),charOffset:T.number().optional(),charLength:T.number().optional(),totalChars:T.number().optional(),nextCharOffset:T.number().optional(),filesPerPage:T.number().optional(),totalFiles:T.number().optional(),entriesPerPage:T.number().optional(),totalEntries:T.number().optional(),matchesPerPage:T.number().optional(),totalMatches:T.number().optional()}),Vu=T.object({path:T.string(),content:T.string(),localPath:T.string().optional(),repoRoot:T.string().optional(),contentView:T.enum(["none","standard","symbols"]).optional(),isSkeleton:T.boolean().optional(),totalLines:T.number().optional(),sourceChars:T.number().optional(),sourceBytes:T.number().optional(),resolvedBranch:T.string().optional(),pagination:eC.optional(),isPartial:T.boolean().optional(),startLine:T.number().optional(),endLine:T.number().optional(),matchRanges:T.array(T.object({start:T.number(),end:T.number()})).optional(),lastModified:T.string().optional(),lastModifiedBy:T.string().optional(),warnings:T.array(T.string()).optional(),matchNotFound:T.boolean().optional(),searchedFor:T.string().optional(),cached:T.boolean().optional()}),Wu=T.object({path:T.string(),localPath:T.string(),repoRoot:T.string().optional(),fileCount:T.number(),totalSize:T.number(),complete:T.boolean().optional(),directoryEntryCount:T.number().optional(),eligibleFileCount:T.number().optional(),savedFileCount:T.number().optional(),skipped:T.object({nonFile:T.number(),missingDownloadUrl:T.number(),oversized:T.number(),binary:T.number(),fileLimit:T.number(),fetchFailed:T.number(),totalSizeLimit:T.number(),pathTraversal:T.number()}).optional(),limits:T.object({maxDirectoryFiles:T.number(),maxTotalSize:T.number(),maxFileSize:T.number()}).optional(),warnings:T.array(T.string()).optional(),files:T.array(T.object({path:T.string(),size:T.number(),type:T.string()})).optional(),cached:T.boolean().optional(),resolvedBranch:T.string().optional()}),Yu={startLine:Rn,endLine:Rn,contextLines:bn,charOffset:G(0,1e8).optional(),charLength:G(1,5e4).optional(),minify:ZS},tC=de(Ku,Yu),Sn=ae(Ku,Yu),Oo=te(tC),gD=T.object({base:T.string().optional(),shared:T.record(T.string(),T.union([T.string(),T.number(),T.boolean()])).optional(),responsePagination:Ge.responsePagination,results:T.array(T.object({id:T.string(),owner:T.string(),repo:T.string(),files:T.array(Vu).optional(),directories:T.array(Wu).optional(),data:T.object({owner:T.string(),repo:T.string(),files:T.array(Vu).optional(),directories:T.array(Wu).optional()}).optional()})),errors:T.array(T.object({id:T.string(),owner:T.string().optional(),repo:T.string().optional(),path:T.string().optional(),error:T.string()})).optional()})});import{z as N}from"zod";import{GitHubCodeSearchQuerySchema as Xu}from"@octocodeai/octocode-core/schemas";var Ju,Ao,Lo,wD,ra=y(()=>{"use strict";fe();Ne();Ke();kt();Ju={limit:G(1,100).optional(),page:oe.default(1)},Ao=ae(Xu,Ju),Lo=te(de(Xu,Ju)),wD=N.object({base:N.string().optional(),shared:N.record(N.string(),N.union([N.string(),N.number(),N.boolean()])).optional(),responsePagination:Ge.responsePagination,results:N.array(N.object({id:N.string(),data:N.object({files:N.array(N.object({owner:N.string(),repo:N.string(),path:N.string(),queryId:N.string().optional(),matches:N.array(N.object({value:N.string().optional(),pathOnly:N.boolean().optional(),matchIndices:N.array(N.object({start:N.number(),end:N.number(),lineOffset:N.number()})).optional(),url:N.string().optional()}))})),pagination:N.object({currentPage:N.number(),totalPages:N.number(),perPage:N.number(),totalMatches:N.number(),reportedTotalMatches:N.number().optional(),reachableTotalMatches:N.number().optional(),totalMatchesKind:N.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:N.boolean().optional(),hasMore:N.boolean(),nextPage:N.number().optional(),uniqueFileCount:N.number().optional()}).optional()})})),emptyQueries:N.array(N.object({id:N.string(),nonExistentScope:N.literal(!0).optional(),incompleteResults:N.literal(!0).optional()})).optional(),warnings:N.array(N.string()).optional(),errors:N.array(N.object({id:N.string(),error:N.string()})).optional()})});import{z as Yt}from"zod";import{GitHubPullRequestSearchQuerySchema as Zu}from"@octocodeai/octocode-core/schemas";import{GitHubSearchPullRequestsOutputSchema as rC}from"@octocodeai/octocode-core/schemas/outputs";var ed,oC,Pn,_o,_D,Io=y(()=>{"use strict";fe();Ne();Ke();kt();ed={perPage:G(1,100).optional().default(30),prNumber:G(1,1e9).optional(),limit:G(1,100).optional().default(30),page:oe.default(1),filePage:oe.optional(),commentPage:oe.optional(),commitPage:oe.optional(),itemsPerPage:G(1,100).optional().default(20),charOffset:G(0,1e8).optional(),commentBodyOffset:G(0,1e8).optional(),charLength:G(1,5e4).optional()},oC=de(Zu,ed),Pn=ae(Zu,ed),_o=te(oC),_D=rC.extend({results:Yt.array(Yt.object({id:Yt.string().optional(),status:Yt.string().optional(),data:Yt.object({pull_requests:Yt.array(Yt.object({}).passthrough()).optional()}).passthrough().optional()}).passthrough()).optional(),...Ge})});import{z as V}from"zod";import{GitHubReposSearchSingleQuerySchema as td}from"@octocodeai/octocode-core/schemas";var nd,Fo,Mo,iC,sC,aC,zD,oa=y(()=>{"use strict";fe();Ne();Ke();kt();nd={limit:G(1,100).optional(),page:oe.default(1)},Fo=ae(td,nd),Mo=te(de(td,nd)),iC=V.object({owner:V.string(),repo:V.string(),stars:V.number().optional(),forks:V.number().optional(),openIssuesCount:V.number().optional(),language:V.string().optional(),license:V.string().optional(),description:V.string().optional(),homepage:V.string().optional(),pushedAt:V.string().optional(),createdAt:V.string().optional(),defaultBranch:V.string().optional(),topics:V.array(V.string()).optional(),visibility:V.string().optional(),url:V.string().optional(),updatedAt:V.string().optional()}),sC=V.object({currentPage:V.number(),totalPages:V.number(),hasMore:V.boolean(),perPage:V.number().optional(),totalMatches:V.number().optional(),reportedTotalMatches:V.number().optional(),reachableTotalMatches:V.number().optional(),totalMatchesKind:V.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:V.boolean().optional(),nextPage:V.number().optional()}).optional(),aC=V.object({repositories:V.array(V.union([V.string(),iC])).optional(),pagination:sC}).passthrough(),zD=V.object({results:V.array(V.object({id:V.string().optional(),status:V.string().optional(),data:aC.optional()}).passthrough()).optional()}).extend(Ge)});import{GitHubViewRepoStructureQuerySchema as rd}from"@octocodeai/octocode-core/schemas";import{GitHubViewRepoStructureOutputSchema as lC}from"@octocodeai/octocode-core/schemas/outputs";var od,Do,No,KD,ia=y(()=>{"use strict";fe();fe();Ne();Ke();kt();od={maxDepth:G(0,20).optional(),page:oe.default(1),itemsPerPage:G(1,200).optional()},Do=ae(rd,od),No=te(de(rd,od)),KD=lC.extend(Ge)});import{z as ee}from"zod";import{NpmPackageQuerySchema as id}from"@octocodeai/octocode-core/schemas";var sd,Go,Ho,nN,sa=y(()=>{"use strict";Ne();Ke();kt();sd={page:oe,mode:ee.enum(["lean","full"]).optional()},Go=ae(id,sd),Ho=te(de(id,sd,{strict:!0}),{maxQueries:5}),nN=ee.object({results:ee.array(ee.looseObject({id:ee.string(),data:ee.looseObject({packages:ee.array(ee.object({name:ee.string(),version:ee.string().optional(),description:ee.string().optional(),license:ee.string().optional(),downloads:ee.number().optional(),repository:ee.string().optional(),repositoryDirectory:ee.string().optional(),next:ee.record(ee.string(),ee.unknown()).optional()}).passthrough()).optional(),pagination:ee.object({currentPage:ee.number(),totalPages:ee.number(),perPage:ee.number(),totalFound:ee.number(),returned:ee.number(),hasMore:ee.boolean(),nextPage:ee.number().optional()}).optional()}).optional(),status:ee.string().optional()})).optional()}).extend(Ge)});import{z as uC}from"zod";import{FetchContentQuerySchema as ad}from"@octocodeai/octocode-core/schemas";var dC,cd,pC,wn,zo,Bo=y(()=>{"use strict";fe();Ne();Ke();dC=uC.enum(["none","standard","symbols"]).optional().default("standard"),cd={startLine:Rn,endLine:Rn,contextLines:bn.default(5),charOffset:G(0,1e8).optional(),charLength:G(1,5e4).optional(),minify:dC},pC=de(ad,cd),wn=ae(ad,cd),zo=te(pC,{maxQueries:5})});import{z as fC}from"zod";import{FindFilesQuerySchema as mC}from"@octocodeai/octocode-core/schemas";function gC(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 ld,ud,hC,xn,Qo,Uo=y(()=>{"use strict";fe();Ne();Ke();ld={maxDepth:G(0,100).optional(),minDepth:G(0,100).optional(),limit:G(1,1e4).optional(),page:oe.default(1),itemsPerPage:G(1,50).optional()},ud=fC.object(Object.fromEntries(Object.entries(mC.shape).filter(([e])=>e!=="regexType")));hC=de(ud,ld),xn=ae(ud,ld).superRefine(gC),Qo=te(hC,{maxQueries:5})});import{z as Tn}from"zod";import{RipgrepQuerySchema as dd}from"@octocodeai/octocode-core/schemas";var yC,bC,pd,RC,SC,CC,Ot,$o,ar=y(()=>{"use strict";fe();Ne();Ke();yC=["paginated","discovery","detailed","structural"],bC=["semanticRanking"],pd={mode:Tn.enum(yC).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.'),pattern:Tn.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:Tn.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:bn,matchContentLength:G(1,1e5).optional().default(500),maxMatchesPerFile:G(1,1e5).optional(),maxFiles:G(1,1e5).optional(),matchPage:oe.optional(),itemsPerPage:G(1,1e3).optional(),page:oe.default(1),unique:Tn.boolean().optional().describe("With onlyMatching, return each matched value once per file."),countUnique:Tn.boolean().optional().describe("With onlyMatching, return each matched value once per file with its frequency.")},RC={...pd,semanticRanking:Tn.never().optional()},SC=de(dd,RC),CC=ae(dd,pd,{strict:!0,omit:bC}),Ot=CC.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"]})}),$o=te(SC,{maxQueries:5})});import{ViewStructureQuerySchema as fd}from"@octocodeai/octocode-core/schemas";var md,PC,En,jo,qo=y(()=>{"use strict";fe();Ne();Ke();md={maxDepth:G(0,20).optional(),limit:G(1,1e4).optional(),page:oe.default(1),itemsPerPage:G(1,50).optional()},PC=de(fd,md),En=ae(fd,md),jo=te(PC,{maxQueries:5})});import{z as R}from"zod";import{LspGetSemanticsQuerySchema as yd}from"@octocodeai/octocode-core/schemas";import{ErrorDataSchema as wC}from"@octocodeai/octocode-core/schemas/outputs";var xC,TC,EC,bd,kC,Ko,Yo,gd,OC,vC,Vo,Wo,AC,LC,Rd,kn,_C,IC,FC,Sd,MC,DC,NC,GC,HC,zC,BC,hd,FN,la=y(()=>{"use strict";fe();Ne();Ke();yn();xC=G(1,1e9).describe("1-based source line for symbol-anchored semantic operations. Get it from search/localSearchCode, structural AST captures, or documentSymbols; never guess."),TC=G(0,1e5).optional(),EC=["structured","compact"],bd={type:R.enum(Uu).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:xC.optional(),orderHint:TC,depth:G(0,20).optional(),includeDeclaration:R.boolean().optional().default(!0),page:oe,itemsPerPage:G(1,100).optional(),contextLines:G(0,100).optional(),format:R.enum(EC).optional().default("structured")},kC=de(yd,bd),Ko=ae(yd,bd),Yo=te(kC,{maxQueries:5}),gd=R.object({line:R.number(),character:R.number()}),OC=R.object({start:gd,end:gd}),vC=R.object({startLine:R.number(),endLine:R.number()}),Vo=R.object({uri:R.string(),content:R.string().optional(),displayRange:vC.optional(),isDefinition:R.boolean().optional()}),Wo=R.string(),AC=R.object({name:R.string(),uri:R.string(),foundAtLine:R.number(),orderHint:R.number().optional()}),LC=R.object({serverAvailable:R.boolean().optional(),provider:R.string().optional(),source:R.string().optional()}),Rd=R.enum(["serverUnavailable","unsupportedOperation","symbolNotFound","anchorFailed","noLocations","noReferences","noHover","noCalls","noWorkspaceSymbols","noTypeHierarchy","noDiagnostics"]),kn=R.object({category:Rd,reason:R.string()}),_C=R.object({currentPage:R.number(),totalPages:R.number(),totalResults:R.number(),hasMore:R.boolean(),itemsPerPage:R.number(),nextPage:R.number().optional()}),IC=R.object({name:R.string(),kind:R.string(),line:R.number(),character:R.number(),endLine:R.number(),childCount:R.number(),containerName:R.string().optional()}),FC=R.string(),Sd=R.object({name:R.string(),kind:R.string(),uri:R.string(),line:R.number(),endLine:R.number(),selectionLine:R.number().optional()}),MC=R.string(),DC=R.object({direction:R.enum(["incoming","outgoing"]),item:Sd,ranges:R.array(R.object({line:R.number(),character:R.number()})),rangeCount:R.number(),rangeSampleCount:R.number(),contentPreview:R.string().optional()}),NC=R.string(),GC=R.object({complete:R.boolean(),truncatedByDepth:R.boolean(),cycleCount:R.number(),failedRequestCount:R.number(),dynamicCallsExcluded:R.literal(!0),stdlibCallsExcluded:R.number().optional()}),HC=R.object({uri:R.string(),count:R.number(),firstLine:R.number(),firstCharacter:R.number(),lines:R.array(R.number()),hasDefinition:R.boolean().optional()}),zC=R.string(),BC=R.discriminatedUnion("kind",[R.object({kind:R.literal("definition"),locations:R.array(R.union([Vo,Wo]))}),R.object({kind:R.literal("typeDefinition"),locations:R.array(R.union([Vo,Wo]))}),R.object({kind:R.literal("implementation"),locations:R.array(R.union([Vo,Wo]))}),R.object({kind:R.literal("references"),locations:R.array(R.union([Vo,Wo])).optional(),byFile:R.array(R.union([HC,zC])).optional(),totalReferences:R.number(),totalFiles:R.number(),empty:kn.optional()}),...["callers","callees","callHierarchy"].map(e=>R.object({kind:R.literal(e),root:R.union([Sd,MC]).optional(),direction:R.enum(["incoming","outgoing","both"]),calls:R.array(R.union([DC,NC])),incomingCalls:R.number(),outgoingCalls:R.number(),completeness:GC,empty:kn.optional()})),R.object({kind:R.literal("hover"),markdown:R.string().optional(),text:R.string().optional(),range:OC.optional()}),R.object({kind:R.literal("documentSymbols"),symbols:R.array(R.union([IC,FC])),totalSymbols:R.number().optional(),topLevelSymbols:R.number().optional(),empty:kn.optional()}),R.object({kind:R.literal("workspaceSymbol"),query:R.string(),symbols:R.array(R.unknown()),totalSymbols:R.number(),empty:kn.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:kn.optional()}),R.object({kind:R.literal("diagnostic"),diagnostics:R.array(R.unknown()),totalDiagnostics:R.number(),errorCount:R.number(),warningCount:R.number(),empty:kn.optional()}),R.object({kind:R.literal("empty"),category:Rd,reason:R.string()})]),hd=R.object({type:R.string(),uri:R.string(),format:R.enum(["structured","compact"]).optional(),resolvedSymbol:AC.optional(),lsp:LC,payload:BC,pagination:_C.optional(),summary:R.record(R.string(),R.unknown()).optional(),warnings:R.array(R.string()).optional()}),FN=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:hd}),R.object({id:R.string().min(1),status:R.literal("error"),data:wC}),R.object({id:R.string().min(1),data:hd})]))})});import{z as Cd}from"zod";import{LocalBinaryInspectQuerySchema as QC}from"@octocodeai/octocode-core/schemas";var UC,Pd,On,Xo,Jo=y(()=>{"use strict";Ne();UC={entryPageNumber:oe.default(1).describe("list mode: 1-based page over archive entries when an archive has many files."),matchStringContextLines:G(0,50).default(3).describe("Lines of context to keep around each matchString hit (strings/decompress/extract)."),charLength:G(1,5e4).optional().describe("Max chars of inline content for this window (paired with charOffset). Omit for the default window; follow pagination.next to page losslessly."),page:oe.default(1).describe("1-based page for paginated entry/content listings."),detailed:Cd.boolean().optional().describe("inspect: include full symbols/imports/exports/sections arrays.")},Pd=Cd.object({...QC.shape,...UC}),On=Pd.strict().superRefine((e,t)=>{e.mode==="extract"&&!e.archiveFile&&t.addIssue({code:"custom",path:["archiveFile"],message:'archiveFile is required for mode="extract" \u2014 run mode="list" first to get exact entry names'}),e.archiveFile?.startsWith("-")&&t.addIssue({code:"custom",path:["archiveFile"],message:'archiveFile must not start with "-" (prevents flag injection into backend CLIs)'});let n=[".tar.gz",".tgz",".tar.bz2",".tbz2",".tbz",".tar.xz",".txz",".tar.zst",".tzst",".zip",".jar",".war",".apk",".7z"];e.mode==="decompress"&&n.some(r=>e.path.toLowerCase().endsWith(r))&&t.addIssue({code:"custom",path:["mode"],message:'This path looks like a multi-entry archive \u2014 use mode="list" or mode="extract" instead of mode="decompress".'})}),Xo=te(Pd,{maxQueries:5})});function xd(e){return Array.isArray(e.queries)}function Td(e){return Array.isArray(e.queries)}function Ed(e){return Array.isArray(e.children)}var vt,Zo,wd,cr=y(()=>{"use strict";vt=["code","content","structure","files","semantics","repositories","packages","pullRequests","commits","artifacts","diff","research","graph","materialize"],Zo=["fixes","dataflow"],wd=["packages","repositories"]});import{z as h}from"zod";var da,ua,$C,kd,Od,jC,qC,vn,vd,VC,WC,Jt,Ad,Ld,_d,Id,ei,KC,UN,YC,XC,Fd,pa,ti,Md,Dd,An,lr=y(()=>{"use strict";cr();da=h.lazy(()=>h.union([h.strictObject({kind:h.literal("local"),path:h.string().min(1)}),h.strictObject({kind:h.literal("github"),repo:h.string().min(1).optional(),owner:h.string().min(1).optional(),ref:h.string().min(1).optional()}),h.strictObject({kind:h.literal("materialized"),localPath:h.string().min(1),source:da.optional()}),h.strictObject({kind:h.literal("npm")})])),ua=h.union([h.string(),h.array(h.string()).max(100)]),$C=h.strictObject({path:ua.optional(),language:ua.optional(),include:h.array(h.string()).max(100).optional(),exclude:h.array(h.string()).max(100).optional(),excludeDir:h.array(h.string()).max(100).optional(),hidden:h.boolean().optional(),noIgnore:h.boolean().optional(),minDepth:h.number().int().min(0).max(64).optional(),maxDepth:h.number().int().min(0).max(64).optional()}).optional(),kd=h.enum(["smart","sensitive","insensitive"]),Od=h.string().max(1e4),jC=h.strictObject({id:h.string().optional(),kind:h.literal("text"),value:Od,case:kd.optional(),wholeWord:h.boolean().optional()}),qC=h.strictObject({id:h.string().optional(),kind:h.literal("regex"),value:Od,dialect:h.enum(["rust","pcre2","provider"]).optional(),case:kd.optional(),wholeWord:h.boolean().optional(),multiline:h.boolean().optional(),dotAll:h.boolean().optional()}),vn=h.lazy(()=>h.strictObject({pattern:h.string().optional(),kind:h.string().optional(),inside:vn.optional(),has:vn.optional(),not:vn.optional(),all:h.array(vn).optional(),any:h.array(vn).optional(),stopBy:h.literal("end").optional()})),vd=h.union([vn,h.string().min(1)]),VC=h.strictObject({id:h.string().optional(),kind:h.literal("structural"),lang:h.string().min(1),pattern:h.string().optional(),rule:vd.optional()}),WC=h.strictObject({id:h.string().optional(),kind:h.literal("field"),field:h.enum(["path","basename","extension","size","modified","accessed","empty","permissions","executable","readable","writable","entryType"]),op:h.enum(["=","!=","in","exists","glob","regex",">",">=","<","<=","within","before"]),value:h.unknown().optional()}),Jt=h.lazy(()=>h.discriminatedUnion("kind",[h.strictObject({kind:h.literal("all"),id:h.string().optional(),of:h.array(Jt).min(1)}),h.strictObject({kind:h.literal("any"),id:h.string().optional(),of:h.array(Jt).min(1)}),h.strictObject({kind:h.literal("not"),id:h.string().optional(),predicate:Jt}),jC,qC,VC,WC])),Ad=h.strictObject({mode:h.enum(["never","auto","required"]),strategy:h.enum(["file","tree","subtree","repo"]).optional(),allowFullRepo:h.boolean().optional(),forceRefresh:h.boolean().optional()}),Ld=h.strictObject({content:h.strictObject({range:h.strictObject({startLine:h.number().int().min(1).optional(),endLine:h.number().int().min(1).optional(),contextLines:h.number().int().min(0).max(100).optional()}).optional(),match:h.strictObject({text:h.string(),regex:h.boolean().optional(),caseSensitive:h.boolean().optional()}).optional(),contentView:h.enum(["exact","compact","symbols"]).optional(),charOffset:h.number().int().min(0).max(1e8).optional(),charLength:h.number().int().min(1).max(5e4).optional(),fullContent:h.boolean().optional()}).optional(),tree:h.strictObject({maxDepth:h.number().int().min(0).max(64).optional(),pattern:h.string().optional(),includeSizes:h.boolean().optional(),extensions:h.array(h.string()).optional(),filesOnly:h.boolean().optional(),directoriesOnly:h.boolean().optional(),sortBy:h.enum(["name","size","time","extension"]).optional(),reverse:h.boolean().optional()}).optional()}),_d=h.strictObject({search:h.strictObject({countLinesPerFile:h.boolean().optional(),countMatchesPerFile:h.boolean().optional(),onlyMatching:h.boolean().optional(),unique:h.boolean().optional(),countUnique:h.boolean().optional(),contextLines:h.number().int().min(0).max(100).optional(),invertMatch:h.boolean().optional(),matchWindow:h.number().int().min(0).optional(),matchContentLength:h.number().int().min(1).optional(),maxMatchesPerFile:h.number().int().min(1).optional(),matchPage:h.number().int().min(1).optional(),sort:h.enum(["relevance","matchCount","path","modified","accessed","created"]).optional(),sortReverse:h.boolean().optional(),rankingProfile:h.string().optional(),debugRanking:h.boolean().optional()}).optional(),budget:h.strictObject({maxFiles:h.number().int().min(1).optional(),maxCandidates:h.number().int().min(1).optional(),maxBytes:h.number().int().min(1).optional(),maxMaterializedBytes:h.number().int().min(1).optional(),maxPlanNodes:h.number().int().min(1).optional(),maxBooleanExpansion:h.number().int().min(1).optional(),timeoutMs:h.number().int().min(1).optional()}).optional()}),Id=h.enum(["discovery","paginated","detailed"]),ei=h.strictObject({schema:h.literal("oql"),id:h.string().optional(),target:h.enum(vt),from:da.optional(),scope:$C,where:Jt.optional(),materialize:Ad.optional(),fetch:Ld.optional(),select:h.array(h.string()).optional(),view:Id.optional(),controls:_d.optional(),limit:h.number().int().min(1).optional(),page:h.number().int().min(1).optional(),itemsPerPage:h.number().int().min(1).optional(),params:h.record(h.string(),h.unknown()).optional(),explain:h.boolean().optional()}),KC=h.strictObject({schema:h.literal("oql"),id:h.string().optional(),queries:h.array(ei).min(1).max(5),combine:h.enum(["independent","merge"]).optional(),limit:h.number().int().min(1).optional(),page:h.number().int().min(1).optional(),itemsPerPage:h.number().int().min(1).optional(),explain:h.boolean().optional()}),UN=h.union([ei,KC]),YC=vt,XC=[...vt,...Zo],Fd={schema:h.literal("oql").optional(),id:h.string().optional(),mainResearchGoal:h.string().optional(),researchGoal:h.string().optional(),reasoning:h.string().optional()},pa={...Fd,target:h.enum(XC).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:da.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:Jt.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:h.union([Ad,h.enum(["never","auto","required"])]).optional(),fetch:Ld.optional(),select:h.array(h.string()).optional(),view:Id.optional(),controls:_d.optional(),limit:h.number().int().min(1).optional(),page:h.number().int().min(1).optional(),itemsPerPage:h.number().int().min(1).optional(),params:h.record(h.string(),h.unknown()).optional(),explain:h.boolean().optional(),repo:h.string().optional(),owner:h.string().optional(),ref:h.string().optional(),path:ua.optional(),text:h.string().optional().describe("Shorthand text search (\u2192 where.text, target code). Do not combine with a canonical `where`."),regex:h.string().optional(),pattern:h.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:vd.optional(),lang:h.string().optional(),and:h.array(h.unknown()).optional(),or:h.array(h.unknown()).optional(),xor:h.array(h.unknown()).optional(),noneOf:h.array(h.unknown()).optional(),oneOf:h.array(h.unknown()).optional(),invert:h.unknown().optional(),filesOnly:h.boolean().optional(),filesWithoutMatch:h.boolean().optional(),verbose:h.boolean().optional()},ti=h.object({...pa,target:h.enum(YC).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.")}).catchall(h.unknown()),Md=h.object(pa).catchall(h.unknown()),Dd=h.object({...Fd,queries:h.array(h.unknown()).min(1)}).catchall(h.unknown()),An=h.object({...pa,queries:h.array(h.unknown()).min(1).max(5).optional(),combine:h.enum(["independent","merge"]).optional()}).catchall(h.unknown())});import{z as fa}from"zod";function dr(e){return Qd.find(t=>t.name===e)}function ur(e){return e.startsWith("gh")?"GitHub":e.startsWith("local")||e.startsWith("lsp")?"Local Code":e===$.PACKAGE_SEARCH?"Package":"Other"}function eP(e){return[...e].sort((t,n)=>{let r=ma.indexOf(ur(t)),o=ma.indexOf(ur(n));if(r!==o)return r-o;let i=Nd.get(t)??Number.MAX_SAFE_INTEGER,s=Nd.get(n)??Number.MAX_SAFE_INTEGER;return i!==s?i-s:t.localeCompare(n)})}function tP(e){let t=dr(e);if(!t)return"{}";try{return JSON.stringify(fa.toJSONSchema(t.inputSchema),null,2)}catch{return JSON.stringify(fa.toJSONSchema(t.schema),null,2)}}function nP(e){return JSON.stringify(e??{},null,2)}function rP(e){let t=ur(e),n=[...ZC];return(t==="GitHub"||t==="Package")&&n.splice(1,0,"mainResearchGoal"),n}function oP(){return Bd.map(e=>({...e}))}function iP(){return JSON.stringify(Object.fromEntries(Bd.map(e=>[e.name,e.optional?`${e.type} (optional)`:e.type])),null,2)}function sP(e,t){return t?.tools?.[e]?.description??e}function Sa(e){let t=dr(e);if(!t)return[];let n=fa.toJSONSchema(t.schema);if(!Ln(n))return[];let r=At(n.properties)?n.properties:{},o=new Set(Array.isArray(n.required)?n.required.filter(i=>!Ra.has(i)&&!ba(r[i])):[]);return ya(r,o)}function Gd(e,t){return`tools ${e} --queries '${JSON.stringify(t)}'`}function aP(e){let t=uP(e);if(t.length>0)return t.map(r=>({...r,command:Gd(e,r.query)}));let n=lP(e);return Object.keys(n).length===0?[]:[{label:"schema-derived",query:n,command:Gd(e,n)}]}function cP(e){return aP(e)[0]?.query??{}}function lP(e){if(!dr(e))return{};let t=Sa(e),n=t.filter(i=>!i.name.includes(".")),r=bP(n),o={};for(let i of r)o[i.name]=PP(i.name,i.type);return e.startsWith("lsp")&&t.some(i=>i.name==="uri")&&(o.uri??="uri"),e===we&&(o.type??="definition",o.symbolName??="symbolName",o.lineHint??=1),o}function uP(e){return e===Wt?[{label:"local code query",query:{schema:"oql",target:"code",from:{kind:"local",path:"."},where:{kind:"text",value:"executeDirectTool"},view:"discovery",limit:5}}]:e===$.GITHUB_SEARCH_PULL_REQUESTS?[{label:"PR search",query:{type:"prs",owner:"facebook",repo:"react",keywordsToSearch:["useState"],concise:!0,limit:5}},{label:"commit history",query:{type:"commits",owner:"facebook",repo:"react",path:"packages/react/src",since:"2024-01-01T00:00:00Z",perPage:5}}]:e===$.GITHUB_SEARCH_CODE?[{label:"path search",query:{keywords:["package.json"],owner:"facebook",repo:"react",match:"path",concise:!0,limit:5}},{label:"content search",query:{keywords:["useState"],owner:"facebook",repo:"react",extension:"js",limit:5}}]:e===$.GITHUB_SEARCH_REPOSITORIES?[{label:"repository search",query:{keywords:["react"],language:"TypeScript",stars:">1000",concise:!0,limit:5}},{label:"owner repositories",query:{owner:"facebook",concise:!0,limit:5}}]:e===$.GITHUB_VIEW_REPO_STRUCTURE?[{label:"repo tree",query:{owner:"facebook",repo:"react",path:"packages",maxDepth:2,itemsPerPage:50}}]:e===$.GITHUB_CLONE_REPO?[{label:"full repo clone",query:{owner:"bgauryy",repo:"octocode"}},{label:"subtree clone",query:{owner:"facebook",repo:"react",sparsePath:"packages/react"}}]:e===$.LOCAL_RIPGREP?[{label:"text search",query:{path:".",keywords:"runCLI"}},{label:"structural code search",query:{path:"src",mode:"structural",pattern:"eval($X)"}}]:e===$.LOCAL_FETCH_CONTENT?[{label:"exact line range",query:{path:"src/index.ts",startLine:1,endLine:40,minify:"none"}},{label:"matched slice",query:{path:"src/index.ts",matchString:"registerTool",contextLines:8,minify:"standard"}}]:e===$.LOCAL_FIND_FILES?[{label:"basename globs",query:{path:".",names:["*.ts","package.json"],entryType:"f",itemsPerPage:20}},{label:"monorepo path glob",query:{path:".",pathPattern:"packages/*/src/**",entryType:"f",itemsPerPage:20}}]:e===$.LOCAL_BINARY_INSPECT?[{label:"archive listing",query:{path:"archive.zip",mode:"list",entriesPerPage:50}},{label:"binary strings",query:{path:"dist/app.node",mode:"strings",minLength:8,charLength:2e3}}]:e===we?[{label:"semantic definition",query:{uri:"/path/to/file.ts",type:"definition",symbolName:"myFunction",lineHint:42}},{label:"symbol outline",query:{uri:"/path/to/file.ts",type:"documentSymbols"}}]:[]}function dP(e,t,n={}){if(typeof t!="string")return null;let r;try{r=JSON.parse(t)}catch{throw new ct("Tool input must be valid JSON.")}return Ud(e,r,n)}function Ud(e,t,n={}){let r=fP(e,t,n),o=dr(e);if(!o)throw new ct(`Unknown tool: ${e}`);let i=o.inputSchema.safeParse(r);if(!i.success)throw new ct("Tool input does not match the expected schema.",pP(i.error));return i.data}function pP(e){return e.issues.map(t=>`${t.path.length>0?t.path.join("."):"input"}: ${t.message}`)}function fP(e,t,n){let r=[];if(Array.isArray(t))r=t;else if(At(t)&&Array.isArray(t.queries))r=t.queries;else if(At(t))r=[t];else throw new ct('Tool input must be a JSON object, an array of query objects, or { "queries": [...] }.');if(r.length===0)throw new ct("At least one query is required.");let o=At(t)&&Array.isArray(t.queries)?Object.fromEntries(Object.entries(t).filter(([c])=>c!=="queries")):{},i=!1,s={...n,onUnknownFields:(c,l)=>{i=!0,n.onUnknownFields?.(c,l)}},a=r.map((c,l)=>mP(e,l,hP(e,c,l,s),{sourceLabel:n.sourceLabel}));if(i&&n.onUnknownFields!==void 0)throw new ct("Tool input contains unknown fields. See warnings above for details.");return{...o,queries:a}}function mP(e,t,n,r){let o={...n},i=ur(e),s=r.sourceLabel??"direct tool execution",a=gP(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 gP(e,t){return`Execute ${e} via ${t}`}function hP(e,t,n,r={}){if(!At(t))throw new ct("Tool input must be a JSON object or an array of objects.");let o=new Set([...Sa(e).filter(a=>!a.name.includes(".")).map(a=>a.name),...Ra]),i={},s=[];for(let[a,c]of Object.entries(t)){if(o.has(a)){i[a]=c;continue}s.push(a)}return s.length>0&&o.size>0&&r.onUnknownFields?.(s,n),i}function yP(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 ga(e){if(Array.isArray(e.enum)&&e.enum.length>0)return`enum(${e.enum.map(String).join(", ")})`;if(e.type==="array"){let n=Ln(e.items)?e.items:void 0;return`array<${n?ga(n):"value"}>`}let t=Array.isArray(e.anyOf)?e.anyOf:Array.isArray(e.oneOf)?e.oneOf:void 0;if(t){let n=t.filter(Ln).map(ga).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 bP(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&&RP(i)).sort(SP),o=Math.max(Hd,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=>!$d.has(i.name)).filter(i=>i.type!=="boolean").slice(0,Hd)}function RP(e){return $d.has(e.name)||e.type==="boolean"?!1:CP(e)?ha.has(e.name):!0}function SP(e,t){let n=ha.get(e.name)??Number.MAX_SAFE_INTEGER,r=ha.get(t.name)??Number.MAX_SAFE_INTEGER;return n!==r?n-r:e.name.localeCompare(t.name)}function CP(e){return e.constraints?.includes("default ")===!0}function ya(e,t,n=""){let r=[];for(let[o,i]of Object.entries(e)){if(!n&&Ra.has(o))continue;let s=Ln(i)?i:{},a=n?`${n}.${o}`:o;if(r.push({name:a,required:t.has(o),type:ga(s),constraints:yP(s),description:typeof s.description=="string"?s.description:void 0}),At(s.properties)){let l=new Set(Array.isArray(s.required)?s.required.filter(u=>typeof u=="string"?!ba(s.properties?.[u]):!1):[]);r.push(...ya(s.properties,l,a))}let c=s.type==="array"&&Ln(s.items)?s.items:void 0;if(c&&At(c.properties)){let l=new Set(Array.isArray(c.required)?c.required.filter(u=>typeof u=="string"?!ba(c.properties?.[u]):!1):[]);r.push(...ya(c.properties,l,a))}}return r}function PP(e,t){if(t.startsWith("array<")){let n=t.slice(6,-1);return[zd(e,n)]}return zd(e,t)}function zd(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"facebook";case"repo":return"react";case"extension":return"ts";case"filename":return"package.json";case"language":return"TypeScript";case"symbolName":return"myFunction";case"name":case"packageName":return"react";default:return e}}function At(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ln(e){return At(e)}function ba(e){return Ln(e)&&"default"in e}var ma,Nd,ct,JC,Ra,ZC,Bd,Qd,Hd,ha,$d,Ca=y(()=>{"use strict";To();yn();na();vo();ra();Io();oa();ia();sa();Bo();Uo();ar();qo();la();Jo();lr();ma=["GitHub","Local Code","Package","Other"],Nd=new Map([$.GITHUB_SEARCH_CODE,$.GITHUB_SEARCH_REPOSITORIES,$.GITHUB_SEARCH_PULL_REQUESTS,$.GITHUB_FETCH_CONTENT,$.GITHUB_VIEW_REPO_STRUCTURE,$.GITHUB_CLONE_REPO,$.LOCAL_RIPGREP,$.LOCAL_FIND_FILES,$.LOCAL_FETCH_CONTENT,$.LOCAL_VIEW_STRUCTURE,we,$.PACKAGE_SEARCH,Wt].map((e,t)=>[e,t])),ct=class extends Error{constructor(n,r=[]){super(n);this.details=r;this.name="DirectToolInputError"}details},JC=["id","mainResearchGoal","researchGoal","reasoning"],Ra=new Set([...JC]),ZC=["id","researchGoal","reasoning"],Bd=[{name:"content",type:"Array<{ type: string; text: string }>"},{name:"structuredContent",type:"object",optional:!0},{name:"isError",type:"boolean",optional:!0}],Qd=[{name:$.GITHUB_SEARCH_CODE,schema:Ao,inputSchema:Lo},{name:$.GITHUB_FETCH_CONTENT,schema:Sn,inputSchema:Oo},{name:$.GITHUB_VIEW_REPO_STRUCTURE,schema:Do,inputSchema:No},{name:$.GITHUB_SEARCH_REPOSITORIES,schema:Fo,inputSchema:Mo},{name:$.GITHUB_SEARCH_PULL_REQUESTS,schema:Pn,inputSchema:_o},{name:$.PACKAGE_SEARCH,schema:Go,inputSchema:Ho},{name:$.GITHUB_CLONE_REPO,schema:or,inputSchema:ko},{name:$.LOCAL_RIPGREP,schema:Ot,inputSchema:$o},{name:$.LOCAL_VIEW_STRUCTURE,schema:En,inputSchema:jo},{name:$.LOCAL_FIND_FILES,schema:xn,inputSchema:Qo},{name:$.LOCAL_FETCH_CONTENT,schema:wn,inputSchema:zo},{name:we,schema:Ko,inputSchema:Yo},{name:$.LOCAL_BINARY_INSPECT,schema:On,inputSchema:Xo},{name:Wt,schema:ti,inputSchema:An}];Hd=4,ha=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]]),$d=new Set(["page","itemsPerPage","limit","matchPage","maxFiles","maxMatchesPerFile","matchContentLength","responseCharLength","responseCharOffset"])});function Lt(e){return e.toLowerCase().replace(/^https?:\/\//,"").replace(/\/$/,"")}function _n(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 ni(e){if(!e.token.refreshTokenExpiresAt)return!1;let t=new Date(e.token.refreshTokenExpiresAt);return isNaN(t.getTime())?!0:new Date>=t}var ri=y(()=>{"use strict"});function xP(e){let t=Lt(e),n=pr.get(t);return!n||Date.now()-n.cachedAt>=wP?!1:n.credentials?!_n(n.credentials):!0}function Pa(e){e?pr.delete(Lt(e)):pr.clear()}function jd(e){let t=Lt(e);if(xP(t))return pr.get(t).credentials}function qd(e,t){let n=Lt(e);pr.set(n,{credentials:t,cachedAt:Date.now()})}var pr,wP,Vd=y(()=>{"use strict";ri();pr=new Map,wP=300*1e3});import oi from"node:os";import TP from"node:path";function xa(){return ii?process.env.APPDATA||TP.join(In,"AppData","Roaming"):In}var ii,wa,EP,In,Wd=y(()=>{"use strict";ii=oi.platform()==="win32",wa=oi.platform()==="darwin",EP=oi.platform()==="linux",In=oi.homedir()});var Ta=y(()=>{"use strict";Wd()});import{existsSync as kP,mkdirSync as OP}from"node:fs";import{join as Ee}from"node:path";function AP(e){let t=process.env[e];return t&&t.trim().length>0?t:void 0}function LP(){return ii?Ee(xa(),Ea):wa?Ee(In,Ea):Ee(AP("XDG_CONFIG_HOME")??Ee(In,".config"),Ea)}function Kd(){kP(Le.home)||OP(Le.home,{recursive:!0,mode:vP})}var Ea,vP,He,Le,Fn=y(()=>{"use strict";Ta();Ea=".octocode",vP=448;He=LP(),Le={home:He,config:Ee(He,".octocoderc"),credentials:Ee(He,"credentials.json"),key:Ee(He,".key"),session:Ee(He,"session.json"),stats:Ee(He,"stats.json"),tmp:Ee(He,"tmp"),clone:Ee(He,"tmp","clone"),tree:Ee(He,"tmp","tree"),binary:Ee(He,"tmp","binary"),repos:Ee(He,"tmp","clone"),unzip:Ee(He,"tmp","unzip"),cliConfig:Ee(He,"config.json"),lspConfig:Ee(He,"lsp-servers.json")}});import{z as Se}from"zod";var _P,IP,Yd,Xd=y(()=>{"use strict";_P=Se.object({token:Se.string(),tokenType:Se.literal("oauth"),scopes:Se.array(Se.string()).optional(),refreshToken:Se.string().optional(),expiresAt:Se.string().optional(),refreshTokenExpiresAt:Se.string().optional()}),IP=Se.object({hostname:Se.string(),username:Se.string(),token:_P,gitProtocol:Se.enum(["ssh","https"]),createdAt:Se.string(),updatedAt:Se.string()}),Yd=Se.object({version:Se.number(),credentials:Se.record(Se.string(),IP)})});import{existsSync as Jd,readFileSync as Zd,writeFileSync as ep,unlinkSync as kG,statSync as FP,chmodSync as MP}from"node:fs";import{createCipheriv as DP,createDecipheriv as NP,randomBytes as tp}from"node:crypto";function en(){Kd()}function op(){if(en(),Jd(Zt))return FP(Zt).mode&511&63&&MP(Zt,384),Buffer.from(Zd(Zt,"utf8"),"hex");let e=tp(32);return ep(Zt,e.toString("hex"),{mode:384}),e}function ka(e){let t=op(),n=tp(GP),r=DP(rp,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 Oa(e){let t=op(),[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=NP(rp,t,i);a.setAuthTag(s);let c=a.update(o,"hex","utf8");return c+=a.final("utf8"),c}function si(){if(en(),!Jd(fr))return{version:1,credentials:{}};try{let e=Zd(fr,"utf8"),t=Oa(e),n=JSON.parse(t),r=Yd.safeParse(n);return r.success?r.data:{version:1,credentials:{}}}catch{return{version:1,credentials:{}}}}function ip(e){en();let t=ka(JSON.stringify(e,null,2));ep(fr,t,{mode:384})}var np,fr,Zt,rp,GP,sp=y(()=>{"use strict";Fn();Xd();np=Le.home,fr=Le.credentials,Zt=Le.key,rp="aes-256-gcm",GP=16});var mr,Mn,va=y(()=>{"use strict";mr="178c6fc778ccc68e1d6a",Mn="github.com"});import{refreshToken as HP}from"@octokit/oauth-methods";import{request as zP}from"@octokit/request";function BP(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 QP(e){return e==="github.com"||e===Mn?"https://api.github.com":`https://${e}/api/v3`}async function ap(e,t=Mn,n=mr){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(ni(r))return{success:!1,error:"Refresh token has expired. Please login again."};try{let o=await HP({clientType:"github-app",clientId:n,clientSecret:"",refreshToken:r.token.refreshToken,request:zP.defaults({baseUrl:QP(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?BP(o.message):"Token refresh failed"}}}async function cp(e,t=Mn,n=mr){let r=await e.getCredentials(t);if(!r||!r.token)return{token:null,source:"none"};if(!_n(r))return{token:r.token.token,source:"stored",username:r.username};if(r.token.refreshToken){let o=await ap(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 lp=y(()=>{"use strict";ri();va()});function up(){for(let e of Aa){let t=process.env[e];if(t?.trim())return{token:t.trim(),source:`env:${e}`}}return null}var Aa,La=y(()=>{"use strict";Aa=["OCTOCODE_TOKEN","GH_TOKEN","GITHUB_TOKEN"]});import{execFile as UP}from"child_process";function _a(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=$P.filter(a=>!o.has(a)),s=i.length?`${i.join(":")}:${r}`:r;UP("gh",n,{encoding:"utf8",timeout:5e3,env:{...process.env,PATH:s}},(a,c)=>{if(a||!c){t(null);return}t(c.trim()||null)})})}var $P,Ia=y(()=>{"use strict";$P=["/opt/homebrew/bin","/usr/local/bin","/home/linuxbrew/.linuxbrew/bin"]});function dp(e){Fa=e}function jP(){if(!Fa)throw new Error("Token resolution not initialized. Call initTokenResolution() first.");return Fa}async function ai(e){let t=e?.hostname??Mn,n=e?.clientId??mr,r=e?.getGhCliToken??_a,o=up();if(o)return{token:o.token,source:o.source,wasRefreshed:!1};let i=await jP().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{}return null}var Fa,pp=y(()=>{"use strict";La();Ia();va();Fa=null});async function fp(e){let t=Lt(e.hostname),n={...e,hostname:t,updatedAt:new Date().toISOString()};try{let r=si();return r.credentials[t]=n,ip(r),Pa(t),{success:!0}}catch{throw new Error("Failed to store credentials")}}async function Ma(e="github.com",t){let n=Lt(e);if(!t?.bypassCache){let i=jd(n);if(i!==void 0)return i}let o=si().credentials[n]||null;return qd(n,o),o}async function mp(e,t){let n=await Ma(e);return n?(n.token=t,n.updatedAt=new Date().toISOString(),await fp(n),!0):!1}async function gp(e,t){return cp({getCredentials:Ma,updateToken:mp},e,t)}var Da=y(()=>{"use strict";Vd();sp();lp();pp();La();ri();dp({getTokenWithRefresh:gp})});var hp=y(()=>{"use strict";Da();Ia()});import{z as W}from"zod";var JP,ZP,ci,ew,li,yp,bp,Rp=y(()=>{"use strict";JP=W.object({rawChars:W.number(),responseChars:W.number(),savedChars:W.number(),calls:W.number()}),ZP=W.object({hits:W.record(W.string(),W.number()).default({}),rateLimits:W.number().default(0)}),ci=W.record(W.string(),W.number()).default({}),ew=W.object({toolCalls:W.number(),errors:W.number(),rateLimits:W.number(),rateLimitsByProvider:ci,rawChars:W.number(),responseChars:W.number(),savedChars:W.number(),charSavingsCalls:W.number(),githubCacheHits:W.number(),githubCacheRateLimits:W.number(),packageRegistryFailures:W.number().default(0),packageRegistryFailuresByRegistry:ci}),li=W.object({toolCalls:W.number(),errors:W.number(),rateLimits:W.number(),rateLimitsByProvider:ci,charsSavedByTool:W.record(W.string(),JP).default({}),githubCacheHits:ZP.default({hits:{},rateLimits:0}),packageRegistryFailures:ci,totalUsage:ew.optional()}),yp=W.object({version:W.literal(1),sessionId:W.string(),createdAt:W.string(),lastActiveAt:W.string(),stats:li.optional()}),bp=W.object({version:W.literal(1),stats:li})});function Sp(e){return Object.values(e).reduce((t,n)=>t+n,0)}function tw(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:Sp(n.hits),githubCacheRateLimits:n.rateLimits,packageRegistryFailures:Sp(o),packageRegistryFailuresByRegistry:o}}function Rt(e){let t={...e,rateLimitsByProvider:e.rateLimitsByProvider??{},charsSavedByTool:e.charsSavedByTool??{},githubCacheHits:e.githubCacheHits??{hits:{},rateLimits:0},packageRegistryFailures:e.packageRegistryFailures??{}};return{...t,totalUsage:tw(t)}}function Na(){return Rt({toolCalls:0,errors:0,rateLimits:0,rateLimitsByProvider:{},charsSavedByTool:{},githubCacheHits:{hits:{},rateLimits:0},packageRegistryFailures:{}})}var Ga=y(()=>{"use strict"});import{existsSync as Pp,readFileSync as wp,writeFileSync as nw,unlinkSync as bH,renameSync as rw}from"node:fs";function Cp(e,t){let n=`${e}.tmp`;nw(n,JSON.stringify(t,null,2),{mode:384}),rw(n,e)}function ow(e){let{stats:t,...n}=e;return n}function iw(e){let t=JSON.parse(e),n=bp.safeParse(t);if(n.success)return Rt(n.data.stats);let r=li.safeParse(t);return r.success?Rt(r.data):null}function sw(e){let t=e?Rt(e):Na();if(!Pp(hr))return t;try{let n=wp(hr,"utf8"),r=iw(n);return r||t}catch{return t}}function Ha(e){en(),Cp(hr,{version:e.version,stats:Rt(e.stats)}),Cp(gr,ow(e))}function xp(){if(!Pp(gr))return null;try{let e=wp(gr,"utf8"),t=JSON.parse(e),n=yp.safeParse(t);return n.success?{...n.data,stats:sw(n.data.stats)}:null}catch{return null}}var gr,hr,ui=y(()=>{"use strict";Da();Fn();Rp();Ga();gr=Le.session,hr=Le.stats});function cw(){Tp||(Tp=!0,Ep=()=>{di()},kp=()=>{di()},Op=()=>{di()},process.on("exit",Ep),process.on("SIGINT",kp),process.on("SIGTERM",Op))}function lw(){za||(za=setInterval(()=>{yr&&_t&&(Ha(_t),yr=!1)},aw),za.unref())}function vp(){if(_t)return _t;let e=xp();return e&&(_t=e),e}function Ap(e){_t=e,yr=!0,cw(),lw()}function di(){if(!Ba&&yr&&_t){Ba=!0;try{Ha(_t),yr=!1}catch{}finally{Ba=!1}}}var aw,_t,yr,za,Tp,Ep,kp,Op,Ba,Lp=y(()=>{"use strict";ui();aw=6e4,_t=null,yr=!1,za=null,Tp=!1,Ep=null,kp=null,Op=null,Ba=!1});import{randomUUID as IH}from"node:crypto";function uw(e){return Rt(e)}function dw(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 _p(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 pw(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 It(e){let t=vp();if(!t)return{success:!1,session:null};let n=uw(t.stats),r=Rt({toolCalls:n.toolCalls+(e.toolCalls??0),errors:n.errors+(e.errors??0),rateLimits:n.rateLimits+(e.rateLimits??0),rateLimitsByProvider:_p(n.rateLimitsByProvider,e.rateLimitsByProvider),charsSavedByTool:dw(n.charsSavedByTool,e.charsSavedByTool),githubCacheHits:pw(n.githubCacheHits,e.githubCacheHits),packageRegistryFailures:_p(n.packageRegistryFailures,e.packageRegistryFailures)}),o={...t,lastActiveAt:new Date().toISOString(),stats:r};return Ap(o),{success:!0,session:o}}function Qa(e=1){return It({rateLimits:e})}function Ua(e,t,n){let r=Number.isFinite(t)?Math.max(0,t):0,o=Number.isFinite(n)?Math.max(0,n):0;return It({charsSavedByTool:{[e]:{rawChars:r,responseChars:o,savedChars:Math.max(0,r-o),calls:1}}})}function $a(e,t=1){return It({githubCacheHits:{hits:{[e]:t},rateLimits:0}})}function ja(e=1){return It({githubCacheHits:{hits:{},rateLimits:e}})}var br=y(()=>{"use strict";ui();Ga();Lp();ui()});var Ip=y(()=>{"use strict";br();br();br();br()});var qa=y(()=>{"use strict"});var pi,tn,Dn,Rr,fi,Ft,Va,Sr,Cr,Pr,wr,xr,Tr,Er=y(()=>{"use strict";pi={apiUrl:"https://api.github.com"},tn={enabled:!1,enableClone:!1,allowedPaths:[],workspaceRoot:void 0},Dn={enabled:null,enableAdditional:null,disabled:null},Rr={timeout:3e4,maxRetries:3},fi={configPath:void 0},Ft={format:"yaml",pagination:{defaultCharLength:2e4}},Va={version:1,github:pi,local:tn,tools:Dn,network:Rr,lsp:fi,output:Ft},Sr=5e3,Cr=3e5,Pr=0,wr=10,xr=1e3,Tr=5e4});import{z as me}from"zod";var Wa,Ka=y(()=>{"use strict";Wa=me.looseObject({$schema:me.string().optional(),version:me.number().int().optional(),github:me.record(me.string(),me.unknown()).optional(),local:me.record(me.string(),me.unknown()).optional(),tools:me.record(me.string(),me.unknown()).optional(),network:me.record(me.string(),me.unknown()).optional(),lsp:me.record(me.string(),me.unknown()).optional(),output:me.record(me.string(),me.unknown()).optional()})});import{existsSync as fw,readFileSync as mw}from"node:fs";function gw(e){let t="",n=0,r=!1,o="";for(;n<e.length;){let i=e[n],s=e[n+1];if(!r&&(i==='"'||i==="'")){r=!0,o=i,t+=i,n++;continue}if(r){if(t+=i,i==="\\"&&n+1<e.length){t+=e[n+1],n+=2;continue}i===o&&(r=!1),n++;continue}if(i==="/"&&s==="/"){for(;n<e.length&&e[n]!==`
9
+ `;)n++;continue}if(i==="/"&&s==="*"){for(n+=2;n<e.length-1;){if(e[n]==="*"&&e[n+1]==="/"){n+=2;break}n++}continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,"$1"),t}function hw(e){let t=gw(e);return JSON.parse(t)}function Ya(){let e=Fp;if(!fw(e))return{success:!1,error:"Config file does not exist",path:e};try{let t=mw(e,"utf-8");if(!t.trim())return{success:!0,config:{},path:e};let n=hw(t),r=Wa.safeParse(n);return r.success?{success:!0,config:r.data,path:e}:{success:!1,error:`Config file has invalid structure: ${r.error.issues[0]?.message??"unknown error"}`,path:e}}catch(t){return{success:!1,error:`Failed to parse config file: ${t instanceof Error?t.message:"Unknown error"}`,path:e}}}function Nn(){return Le.home}var Fp,mi=y(()=>{"use strict";Fn();Ka();Fp=Le.config});function yw(e,t){if(e==null)return null;if(typeof e!="string")return`${t}: Must be a string`;try{let n=new URL(e);return["http:","https:"].includes(n.protocol)?null:`${t}: Only http/https URLs allowed`}catch{return`${t}: Invalid URL format`}}function Za(e,t,n,r){return e==null?null:typeof e!="number"||isNaN(e)?`${t}: Must be a number`:e<n||e>r?`${t}: Must be between ${n} and ${r}`:null}function Mp(e,t){return e==null?null:typeof e!="boolean"?`${t}: Must be a boolean`:null}function Dp(e,t){if(e==null)return null;if(!Array.isArray(e))return`${t}: Must be an array`;for(let n=0;n<e.length;n++)if(typeof e[n]!="string")return`${t}[${n}]: Must be a string`;return null}function bw(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];typeof r=="string"&&(r.trim()===""?t.push(`local.allowedPaths[${n}]: empty or whitespace-only path`):!r.startsWith("/")&&!r.startsWith("~")?t.push(`local.allowedPaths[${n}]: must be absolute path or start with ~ (got "${r}")`):r.includes("..")&&t.push(`local.allowedPaths[${n}]: path traversal (..) not allowed (got "${r}")`))}return t}function Xa(e,t){return e===void 0||e===null?null:Dp(e,t)}function Np(e,t){return e==null?null:typeof e!="string"?`${t}: Must be a string`:null}function Rw(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("github: Must be an object");return}let r=yw(e.apiUrl,"github.apiUrl");r&&t.push(r)}function Sw(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("local: Must be an object");return}let n=e,r=Mp(n.enabled,"local.enabled");r&&t.push(r);let o=Mp(n.enableClone,"local.enableClone");o&&t.push(o);let i=Dp(n.allowedPaths,"local.allowedPaths");if(i)t.push(i);else if(Array.isArray(n.allowedPaths)){let s=bw(n.allowedPaths);t.push(...s)}if(n.workspaceRoot!==void 0&&n.workspaceRoot!==null){let s=Np(n.workspaceRoot,"local.workspaceRoot");s?t.push(s):typeof n.workspaceRoot=="string"&&!n.workspaceRoot.startsWith("/")&&!n.workspaceRoot.startsWith("~")?t.push('local.workspaceRoot: must be an absolute path or start with ~ (got "'+n.workspaceRoot+'")'):typeof n.workspaceRoot=="string"&&n.workspaceRoot.includes("..")&&t.push('local.workspaceRoot: path traversal (..) not allowed (got "'+n.workspaceRoot+'")')}}function Cw(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("tools: Must be an object");return}let n=e,r=Xa(n.enabled,"tools.enabled");r&&t.push(r);let o=Xa(n.enableAdditional,"tools.enableAdditional");o&&t.push(o);let i=Xa(n.disabled,"tools.disabled");i&&t.push(i)}function Pw(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("network: Must be an object");return}let n=e,r=Za(n.timeout,"network.timeout",Sr,Cr);r&&t.push(r);let o=Za(n.maxRetries,"network.maxRetries",Pr,wr);o&&t.push(o)}function ww(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("lsp: Must be an object");return}let r=Np(e.configPath,"lsp.configPath");r&&t.push(r)}function xw(e,t){if(e==null)return;if(typeof e!="object"||Array.isArray(e)){t.push("output: Must be an object");return}let n=e;if(n.format!==void 0&&(typeof n.format!="string"?t.push("output.format: Must be a string"):["yaml","json"].includes(n.format)||t.push("output.format: Must be one of: yaml, json")),n.pagination!==void 0&&n.pagination!==null)if(typeof n.pagination!="object"||Array.isArray(n.pagination))t.push("output.pagination: Must be an object");else{let r=n.pagination,o=Za(r.defaultCharLength,"output.pagination.defaultCharLength",xr,Tr);o&&t.push(o)}}function ec(e){let t=[],n=[];if(typeof e!="object"||e===null||Array.isArray(e))return{valid:!1,errors:["Configuration must be a JSON object"],warnings:[]};let r=e;r.version!==void 0&&(typeof r.version!="number"||!Number.isInteger(r.version)?t.push("version: Must be an integer"):r.version>1&&n.push(`version: Config version ${r.version} is newer than supported version ${1}`)),Rw(r.github,t),Sw(r.local,t),Cw(r.tools,t),Pw(r.network,t),ww(r.lsp,t),xw(r.output,t);let o=new Set(["$schema","version","github","local","tools","network","lsp","output"]);for(let i of Object.keys(r))o.has(i)||n.push(`Unknown configuration key: ${i}`);return{valid:t.length===0,errors:t,warnings:n,config:t.length===0?e:void 0}}var tc=y(()=>{"use strict";qa();Er()});function nc(){return globalThis[Tw]??"mcp"}var Tw,rc=y(()=>{"use strict";Tw="__octocodeRuntimeSurface__"});function Gp(e){if(e==null)return;let t=e.trim().toLowerCase();if(t!==""){if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function oc(e){if(e==null)return;let t=e.trim();if(t==="")return;let n=parseInt(t,10);if(!isNaN(n))return n}function gi(e){if(e==null)return;let t=e.trim();if(t!=="")return t.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function Hp(e){return{apiUrl:process.env.GITHUB_API_URL?.trim()||e?.apiUrl||pi.apiUrl}}function zp(e){let t=nc()==="cli",n=Gp(process.env.ENABLE_LOCAL),r=Gp(process.env.ENABLE_CLONE),o=gi(process.env.ALLOWED_PATHS),i=process.env.WORKSPACE_ROOT?.trim()||void 0;return{enabled:t?!0:n??e?.enabled??tn.enabled,enableClone:r??e?.enableClone??(t?!0:tn.enableClone),allowedPaths:o??e?.allowedPaths??tn.allowedPaths,workspaceRoot:i??e?.workspaceRoot??tn.workspaceRoot}}function Bp(e){let t=gi(process.env.TOOLS_TO_RUN),n=gi(process.env.ENABLE_TOOLS),r=gi(process.env.DISABLE_TOOLS);return{enabled:t??e?.enabled??Dn.enabled,enableAdditional:n??e?.enableAdditional??Dn.enableAdditional,disabled:r??e?.disabled??Dn.disabled}}function Qp(e){let t=oc(process.env.REQUEST_TIMEOUT),n=oc(process.env.MAX_RETRIES),r=t??e?.timeout??Rr.timeout;r=Math.max(Sr,Math.min(Cr,r));let o=n??e?.maxRetries??Rr.maxRetries;return o=Math.max(Pr,Math.min(wr,o)),{timeout:r,maxRetries:o}}function Up(e){return{configPath:(process.env.OCTOCODE_LSP_CONFIG?.trim()||void 0)??e?.configPath??fi.configPath}}function $p(e){let t=process.env.OCTOCODE_OUTPUT_FORMAT?.trim().toLowerCase(),n=oc(process.env.OCTOCODE_OUTPUT_DEFAULT_CHAR_LENGTH),r=t||e?.format||Ft.format,o=n??e?.pagination?.defaultCharLength??Ft.pagination.defaultCharLength,i=Math.max(xr,Math.min(Tr,o));return{format:Ew.has(r)?r:Ft.format,pagination:{defaultCharLength:i}}}var Ew,jp=y(()=>{"use strict";Er();rc();Ew=new Set(["yaml","json"])});function ic(e,t){let n=e!==void 0,r=process.env.GITHUB_API_URL!==void 0||process.env.ENABLE_LOCAL!==void 0||process.env.ENABLE_CLONE!==void 0||process.env.ALLOWED_PATHS!==void 0||process.env.WORKSPACE_ROOT!==void 0||process.env.TOOLS_TO_RUN!==void 0||process.env.ENABLE_TOOLS!==void 0||process.env.DISABLE_TOOLS!==void 0||process.env.REQUEST_TIMEOUT!==void 0||process.env.MAX_RETRIES!==void 0||process.env.OCTOCODE_LSP_CONFIG!==void 0||process.env.OCTOCODE_OUTPUT_FORMAT!==void 0||process.env.OCTOCODE_OUTPUT_DEFAULT_CHAR_LENGTH!==void 0,o;return n&&r?o="mixed":n?o="file":o="defaults",{version:e?.version??Va.version,github:Hp(e?.github),local:zp(e?.local),tools:Bp(e?.tools),network:Qp(e?.network),lsp:Up(e?.lsp),output:$p(e?.output),source:o,configPath:n?t:void 0}}function sc(){let e=Ya();return e.success&&e.config&&ec(e.config).valid?ic(e.config,e.path):ic(void 0)}function ke(){let e=Date.now();return hi&&e-qp<kw||(hi=sc(),qp=e),hi}var hi,qp,kw,ac=y(()=>{"use strict";Er();mi();tc();jp();hi=null,qp=0,kw=6e4});var Wp=y(()=>{"use strict";ac();ac()});var Kp=y(()=>{"use strict";qa();Er();mi();mi();tc();Wp();rc();Ka()});import{existsSync as Iw,readdirSync as Fw,lstatSync as Mw}from"node:fs";import{join as Dw}from"node:path";function yi(e){if(!Iw(e))return 0;let t=0,n=[e];for(;n.length>0;){let r=n.pop(),o;try{o=Fw(r)}catch{continue}for(let i of o){let s=Dw(r,i);try{let a=Mw(s);if(a.isSymbolicLink())continue;a.isDirectory()?n.push(s):a.isFile()&&(t+=a.size)}catch{}}}return t}var Yp=y(()=>{"use strict"});var _e=y(()=>{"use strict";hp();Ta();Ip();Kp();Fn();Yp()});var nn,bi=y(()=>{nn="16.6.0"});var cc,kr,Or,Gw,Mt,Gn,ze,Hw,vr,zw,Zz,gt=y(()=>{"use strict";cc={NOT_INITIALIZED:{code:"CONFIG_NOT_INITIALIZED",message:"Configuration not initialized. Call initialize() and await its completion before calling getServerConfig()."}},kr={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"}},Or={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})`}},Gw={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"}},Mt={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}`}},Gn={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"}},ze={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}`}},Hw={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}`}},vr={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"}},zw={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}`}},Zz={...cc,...kr,...Or,...Gw,...Mt,...Gn,...ze,...Hw,...vr,...zw}});import{maskSensitiveData as Bw}from"@octocodeai/octocode-engine/mask";async function Xp(){try{let e=await Qw({hostname:"github.com"});if(e?.token){let t=e.source??"none";return{token:e.token,source:Uw.has(t)?t:"none"}}return{token:null,source:"none"}}catch{return{token:null,source:"none"}}}async function Jp(){if(Lr!==null)return;if(Ar!==null)return Ar;let e=(async()=>{let t=ke(),n=await Xp();Lr={version:nn,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}})();Ar=e;try{await e}catch(t){throw Ar===e&&(Lr=null,Ar=null),t}}function Zp(){if(!Lr){let e=Bw(cc.NOT_INITIALIZED.message);throw new Error(e)}return Lr}async function ef(){return(await Xp()).token}function lc(){return"github"}function uc(){let e=ke().github.apiUrl;return{provider:"github",baseUrl:e!=="https://api.github.com"?e:void 0}}var Lr,Ar,Qw,Uw,_r=y(()=>{"use strict";_e();bi();gt();Lr=null,Ar=null,Qw=ai,Uw=new Set(["env:OCTOCODE_TOKEN","env:GH_TOKEN","env:GITHUB_TOKEN","octocode-storage","gh-cli","none"])});import{createRequire as $w}from"node:module";function Y(){if(Ri)return Ri;try{return Ri=qw(),Ri}catch(e){throw new dc(e)}}var jw,tf,Ri,qw,dc,M,ge=y(()=>{"use strict";jw=$w(import.meta.url),tf="@octocodeai/octocode-engine",qw=()=>jw(tf),dc=class extends Error{constructor(n){super(`Failed to load native dependency ${tf}`);this.cause=n;this.name="ContextUtilsLoadError"}cause};M={applyContentViewMinification(e,t){return Y().applyContentViewMinification(e,t)},applyMinification(e,t){return Y().applyMinification(e,t)},minifyContent(e,t){return Y().minifyContent(e,t)},minifyContentSync(e,t){return Y().minifyContentSync(e,t)},minifyContentResult(e,t){return Y().minifyContentResult(e,t)},minifyMarkdownCore(e){return Y().minifyMarkdownCore(e)},extractSignatures(e,t){return Y().extractSignatures(e,t)},extractJsSymbols(e,t){return Y().extractJsSymbols(e,t)},findInFileReferences(e,t,n,r){return Y().findInFileReferences(e,t,n,r)},extractGraphFacts(e,t){return Y().extractGraphFacts(e,t)},getSupportedJsTsExtensions(){return Y().getSupportedJsTsExtensions()},getSupportedGraphFactExtensions(){return Y().getSupportedGraphFactExtensions()},getGraphFactCapabilities(){return Y().getGraphFactCapabilities()},structuralSearch(e,t,n,r){return Y().structuralSearch(e,t,n,r)},structuralSearchFiles(e){return Y().structuralSearchFiles(e)},getSupportedStructuralExtensions(){return Y().getSupportedStructuralExtensions()},inspectBinaryNative(e){return Y().inspectBinaryNative(e)},extractBinaryStringsNative(e,t,n,r=0){return Y().extractBinaryStringsNative(e,t,n,r)},validateRipgrepPattern(e,t,n){return Y().validateRipgrepPattern(e,t,n)},getSemanticBoundaryOffsets(e,t){return Y().getSemanticBoundaryOffsets(e,t)},jsonToYamlString(e,t){return Y().jsonToYamlString(e,t)},parseRipgrepJson(e,t){return Y().parseRipgrepJson(e,t)},searchRipgrep(e){return Y().searchRipgrep(e)},queryFileSystem(e){return Y().queryFileSystem(e)},extractMatchingLines(e,t,n){return Y().extractMatchingLines(e,t,n)},filterPatch(e,t){return Y().filterPatch(e,t)},charToByteOffset(e,t){return Y().charToByteOffset(e,t)},byteToCharOffset(e,t){return Y().byteToCharOffset(e,t)},byteSliceContent(e,t,n){return Y().byteSliceContent(e,t,n)},sliceContent(e,t,n,r){return Y().sliceContent(e,t,n,r)},get SIGNATURES_ONLY_HINT(){return Y().SIGNATURES_ONLY_HINT}}});function Dt(e){(e.provider?It({rateLimits:1,rateLimitsByProvider:{[e.provider]:1}}):Qa(1)).session&&e.provider==="github"&&ja(1)}function nf(e){It({packageRegistryFailures:{[e]:1}})}var Si=y(()=>{"use strict";_e()});import{Octokit as Vw}from"octokit";import{throttling as Ww}from"@octokit/plugin-throttling";import{createHash as Kw}from"crypto";function Yw(e){return Kw("sha256").update(e).digest("hex").substring(0,16)}function fc(e){return Date.now()-e.createdAt>Jw}function lf(){for(let[e,t]of lt.entries())fc(t)&&lt.delete(e);if(lt.size>pc){let e=[...lt.entries()].filter(([n])=>n!=="DEFAULT").sort((n,r)=>n[1].createdAt-r[1].createdAt),t=lt.size-pc;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&lt.delete(r[0])}}}function ex(){Fr||(Fr=setInterval(lf,Zw),typeof Fr=="object"&&"unref"in Fr&&Fr.unref())}function sf(e,t,n){Dt({limit_type:e,retry_after_seconds:t,api_method:n.method,api_url:n.url,provider:"github"})}function af(e){let t=Zp(),n=t.githubApiUrl,r={debug:()=>{},info:()=>{},warn:()=>{},error:(...i)=>console.error(...i)},o={userAgent:`octocode-mcp/${nn}`,baseUrl:n,request:{timeout:t.timeout||3e4,log:r},throttle:tx(),log:r,...e&&{auth:e}};return new Xw(o)}async function ue(e){if(ex(),e?.token){let n=Yw(e.token),r=lt.get(n);if(r&&!fc(r))return r.client;lt.size>=pc&&lf();let o=af(e.token);return lt.set(n,{client:o,createdAt:Date.now()}),o}let t=lt.get("DEFAULT");return t&&!fc(t)?t.client:Ir||(Ir=(async()=>{try{let n=await ef(),r=af(n??void 0);return lt.set("DEFAULT",{client:r,createdAt:Date.now()}),r}finally{Ir=null}})(),Ir)}async function Ye(e,t,n){let r=`${e}/${t}`,o=Mr.get(r);if(o)return o;let i=await ue(n);try{let{data:a}=await i.rest.repos.get({owner:e,repo:t}),c=a.default_branch;return cf(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}),cf(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 cf(e,t){if(Mr.size>=nx){let n=Mr.keys().next().value;n!==void 0&&Mr.delete(n)}Mr.set(e,t)}var Xw,Jw,pc,Zw,lt,Ir,Fr,rf,of,tx,nx,Mr,Be=y(()=>{"use strict";_r();_r();bi();Si();Xw=Vw.plugin(Ww),Jw=300*1e3,pc=50,Zw=60*1e3;lt=new Map,Ir=null,Fr=null;rf=3,of=60;tx=()=>({onRateLimit:(e,t,n,r)=>(sf("primary",e,t),r<rf&&e<of),onSecondaryRateLimit:(e,t,n,r)=>(sf("secondary",e,t),r<rf&&e<of)});nx=200,Mr=new Map});var j,ye,uf,mc,gc,Ci,df=y(()=>{"use strict";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"},ye={[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."}},uf={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},mc={CONNECTION_FAILED:["ENOTFOUND","ECONNREFUSED"],TIMEOUT:["timeout"]},gc={SECONDARY:/\bsecondary rate\b/i,GRAPHQL_TYPE:"RATE_LIMITED"},Ci={RESET_BUFFER_SECONDS:1,SECONDARY_FALLBACK_SECONDS:60}});import{RequestError as pf}from"octokit";function rn(e){if(!(e instanceof pf)||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 rx.some(o=>r.includes(o))})}function ne(e){return e instanceof pf?ox(e):e instanceof Error?px(e):{error:typeof e=="string"?e:ye[j.UNKNOWN].message,type:"unknown"}}function ox(e){let{status:t,message:n,response:r}=e;if(t===403)return sx(n,r);if(t===429)return ix(n,r);let o=uf[t];return o?dx(o,t):Hn(j.UNKNOWN,{error:n||ye[j.UNKNOWN].message,status:t})}function hc(e,t){let n=e?.[t],r=n===void 0?NaN:parseInt(String(n),10);return isNaN(r)?void 0:r}function ix(e,t){let n=t?.headers,r=hc(n,"retry-after"),o=hc(n,"x-ratelimit-reset"),i=hc(n,"x-ratelimit-remaining")??0,s=o?new Date(o*1e3):null,a=r??(s?Math.max(Math.ceil((s.getTime()-Date.now())/1e3)+Ci.RESET_BUFFER_SECONDS,0):void 0);return Dt({limit_type:"primary",retry_after_seconds:a,rate_limit_remaining:i,rate_limit_reset_ms:s?s.getTime():void 0,provider:"github"}),Hn(j.RATE_LIMIT_PRIMARY,{error:e||ye[j.RATE_LIMIT_PRIMARY].messageWithoutTime,status:429,rateLimitRemaining:i,rateLimitReset:s?s.getTime():void 0,retryAfter:a,scopesSuggestion:ye[j.RATE_LIMIT_PRIMARY].suggestion})}function sx(e,t){let n=t?.headers;if(gc.SECONDARY.test(e))return ax(n);let r=n?.["x-ratelimit-remaining"],o=ux(t);return r!==void 0&&String(r)==="0"||o?cx(n):lx(n)}function ax(e){let t=Number(e?.["retry-after"]),n=isNaN(t)?Ci.SECONDARY_FALLBACK_SECONDS:t;return Dt({limit_type:"secondary",retry_after_seconds:n,provider:"github"}),Hn(j.RATE_LIMIT_SECONDARY,{error:ye[j.RATE_LIMIT_SECONDARY].message(n),status:403,rateLimitRemaining:0,retryAfter:n,scopesSuggestion:ye[j.RATE_LIMIT_SECONDARY].suggestion})}function cx(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)+Ci.RESET_BUFFER_SECONDS,0):void 0,i=r?ye[j.RATE_LIMIT_PRIMARY].messageWithTime(r,o):ye[j.RATE_LIMIT_PRIMARY].messageWithoutTime;return Dt({limit_type:"primary",retry_after_seconds:o,rate_limit_remaining:0,rate_limit_reset_ms:r?r.getTime():void 0,provider:"github"}),Hn(j.RATE_LIMIT_PRIMARY,{error:i,status:403,rateLimitRemaining:0,rateLimitReset:r?r.getTime():void 0,retryAfter:o,scopesSuggestion:ye[j.RATE_LIMIT_PRIMARY].suggestion})}function lx(e){let t=e?.["x-accepted-oauth-scopes"],n=e?.["x-oauth-scopes"],r=ye[j.FORBIDDEN_PERMISSIONS].suggestion;return t&&n&&(r=fx(String(t),String(n))),Hn(j.FORBIDDEN_PERMISSIONS,{error:ye[j.FORBIDDEN_PERMISSIONS].message,status:403,scopesSuggestion:r})}function ux(e){return e?.data?.errors?.some(n=>n.type===gc.GRAPHQL_TYPE)??!1}function dx(e,t){let n=ye[e];return Hn(e,{error:n.message,status:t,..."suggestion"in n&&{scopesSuggestion:n.suggestion}})}function px(e){return mc.CONNECTION_FAILED.some(t=>e.message.includes(t))?{error:ye[j.NETWORK_CONNECTION_FAILED].message,type:"network",scopesSuggestion:ye[j.NETWORK_CONNECTION_FAILED].suggestion}:mc.TIMEOUT.some(t=>e.message.includes(t))?{error:ye[j.REQUEST_TIMEOUT].message,type:"network",scopesSuggestion:ye[j.REQUEST_TIMEOUT].suggestion}:{error:e.message,type:"unknown"}}function Hn(e,t){return{type:"http",...t}}function fx(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?ye[j.FORBIDDEN_PERMISSIONS].suggestionWithScopes(o):ye[j.FORBIDDEN_PERMISSIONS].fallbackSuggestion}var rx,St=y(()=>{"use strict";df();Si();rx=["cannot be searched","do not exist","does not exist","could not be found","cannot be found"]});function mx(e){return`user:${e}`}function ff(e){return e.startsWith('"')||yx.test(e)?e:`"${e.replace(/"/g,'\\"')}"`}function mf(e){return new yc().addQueryTerms(e).addSearchFilters(e).addOwnerRepo(e).addMatchFilters(e).build()}function gf(e){return new bc().addQueryTerms(e).addOwnerRepo(e).addRepoFilters(e).addMatchFilters(e).addQualityFilters(e).build()}function hf(e){return new Rc().addBasicFilters(e).addOwnerRepo(e).addStateFilters(e).addUserFilters(e).addBranchFilters(e).addDateFilters(e).addEngagementFilters(e).addReviewFilters(e).addOrganizationFilters(e).addNegativeFilters(e).addMiscFilters(e).build()}function yf(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 gx,hx,yx,Dr,yc,bc,Rc,Pi=y(()=>{"use strict";gx=/[@/]/,hx=/(?:^|\/)([^/]+\.[A-Za-z][A-Za-z0-9]{0,9})$/,yx=/^[A-Za-z0-9_-]+$/;Dr=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(mx(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=gx.test(t)&&!t.startsWith('"')?`"${t}"`:t;this.queryParts.push(`${n}:${o}`)}return this}build(){return this.queryParts.join(" ").trim()}},yc=class extends Dr{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(ff))}return this}addSearchFilters(t){let n=t.path,r=t.filename,o=typeof n=="string"&&!r?n.match(hx):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}},bc=class extends Dr{addQueryTerms(t){return Array.isArray(t.keywords)&&t.keywords.length>0&&this.queryParts.push(...t.keywords.map(ff)),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}},Rc=class extends Dr{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}addEngagementFilters(t){return this.addSimpleFilter(t.comments,"comments"),this.addSimpleFilter(t.reactions,"reactions"),this.addSimpleFilter(t.interactions,"interactions"),this}addReviewFilters(t){return t.review&&this.queryParts.push(`review:${t.review}`),this}addOrganizationFilters(t){return this.addArrayFilter(t.label,"label",!0),t.milestone&&this.queryParts.push(`milestone:"${t.milestone}"`),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}}});import bx from"node-cache";import Rx from"crypto";function Px(e){return e.match(/^v\d+-([^:]+):/)?.[1]}function wx(e){return e.startsWith("gh-api-")||e.startsWith("gh-repo-")||e==="github-user"}function xx(e){let t=Px(e);if(!(!t||!wx(t)))try{$a(t,1)}catch{}}function Tx(){let e=Date.now();for(let[t,n]of Nr.entries())e-n.startedAt>Cx&&Nr.delete(t)}function kx(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(Ex.has(o)){n=!0;continue}r[o]=t[o]}return n?r:e}function Qe(e,t,n){let r=Sc(kx(t)),o=n?`${n}:${r}`:r,i=Rx.createHash("sha256").update(o).digest("hex");return`${Sx}-${e}:${i}`}function Sc(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=>Sc(o,t)).join(",")}]`:`{${Object.keys(e).sort().map(o=>{let i=e[o];return`"${o}":${Sc(i,t)}`}).join(",")}}`)}function Ox(e){return bf[e]||bf.default}function vx(e,t,n){try{return on.set(e,t,n),zn.sets++,zn.totalKeys=on.keys().length,!0}catch{try{let r=on.keys();for(let o of r)on.get(o);return on.set(e,t,n),zn.sets++,zn.totalKeys=on.keys().length,!0}catch{return!1}}}async function Ue(e,t,n={}){if(n.skipCache)return await t();if(!n.forceRefresh)try{let i=on.get(e);if(i!==void 0)return zn.hits++,xx(e),i}catch{}Tx();let r=Nr.get(e);if(r)return r.promise;let o=(async()=>{try{let i=await t();if(n.forceRefresh||zn.misses++,(n.shouldCache??(()=>!0))(i)){let a=n.ttl;if(!a){let l=e.match(/^v\d+-([^:]+):/)?.[1]??"default";a=Ox(l)}vx(e,i,a)}return i}finally{Nr.delete(e)}})();return Nr.set(e,{promise:o,startedAt:Date.now()}),o}var Sx,Cx,on,zn,bf,Nr,Ex,Nt=y(()=>{"use strict";_e();Sx="v1",Cx=300*1e3,on=new bx({stdTTL:86400,checkperiod:300,maxKeys:5e3,deleteOnExpire:!0,useClones:!1}),zn={hits:0,misses:0,sets:0,totalKeys:0,lastReset:new Date},bf={"gh-api-code":3600,"gh-api-repos":7200,"gh-api-prs":1800,"gh-api-file-content":300,"gh-repo-structure-api":7200,"github-user":900,"npm-search":14400,default:86400},Nr=new Map;Ex=new Set([])});import{DISCOVERY_IGNORED_FILE_EXTENSIONS as AB,DISCOVERY_IGNORED_FILE_NAMES as LB,DISCOVERY_IGNORED_FOLDER_NAMES as _B,getDiscoveryExtension as Rf,shouldIgnoreDiscoveryDir as Gr,shouldIgnoreDiscoveryFile as Bn}from"@octocodeai/octocode-engine/security";var Hr=y(()=>{"use strict"});function Q(e){if(typeof e=="string")return e.length;try{return JSON.stringify(e)?.length??0}catch{return String(e).length}}function Cf(e){if(!(typeof e!="number"||!Number.isFinite(e)))return Math.max(0,e)}function U(e,t){let n=typeof t=="number"?Cf(t):Q(t);if(n===void 0)return e;try{Object.defineProperty(e,Sf,{value:n,enumerable:!1,configurable:!0})}catch{}return e}function ce(e){if(!(typeof e!="object"||e===null))return Cf(e[Sf])}var Sf,ie=y(()=>{"use strict";Sf=Symbol.for("octocode.rawResponseChars")});function wi(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}var Cc=y(()=>{"use strict"});import{ContentSanitizer as Ax}from"@octocodeai/octocode-engine/contentSanitizer";async function wf(e,t,n){let r=Qe("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},n);return await Ue(r,async()=>await Lx(e,t),{shouldCache:i=>"data"in i&&!i.error})}async function Lx(e,t){try{let n=await ue(t);if(e.keywords&&e.keywords.length>0&&e.keywords.filter(S=>S&&S.trim()).length===0)return{error:ze.QUERY_EMPTY.message,type:"http",status:400};let r=mf(e);if(!r.trim())return{error:ze.QUERY_EMPTY.message,type:"http",status:400};let o=Math.min(typeof e.limit=="number"?e.limit:Pf,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 _x(a.data.items,a.data.total_count),l=a.data.incomplete_results===!0,u=c.total_count,d=Math.min(u,1e3),p=Math.min(Math.ceil(d/o),10),f=Math.min(i,Math.max(1,p)),m=f<p,g=Math.min(d,p*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:f,totalPages:p,perPage:o,totalMatches:d,reportedTotalMatches:u,reachableTotalMatches:g,totalMatchesKind:"reported",totalMatchesCapped:u>d,hasMore:m,...m?{nextPage:f+1}:{},uniqueFileCount:c._researchContext?.uniqueFileCount}},status:200,headers:wi(a.headers),rawResponseChars:Q(a.data)}}catch(n){if(rn(n)){let o=Math.min(typeof e.limit=="number"?e.limit:Pf,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 _x(e,t){let n=Ix(e),r=new Set,o=!1,i=[],s=new Set,a=e.filter(f=>!Bn(f.path)),c=0,l=0,u=await Promise.allSettled(a.map(async f=>{s.add(f.path);let m=[],g=await Promise.allSettled((f.text_matches||[]).map(async _=>{let E=_.fragment,O=Ax.sanitizeContent(E||"",f.path);E=O.content,O.hasSecrets&&r.add(`Secrets detected in ${f.path}: ${O.secretsDetected.join(", ")}`),O.warnings.length>0&&O.warnings.forEach(x=>r.add(`${f.path}: ${x}`));try{let x=await M.minifyContent(E||"",f.path);E=x.content,x.failed?o=!0:x.type!=="failed"&&(m.push(x.type),i.push(x.type))}catch{o=!0}return{context:E||"",positions:_.matches?.map(x=>Array.isArray(x.indices)&&x.indices.length>=2?[x.indices[0],x.indices[1]]:[0,0])||[]}})),b=g.filter(_=>_.status==="fulfilled").map(_=>_.value),S=g.filter(_=>_.status==="rejected").length;S>0&&(l+=S);let C=f,k=Array.from(new Set(m));return{path:f.path,matches:b,url:f.html_url,repository:{nameWithOwner:f.repository.full_name,url:f.repository.url,pushedAt:f.repository.pushed_at||void 0},...C.last_modified_at&&{lastModifiedAt:C.last_modified_at},...k.length>0&&{minificationType:k.join(",")}}})),d=u.filter(f=>f.status==="fulfilled").map(f=>f.value);c=u.filter(f=>f.status==="rejected").length;let p={items:d,total_count:t!==void 0?t:a.length,_researchContext:{uniqueFileCount:s.size,repositoryContext:n?(()=>{let f=n.full_name.split("/");return f.length===2&&f[0]&&f[1]?{owner:f[0],repo:f[1],branch:n.default_branch||void 0}:void 0})():void 0}};return n&&(p.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&&(p.matchLocations=Array.from(r)),p.minified=!o,p.minificationFailed=o,i.length>0&&(p.minificationTypes=Array.from(new Set(i))),p}function Ix(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 Pf,xf=y(()=>{"use strict";ge();Be();St();Pi();Nt();Hr();gt();ie();Cc();fe();Pf=30});function Ef(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 kf(e,t,n){let r=Qe("gh-api-repos",{keywords:e.keywords,topicsToSearch:e.topicsToSearch,owner:e.owner,stars:e.stars,size:e.size,created:e.created,updated:e.updated,language:e.language,match:e.match,sort:e.sort,limit:e.limit,page:e.page},n);return await Ue(r,async()=>await Mx(e,t),{shouldCache:i=>"data"in i&&!i.error})}async function Fx(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(f){if(f?.status!==404)return ne(f);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(f=>{let g=f.full_name.split("/"),b=g[0]||"",S=g[1]||"";return{owner:b,repo:S,defaultBranch:f.default_branch,stars:f.stargazers_count||0,description:f.description?f.description:"No description",url:f.html_url,createdAt:f.created_at,updatedAt:f.updated_at,pushedAt:f.pushed_at,visibility:f.visibility,...f.topics&&f.topics.length>0&&{topics:f.topics},...f.forks_count&&f.forks_count>0&&{forksCount:f.forks_count},...f.open_issues_count&&f.open_issues_count>0&&{openIssuesCount:f.open_issues_count},...f.language&&{language:f.language},...Ef(f)}}),c=a.length,l=c===n,u=(r-1)*n+c,d=s??u+(l?1:0),p=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:p,hasMore:l,...l?{nextPage:r+1}:{}}},status:200,rawResponseChars:Q(i)}}async function Mx(e,t){try{let n=await ue(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 Fx({owner:o,sort:e.sort,limit:e.limit,page:e.page},n);let i=gf(e);if(!i.trim())return{error:ze.QUERY_EMPTY.message,type:"http",status:400};let s=Math.min(e.limit||Tf,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(C=>{let _=C.full_name.split("/"),E=_[0]||"",O=_[1]||"";return{owner:E,repo:O,defaultBranch:C.default_branch,stars:C.stargazers_count||0,description:C.description?C.description:"No description",url:C.html_url,createdAt:C.created_at,updatedAt:C.updated_at,pushedAt:C.pushed_at,visibility:C.visibility,...C.topics&&C.topics.length>0&&{topics:C.topics},...C.forks_count&&C.forks_count>0&&{forksCount:C.forks_count},...C.open_issues_count&&C.open_issues_count>0&&{openIssuesCount:C.open_issues_count},...C.language&&{language:C.language},...Ef(C)}}),p=u.data.total_count,f=Math.min(p,1e3),m=Math.min(Math.ceil(f/s),10),g=Math.min(a,Math.max(1,m)),b=g<m,S=Math.min(f,m*s);return{data:{repositories:d,pagination:{currentPage:g,totalPages:m,perPage:s,totalMatches:f,reportedTotalMatches:p,reachableTotalMatches:S,totalMatchesKind:"reported",totalMatchesCapped:p>f,hasMore:b,...b?{nextPage:g+1}:{}}},status:200,headers:wi(u.headers),rawResponseChars:Q(u.data)}}catch(n){if(rn(n)){let r=Math.min(e.limit||Tf,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 Tf,Of=y(()=>{"use strict";Be();St();Pi();Nt();gt();ie();Cc();fe();Tf=30});function Qn(e){return!!(e&&typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&"type"in e)}var xi=y(()=>{"use strict"});function be(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 Dx(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 Ct(e){return{error:e.error,status:e.status||500,provider:"github",hints:e.hints,rateLimit:Dx(e)}}function Ti(e){return Nx(e)?Ct({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 Nx(e){if(typeof e!="object"||e===null||!("error"in e))return!1;let n=e.error;return typeof n=="string"||Gx(n)}function Gx(e){return typeof e=="object"&&e!==null&&typeof e.toString=="function"}var ht=y(()=>{"use strict"});function vf(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 Hx(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,...vf(e.pagination)},repositoryContext:e._researchContext?.repositoryContext,nonExistentScope:e.nonExistentScope,incompleteResults:e.incompleteResults}}function zx(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,...vf(e.pagination)},nonExistentScope:e.nonExistentScope}}async function Af(e,t,n=be){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 wf(s,t);return Qn(a)?Ct(a):a.data?{data:Hx(a.data),status:200,provider:"github",rawResponseChars:a.rawResponseChars??Q(a.data)}:{error:"No data returned from GitHub API",status:500,provider:"github"}}async function Lf(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 kf(n,t);return"error"in r?Ti(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:zx(r.data),status:200,provider:"github",rawResponseChars:r.rawResponseChars??Q(r.data)}}var _f=y(()=>{"use strict";xf();Of();xi();ie();ht();ht()});import{completeMetadata as Pc}from"@octocodeai/octocode-core";var A,If=y(()=>{"use strict";A=new Proxy({},{get(e,t){return Pc.toolNames[t]},ownKeys(){return Object.keys(Pc.toolNames)},getOwnPropertyDescriptor(e,t){let n=Pc.toolNames;if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}})});import{completeMetadata as Qx}from"@octocodeai/octocode-core";var wc,Ff=y(()=>{"use strict";wc=new Proxy({},{get(e,t){return Qx.tools[t]?.description??""}})});import{completeMetadata as Ux}from"@octocodeai/octocode-core";function xc(e){return Object.prototype.hasOwnProperty.call(Ux.tools,e)}var Mf=y(()=>{"use strict"});import{completeMetadata as $x}from"@octocodeai/octocode-core";function Tc(){return $x.baseSchema}var jx,Df=y(()=>{"use strict";jx=new Proxy({},{get(e,t){return Tc()[t]},ownKeys(){return Array.from(new Set([...Reflect.ownKeys(Tc())]))},getOwnPropertyDescriptor(e,t){let n=Tc();if(t in n)return{enumerable:!0,configurable:!0,value:n[t]}}})});var pe=y(()=>{"use strict";If();Ff();Mf();Df()});import{RequestError as Nf}from"octokit";async function qx(e,t,n,r,o,i,s,a){let c=await Ye(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?`,p=await Bf(e,r,o,i,s||c);return p.length>0&&(u.hints=[...u.hints||[],...zf(i,p)]),{...u,...d&&{scopesSuggestion:d}}}async function Vx(e,t,n,r,o,i){let s=ne(t),a=await Bf(e,n,r,o,i||"main");return a.length>0&&(s.hints=[...s.hints||[],...zf(o,a)]),s}async function Gf(e,t){let n=e.replace(/\s/g,"");if(!n)return{error:Mt.FILE_EMPTY.message,type:"unknown",status:404};try{let r=Buffer.from(n,"base64");return r.indexOf(0)!==-1?{error:Mt.BINARY_FILE.message,type:"unknown",status:415}:{data:r.toString("utf-8"),status:200}}catch{return{error:Mt.DECODE_FAILED.message,type:"unknown",status:422}}}async function Hf(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"?Gf(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 Wx(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 Ye(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(p=>p.name===a&&p.type==="file");if(!u)return{error:`File ${a} not found in ${s||"root"}`,type:"unknown",status:404};let d=await Hf(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 Ei(e,t){try{let n=await ue(t),{owner:r,repo:o,path:i,branch:s}=e,a={owner:r,repo:o,path:i,...s&&{ref:s}},c,l=s;try{c=await n.rest.repos.getContent(a)}catch(d){if(d instanceof Nf&&d.status===404)if(s){let p=await qx(n,d,a,r,o,i,s,t);if("result"in p)c=p.result,l=p.actualBranch;else return p}else return await Vx(n,d,r,o,i,s);else{if(d instanceof Nf&&d.status===413)return await Wx(n,r,o,i,s||l,t);throw d}}let u=c.data;if(Array.isArray(u))return{error:Mt.PATH_IS_DIRECTORY.message(A.GITHUB_VIEW_REPO_STRUCTURE),type:"unknown",status:400};if("content"in u&&u.type==="file"){let d=typeof u.content=="string"?u.content:"",p=u.size??0,f;if(d.length>0)f=await Gf(d,i);else if(p>0&&"sha"in u&&typeof u.sha=="string"&&u.sha)f=await Hf(n,r,o,u.sha,i);else return{error:Mt.FILE_EMPTY.message,type:"unknown",status:404};if("error"in f)return f;if(!l&&!s)try{l=await Ye(r,o,t)}catch{}return{data:{rawContent:f.data,branch:l||void 0,resolvedRef:l||s||"HEAD"},status:200,rawResponseChars:Q(u)}}return{error:Mt.UNSUPPORTED_TYPE.message(u.type),type:"unknown",status:415}}catch(n){return ne(n)}}function zf(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 Bf(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(f=>f.name.toLowerCase()===s.toLowerCase());u&&l.push(u.path);let d=s.replace(/\.[^/.]+$/,"");return c.filter(f=>f.name===s?!1:!!f.name.startsWith(d+".")).forEach(f=>l.push(f.path)),l.length===0&&d.length>=3&&c.filter(m=>{let g=m.name.replace(/\.[^/.]+$/,"");return g!==d&&g.length>=3&&(d.startsWith(g)||g.startsWith(d))}).forEach(m=>l.push(m.path)),Array.from(new Set(l)).slice(0,3)}catch{return[]}}var Ec=y(()=>{"use strict";Be();St();pe();gt();ie()});function Ze(){try{return ke().output.pagination.defaultCharLength}catch{return Ft.pagination.defaultCharLength}}var zr=y(()=>{"use strict";_e();_e()});function Br(e){if(e.length===0)return[];let t=e.split(/\r?\n/);return t.length>0&&t[t.length-1]===""&&t.pop(),t}function Pt(e){return Br(e).length}var Qr=y(()=>{"use strict"});function kc(e,t){return M.byteToCharOffset(e,t)}function Qf(e,t){return M.charToByteOffset(e,t)}function Uf(e){return M.charToByteOffset(e,e.length)}function Oc(e,t,n,r){return M.sliceContent(e,t,n,r)}var $f=y(()=>{"use strict";ge()});function Un(e,t=0,n,r={}){let o=r.mode??"characters",i=e.length,s=Uf(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,p,f,m,g;if(o==="bytes"){let b=Math.min(t,s),S=Math.min(b+n,s);d=kc(e,b),p=kc(e,S),p<i&&Qf(e,p)<S&&(p+=1);let C=Oc(e,d,p-d);c=C.text,d=C.charOffset,p=C.charOffset+C.charLength,l=C.byteOffset,u=C.byteOffset+C.byteLength,f=u<s;let k=r.actualOffset??b;m=Math.floor(k/a)+1,g=Math.max(m,Math.ceil(s/a))}else{let b=Oc(e,t,n);c=b.text,d=b.charOffset,p=b.charOffset+b.charLength,l=b.byteOffset,u=b.byteOffset+b.byteLength,f=p<i;let S=r.actualOffset??d;m=Math.floor(S/a)+1,g=Math.max(m,Math.ceil(i/a))}return{paginatedContent:c,byteOffset:l,byteLength:u-l,totalBytes:s,nextByteOffset:f?u:void 0,charOffset:d,charLength:c.length,totalChars:i,nextCharOffset:f?p:void 0,hasMore:f,estimatedTokens:Math.ceil(c.length/4),currentPage:m,totalPages:g}}function jf(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 ki=y(()=>{"use strict";$f()});function Xx(e){return e&&e.trim().length>0?e:Yx}function qf(e,t){return M.getSemanticBoundaryOffsets(e,Xx(t)).filter(n=>Number.isInteger(n)&&n>=0&&n<=e.length)}function Jx(e,t){let n=e.indexOf(`
10
+ `,t);return n===-1?void 0:n+1}function Oi(e){let t=e.trimEnd().split(`
11
+ `).at(-1)??"";return t.length>0&&(t[0]===" "||t[0]===" ")}function vi(e,t,n){let r=Jx(e,Math.max(0,t));if(r!==void 0)return qf(e,n).find(o=>o>=r&&o>t)}function Ai(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=qf(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<=Kx?{length:c-o,chunkMode:"semantic"}:{length:i,chunkMode:"char-limit"}}var Kx,Yx,vc=y(()=>{"use strict";ge();Kx=8e3,Yx="__octocode_generic__.unknown"});function Li(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(`
12
+ `),a={isRegex:r,caseSensitive:o,contextLines:n,maxMatches:i},c=M.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 Ac=y(()=>{"use strict";ge()});function eT(e){return Zx.test(e.split(/[?#]/,1)[0]??e)}function Vf(e,t){return eT(t)?nT(tT(e)):null}function _i(e,t){let n=Vf(e,t);if(n===null||n.length===0)return null;let r=[];return Kf(n,r),r.join(`
13
+ `)}function Wf(e,t){let n=Vf(e,t);return n===null?null:n.map(Yf)}function tT(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 nT(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 Kf(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}`),Kf(n.children,t)}}function Yf(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(Yf)}}var Zx,Ii=y(()=>{"use strict";Zx=/\.(?:md|markdown|mdx)$/i});import{ContentSanitizer as Xf}from"@octocodeai/octocode-engine/contentSanitizer";function oT(){let e=Ze();return Math.min(e,8e3)}function Ur(e,t){return{sourceChars:e,sourceBytes:t}}function Jf(e,t,n){let r=e.content??"",o=n??oT();if(r.length<=o&&t===0)return e;let i=e.path??void 0,{length:s,chunkMode:a}=Ai(r,t,o,i),c=Un(r,t,s),l;if(c.hasMore&&a==="char-limit"&&Oi(c.paginatedContent)){let u=c.charOffset+c.charLength;l=vi(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 Zf(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}}async function em(e,t,n,r,o,i,s,a,c=5,l,u,d,p="standard"){let f=e.length,m=Buffer.byteLength(e,"utf-8"),g=p==="standard"||p==="symbols",b=g?"standard":"none",S;if(p==="symbols"){let Z=M.extractSignatures(e,o);if(Z===null){let z=_i(e,o);if(z!==null)return{owner:t,repo:n,path:o,content:z,contentView:"symbols",isSkeleton:!0,branch:r,totalLines:Pt(e),...Ur(f,m),isPartial:!1,signaturesExtracted:!0,hints:[M.SIGNATURES_ONLY_HINT]};S=`minify:"symbols" is not supported for this file type (${o.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(Z!==null){let z=Xf.sanitizeContent(Z,o),Ae=M.applyContentViewMinification(z.content,o),Pe=[M.SIGNATURES_ONLY_HINT];return l&&Pe.push('matchString was ignored \u2014 minify:"symbols" returns the full skeleton index. Use startLine/endLine from the gutter to read the matching body.'),z.hasSecrets&&Pe.push(`Secrets detected and redacted: ${z.secretsDetected.join(", ")}`),{owner:t,repo:n,path:o,content:Ae,contentView:"symbols",isSkeleton:!0,branch:r,totalLines:Pt(e),...Ur(f,m),isPartial:!1,signaturesExtracted:!0,hints:Pe}}}let C=new Set,k=e,_=k.split(`
14
+ `),E=Pt(k),O=e,x,H,I=!1,v;if(i)O=e;else if(l){let Z=d===!0,z;try{z=Li(_,l,c,u??!1,Z)}catch{return{owner:t,repo:n,path:o,content:"",branch:r,totalLines:E,...Ur(f,m),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(z.matchCount===0){let K=u?[`Regex "${l}" matched no lines. Verify the pattern, check flags (case-${Z?"sensitive":"insensitive"}), or use fullContent=true to inspect the file.`]:[`"${l}" not found in file${Z?" (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,...Ur(f,m),matchNotFound:!0,searchedFor:l,hints:K}}O=z.lines.join(`
15
+ `);let Ae=z.matchRanges[0],Pe=z.matchRanges[z.matchRanges.length-1];s=Ae.start,a=Pe.end,x=Ae.start,H=Pe.end,I=!0,z.matchRanges.length>1&&(v=z.matchRanges);let mt=z.matchingLines.slice(0,5).join(", "),Vt=z.matchingLines.length>5?` and ${z.matchingLines.length-5} more`:"";C.add(z.matchCount>1?`Found ${z.matchCount} occurrences of "${l}" on lines ${mt}${Vt} \u2014 all shown as ${z.matchRanges.length} slice${z.matchRanges.length===1?"":"s"}, \xB1${c} lines of context each.`:`Found "${l}" on line ${z.matchingLines[0]}`)}else if(s!==void 0||a!==void 0){let Z=s||1,z=a||E;if(Z<1||Z>E)O=e;else if(z<Z)O=e;else{let Ae=Math.max(1,Z),Pe=Math.min(E,z),mt=_.slice(Ae-1,Pe);x=Ae,H=Pe,I=!0,O=mt.join(`
16
+ `),z>E&&C.add(`Requested endLine ${z} adjusted to ${E} (file end)`)}}let D=Xf.sanitizeContent(O,o);if(O=g?M.applyContentViewMinification(D.content,o):D.content,D.hasSecrets&&C.add(`Secrets detected and redacted: ${D.secretsDetected.join(", ")}`),D.warnings.length>0&&D.warnings.forEach(Z=>C.add(Z)),E>2e3&&p!=="symbols"&&!l&&!s&&!a&&!i){let Z=Math.max(1,E-200);C.add(`Large file (${E} lines) \u2014 minify:"symbols" for an export index, or startLine=${Z} for the tail.`)}let B=Array.from(C);return{owner:t,repo:n,path:o,content:O,...b!=="standard"&&{contentView:b},branch:r,totalLines:E,...Ur(f,m),...I&&{startLine:x,endLine:H,isPartial:I},...v&&{matchRanges:v},...B.length>0&&{matchLocations:B},...(B.length>0||S)&&{warnings:[...S?[S]:[],...B]}}}var tm=y(()=>{"use strict";zr();fe();ge();Qr();ki();vc();Ac();Ii()});async function nm(e,t,n){let r=Qe("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch},n),o=await Ue(r,async()=>await Ei(e,t),{shouldCache:f=>"data"in f&&!f.error,forceRefresh:e.forceRefresh===!0});if(!("data"in o)||!o.data)return o;let i=o.data.branch||o.data.resolvedRef||e.branch||"",s=await em(o.data.rawContent,e.owner,e.repo,i,e.path,e.fullContent||!1,e.startLine,e.endLine,e.contextLines??5,e.matchString,e.matchStringIsRegex,e.matchStringCaseSensitive,e.minify??"standard");if("error"in s)return{error:s.error||"Unknown error",status:500,type:"unknown"};let{signaturesExtracted:a,...c}=s,l=e.charOffset??0,u=e.charLength,d=a?c:Jf(c,l,u),p=(e.charOffset??0)>0;if(!e.noTimestamp&&!p)try{let f=await ue(t),m=await Ue(Qe("gh-api-file-content",{owner:e.owner,repo:e.repo,path:e.path,branch:e.branch,ts:!0},n),()=>Zf(f,e.owner,e.repo,e.path,e.branch),{shouldCache:g=>g!==null,forceRefresh:e.forceRefresh===!0});m&&(d.lastModified=m.lastModified,d.lastModifiedBy=m.lastModifiedBy)}catch{}return{data:d,status:200,rawResponseChars:o.rawResponseChars}}var rm=y(()=>{"use strict";Be();Nt();Ec();tm()});function iT(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,isSkeleton:e.isSkeleton,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:sT(e,t),matchNotFound:e.matchNotFound,searchedFor:e.searchedFor}}function sT(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 om(e,t,n=be){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 nm(i,t);if(Qn(s))return Ct(s);if(!s.data)return{error:"No data returned from GitHub API",status:500,provider:"github"};let a=s.data.hints;return{data:iT(s.data,e),status:200,provider:"github",rawResponseChars:s.rawResponseChars??Q(s.data),...a?.length?{hints:a}:{}}}var im=y(()=>{"use strict";rm();xi();ie();ht();ht()});function $r(e,t=lT){let n=e?Br(e):[];return{lines:n.slice(0,t),moreCount:Math.max(0,n.length-t)}}function sm(e,t,n){if(!e)return"";if(t===void 0&&n===void 0)return e;let r={additions:t,deletions:n};return M.filterPatch(e,r)}function am(e){return e?M.filterPatch(e,{trimContext:!0,contextLines:cT}):""}var cT,lT,Fi=y(()=>{"use strict";ge();Qr();cT=2,lT=20});import{ContentSanitizer as cm}from"@octocodeai/octocode-engine/contentSanitizer";function Lc(e){let t=cm.sanitizeContent(e.title??""),n=e.body?cm.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 um(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 jr(e,t={}){let n=t.charOffset??0,r=t.charLength??uT,o=t.charLength??dT,i=typeof e.body=="string"?M.minifyMarkdownCore(e.body):e.body,s=um(i,n,r,!t.includeFullBody),a=(e.comments??[]).sort((m,g)=>{let b=m.commentType==="review_inline"?0:1,S=g.commentType==="review_inline"?0:1;return b-S}),c=a.filter(m=>m.commentType==="review_inline").length,l=a.length-c,u=t.includeFullCommentDetails?a:a.slice(0,lm),d=u.map(m=>{let g=um(m.body,n,o,!t.includeFullCommentDetails);return{...m,body:g.value??"",...g.pagination?{body_pagination:g.pagination}:{}}}),p=!t.includeFullCommentDetails&&(a.length>u.length||d.some(m=>"body_pagination"in m)),f=[...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.`]:[],...p?[`PR comments are paginated/summarized to ${lm} 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(m=>({id:0,name:m,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((m,g)=>m+g.additions,0)||e.additions||0,deletions:e.file_changes?.files.reduce((m,g)=>m+g.deletions,0)||e.deletions||0,changed_files:e.file_changes?.total_count||0,...e.file_changes&&{file_changes:e.file_changes.files?.map(m=>({filename:m.filename,status:m.status,additions:m.additions,deletions:m.deletions,patch:m.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,...p?{comment_details_paginated:!0}:{}},...(e._sanitization_warnings||f.length>0)&&{_sanitization_warnings:[...e._sanitization_warnings||[],...f]}}}function qr(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 Mi(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?sm(a.patch,c?.additions,c?.deletions):void 0}}):e.map(a=>({...a,patch:a.patch?am(a.patch):a.patch}))}var uT,dT,lm,Di=y(()=>{"use strict";Fi();ge();zr();uT=Ze(),dT=Math.round(Ze()/4),lm=3});import{ContentSanitizer as _c}from"@octocodeai/octocode-engine/contentSanitizer";function Ni(e){let t=e.content;return!!(e.reviewMode==="full"||t?.changedFiles||t?.patches?.mode&&t.patches.mode!=="none")}function dm(e){return e.reviewMode==="full"?{discussion:!0,reviewInline:!0}:e.content?.comments??null}function pm(e){let t=dm(e);return t?t.discussion!==!1:!1}function fm(e){let t=dm(e);return t?t.reviewInline!==!1:!1}function mm(e){let t=e.content;return!!(e.reviewMode==="full"||t?.commits)}function gm(e){let t=e.content;return!!(e.reviewMode==="full"||t?.reviews)}function hm(e){return!!e.content?.comments?.includeBots}function ym(e){let t=e.toLowerCase();return t.endsWith("[bot]")||pT.has(t.replace(/\[bot\]$/,""))}function Ic(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()}async function yc(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+=F(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let u=o?i:i.filter(p=>!hc(p.user?.login??"")),l=i.length-u.length,d=u.map(p=>{let f=O.minifyMarkdownCore(Xo(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:Yo.sanitizeContent(f).content,created_at:p.created_at??"",updated_at:p.updated_at??"",commentType:"discussion"}}),m=[];return l>0&&m.push(`${l} bot comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:D(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:D([],0)}}}async function Rc(e,t,n,r){try{let{items:o,rawResponseChars:i}=await Jo(s=>e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:s}));return D(o.map(s=>({id:String(s.id),user:s.user?.login??"unknown",state:s.state??"",body:Yo.sanitizeContent(O.minifyMarkdownCore(Xo(s.body??""))).content,submitted_at:s.submitted_at??void 0,commit_id:s.commit_id??void 0})),i)}catch{return D([],0)}}async function bc(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+=F(p.data),i.push(...p.data),c=p.data.length===100,a++}while(c);let u=o?i:i.filter(p=>!hc(p.user?.login??"")),l=i.length-u.length,d=u.map(p=>{let f=O.minifyMarkdownCore(Xo(p.body??""));return{id:String(p.id),user:p.user?.login??"unknown",body:Yo.sanitizeContent(f).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 l>0&&m.push(`${l} bot inline comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:D(d,s),note:m.length>0?m.join("; "):void 0}}catch{return{comments:D([],0)}}}async function Sc(e,t,n){let r=e,{prData:o,sanitizationWarnings:i}=Ko(r);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0;if(e.pull_request)try{let{owner:u,repo:l}=hn(t);if(u&&l){let d=await n.rest.pulls.get({owner:u,repo:l,pull_number:e.number});if(d.data&&(s+=F(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,pr(t)||(o.file_changes={total_count:d.data.changed_files??0,files:[]}),pr(t))){let m=await Cc(u,l,e.number);m&&(s+=ee(m)??0,m.files=dr(m.files,t),o.file_changes=m)}}}catch(u){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(u)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${u instanceof Error?u.message:String(u)}`]}let a=dc(t),c=pc(t);if(a||c){let{owner:u,repo:l}=hn(t);if(u&&l){let d=gc(t),m=()=>Promise.resolve({comments:D([],0)}),[{comments:p,note:f},{comments:g,note:h}]=await Promise.all([a?yc(n,u,l,e.number,d):m(),c?bc(n,u,l,e.number,d):m()]);o.comments=[...p,...g],s+=(ee(p)??0)+(ee(g)??0);let b=[f,h].filter(R=>typeof R=="string");b.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...b])}}if(fc(t))try{let{owner:u,repo:l}=hn(t);if(u&&l){let d=await Rc(n,u,l,e.number);s+=ee(d)??0,o.reviews=d}}catch(u){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(u)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${u instanceof Error?u.message:String(u)}`]}if(mc(t))try{let{owner:u,repo:l}=hn(t);if(u&&l){let d=await Tc(u,l,e.number,t);d&&(s+=ee(d)??0,o.commits=d)}}catch(u){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(u)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${u instanceof Error?u.message:String(u)}`]}return D(o,s)}async function Jo(e){let t=[],n=0,r=1,o=!0;do{let i=await e(r);n+=F(i.data),t.push(...i.data),o=i.data.length===100,r++}while(o);return{items:t,rawResponseChars:n}}async function Cc(e,t,n,r){let o=await re(r),{items:i,rawResponseChars:s}=await Jo(a=>o.rest.pulls.listFiles({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return D({total_count:i.length,files:i},s)}async function Gg(e,t,n,r){let o=await re(r),{items:i,rawResponseChars:s}=await Jo(a=>o.rest.pulls.listCommits({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return D(i,s)}async function Ug(e,t,n,r){try{let i=await(await re(r)).rest.repos.getCommit({owner:e,repo:t,ref:n});return D(i.data.files||[],i.data)}catch{return null}}async function Tc(e,t,n,r,o){let i=await Gg(e,t,n,o);if(!i)return null;let s=ee(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 Promise.all(a.map(async u=>{let l=await Ug(e,t,u.sha,o),d=[];return l&&(s+=ee(l)??0,d=dr(l,r)),{sha:u.sha,message:u.commit.message,author:u.commit.author?.name||"unknown",date:u.commit.author?.date||"",files:d}}));return D(c,s)}async function mr(e,t,n,r){let{prData:o,sanitizationWarnings:i}=Ko(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,pr(t)||(o.file_changes={total_count:"changed_files"in e?e.changed_files??0:0,files:[]}),pr(t))try{let d=await Cc(a,c,e.number,r);d&&(s+=ee(d)??0,d.files=dr(d.files,t),o.file_changes=d)}catch(d){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(d)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${d instanceof Error?d.message:String(d)}`]}let u=dc(t),l=pc(t);if(u||l){let d=gc(t),m=()=>Promise.resolve({comments:D([],0)}),[{comments:p,note:f},{comments:g,note:h}]=await Promise.all([u?yc(n,a,c,e.number,d):m(),l?bc(n,a,c,e.number,d):m()]);o.comments=[...p,...g],s+=(ee(p)??0)+(ee(g)??0);let b=[f,h].filter(R=>typeof R=="string");b.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...b])}if(fc(t))try{let d=await Rc(n,a,c,e.number);s+=ee(d)??0,o.reviews=d}catch(d){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(d)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch reviews: ${d instanceof Error?d.message:String(d)}`]}if(mc(t))try{let d=await Tc(a,c,e.number,t,r);d&&(s+=ee(d)??0,o.commits=d)}catch(d){v(S.GITHUB_SEARCH_PULL_REQUESTS,String(d)),o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (commits): ${d instanceof Error?d.message:String(d)}`]}return D(o,s)}function Bg(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 Pc(e,t){let{owner:n,repo:r,prNumber:o}=e;if(!n||!r||!o)return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.PR_REQUIRED_PARAMS.code),{pull_requests:[],total_count:0,error:ne.PR_REQUIRED_PARAMS.message,hints:["Provide owner, repo, and prNumber"]};if(Array.isArray(n)||Array.isArray(r))return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.PR_SINGLE_VALUES.code),{pull_requests:[],total_count:0,error:ne.PR_SINGLE_VALUES.message,hints:["Do not use array for owner or repo when fetching by number"]};try{let i=await re(t),s=await i.rest.pulls.get({owner:n,repo:r,pull_number:o}),a=s.data,c=await mr(a,e,i,t);return{pull_requests:[gn(c,{includeFullBody:!0,includeFullCommentDetails:!0})],total_count:1,rawResponseChars:F(s.data)+(ee(c)??0)}}catch(i){let s=X(i);return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.PULL_REQUEST_FETCH_FAILED.code),Bg(s,ne.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 Ec(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 wc(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 _c(e,t,n){let r=we("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,"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},n);return await _e(r,async()=>await zg(e,t,n),{shouldCache:i=>!i.error})}async function zg(e,t,n){try{if(e.prNumber&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await Pc(e,t);let r=await re(t);if(!Ia(e)&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await Qg(r,e);let i=Oa(e);if(!i)return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.NO_VALID_PARAMETERS.code),{pull_requests:[],total_count:0,error:ne.NO_VALID_PARAMETERS.message,hints:["Provide search query or filters like owner/repo"]};let s=e.sort&&e.sort!=="best-match"?e.sort:void 0,a=Math.min(e.limit||30,100),c=e.page||1,u=i,l=await r.rest.search.issuesAndPullRequests({q:i,sort:s,order:e.order||"desc",per_page:a,page:c}),d=l.data.items?.filter(T=>!!T.pull_request)||[],m=await Promise.all(d.map(async T=>await Sc(T,e,r))),p=m.reduce((T,A)=>T+(ee(A)??0),0),f=m.map(T=>gn(T,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:e.charOffset,charLength:e.charLength})),g=l.data.total_count,h=Math.min(g,1e3),b=Math.min(Math.ceil(h/a),10),R=Math.min(c,Math.max(1,b)),C=R<b,w=Math.min(h,b*a);return{pull_requests:f,total_count:l.data.total_count,effectiveQuery:u,...l.data.incomplete_results&&{incomplete_results:!0},pagination:{currentPage:R,totalPages:b,perPage:a,totalMatches:h,reportedTotalMatches:g,reachableTotalMatches:w,totalMatchesKind:"reported",totalMatchesCapped:g>h,hasMore:C,...C?{nextPage:R+1}:{}},rawResponseChars:F(l.data)+p}}catch(r){if(yt(r))return wc(e);let o=X(r);return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.PULL_REQUEST_SEARCH_FAILED.code),Ec(o,ne.PULL_REQUEST_SEARCH_FAILED.message(o.error),["Verify authentication and search parameters"])}}async function Qg(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 mr(m,t,e))),c=a.reduce((m,p)=>m+(ee(p)??0),0),u=a.map(m=>gn(m,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:t.charOffset,charLength:t.charLength})),l=s.data.length===o,d=(i-1)*o+u.length;return{pull_requests:u,total_count: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:F(s.data)+c}}catch(n){if(yt(n))return wc(t);let r=X(n);return await v(S.GITHUB_SEARCH_PULL_REQUESTS,ne.PULL_REQUEST_LIST_FAILED.code),Ec(r,ne.PULL_REQUEST_LIST_FAILED.message(r.error),["Verify repository access and authentication"])}}function $g(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}:{}}}function jg(e,t,n=ce){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,...$g(e.pagination)},repositoryContext:s&&i?{owner:s,repo:i}:void 0}}async function xc(e,t,n=ce){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 _c(s,t);return a.error?Ze({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:jg(a,e,n),status:200,provider:"github",rawResponseChars:a.rawResponseChars??F(a)}}import{RequestError as Yg}from"octokit";var St={ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200};function fr(e,t){return e.hasMore?[`Page ${e.currentPage}/${e.totalPages}. Next: page=${e.currentPage+1}`]:[]}function Ac(e,t){let n=e._cachedItems;if(!n||n.length===0){let{_cachedItems:x,...L}=e;return L}let r=t.itemsPerPage??St.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=x=>{let L=x;d&&x.startsWith(d)&&(L=x.slice(d.length),L.startsWith("/")&&(L=L.slice(1)));let z=L.lastIndexOf("/");return z===-1?".":L.slice(0,z)},p=x=>{let L=x.lastIndexOf("/");return L===-1?x:x.slice(L+1)};for(let x of u){let L=m(x.path);l[L]||(l[L]={files:[],folders:[]});let z=p(x.path);x.type==="file"?l[L].files.push(z):l[L].folders.push(z)}for(let x of Object.keys(l)){let L=l[x];L&&(L.files.sort(),L.folders.sort())}let f=Object.create(null),g=Object.keys(l).sort((x,L)=>x==="."?-1:L==="."?1:x.localeCompare(L));for(let x of g){let L=l[x];L&&(f[x]=L)}let h=u.filter(x=>x.type==="file").length,b=u.filter(x=>x.type==="dir").length,R=n.filter(x=>x.type==="file").length,C=n.filter(x=>x.type==="dir").length,w=o<s,T={currentPage:o,totalPages:s,hasMore:w,...w?{nextPage:o+1}:{},entriesPerPage:r,totalEntries:i},A=fr(T,{owner:e.owner,repo:e.repo,branch:e.branch,path:d,depth:t.maxDepth??1,pageFiles:h,pageFolders:b,allFiles:R,allFolders:C}),G,$=e._cachedFileSizeMap;if($){let x=new Set(u.filter(se=>se.type==="file").map(se=>se.path)),L=e.path==="/"?"":e.path,z=Object.create(null);for(let[se,Q]of Object.entries($))for(let[M,fe]of Object.entries(Q)){let ie=se==="."?L?`${L}/${M}`:M:L?`${L}/${se}/${M}`:`${se}/${M}`;x.has(ie)&&(z[se]||(z[se]=Object.create(null)),z[se][M]=fe)}Object.keys(z).length>0&&(G=z)}return{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,apiSource:e.apiSource,summary:{totalFiles:R,totalFolders:C,truncated:w,filtered:!0,originalCount:i},structure:f,...G!==void 0&&{fileSizeMap:G},...$!==void 0&&{_cachedFileSizeMap:$},pagination:T,hints:A,rawResponseChars:e.rawResponseChars}}import{RequestError as Wg}from"octokit";var Oc=Symbol.for("octocode.recursiveFetchFailures"),Kg=new Set([401,403,429]);function Lc(e){return e instanceof Wg&&Kg.has(e.status)}function Zo(e,t){try{Object.defineProperty(e,Oc,{value:t,enumerable:!1,configurable:!0})}catch{}return e}function qo(e){if(typeof e!="object"||e===null)return 0;let t=e[Oc];return typeof t=="number"&&Number.isFinite(t)&&t>0?t:0}async function ei(e,t,n,r,o,i,s,a=new Set){if(i>s||a.has(o))return Zo(D([],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(Lc(f))throw f;return Zo(D([],0),1)}let u=F(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(h=>h.type==="dir"),g=3;for(let h=0;h<f.length;h+=g){let b=f.slice(h,h+g),R=await Promise.allSettled(b.map(C=>ei(e,t,n,r,C.path,i+1,s,a)));for(let C of R)if(C.status==="fulfilled"){let w=C.value;u+=ee(w)??0,p+=qo(w),m.push(...w)}else{if(Lc(C.reason))throw C.reason;p+=1}}}return Zo(D(m,u),p)}var gr=S.GITHUB_VIEW_REPO_STRUCTURE;async function Xg(e,t,n,r,o,i){let s;try{s=o??await ke(t,n,i)}catch(a){let c=X(a);return await v(gr,$e.NOT_FOUND.code),{error:$e.NOT_FOUND.message(t,n,c.error),status:c.status}}try{return{data:(await e.rest.repos.getContent({owner:t,repo:n,path:r||"",ref:s})).data,workingBranch:s}}catch(a){if(!(a instanceof Yg&&a.status===404)){let u=X(a);return await v(gr,$e.ACCESS_FAILED.code),{error:$e.ACCESS_FAILED.message(t,n,u.error),status:u.status,rateLimitRemaining:u.rateLimitRemaining,rateLimitReset:u.rateLimitReset,retryAfter:u.retryAfter}}let c=X(a);return await v(gr,$e.PATH_NOT_FOUND.code),{error:$e.PATH_NOT_FOUND.message(r,t,n,s),status:c.status}}}function Jg(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 Zg(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 Ic(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}async function kc(e,t,n){let r=we("gh-repo-structure-api",{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,depth:e.maxDepth},n),o=await _e(r,async()=>await qg({...e,itemsPerPage:e.itemsPerPage??St.ENTRIES_PER_PAGE,page:e.page??1},t),{shouldCache:i=>!("error"in i)});return!("error"in o)&&o.structure?Ac(o,e):o}async function qg(e,t){try{let n=await re(t),{owner:r,repo:o,branch:i,path:s="",maxDepth:a=1}=e,c=s.replace(/^\/+|\/+$/g,""),u=await Xg(n,r,o,c,i,t);if("error"in u)return u;let{data:l,workingBranch:d,repoDefaultBranch:m}=u,p=F(l),f=Array.isArray(l)?l:[l],g=Jg(f),h=0;if(a>1){let j=await ei(n,r,o,d,c,1,a);h=qo(j),p+=ee(j)??0,g=[...g,...j].filter((Wt,Dn,Up)=>Up.findIndex(Bp=>Bp.path===Wt.path)===Dn)}let b=g.filter(j=>j.type==="dir"?!pn(j.name):!Dt(j.path));b.sort((j,Qe)=>{if(j.type!==Qe.type)return j.type==="dir"?-1:1;let Wt=j.path.split("/").length,Dn=Qe.path.split("/").length;return Wt!==Dn?Wt-Dn:j.path.localeCompare(Qe.path)});let R=e.itemsPerPage??St.ENTRIES_PER_PAGE,C=e.page??1,w=b.length,T=Math.max(1,Math.ceil(w/R)),A=(C-1)*R,G=Math.min(A+R,w),$=b.slice(A,G),x=Zg($,c),L=e.includeSizes===!0?Ic(b,c):void 0,z=L!==void 0?Ic($,c):void 0,se=$.filter(j=>j.type==="file").length,Q=$.filter(j=>j.type==="dir").length,M=b.filter(j=>j.type==="file").length,fe=b.filter(j=>j.type==="dir").length,ie=C<T,Ye={currentPage:C,totalPages:T,hasMore:ie,...ie?{nextPage:C+1}:{},entriesPerPage:R,totalEntries:w},_t=fr(Ye,{owner:r,repo:o,branch:d,path:c,depth:a,pageFiles:se,pageFolders:Q,allFiles:M,allFolders:fe});return h>0&&_t.unshift(`Partial tree: ${h} subdirectory subtree(s) failed to load and are missing from this structure. The listing is incomplete \u2014 retry or narrow the path/depth.`),{owner:r,repo:o,branch:d,...m!==void 0&&{defaultBranch:m},path:c||"/",apiSource:!0,summary:{totalFiles:M,totalFolders:fe,truncated:ie,filtered:!0,originalCount:b.length},structure:x,...z!==void 0&&{fileSizeMap:z},...L!==void 0&&{_cachedFileSizeMap:L},pagination:Ye,hints:_t,rawResponseChars:p,_cachedItems:b.map(j=>({path:j.path,type:j.type}))}}catch(n){let r=X(n);return await v(gr,$e.STRUCTURE_EXPLORATION_FAILED.code),{error:$e.STRUCTURE_EXPLORATION_FAILED.message,status:r.status,rateLimitRemaining:r.rateLimitRemaining,rateLimitReset:r.rateLimitReset,retryAfter:r.retryAfter}}}function eh(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 vc(e,t,n=ce){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 kc(i,t);return"error"in s?or(s)??{error:"Unknown GitHub API error",status:500,provider:"github"}:{data:eh(s),status:200,provider:"github",rawResponseChars:s.rawResponseChars??F(s)}}var Fc={github:{cloneRepo:!0,fetchDirectoryToDisk:!0,requiresScopedCodeSearch:!1,supportsMergedState:!1,supportsMultiTopicSearch:!0}};var hr=class{type="github";capabilities=Fc.github;authInfo;constructor(t){t?.authInfo?this.authInfo=t.authInfo:t?.token&&(this.authInfo={token:t.token})}async searchCode(t){try{return await za(t,this.authInfo,ce)}catch(n){return this.handleError(n)}}async getFileContent(t){try{return await oc(t,this.authInfo,ce)}catch(n){return this.handleError(n)}}async searchRepos(t){try{return await Qa(t,this.authInfo)}catch(n){return this.handleError(n)}}async searchPullRequests(t){try{return await xc(t,this.authInfo,ce)}catch(n){return this.handleError(n)}}async getRepoStructure(t){try{return await vc(t,this.authInfo,ce)}catch(n){return this.handleError(n)}}async resolveDefaultBranch(t){let{owner:n,repo:r}=ce(t);if(!n||!r)throw new Error(`Cannot resolve default branch: invalid projectId '${t}'.`);return ke(n,r,this.authInfo)}handleError(t){let n=X(t);return Ze(n)}};import{createHash as nh}from"crypto";var rh=3600*1e3,ti=20,je=new Map;function Mc(e){return Date.now()-e.createdAt<rh}function oh(){for(let[e,t]of je.entries())Mc(t)||je.delete(e);if(je.size>ti){let e=[...je.entries()].sort((n,r)=>n[1].lastAccessedAt-r[1].lastAccessedAt),t=je.size-ti;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&je.delete(r[0])}}}function ih(e){return e?nh("sha256").update(e).digest("hex").slice(0,16):"default"}function sh(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 ah(e,t){let n=sh(t?.baseUrl||"default"),r=ih(t?.token||t?.authInfo?.token);return`${e}:${n}:${r}`}function ni(e="github",t){if(e!=="github")throw new Error(`Unknown provider type: '${e}'. Only 'github' is supported.`);let n=ah(e,t),r=je.get(n);if(r&&Mc(r))return r.lastAccessedAt=Date.now(),r.provider;r&&je.delete(n),je.size>=ti&&oh();let o=new hr({...t,type:e}),i=Date.now();return je.set(n,{provider:o,createdAt:i,lastAccessedAt:i}),o}async function Nc(){try{return ni("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{CloneRepoQuerySchema as mh}from"@octocodeai/octocode-core/schemas";import{GitHubCloneRepoOutputSchema as fh}from"@octocodeai/octocode-core/schemas/outputs";import{z as yr}from"zod";function k(e,t){return yr.preprocess(n=>typeof n=="number"&&Number.isFinite(n)?Math.min(Math.max(n,e),t):n,yr.number().int().min(e).max(t))}var J=k(1,1e3).optional().default(1),Ut=k(0,100).optional(),Bt=k(1,1e9).optional(),uh={responseCharOffset:k(0,1e8).optional().describe("Full-response char offset; re-call with returned value when hasMore."),responseCharLength:k(1,5e4).optional().describe("Full-response char window.")};function K(e,t={}){let{maxQueries:n=5}=t;return yr.object({queries:yr.array(e).min(1).max(n).describe("Parallel queries."),...uh}).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 Dc}from"zod";function lh(e,t){return e?.description&&!t.description?t.describe(e.description):t}function Hc(e,t){let n={};for(let[r,o]of Object.entries(t))n[r]=lh(e.shape[r],o);return n}function dh(e,t){let n=e;return n.safeExtend?n.safeExtend(t):e.extend(t)}function Gc(e,t){if(!t?.length)return e;let n=new Set(t);return Dc.object(Object.fromEntries(Object.entries(e.shape).filter(([r])=>!n.has(r))))}function te(e,t={},n={}){let r=Gc(e,n.omit),o=dh(r,Hc(r,t));return n.strict?o.strict():o}function oe(e,t={},n={}){let r=Gc(e,n.omit),o=Dc.object({...r.shape,...Hc(r,t)});return n.strict?o.strict():o}import{z as me}from"zod";var ph=me.object({currentPage:me.number(),totalPages:me.number(),hasMore:me.boolean(),charOffset:me.number(),charLength:me.number(),totalChars:me.number(),nextCharOffset:me.number().optional()}).optional(),xe={hints:me.array(me.string()).optional(),base:me.string().optional(),shared:me.record(me.string(),me.union([me.string(),me.number(),me.boolean()])).optional(),responsePagination:ph};var oi=te(mh),Uc=K(oi),eI=fh.extend(xe);import{z as P}from"zod";import{FileContentQuerySchema as Bc}from"@octocodeai/octocode-core/schemas";var gh=P.enum(["none","standard","symbols"]).optional().default("standard"),hh=P.object({currentPage:P.number(),totalPages:P.number(),hasMore:P.boolean(),nextPage:P.number().optional(),nextMatchPage:P.number().optional(),charOffset:P.number().optional(),charLength:P.number().optional(),totalChars:P.number().optional(),nextCharOffset:P.number().optional(),filesPerPage:P.number().optional(),totalFiles:P.number().optional(),entriesPerPage:P.number().optional(),totalEntries:P.number().optional(),matchesPerPage:P.number().optional(),totalMatches:P.number().optional()}),yh=P.object({path:P.string(),content:P.string(),localPath:P.string().optional(),repoRoot:P.string().optional(),contentView:P.enum(["none","standard","symbols"]).optional(),isSkeleton:P.boolean().optional(),totalLines:P.number().optional(),sourceChars:P.number().optional(),sourceBytes:P.number().optional(),resolvedBranch:P.string().optional(),pagination:hh.optional(),isPartial:P.boolean().optional(),startLine:P.number().optional(),endLine:P.number().optional(),matchRanges:P.array(P.object({start:P.number(),end:P.number()})).optional(),lastModified:P.string().optional(),lastModifiedBy:P.string().optional(),warnings:P.array(P.string()).optional(),matchNotFound:P.boolean().optional(),searchedFor:P.string().optional(),cached:P.boolean().optional()}),Rh=P.object({path:P.string(),localPath:P.string(),repoRoot:P.string().optional(),fileCount:P.number(),totalSize:P.number(),files:P.array(P.object({path:P.string(),size:P.number(),type:P.string()})).optional(),cached:P.boolean().optional(),resolvedBranch:P.string().optional()}),zc={startLine:Bt,endLine:Bt,contextLines:Ut,charOffset:k(0,1e8).optional(),charLength:k(1,5e4).optional(),minify:gh},bh=oe(Bc,zc),Rr=te(Bc,zc),Qc=K(bh),cI=P.object({base:P.string().optional(),shared:P.record(P.string(),P.union([P.string(),P.number(),P.boolean()])).optional(),responsePagination:xe.responsePagination,results:P.array(P.object({id:P.string(),owner:P.string(),repo:P.string(),files:P.array(yh).optional(),directories:P.array(Rh).optional()})),errors:P.array(P.object({id:P.string(),owner:P.string().optional(),repo:P.string().optional(),path:P.string().optional(),error:P.string()})).optional()});import{z as I}from"zod";import{GitHubCodeSearchQuerySchema as $c}from"@octocodeai/octocode-core/schemas";var jc={limit:k(1,100).optional(),page:J.default(1)},Vc=te($c,jc),Wc=K(oe($c,jc)),hI=I.object({base:I.string().optional(),shared:I.record(I.string(),I.union([I.string(),I.number(),I.boolean()])).optional(),responsePagination:xe.responsePagination,results:I.array(I.object({id:I.string(),data:I.object({files:I.array(I.object({owner:I.string(),repo:I.string(),path:I.string(),queryId:I.string().optional(),matches:I.array(I.object({value:I.string().optional(),pathOnly:I.boolean().optional(),matchIndices:I.array(I.object({start:I.number(),end:I.number(),lineOffset:I.number()})).optional(),url:I.string().optional()}))})),pagination:I.object({currentPage:I.number(),totalPages:I.number(),perPage:I.number(),totalMatches:I.number(),reportedTotalMatches:I.number().optional(),reachableTotalMatches:I.number().optional(),totalMatchesKind:I.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:I.boolean().optional(),hasMore:I.boolean(),nextPage:I.number().optional(),uniqueFileCount:I.number().optional()}).optional()})})),emptyQueries:I.array(I.object({id:I.string(),nonExistentScope:I.literal(!0).optional(),incompleteResults:I.literal(!0).optional()})).optional(),warnings:I.array(I.string()).optional(),errors:I.array(I.object({id:I.string(),error:I.string()})).optional()});import{z as Ct}from"zod";import{GitHubPullRequestSearchQuerySchema as Kc}from"@octocodeai/octocode-core/schemas";import{GitHubSearchPullRequestsOutputSchema as Ch}from"@octocodeai/octocode-core/schemas/outputs";var Yc={perPage:k(1,100).optional().default(30),prNumber:k(1,1e9).optional(),limit:k(1,100).optional().default(30),page:J.default(1),filePage:J.optional(),commentPage:J.optional(),commitPage:J.optional(),itemsPerPage:k(1,100).optional().default(20),charOffset:k(0,1e8).optional(),commentBodyOffset:k(0,1e8).optional(),charLength:k(1,5e4).optional()},Th=oe(Kc,Yc),br=te(Kc,Yc),Xc=K(Th),wI=Ch.extend({results:Ct.array(Ct.object({id:Ct.string().optional(),status:Ct.string().optional(),data:Ct.object({pull_requests:Ct.array(Ct.object({}).passthrough()).optional()}).passthrough().optional()}).passthrough()).optional(),...xe});import{z as U}from"zod";import{GitHubReposSearchSingleQuerySchema as Jc}from"@octocodeai/octocode-core/schemas";var Zc={limit:k(1,100).optional(),page:J.default(1)},qc=te(Jc,Zc),eu=K(oe(Jc,Zc)),Ph=U.object({owner:U.string(),repo:U.string(),stars:U.number().optional(),forks:U.number().optional(),openIssuesCount:U.number().optional(),language:U.string().optional(),license:U.string().optional(),description:U.string().optional(),homepage:U.string().optional(),pushedAt:U.string().optional(),createdAt:U.string().optional(),defaultBranch:U.string().optional(),topics:U.array(U.string()).optional(),visibility:U.string().optional(),url:U.string().optional(),updatedAt:U.string().optional()}),Eh=U.object({currentPage:U.number(),totalPages:U.number(),hasMore:U.boolean(),perPage:U.number().optional(),totalMatches:U.number().optional(),reportedTotalMatches:U.number().optional(),reachableTotalMatches:U.number().optional(),totalMatchesKind:U.enum(["exact","reported","lowerBound"]).optional(),totalMatchesCapped:U.boolean().optional(),nextPage:U.number().optional()}).optional(),wh=U.object({repositories:U.array(U.union([U.string(),Ph])).optional(),pagination:Eh}).passthrough(),vI=U.object({results:U.array(U.object({id:U.string().optional(),status:U.string().optional(),data:wh.optional()}).passthrough()).optional()}).extend(xe);import{GitHubViewRepoStructureQuerySchema as tu}from"@octocodeai/octocode-core/schemas";import{GitHubViewRepoStructureOutputSchema as xh}from"@octocodeai/octocode-core/schemas/outputs";var nu={maxDepth:k(0,20).optional(),page:J.default(1),itemsPerPage:k(1,200).optional()},ru=te(tu,nu),ou=K(oe(tu,nu)),zI=xh.extend(xe);import{z as W}from"zod";import{NpmPackageQuerySchema as iu}from"@octocodeai/octocode-core/schemas";var su={page:J,mode:W.enum(["lean","full"]).optional()},au=te(iu,su),cu=K(oe(iu,su,{strict:!0}),{maxQueries:5}),YI=W.object({results:W.array(W.looseObject({id:W.string(),data:W.looseObject({packages:W.array(W.object({name:W.string(),version:W.string().optional(),description:W.string().optional(),license:W.string().optional(),downloads:W.number().optional(),repository:W.string().optional(),repositoryDirectory:W.string().optional(),next:W.record(W.string(),W.unknown()).optional()}).passthrough()).optional(),pagination:W.object({currentPage:W.number(),totalPages:W.number(),perPage:W.number(),totalFound:W.number(),returned:W.number(),hasMore:W.boolean(),nextPage:W.number().optional()}).optional()}).optional(),status:W.string().optional()})).optional()}).extend(xe);import{z as Ah}from"zod";import{FetchContentQuerySchema as uu}from"@octocodeai/octocode-core/schemas";var Lh=Ah.enum(["none","standard","symbols"]).optional().default("standard"),lu={startLine:Bt,endLine:Bt,contextLines:Ut.default(5),charOffset:k(0,1e8).optional(),charLength:k(1,5e4).optional(),minify:Lh},Oh=oe(uu,lu),Sr=te(uu,lu),du=K(Oh,{maxQueries:5});import{z as Ih}from"zod";import{FindFilesQuerySchema as kh}from"@octocodeai/octocode-core/schemas";var pu={maxDepth:k(0,100).optional(),minDepth:k(0,100).optional(),limit:k(1,1e4).optional(),page:J.default(1),itemsPerPage:k(1,50).optional()},mu=Ih.object(Object.fromEntries(Object.entries(kh.shape).filter(([e])=>e!=="regexType")));function vh(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 Fh=oe(mu,pu),Cr=te(mu,pu).superRefine(vh),fu=K(Fh,{maxQueries:5});import{z as ai}from"zod";import{RipgrepQuerySchema as gu}from"@octocodeai/octocode-core/schemas";var Mh=["semanticRanking"],hu={contextLines:Ut,matchContentLength:k(1,1e5).optional().default(500),maxMatchesPerFile:k(1,1e5).optional(),maxFiles:k(1,1e5).optional(),matchPage:J.optional(),itemsPerPage:k(1,1e3).optional(),page:J.default(1),unique:ai.boolean().optional().describe("With onlyMatching, return each matched value once per file."),countUnique:ai.boolean().optional().describe("With onlyMatching, return each matched value once per file with its frequency.")},Nh={...hu,semanticRanking:ai.never().optional()},Dh=oe(gu,Nh),Hh=te(gu,hu,{strict:!0,omit:Mh}),Qt=Hh.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"]})}),yu=K(Dh,{maxQueries:5});import{ViewStructureQuerySchema as Ru}from"@octocodeai/octocode-core/schemas";var bu={maxDepth:k(0,20).optional(),limit:k(1,1e4).optional(),page:J.default(1),itemsPerPage:k(1,50).optional()},Gh=oe(Ru,bu),Tr=te(Ru,bu),Su=K(Gh,{maxQueries:5});import{z as y}from"zod";import{LspGetSemanticsQuerySchema as Pu}from"@octocodeai/octocode-core/schemas";import{ErrorDataSchema as Uh}from"@octocodeai/octocode-core/schemas/outputs";var Bh=k(1,1e9),zh=k(0,1e5).optional(),Qh=["structured","compact"],Eu={type:y.enum(ha).default("definition"),symbolName:y.string().min(1).optional(),lineHint:Bh.optional(),orderHint:zh,depth:k(0,20).optional(),includeDeclaration:y.boolean().optional().default(!0),page:J,itemsPerPage:k(1,100).optional(),contextLines:k(0,100).optional(),format:y.enum(Qh).optional().default("structured")},$h=oe(Pu,Eu),wu=te(Pu,Eu);var _u=K($h,{maxQueries:5}),Cu=y.object({line:y.number(),character:y.number()}),jh=y.object({start:Cu,end:Cu}),Vh=y.object({startLine:y.number(),endLine:y.number()}),Pr=y.object({uri:y.string(),content:y.string().optional(),displayRange:Vh.optional(),isDefinition:y.boolean().optional()}),Er=y.string(),Wh=y.object({name:y.string(),uri:y.string(),foundAtLine:y.number(),orderHint:y.number().optional()}),Kh=y.object({serverAvailable:y.boolean().optional(),provider:y.string().optional(),source:y.string().optional()}),xu=y.enum(["serverUnavailable","unsupportedOperation","symbolNotFound","anchorFailed","noLocations","noReferences","noHover","noCalls"]),ci=y.object({category:xu,reason:y.string()}),Yh=y.object({currentPage:y.number(),totalPages:y.number(),totalResults:y.number(),hasMore:y.boolean(),itemsPerPage:y.number(),nextPage:y.number().optional()}),Xh=y.object({name:y.string(),kind:y.string(),line:y.number(),character:y.number(),endLine:y.number(),childCount:y.number(),containerName:y.string().optional()}),Jh=y.string(),Au=y.object({name:y.string(),kind:y.string(),uri:y.string(),line:y.number(),endLine:y.number(),selectionLine:y.number().optional()}),Zh=y.string(),qh=y.object({direction:y.enum(["incoming","outgoing"]),item:Au,ranges:y.array(y.object({line:y.number(),character:y.number()})),rangeCount:y.number(),rangeSampleCount:y.number(),contentPreview:y.string().optional()}),ey=y.string(),ty=y.object({complete:y.boolean(),truncatedByDepth:y.boolean(),cycleCount:y.number(),failedRequestCount:y.number(),dynamicCallsExcluded:y.literal(!0),stdlibCallsExcluded:y.number().optional()}),ny=y.object({uri:y.string(),count:y.number(),firstLine:y.number(),firstCharacter:y.number(),lines:y.array(y.number()),hasDefinition:y.boolean().optional()}),ry=y.string(),oy=y.discriminatedUnion("kind",[y.object({kind:y.literal("definition"),locations:y.array(y.union([Pr,Er]))}),y.object({kind:y.literal("typeDefinition"),locations:y.array(y.union([Pr,Er]))}),y.object({kind:y.literal("implementation"),locations:y.array(y.union([Pr,Er]))}),y.object({kind:y.literal("references"),locations:y.array(y.union([Pr,Er])).optional(),byFile:y.array(y.union([ny,ry])).optional(),totalReferences:y.number(),totalFiles:y.number(),empty:ci.optional()}),...["callers","callees","callHierarchy"].map(e=>y.object({kind:y.literal(e),root:y.union([Au,Zh]).optional(),direction:y.enum(["incoming","outgoing","both"]),calls:y.array(y.union([qh,ey])),incomingCalls:y.number(),outgoingCalls:y.number(),completeness:ty,empty:ci.optional()})),y.object({kind:y.literal("hover"),markdown:y.string().optional(),text:y.string().optional(),range:jh.optional()}),y.object({kind:y.literal("documentSymbols"),symbols:y.array(y.union([Xh,Jh])),totalSymbols:y.number().optional(),topLevelSymbols:y.number().optional(),empty:ci.optional()}),y.object({kind:y.literal("empty"),category:xu,reason:y.string()})]),Tu=y.object({type:y.string(),uri:y.string(),format:y.enum(["structured","compact"]).optional(),resolvedSymbol:Wh.optional(),lsp:Kh,payload:oy,pagination:Yh.optional(),summary:y.record(y.string(),y.unknown()).optional(),warnings:y.array(y.string()).optional()}),xk=y.object({base:y.string().optional(),shared:y.record(y.string(),y.union([y.string(),y.number(),y.boolean()])).optional(),results:y.array(y.union([y.object({id:y.string().min(1),status:y.literal("empty"),data:Tu}),y.object({id:y.string().min(1),status:y.literal("error"),data:Uh}),y.object({id:y.string().min(1),data:Tu})]))});import{z as Lu}from"zod";import{LocalBinaryInspectQuerySchema as iy}from"@octocodeai/octocode-core/schemas";var sy={entryPageNumber:J.default(1),matchStringContextLines:k(0,50).default(3),charLength:k(1,5e4).optional(),page:J.default(1),detailed:Lu.boolean().optional().describe("inspect: include full symbols/imports/exports/sections arrays.")},Ou=Lu.object({...iy.shape,...sy}),wr=Ou.strict().superRefine((e,t)=>{e.mode==="extract"&&!e.archiveFile&&t.addIssue({code:"custom",path:["archiveFile"],message:'archiveFile is required for mode="extract" \u2014 run mode="list" first to get exact entry names'}),e.archiveFile?.startsWith("-")&&t.addIssue({code:"custom",path:["archiveFile"],message:'archiveFile must not start with "-" (prevents flag injection into backend CLIs)'});let n=[".tar.gz",".tgz",".tar.bz2",".tbz2",".tbz",".tar.xz",".txz",".tar.zst",".tzst",".zip",".jar",".war",".apk",".7z"];e.mode==="decompress"&&n.some(r=>e.path.toLowerCase().endsWith(r))&&t.addIssue({code:"custom",path:["mode"],message:'This path looks like a multi-entry archive \u2014 use mode="list" or mode="extract" instead of mode="decompress".'})}),Iu=K(Ou,{maxQueries:5});async function ku(e,t={}){if(!Array.isArray(e))throw v("promiseUtils",ot.PROMISES_NOT_ARRAY.code).catch(Se("promise utility session logging")),new Error(ot.PROMISES_NOT_ARRAY.message);if(e.length===0)return[];let{timeout:n=3e4,concurrency:r=e.length,onError:o}=t;if(n<=0)throw v("promiseUtils",ot.TIMEOUT_NOT_POSITIVE.code).catch(Se("promise utility session logging")),new Error(ot.TIMEOUT_NOT_POSITIVE.message);if(r<=0)throw v("promiseUtils",ot.CONCURRENCY_NOT_POSITIVE.code).catch(Se("promise utility session logging")),new Error(ot.CONCURRENCY_NOT_POSITIVE.message);let i=e.map((c,u)=>typeof c=="function"?c:()=>(v("promiseUtils",st.NOT_A_FUNCTION.code).catch(Se("promise utility session logging")),Promise.reject(new Error(st.NOT_A_FUNCTION.message(u)))));if(r<i.length)return ay(i,r,n,o);let s=i.map((c,u)=>vu(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 vu(e,t,n,r){let o,i=()=>{o!==void 0&&(clearTimeout(o),o=void 0)};try{let s=new Promise((c,u)=>{o=setTimeout(()=>{v("promiseUtils",st.TIMEOUT.code).catch(()=>{}),u(new Error(st.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 ay(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){v("promiseUtils",st.FUNCTION_UNDEFINED.code).catch(Se("promise utility session logging")),o[c]={success:!1,error:new Error(st.FUNCTION_UNDEFINED.message),index:c};continue}try{let l=await vu(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}import{maskSensitiveData as Fu}from"@octocodeai/octocode-engine/mask";import{ContentSanitizer as Mu}from"@octocodeai/octocode-engine/contentSanitizer";function cy(){try{return ge().output.format}catch{return"yaml"}}function ct(e){if(e==null)return e;if(typeof e=="string"){let t=Mu.sanitizeContent(e);return Fu(t.content)}if(Array.isArray(e))return e.map(t=>ct(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=ct(r);return t}return e}function uy(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()}async function bm(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let f=await e.rest.issues.listComments({owner:t,repo:n,issue_number:r,per_page:100,page:a});s+=Q(f.data),i.push(...f.data),c=f.data.length===100,a++}while(c);let l=o?i:i.filter(f=>!ym(f.user?.login??"")),u=i.length-l.length,d=l.map(f=>{let m=M.minifyMarkdownCore(Ic(f.body??""));return{id:String(f.id),user:f.user?.login??"unknown",body:_c.sanitizeContent(m).content,created_at:f.created_at??"",updated_at:f.updated_at??"",commentType:"discussion"}}),p=[];return u>0&&p.push(`${u} bot comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:U(d,s),note:p.length>0?p.join("; "):void 0}}catch{return{comments:U([],0)}}}async function Rm(e,t,n,r){try{let{items:o,rawResponseChars:i}=await Fc(s=>e.rest.pulls.listReviews({owner:t,repo:n,pull_number:r,per_page:100,page:s}));return U(o.map(s=>({id:String(s.id),user:s.user?.login??"unknown",state:s.state??"",body:_c.sanitizeContent(M.minifyMarkdownCore(Ic(s.body??""))).content,submitted_at:s.submitted_at??void 0,commit_id:s.commit_id??void 0})),i)}catch{return U([],0)}}async function Sm(e,t,n,r,o=!1){try{let i=[],s=0,a=1,c=!0;do{let f=await e.rest.pulls.listReviewComments({owner:t,repo:n,pull_number:r,per_page:100,page:a});s+=Q(f.data),i.push(...f.data),c=f.data.length===100,a++}while(c);let l=o?i:i.filter(f=>!ym(f.user?.login??"")),u=i.length-l.length,d=l.map(f=>{let m=M.minifyMarkdownCore(Ic(f.body??""));return{id:String(f.id),user:f.user?.login??"unknown",body:_c.sanitizeContent(m).content,created_at:f.created_at??"",updated_at:f.updated_at??"",commentType:"review_inline",path:f.path,line:f.line??f.original_line??void 0,...f.in_reply_to_id!=null?{in_reply_to_id:f.in_reply_to_id}:{}}}),p=[];return u>0&&p.push(`${u} bot inline comment(s) hidden (set content.comments.includeBots:true to include)`),{comments:U(d,s),note:p.length>0?p.join("; "):void 0}}catch{return{comments:U([],0)}}}async function Cm(e,t,n){let r=e,{prData:o,sanitizationWarnings:i}=Lc(r);i.size>0&&(o._sanitization_warnings=Array.from(i));let s=0;if(e.pull_request)try{let{owner:l,repo:u}=qr(t);if(l&&u){let d=await n.rest.pulls.get({owner:l,repo:u,pull_number:e.number});if(d.data&&(s+=Q(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,Ni(t)||(o.file_changes={total_count:d.data.changed_files??0,files:[]}),Ni(t))){let p=await Pm(l,u,e.number);p&&(s+=ce(p)??0,p.files=Mi(p.files,t),o.file_changes=p)}}}catch(l){o._sanitization_warnings=[...o._sanitization_warnings||[],`Partial Data: Failed to fetch details (files): ${l instanceof Error?l.message:String(l)}`]}let a=pm(t),c=fm(t);if(a||c){let{owner:l,repo:u}=qr(t);if(l&&u){let d=hm(t),p=()=>Promise.resolve({comments:U([],0)}),[{comments:f,note:m},{comments:g,note:b}]=await Promise.all([a?bm(n,l,u,e.number,d):p(),c?Sm(n,l,u,e.number,d):p()]);o.comments=[...f,...g],s+=(ce(f)??0)+(ce(g)??0);let S=[m,b].filter(C=>typeof C=="string");S.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...S])}}if(gm(t))try{let{owner:l,repo:u}=qr(t);if(l&&u){let d=await Rm(n,l,u,e.number);s+=ce(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(mm(t))try{let{owner:l,repo:u}=qr(t);if(l&&u){let d=await wm(l,u,e.number,t);d&&(s+=ce(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 U(o,s)}async function Fc(e){let t=[],n=0,r=1,o=!0;do{let i=await e(r);n+=Q(i.data),t.push(...i.data),o=i.data.length===100,r++}while(o);return{items:t,rawResponseChars:n}}async function Pm(e,t,n,r){let o=await ue(r),{items:i,rawResponseChars:s}=await Fc(a=>o.rest.pulls.listFiles({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return U({total_count:i.length,files:i},s)}async function fT(e,t,n,r){let o=await ue(r),{items:i,rawResponseChars:s}=await Fc(a=>o.rest.pulls.listCommits({owner:e,repo:t,pull_number:n,per_page:100,page:a}));return U(i,s)}async function mT(e,t,n,r){try{let i=await(await ue(r)).rest.repos.getCommit({owner:e,repo:t,ref:n});return U(i.data.files||[],i.data)}catch{return null}}async function wm(e,t,n,r,o){let i=await fT(e,t,n,o);if(!i)return null;let s=ce(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 Promise.all(a.map(async l=>{let u=await mT(e,t,l.sha,o),d=[];return u&&(s+=ce(u)??0,d=Mi(u,r)),{sha:l.sha,message:l.commit.message,author:l.commit.author?.name||"unknown",date:l.commit.author?.date||"",files:d}}));return U(c,s)}async function Gi(e,t,n,r){let{prData:o,sanitizationWarnings:i}=Lc(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,Ni(t)||(o.file_changes={total_count:"changed_files"in e?e.changed_files??0:0,files:[]}),Ni(t))try{let d=await Pm(a,c,e.number,r);d&&(s+=ce(d)??0,d.files=Mi(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=pm(t),u=fm(t);if(l||u){let d=hm(t),p=()=>Promise.resolve({comments:U([],0)}),[{comments:f,note:m},{comments:g,note:b}]=await Promise.all([l?bm(n,a,c,e.number,d):p(),u?Sm(n,a,c,e.number,d):p()]);o.comments=[...f,...g],s+=(ce(f)??0)+(ce(g)??0);let S=[m,b].filter(C=>typeof C=="string");S.length>0&&(o._sanitization_warnings=[...o._sanitization_warnings||[],...S])}if(gm(t))try{let d=await Rm(n,a,c,e.number);s+=ce(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(mm(t))try{let d=await wm(a,c,e.number,t,r);d&&(s+=ce(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 U(o,s)}var pT,Mc=y(()=>{"use strict";ge();Be();Di();ie();pT=new Set(["vercel","pkg-pr-new","coderabbitai","github-actions","codecov","changeset-bot","netlify","sonarcloud","socket-security"])});function gT(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 xm(e,t){let{owner:n,repo:r,prNumber:o}=e;if(!n||!r||!o)return{pull_requests:[],total_count:0,error:ze.PR_REQUIRED_PARAMS.message,hints:["Provide owner, repo, and prNumber"]};if(Array.isArray(n)||Array.isArray(r))return{pull_requests:[],total_count:0,error:ze.PR_SINGLE_VALUES.message,hints:["Do not use array for owner or repo when fetching by number"]};try{let i=await ue(t),s=await i.rest.pulls.get({owner:n,repo:r,pull_number:o}),a=s.data,c=await Gi(a,e,i,t);return{pull_requests:[jr(c,{includeFullBody:!0,includeFullCommentDetails:!0})],total_count:1,rawResponseChars:Q(s.data)+(ce(c)??0)}}catch(i){let s=ne(i);return gT(s,ze.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 Tm=y(()=>{"use strict";gt();Be();St();Nt();Di();Mc();ie()});function Em(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 km(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 hT(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}}async function Om(e,t,n){let r=Qe("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,"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},n);return await Ue(r,async()=>await yT(e,t,n),{shouldCache:i=>!i.error})}async function yT(e,t,n){try{if(e.prNumber&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await xm(e,t);let r=await ue(t);if(!yf(e)&&e.owner&&e.repo&&!Array.isArray(e.owner)&&!Array.isArray(e.repo))return await bT(r,e);let i=await hT(r,e),s=hf(i);if(!s)return{pull_requests:[],total_count:0,error:ze.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}),p=d.data.items?.filter(O=>!!O.pull_request)||[],f=await Promise.all(p.map(async O=>await Cm(O,i,r))),m=f.reduce((O,x)=>O+(ce(x)??0),0),g=f.map(O=>jr(O,{includeFullBody:!1,includeFullCommentDetails:!1,charOffset:i.charOffset,charLength:i.charLength})),b=d.data.total_count,S=Math.min(b,1e3),C=Math.min(Math.ceil(S/c),10),k=Math.min(l,Math.max(1,C)),_=k<C,E=Math.min(S,C*c);return{pull_requests:g,total_count:d.data.total_count,effectiveQuery:u,...d.data.incomplete_results&&{incomplete_results:!0},pagination:{currentPage:k,totalPages:C,perPage:c,totalMatches:S,reportedTotalMatches:b,reachableTotalMatches:E,totalMatchesKind:"reported",totalMatchesCapped:b>S,hasMore:_,..._?{nextPage:k+1}:{}},rawResponseChars:Q(d.data)+m}}catch(r){if(rn(r))return km(e);let o=ne(r);return Em(o,ze.PULL_REQUEST_SEARCH_FAILED.message(o.error),["Verify authentication and search parameters"])}}async function bT(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 p=>await Gi(p,t,e))),c=a.reduce((p,f)=>p+(ce(f)??0),0),l=a.map(p=>jr(p,{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:Q(s.data)+c}}catch(n){if(rn(n))return km(t);let r=ne(n);return Em(r,ze.PULL_REQUEST_LIST_FAILED.message(r.error),["Verify repository access and authentication"])}}var vm=y(()=>{"use strict";fe();gt();Be();St();Pi();Nt();ie();Di();Mc();Tm()});function RT(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}:{}}}function ST(e,t,n=be){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,...RT(e.pagination)},repositoryContext:s&&i?{owner:s,repo:i}:void 0}}async function Am(e,t,n=be){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 Om(s,t);return a.error?Ct({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:ST(a,e,n),status:200,provider:"github",rawResponseChars:a.rawResponseChars??Q(a)}}var Lm=y(()=>{"use strict";vm();ie();ht();ht()});var sn,Hi=y(()=>{"use strict";sn={ENTRIES_PER_PAGE:100,MAX_ENTRIES_PER_PAGE:200}});function zi(e,t){return e.hasMore?[`Page ${e.currentPage}/${e.totalPages}. Next: page=${e.currentPage+1}`]:[]}var Dc=y(()=>{"use strict"});function _m(e,t){let n=e._cachedItems;if(!n||n.length===0){let{_cachedItems:I,...v}=e;return v}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,p=I=>{let v=I;d&&I.startsWith(d)&&(v=I.slice(d.length),v.startsWith("/")&&(v=v.slice(1)));let D=v.lastIndexOf("/");return D===-1?".":v.slice(0,D)},f=I=>{let v=I.lastIndexOf("/");return v===-1?I:I.slice(v+1)};for(let I of l){let v=p(I.path);u[v]||(u[v]={files:[],folders:[]});let D=f(I.path);I.type==="file"?u[v].files.push(D):u[v].folders.push(D)}for(let I of Object.keys(u)){let v=u[I];v&&(v.files.sort(),v.folders.sort())}let m=Object.create(null),g=Object.keys(u).sort((I,v)=>I==="."?-1:v==="."?1:I.localeCompare(v));for(let I of g){let v=u[I];v&&(m[I]=v)}let b=l.filter(I=>I.type==="file").length,S=l.filter(I=>I.type==="dir").length,C=n.filter(I=>I.type==="file").length,k=n.filter(I=>I.type==="dir").length,_=o<s,E={currentPage:o,totalPages:s,hasMore:_,..._?{nextPage:o+1}:{},entriesPerPage:r,totalEntries:i},O=zi(E,{owner:e.owner,repo:e.repo,branch:e.branch,path:d,depth:t.maxDepth??1,pageFiles:b,pageFolders:S,allFiles:C,allFolders:k}),x,H=e._cachedFileSizeMap;if(H){let I=new Set(l.filter(B=>B.type==="file").map(B=>B.path)),v=e.path==="/"?"":e.path,D=Object.create(null);for(let[B,Z]of Object.entries(H))for(let[z,Ae]of Object.entries(Z)){let Pe=B==="."?v?`${v}/${z}`:z:v?`${v}/${B}/${z}`:`${B}/${z}`;I.has(Pe)&&(D[B]||(D[B]=Object.create(null)),D[B][z]=Ae)}Object.keys(D).length>0&&(x=D)}return{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,apiSource:e.apiSource,summary:{totalFiles:C,totalFolders:k,truncated:_,filtered:!0,originalCount:i},structure:m,...x!==void 0&&{fileSizeMap:x},...H!==void 0&&{_cachedFileSizeMap:H},pagination:E,hints:O,rawResponseChars:e.rawResponseChars}}var Im=y(()=>{"use strict";Hi();Dc()});import{RequestError as PT}from"octokit";function Fm(e){return e instanceof PT&&wT.has(e.status)}function Nc(e,t){try{Object.defineProperty(e,Mm,{value:t,enumerable:!1,configurable:!0})}catch{}return e}function Gc(e){if(typeof e!="object"||e===null)return 0;let t=e[Mm];return typeof t=="number"&&Number.isFinite(t)&&t>0?t:0}async function Hc(e,t,n,r,o,i,s,a=new Set){if(i>s||a.has(o))return Nc(U([],0),0);a.add(o);let c;try{c=await e.rest.repos.getContent({owner:t,repo:n,path:o||"",ref:r})}catch(m){if(Fm(m))throw m;return Nc(U([],0),1)}let l=Q(c.data),d=(Array.isArray(c.data)?c.data:[c.data]).filter(m=>m.type==="file"||m.type==="dir").map(m=>({name:m.name,path:m.path,type:m.type,size:"size"in m?m.size:void 0,download_url:"download_url"in m?m.download_url:void 0,url:m.url,html_url:m.html_url,git_url:m.git_url,sha:m.sha})),p=[...d],f=0;if(i<s){let m=d.filter(b=>b.type==="dir"),g=3;for(let b=0;b<m.length;b+=g){let S=m.slice(b,b+g),C=await Promise.allSettled(S.map(k=>Hc(e,t,n,r,k.path,i+1,s,a)));for(let k of C)if(k.status==="fulfilled"){let _=k.value;l+=ce(_)??0,f+=Gc(_),p.push(..._)}else{if(Fm(k.reason))throw k.reason;f+=1}}}return Nc(U(p,l),f)}var Mm,wT,Dm=y(()=>{"use strict";ie();Mm=Symbol.for("octocode.recursiveFetchFailures"),wT=new Set([401,403,429])});import{RequestError as xT}from"octokit";async function TT(e,t,n,r,o,i){let s,a;try{o?s=o:(a=await Ye(t,n,i),s=a)}catch(c){let l=ne(c);return{error:Gn.NOT_FOUND.message(t,n,l.error),status:l.status}}try{return{data:(await e.rest.repos.getContent({owner:t,repo:n,path:r||"",ref:s})).data,workingBranch:s,...a!==void 0?{repoDefaultBranch:a}:{}}}catch(c){if(!(c instanceof xT&&c.status===404)){let u=ne(c);return{error:Gn.ACCESS_FAILED.message(t,n,u.error),status:u.status,rateLimitRemaining:u.rateLimitRemaining,rateLimitReset:u.rateLimitReset,retryAfter:u.retryAfter}}let l=ne(c);return{error:Gn.PATH_NOT_FOUND.message(r,t,n,s),status:l.status}}}function ET(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 kT(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 Nm(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}async function Gm(e,t,n){let r=Qe("gh-repo-structure-api",{owner:e.owner,repo:e.repo,branch:e.branch,path:e.path,depth:e.maxDepth},n),o=await Ue(r,async()=>await OT({...e,itemsPerPage:e.itemsPerPage??sn.ENTRIES_PER_PAGE,page:e.page??1},t),{shouldCache:i=>!("error"in i)});return!("error"in o)&&o.structure?_m(o,e):o}async function OT(e,t){try{let n=await ue(t),{owner:r,repo:o,branch:i,path:s="",maxDepth:a=1}=e,c=s.replace(/^\/+|\/+$/g,""),l=await TT(n,r,o,c,i,t);if("error"in l)return l;let{data:u,workingBranch:d,repoDefaultBranch:p}=l,f=Q(u),m=Array.isArray(u)?u:[u],g=ET(m),b=0;if(a>1){let K=await Hc(n,r,o,d,c,1,a);b=Gc(K),f+=ce(K)??0,g=[...g,...K].filter((wo,xo,BS)=>BS.findIndex(QS=>QS.path===wo.path)===xo)}let S=g.filter(K=>K.type==="dir"?!Gr(K.name):!Bn(K.path));S.sort((K,rr)=>{if(K.type!==rr.type)return K.type==="dir"?-1:1;let wo=K.path.split("/").length,xo=rr.path.split("/").length;return wo!==xo?wo-xo:K.path.localeCompare(rr.path)});let C=e.itemsPerPage??sn.ENTRIES_PER_PAGE,k=e.page??1,_=S.length,E=Math.max(1,Math.ceil(_/C)),O=(k-1)*C,x=Math.min(O+C,_),H=S.slice(O,x),I=kT(H,c),v=e.includeSizes===!0?Nm(S,c):void 0,D=v!==void 0?Nm(H,c):void 0,B=H.filter(K=>K.type==="file").length,Z=H.filter(K=>K.type==="dir").length,z=S.filter(K=>K.type==="file").length,Ae=S.filter(K=>K.type==="dir").length,Pe=k<E,mt={currentPage:k,totalPages:E,hasMore:Pe,...Pe?{nextPage:k+1}:{},entriesPerPage:C,totalEntries:_},Vt=zi(mt,{owner:r,repo:o,branch:d,path:c,depth:a,pageFiles:B,pageFolders:Z,allFiles:z,allFolders:Ae});return b>0&&Vt.unshift(`Partial tree: ${b} subdirectory subtree(s) failed to load and are missing from this structure. The listing is incomplete \u2014 retry or narrow the path/depth.`),{owner:r,repo:o,branch:d,...p!==void 0&&{defaultBranch:p},path:c||"/",apiSource:!0,summary:{totalFiles:z,totalFolders:Ae,truncated:Pe,filtered:!0,originalCount:S.length},structure:I,...D!==void 0&&{fileSizeMap:D},...v!==void 0&&{_cachedFileSizeMap:v},pagination:mt,hints:Vt,rawResponseChars:f,_cachedItems:S.map(K=>({path:K.path,type:K.type}))}}catch(n){let r=ne(n);return{error:Gn.STRUCTURE_EXPLORATION_FAILED.message,status:r.status,rateLimitRemaining:r.rateLimitRemaining,rateLimitReset:r.rateLimitReset,retryAfter:r.retryAfter}}}var Hm=y(()=>{"use strict";Hi();Be();St();Nt();Dc();Hr();gt();ie();Im();Dm()});function vT(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 zm(e,t,n=be){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 Gm(i,t);return"error"in s?Ti(s)??{error:"Unknown GitHub API error",status:500,provider:"github"}:{data:vT(s),status:200,provider:"github",rawResponseChars:s.rawResponseChars??Q(s)}}var Bm=y(()=>{"use strict";Hm();ie();ht();ht()});var Qm,Um=y(()=>{"use strict";Qm={github:{cloneRepo:!0,fetchDirectoryToDisk:!0,requiresScopedCodeSearch:!1,supportsMergedState:!1,supportsMultiTopicSearch:!0}}});var Bi,$m=y(()=>{"use strict";_f();im();Lm();Bm();St();Be();Um();ht();Bi=class{type="github";capabilities=Qm.github;authInfo;constructor(t){t?.authInfo?this.authInfo=t.authInfo:t?.token&&(this.authInfo={token:t.token})}async searchCode(t){try{return await Af(t,this.authInfo,be)}catch(n){return this.handleError(n)}}async getFileContent(t){try{return await om(t,this.authInfo,be)}catch(n){return this.handleError(n)}}async searchRepos(t){try{return await Lf(t,this.authInfo)}catch(n){return this.handleError(n)}}async searchPullRequests(t){try{return await Am(t,this.authInfo,be)}catch(n){return this.handleError(n)}}async getRepoStructure(t){try{return await zm(t,this.authInfo,be)}catch(n){return this.handleError(n)}}async resolveDefaultBranch(t){let{owner:n,repo:r}=be(t);if(!n||!r)throw new Error(`Cannot resolve default branch: invalid projectId '${t}'.`);return Ye(n,r,this.authInfo)}handleError(t){let n=ne(t);return Ct(n)}}});import{createHash as LT}from"crypto";function jm(e){return Date.now()-e.createdAt<_T}function IT(){for(let[e,t]of yt.entries())jm(t)||yt.delete(e);if(yt.size>zc){let e=[...yt.entries()].sort((n,r)=>n[1].lastAccessedAt-r[1].lastAccessedAt),t=yt.size-zc;for(let n=0;n<t&&n<e.length;n++){let r=e[n];r&&yt.delete(r[0])}}}function FT(e){return e?LT("sha256").update(e).digest("hex").slice(0,16):"default"}function MT(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 DT(e,t){let n=MT(t?.baseUrl||"default"),r=FT(t?.token||t?.authInfo?.token);return`${e}:${n}:${r}`}function Bc(e="github",t){if(e!=="github")throw new Error(`Unknown provider type: '${e}'. Only 'github' is supported.`);let n=DT(e,t),r=yt.get(n);if(r&&jm(r))return r.lastAccessedAt=Date.now(),r.provider;r&&yt.delete(n),yt.size>=zc&&IT();let o=new Bi({...t,type:e}),i=Date.now();return yt.set(n,{provider:o,createdAt:i,lastAccessedAt:i}),o}async function qm(){try{return Bc("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 _T,zc,yt,Qc=y(()=>{"use strict";$m();_T=3600*1e3,zc=20,yt=new Map});async function Vm(e,t={}){if(!Array.isArray(e))throw new Error(kr.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(kr.TIMEOUT_NOT_POSITIVE.message);if(r<=0)throw new Error(kr.CONCURRENCY_NOT_POSITIVE.message);let i=e.map((c,l)=>typeof c=="function"?c:()=>Promise.reject(new Error(vr.NOT_A_FUNCTION.message(l))));if(r<i.length)return NT(i,r,n,o);let s=i.map((c,l)=>Wm(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 Wm(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(vr.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 NT(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(vr.FUNCTION_UNDEFINED.message),index:c};continue}try{let u=await Wm(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 Km=y(()=>{"use strict";gt()});var Ym=y(()=>{"use strict"});import{ContentSanitizer as Xm}from"@octocodeai/octocode-engine/contentSanitizer";function GT(){try{return ke().output.format}catch{return"yaml"}}function Gt(e){if(e==null)return e;if(typeof e=="string")return Xm.sanitizeContent(e).content;if(Array.isArray(e))return e.map(t=>Gt(t));if(typeof e=="object"){let t={};for(let[n,r]of Object.entries(e))t[n]=Gt(r);return t}return e}function HT(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 xr(e,t){let n=ui(e)??{},r=cy(),o="results"in n?["results","id","status","data"]:["instructions","status","data"],i;r==="json"?i=JSON.stringify(_r(n,t||o),null,2):i=O.jsonToYamlString(n,{keysPriority:t||o});let s=Mu.sanitizeContent(i);return Fu(s.content)}function _r(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(o=>_r(o,t));if(typeof e!="object")return e;let n=e,r={};for(let o of t)o in n&&(r[o]=_r(n[o],t));for(let o of Object.keys(n))o in r||(r[o]=_r(n[o],t));return r}var ly=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"]);function dy(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=>ly.has(r))||t.hasMore!==!1?!1:typeof t.totalPages=="number"?t.totalPages<=1:"charOffset"in t||"nextCharOffset"in t?(t.charOffset??0)===0:!0}function ui(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=>ui(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(dy(a))continue;let c=(s==="files"||s==="repositories")&&!n,u=ui(a,{inFilesObject:n||c,depth:c?0:r+1});u!==void 0&&(o[s]=u,i=!0)}return i?o:void 0}return e}function py(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 di=["path","uri"];function li(e,t,n){if(n>8||!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)li(o,t,n+1);return}let r=e;for(let o of di){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 of Object.values(r))o&&typeof o=="object"&&li(o,t,n+1)}function Nu(e){let t=[];for(let i of e)li(i?.data,t,0);if(t.length===0)return;let n=py(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 my(e,r),n}function my(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)){let a=i[s];typeof a=="string"?!di.includes(s)&&a.includes(t)&&(i[s]=a.replaceAll(t,"")):n(a,o+1)}}for(let r of e)n(r?.data,0)}function fy(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 gy(e){return typeof e=="string"&&e!==""||typeof e=="number"||typeof e=="boolean"}var hy=new Set([...di,"owner","repo","name","id"]);function Du(e){let t=fy(e);if(t.length<2)return;let n=t[0],r;for(let i of Object.keys(n)){if(hy.has(i))continue;let s=n[i];gy(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 yy=3,Hu=parseInt(process.env.OCTOCODE_BULK_QUERY_TIMEOUT_MS||"60000",10)||6e4,Ry=parseInt(process.env.OCTOCODE_TOOL_TIMEOUT_MS||"60000",10)||6e4,by=5e3;function Sy(e,t,n){if(e<=1)return Hu;let r=Math.min(Math.max(t,1),e),o=Math.ceil(e/r),i=Math.floor(Ry/o),s=Math.max(by,Math.min(i,Hu));return n?Math.max(s,n):s}async function Y(e,t,n,r){let o=n.concurrency??yy,{results:i,errors:s}=await Ey(e,t,o,n.minQueryTimeoutMs);return Cy(n,i,s,e,r)}function Cy(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);t.forEach(g=>{let h=g.result.status;c[g.queryIndex]={id:zu(g.originalQuery,g.queryIndex),...h!==void 0?{status:h}:{},data:wy(g.result)}}),n.forEach(g=>{let h=r[g.queryIndex];h&&(c[g.queryIndex]={id:zu(h,g.queryIndex),status:"error",data:{error:g.error}})});let u=c.filter(g=>g!==void 0);if(e.finalize){let g=e.finalize({queries:r,results:u,config:e}),h=Gu(g.text,o),b=Uu(g.structuredContent,h.pagination);return Bu(e.toolName,t,n,h.text.length),{content:[{type:"text",text:h.text}],structuredContent:b,isError:g.isError??(u.length>0&&u.every(C=>C.status==="error"))}}let l={results:u};if(Array.isArray(l.results)){let g=Nu(l.results);g&&(l.base=g);let h=Du(l.results);h&&(l.shared=h)}let d=xr(l,a),m=Gu(d,o),p=Uu(ct(l),m.pagination);return Bu(e.toolName,t,n,m.text.length),{content:[{type:"text",text:m.text}],structuredContent:p,isError:u.length>0&&u.every(g=>g.status==="error")}}function pi(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 Ty(e,t,n){let r=1,o=0;for(;o<t&&o<e.length;){let i=pi(e,o,n);if(i<=o)break;o=i,r+=1}return o===t?r:Math.floor(t/n)+1}function Py(e,t){if(e.length===0)return 1;let n=0,r=0;for(;r<e.length;){let o=pi(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 Gu(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=pi(e,s,i),c=a<o,u=Ty(e,s,i),l=Py(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 Uu(e,t){return t?{...e,responsePagination:t}:e}function Bu(e,t,n,r){let o=t.reduce((i,s)=>i+(ee(s.result)??F(s.result)),0)+n.reduce((i,s)=>i+F(s),0);try{lo(e,o,r)}catch{}}async function Ey(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 ku(s,{timeout:Sy(e.length,n,r),continueOnError:!0,concurrency:n,onError:(c,u)=>{i.push({queryIndex:u,error:c.message})}})).forEach(c=>{c.success&&c.data&&o.push({result:c.data.result,queryIndex:c.data.queryIndex,originalQuery:c.data.originalQuery})}),{results:o,errors:i}}function wy(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}function zu(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}`}var H={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"};var Qu={[H.PATH_VALIDATION_FAILED]:{code:H.PATH_VALIDATION_FAILED,category:"VALIDATION",description:"Path validation failed - invalid or unsafe path",recoverability:"user-action-required"},[H.FILE_ACCESS_FAILED]:{code:H.FILE_ACCESS_FAILED,category:"FILE_SYSTEM",description:"Cannot access file - may not exist or lack permissions",recoverability:"unrecoverable"},[H.FILE_READ_FAILED]:{code:H.FILE_READ_FAILED,category:"FILE_SYSTEM",description:"Failed to read file contents",recoverability:"unrecoverable"},[H.FILE_TOO_LARGE]:{code:H.FILE_TOO_LARGE,category:"FILE_SYSTEM",description:"File exceeds size limits for operation",recoverability:"user-action-required"},[H.BINARY_FILE_UNSUPPORTED]:{code:H.BINARY_FILE_UNSUPPORTED,category:"FILE_SYSTEM",description:"Binary file is not supported by text content reader",recoverability:"user-action-required"},[H.NO_MATCHES]:{code:H.NO_MATCHES,category:"SEARCH",description:"Search pattern found no matches",recoverability:"user-action-required"},[H.OUTPUT_TOO_LARGE]:{code:H.OUTPUT_TOO_LARGE,category:"PAGINATION",description:"Output exceeds size limits",recoverability:"user-action-required"},[H.COMMAND_NOT_AVAILABLE]:{code:H.COMMAND_NOT_AVAILABLE,category:"EXECUTION",description:"Required CLI command is not installed or not in PATH",recoverability:"user-action-required"},[H.COMMAND_EXECUTION_FAILED]:{code:H.COMMAND_EXECUTION_FAILED,category:"EXECUTION",description:"System command execution failed",recoverability:"unrecoverable"},[H.COMMAND_TIMEOUT]:{code:H.COMMAND_TIMEOUT,category:"EXECUTION",description:"Command execution timed out",recoverability:"user-action-required"},[H.TOOL_EXECUTION_FAILED]:{code:H.TOOL_EXECUTION_FAILED,category:"EXECUTION",description:"Generic tool execution failure",recoverability:"unrecoverable"}};var Ce=class e extends Error{errorCode;category;recoverability;context;constructor(t,n,r,o){let i=Qu[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 mi(e){return e instanceof Ce}function $u(e,t=H.TOOL_EXECUTION_FAILED,n){if(mi(e))return e;if(e instanceof Error)return new Ce(t,e.message,n,e);let r=String(e);return new Ce(t,r,n)}function _y(e){return typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&("type"in e||"status"in e||"scopesSuggestion"in e)}function _(e,t,n={}){let{extra:r}=n,o={status:"error"};if(_y(e))o.error=e;else if(mi(e))o.error=e.message,o.errorCode=e.errorCode;else if(typeof e=="string")o.error=e;else if(e instanceof Error){let i=$u(e);o.error=i.message,o.errorCode=i.errorCode}else o.error="Unknown error occurred";if(r){let{hints:i,...s}=r;Object.assign(o,s)}return n.rawResponse===void 0?o:D(o,n.rawResponse)}function Te(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:_(i,t,{toolName:n.toolName})}}function he(e,t,n,r,o){let i=n?void 0:"empty",s={...i!==void 0?{status:i}:{},...t};return o?.rawResponse===void 0?s:D(s,o.rawResponse)}function Ar(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,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 v(r||n||"unknown_tool",Ao.EXECUTION_FAILED.code).catch(()=>{}),_(i,t)}async function Ae({toolName:e,query:t,execute:n,contextMessage:r}){try{return await n()}catch(o){return ye(o,t,r,e)}}import{promises as jt}from"fs";import{join as bi,basename as Ir,dirname as Qy,resolve as el,sep as $y}from"node:path";import{securityRegistry as jy}from"@octocodeai/octocode-engine/registry";import ju from"path";import{pathValidator as xy}from"@octocodeai/octocode-engine/pathValidator";import{redactPath as Sn}from"@octocodeai/octocode-engine/pathUtils";var Fe={pathValidationFailed:(e,t,n)=>new Ce(H.PATH_VALIDATION_FAILED,t||`Path validation failed: ${Sn(e,n)}`,{path:e}),fileAccessFailed:(e,t,n)=>{let r=Sn(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 Ce(H.FILE_ACCESS_FAILED,o,{path:e,errorCode:i},t)},fileReadFailed:(e,t,n)=>new Ce(H.FILE_READ_FAILED,`Failed to read file: ${Sn(e,n)}`,{path:e,errorCode:t?.code},t),fileTooLarge:(e,t,n)=>new Ce(H.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 Ce(H.BINARY_FILE_UNSUPPORTED,`Binary file unsupported: ${Sn(e)}`,{path:e}),outputTooLarge:(e,t)=>new Ce(H.OUTPUT_TOO_LARGE,`Output too large: ${e} (limit: ${t})`,{size:e,limit:t}),commandNotAvailable:(e,t)=>new Ce(H.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 Ce(H.COMMAND_EXECUTION_FAILED,n?`Command '${e}' failed: ${n}`:`Command execution failed: ${e}`,{command:e,stderr:n},t),toolExecutionFailed:(e,t)=>new Ce(H.TOOL_EXECUTION_FAILED,`Tool execution failed: ${e}`,{toolName:e},t)};function Le(e,t){if(!e.path?.trim()){let s=Fe.pathValidationFailed("","path is required");return{isValid:!1,errorResult:_(s,e,{toolName:t})}}let n=process.env.WORKSPACE_ROOT?.trim()||ge().local.workspaceRoot||process.cwd(),r=e.path.replace(/^file:\/\//,""),o=ju.isAbsolute(r)?r:ju.resolve(n,r),i=xy.validate(o);if(!i.isValid){let s=Fe.pathValidationFailed(e.path,i.error);return{isValid:!1,errorResult:_(s,e,{toolName:t,extra:{cwd:n,resolvedPath:o}})}}return{isValid:!0,sanitizedPath:i.sanitizedPath??o}}import{validateCommand as ky}from"@octocodeai/octocode-engine/commandValidator";import{spawn as Ay}from"child_process";var fi=["PATH","TMPDIR","TMP","TEMP","SYSTEMROOT","WINDIR","COMSPEC","PATHEXT"],Lr=[...fi,"HOME","USERPROFILE","APPDATA","LOCALAPPDATA"],Vu=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy"],Ly=10*1024*1024,Oy=5e3;function Iy(e={},t=fi){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}function Tt(e,t,n={}){let{timeout:r=3e4,cwd:o,env:i={},allowEnvVars:s=fi,maxOutputSize:a=Ly}=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:Iy(i,s),stdio:["ignore","pipe","pipe"]},p;try{p=Ay(e,t,m)}catch(R){c({stdout:"",stderr:"",exitCode:null,success:!1,error:R instanceof Error?R: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{}},Oy),c({stdout:l(),stderr:d(),exitCode:null,success:!1,error:new Error(`Command timeout after ${r}ms`),timedOut:!0})}},r),h=()=>{clearTimeout(g),f!==void 0&&(clearTimeout(f),f=void 0)},b=()=>{if(u.totalOutputSize>a){if(!u.killed){u.killed=!0;try{p.kill("SIGKILL")}catch{}h(),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",R=>{if(u.killed)return;let C=R.toString();u.totalOutputSize+=Buffer.byteLength(C),!b()&&u.stdoutChunks.push(C)}),p.stderr?.on("data",R=>{if(u.killed)return;let C=R.toString();u.totalOutputSize+=Buffer.byteLength(C),!b()&&u.stderrChunks.push(C)}),p.on("close",R=>{u.killed||(h(),c({stdout:l(),stderr:d(),exitCode:R,success:R===0}))}),p.on("error",R=>{u.killed||(u.killed=!0,h(),c({stdout:l(),stderr:d(),exitCode:null,success:!1,error:R}))})})}var xv=1*1024*1024;function Or(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}}async function $t(e,t=[],n={}){let r=ky(e,t);if(!r.isValid)throw new Error(`Command validation failed: ${r.error||"Command not allowed"}`);let o=Or(t);if(!o.valid)throw new Error(`Argument validation failed: ${o.error||"Invalid arguments"}`);let{timeout:i=3e4,cwd:s,env:a,maxOutputSize:c=10*1024*1024,tolerateOutputLimit:u=!1}=n,l=await Tt(e,t,{timeout:i,cwd:s,env:a,maxOutputSize:c});if(l.outputLimitExceeded&&u)return{success:!0,code:l.exitCode,stdout:l.stdout,stderr:l.stderr,truncated:!0};if(l.error)throw l.error;return{success:l.success,code:l.exitCode,stdout:l.stdout,stderr:l.stderr}}var gi=[".tar",".tar.gz",".tgz",".tar.bz2",".tbz2",".tbz",".tar.xz",".txz",".tar.zst",".tzst"],hi=[".7z",".iso",".cab",".cpio",".xar",".pkg",".ar",".deb",".lha",".lzh"],yi=[".dmg",".rar",".cpgz"],Wu=[".aar",".yaa"];function ze(e,t){let n=t.toLowerCase();return e.some(r=>n.endsWith(r))}function vy(e,t){let n=t?["-tvf",e]:["-tf",e],r=t?["-l",e]:["-Z","-1",e],o=n,i=["l","-ba","-bd",e],s=t?["list","-i",e,"-v"]:["list","-i",e],a={command:"tar",args:n},c={command:"unzip",args:r},u={command:"bsdtar",args:o},l={command:"7z",args:i},d={command:"7zz",args:i},m={command:"aa",args:s};return ze(Wu,e)?[m]:ze(yi,e)?[l,d,u,c,a]:ze(hi,e)?[u,l,d,c,a]:ze(gi,e)?[a,c,u,l,d]:[c,a,u,l,d]}function Fy(e,t){let n={command:"tar",args:["-xOf",e,"--",t]},r={command:"unzip",args:["-p",e,t]},o={command:"bsdtar",args:["-xOf",e,"--",t]},i=["e","-so","-bd","--",e,t],s={command:"7z",args:i},a={command:"7zz",args:i};return ze(yi,e)?[s,a,o,r,n]:ze(hi,e)?[o,s,a,r,n]:ze(gi,e)?[n,r,o,s,a]:[r,n,o,s,a]}async function Ri(e){let t=[];for(let n of e){let r=await $t(n.command,n.args);if(!r.success){if(r.stderr.toLowerCase().includes("not found")||r.stderr.toLowerCase().includes("no such file")||r.code===127){t.push(n.command);continue}return{success:!1,stdout:r.stdout,stderr:r.stderr,commandUsed:n.command,missingCommands:t.length?t:void 0}}return{success:!0,stdout:r.stdout,stderr:r.stderr,commandUsed:n.command,missingCommands:t.length?t:void 0}}return{success:!1,stdout:"",stderr:"All backends failed or were not found",missingCommands:t}}function My(e,t){return t!=="7z"&&t!=="7zz"?e:e.split(`
21
+ `):e.structuredContent!==void 0?JSON.stringify(e.structuredContent,null,2):JSON.stringify(e,null,2)}function Ui(e,t){let n=Uc(e)??{},r=GT(),o="results"in n?["results","id","status","data"]:["instructions","status","data"],i;return r==="json"?i=JSON.stringify(Qi(n,t||o),null,2):i=M.jsonToYamlString(n,{keysPriority:t||o}),Xm.sanitizeContent(i).content}function Qi(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(o=>Qi(o,t));if(typeof e!="object")return e;let n=e,r={};for(let o of t)o in n&&(r[o]=Qi(n[o],t));for(let o of Object.keys(n))o in r||(r[o]=Qi(n[o],t));return r}function BT(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=>zT.has(r))||t.hasMore!==!1?!1:typeof t.totalPages=="number"?t.totalPages<=1:"charOffset"in t||"nextCharOffset"in t?(t.charOffset??0)===0:!0}function Uc(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=>Uc(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(BT(a))continue;let c=(s==="files"||s==="repositories")&&!n,l=Uc(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 zT,Vr=y(()=>{"use strict";_e();ge();Ym();zT=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"])});function QT(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 $c(e,t,n){if(n>8||!e||typeof e!="object")return;if(Array.isArray(e)){for(let o of e)$c(o,t,n+1);return}let r=e;for(let o of jc){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))Jm.has(o)||i&&typeof i=="object"&&$c(i,t,n+1)}function Zm(e){let t=[];for(let i of e)$c(i?.data,t,0);if(t.length===0)return;let n=QT(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 UT(e,r),n}function UT(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(Jm.has(s))continue;let a=i[s];typeof a=="string"?!jc.includes(s)&&a.includes(t)&&(i[s]=a.replaceAll(t,"")):n(a,o+1)}}for(let r of e)n(r?.data,0)}function $T(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 jT(e){return typeof e=="string"&&e!==""||typeof e=="number"||typeof e=="boolean"}function eg(e){let t=$T(e);if(t.length<2)return;let n=t[0],r;for(let i of Object.keys(n)){if(qT.has(i))continue;let s=n[i];jT(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 jc,Jm,qT,tg=y(()=>{"use strict";jc=["path","uri"],Jm=new Set(["next","location"]);qT=new Set([...jc,"owner","repo","name","id"])});function YT(e,t,n){if(e<=1)return ng;let r=Math.min(Math.max(t,1),e),o=Math.ceil(e/r),i=Math.floor(WT/o),s=Math.max(KT,Math.min(i,ng));return n?Math.max(s,n):s}async function re(e,t,n,r){let o=n.concurrency??VT,{results:i,errors:s}=await eE(e,t,o,n.minQueryTimeoutMs);return XT(n,i,s,e,r)}function XT(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);t.forEach(g=>{let b=g.result.status;c[g.queryIndex]={id:sg(g.originalQuery,g.queryIndex),...b!==void 0?{status:b}:{},data:tE(g.result)}}),n.forEach(g=>{let b=r[g.queryIndex];b&&(c[g.queryIndex]={id:sg(b,g.queryIndex),status:"error",data:{error:g.error}})});let l=c.filter(g=>g!==void 0);if(e.finalize){let g=e.finalize({queries:r,results:l,config:e}),b=rg(g.text,o),S=og(g.structuredContent,b.pagination);return ig(e.toolName,t,n,b.text.length),{content:[{type:"text",text:b.text}],structuredContent:S,isError:g.isError??(l.length>0&&l.every(k=>k.status==="error"))}}let u={results:l};if(Array.isArray(u.results)){let g=Zm(u.results);g&&(u.base=g);let b=eg(u.results);b&&(u.shared=b)}let d=Ui(u,a),p=rg(d,o),f=og(Gt(u),p.pagination);return ig(e.toolName,t,n,p.text.length),{content:[{type:"text",text:p.text}],structuredContent:f,isError:l.length>0&&l.every(g=>g.status==="error")}}function qc(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 JT(e,t,n){let r=1,o=0;for(;o<t&&o<e.length;){let i=qc(e,o,n);if(i<=o)break;o=i,r+=1}return o===t?r:Math.floor(t/n)+1}function ZT(e,t){if(e.length===0)return 1;let n=0,r=0;for(;r<e.length;){let o=qc(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 rg(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=qc(e,s,i),c=a<o,l=JT(e,s,i),u=ZT(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 og(e,t){return t?{...e,responsePagination:t}:e}function ig(e,t,n,r){let o=t.reduce((i,s)=>i+(ce(s.result)??Q(s.result)),0)+n.reduce((i,s)=>i+Q(s),0);try{Ua(e,o,r)}catch{}}async function eE(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 Vm(s,{timeout:YT(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})}),{results:o,errors:i}}function tE(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}function sg(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}`}var VT,ng,WT,KT,$e=y(()=>{"use strict";_e();Km();Vr();ie();tg();VT=3,ng=parseInt(process.env.OCTOCODE_BULK_QUERY_TIMEOUT_MS||"60000",10)||6e4,WT=parseInt(process.env.OCTOCODE_TOOL_TIMEOUT_MS||"60000",10)||6e4,KT=5e3});var q,ag,Wr=y(()=>{"use strict";q={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"},ag={[q.PATH_VALIDATION_FAILED]:{code:q.PATH_VALIDATION_FAILED,category:"VALIDATION",description:"Path validation failed - invalid or unsafe path",recoverability:"user-action-required"},[q.FILE_ACCESS_FAILED]:{code:q.FILE_ACCESS_FAILED,category:"FILE_SYSTEM",description:"Cannot access file - may not exist or lack permissions",recoverability:"unrecoverable"},[q.FILE_READ_FAILED]:{code:q.FILE_READ_FAILED,category:"FILE_SYSTEM",description:"Failed to read file contents",recoverability:"unrecoverable"},[q.FILE_TOO_LARGE]:{code:q.FILE_TOO_LARGE,category:"FILE_SYSTEM",description:"File exceeds size limits for operation",recoverability:"user-action-required"},[q.BINARY_FILE_UNSUPPORTED]:{code:q.BINARY_FILE_UNSUPPORTED,category:"FILE_SYSTEM",description:"Binary file is not supported by text content reader",recoverability:"user-action-required"},[q.NO_MATCHES]:{code:q.NO_MATCHES,category:"SEARCH",description:"Search pattern found no matches",recoverability:"user-action-required"},[q.OUTPUT_TOO_LARGE]:{code:q.OUTPUT_TOO_LARGE,category:"PAGINATION",description:"Output exceeds size limits",recoverability:"user-action-required"},[q.COMMAND_NOT_AVAILABLE]:{code:q.COMMAND_NOT_AVAILABLE,category:"EXECUTION",description:"Required CLI command is not installed or not in PATH",recoverability:"user-action-required"},[q.COMMAND_EXECUTION_FAILED]:{code:q.COMMAND_EXECUTION_FAILED,category:"EXECUTION",description:"System command execution failed",recoverability:"unrecoverable"},[q.COMMAND_TIMEOUT]:{code:q.COMMAND_TIMEOUT,category:"EXECUTION",description:"Command execution timed out",recoverability:"user-action-required"},[q.TOOL_EXECUTION_FAILED]:{code:q.TOOL_EXECUTION_FAILED,category:"EXECUTION",description:"Generic tool execution failure",recoverability:"unrecoverable"}}});function Vc(e){return e instanceof Ie}function cg(e,t=q.TOOL_EXECUTION_FAILED,n){if(Vc(e))return e;if(e instanceof Error)return new Ie(t,e.message,n,e);let r=String(e);return new Ie(t,r,n)}var Ie,Wc=y(()=>{"use strict";Wr();Ie=class e extends Error{errorCode;category;recoverability;context;constructor(t,n,r,o){let i=ag[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 nE(e){return typeof e=="object"&&e!==null&&"error"in e&&typeof e.error=="string"&&("type"in e||"status"in e||"scopesSuggestion"in e)}function F(e,t,n={}){let{extra:r}=n,o={status:"error"};if(nE(e))o.error=e;else if(Vc(e))o.error=e.message,o.errorCode=e.errorCode;else if(typeof e=="string")o.error=e;else if(e instanceof Error){let i=cg(e);o.error=i.message,o.errorCode=i.errorCode}else o.error="Unknown error occurred";if(r){let{hints:i,...s}=r;Object.assign(o,s)}return n.rawResponse===void 0?o:U(o,n.rawResponse)}function Fe(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:F(i,t,{toolName:n.toolName})}}var Kc=y(()=>{"use strict";Wc();ie()});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:U(s,o.rawResponse)}function $i(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 F(n,t,{rawResponse:e.rawResponseChars??e.data??(e.error?e:void 0)})}function ve(e,t,n,r){let o=e instanceof Error?e.message:"Unknown error occurred",i=n?`${n}: ${o}`:o;return F(i,t)}var Me=y(()=>{"use strict";Kc();ie()});async function je({toolName:e,query:t,execute:n,contextMessage:r}){try{return await n()}catch(o){return ve(o,t,r,e)}}var Ht=y(()=>{"use strict";Me()});import{redactPath as Kr}from"@octocodeai/octocode-engine/pathUtils";var lg=y(()=>{"use strict"});var et,ji=y(()=>{"use strict";Wc();Wr();lg();et={pathValidationFailed:(e,t,n)=>new Ie(q.PATH_VALIDATION_FAILED,t||`Path validation failed: ${Kr(e,n)}`,{path:e}),fileAccessFailed:(e,t,n)=>{let r=Kr(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 Ie(q.FILE_ACCESS_FAILED,o,{path:e,errorCode:i},t)},fileReadFailed:(e,t,n)=>new Ie(q.FILE_READ_FAILED,`Failed to read file: ${Kr(e,n)}`,{path:e,errorCode:t?.code},t),fileTooLarge:(e,t,n)=>new Ie(q.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 Ie(q.BINARY_FILE_UNSUPPORTED,`Binary file unsupported: ${Kr(e)}. Use localBinaryInspect to read its format/strings, or localSearchCode to grep embedded strings.`,{path:e}),outputTooLarge:(e,t)=>new Ie(q.OUTPUT_TOO_LARGE,`Output too large: ${e} (limit: ${t})`,{size:e,limit:t}),commandNotAvailable:(e,t)=>new Ie(q.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 Ie(q.COMMAND_EXECUTION_FAILED,n?`Command '${e}' failed: ${n}`:`Command execution failed: ${e}`,{command:e,stderr:n},t),toolExecutionFailed:(e,t)=>new Ie(q.TOOL_EXECUTION_FAILED,`Tool execution failed: ${e}`,{toolName:e},t)}});import ug from"path";import{pathValidator as rE}from"@octocodeai/octocode-engine/pathValidator";function qe(e,t){if(!e.path?.trim()){let s=et.pathValidationFailed("","path is required");return{isValid:!1,errorResult:F(s,e,{toolName:t})}}let n=process.env.WORKSPACE_ROOT?.trim()||ke().local.workspaceRoot||process.cwd(),r=e.path.replace(/^file:\/\//,""),o=ug.isAbsolute(r)?r:ug.resolve(n,r),i=rE.validate(o);if(!i.isValid){let s=et.pathValidationFailed(e.path,i.error);return{isValid:!1,errorResult:F(s,e,{toolName:t,extra:{cwd:n,resolvedPath:o}})}}return{isValid:!0,sanitizedPath:i.sanitizedPath??o}}var wt=y(()=>{"use strict";ji();Kc();_e()});import{spawn as oE}from"child_process";function aE(e={},t=Yc){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}function an(e,t,n={}){let{timeout:r=3e4,cwd:o,env:i={},allowEnvVars:s=Yc,maxOutputSize:a=iE}=n;return new Promise(c=>{let l={killed:!1,stdoutChunks:[],stderrChunks:[],totalOutputSize:0},u=()=>l.stdoutChunks.join(""),d=()=>l.stderrChunks.join(""),p={cwd:o,env:aE(i,s),stdio:["ignore","pipe","pipe"]},f;try{f=oE(e,t,p)}catch(C){c({stdout:"",stderr:"",exitCode:null,success:!1,error:C instanceof Error?C:new Error(`Failed to spawn command '${e}'`)});return}let m,g=setTimeout(()=>{if(!l.killed){l.killed=!0;try{f.kill("SIGTERM")}catch{}m=setTimeout(()=>{try{f.kill("SIGKILL")}catch{}},sE),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:new Error(`Command timeout after ${r}ms`),timedOut:!0})}},r),b=()=>{clearTimeout(g),m!==void 0&&(clearTimeout(m),m=void 0)},S=()=>{if(l.totalOutputSize>a){if(!l.killed){l.killed=!0;try{f.kill("SIGKILL")}catch{}b(),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:new Error("Output size limit exceeded"),outputLimitExceeded:!0})}return!0}return!1};f.stdout?.on("data",C=>{if(l.killed)return;let k=C.toString();l.totalOutputSize+=Buffer.byteLength(k),!S()&&l.stdoutChunks.push(k)}),f.stderr?.on("data",C=>{if(l.killed)return;let k=C.toString();l.totalOutputSize+=Buffer.byteLength(k),!S()&&l.stderrChunks.push(k)}),f.on("close",C=>{l.killed||(b(),c({stdout:u(),stderr:d(),exitCode:C,success:C===0}))}),f.on("error",C=>{l.killed||(l.killed=!0,b(),c({stdout:u(),stderr:d(),exitCode:null,success:!1,error:C}))})})}function Vi(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 Yc,qi,dg,iE,sE,yj,Wi=y(()=>{"use strict";Yc=["PATH","TMPDIR","TMP","TEMP","SYSTEMROOT","WINDIR","COMSPEC","PATHEXT"],qi=[...Yc,"HOME","USERPROFILE","APPDATA","LOCALAPPDATA"],dg=["HTTP_PROXY","HTTPS_PROXY","NO_PROXY","http_proxy","https_proxy","no_proxy"],iE=10*1024*1024,sE=5e3;yj=1*1024*1024});import{validateCommand as cE}from"@octocodeai/octocode-engine/commandValidator";async function $n(e,t=[],n={}){let r=cE(e,t);if(!r.isValid)throw new Error(`Command validation failed: ${r.error||"Command not allowed"}`);let o=Vi(t);if(!o.valid)throw new Error(`Argument validation failed: ${o.error||"Invalid arguments"}`);let{timeout:i=3e4,cwd:s,env:a,maxOutputSize:c=10*1024*1024,tolerateOutputLimit:l=!1}=n,u=await an(e,t,{timeout:i,cwd:s,env:a,maxOutputSize:c});if(u.outputLimitExceeded&&l)return{success:!0,code:u.exitCode,stdout:u.stdout,stderr:u.stderr,truncated:!0};if(u.error)throw u.error;return{success:u.success,code:u.exitCode,stdout:u.stdout,stderr:u.stderr}}var Xc=y(()=>{"use strict";Wi()});function ut(e,t){let n=t.toLowerCase();return e.some(r=>n.endsWith(r))}function lE(e,t){let n=t?["-tvf",e]:["-tf",e],r=t?["-l",e]:["-Z","-1",e],o=n,i=["l","-ba","-bd",e],s=t?["list","-i",e,"-v"]:["list","-i",e],a={command:"tar",args:n},c={command:"unzip",args:r},l={command:"bsdtar",args:o},u={command:"7z",args:i},d={command:"7zz",args:i},p={command:"aa",args:s};return ut(pg,e)?[p]:ut(el,e)?[u,d,l,c,a]:ut(Zc,e)?[l,u,d,c,a]:ut(Jc,e)?[a,c,l,u,d]:[c,a,l,u,d]}function uE(e,t){let n={command:"tar",args:["-xOf",e,"--",t]},r={command:"unzip",args:["-p",e,t]},o={command:"bsdtar",args:["-xOf",e,"--",t]},i=["e","-so","-bd","--",e,t],s={command:"7z",args:i},a={command:"7zz",args:i};return ut(el,e)?[s,a,o,r,n]:ut(Zc,e)?[o,s,a,r,n]:ut(Jc,e)?[n,r,o,s,a]:[r,n,o,s,a]}async function tl(e){let t=[];for(let n of e){let r=await $n(n.command,n.args);if(!r.success){if(r.stderr.toLowerCase().includes("not found")||r.stderr.toLowerCase().includes("no such file")||r.code===127){t.push(n.command);continue}return{success:!1,stdout:r.stdout,stderr:r.stderr,commandUsed:n.command,missingCommands:t.length?t:void 0}}return{success:!0,stdout:r.stdout,stderr:r.stderr,commandUsed:n.command,missingCommands:t.length?t:void 0}}return{success:!1,stdout:"",stderr:"All backends failed or were not found",missingCommands:t}}function dE(e,t){return t!=="7z"&&t!=="7zz"?e:e.split(`
26
26
  `).map(n=>{if(!n.trim())return"";let r=n.match(/^.+\s{2,}(\S.*)$/);return r?r[1].trim():n.trim()}).filter(Boolean).join(`
27
- `)}async function Ku(e,t){let n=await Ri(vy(e,t));if(!n.success)return n;let o=(!t&&n.commandUsed?My(n.stdout,n.commandUsed):n.stdout).split(`
28
- `).map(i=>i.trim()).filter(Boolean);return{...n,entries:o}}async function Yu(e,t){return Ri(Fy(e,t))}function Ny(e,t){let n={command:"tar",args:["-xf",e,"-C",t]},r={command:"unzip",args:["-o","-q",e,"-d",t]},o={command:"bsdtar",args:["-xf",e,"-C",t]},i=["x",`-o${t}`,"-y","-bd","--",e],s={command:"7z",args:i},a={command:"7zz",args:i},c={command:"aa",args:["extract","-i",e,"-d",t]};return ze(Wu,e)?[c]:ze(yi,e)?[s,a,o,n,r]:ze(hi,e)?[o,s,a,n,r]:ze(gi,e)?[n,o,s,a,r]:[r,n,o,s,a]}async function Xu(e,t){return Ri(Ny(e,t))}var Dy={gzip:{command:"zcat",args:e=>[e],fallback:{command:"gunzip",args:e=>["-c",e]}},bzip2:{command:"bzcat",args:e=>[e]},xz:{command:"xzcat",args:e=>[e]},lzma:{command:"xzcat",args:e=>["--format=lzma",e]},zstd:{command:"zstdcat",args:e=>[e],fallback:{command:"zstd",args:e=>["-dcq",e]}},lz4:{command:"lz4cat",args:e=>[e]},brotli:{command:"brotli",args:e=>["-dc",e]},lzfse:{command:"lzfse",args:e=>["-decode","-i",e,"-o","/dev/stdout"]}},Hy=[{ext:".gz",format:"gzip"},{ext:".bz2",format:"bzip2"},{ext:".xz",format:"xz"},{ext:".lzma",format:"lzma"},{ext:".zst",format:"zstd"},{ext:".zstd",format:"zstd"},{ext:".lz4",format:"lz4"},{ext:".br",format:"brotli"},{ext:".lzfse",format:"lzfse"}],Gy={"application/gzip":"gzip","application/x-gzip":"gzip","application/x-bzip2":"bzip2","application/x-bzip":"bzip2","application/x-xz":"xz","application/x-lzma":"lzma","application/zstd":"zstd","application/x-zstd":"zstd","application/x-lz4":"lz4","application/x-brotli":"brotli","application/x-lzfse":"lzfse"};function Uy(e){let t=e.toLowerCase();for(let{ext:n,format:r}of Hy)if(t.endsWith(n))return r}async function By(e){let t=await $t("file",["--mime-type","-b",e]);if(t.success)return Gy[t.stdout.trim().toLowerCase()]}async function zy(e,t){let n=[{command:e.command,args:e.args(t)},...e.fallback?[{command:e.fallback.command,args:e.fallback.args(t)}]:[]];for(let i of n){let s=await $t(i.command,i.args);if(s.success)return{success:!0,stdout:s.stdout,stderr:s.stderr,commandUsed:i.command}}let r=n[n.length-1];return{success:!1,stdout:"",stderr:(await $t(r.command,r.args)).stderr,commandUsed:r.command}}async function Ju(e,t){let n;if(t!=="auto"?n=t:n=Uy(e)??await By(e),!n)return{success:!1,error:"Could not detect compression format from extension or mime-type. Set format: gzip|bzip2|xz|lzma|zstd|lz4|brotli|lzfse explicitly."};let r=Dy[n],o=await zy(r,e);return o.success?{success:!0,format:n,backend:o.commandUsed,content:o.stdout}:{success:!1,format:n,backend:o.commandUsed,error:o.stderr||`${o.commandUsed} failed`}}function Zu(e){try{return{success:!0,info:O.inspectBinaryNative(e)}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}function qu(e,t,n,r=0){try{let o=O.extractBinaryStringsNative(e,t,n,r);return{success:!0,strings:o.strings,totalFound:o.totalFound,truncated:o.truncated,nextScanOffset:o.nextScanOffset}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}}var Vy=S.LOCAL_BINARY_INSPECT;function nl(e=new Date){return e.toISOString().replace(/[:.]/g,"-")}function Wy(e){return bi(be.unzip,`${Ir(e)}-${nl()}`)}function Ky(e,t){return bi(be.binary,`${Ir(e)}-${t}-${nl()}`)}function Yy(e){return e.replace(/\\/g,"/").split("/").filter(n=>n&&n!=="."&&n!=="..").join("/")||"content.txt"}async function Si(e,t,n,r){let o=el(Ky(e,t)),i=el(bi(o,Yy(n)));if(!i.startsWith(o+$y)&&i!==o)throw new Error("Derived binary output path escaped its tmp directory.");return await jt.mkdir(Qy(i),{recursive:!0}),await jt.writeFile(i,r,"utf-8"),i}var Xy=["file","unzip","tar","bsdtar","7z","7zz","aa","zcat","gunzip","bzcat","xzcat","zstdcat","zstd","lz4cat","brotli","lzfse"],tl=!1;function Jy(){if(!tl){try{jy.addAllowedCommands(Xy)}catch{}tl=!0}}var Zy=1e3,qy=8;function rl(e,t,n){let r=O.extractMatchingLines(e,t,{isRegex:!0,caseSensitive:!1,contextLines:n});return r.lines.length>0?r.lines.join(`
29
- `):null}function Ci(e,t,n,r){let s=Gt(e,t??0,n??r),a=s.hasMore||s.totalPages>1?{currentPage:s.currentPage,totalPages:s.totalPages,hasMore:s.hasMore,charOffset:s.charOffset,charLength:s.charLength,totalChars:s.totalChars,...s.hasMore&&s.nextCharOffset!==void 0?{nextCharOffset:s.nextCharOffset}:{}}:void 0;return{content:s.paginatedContent,isPartial:s.hasMore,pagination:a}}function eR(e,t){let n=Zu(e);if(!n.success||!n.info)return _(n.error??"inspect failed",t);let r=n.info,o=t.detailed??!1;return{status:"success",mode:"inspect",path:e,format:r.format,description:r.description,magicBytes:r.magicHex,...r.arch?{arch:r.arch}:{},...r.bits?{bits:r.bits}:{},...r.endianness?{endianness:r.endianness}:{},...r.stripped!==void 0?{stripped:r.stripped}:{},...r.entry?{entry:r.entry}:{},symbolCount:r.symbolCount,importCount:r.importCount,exportCount:r.exportCount,...o&&r.symbols.length?{symbols:r.symbols}:{},...o&&r.imports.length?{imports:r.imports}:{},...o&&r.exports.length?{exports:r.exports}:{},...o&&r.sections.length?{sections:r.sections}:{},...r.libraries.length?{libraries:r.libraries}:{},...o?{detailed:!0}:{},...r.truncated?{truncated:!0}:{},...r.notes.length?{warnings:r.notes}:{}}}async function tR(e,t){let n=t.verbose??!1,r=await Ku(e,n);if(!r.success)return _(r.stderr||"All archive backends failed",t);let o=r.entries??[],i=Math.min(t.maxEntries??Zy,o.length),s=o.slice(0,i),a=t.entriesPerPage,c=t.entryPageNumber??1,u=a?s.slice((c-1)*a,c*a):s,l=a?Math.ceil(s.length/a):1,d=a?c<l:!1;return{status:"success",mode:"list",path:e,backend:r.commandUsed,totalEntries:o.length,entries:u,...a&&{pagination:{currentPage:c,totalPages:l,hasMore:d,entriesPerPage:a,totalEntries:s.length}}}}async function nR(e,t){let n=t.archiveFile,r=await Yu(e,n);if(!r.success)return _(r.stderr||"Extraction failed",t);let o=r.stdout;if(!o)return _("Entry is empty",t);let i=await Si(e,"extract",n,o);if(t.matchString){let c=rl(o,t.matchString,t.matchStringContextLines??3);if(!c)return _(`No lines match "${t.matchString}" in the extracted entry`,t);o=c}let s=Be(),a=Ci(o,t.charOffset,t.charLength,s);return{status:"success",mode:"extract",path:e,archiveFile:n,backend:r.commandUsed,localPath:i,content:a.content,contentLength:o.length,isPartial:a.isPartial,...a.pagination?{pagination:a.pagination}:{}}}async function rR(e,t){let n=await Ju(e,t.format??"auto");if(!n.success)return _(n.error??"Decompression failed",t);let r=n.content??"";if(!r)return _("Decompressed file is empty",t);let o=await Si(e,"decompress",`${Ir(e)}.decompressed.txt`,r);if(t.matchString){let a=rl(r,t.matchString,t.matchStringContextLines??3);if(!a)return _(`No lines match "${t.matchString}" in the decompressed content`,t);r=a}let i=Be(),s=Ci(r,t.charOffset,t.charLength,i);return{status:"success",mode:"decompress",path:e,format:n.format,backend:n.backend,localPath:o,content:s.content,contentLength:r.length,isPartial:s.isPartial,...s.pagination?{pagination:s.pagination}:{}}}async function oR(e,t){let n=t.minLength??qy,r=t.includeOffsets??!1,o=t.scanOffset??0,i=qu(e,n,r,o);if(!i.success)return _(i.error??"strings extraction failed",t);let s=(i.strings??[]).join(`
30
- `),a=s?await Si(e,"strings",`${Ir(e)}.strings.txt`,s):void 0,c=Be(),u=Ci(s,t.charOffset,t.charLength,c);return{status:"success",mode:"strings",path:e,content:u.content,...a?{localPath:a}:{},contentLength:s.length,totalFound:i.totalFound??0,isPartial:u.isPartial,...u.pagination?{pagination:u.pagination}:{},scanOffset:o,...i.nextScanOffset!==void 0?{nextScanOffset:i.nextScanOffset}:{}}}async function iR(e,t){try{await jt.stat(e)}catch{return _(`File not found: ${e}`,t)}let n=Wy(e);await jt.mkdir(n,{recursive:!0});let r=await Xu(e,n);if(!r.success)return _(`Unpack failed: ${r.stderr||"no backend could extract this archive"}`,t);let o=0;try{o=(await jt.readdir(n)).length}catch{}return{status:"success",mode:"unpack",path:e,localPath:n,cached:!1,topLevelEntries:o}}async function ol(e){Jy();let t=Le(e,Vy);if(!t.isValid)return t.errorResult;let n=t.sanitizedPath;try{if(!(await jt.stat(n)).isFile())return _(`Path is not a regular file: ${n}`,e)}catch{return _(`File not found: ${n}`,e)}switch(e.mode){case"inspect":return eR(n,e);case"list":return tR(n,e);case"extract":return nR(n,e);case"decompress":return rR(n,e);case"strings":return oR(n,e);case"unpack":return iR(n,e);default:return _(`Unknown mode: ${String(e.mode)}`,e)}}async function il(e){let{queries:t}=e;return Y(t||[],async n=>Ae({toolName:S.LOCAL_BINARY_INSPECT,query:n,contextMessage:"localBinaryInspect execution failed",execute:async()=>{let r=Te(wr,n);if(r.ok===!1)return r.error;let o=await ol(r.data),i=o,s=typeof i.content=="string"?i.content.length:typeof i.strings=="object"&&i.strings!==null?JSON.stringify(i.strings).length:0;return D(o,s),o}}),{toolName:S.LOCAL_BINARY_INSPECT},e)}function Ti(e){return e.data!==void 0&&!e.error}import{maskSensitiveData as sl}from"@octocodeai/octocode-engine/mask";var Pi=class extends Error{providerType;constructor(t,n){super(n),this.name="ProviderInitializationError",this.providerType=t}};function sR(){return Lo().provider??er()}function aR(e){let t=Lo(),n=t.provider??er(),{baseUrl:r,token:o}=t;try{let i=ni(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=sl(s);throw new Pi(n,`Failed to initialize ${n} provider: ${a}`)}}function Me(e){let t;return()=>t??=aR(e)}function kr(e,t){return e.capabilities[t]}async function ut(e,t){let n=await t();return Ti(n)?{ok:!0,response:n}:{ok:!1,result:Ar(n,e)}}async function al(e,t){let n=t??sR(),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:sl(c),status:500,provider:n}}}})),o=[],i=[];for(let s of r)Ti(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 _R}from"fs";import{join as xR}from"path";import{existsSync as Pn,readFileSync as cR,writeFileSync as uR,mkdirSync as lR,rmSync as Tn,readdirSync as dR,statSync as pR}from"node:fs";import{join as Ne}from"node:path";import{createHash as mR}from"node:crypto";var fR=1440*60*1e3,h0=600*1e3,gR=2*1024*1024*1024,hR=50,ul=".octocode-clone-meta.json";function ll(e){return Ne(e,"tmp","clone")}function dl(e){return Ne(e,"tmp","tree")}function yR(e){return e?`__sp_${mR("sha256").update(e).digest("hex").substring(0,6)}`:""}function pl(e,t,n,r,o){let i=`${r}${yR(o)}`;return Ne(ll(e),t,n,i)}function Ei(e,t,n,r){return Ne(dl(e),t,n,r)}function RR(e){return typeof e=="object"&&e!==null}function bR(e){if(!RR(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),t}function wi(e){let t=Ne(e,ul);if(!Pn(t))return null;try{return bR(JSON.parse(cR(t,"utf-8")))}catch{return null}}function En(e,t){try{uR(Ne(e,ul),JSON.stringify(t,null,2),"utf-8")}catch{}}function ml(e){return Date.now()<new Date(e.expiresAt).getTime()}function wn(e){let t=wi(e);return t?ml(t)?Pn(e)?{hit:!0,meta:t}:{hit:!1}:{hit:!1}:{hit:!1}}function SR(){let e=process.env.OCTOCODE_CACHE_TTL_MS;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return fR}function CR(){let e=process.env.OCTOCODE_MAX_CACHE_SIZE;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return gR}function TR(){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 hR}function _n(e,t,n,r,o,i){let s=new Date;return{clonedAt:s.toISOString(),expiresAt:new Date(s.getTime()+SR()).toISOString(),owner:e,repo:t,branch:n,source:r,...o?{sparsePath:o}:{},...i!=null?{sizeBytes:i}:{}}}function xn(e){let t=Ne(e,"..");try{Pn(t)||lR(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 _i(e){try{Pn(e)&&Tn(e,{recursive:!0,force:!0})}catch{}}function Cn(e){try{return pR(e).isDirectory()}catch{return!1}}function Pt(e){try{return dR(e)}catch{return[]}}function*fl(e){for(let t of Pt(e)){let n=Ne(e,t);if(Cn(n))for(let r of Pt(n)){let o=Ne(n,r);if(Cn(o))for(let i of Pt(o)){let s=Ne(o,i);Cn(s)&&(yield s)}}}}function cl(e){for(let t of[...Pt(e)]){let n=Ne(e,t);if(Cn(n)){for(let r of[...Pt(n)]){let o=Ne(n,r);if(Cn(o)&&Pt(o).length===0)try{Tn(o,{recursive:!0,force:!0})}catch{}}if(Pt(n).length===0)try{Tn(n,{recursive:!0,force:!0})}catch{}}}}function PR(e){let t=0;for(let n of fl(e))try{let r=wi(n);(!r||!ml(r))&&(Tn(n,{recursive:!0,force:!0}),t++)}catch{}return t}function ER(e){let t=[];for(let n of fl(e)){let r=wi(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??qn(n)})}return t}function wR(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{Tn(s.branchDir,{recursive:!0,force:!0}),i++,r-=s.sizeBytes,o-=1}catch{}}return i}function gl(e){if(!Pn(e))return 0;let t=0;try{t+=PR(e)}catch{return t}cl(e);let n=wR(ER(e),CR(),TR());return t+=n,n>0&&cl(e),t}function hl(e){return gl(ll(e))}function xi(e){return gl(dl(e))}var yl=120*1e3,AR=30*1e3,Rl=[...Lr,"GIT_TERMINAL_PROMPT"];async function bl(e,t,n){let r=e.owner,o=e.repo,{sparsePath:i,forceRefresh:s}=e;await kR();let a=e.branch??await ke(r,o,t),c=vt(),u=pl(c,r,o,a,i),l=wn(u);if(!s&&l.hit&&l.meta.source==="clone")return{localPath:u,cached:!0,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}};hl(c),_i(u),xn(u);let d=IR(t,n);if(i){if(await OR(r,o,a,u,i,d),!_R(xR(u,i)))throw _i(u),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 LR(r,o,a,u,d);let m=_n(r,o,a,"clone",i);return En(u,m),{localPath:u,cached:!1,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}}}async function LR(e,t,n,r,o){let i=Cl(o);i.push("clone","--depth","1","--single-branch","--branch",n,"--",Sl(e,t),r),await Ai(i,yl,`full clone of ${e}/${t}`,o)}async function OR(e,t,n,r,o,i){let s=Cl(i);s.push("clone","--filter","blob:none","--sparse","--depth","1","--single-branch","--branch",n,"--",Sl(e,t),r),await Ai(s,yl,`sparse clone of ${e}/${t}`,i),await Ai(["-C",r,"sparse-checkout","set","--skip-checks","--",o],AR,`sparse-checkout set ${o}`,void 0)}function Sl(e,t){return`https://github.com/${e}/${t}.git`}function Cl(e){return e?["-c",`http.extraHeader=Authorization: Bearer ${e}`]:[]}function IR(e,t){return e?.token&&typeof e.token=="string"?e.token:t}async function kR(){try{if(!(await Tt("git",["--version"],{timeout:5e3,maxOutputSize:1024,allowEnvVars:Rl,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 vR(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 Ai(e,t,n,r){let o=await Tt("git",e,{timeout:t,maxOutputSize:5242880,allowEnvVars:Rl,env:{GIT_TERMINAL_PROMPT:"0"}});if(!o.success){let i=vR(o.stderr?.trim()||"",r),s=i?`: ${i}`:"";throw new Error(`git ${n} failed${s}`)}}async function Tl(e){let{queries:t,authInfo:n}=e,r=Me(n);return Y(t,async(o,i)=>Ae({toolName:S.GITHUB_CLONE_REPO,query:o,contextMessage:`Clone failed for ${o.owner}/${o.repo}`,execute:async()=>{let s=r();if(!kr(s,"cloneRepo"))return ye(new Error("ghCloneRepo is only available with the GitHub provider."),o,"Provider not supported",S.GITHUB_CLONE_REPO);let a;try{a=await bl(o,n,s.token)}catch(m){let p=m instanceof Error?m.message:String(m);return _(`Clone failed for ${o.owner}/${o.repo}: ${p}`,o)}let c=qn(a.localPath),u={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}:{}},l={localSearch:{tool:"localSearchCode",query:{path:a.localPath,keywords:"TODO",mode:"discovery"}},viewStructure:{tool:"localViewStructure",query:{path:a.localPath}}},d={owner:o.owner,repo:o.repo,localPath:a.localPath,resolvedBranch:a.branch,cached:a.cached,...o.sparsePath?{sparsePath:o.sparsePath}:{},totalSize:c,location:u,next:l};return he(o,d,!0,S.GITHUB_CLONE_REPO,{rawResponse:c})}}),{toolName:S.GITHUB_CLONE_REPO,keysPriority:["localPath","resolvedBranch","cached","sparsePath","totalSize","fileCount","location","error"]},e)}import{writeFileSync as Pl,mkdirSync as Li,existsSync as An,rmSync as FR,readdirSync as MR,statSync as El}from"node:fs";import{join as vr,dirname as wl,resolve as Oi,sep as Ii}from"node:path";var NR=50,DR=5*1024*1024,HR=300*1024,GR=5,UR=1e4,BR=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"]);async function _l(e,t,n,r,o,i=!1){let s=vt(),a=Ei(s,e,t,r),c=Oi(vr(a,n));if(!c.startsWith(a+Ii)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let u=wn(a);if(u.hit&&!i&&An(c)){let C=jR(c,a);return{localPath:c,repoRoot:a,files:C.files,fileCount:C.fileCount,totalSize:C.totalSize,cached:!0,expiresAt:u.meta.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}let l=await re(o),{data:d}=await l.rest.repos.getContent({owner:e,repo:t,path:n,ref:r});if(!Array.isArray(d))throw new Error(`Path "${n}" is not a directory. Use type "file" to fetch file content.`);let m=d.filter(C=>{if(C.type!=="file"||!C.download_url||C.size>HR)return!1;let w=va(C.name,{lowercase:!0,leadingDot:!0});return!BR.has(w)}).slice(0,NR),p=o?.token,f=await zR(m,GR,p),g=0,h=[];for(let{entry:C,content:w}of f){if(g+w.length>DR)break;g+=w.length,h.push({entry:C,content:w})}xi(s),xn(a),An(c)&&FR(c,{recursive:!0,force:!0}),Li(c,{recursive:!0,mode:448});let b=[];for(let{entry:C,content:w}of h){let T=Oi(vr(a,C.path));if(!T.startsWith(a+Ii))continue;let A=wl(T);An(A)||Li(A,{recursive:!0,mode:448}),Pl(T,w,"utf-8"),b.push({path:C.path,size:w.length,type:"file"})}let R=_n(e,t,r,"treeFetch");return En(a,R),{localPath:c,repoRoot:a,files:b,fileCount:b.length,totalSize:g,cached:!1,expiresAt:R.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}async function xl(e,t,n,r,o,i=!1){let s=vt(),a=Ei(s,e,t,r),c=Oi(vr(a,n));if(!c.startsWith(a+Ii)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let u=wn(a);if(!i&&u.hit&&An(c))return{localPath:c,repoRoot:a,path:n,size:VR(c),cached:!0,expiresAt:u.meta.expiresAt,owner:e,repo:t,branch:r};let l=await ir({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}`)}xi(s),xn(a);let d=wl(c);An(d)||Li(d,{recursive:!0,mode:448}),Pl(c,l.data.rawContent,"utf-8");let m=l.data.branch||r,p=_n(e,t,m,"treeFetch");return En(a,p),{localPath:c,repoRoot:a,path:n,size:l.data.rawContent.length,cached:!1,expiresAt:p.expiresAt,owner:e,repo:t,branch:m}}async function zR(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 $R(a.download_url,n);return{entry:a,content:c}}));for(let a of s)a.status==="fulfilled"&&r.push(a.value)}return r}var QR=new Set(["raw.githubusercontent.com","objects.githubusercontent.com","github.com"]);async function $R(e,t){try{let o=new URL(e);if(!QR.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(),UR);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 jR(e,t){let n=[],r=0;function o(i){let s;try{s=MR(i)}catch{return}for(let a of s){if(a.startsWith("."))continue;let c=vr(i,a);try{let u=El(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 VR(e){try{return El(e).size}catch{return 0}}function KR(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 Al(e,t){return e&&t?`${e}/${t}`:void 0}function Ll(e){return{keywords:e.keywords??[],projectId:Al(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 Ol(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 YR(e){let t=e.lastIndexOf("/");return t<=0?{owner:"",repo:e}:{owner:e.substring(0,t),repo:e.substring(t+1)}}function Il(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:u}=YR(a),l=`${c}/${u}`,d=s,m=o.get(l);if(m||(m={id:l,owner:c,repo:u,matches:[]},o.set(l,m)),n||!s.matches?.length){m.matches.push({path:s.path,...n?{}:{pathOnly:!0},...r&&d.url?{url:d.url}:{}});continue}let p=!0,f=!1;for(let g of s.matches){if(!g.context)continue;let h={path:s.path,value:KR(g.context)};g.positions?.length>0&&(h.matchIndices=g.positions.map(([b,R])=>({start:b,end:R,lineOffset:(g.context??"").substring(0,b).split(`
31
- `).length-1}))),r&&p&&d.url&&(h.url=d.url,p=!1),m.matches.push(h),f=!0}f||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,...Ol(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}),i}function kl(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 vl(e){let t=n=>{let r=n.lastIndexOf("/");return r<=0?{owner:"",repo:n}:{owner:n.substring(0,r),repo:n.substring(r+1)}};return e.map(n=>{let{owner:r,repo:o}=t(n.fullPath);return{owner:r||"",repo:o||n.name,defaultBranch:n.defaultBranch,stars:n.stars,description:n.description||"",url:n.url,createdAt:n.createdAt,updatedAt:n.updatedAt,pushedAt:n.lastActivityAt,visibility:n.visibility,topics:n.topics,forksCount:n.forks,openIssuesCount:n.openIssuesCount,...n.language&&{language:n.language}}})}function XR(e){return e.startsWith('"')?e:/\s/.test(e)?`"${e.replace(/"/g,'\\"')}"`:e}function Fl(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map(XR),n=e.query?.trim()??"",r=[...t,...n?[n]:[]].join(" ")||void 0;return{projectId:Al(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 JR(e){return e?{capped:e,totalCount:e.length,wasTruncated:!1}:{capped:void 0,totalCount:0,wasTruncated:!1}}function ZR(e){let t=e.map(r=>r.body.toLowerCase()),n=[];return t.some(r=>/\b(lgtm|looks good|approved|ship it)\b/.test(r))&&n.push("approval"),t.some(r=>/\b(change|fix|concern|blocker|blocking|request changes?)\b/.test(r))&&n.push("changes-requested"),t.some(r=>r.includes("?"))&&n.push("question"),n.length>0?n:["discussion"]}function qR(e){if(!e||e.length===0)return;let t=Array.from(new Set(e.map(o=>o.author))),n=e.map(o=>o.updatedAt||o.createdAt).filter(Boolean).sort().at(-1),r=e.filter(o=>o.commentType==="review_inline").length;return{totalComments:e.length,inlineComments:r,discussionComments:e.length-r,commenters:t.slice(0,8),...n?{latestCommentAt:n}:{},themes:ZR(e)}}function Ml(e,t={}){let{includeFileChanges:n=!0}=t,r=e.items.map(i=>{let{capped:s,totalCount:a}=JR(i.fileChanges),c=Array.isArray(i.comments)?i.comments:void 0,u=qR(c);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(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}:{},...Ol(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}}function Nl(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 Dl(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.isSkeleton===!0&&{isSkeleton:!0},...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}:{}}}function Hl(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??St.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 Gl(e,t,n,r){let o=r,i=e.branch??r,s=o&&i&&o!==i&&o!=="HEAD",a=Object.entries(n).sort(([d],[m])=>d==="."?-1:m==="."?1:d.localeCompare(m)).map(([d,m])=>({dir:d,files:m.files,folders:m.folders})),c=e.fileSizeMap,u={};if(c){for(let[d,m]of Object.entries(c))if(n[d]){let p=new Set(n[d].files);for(let[f,g]of Object.entries(m))p.has(f)&&(u[f]=g)}}let l={structure:a,...Object.keys(u).length>0&&{fileSizes:u},summary:{totalFiles:e.summary.totalFiles,totalFolders:e.summary.totalFolders}};return i&&(l.resolvedBranch=i),s&&(l.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)&&(l.pagination=e.pagination),l}function eb(e){if(typeof e=="string")return{message:e};if(typeof e=="object"&&e!==null){let t=e,n=typeof t.error=="string"&&t.error.length>0?t.error:"Provider error",r=typeof t.status=="number"&&Number.isFinite(t.status)?t.status:void 0;return{message:n,status:r}}return{message:"Provider error"}}function Fr(e){let t=[];for(let n of e){if(n.status!=="error")continue;let{message:r,status:o}=eb(n.data.error),i=o!==void 0?`${r} (HTTP ${o})`:r;t.push({id:n.id,error:i})}return t}function Mr(e,t,n){let r=xr(e,[...t]);return{structuredContent:ct(e),text:r,isError:n}}function Ul(e){return typeof e=="object"&&e!==null}function De(e){return typeof e=="string"&&e.length>0?e:void 0}function Ve(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function tb(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string");return t.length>0?t:void 0}var nb=["charOffset","charLength","totalChars","nextCharOffset","nextBlockChar","nextPage","nextMatchPage","filesPerPage","totalFiles","entriesPerPage","totalEntries","matchesPerPage","totalMatches"];function rb(e){if(!Ul(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 nb){let s=e[i];typeof s=="number"&&Number.isFinite(s)&&(o[i]=s)}return o}function ob(e,t){return`${e}/${t}`}function ib(e,t,n){let r=ob(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 sb(e,t){if(!(!e||!e.hasMore||e.nextCharOffset===void 0))return{continueChars:{tool:"ghGetFileContent",query:{owner:t.owner,repo:t.repo,...t.branch!==void 0?{branch:t.branch}:{},path:t.path,charOffset:e.nextCharOffset,...e.charLength!==void 0?{charLength:e.charLength}:{},...t.minify!==void 0?{minify:t.minify}:{}}}}}function ab(e,t){let n=rb(e.pagination),r=sb(n,t);return{path:De(e.path)??String(t.path??""),content:typeof e.content=="string"?e.content:"",localPath:De(e.localPath),repoRoot:De(e.repoRoot),...Ve(e.fileSize)!==void 0?{fileSize:Ve(e.fileSize)}:{},contentView:e.contentView==="none"||e.contentView==="standard"||e.contentView==="symbols"?e.contentView:void 0,...e.isSkeleton===!0?{isSkeleton:!0}:{},totalLines:Ve(e.totalLines),sourceChars:Ve(e.sourceChars),sourceBytes:Ve(e.sourceBytes),resolvedBranch:De(e.resolvedBranch),pagination:n,...r?{next:r}:{},...e.isPartial===!0?{isPartial:!0}:{},startLine:Ve(e.startLine),endLine:Ve(e.endLine),...Array.isArray(e.matchRanges)&&e.matchRanges.length>0?{matchRanges:e.matchRanges}:{},lastModified:De(e.lastModified),lastModifiedBy:De(e.lastModifiedBy),warnings:tb(e.warnings),...e.matchNotFound===!0?{matchNotFound:!0}:{},searchedFor:De(e.searchedFor),...e.cached===!0?{cached:!0}:{}}}function cb(e,t){let r=(Array.isArray(e.files)?e.files:[]).filter(Ul).map(o=>({path:De(o.path)??"",size:Ve(o.size)??0,type:De(o.type)??"file"}));return{path:String(t.path??""),localPath:De(e.localPath)??"",repoRoot:De(e.repoRoot),fileCount:Ve(e.fileCount)??r.length,totalSize:Ve(e.totalSize)??0,...r.length>0?{files:r}:{},...e.cached===!0?{cached:!0}:{},resolvedBranch:De(e.resolvedBranch)}}function ub(e,t){let n=new Map;return e.forEach((r,o)=>{if(r.status==="error")return;let i=t[o];if(!i)return;let s=String(i.owner??""),a=String(i.repo??"");if(!s||!a)return;let c=ib(n,s,a),u=r.data;if(i.type==="directory"){let d=c.directories??[];d.push(cb(u,i)),c.directories=d;return}let l=c.files??[];l.push(ab(u,i)),c.files=l}),Array.from(n.values())}function lb(e,t){return Fr(e).map(r=>{let o=e.findIndex(s=>s.id===r.id),i=o>=0?t[o]:void 0;return{id:r.id,owner:i?.owner,repo:i?.repo,path:i?.path?String(i.path):void 0,error:r.error}})}function Bl(){return({queries:e,results:t})=>{let n=ub(t,e),r=lb(t,e),o={results:n};return r&&r.length>0&&(o.errors=r),Mr(o,["results","id","owner","repo","files","directories","path","content","totalLines","startLine","endLine","isPartial","pagination","errors"],n.length===0&&!!(r&&r.length>0))}}async function zl(e){let{queries:t,authInfo:n}=e,r=Me(n);return Y(t,async(o,i)=>{try{let s=Te(Rr,o,{prefix:!1});if(s.ok===!1)return s.error;let a=s.data,c=r();return a.type==="directory"?db(a,n,c):pb(a,n,c)}catch(s){return ye(s,o,void 0,S.GITHUB_FETCH_CONTENT)}},{toolName:S.GITHUB_FETCH_CONTENT,finalize:Bl()},e)}async function db(e,t,n){let r=ge();if(!(r.local.enabled&&r.local.enableClone))return _("Directory fetch requires local clone support. Set ENABLE_LOCAL=true and ENABLE_CLONE=true.",e);if(!kr(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",S.GITHUB_FETCH_CONTENT);if(!e.owner||!e.repo)return _("Directory fetch requires both owner and repo.",e,{rawResponse:0});let o=e.branch??await ke(e.owner,e.repo,t),i=await _l(e.owner,e.repo,String(e.path),o,t,!!e.forceRefresh),s={localPath:i.localPath,repoRoot:i.repoRoot,fileCount:i.fileCount,totalSize:i.totalSize,files:i.files,...i.cached?{cached:!0}:{},...e.branch!==i.branch?{resolvedBranch:i.branch}:{}};return he(e,s,!0,S.GITHUB_FETCH_CONTENT,{rawResponse:i.totalSize??F(i)})}async function pb(e,t,n){let r=await ut(e,()=>n.provider.getFileContent(Nl(e)));if(r.ok===!1)return r.result;let o=e.fullContent===!0&&e.minify==="none"?await mb(e,t):void 0,i={...Dl(r.response.data,e),...o?{localPath:o.localPath,repoRoot:o.repoRoot,cached:o.cached,...o.branch!==e.branch?{resolvedBranch:o.branch}:{}}:{}},s=!!(r.response.data.matchNotFound===!0||r.response.data.content&&r.response.data.content.length>0);return he(e,i,s,S.GITHUB_FETCH_CONTENT,{rawResponse:r.response.rawResponseChars})}async function mb(e,t){if(!e.owner||!e.repo||typeof e.path!="string")return;let n=e.branch??await ke(e.owner,e.repo,t);return xl(e.owner,e.repo,e.path,n,t,!!e.forceRefresh)}function fb(e){let t=e.data;return{results:Array.isArray(t?.results)?t.results:[],pagination:t?.pagination,...t?.nonExistentScope?{nonExistentScope:!0}:{},...t?.incompleteResults?{incompleteResults:!0}:{}}}function gb(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 hb(e){return[...e].sort((t,n)=>{let r=n.matches.length-t.matches.length;return r!==0?r:t.id.localeCompare(n.id)})}function yb(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,...n.queryId?{queryId:n.queryId}:{},matches:[a]})}return Array.from(t.values())}function Rb(e,t,n){return t.length===0?[]:[{id:e.length===1&&typeof e[0]?.id=="string"?e[0].id:"ghSearchCode",data:{files:yb(t),...n?{pagination:n}:{}}}]}function bb(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Sb(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${bb(a)}\\b`,"i").test(o):o.toLowerCase().includes(c))&&(i=Math.max(i,1))}return i}function Cb(e,t){let n=t.filter(o=>typeof o=="string"&&o.trim());return n.length===0?hb(e):e.map(o=>{let i=o.matches.map((s,a)=>({match:s,index:a,score:Sb(s,n)}));return i.sort((s,a)=>s.score!==a.score?a.score-s.score:s.index-a.index),{group:Tb(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 Tb(e,t){return{...e,matches:t}}function Ql(){return({queries:e,results:t})=>{let n=[],r,o=0,i=[],s=!1;t.forEach((f,g)=>{if(f.status==="error")return;let h=fb(f);h.incompleteResults&&(s=!0),h.results.reduce((C,w)=>C+w.matches.length,0)===0&&i.push({id:f.id,...h.nonExistentScope?{nonExistentScope:!0}:{},...h.incompleteResults?{incompleteResults:!0}:{}});let R=h.results;n.push({id:f.id,groups:R}),h.pagination&&(r=h.pagination,o+=1)});let a=Array.from(new Set(e.flatMap(f=>{let g=f.keywords;return Array.isArray(g)?g.filter(h=>typeof h=="string"):[]}))),c=Cb(gb(n),a),u=Fr(t),l=r&&o===1?r:void 0,d=e.some(f=>f.concise===!0),m=Rb(e,c,l);if(d)for(let f of m)f.data.files=f.data.files.map(g=>`${g.owner}/${g.repo}:${g.path}`);let p={results:m};return i.length>0&&(p.emptyQueries=i.map(({id:f,nonExistentScope:g,incompleteResults:h})=>({id:f,...g?{nonExistentScope:g}:{},...h?{incompleteResults:h}:{}}))),u.length>0&&(p.errors=u),s&&(p.warnings=[...Array.isArray(p.warnings)?p.warnings:[],"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."]),Mr(p,["results","id","data","files","path","owner","repo","queryId","matches","value","pathOnly","matchIndices","pagination","emptyQueries","nonExistentScope","incompleteResults","warnings","errors"],c.length===0&&u.length>0)}}function Pb(e){return!!((e.keywords??[]).some(n=>n.trim().length>0)||e.owner||e.path||e.extension||e.filename)}function Eb(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 $l(e){let{queries:t}=e,n=Me(e.authInfo);return Y(t,async(r,o)=>{try{let i=Eb(r);if(i)return _(i.error,r);if(!Pb(r))return _("At least one search term or scope filter is required.",r);let s=n(),a=await ut(r,()=>s.provider.searchCode(Ll(r)));if(a.ok===!1)return a.result;let c=Il(a.response.data,r);return he(r,c,c.results.length>0,S.GITHUB_SEARCH_CODE,{rawResponse:a.response.rawResponseChars})}catch(i){return ye(i,r,void 0,S.GITHUB_SEARCH_CODE)}},{toolName:S.GITHUB_SEARCH_CODE,finalize:Ql()},e)}function wb(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 _b(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 xb(e,t){let n=e?.commits;return n?{list:n.list??!0,includeFiles:n.includeFiles??!1}:t==="full"?{list:!0,includeFiles:!1}:!1}function jl(e){let{content:t,reviewMode:n}=e,r=wb(t,n),o=_b(t,n),i=xb(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 Fi(e){let t=e.matchString;if(typeof t!="string")return;let n=t.trim().toLowerCase();return n.length>0?n:void 0}function Dr(e,t){return typeof e=="string"&&e.toLowerCase().includes(t)}function Mi(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 Gr(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 Wl(e,t=500){if(!(typeof e!="string"||e.length===0))return e.length<=t?e:`${e.slice(0,t-3)}...`}function Kl(e,t){return{owner:e.owner,repo:e.repo,prNumber:t}}function Ab(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function Hr(e,t,n){return Ab({...Kl(e,t),...n})}function Vl(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 ki(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 Lb(e,t,n){return{target:Kl(e,t),...n.body?{}:{getBody:{content:{body:!0}}},...n.changedFiles?{}:{getChangedFiles:{content:{changedFiles:!0}}},...n.patches.mode!=="none"?{}:{getSelectedPatches:{content:{patches:{mode:"selected",files:["path/from/changedFiles"]}}},getAllPatches:{content:{patches:{mode:"all"}}}},...n.comments?{}:{getComments:{content:{comments:{discussion:!0,reviewInline:!0}}}},...n.reviews?{}:{getReviews:{content:{reviews:!0}}},...n.commits?{}:{getCommits:{content:{commits:{list:!0}}}},...n.reviewMode==="full"?{}:{fullReview:{reviewMode:"full"}}}}function Nr(e){return String(e.path??e.filename??"")}function Ob(e,t){return{path:Nr(e),status:String(e.status??""),additions:Number(e.additions??0),deletions:Number(e.deletions??0),...t&&typeof e.patch=="string"?{patch:e.patch}:{}}}function Ib(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 kb(e,t,n){if(!n.comments)return{};let r=Array.isArray(e.comments)?e.comments:[],o=Ib(r,n.comments),i=Fi(t),s=i?o.filter(u=>Dr(u.body,i)):o,{items:a,pagination:c}=Mi(s,t.commentPage??t.page??1,t.itemsPerPage??20);return{comments:a.map(u=>{let l=Gr(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:Wl(typeof u.body=="string"?u.body:"")},createdAt:u.createdAt,updatedAt:u.updatedAt}}),commentPagination:c}}function vb(e,t,n){if(!n.reviews)return{};let r=Array.isArray(e.reviews)?e.reviews:[],o=Fi(t);return{reviews:(o?r.filter(s=>Dr(s.body,o)):r).map(s=>{let a=typeof s.body=="string"?s.body:"",c=Gr(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 Fb(e,t,n){if(!n.commits)return{};let r=Array.isArray(e.commits)?e.commits:[],{items:o,pagination:i}=Mi(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 Mb(e){return e.split(`
27
+ `)}async function fg(e,t){let n=await tl(lE(e,t));if(!n.success)return n;let o=(!t&&n.commandUsed?dE(n.stdout,n.commandUsed):n.stdout).split(`
28
+ `).map(i=>i.trim()).filter(Boolean);return{...n,entries:o}}async function mg(e,t){return tl(uE(e,t))}function pE(e,t){let n={command:"tar",args:["-xf",e,"-C",t]},r={command:"unzip",args:["-o","-q",e,"-d",t]},o={command:"bsdtar",args:["-xf",e,"-C",t]},i=["x",`-o${t}`,"-y","-bd","--",e],s={command:"7z",args:i},a={command:"7zz",args:i},c={command:"aa",args:["extract","-i",e,"-d",t]};return ut(pg,e)?[c]:ut(el,e)?[s,a,o,n,r]:ut(Zc,e)?[o,s,a,n,r]:ut(Jc,e)?[n,o,s,a,r]:[r,n,o,s,a]}async function gg(e,t){return tl(pE(e,t))}var Jc,Zc,el,pg,hg=y(()=>{"use strict";Xc();Jc=[".tar",".tar.gz",".tgz",".tar.bz2",".tbz2",".tbz",".tar.xz",".txz",".tar.zst",".tzst"],Zc=[".7z",".iso",".cab",".cpio",".xar",".pkg",".ar",".deb",".lha",".lzh"],el=[".dmg",".rar",".cpgz"],pg=[".aar",".yaa"]});function hE(e){let t=e.toLowerCase();for(let{ext:n,format:r}of mE)if(t.endsWith(n))return r}async function yE(e){let t=await $n("file",["--mime-type","-b",e]);if(t.success)return gE[t.stdout.trim().toLowerCase()]}async function bE(e,t){let n=[{command:e.command,args:e.args(t)},...e.fallback?[{command:e.fallback.command,args:e.fallback.args(t)}]:[]];for(let i of n){let s=await $n(i.command,i.args);if(s.success)return{success:!0,stdout:s.stdout,stderr:s.stderr,commandUsed:i.command}}let r=n[n.length-1];return{success:!1,stdout:"",stderr:(await $n(r.command,r.args)).stderr,commandUsed:r.command}}async function yg(e,t){let n;if(t!=="auto"?n=t:n=hE(e)??await yE(e),!n)return{success:!1,error:"Could not detect compression format from extension or mime-type. Set format: gzip|bzip2|xz|lzma|zstd|lz4|brotli|lzfse explicitly."};let r=fE[n],o=await bE(r,e);return o.success?{success:!0,format:n,backend:o.commandUsed,content:o.stdout}:{success:!1,format:n,backend:o.commandUsed,error:o.stderr||`${o.commandUsed} failed`}}var fE,mE,gE,bg=y(()=>{"use strict";Xc();fE={gzip:{command:"zcat",args:e=>[e],fallback:{command:"gunzip",args:e=>["-c",e]}},bzip2:{command:"bzcat",args:e=>[e]},xz:{command:"xzcat",args:e=>[e]},lzma:{command:"xzcat",args:e=>["--format=lzma",e]},zstd:{command:"zstdcat",args:e=>[e],fallback:{command:"zstd",args:e=>["-dcq",e]}},lz4:{command:"lz4cat",args:e=>[e]},brotli:{command:"brotli",args:e=>["-dc",e]},lzfse:{command:"lzfse",args:e=>["-decode","-i",e,"-o","/dev/stdout"]}},mE=[{ext:".gz",format:"gzip"},{ext:".bz2",format:"bzip2"},{ext:".xz",format:"xz"},{ext:".lzma",format:"lzma"},{ext:".zst",format:"zstd"},{ext:".zstd",format:"zstd"},{ext:".lz4",format:"lz4"},{ext:".br",format:"brotli"},{ext:".lzfse",format:"lzfse"}],gE={"application/gzip":"gzip","application/x-gzip":"gzip","application/x-bzip2":"bzip2","application/x-bzip":"bzip2","application/x-xz":"xz","application/x-lzma":"lzma","application/zstd":"zstd","application/x-zstd":"zstd","application/x-lz4":"lz4","application/x-brotli":"brotli","application/x-lzfse":"lzfse"}});function Rg(e){try{return{success:!0,info:M.inspectBinaryNative(e)}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}function Sg(e,t,n,r=0){try{let o=M.extractBinaryStringsNative(e,t,n,r);return{success:!0,strings:o.strings,totalFound:o.totalFound,truncated:o.truncated,nextScanOffset:o.nextScanOffset}}catch(o){return{success:!1,error:o instanceof Error?o.message:String(o)}}}var Cg=y(()=>{"use strict";ge()});import{promises as jn}from"fs";import{join as nl,basename as Ki,dirname as RE,resolve as Pg,sep as SE}from"node:path";import{securityRegistry as CE}from"@octocodeai/octocode-engine/registry";function xg(e=new Date){return e.toISOString().replace(/[:.]/g,"-")}function xE(e){return nl(Le.unzip,`${Ki(e)}-${xg()}`)}function TE(e,t){return nl(Le.binary,`${Ki(e)}-${t}-${xg()}`)}function EE(e){return e.replace(/\\/g,"/").split("/").filter(n=>n&&n!=="."&&n!=="..").join("/")||"content.txt"}async function rl(e,t,n,r){let o=Pg(TE(e,t)),i=Pg(nl(o,EE(n)));if(!i.startsWith(o+SE)&&i!==o)throw new Error("Derived binary output path escaped its tmp directory.");return await jn.mkdir(RE(i),{recursive:!0}),await jn.writeFile(i,r,"utf-8"),i}function OE(){if(!wg){try{CE.addAllowedCommands(kE)}catch{}wg=!0}}function ol(e,t,n){let r=M.extractMatchingLines(e,t,{isRegex:!0,caseSensitive:!1,contextLines:n});return r.lines.length>0?r.lines.join(`
29
+ `):null}function il(e,t,n,r){let s=Un(e,t??0,n??r),a=s.hasMore||s.totalPages>1?{currentPage:s.currentPage,totalPages:s.totalPages,hasMore:s.hasMore,charOffset:s.charOffset,charLength:s.charLength,totalChars:s.totalChars,...s.hasMore&&s.nextCharOffset!==void 0?{nextCharOffset:s.nextCharOffset}:{}}:void 0;return{content:s.paginatedContent,isPartial:s.hasMore,pagination:a}}function LE(e,t){let n=Rg(e);if(!n.success||!n.info)return F(n.error??"inspect failed",t);let r=n.info,o=t.detailed??!1;return{status:"success",mode:"inspect",path:e,format:r.format,description:r.description,magicBytes:r.magicHex,...r.arch?{arch:r.arch}:{},...r.bits?{bits:r.bits}:{},...r.endianness?{endianness:r.endianness}:{},...r.stripped!==void 0?{stripped:r.stripped}:{},...r.entry?{entry:r.entry}:{},symbolCount:r.symbolCount,importCount:r.importCount,exportCount:r.exportCount,...o&&r.symbols.length?{symbols:r.symbols}:{},...o&&r.imports.length?{imports:r.imports}:{},...o&&r.exports.length?{exports:r.exports}:{},...o&&r.sections.length?{sections:r.sections}:{},...r.libraries.length?{libraries:r.libraries}:{},...o?{detailed:!0}:{},...r.truncated?{truncated:!0}:{},...r.notes.length?{warnings:r.notes}:{}}}async function _E(e,t){let n=t.verbose??!1,r=await fg(e,n);if(!r.success)return F(r.stderr||"All archive backends failed",t);let o=r.entries??[],i=Math.min(t.maxEntries??vE,o.length),s=o.slice(0,i),a=t.entriesPerPage,c=t.entryPageNumber??1,l=a?s.slice((c-1)*a,c*a):s,u=a?Math.ceil(s.length/a):1,d=a?c<u:!1;return{status:"success",mode:"list",path:e,backend:r.commandUsed,totalEntries:o.length,entries:l,...a&&{pagination:{currentPage:c,totalPages:u,hasMore:d,entriesPerPage:a,totalEntries:s.length}}}}async function IE(e,t){let n=t.archiveFile,r=await mg(e,n);if(!r.success)return F(r.stderr||"Extraction failed",t);let o=r.stdout;if(!o)return F("Entry is empty",t);let i=await rl(e,"extract",n,o);if(t.matchString){let c=ol(o,t.matchString,t.matchStringContextLines??3);if(!c)return F(`No lines match "${t.matchString}" in the extracted entry`,t);o=c}let s=Ze(),a=il(o,t.charOffset,t.charLength,s);return{status:"success",mode:"extract",path:e,archiveFile:n,backend:r.commandUsed,localPath:i,content:a.content,contentLength:o.length,isPartial:a.isPartial,...a.pagination?{pagination:a.pagination}:{}}}async function FE(e,t){let n=await yg(e,t.format??"auto");if(!n.success)return F(n.error??"Decompression failed",t);let r=n.content??"";if(!r)return F("Decompressed file is empty",t);let o=await rl(e,"decompress",`${Ki(e)}.decompressed.txt`,r);if(t.matchString){let a=ol(r,t.matchString,t.matchStringContextLines??3);if(!a)return F(`No lines match "${t.matchString}" in the decompressed content`,t);r=a}let i=Ze(),s=il(r,t.charOffset,t.charLength,i);return{status:"success",mode:"decompress",path:e,format:n.format,backend:n.backend,localPath:o,content:s.content,contentLength:r.length,isPartial:s.isPartial,...s.pagination?{pagination:s.pagination}:{}}}async function ME(e,t){let n=t.minLength??AE,r=t.includeOffsets??!1,o=t.scanOffset??0,i=Sg(e,n,r,o);if(!i.success)return F(i.error??"strings extraction failed",t);let s=(i.strings??[]).join(`
30
+ `),a=s?await rl(e,"strings",`${Ki(e)}.strings.txt`,s):void 0;if(t.matchString){let d=ol(s,t.matchString,t.matchStringContextLines??3);if(!d)return F(`No lines match "${t.matchString}" in extracted strings`,t);s=d}let l=!!a&&t.charOffset===void 0&&t.charLength===void 0&&!t.matchString?Math.min(wE,Ze()):Ze(),u=il(s,t.charOffset,t.charLength,l);return{status:"success",mode:"strings",path:e,content:u.content,...a?{localPath:a}:{},contentLength:s.length,totalFound:i.totalFound??0,isPartial:u.isPartial,...u.pagination?{pagination:u.pagination}:{},scanOffset:o,...i.nextScanOffset!==void 0?{nextScanOffset:i.nextScanOffset}:{}}}async function DE(e,t){try{await jn.stat(e)}catch{return F(`File not found: ${e}`,t)}let n=xE(e);await jn.mkdir(n,{recursive:!0});let r=await gg(e,n);if(!r.success)return F(`Unpack failed: ${r.stderr||"no backend could extract this archive"}`,t);let o=0;try{o=(await jn.readdir(n)).length}catch{}return{status:"success",mode:"unpack",path:e,localPath:n,cached:!1,topLevelEntries:o}}async function Tg(e){OE();let t=qe(e,PE);if(!t.isValid)return t.errorResult;let n=t.sanitizedPath;try{if(!(await jn.stat(n)).isFile())return F(`Path is not a regular file: ${n}`,e)}catch{return F(`File not found: ${n}`,e)}switch(e.mode){case"inspect":return LE(n,e);case"list":return _E(n,e);case"extract":return IE(n,e);case"decompress":return FE(n,e);case"strings":return ME(n,e);case"unpack":return DE(n,e);default:return F(`Unknown mode: ${String(e.mode)}`,e)}}var PE,wE,kE,wg,vE,AE,Eg=y(()=>{"use strict";pe();Fn();wt();ge();ki();zr();hg();bg();Cg();PE=A.LOCAL_BINARY_INSPECT,wE=4e3;kE=["file","unzip","tar","bsdtar","7z","7zz","aa","zcat","gunzip","bzcat","xzcat","zstdcat","zstd","lz4cat","brotli","lzfse"],wg=!1;vE=1e3,AE=8});async function kg(e){let{queries:t}=e;return re(t||[],async n=>je({toolName:A.LOCAL_BINARY_INSPECT,query:n,contextMessage:"localBinaryInspect execution failed",execute:async()=>{let r=Fe(On,n);if(r.ok===!1)return r.error;let o=await Tg(r.data),i=o,s=typeof i.content=="string"?i.content.length:typeof i.strings=="object"&&i.strings!==null?JSON.stringify(i.strings).length:0;return U(o,s),o}}),{toolName:A.LOCAL_BINARY_INSPECT},e)}var Og=y(()=>{"use strict";Jo();pe();$e();Me();ie();Ht();Eg()});function sl(e){return e.data!==void 0&&!e.error}var vg=y(()=>{"use strict"});import{maskSensitiveData as Ag}from"@octocodeai/octocode-engine/mask";function NE(){return uc().provider??lc()}function GE(e){let t=uc(),n=t.provider??lc(),{baseUrl:r,token:o}=t;try{let i=Bc(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=Ag(s);throw new al(n,`Failed to initialize ${n} provider: ${a}`)}}function tt(e){let t;return()=>t??=GE(e)}function Yi(e,t){return e.capabilities[t]}async function zt(e,t){let n=await t();return sl(n)?{ok:!0,response:n}:{ok:!1,result:$i(n,e)}}async function Lg(e,t){let n=t??NE(),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:Ag(c),status:500,provider:n}}}})),o=[],i=[];for(let s of r)sl(s.response)?o.push({meta:s.meta,response:s.response}):i.push({meta:s.meta,response:s.response});return{successes:o,failures:i}}var al,cn=y(()=>{"use strict";Qc();vg();_r();Me();al=class extends Error{providerType;constructor(t,n){super(n),this.name="ProviderInitializationError",this.providerType=t}}});import{existsSync as Jr,readFileSync as HE,writeFileSync as zE,mkdirSync as BE,rmSync as Xr,readdirSync as QE,statSync as UE}from"node:fs";import{join as nt}from"node:path";import{createHash as $E}from"node:crypto";function Fg(e){return nt(e,"tmp","clone")}function Mg(e){return nt(e,"tmp","tree")}function WE(e){return e?`__sp_${$E("sha256").update(e).digest("hex").substring(0,6)}`:""}function Dg(e,t,n,r,o){let i=`${r}${WE(o)}`;return nt(Fg(e),t,n,i)}function cl(e,t,n,r){return nt(Mg(e),t,n,r)}function KE(e){return typeof e=="object"&&e!==null}function YE(e){if(!KE(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 ll(e){let t=nt(e,Ig);if(!Jr(t))return null;try{return YE(JSON.parse(HE(t,"utf-8")))}catch{return null}}function Zr(e,t){try{zE(nt(e,Ig),JSON.stringify(t,null,2),"utf-8")}catch{}}function Ng(e){return Date.now()<new Date(e.expiresAt).getTime()}function eo(e){let t=ll(e);return t?Ng(t)?Jr(e)?{hit:!0,meta:t}:{hit:!1}:{hit:!1}:{hit:!1}}function XE(){let e=process.env.OCTOCODE_CACHE_TTL_MS;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return jE}function JE(){let e=process.env.OCTOCODE_MAX_CACHE_SIZE;if(e!=null){let t=Number(e);if(!Number.isNaN(t)&&t>0)return t}return qE}function ZE(){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 VE}function to(e,t,n,r,o,i,s){let a=new Date;return{clonedAt:a.toISOString(),expiresAt:new Date(a.getTime()+XE()).toISOString(),owner:e,repo:t,branch:n,source:r,...o?{sparsePath:o}:{},...i!=null?{sizeBytes:i}:{},...s?{commitSha:s}:{}}}function un(e){let t=nt(e,"..");try{Jr(t)||BE(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 Xi(e){try{Jr(e)&&Xr(e,{recursive:!0,force:!0})}catch{}}function Yr(e){try{return UE(e).isDirectory()}catch{return!1}}function ln(e){try{return QE(e)}catch{return[]}}function*Gg(e){for(let t of ln(e)){let n=nt(e,t);if(Yr(n))for(let r of ln(n)){let o=nt(n,r);if(Yr(o))for(let i of ln(o)){let s=nt(o,i);Yr(s)&&(yield s)}}}}function _g(e){for(let t of[...ln(e)]){let n=nt(e,t);if(Yr(n)){for(let r of[...ln(n)]){let o=nt(n,r);if(Yr(o)&&ln(o).length===0)try{Xr(o,{recursive:!0,force:!0})}catch{}}if(ln(n).length===0)try{Xr(n,{recursive:!0,force:!0})}catch{}}}}function ek(e){let t=0;for(let n of Gg(e))try{let r=ll(n);(!r||!Ng(r))&&(Xr(n,{recursive:!0,force:!0}),t++)}catch{}return t}function tk(e){let t=[];for(let n of Gg(e)){let r=ll(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??yi(n)})}return t}function nk(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{Xr(s.branchDir,{recursive:!0,force:!0}),i++,r-=s.sizeBytes,o-=1}catch{}}return i}function Hg(e){if(!Jr(e))return 0;let t=0;try{t+=ek(e)}catch{return t}_g(e);let n=nk(tk(e),JE(),ZE());return t+=n,n>0&&_g(e),t}function zg(e){return Hg(Fg(e))}function ul(e){return Hg(Mg(e))}var jE,s1,qE,VE,Ig,dl=y(()=>{"use strict";_e();jE=1440*60*1e3,s1=600*1e3,qE=2*1024*1024*1024,VE=50,Ig=".octocode-clone-meta.json"});import{existsSync as rk,mkdirSync as pl,renameSync as ok,rmSync as ik}from"fs";import{join as no}from"path";import{createHash as sk}from"crypto";async function $g(e,t,n){let r=e.owner,o=e.repo,{sparsePath:i,forceRefresh:s}=e;await Rk();let a=e.branch??await Ye(r,o,t),c=Nn(),l=Dg(c,r,o,a,i);return dk(c,l,async()=>{let u=eo(l);if(!s&&u.hit&&u.meta.source==="clone")return{localPath:l,cached:!0,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}};zg(c),un(l);let d=bk(t,n),p=fk(c,l);Xi(p);try{if(i){if(await yk(r,o,a,p,i,d),!rk(no(p,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 hk(r,o,a,p,d);let f=to(r,o,a,"clone",i);return Zr(p,f),mk(p,l),{localPath:l,cached:!1,owner:r,repo:o,branch:a,...i?{sparsePath:i}:{}}}catch(f){throw Xi(p),f}})}async function dk(e,t,n){un(t);let r=pk(e,t);pl(no(e,"tmp",Qg),{recursive:!0,mode:448});let o=Date.now();for(;;)try{pl(r,{mode:448});break}catch(i){if(i.code!=="EEXIST")throw i;if(Date.now()-o>ck)throw new Error(`Timed out waiting for clone cache lock '${r}'.`);await gk(lk)}try{return await n()}finally{ik(r,{recursive:!0,force:!0})}}function jg(e){return sk("sha256").update(e).digest("hex").slice(0,16)}function pk(e,t){return no(e,"tmp",Qg,jg(t))}function fk(e,t){let n=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,r=no(e,"tmp",uk);return pl(r,{recursive:!0,mode:448}),no(r,`${jg(t)}-${n}`)}function mk(e,t){Xi(t),un(t),ok(e,t)}function gk(e){return new Promise(t=>setTimeout(t,e))}async function hk(e,t,n,r,o){let i=Vg(o);i.push("clone","--depth","1","--single-branch","--branch",n,"--",qg(e,t),r),await fl(i,Bg,`full clone of ${e}/${t}`,o)}async function yk(e,t,n,r,o,i){let s=Vg(i);s.push("clone","--filter","blob:none","--sparse","--depth","1","--single-branch","--branch",n,"--",qg(e,t),r),await fl(s,Bg,`sparse clone of ${e}/${t}`,i),await fl(["-C",r,"sparse-checkout","set","--skip-checks","--",o],ak,`sparse-checkout set ${o}`,void 0)}function qg(e,t){return`https://github.com/${e}/${t}.git`}function Vg(e){return e?["-c",`http.extraHeader=Authorization: Bearer ${e}`]:[]}function bk(e,t){return e?.token&&typeof e.token=="string"?e.token:t}async function Rk(){try{if(!(await an("git",["--version"],{timeout:5e3,maxOutputSize:1024,allowEnvVars:Ug,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 Sk(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 fl(e,t,n,r){let o=await an("git",e,{timeout:t,maxOutputSize:5242880,allowEnvVars:Ug,env:{GIT_TERMINAL_PROMPT:"0"}});if(!o.success){let i=Sk(o.stderr?.trim()||"",r),s=i?`: ${i}`:"";throw new Error(`git ${n} failed${s}`)}}var Bg,ak,ck,lk,Qg,uk,Ug,Wg=y(()=>{"use strict";_e();Be();Wi();dl();Bg=120*1e3,ak=30*1e3,ck=300*1e3,lk=100,Qg="clone-locks",uk="clone-tmp",Ug=[...qi,"GIT_TERMINAL_PROMPT"]});async function Kg(e){let{queries:t,authInfo:n}=e,r=tt(n);return re(t,async(o,i)=>je({toolName:A.GITHUB_CLONE_REPO,query:o,contextMessage:`Clone failed for ${o.owner}/${o.repo}`,execute:async()=>{let s=r();if(!Yi(s,"cloneRepo"))return ve(new Error("ghCloneRepo is only available with the GitHub provider."),o,"Provider not supported",A.GITHUB_CLONE_REPO);let a;try{a=await $g(o,n,s.token)}catch(p){let f=p instanceof Error?p.message:String(p);return F(`Clone failed for ${o.owner}/${o.repo}: ${f}`,o)}let c=yi(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={localSearch:{tool:"localSearchCode",query:{path:a.localPath,mode:"discovery"}},viewStructure:{tool:"localViewStructure",query:{path:a.localPath}}},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 Oe(o,d,!0,A.GITHUB_CLONE_REPO,{rawResponse:c})}}),{toolName:A.GITHUB_CLONE_REPO,keysPriority:["localPath","resolvedBranch","cached","sparsePath","totalSize","fileCount","location","error"]},e)}var Yg=y(()=>{"use strict";_e();pe();$e();Me();Ht();cn();Wg()});import{writeFileSync as eh,mkdirSync as ml,existsSync as ro,rmSync as Ck,readdirSync as Pk,statSync as th}from"node:fs";import{join as Ji,dirname as nh,resolve as gl,sep as hl}from"node:path";function Jg(){return{nonFile:0,missingDownloadUrl:0,oversized:0,binary:0,fileLimit:0,fetchFailed:0,totalSizeLimit:0,pathTraversal:0}}function Ek(e){return Object.values(e).every(t=>t===0)}function Zg(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 ih(e,t,n,r,o,i=!1){let s=Nn(),a=cl(s,e,t,r),c=gl(Ji(a,n));if(!c.startsWith(a+hl)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let l=eo(a);if(l.hit&&!i&&ro(c)){let v=Ak(c,a),D=Jg();return{localPath:c,repoRoot:a,files:v.files,fileCount:v.fileCount,totalSize:v.totalSize,complete:!0,verified:!1,...l.meta.commitSha?{commitSha:l.meta.commitSha}:{},directoryEntryCount:v.fileCount,eligibleFileCount:v.fileCount,savedFileCount:v.fileCount,skipped:D,limits:Xg,warnings:Zg(!0,!1),cached:!0,expiresAt:l.meta.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}let u=await ue(o),d;try{d=(await u.rest.repos.getBranch({owner:e,repo:t,branch:r})).data.commit.sha}catch{}let{data:p}=await u.rest.repos.getContent({owner:e,repo:t,path:n,ref:r});if(!Array.isArray(p))throw new Error(`Path "${n}" is not a directory. Use type "file" to fetch file content.`);let f=p,m=Jg(),g=[];for(let v of f){if(v.type!=="file"){m.nonFile+=1;continue}if(!v.download_url){m.missingDownloadUrl+=1;continue}if(v.size>oh){m.oversized+=1;continue}let D=Rf(v.name,{lowercase:!0,leadingDot:!0});if(Tk.has(D)){m.binary+=1;continue}g.push(v)}m.fileLimit=Math.max(0,g.length-yl);let b=g.slice(0,yl),S=o?.token,C=await kk(b,wk,S);m.fetchFailed=b.length-C.length;let k=0,_=[];for(let v=0;v<C.length;v+=1){let{entry:D,content:B}=C[v];if(k+B.length>rh){m.totalSizeLimit=C.length-v;break}k+=B.length,_.push({entry:D,content:B})}ul(s),un(a),ro(c)&&Ck(c,{recursive:!0,force:!0}),ml(c,{recursive:!0,mode:448});let E=[];for(let{entry:v,content:D}of _){let B=gl(Ji(a,v.path));if(!B.startsWith(a+hl)){m.pathTraversal+=1;continue}let Z=nh(B);ro(Z)||ml(Z,{recursive:!0,mode:448}),eh(B,D,"utf-8"),E.push({path:v.path,size:D.length,type:"file"})}let O=to(e,t,r,"treeFetch",void 0,void 0,d);Zr(a,O);let x=Ek(m),H=x,I=m.nonFile>0;return{localPath:c,repoRoot:a,files:E,fileCount:E.length,totalSize:k,complete:x,verified:H,...d?{commitSha:d}:{},...I?{hasSubdirectories:!0}:{},directoryEntryCount:f.length,eligibleFileCount:g.length,savedFileCount:E.length,skipped:m,limits:Xg,warnings:Zg(x,H),cached:!1,expiresAt:O.expiresAt,owner:e,repo:t,branch:r,directoryPath:n}}async function sh(e,t,n,r,o,i=!1){let s=Nn(),a=cl(s,e,t,r),c=gl(Ji(a,n));if(!c.startsWith(a+hl)&&c!==a)throw new Error(`Path "${n}" escapes the repository directory. Path traversal is not allowed.`);let l=eo(a);if(!i&&l.hit&&ro(c))return{localPath:c,repoRoot:a,path:n,size:Lk(c),cached:!0,expiresAt:l.meta.expiresAt,owner:e,repo:t,branch:r};let u=await Ei({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 m="error"in u?u.error:void 0;throw new Error(m||`Failed to fetch ${e}/${t}/${n}`)}ul(s),un(a);let d=nh(c);ro(d)||ml(d,{recursive:!0,mode:448}),eh(c,u.data.rawContent,"utf-8");let p=u.data.branch||r,f=to(e,t,p,"treeFetch");return Zr(a,f),{localPath:c,repoRoot:a,path:n,size:u.data.rawContent.length,cached:!1,expiresAt:f.expiresAt,owner:e,repo:t,branch:p}}async function kk(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 vk(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 vk(e,t){try{let o=new URL(e);if(!Ok.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(),xk);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 Ak(e,t){let n=[],r=0;function o(i){let s;try{s=Pk(i)}catch{return}for(let a of s){if(a.startsWith("."))continue;let c=Ji(i,a);try{let l=th(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 Lk(e){try{return th(e).size}catch{return 0}}var yl,rh,oh,wk,xk,Tk,Xg,Ok,ah=y(()=>{"use strict";_e();Be();Ec();dl();Hr();yl=50,rh=5*1024*1024,oh=300*1024,wk=5,xk=1e4,Tk=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"]),Xg={maxDirectoryFiles:yl,maxTotalSize:rh,maxFileSize:oh};Ok=new Set(["raw.githubusercontent.com","objects.githubusercontent.com","github.com"])});function Ik(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 ch(e,t){return e&&t?`${e}/${t}`:void 0}function lh(e){return{keywords:e.keywords??[],projectId:ch(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 uh(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 Fk(e){let t=e.lastIndexOf("/");return t<=0?{owner:"",repo:e}:{owner:e.substring(0,t),repo:e.substring(t+1)}}function dh(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}=Fk(a),u=`${c}/${l}`,d=s,p=o.get(u);if(p||(p={id:u,owner:c,repo:l,matches:[]},o.set(u,p)),n||!s.matches?.length){p.matches.push({path:s.path,...n?{}:{pathOnly:!0},...r&&d.url?{url:d.url}:{}});continue}let f=!0,m=!1;for(let g of s.matches){if(!g.context)continue;let b={path:s.path,value:Ik(g.context)};g.positions?.length>0&&(b.matchIndices=g.positions.map(([S,C])=>({start:S,end:C,lineOffset:(g.context??"").substring(0,S).split(`
31
+ `).length-1}))),r&&f&&d.url&&(b.url=d.url,f=!1),p.matches.push(b),m=!0}m||p.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,...uh(e.pagination),hasMore:e.pagination.hasMore,...e.pagination.hasMore?{nextPage:e.pagination.currentPage+1}:{}}),i}function ph(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 fh(e){let t=n=>{let r=n.lastIndexOf("/");return r<=0?{owner:"",repo:n}:{owner:n.substring(0,r),repo:n.substring(r+1)}};return e.map(n=>{let{owner:r,repo:o}=t(n.fullPath);return{owner:r||"",repo:o||n.name,defaultBranch:n.defaultBranch,stars:n.stars,description:n.description||"",url:n.url,createdAt:n.createdAt,updatedAt:n.updatedAt,pushedAt:n.lastActivityAt,visibility:n.visibility,topics:n.topics,forksCount:n.forks,openIssuesCount:n.openIssuesCount,...n.language&&{language:n.language}}})}function Mk(e){return e.startsWith('"')?e:/\s/.test(e)?`"${e.replace(/"/g,'\\"')}"`:e}function mh(e){let t=(e.keywordsToSearch??[]).filter(o=>o.trim()).map(Mk),n=e.query?.trim()??"",r=[...t,...n?[n]:[]].join(" ")||void 0;return{projectId:ch(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 Dk(e){return e?{capped:e,totalCount:e.length,wasTruncated:!1}:{capped:void 0,totalCount:0,wasTruncated:!1}}function Nk(e){let t=e.map(r=>r.body.toLowerCase()),n=[];return t.some(r=>/\b(lgtm|looks good|approved|ship it)\b/.test(r))&&n.push("approval"),t.some(r=>/\b(change|fix|concern|blocker|blocking|request changes?)\b/.test(r))&&n.push("changes-requested"),t.some(r=>r.includes("?"))&&n.push("question"),n.length>0?n:["discussion"]}function Gk(e){if(!e||e.length===0)return;let t=Array.from(new Set(e.map(o=>o.author))),n=e.map(o=>o.updatedAt||o.createdAt).filter(Boolean).sort().at(-1),r=e.filter(o=>o.commentType==="review_inline").length;return{totalComments:e.length,inlineComments:r,discussionComments:e.length-r,commenters:t.slice(0,8),...n?{latestCommentAt:n}:{},themes:Nk(e)}}function gh(e,t={}){let{includeFileChanges:n=!0}=t,r=e.items.map(i=>{let{capped:s,totalCount:a}=Dk(i.fileChanges),c=Array.isArray(i.comments)?i.comments:void 0,l=Gk(c);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}:{},...uh(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}}function hh(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 yh(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.isSkeleton===!0&&{isSkeleton:!0},...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}:{}}}function bh(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 Rh(e,t,n,r){let o=r,i=e.branch??r,s=o&&i&&o!==i&&o!=="HEAD",a=Object.entries(n).sort(([d],[p])=>d==="."?-1:p==="."?1:d.localeCompare(p)).map(([d,p])=>({dir:d,files:p.files,folders:p.folders})),c=e.fileSizeMap,l={};if(c){for(let[d,p]of Object.entries(c))if(n[d]){let f=new Set(n[d].files);for(let[m,g]of Object.entries(p))f.has(m)&&(l[m]=g)}}let u={structure:a,...Object.keys(l).length>0&&{fileSizes:l},summary:{totalFiles:e.summary.totalFiles,totalFolders:e.summary.totalFolders}};return i&&(u.resolvedBranch=i),s&&(u.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)&&(u.pagination=e.pagination),u}var qn=y(()=>{"use strict";fe();Hi()});function Hk(e){if(typeof e=="string")return{message:e};if(typeof e=="object"&&e!==null){let t=e,n=typeof t.error=="string"&&t.error.length>0?t.error:"Provider error",r=typeof t.status=="number"&&Number.isFinite(t.status)?t.status:void 0;return{message:n,status:r}}return{message:"Provider error"}}function Zi(e){let t=[];for(let n of e){if(n.status!=="error")continue;let{message:r,status:o}=Hk(n.data.error),i=o!==void 0?`${r} (HTTP ${o})`:r;t.push({id:n.id,error:i})}return t}function es(e,t,n){let r=Ui(e,[...t]);return{structuredContent:Gt(e),text:r,isError:n}}var bl=y(()=>{"use strict";Vr()});function ts(e){return typeof e=="object"&&e!==null}function rt(e){return typeof e=="string"&&e.length>0?e:void 0}function Ve(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function Sh(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string");return t.length>0?t:void 0}function dt(e,t){return Ve(e[t])??0}function zk(e){if(ts(e))return{nonFile:dt(e,"nonFile"),missingDownloadUrl:dt(e,"missingDownloadUrl"),oversized:dt(e,"oversized"),binary:dt(e,"binary"),fileLimit:dt(e,"fileLimit"),fetchFailed:dt(e,"fetchFailed"),totalSizeLimit:dt(e,"totalSizeLimit"),pathTraversal:dt(e,"pathTraversal")}}function Bk(e){if(ts(e))return{maxDirectoryFiles:dt(e,"maxDirectoryFiles"),maxTotalSize:dt(e,"maxTotalSize"),maxFileSize:dt(e,"maxFileSize")}}function Uk(e){if(!ts(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 Qk){let s=e[i];typeof s=="number"&&Number.isFinite(s)&&(o[i]=s)}return o}function $k(e,t){return`${e}/${t}`}function jk(e,t,n){let r=$k(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 qk(e,t){if(!(!e||!e.hasMore||e.nextCharOffset===void 0))return{continueChars:{tool:"ghGetFileContent",query:{owner:t.owner,repo:t.repo,...t.branch!==void 0?{branch:t.branch}:{},path:t.path,charOffset:e.nextCharOffset,...e.charLength!==void 0?{charLength:e.charLength}:{},...t.minify!==void 0?{minify:t.minify}:{}}}}}function Vk(e,t){let n=Uk(e.pagination),r=qk(n,t);return{path:rt(e.path)??String(t.path??""),content:typeof e.content=="string"?e.content:"",localPath:rt(e.localPath),repoRoot:rt(e.repoRoot),...Ve(e.fileSize)!==void 0?{fileSize:Ve(e.fileSize)}:{},contentView:e.contentView==="none"||e.contentView==="standard"||e.contentView==="symbols"?e.contentView:void 0,...e.isSkeleton===!0?{isSkeleton:!0}:{},totalLines:Ve(e.totalLines),sourceChars:Ve(e.sourceChars),sourceBytes:Ve(e.sourceBytes),resolvedBranch:rt(e.resolvedBranch),pagination:n,...r?{next:r}:{},...e.isPartial===!0?{isPartial:!0}:{},startLine:Ve(e.startLine),endLine:Ve(e.endLine),...Array.isArray(e.matchRanges)&&e.matchRanges.length>0?{matchRanges:e.matchRanges}:{},lastModified:rt(e.lastModified),lastModifiedBy:rt(e.lastModifiedBy),warnings:Sh(e.warnings),...e.matchNotFound===!0?{matchNotFound:!0}:{},searchedFor:rt(e.searchedFor),...e.cached===!0?{cached:!0}:{}}}function Wk(e,t){let r=(Array.isArray(e.files)?e.files:[]).filter(ts).map(c=>({path:rt(c.path)??"",size:Ve(c.size)??0,type:rt(c.type)??"file"})),o=zk(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:rt(e.localPath)??"",repoRoot:rt(e.repoRoot),fileCount:Ve(e.fileCount)??r.length,totalSize:Ve(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:Ve(e.directoryEntryCount),eligibleFileCount:Ve(e.eligibleFileCount),savedFileCount:Ve(e.savedFileCount),skipped:o,limits:Bk(e.limits),warnings:Sh(e.warnings),...r.length>0?{files:r}:{},...e.cached===!0?{cached:!0}:{},resolvedBranch:rt(e.resolvedBranch)}}function Kk(e,t){let n=new Map;return e.forEach((r,o)=>{if(r.status==="error")return;let i=t[o];if(!i)return;let s=String(i.owner??""),a=String(i.repo??"");if(!s||!a)return;let c=jk(n,s,a),l=r.data;if(i.type==="directory"){let d=c.directories??[];d.push(Wk(l,i)),c.directories=d;return}let u=c.files??[];u.push(Vk(l,i)),c.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{...r,data:o}})}function Yk(e,t){return Zi(e).map(r=>{let o=e.findIndex(s=>s.id===r.id),i=o>=0?t[o]:void 0;return{id:r.id,owner:i?.owner,repo:i?.repo,path:i?.path?String(i.path):void 0,error:r.error}})}function Ch(){return({queries:e,results:t})=>{let n=Kk(t,e),r=Yk(t,e),o={results:n};return r&&r.length>0&&(o.errors=r),es(o,["results","id","owner","repo","files","directories","path","content","totalLines","startLine","endLine","isPartial","pagination","errors"],n.length===0&&!!(r&&r.length>0))}}var Qk,Ph=y(()=>{"use strict";bl();Qk=["charOffset","charLength","totalChars","nextCharOffset","nextBlockChar","nextPage","nextMatchPage","filesPerPage","totalFiles","entriesPerPage","totalEntries","matchesPerPage","totalMatches"]});async function wh(e){let{queries:t,authInfo:n}=e,r=tt(n);return re(t,async(o,i)=>{try{let s=Fe(Sn,o,{prefix:!1});if(s.ok===!1)return s.error;let a=s.data,c=r();return a.type==="directory"?Xk(a,n,c):Jk(a,n,c)}catch(s){return ve(s,o,void 0,A.GITHUB_FETCH_CONTENT)}},{toolName:A.GITHUB_FETCH_CONTENT,finalize:Ch()},e)}async function Xk(e,t,n){let r=ke();if(!(r.local.enabled&&r.local.enableClone))return F("Directory fetch requires local clone support. Set ENABLE_LOCAL=true and ENABLE_CLONE=true.",e);if(!Yi(n,"fetchDirectoryToDisk"))return ve(new Error('Directory fetch (type: "directory") is only available with the GitHub provider. Use file mode (type: "file") instead.'),e,"Provider not supported",A.GITHUB_FETCH_CONTENT);if(!e.owner||!e.repo)return F("Directory fetch requires both owner and repo.",e,{rawResponse:0});let o=e.branch??await Ye(e.owner,e.repo,t),i=await ih(e.owner,e.repo,String(e.path),o,t,!!e.forceRefresh),s=(i.skipped?.nonFile??0)>0,a=i.skipped?Object.fromEntries(Object.entries(i.skipped).filter(([,d])=>d>0)):void 0,c={kind:"directory",localPath:i.localPath,repoRoot:i.repoRoot,source:"treeFetch",cached:i.cached,complete:i.complete,verified:i.verified,...i.commitSha?{commitSha:i.commitSha}:{},...s?{hasSubdirectories:!0}:{},...a&&Object.keys(a).length>0?{skippedSummary:a}:{},owner:e.owner,repo:e.repo},l={localSearch:{tool:"localSearchCode",query:{path:i.localPath,mode:"discovery"}},viewStructure:{tool:"localViewStructure",query:{path:i.localPath}},...s?{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:i.localPath,repoRoot:i.repoRoot,fileCount:i.fileCount,totalSize:i.totalSize,complete:i.complete,verified:i.verified,...i.commitSha?{commitSha:i.commitSha}:{},directoryEntryCount:i.directoryEntryCount,eligibleFileCount:i.eligibleFileCount,savedFileCount:i.savedFileCount,skipped:i.skipped,limits:i.limits,...i.warnings?{warnings:i.warnings}:{},files:i.files,...i.cached?{cached:!0}:{},...e.branch!==i.branch?{resolvedBranch:i.branch}:{},location:c,next:l};return Oe(e,u,!0,A.GITHUB_FETCH_CONTENT,{rawResponse:i.totalSize??Q(i)})}async function Jk(e,t,n){let r=await zt(e,()=>n.provider.getFileContent(hh(e)));if(r.ok===!1)return r.result;let o=e.fullContent===!0&&e.minify==="none"?await Zk(e,t):void 0,i={...yh(r.response.data,e),...o?{localPath:o.localPath,repoRoot:o.repoRoot,cached:o.cached,...o.branch!==e.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,A.GITHUB_FETCH_CONTENT,{rawResponse:r.response.rawResponseChars})}async function Zk(e,t){if(!e.owner||!e.repo||typeof e.path!="string")return;let n=e.branch??await Ye(e.owner,e.repo,t);return sh(e.owner,e.repo,e.path,n,t,!!e.forceRefresh)}var xh=y(()=>{"use strict";pe();$e();Me();vo();ah();Be();ie();qn();cn();Ph();_e()});function eO(e){let t=e.data;return{results:Array.isArray(t?.results)?t.results:[],pagination:t?.pagination,...t?.nonExistentScope?{nonExistentScope:!0}:{},...t?.incompleteResults?{incompleteResults:!0}:{}}}function tO(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 nO(e){return[...e].sort((t,n)=>{let r=n.matches.length-t.matches.length;return r!==0?r:t.id.localeCompare(n.id)})}function Th(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,...n.queryId?{queryId:n.queryId}:{},matches:[a]})}return Array.from(t.values())}function rO(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:Th(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:Th(r.get(i)),...s?{pagination:s}:{}}}})}function oO(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function iO(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${oO(a)}\\b`,"i").test(o):o.toLowerCase().includes(c))&&(i=Math.max(i,1))}return i}function sO(e,t){let n=t.filter(o=>typeof o=="string"&&o.trim());return n.length===0?nO(e):e.map(o=>{let i=o.matches.map((s,a)=>({match:s,index:a,score:iO(s,n)}));return i.sort((s,a)=>s.score!==a.score?a.score-s.score:s.index-a.index),{group:aO(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 aO(e,t){return{...e,matches:t}}function Eh(){return({queries:e,results:t})=>{let n=[],r=new Map,o=[],i=!1;t.forEach((p,f)=>{if(p.status==="error")return;let m=eO(p);m.incompleteResults&&(i=!0),m.results.reduce((S,C)=>S+C.matches.length,0)===0&&o.push({id:p.id,...m.nonExistentScope?{nonExistentScope:!0}:{},...m.incompleteResults?{incompleteResults:!0}:{}});let b=m.results;n.push({id:p.id,groups:b}),m.pagination&&r.set(p.id,m.pagination)});let s=Array.from(new Set(e.flatMap(p=>{let f=p.keywords;return Array.isArray(f)?f.filter(m=>typeof m=="string"):[]}))),a=sO(tO(n),s),c=Zi(t),l=e.some(p=>p.concise===!0),u=rO(e,a,r);if(l)for(let p of u)p.data.files=p.data.files.map(f=>`${f.owner}/${f.repo}:${f.path}`);let d={results:u};return o.length>0&&(d.emptyQueries=o.map(({id:p,nonExistentScope:f,incompleteResults:m})=>({id:p,...f?{nonExistentScope:f}:{},...m?{incompleteResults:m}:{}}))),c.length>0&&(d.errors=c),i&&(d.warnings=[...Array.isArray(d.warnings)?d.warnings:[],"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."]),es(d,["results","id","data","files","path","owner","repo","queryId","matches","value","pathOnly","matchIndices","pagination","emptyQueries","nonExistentScope","incompleteResults","warnings","errors"],a.length===0&&c.length>0)}}var kh=y(()=>{"use strict";bl()});function cO(e){return!!((e.keywords??[]).some(n=>n.trim().length>0)||e.owner||e.path||e.extension||e.filename)}function lO(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 Oh(e){let{queries:t}=e,n=tt(e.authInfo);return re(t,async(r,o)=>{try{let i=lO(r);if(i)return F(i.error,r);if(!cO(r))return F("At least one search term or scope filter is required.",r);let s=n(),a=await zt(r,()=>s.provider.searchCode(lh(r)));if(a.ok===!1)return a.result;let c=dh(a.response.data,r);return Oe(r,c,c.results.length>0,A.GITHUB_SEARCH_CODE,{rawResponse:a.response.rawResponseChars})}catch(i){return ve(i,r,void 0,A.GITHUB_SEARCH_CODE)}},{toolName:A.GITHUB_SEARCH_CODE,finalize:Eh()},e)}var vh=y(()=>{"use strict";pe();$e();Me();qn();cn();kh()});function uO(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 dO(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 pO(e,t){let n=e?.commits;return n?{list:n.list??!0,includeFiles:n.includeFiles??!1}:t==="full"?{list:!0,includeFiles:!1}:!1}function Ah(e){let{content:t,reviewMode:n}=e,r=uO(t,n),o=dO(t,n),i=pO(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 Lh=y(()=>{"use strict"});function Cl(e){let t=e.matchString;if(typeof t!="string")return;let n=t.trim().toLowerCase();return n.length>0?n:void 0}function rs(e,t){return typeof e=="string"&&e.toLowerCase().includes(t)}function Pl(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 is(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 Ih(e,t=500){if(!(typeof e!="string"||e.length===0))return e.length<=t?e:`${e.slice(0,t-3)}...`}function Fh(e,t){return{owner:e.owner,repo:e.repo,prNumber:t}}function fO(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function os(e,t,n){return fO({...Fh(e,t),...n})}function _h(e,t,n,r,o={}){if(!(!r.hasMore||r.nextCharOffset===void 0))return os(e,t,{content:n,...o,charOffset:r.nextCharOffset,charLength:e.charLength})}function Rl(e,t,n,r,o){if(!(!o.hasMore||o.nextPage===void 0))return os(e,t,{content:n,[r]:o.nextPage,itemsPerPage:e.itemsPerPage})}function mO(e,t,n){return{target:Fh(e,t),...n.body?{}:{getBody:{content:{body:!0}}},...n.changedFiles?{}:{getChangedFiles:{content:{changedFiles:!0}}},...n.patches.mode!=="none"?{}:{getSelectedPatches:{content:{patches:{mode:"selected",files:["path/from/changedFiles"]}}},getAllPatches:{content:{patches:{mode:"all"}}}},...n.comments?{}:{getComments:{content:{comments:{discussion:!0,reviewInline:!0}}}},...n.reviews?{}:{getReviews:{content:{reviews:!0}}},...n.commits?{}:{getCommits:{content:{commits:{list:!0}}}},...n.reviewMode==="full"?{}:{fullReview:{reviewMode:"full"}}}}function ns(e){return String(e.path??e.filename??"")}function gO(e,t){return{path:ns(e),status:String(e.status??""),additions:Number(e.additions??0),deletions:Number(e.deletions??0),...t&&typeof e.patch=="string"?{patch:e.patch}:{}}}function hO(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 yO(e,t,n){if(!n.comments)return{};let r=Array.isArray(e.comments)?e.comments:[],o=hO(r,n.comments),i=Cl(t),s=i?o.filter(l=>rs(l.body,i)):o,{items:a,pagination:c}=Pl(s,t.commentPage??t.page??1,t.itemsPerPage??20);return{comments:a.map(l=>{let u=is(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:Ih(typeof l.body=="string"?l.body:"")},createdAt:l.createdAt,updatedAt:l.updatedAt}}),commentPagination:c}}function bO(e,t,n){if(!n.reviews)return{};let r=Array.isArray(e.reviews)?e.reviews:[],o=Cl(t);return{reviews:(o?r.filter(s=>rs(s.body,o)):r).map(s=>{let a=typeof s.body=="string"?s.body:"",c=is(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 RO(e,t,n){if(!n.commits)return{};let r=Array.isArray(e.commits)?e.commits:[],{items:o,pagination:i}=Pl(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 SO(e){return e.split(`
32
32
  `).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(`
33
- `)}function Nb(e){return e.replace(/\n{3,}/g,`
33
+ `)}function CO(e){return e.replace(/\n{3,}/g,`
34
34
 
35
- `)}function Db(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(Nr(p))):o,a=Fi(t),c=a?s.filter(p=>Dr(Nr(p),a)||Dr(p.patch,a)):s,{items:u,pagination:l}=Mi(c,t.filePage??t.page??1,t.itemsPerPage??20),d=n.patches.mode!=="none",m=u.map(p=>{let f=Ob(p,!1);if(!d||typeof p.patch!="string")return f;let g=r&&!a?Mb(p.patch):p.patch,h=Gr(g,t.charOffset??0,t.charLength??12e3);return{...f,patch:h?.content??"",diff:fn(h?.content),...h?{patchPagination:h.pagination}:{}}});return n.changedFiles||n.patches.mode!=="none"?{changedFiles:m,filePagination:l}:o.length===0?{}:{filePathsPreview:o.slice(0,20).map(Nr).filter(Boolean),filePathsPagination:{totalFiles:o.length,filesPerPage:20,hasMore:o.length>20,...o.length>20?{nextFilePage:2}:{}}}}function Ln(e){return typeof e=="object"&&e!==null}function vi(e){if(Ln(e)&&!(typeof e.currentPage!="number"||typeof e.totalPages!="number"||typeof e.itemsPerPage!="number"||typeof e.totalItems!="number"||typeof e.hasMore!="boolean"))return e}function Ni(e){if(Ln(e)&&!(typeof e.charOffset!="number"||typeof e.charLength!="number"||typeof e.totalChars!="number"||typeof e.hasMore!="boolean"))return e}function Hb(e){return{...e.changedFiles?{changedFiles:!0}:{},...e.patches.mode!=="none"?{patches:e.patches}:{}}}function Gb(e){let t=e.changedFiles;if(Array.isArray(t))for(let n of t){if(!Ln(n))continue;let r=Ni(n.patchPagination);if(r?.hasMore)return r}}function Ub(e){let t=e.comments;if(Array.isArray(t))for(let n of t){if(!Ln(n))continue;let r=Ni(n.bodyPagination);if(r?.hasMore)return r}}function Bb(e,t,n,r){let o={},i=Ni(e.bodyPagination),s=vi(e.filePagination),a=vi(e.commentPagination),c=vi(e.commitPagination),u=Gb(e),l=Ub(e),d=Hb(n);i&&(o.body={...i,nextQuery:Vl(t,r,{body:!0},i)}),s&&(o.changedFiles={...s,nextQuery:ki(t,r,d,"filePage",s)}),a&&n.comments&&(o.comments={...a,nextQuery:ki(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:ki(t,r,{commits:n.commits},"commitPage",c)}),u&&n.patches.mode!=="none"&&(o.patches={...u,nextQuery:Vl(t,r,{patches:n.patches},u,{filePage:t.filePage??t.page})});let m=e.filePathsPagination;return Ln(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 zb(e){delete e.bodyPagination,delete e.filePagination,delete e.commentPagination,delete e.commitPagination,delete e.filePathsPagination}function Yl(e,t,n,r,o){let i=Number(e.number),s=typeof e.body=="string"?e.body:void 0,a=s&&r?Nb(s):s,c=n.body?Gr(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,f={...{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:Wl(typeof e.body=="string"?e.body:void 0)}:{},...l?{next:Lb(t,i,n)}:{}},...n.body?c?{body:c.content,bodyPagination:c.pagination}:{bodyEmpty:!0}:{},...Db(e,t,n,r),...kb(e,t,n),...vb(e,t,n),...Fb(e,t,n),...e.reviewSummary?{reviewSummary:e.reviewSummary}:{},...Array.isArray(e.sanitizationWarnings)&&e.sanitizationWarnings.length>0?{sanitizationWarnings:e.sanitizationWarnings}:{}},g=Bb(f,t,n,i);return zb(f),g&&(f.contentPagination=g),f}function Qb(e){return e?e.includes('rel="next"'):!1}function Xl(e,t){if(e)return!t||e.length<=t?e:e.slice(0,t)}async function Jl(e,t){try{let n=await re(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=Qb(i),a=o.data.map(l=>{let d=l.commit.author,m=l.commit.committer,p=m?.date??d?.date??"",f=l.commit.message,g=f.split(`
36
- `)[0]??f;return{sha:l.sha,date:p,message:f,messageHeadline:g,url:l.html_url,author:{name:d?.name??"unknown",email:d?.email??"",...l.author?.login?{login:l.author.login}:{}},...m?{committer:{name:m.name??"unknown",email:m.email??"",...l.committer?.login?{login:l.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 u=await Promise.all(a.map(async(l,d)=>{try{let m=o.data[d]?.sha??l.sha,p=await n.rest.repos.getCommit({owner:e.owner,repo:e.repo,ref:m});if(e.type==="file"&&e.path){let f=e.path,g=p.data.files?.find(h=>h.filename===f||h.previous_filename===f);if(g){let h=g.patch!==void 0?Xl(g.patch,e.charLength):void 0;return{...l,additions:g.additions,deletions:g.deletions,status:g.status,...h!==void 0?{patch:h,diff:fn(h)}:{},...g.previous_filename?{previousFilename:g.previous_filename}:{}}}}else{let f=e.path,g=(p.data.files??[]).filter(h=>!f||h.filename.startsWith(f)).map(h=>{let b=h.patch!==void 0?Xl(h.patch,e.charLength):void 0;return{filename:h.filename,status:h.status,additions:h.additions,deletions:h.deletions,...b!==void 0?{patch:b,diff:fn(b)}:{},...h.previous_filename?{previousFilename:h.previous_filename}:{}}});return{...l,files:g}}}catch{}return l}));return{data:{type:e.type,owner:e.owner,repo:e.repo,...e.path?{path:e.path}:{},commits:u,pagination:c},status:200}}catch(n){return X(n)}}async function Zl(e){let{queries:t,authInfo:n}=e,r=Me(n);return Y(t,async(o,i)=>{try{let s=Te(br,o);if(s.ok===!1)return s.error;if(s.data.type==="commits"){let A=s.data;if(!A.owner||!A.repo)return _("owner and repo are required for commits mode.",o);let G=A.path,$=G&&!G.endsWith("/")?"file":"repo";if($==="file"&&!G)return _("path is required when querying a specific file in commits mode.",o);let x=await Jl({type:$,owner:A.owner,repo:A.repo,path:G,branch:A.branch,since:A.since,until:A.until,author:A.author,page:Number(A.page)||1,perPage:Number(A.perPage)||30,includeDiff:!!A.includeDiff,charLength:typeof A.charLength=="number"?A.charLength:void 0},n);if(Ht(x))return _(x,o,{toolName:S.GITHUB_SEARCH_PULL_REQUESTS});let{commits:L}=x.data,z=L.length>0;return he(o,x.data,z,S.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:x.rawResponseChars})}let a=r(),c={...s.data},u=jl(c),l=c.prNumber!==void 0;if(l||(c.content=void 0,c.reviewMode=void 0),!(c.keywordsToSearch?.length||c.owner||c.repo||c.author||c.assignee||c.prNumber&&c.owner&&c.repo))return _("At least one valid search parameter, filter, or PR number is required.",o);let m=await ut(c,()=>a.provider.searchPullRequests(Fl(c)));if(m.ok===!1)return m.result;let p=l?u.changedFiles||u.patches.mode!=="none":!1,{pullRequests:f,resultData:g}=Ml(m.response.data,{includeFileChanges:p});c.prNumber!==void 0&&delete g.pagination;let h=!l&&(!!o.content||!!o.reviewMode),b={...u,body:!1,changedFiles:!1,patches:{mode:"none"},comments:!1,commits:!1},R=c.minify==="standard",C=l,w=f.map(A=>Yl(A,c,h?b:u,R,C));g.pull_requests=w,!l&&c.concise===!0&&(g.pull_requests=w.map(A=>{let G=A;return`#${G.number} ${G.title}`}));let T=w.length>0;return he(c,g,T,S.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:m.response.rawResponseChars})}catch(s){return ye(s,o,void 0,S.GITHUB_SEARCH_PULL_REQUESTS)}},{toolName:S.GITHUB_SEARCH_PULL_REQUESTS,keysPriority:["pull_requests","pagination","total_count","error"]},e)}function ql(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 $b(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,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,url:t.url,updatedAt:t.updatedAt};return Object.fromEntries(Object.entries(n).filter(([,r])=>r!==void 0))}function jb(e,t){let n=t.concise===!0;return{data:{pagination:e.pagination,repositories:n?e.repositories.map(r=>`${r.owner?`${r.owner}/`:""}${r.repo}`):e.repositories.map($b)}}}function nd(e){return!!(e.topicsToSearch&&(Array.isArray(e.topicsToSearch)?e.topicsToSearch.length>0:e.topicsToSearch))}function rd(e){return!!(e.keywords&&e.keywords.length>0)}function Vb(e){return!!(rd(e)||nd(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 ed(e,t){return e?`${e} (${t==="topics"?"topics-based search":"keywords-based search"})`:`${t.charAt(0).toUpperCase()+t.slice(1)}-based repository search`}function Wb(e){let t=nd(e),n=rd(e);if(t&&n){let{topicsToSearch:r,keywords:o,...i}=e;return[{label:"topics",query:{...i,reasoning:ed(e.reasoning,"topics"),topicsToSearch:r}},{label:"keywords",query:{...i,reasoning:ed(e.reasoning,"keywords"),keywords:o}}]}return[{label:"combined",query:e}]}function Kb(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 Yb(e,t){return[...e].sort((n,r)=>{let o=Xb(n,r,t.sort);if(o!==0)return o;let i=td(r,t)-td(n,t);if(i!==0)return i;let s=(r.stars??0)-(n.stars??0);return s!==0?s:Di(n).localeCompare(Di(r))})}function Xb(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 ql(e.updatedAt,t.updatedAt);case"best-match":case void 0:return 0;default:return 0}}function td(e,t){let n=Jb(t),r=Di(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 Jb(e){let t=e.keywords??[],n=e.topicsToSearch??[];return[...t,...n].map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)}function Di(e){return`${e.owner}/${e.repo}`}function Zb(e){return{currentPage:e.currentPage,totalPages:e.totalPages,perPage:e.entriesPerPage||10,totalMatches:e.totalMatches||0,hasMore:e.hasMore,...e.hasMore?{nextPage:e.currentPage+1}:{}}}function qb(e){let t=e.map(n=>n.response.data.pagination).filter(n=>!!n);if(t.length!==0)return{currentPage:t[0].currentPage,totalPages:Math.max(...t.map(n=>n.totalPages)),hasMore:t.some(n=>n.hasMore),entriesPerPage:t[0].entriesPerPage,totalMatches:t.reduce((n,r)=>n+(r.totalMatches??0),0),reachableTotalMatches:t.reduce((n,r)=>n+(r.reachableTotalMatches??r.totalMatches??0),0),totalMatchesKind:t.some(n=>n.totalMatchesKind==="lowerBound")?"lowerBound":t.some(n=>n.totalMatchesKind==="reported")?"reported":"exact",totalMatchesCapped:t.some(n=>n.totalMatchesCapped===!0)}}function eS(e){return e.reduce((t,n)=>t+(n.response.rawResponseChars??F(n.response.data??n.response)),0)}async function od(e){let{queries:t,authInfo:n}=e,r=Me(n);return Y(t,async(o,i)=>{try{if(!Vb(o))return _("At least one repository search term or filter is required.",o);let s=r(),a=Wb(o),{successes:c,failures:u}=await al(a.map(T=>({meta:{label:T.label,query:T.query},operation:()=>s.provider.searchRepos(kl(T.query))}))),l=c.map(T=>({label:T.meta.label,query:T.meta.query,response:T.response})),d=u.map(T=>({label:T.meta.label,query:T.meta.query,response:T.response}));if(l.length===0){let T=d[0];return T?Ar(T.response,o):ye(new Error("Repository search produced no provider results"),o,void 0,S.GITHUB_SEARCH_REPOSITORIES)}let m=o.limit,p=Yb(Kb(l.flatMap(T=>vl(T.response.data.repositories))),o),f=m!=null?p.slice(0,m):p,g=l.length===1?l[0]:void 0,b=l.length>1?qb(l):g?.response.data.pagination,R=b?Zb(b):void 0,C=f.length>0,w=jb({repositories:f,pagination:R},o);return he(o,w.data,C,S.GITHUB_SEARCH_REPOSITORIES,{rawResponse:eS([...l,...d])})}catch(s){return ye(s,o,void 0,S.GITHUB_SEARCH_REPOSITORIES)}},{toolName:S.GITHUB_SEARCH_REPOSITORIES,keysPriority:["repositories","pagination","error"]},e)}function tS(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 nS(e){let t={};for(let[n,r]of Object.entries(e)){let o=n.split("/").pop()??n;if(n!==""&&n!=="."&&pn(o))continue;let i=r.files.filter(a=>!Dt(a)),s=r.folders.filter(a=>!pn(a));(i.length>0||s.length>0)&&(t[n]={files:i,folders:s})}return t}async function id(e){let{queries:t,authInfo:n}=e,r=Me(n);return Y(t,async(o,i)=>{try{let s=r(),a=`${o.owner}/${o.repo}`,c=o.branch??await s.provider.resolveDefaultBranch(a),u=await ut(o,()=>s.provider.getRepoStructure(Hl(o,c)));if(u.ok===!1)return tS(u.result,o);let l=nS(u.response.data.structure),d=Object.keys(l).length>0,m=Gl(u.response.data,o,l,c);return he(o,m,d,S.GITHUB_VIEW_REPO_STRUCTURE,{rawResponse:u.response.rawResponseChars})}catch(s){return ye(s,o,"Failed to explore repository structure",S.GITHUB_VIEW_REPO_STRUCTURE)}},{toolName:S.GITHUB_VIEW_REPO_STRUCTURE,keysPriority:["resolvedBranch","branchFallback","summary","pagination","structure","error"]},e)}import{existsSync as sd}from"fs";import{delimiter as rS,dirname as oS,join as ad}from"path";function cd(){return process.platform==="win32"?"npm.cmd":"npm"}function iS(){let e=oS(process.execPath);return ad(e,cd())}function sS(){return process.platform==="win32"?[]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin"]}function aS(){let e=(process.env.PATH??"").split(rS).map(t=>t.trim()).filter(Boolean);return[...new Set([...e,...sS()])]}function cS(){let e=iS();if(sd(e))return{command:process.execPath,argsPrefix:[e]};let t=cd();for(let n of aS()){let r=ad(n,t);if(sd(r))return{command:r,argsPrefix:[]}}return{command:t,argsPrefix:[]}}var uS=["view","search","ping","config","whoami"],lS=[...Lr,...Vu];async function Ur(e,t,n={}){if(!uS.includes(e))return{stdout:"",stderr:"",error:new Error(`Command '${e}' is not allowed`)};let r=Or(t);if(!r.valid)return{stdout:"",stderr:"",error:new Error(`Invalid arguments: ${r.error}`)};let{timeout:o=3e4,cwd:i,env:s}=n,a=cS(),c=await Tt(a.command,[...a.argsPrefix,e,...t],{timeout:o,cwd:i,env:s,allowEnvVars:lS});return{stdout:c.stdout,stderr:c.stderr,exitCode:c.exitCode??void 0,error:c.error}}var On=new Map,dS=5,Hi=3e4;function In(e){try{return new URL(e).host||e}catch{return e}}var Gi=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 ud(e,t=Date.now()){let n=On.get(In(e));if(!(!n||n.state==="closed")&&n.state==="open"){let r=t-n.openedAt;if(r<Hi)throw new Gi(In(e),Hi-r);n.state="half-open"}}function Ui(e){let t=On.get(In(e));t&&(t.failures=0,t.state="closed")}function ld(e,t=Date.now()){let n=In(e),r=On.get(n)??{failures:0,state:"closed",openedAt:0};r.state==="half-open"?(r.state="open",r.openedAt=t):(r.failures+=1,r.failures>=dS&&(r.state="open",r.openedAt=t)),On.set(n,r)}function dd(e,t=Date.now()){let n=On.get(In(e));return!n||n.state==="closed"?!1:n.state==="open"?t-n.openedAt<Hi:!1}var pS=6e4;function pd(e){let t=e.get("Retry-After");if(!t)return;let n=parseInt(t,10);return isNaN(n)?void 0:n}function mS(e,t,n,r){e&&at({limit_type:"primary",retry_after_seconds:pd(r),api_method:t,api_url:n,provider:e}).catch(Se("fetch rate-limit session logging"))}function fS(e,t,n,r,o){e.body?.cancel?.().catch(Se("response body cancellation")),v("fetchWithRetries",it.FETCH_HTTP_ERROR.code).catch(Se("fetch retry session logging"));let i=new Error(it.FETCH_HTTP_ERROR.message(e.status,e.statusText));return i.status=e.status,i.headers=e.headers,r&&e.status!==404&&ya(r),e.status===429&&mS(o,t,n,e.headers),i.retryable=e.status===429||e.status===408||e.status>=500&&e.status<600,i}function gS(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=pd(r.headers);i!==void 0&&(o=Math.min(i*1e3,n))}return o}async function lt(e,t={}){let{maxRetries:n=3,initialDelayMs:r=1e3,maxDelayMs:o=pS,headers:i={},method:s="GET",includeVersion:a=!1,signal:c,rateLimitProvider:u,packageRegistry:l}=t,d=e;if(a){let h=e.includes("?")?"&":"?";d=`${e}${h}version=${encodeURIComponent(ht)}`}let m={"User-Agent":`Octocode-MCP/${ht}`,...i},p=globalThis.fetch;if(!p)throw v("fetchWithRetries",it.FETCH_NOT_AVAILABLE.code).catch(Se("fetch retry session logging")),new Error(it.FETCH_NOT_AVAILABLE.message);ud(d);let f,g=n+1;for(let h=1;h<=g;h++){if(c?.aborted)throw new Error("Request aborted");try{let b=await p(d,{method:s,headers:m,signal:c});if(!b.ok)throw fS(b,s,d,l,u);if(b.status===204)return Ui(d),null;let R=await b.json();return Ui(d),R}catch(b){let R=b;if(c?.aborted||b instanceof Error&&b.name==="AbortError")throw new Error("Request aborted");if(R&&R.retryable===!1)throw b;if(f=b instanceof Error?b:new Error(String(b)),h===g)break;let C=gS(h,r,o,R);await new Promise(w=>setTimeout(w,C))}}throw ld(d),await v("fetchWithRetries",it.FETCH_FAILED_AFTER_RETRIES.code),new Error(it.FETCH_FAILED_AFTER_RETRIES.message(g,f?.message||""))}import{z as E}from"zod";var Br=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()}),hS=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()}),md=E.looseObject({objects:E.array(hS),total:E.union([E.number(),E.string()]).optional()}),yS=E.union([E.string(),E.boolean(),E.number(),E.null(),E.record(E.string(),E.unknown())]);var Qr="https://registry.npmjs.org",RS=3e3,zr=null;async function bd(){if(zr)return zr;try{let e=await Ur("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 zr=t,t}}catch{}return zr=Qr,Qr}function Et(e){return e.replace(/^git\+/,"").replace(/\.git$/,"")}var bS="https://api.npmjs.org/downloads/point/last-week";function ve(e){return e===void 0?0:F(e)}async function Sd(e){try{let t=`${bS}/${encodeURIComponent(e)}`,n=await lt(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 $r(e){return e.startsWith("@")&&e.includes("/")?!0:e.includes(" ")?!1:/^[a-z0-9][a-z0-9._-]*$/i.test(e)}function Cd(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")}function SS(e){return e.replace(/^@/,"").replace(/[/_-]/g," ").replace(/\s+/g," ").trim()}function CS(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}function fd(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 gd(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 TS(e){return e.type==="module"||e.module?"module":e.main?"commonjs":e.types||e.typings?"types-only":"unknown"}function Bi(e,t=!1,n="cli"){let r=null,o;e.repository&&(typeof e.repository=="string"?r=Et(e.repository):(e.repository.url&&(r=Et(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:TS(e),...o?{repositoryDirectory:o}:{},...fd(e.exports)?{exports:fd(e.exports)}:{},...gd(e.bin,e.name)?{bin:gd(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 PS(e){return typeof e.links?.repository=="string"?Et(e.links.repository):typeof e.repository=="string"?Et(e.repository):typeof e.repository?.url=="string"?Et(e.repository.url):null}function ES(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:PS(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 Td(e){return e.startsWith("@")?"@"+e.slice(1).replace("/","%2F"):e}async function Pd(e){try{let t=await bd(),n=Td(e),r=`${t}/${n}`,o=AbortSignal.timeout(8e3);try{let s=await lt(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 lt(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 zi(e,t,n){let[r,o]=await Promise.all([Sd(e),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):Pd(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 jr(e){let t=e.toLowerCase();return t.includes("404")||t.includes("not found")||t.includes("e404")}async function wS(e,t){try{let n=await Ur("view",[e,"--json"],{timeout:RS});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,...jr(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=Br.safeParse(o);return s.success?{pkg:Bi(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,...jr(r)?{}:{errorDetail:r},rawResponseChars:0}}}async function _S(e,t){try{let n=await bd(),r=Td(e),o=`${n}/${r}/latest`,i;try{i=await lt(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=ve(i);if(!i||typeof i!="object")return{pkg:null,rawResponseChars:s};let a=Br.safeParse(i);return a.success?{pkg:Bi(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,...jr(r)?{}:{errorDetail:r},rawResponseChars:0}}}function xS(e){return[`https://cdn.jsdelivr.net/npm/${e}/package.json`,`https://unpkg.com/${e}/package.json`]}async function Ed(e,t){let n=0,r;for(let o of xS(e)){let i;try{i=await lt(o,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3)})}catch(c){let u=c instanceof Error?c.message:String(c);jr(u)||(r=u);continue}if(n+=ve(i),!i||typeof i!="object")continue;let s=Br.safeParse(i);if(!s.success){r="Invalid npm CDN package.json response format";continue}return{pkg:Bi(s.data,t,"cdn"),rawResponseChars:n}}return{pkg:null,...r?{errorDetail:r}:{},rawResponseChars:n}}async function Qi(e,t=!1){let[n,r]=await Promise.allSettled([wS(e,t),_S(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?zi(e,s.pkg,s.rawResponseChars):{pkg:null,errorDetail:o.errorDetail||i.errorDetail,rawResponseChars:o.rawResponseChars+i.rawResponseChars}}async function AS(e,t,n=!1){let{pkg:r,errorDetail:o,rawResponseChars:i}=await Qi(e,t);if(!r){if(o){let s=Cd(o);if(s&&n){let a=await Ed(e,t);if(a.pkg){let c=await zi(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 LS(e,t,n,r=0){let o=Math.max(t+r,t),i=await Ur("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 l=[...a].sort((f,g)=>{let h=f?.score?.final??0;return(g?.score?.final??0)-h}).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 h=await Qi(g.name,!0);if(h.pkg)return h}return{pkg:ES(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 OS(e,t,n,r=0){try{let o=r>0?`&from=${r}`:"",i=`${Qr}/-/v1/search?text=${encodeURIComponent(e)}&size=${t}${o}`,s;try{s=await lt(i,{maxRetries:1,initialDelayMs:500,signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(f){return{error:`NPM registry search failed: ${f instanceof Error?f.message:String(f)}`,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=md.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 h=f.score?.final??0;return(g.score?.final??0)-h}).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 Qi(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"?Et(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:CS(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 hd(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 lt(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"?Et(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 yd(e,t,n,r=0){try{let o=await LS(e,t,n,r);if(!("error"in o))return o}catch{}return OS(e,t,n,r)}async function Rd(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}):Sd(t.name),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):Pd(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)]}}async function wd(e,t,n,r=0){let o=we("npm-search",{name:e,limit:t,metadata:n,from:r});return _e(o,async()=>{if(dd(Qr)){if(r===0&&t===1&&$r(e)){let l=await Ed(e,n);if(l.pkg){let d=await zi(e,l.pkg,l.rawResponseChars);return{packages:d.pkg?[d.pkg]:[],totalFound:d.pkg?1:0,rawResponseChars:d.rawResponseChars}}}let u=await hd(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&&$r(e)){let u=await AS(e,n,t===1);if("error"in u){if(!Cd(u.error))return u}else if(u.packages.length>0||t===1)return u}let s=await yd(e,t,n,r);if(!("error"in s)&&s.packages.length>0)return Rd(s);let a=SS(e);if(a!==e){let u=await yd(a,t,n,r);if(!("error"in u)&&u.packages.length>0)return Rd(u)}let c=await hd(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 _d(e){let t=$r(e.name),n=e.itemsPerPage??(t?1:10),r=Math.max(0,((e.page??1)-1)*n);return wd(e.name,n,!0,r)}function IS(e){return"error"in e}function Vr(e){return"npmUrl"in e}function kS(e){return Vr(e)&&e.path?e.path:e.name}function vS(e){return Vr(e)?e.repoUrl:e.repository}function FS(e){if(!e)return;let t=e.replace(/^\.\//,"").replace(/^\//,"");return t.length>0?t:void 0}function MS(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 NS(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 DS(e,t){let n=NS(e);if(!n)return;let{owner:r,repo:o}=n;return{viewRepoStructure:{tool:"ghViewRepoStructure",query:{owner:r,repo:o,...t?{path:t}:{}}},searchCode:{tool:"ghSearchCode",query:{owner:r,repo:o}},cloneRepo:{tool:"ghCloneRepo",query:{owner:r,repo:o,...t?{sparsePath:t}:{}}}}}function HS(e){let t=kS(e),n=MS(vS(e)),r={name:t};Vr(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=FS(Vr(e)?e.repositoryDirectory:void 0);o&&(r.repositoryDirectory=o);let i=DS(n,o);return i&&(r.next=i),r}function GS(e,t,n,r){let o=Math.max(1,e.page??1),i=r?10:1,s=Math.max(1,Math.ceil(t/i)),a=o<s;return{currentPage:o,totalPages:s,perPage:i,totalFound:t,returned:n,hasMore:a,...a?{nextPage:o+1}:{}}}async function xd(e){return Y(e.queries,async t=>{try{if(!t.packageName)return _("Package name is required for package search",t);let n=await _d({name:t.packageName,page:t.page,itemsPerPage:t.itemsPerPage,mainResearchGoal:t.mainResearchGoal,researchGoal:t.researchGoal,reasoning:t.reasoning});if(IS(n))return _(n.error,t,{rawResponse:n});let r=n.packages,o=r.map(HS),i=o.length>0,s=r.length>1||n.totalFound>1,a=GS(t,n.totalFound,o.length,s);return he(t,{packages:o,pagination:a},i,S.PACKAGE_SEARCH,{rawResponse:n.rawResponseChars??n})}catch(n){return _(n,t,{toolName:S.PACKAGE_SEARCH})}},{toolName:S.PACKAGE_SEARCH,keysPriority:["packages","pagination","error"]},e)}import{open as US,readFile as BS,stat as zS}from"fs/promises";import{ContentSanitizer as QS}from"@octocodeai/octocode-engine/contentSanitizer";var We={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 Ld(e,t){let n=Math.abs(t-e);return n>=50&&n/e>=.02?{sourceChars:e,sourceBytes:t}:{sourceChars:e}}function Ad(e,t,n){return{...e,...Ld(t,n)}}function $S(e){let t=e.fullContent===!0,n=e.matchString!==void 0,r=e.startLine!==void 0||e.endLine!==void 0;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 jS(e,t){try{return{fileStats:await zS(t)}}catch(n){let r=Fe.fileAccessFailed(e.path,n instanceof Error?n:void 0);return{errorResult:_(r,e,{toolName:S.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function VS(e,t){return t>We.LARGE_FILE_THRESHOLD_KB&&!e.matchString&&!e.startLine&&!e.fullContent}function WS(e,t,n){let r=Fe.fileTooLarge(e.path,n,We.LARGE_FILE_THRESHOLD_KB);return _(r,e,{toolName:S.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}function KS(e,t){let n=Fe.binaryFileUnsupported(e.path);return _(n,e,{toolName:S.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}async function YS(e){let n=Buffer.alloc(8192),r;try{r=await US(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(wa("binary sample handle close",void 0))}}async function XS(e,t){try{return{content:await BS(t,"utf-8")}}catch(n){let r=n instanceof Error?n:void 0,i=r?.code==="EISDIR"?Fe.fileAccessFailed(e.path,r):Fe.fileReadFailed(e.path,r);return{errorResult:_(i,e,{toolName:S.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function JS(e,t){return{status:"empty",errorCode:H.NO_MATCHES,totalLines:t}}function ZS(e,t,n){let r=ur(t,e.matchString,e.contextLines??5,e.matchStringIsRegex??!1,e.matchStringCaseSensitive??!1);if(r.lines.length===0)return{isPartial:!1,earlyResult:JS(e,n)};let o=r.lines.join(`
37
- `),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,r.matchRanges.length>1&&(d=r.matchRanges))}return{resultContent:o,isPartial:!0,actualStartLine:u,actualEndLine:l,matchRanges:d,warnings:[c]}}function qS(e){return e.startLine!==void 0&&e.endLine!==void 0}function eC(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:H.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:H.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(`
38
- `),isPartial:!0,actualStartLine:i,actualEndLine:s,warnings:a}}function tC(e,t,n){let r=t.split(`
39
- `),o=bt(t);return e.matchString?ZS(e,r,o):qS(e)?eC(e,r,o):{resultContent:t,isPartial:!1}}function nC(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?O.applyContentViewMinification(t.resultContent,c):t.resultContent,l=e.charLength,d=e.charOffset??0,m=l,p=!1,f=d;m===void 0&&u.length>o&&(m=o,p=!0,a.push(`Auto-paginated: Content (${u.length} chars) exceeds ${o} char limit`));let g="char-limit",h=m;if(m!==void 0){let T=cr(u,f,m,c);g=T.chunkMode,h=T.length}let b=Gt(u,f,h,m!==void 0?{pageSize:m}:void 0),R=t.isPartial||b.hasMore,C;if(b.hasMore&&g==="char-limit"&&sr(b.paginatedContent)){let T=b.charOffset+b.charLength;C=ar(u,T,c)}let w=b.hasMore&&b.nextCharOffset!==void 0?{continueChars:{tool:"localGetFileContent",query:{path:c,charOffset:b.nextCharOffset,charLength:m??b.charLength,minify:e.minify}}}:void 0;return{path:c,content:b.paginatedContent,...s!=="standard"&&{contentView:s},...R&&{isPartial:R},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()},...(m!==void 0||d>0||p)&&{pagination:{...Ja(b),chunkMode:g,...C!==void 0&&{nextBlockChar:C}}},...w?{next:w}:{},...a.length>0&&{warnings:a}}}function rC(e,t,n=!1){return typeof e.content!="string"?e:{...e,contentView:t,...n?{isSkeleton:!0}:{}}}async function Od(e){let t=Be();try{let n=Le(e,S.LOCAL_FETCH_CONTENT);if(!n.isValid)return n.errorResult;let r=$S(e);if(r)return r;let o=n.sanitizedPath,i=String(e.path),{fileStats:s,errorResult:a}=await jS(e,o);if(a||!s)return a;let c=typeof s.size=="bigint"?Number(s.size):s.size,u=c/1024;if(await YS(o))return D(KS(e,o),c);if(VS(e,u))return D(WS(e,o,u),c);let{content:l,errorResult:d}=await XS(e,o);if(d||l===void 0)return d;let m=QS.sanitizeContent(l,i),p=m.content,f=p.length,g=Buffer.byteLength(p,"utf-8"),h=m.hasSecrets?`Secrets detected and redacted: ${m.secretsDetected.join(", ")}`:void 0,b=e.minify,R=b==="standard"||b==="symbols",C=R?"standard":"none",w;if(b==="symbols"){let x=O.extractSignatures(p,i);if(x===null&&(w=`minify:"symbols" is not supported for this file type (${i.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`),x!==null){let L=bt(p),z=O.applyContentViewMinification(x,i);return D({path:e.path,content:z,contentView:"symbols",isSkeleton:!0,totalLines:L,...Ld(f,g),...h?{warnings:[h]}:{}},f)}}let T=bt(p),A=tC(e,p,t),G=x=>{let L=[...w?[w]:[],...h?[h]:[]];if(L.length===0)return x;let z=x.warnings??[];return{...x,warnings:[...z,...L]}};if(A.earlyResult){let x=A.earlyResult.content,L=R&&typeof x=="string"?{...A.earlyResult,content:O.applyContentViewMinification(x,i)}:A.earlyResult;return D(Ad(G($i(rC(L,C),e,T)),f,g),f)}let $=nC(e,A,s,T,t,R,C);return D(Ad(G($i($,e,T)),f,g),f)}catch(n){return _(n,e,{toolName:S.LOCAL_FETCH_CONTENT})}}function $i(e,t,n){return e}async function Id(e){let{queries:t}=e;return Y(t||[],async n=>Ae({toolName:S.LOCAL_FETCH_CONTENT,query:n,contextMessage:"localGetFileContent execution failed",execute:async()=>{let r=Te(Sr,n);return r.ok===!1?r.error:await Od(r.data)}}),{toolName:S.LOCAL_FETCH_CONTENT},e)}function Vt(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 kn(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 iC=[];function sC(e,t){let n=t??iC,r=new Set(e.split("/").filter(Boolean));return n.filter(o=>!r.has(o))}async function kd(e){let t=e.details??!1,n=e.showFileLastModified??!1,r=n||(e.sortBy||"modified")==="modified";try{let o=Le(e,S.LOCAL_FIND_FILES);if(!o.isValid)return o.errorResult;let i={...e,path:o.sanitizedPath},s={...i,excludeDir:sC(i.path,i.excludeDir)},a=dC(s),c=e.limit??1e4,u=O.queryFileSystem({path:s.path,recursive:!0,includeRoot:!0,showHidden:!0,maxDepth:s.maxDepth,minDepth:s.minDepth,names:s.names,pathPattern:s.pathPattern,regex:s.regex,entryType:s.entryType,empty:s.empty,modifiedWithin:s.modifiedWithin,modifiedBefore:s.modifiedBefore,accessedWithin:s.accessedWithin,sizeGreater:s.sizeGreater,sizeLess:s.sizeLess,permissions:s.permissions,executable:s.executable,readable:s.readable,writable:s.writable,excludeDir:s.excludeDir,limit:c}),l=u.totalDiscovered,d=u.wasCapped,m=u.entries.map(L=>aC(L,r)),p=e.sortBy||"modified";cC(m,p,r);let f=uC(m,t,n),g=f.length,h=e.itemsPerPage||20,b=e.page||1,R=Math.max(1,Math.ceil(g/h)),C=(b-1)*h,w=Math.min(C+h,g),A=f.slice(C,w),G=[...u.warnings,...u.skipped>0?[`${u.skipped} entr${u.skipped===1?"y":"ies"} skipped during filesystem traversal`]:[]],$=[...a,...G],x={...g===0?{status:"empty"}:{},path:i.path,files:A,pagination:{currentPage:b,totalPages:R,filesPerPage:h,totalFiles:g,hasMore:b<R,...b<R?{nextPage:b+1}:{},...d?{totalFilesFound:l}:{}},...$.length>0&&{warnings:$}};return D(vd(x,e,{totalFiles:g}),u.entries.reduce((L,z)=>L+z.path.length,0))}catch(o){return _(o,e,{toolName:S.LOCAL_FIND_FILES})}}function aC(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 vd(e,t,n){return e}function cC(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 uC(e,t,n){return e.map(r=>{let o={path:r.path,type:r.type};return r.size!==void 0&&r.type!=="directory"&&(o.sizeFormatted=Vt(r.size)),t&&r.permissions&&(o.permissions=r.permissions),r.modified&&(o.modified=r.modified),o})}var lC=/^\d+[hdwm]$/;function dC(e){let t=[],n=[{key:"modifiedBefore",value:e.modifiedBefore},{key:"modifiedWithin",value:e.modifiedWithin},{key:"accessedWithin",value:e.accessedWithin}];for(let{key:r,value:o}of n)o&&!lC.test(o)&&t.push(`${r}="${o}" has an unsupported format \u2014 filter was skipped. Use a relative duration like "7d", "2h", "1w", or "3m".`);return t}async function Fd(e){let{queries:t}=e;return Y(t||[],async n=>Ae({toolName:S.LOCAL_FIND_FILES,query:n,contextMessage:"localFindFiles execution failed",execute:async()=>{let r=Te(Cr,n);return r.ok===!1?r.error:await kd(r.data)}}),{toolName:S.LOCAL_FIND_FILES},e)}import{validateRipgrepQuery as ZC}from"@octocodeai/octocode-core/schemas/runtime";var Md=["typescript","javascript","rust","python","go","java","scala","markdown","json","yaml","generic"],Z={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},pC=2e3,mC=/^\s*(\/\/|#|\*|\/\*|<!--|--)/,Nd={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+['"]/]},vn={typescript:{id:"typescript",extensions:["ts","tsx","mts","cts"],...Nd},javascript:{id:"javascript",extensions:["js","jsx","mjs","cjs"],...Nd},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/]}},fC=/^\s*#{1,6}\s/,Vi=/(^|\/)(dist|build|out|coverage|node_modules|vendor|\.next|__snapshots__)(\/|$)/,gC=/(\.min\.|\.bundle\.|\.generated\.|\.d\.ts$|-lock\.)/,hC=/(^|\/)(tests?|__tests__|spec|e2e)(\/|$)|\.(test|spec)\./,yC=/(^|\/)(fixtures?|__fixtures__|snapshots?)(\/|$)/,RC=/(^|\/)(docs?|examples?)(\/|$)|\.(md|markdown|mdx|rst|txt)$/i,bC=/(^|\/)(config|\.github)(\/|$)|\.(json|ya?ml|toml|ini|cfg|conf|env)$|(^|\/)[^/]*\.config\.[jt]s$/i,SC=/(^|\/)(src|lib|app|packages|internal|pkg|cmd|crates|include|sources?)(\/|$)/,CC=new Set(["typescript","javascript","rust","python","go","java","scala"]),Hd=/\.([a-z0-9]+)$/i;function Wi(e){return Hd.exec(e)?.[1]?.toLowerCase()??""}function TC(e){let t=Wi(e);if(!t)return!1;for(let n of CC)if(vn[n].extensions.includes(t))return!0;return!1}function PC(e,t,n){if(n&&n!=="auto")return vn[n];let r=Wi(e),o=(t??"").toLowerCase();for(let i of Md){let s=vn[i];if(i!=="generic"&&o&&(i===o||s.extensions.includes(o)))return s}for(let i of Md){let s=vn[i];if(i!=="generic"&&s.extensions.includes(r))return s}return vn.generic}function Gd(e){return gC.test(e)?"generated":yC.test(e)?"fixture":hC.test(e)?"test":bC.test(e)?"config":RC.test(e)?"docs":!Vi.test(e)&&(SC.test(e)||TC(e))?"source":"unknown"}function EC(e){if(!e)return;let t=/[A-Za-z_$][\w$]*/.exec(e);return t?t[0]:void 0}function wC(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 _C(e,t,n,r,o){if(!e||e.length===0)return 0;let i=DC(n.keyword),s=0,a="";for(let c of e){let u=c.value??"";if(!u)continue;let l=HC(u,r,n.caseSensitive),d=0,m=[];r&&i&&(new RegExp(`(^|[^\\w$])${Bd(r)}([^\\w$]|$)`,n.caseSensitive?"":"i").test(l)?(d+=Z.exactWholeWord,m.push("whole-word match")):!n.caseSensitive&&l.toLowerCase().includes(r.toLowerCase())?(d+=Z.exactCaseInsensitive,m.push("case-insensitive match")):l.includes(r)&&(d+=Z.substring,m.push("substring match")));let p=c.kind;if(p)d+=xC(p,m);else{let f=GC(l,r,t.id,n.caseSensitive);f!=="code"?(d+=Z.commentOrStringPenalty,m.push(f==="comment"?"comment match (weak)":"string literal (weak)")):(ji(t.declaration,l)&&(d+=Z.declarationLine,m.push("declaration line")),ji(t.export,l)&&(d+=Z.exportLine,m.push("export/public line")),ji(t.import,l)&&(d+=Z.importLine,m.push("import line")),t.id==="markdown"&&fC.test(l)&&(d+=Z.headingLine,m.push("markdown heading")),(t.id==="json"||t.id==="yaml")&&AC(l,r)&&(d+=Z.configKeyLine,m.push("config key match")))}d>s&&(s=d,a=m.join(", "))}return a&&o.push(a),s}function xC(e,t){switch(e){case"declaration":return t.push("AST: declaration"),Z.declarationLine;case"export":return t.push("AST: export/public"),Z.exportLine;case"configKey":return t.push("AST: config key"),Z.configKeyLine;case"heading":return t.push("AST: heading"),Z.headingLine;case"import":return t.push("AST: import"),Z.importLine;case"comment":case"string":return t.push(`AST: ${e} (weak)`),Z.commentOrStringPenalty;case"callsite":return t.push("AST: callsite"),1;default:return 0}}function AC(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 LC(e,t,n,r,o,i){let s=0;if(n){let c=e.toLowerCase(),u=n.toLowerCase();c.split("/").some(l=>l.replace(Hd,"").includes(u))&&(s+=Z.pathSegmentToken,i.push("query token in path"))}let a=Wi(e);return r.extensions.includes(a)&&t.langType&&(s+=Z.extMatchesLangType,i.push("extension matches langType")),o==="source"&&(s+=Z.sourceDir,i.push("source file")),s}function OC(e,t,n){return t.explicitLowSignal?0:e==="generated"||e==="fixture"?(n.push(`${e} file (penalized)`),Z.lowSignalPathPenalty):0}function IC(e,t){if(e<=0)return 0;let n=Math.log2(e+1)*Z.matchCountScale,r=Math.min(n,Z.matchCountCap);return e>1&&t.push(`match count saturated (${e})`),r}function kC(e,t){let n=wC(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=>vC(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 vC(e,t,n){let r=n?"":"i",o=new RegExp(`(^|[^\\w$])${Bd(t)}([^\\w$]|$)`,r);for(let i of e.matches??[])if(o.test(i.value??""))return!0;return o.test(e.path)}function FC(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*Z.rareQueryTokenScale,Z.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 MC(e,t,n){let r=PC(e.path,t.langType,t.profileOverride),o=Gd(e.path),i=EC(t.keyword),s=[],a=0;return a+=_C(e.matches,r,t,i,s),a+=LC(e.path,t,i,r,o,s),t.queryPath&&e.path.startsWith(t.queryPath.replace(/\/+$/,"")+"/")&&(a+=Z.pathUnderQuery,s.push("under requested subtree")),a+=OC(o,t,s),Vi.test(e.path)&&!t.explicitLowSignal&&(a+=Z.lowSignalPathPenalty,s.push("low-signal path (penalized)")),a+=IC(e.matchCount??0,s),a+=FC(e,n,s),{score:Math.round(a*100)/100,profile:r.id,pathRole:o,reasons:s}}function Ud(e,t,n,r={}){if(t==="matchCount")return{files:[...e].sort(Dd),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??pC,i=e,s=[],a=0;if(e.length>o){let d=[...e].sort(Dd);i=d.slice(0,o),s=d.slice(o),a=s.length}let c=kC(i,n),u=i.map(d=>{try{return{file:d,s:MC(d,n,c)}}catch{return{file:d,s:NC()}}});u.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 l={files:[...u.map(d=>d.file),...s],cappedCandidates:a};return r.debug&&(l.debug=new Map(u.map(d=>[d.file.path,d.s]))),l}function NC(){return{score:0,profile:"generic",pathRole:"unknown",reasons:["ranking unavailable for this file"]}}function Dd(e,t){let n=(t.matchCount??0)-(e.matchCount??0);return n!==0?n:e.path.localeCompare(t.path)}function ji(e,t){for(let n of e)if(n.test(t))return!0;return!1}function Bd(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function DC(e){return!!e&&/^[A-Za-z_$][\w$]*$/.test(e.trim())}function HC(e,t,n){if(e.indexOf(`
35
+ `)}function PO(e,t,n,r){let o=Array.isArray(e.fileChanges)?e.fileChanges:[],i=n.patches.files,s=i&&i.length>0?o.filter(f=>i.includes(ns(f))):o,a=Cl(t),c=a?s.filter(f=>rs(ns(f),a)||rs(f.patch,a)):s,{items:l,pagination:u}=Pl(c,t.filePage??t.page??1,t.itemsPerPage??20),d=n.patches.mode!=="none",p=l.map(f=>{let m=gO(f,!1);if(!d||typeof f.patch!="string")return m;let g=r&&!a?SO(f.patch):f.patch,b=is(g,t.charOffset??0,t.charLength??12e3);return{...m,patch:b?.content??"",diff:$r(b?.content),...b?{patchPagination:b.pagination}:{}}});return n.changedFiles||n.patches.mode!=="none"?{changedFiles:p,filePagination:u}:o.length===0?{}:{filePathsPreview:o.slice(0,20).map(ns).filter(Boolean),filePathsPagination:{totalFiles:o.length,filesPerPage:20,hasMore:o.length>20,...o.length>20?{nextFilePage:2}:{}}}}function oo(e){return typeof e=="object"&&e!==null}function Sl(e){if(oo(e)&&!(typeof e.currentPage!="number"||typeof e.totalPages!="number"||typeof e.itemsPerPage!="number"||typeof e.totalItems!="number"||typeof e.hasMore!="boolean"))return e}function wl(e){if(oo(e)&&!(typeof e.charOffset!="number"||typeof e.charLength!="number"||typeof e.totalChars!="number"||typeof e.hasMore!="boolean"))return e}function wO(e){return{...e.changedFiles?{changedFiles:!0}:{},...e.patches.mode!=="none"?{patches:e.patches}:{}}}function xO(e){let t=e.changedFiles;if(Array.isArray(t))for(let n of t){if(!oo(n))continue;let r=wl(n.patchPagination);if(r?.hasMore)return r}}function TO(e){let t=e.comments;if(Array.isArray(t))for(let n of t){if(!oo(n))continue;let r=wl(n.bodyPagination);if(r?.hasMore)return r}}function EO(e,t,n,r){let o={},i=wl(e.bodyPagination),s=Sl(e.filePagination),a=Sl(e.commentPagination),c=Sl(e.commitPagination),l=xO(e),u=TO(e),d=wO(n);i&&(o.body={...i,nextQuery:_h(t,r,{body:!0},i)}),s&&(o.changedFiles={...s,nextQuery:Rl(t,r,d,"filePage",s)}),a&&n.comments&&(o.comments={...a,nextQuery:Rl(t,r,{comments:n.comments},"commentPage",a)}),u?.hasMore&&u.nextCharOffset!==void 0&&n.comments&&(o.commentBody={...u,nextQuery:os(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:Rl(t,r,{commits:n.commits},"commitPage",c)}),l&&n.patches.mode!=="none"&&(o.patches={...l,nextQuery:_h(t,r,{patches:n.patches},l,{filePage:t.filePage??t.page})});let p=e.filePathsPagination;return oo(p)&&(o.filePaths={...p,hasMore:p.hasMore===!0,nextQuery:p.hasMore===!0?os(t,r,{content:{changedFiles:!0},filePage:p.nextFilePage}):void 0}),Object.keys(o).length>0?o:void 0}function kO(e){delete e.bodyPagination,delete e.filePagination,delete e.commentPagination,delete e.commitPagination,delete e.filePathsPagination}function Mh(e,t,n,r,o){let i=Number(e.number),s=typeof e.body=="string"?e.body:void 0,a=s&&r?CO(s):s,c=n.body?is(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,p=t.prNumber!==void 0||t.verbose===!0,m={...{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,...p?{sourceBranch:e.sourceBranch,...e.sourceSha?{sourceSha:e.sourceSha}:{}}:{},createdAt:e.createdAt,...p?{updatedAt:e.updatedAt}:{},...p||!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}:{},...p&&!c?{bodyPreview:Ih(typeof e.body=="string"?e.body:void 0)}:{},...u?{next:mO(t,i,n)}:{}},...n.body?c?{body:c.content,bodyPagination:c.pagination}:{bodyEmpty:!0}:{},...PO(e,t,n,r),...yO(e,t,n),...bO(e,t,n),...RO(e,t,n),...e.reviewSummary?{reviewSummary:e.reviewSummary}:{},...Array.isArray(e.sanitizationWarnings)&&e.sanitizationWarnings.length>0?{sanitizationWarnings:e.sanitizationWarnings}:{}},g=EO(m,t,n,i);return kO(m),g&&(m.contentPagination=g),m}var Dh=y(()=>{"use strict";fe();Fi()});function OO(e){return e?e.includes('rel="next"'):!1}function Nh(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 Gh(e,t){try{let n=await ue(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=OO(i),a=o.data.map(u=>{let d=u.commit.author,p=u.commit.committer,f=p?.date??d?.date??"",m=u.commit.message,g=m.split(`
36
+ `)[0]??m;return{sha:u.sha,date:f,message:m,messageHeadline:g,url:u.html_url,author:{name:d?.name??"unknown",email:d?.email??"",...u.author?.login?{login:u.author.login}:{}},...p?{committer:{name:p.name??"unknown",email:p.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 Promise.all(a.map(async(u,d)=>{try{let p=o.data[d]?.sha??u.sha,f=await n.rest.repos.getCommit({owner:e.owner,repo:e.repo,ref:p});if(e.type==="file"&&e.path){let m=e.path,g=f.data.files?.find(b=>b.filename===m||b.previous_filename===m);if(g){let b=g.patch!==void 0?Nh(g.patch,e.charOffset,e.charLength):void 0;return{...u,additions:g.additions,deletions:g.deletions,status:g.status,...b!==void 0?{patch:b.patch,...b.patchPagination?{patchPagination:b.patchPagination}:{},diff:$r(b.patch)}:{},...g.previous_filename?{previousFilename:g.previous_filename}:{}}}}else{let m=e.path,g=(f.data.files??[]).filter(x=>!m||x.filename.startsWith(m)).map(x=>{let H=x.patch!==void 0?Nh(x.patch,e.charOffset,e.charLength):void 0;return{filename:x.filename,status:x.status,additions:x.additions,deletions:x.deletions,...H!==void 0?{patch:H.patch,...H.patchPagination?{patchPagination:H.patchPagination}:{},diff:$r(H.patch)}:{},...x.previous_filename?{previousFilename:x.previous_filename}:{}}}),b=Math.max(1,e.filePage??1),S=Math.max(1,e.itemsPerPage??20),C=g.length,k=Math.max(1,Math.ceil(C/S)),_=Math.min(b,k),E=(_-1)*S,O=g.slice(E,E+S);return{...u,files:O,filesPagination:{currentPage:_,totalPages:k,itemsPerPage:S,totalFiles:C,hasMore:_<k,..._<k?{nextFilePage:_+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 Hh=y(()=>{"use strict";Be();St();Fi()});async function zh(e){let{queries:t,authInfo:n}=e,r=tt(n);return re(t,async(o,i)=>{try{let s=Fe(Pn,o);if(s.ok===!1)return s.error;if(s.data.type==="commits"){let O=s.data;if(!O.owner||!O.repo)return F("owner and repo are required for commits mode.",o);let x=O.path,H=x&&!x.endsWith("/")?"file":"repo";if(H==="file"&&!x)return F("path is required when querying a specific file in commits mode.",o);let I=await Gh({type:H,owner:O.owner,repo:O.repo,path:x,branch:O.branch,since:O.since,until:O.until,author:O.author,page:Number(O.page)||1,perPage:Number(O.perPage)||30,filePage:typeof O.filePage=="number"?O.filePage:void 0,itemsPerPage:typeof O.itemsPerPage=="number"?O.itemsPerPage:void 0,includeDiff:!!O.includeDiff,charOffset:typeof O.charOffset=="number"?O.charOffset:void 0,charLength:typeof O.charLength=="number"?O.charLength:void 0},n);if(Qn(I))return F(I,o,{toolName:A.GITHUB_SEARCH_PULL_REQUESTS});let{commits:v}=I.data,D=v.length>0;return Oe(o,I.data,D,A.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:I.rawResponseChars})}let a=r(),c={...s.data},l=Ah(c),u=c.prNumber!==void 0;if(u||(c.content=void 0,c.reviewMode=void 0),!(c.keywordsToSearch?.length||c.owner||c.repo||c.author||c.assignee||c.prNumber&&c.owner&&c.repo))return F("At least one valid search parameter, filter, or PR number is required.",o);let p=await zt(c,()=>a.provider.searchPullRequests(mh(c)));if(p.ok===!1)return p.result;let f=u?l.changedFiles||l.patches.mode!=="none":!1,{pullRequests:m,resultData:g}=gh(p.response.data,{includeFileChanges:f});c.prNumber!==void 0&&delete g.pagination;let b=!u&&(!!o.content||!!o.reviewMode),S={...l,body:!1,changedFiles:!1,patches:{mode:"none"},comments:!1,commits:!1},C=c.minify==="standard",k=u,_=m.map(O=>Mh(O,c,b?S:l,C,k));g.pull_requests=_,!u&&c.concise===!0&&(g.pull_requests=_.map(O=>{let x=O;return`#${x.number} ${x.title}`}));let E=_.length>0;return Oe(c,g,E,A.GITHUB_SEARCH_PULL_REQUESTS,{rawResponse:p.response.rawResponseChars})}catch(s){return ve(s,o,void 0,A.GITHUB_SEARCH_PULL_REQUESTS)}},{toolName:A.GITHUB_SEARCH_PULL_REQUESTS,keysPriority:["pull_requests","pagination","total_count","error"]},e)}var Bh=y(()=>{"use strict";Io();pe();$e();Me();qn();cn();Lh();Dh();Hh();xi()});function Qh(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 Uh=y(()=>{"use strict"});function vO(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,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,url:t.url,updatedAt:t.updatedAt};return Object.fromEntries(Object.entries(n).filter(([,r])=>r!==void 0))}function AO(e,t){let n=t.concise===!0;return{data:{pagination:e.pagination,repositories:n?e.repositories.map(r=>`${r.owner?`${r.owner}/`:""}${r.repo}`):e.repositories.map(vO)}}}function qh(e){return!!(e.topicsToSearch&&(Array.isArray(e.topicsToSearch)?e.topicsToSearch.length>0:e.topicsToSearch))}function Vh(e){return!!(e.keywords&&e.keywords.length>0)}function LO(e){return!!(Vh(e)||qh(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 $h(e,t){return e?`${e} (${t==="topics"?"topics-based search":"keywords-based search"})`:`${t.charAt(0).toUpperCase()+t.slice(1)}-based repository search`}function _O(e){let t=qh(e),n=Vh(e);if(t&&n){let{topicsToSearch:r,keywords:o,...i}=e;return[{label:"topics",query:{...i,reasoning:$h(e.reasoning,"topics"),topicsToSearch:r}},{label:"keywords",query:{...i,reasoning:$h(e.reasoning,"keywords"),keywords:o}}]}return[{label:"combined",query:e}]}function IO(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 FO(e,t){return[...e].sort((n,r)=>{let o=MO(n,r,t.sort);if(o!==0)return o;let i=jh(r,t)-jh(n,t);if(i!==0)return i;let s=(r.stars??0)-(n.stars??0);return s!==0?s:xl(n).localeCompare(xl(r))})}function MO(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 Qh(e.updatedAt,t.updatedAt);case"best-match":case void 0:return 0;default:return 0}}function jh(e,t){let n=DO(t),r=xl(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 DO(e){let t=e.keywords??[],n=e.topicsToSearch??[];return[...t,...n].map(r=>r.trim().toLowerCase()).filter(r=>r.length>0)}function xl(e){return`${e.owner}/${e.repo}`}function NO(e){return{currentPage:e.currentPage,totalPages:e.totalPages,perPage:e.entriesPerPage||10,totalMatches:e.totalMatches||0,hasMore:e.hasMore,...e.hasMore?{nextPage:e.currentPage+1}:{}}}function GO(e){let t=e.map(n=>n.response.data.pagination).filter(n=>!!n);if(t.length!==0)return{currentPage:t[0].currentPage,totalPages:Math.max(...t.map(n=>n.totalPages)),hasMore:t.some(n=>n.hasMore),entriesPerPage:t[0].entriesPerPage,totalMatches:t.reduce((n,r)=>n+(r.totalMatches??0),0),reachableTotalMatches:t.reduce((n,r)=>n+(r.reachableTotalMatches??r.totalMatches??0),0),totalMatchesKind:t.some(n=>n.totalMatchesKind==="lowerBound")?"lowerBound":t.some(n=>n.totalMatchesKind==="reported")?"reported":"exact",totalMatchesCapped:t.some(n=>n.totalMatchesCapped===!0)}}function HO(e){return e.reduce((t,n)=>t+(n.response.rawResponseChars??Q(n.response.data??n.response)),0)}async function Wh(e){let{queries:t,authInfo:n}=e,r=tt(n);return re(t,async(o,i)=>{try{if(!LO(o))return F("At least one repository search term or filter is required.",o);let s=r(),a=_O(o),{successes:c,failures:l}=await Lg(a.map(E=>({meta:{label:E.label,query:E.query},operation:()=>s.provider.searchRepos(ph(E.query))}))),u=c.map(E=>({label:E.meta.label,query:E.meta.query,response:E.response})),d=l.map(E=>({label:E.meta.label,query:E.meta.query,response:E.response}));if(u.length===0){let E=d[0];return E?$i(E.response,o):ve(new Error("Repository search produced no provider results"),o,void 0,A.GITHUB_SEARCH_REPOSITORIES)}let p=o.limit,f=FO(IO(u.flatMap(E=>fh(E.response.data.repositories))),o),m=p!=null?f.slice(0,p):f,g=u.length===1?u[0]:void 0,S=u.length>1?GO(u):g?.response.data.pagination,C=S?NO(S):void 0,k=m.length>0,_=AO({repositories:m,pagination:C},o);return Oe(o,_.data,k,A.GITHUB_SEARCH_REPOSITORIES,{rawResponse:HO([...u,...d])})}catch(s){return ve(s,o,void 0,A.GITHUB_SEARCH_REPOSITORIES)}},{toolName:A.GITHUB_SEARCH_REPOSITORIES,keysPriority:["repositories","pagination","error"]},e)}var Kh=y(()=>{"use strict";pe();$e();Uh();Me();qn();cn();ie()});function zO(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 BO(e){let t={};for(let[n,r]of Object.entries(e)){let o=n.split("/").pop()??n;if(n!==""&&n!=="."&&Gr(o))continue;let i=r.files.filter(a=>!Bn(a)),s=r.folders.filter(a=>!Gr(a));(i.length>0||s.length>0)&&(t[n]={files:i,folders:s})}return t}async function Yh(e){let{queries:t,authInfo:n}=e,r=tt(n);return re(t,async(o,i)=>{try{let s=r(),a=`${o.owner}/${o.repo}`,c=o.branch??await s.provider.resolveDefaultBranch(a),l=await zt(o,()=>s.provider.getRepoStructure(bh(o,c)));if(l.ok===!1)return zO(l.result,o);let u=BO(l.response.data.structure),d=Object.keys(u).length>0,p=Rh(l.response.data,o,u,c);return Oe(o,p,d,A.GITHUB_VIEW_REPO_STRUCTURE,{rawResponse:l.response.rawResponseChars})}catch(s){return ve(s,o,"Failed to explore repository structure",A.GITHUB_VIEW_REPO_STRUCTURE)}},{toolName:A.GITHUB_VIEW_REPO_STRUCTURE,keysPriority:["resolvedBranch","branchFallback","summary","pagination","structure","error"]},e)}var Xh=y(()=>{"use strict";pe();$e();Hr();Me();qn();cn()});import{existsSync as Jh}from"fs";import{delimiter as QO,dirname as UO,join as Zh}from"path";function ey(){return process.platform==="win32"?"npm.cmd":"npm"}function $O(){let e=UO(process.execPath);return Zh(e,ey())}function jO(){return process.platform==="win32"?[]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin"]}function qO(){let e=(process.env.PATH??"").split(QO).map(t=>t.trim()).filter(Boolean);return[...new Set([...e,...jO()])]}function VO(){let e=$O();if(Jh(e))return{command:process.execPath,argsPrefix:[e]};let t=ey();for(let n of qO()){let r=Zh(n,t);if(Jh(r))return{command:r,argsPrefix:[]}}return{command:t,argsPrefix:[]}}async function ss(e,t,n={}){if(!WO.includes(e))return{stdout:"",stderr:"",error:new Error(`Command '${e}' is not allowed`)};let r=Vi(t);if(!r.valid)return{stdout:"",stderr:"",error:new Error(`Invalid arguments: ${r.error}`)};let{timeout:o=3e4,cwd:i,env:s}=n,a=VO(),c=await an(a.command,[...a.argsPrefix,e,...t],{timeout:o,cwd:i,env:s,allowEnvVars:KO});return{stdout:c.stdout,stderr:c.stderr,exitCode:c.exitCode??void 0,error:c.error}}var WO,KO,ty=y(()=>{"use strict";Wi();WO=["view","search","ping","config","whoami"],KO=[...qi,...dg]});function so(e){try{return new URL(e).host||e}catch{return e}}function ny(e,t=Date.now()){let n=io.get(so(e));if(!(!n||n.state==="closed")&&n.state==="open"){let r=t-n.openedAt;if(r<Tl)throw new El(so(e),Tl-r);n.state="half-open"}}function kl(e){let t=io.get(so(e));t&&(t.failures=0,t.state="closed")}function ry(e,t=Date.now()){let n=so(e),r=io.get(n)??{failures:0,state:"closed",openedAt:0};r.state==="half-open"?(r.state="open",r.openedAt=t):(r.failures+=1,r.failures>=YO&&(r.state="open",r.openedAt=t)),io.set(n,r)}function oy(e,t=Date.now()){let n=io.get(so(e));return!n||n.state==="closed"?!1:n.state==="open"?t-n.openedAt<Tl:!1}var io,YO,Tl,El,Ol=y(()=>{"use strict";io=new Map,YO=5,Tl=3e4;El=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 iy(e){let t=e.get("Retry-After");if(!t)return;let n=parseInt(t,10);return isNaN(n)?void 0:n}function JO(e,t,n,r){e&&Dt({limit_type:"primary",retry_after_seconds:iy(r),api_method:t,api_url:n,provider:e})}function ZO(e,t,n,r,o){e.body?.cancel?.().catch(()=>{});let i=new Error(Or.FETCH_HTTP_ERROR.message(e.status,e.statusText));return i.status=e.status,i.headers=e.headers,r&&e.status!==404&&nf(r),e.status===429&&JO(o,t,n,e.headers),i.retryable=e.status===429||e.status===408||e.status>=500&&e.status<600,i}function ev(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=iy(r.headers);i!==void 0&&(o=Math.min(i*1e3,n))}return o}async function Bt(e,t={}){let{maxRetries:n=3,initialDelayMs:r=1e3,maxDelayMs:o=XO,headers:i={},method:s="GET",includeVersion:a=!1,signal:c,rateLimitProvider:l,packageRegistry:u}=t,d=e;if(a){let b=e.includes("?")?"&":"?";d=`${e}${b}version=${encodeURIComponent(nn)}`}let p={"User-Agent":`Octocode-MCP/${nn}`,...i},f=globalThis.fetch;if(!f)throw new Error(Or.FETCH_NOT_AVAILABLE.message);ny(d);let m,g=n+1;for(let b=1;b<=g;b++){if(c?.aborted)throw new Error("Request aborted");try{let S=await f(d,{method:s,headers:p,signal:c});if(!S.ok)throw ZO(S,s,d,u,l);if(S.status===204)return kl(d),null;let C=await S.json();return kl(d),C}catch(S){let C=S;if(c?.aborted||S instanceof Error&&S.name==="AbortError")throw new Error("Request aborted");if(C&&C.retryable===!1)throw S;if(m=S instanceof Error?S:new Error(String(S)),b===g)break;let k=ev(b,r,o,C);await new Promise(_=>setTimeout(_,k))}}throw ry(d),new Error(Or.FETCH_FAILED_AFTER_RETRIES.message(g,m?.message||""))}var XO,sy=y(()=>{"use strict";bi();gt();Si();Ol();XO=6e4});import{z as L}from"zod";var as,tv,ay,nv,cy=y(()=>{"use strict";as=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()}),tv=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()}),ay=L.looseObject({objects:L.array(tv),total:L.union([L.number(),L.string()]).optional()}),nv=L.union([L.string(),L.boolean(),L.number(),L.null(),L.record(L.string(),L.unknown())])});async function my(){if(cs)return cs;try{let e=await ss("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 cs=t,t}}catch{}return cs=ls,ls}function dn(e){return e.replace(/^git\+/,"").replace(/\.git$/,"")}function Xe(e){return e===void 0?0:Q(e)}async function gy(e){try{let t=`${ov}/${encodeURIComponent(e)}`,n=await Bt(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:Xe(n)}}catch{return{rawResponseChars:0}}}function us(e){return e.startsWith("@")&&e.includes("/")?!0:e.includes(" ")?!1:/^[a-z0-9][a-z0-9._-]*$/i.test(e)}function hy(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")}function iv(e){return e.replace(/^@/,"").replace(/[/_-]/g," ").replace(/\s+/g," ").trim()}function sv(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}function ly(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 uy(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 av(e){return e.type==="module"||e.module?"module":e.main?"commonjs":e.types||e.typings?"types-only":"unknown"}function vl(e,t=!1,n="cli"){let r=null,o;e.repository&&(typeof e.repository=="string"?r=dn(e.repository):(e.repository.url&&(r=dn(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:av(e),...o?{repositoryDirectory:o}:{},...ly(e.exports)?{exports:ly(e.exports)}:{},...uy(e.bin,e.name)?{bin:uy(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 cv(e){return typeof e.links?.repository=="string"?dn(e.links.repository):typeof e.repository=="string"?dn(e.repository):typeof e.repository?.url=="string"?dn(e.repository.url):null}function lv(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:cv(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 yy(e){return e.startsWith("@")?"@"+e.slice(1).replace("/","%2F"):e}async function by(e){try{let t=await my(),n=yy(e),r=`${t}/${n}`,o=AbortSignal.timeout(8e3);try{let s=await Bt(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/vnd.npm.install-v1+json"},signal:o,packageRegistry:"npm"}),a=Xe(s);if(s?.modified)return{lastPublished:s.modified,rawResponseChars:a}}catch{}let i=await Bt(r,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:o,packageRegistry:"npm"});return{lastPublished:i?.time?.modified||void 0,rawResponseChars:Xe(i)}}catch{return{rawResponseChars:0}}}async function Al(e,t,n){let[r,o]=await Promise.all([gy(e),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):by(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 ds(e){let t=e.toLowerCase();return t.includes("404")||t.includes("not found")||t.includes("e404")}async function uv(e,t){try{let n=await ss("view",[e,"--json"],{timeout:rv});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,...ds(c)?{}:{errorDetail:c},rawResponseChars:Xe(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=Xe(o),s=as.safeParse(o);return s.success?{pkg:vl(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,...ds(r)?{}:{errorDetail:r},rawResponseChars:0}}}async function dv(e,t){try{let n=await my(),r=yy(e),o=`${n}/${r}/latest`,i;try{i=await Bt(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=Xe(i);if(!i||typeof i!="object")return{pkg:null,rawResponseChars:s};let a=as.safeParse(i);return a.success?{pkg:vl(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,...ds(r)?{}:{errorDetail:r},rawResponseChars:0}}}function pv(e){return[`https://cdn.jsdelivr.net/npm/${e}/package.json`,`https://unpkg.com/${e}/package.json`]}async function Ry(e,t){let n=0,r;for(let o of pv(e)){let i;try{i=await Bt(o,{maxRetries:0,initialDelayMs:300,headers:{Accept:"application/json"},signal:AbortSignal.timeout(8e3)})}catch(c){let l=c instanceof Error?c.message:String(c);ds(l)||(r=l);continue}if(n+=Xe(i),!i||typeof i!="object")continue;let s=as.safeParse(i);if(!s.success){r="Invalid npm CDN package.json response format";continue}return{pkg:vl(s.data,t,"cdn"),rawResponseChars:n}}return{pkg:null,...r?{errorDetail:r}:{},rawResponseChars:n}}async function Ll(e,t=!1){let[n,r]=await Promise.allSettled([uv(e,t),dv(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?Al(e,s.pkg,s.rawResponseChars):{pkg:null,errorDetail:o.errorDetail||i.errorDetail,rawResponseChars:o.rawResponseChars+i.rawResponseChars}}async function fv(e,t,n=!1){let{pkg:r,errorDetail:o,rawResponseChars:i}=await Ll(e,t);if(!r){if(o){let s=hy(o);if(s&&n){let a=await Ry(e,t);if(a.pkg){let c=await Al(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 mv(e,t,n,r=0){let o=Math.max(t+r,t),i=await ss("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:Xe(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=Xe(a);if(!Array.isArray(a))return{error:"Invalid npm search response format",rawResponseChars:c};let u=[...a].sort((m,g)=>{let b=m?.score?.final??0;return(g?.score?.final??0)-b}).slice(r,r+t),d=await Promise.all(u.map(async m=>{if(!m||typeof m!="object")return null;let g=m;if(!g.name)return null;if(n){let b=await Ll(g.name,!0);if(b.pkg)return b}return{pkg:lv(g),rawResponseChars:0}})),p=d.map(m=>m?.pkg).filter(m=>!!m),f=d.reduce((m,g)=>m+(g?.rawResponseChars??0),0);return{packages:p,totalFound:a.length,rawResponseChars:c+f}}async function gv(e,t,n,r=0){try{let o=r>0?`&from=${r}`:"",i=`${ls}/-/v1/search?text=${encodeURIComponent(e)}&size=${t}${o}`,s;try{s=await Bt(i,{maxRetries:1,initialDelayMs:500,signal:AbortSignal.timeout(8e3),packageRegistry:"npm"})}catch(m){return{error:`NPM registry search failed: ${m instanceof Error?m.message:String(m)}`,hints:["Check package name for typos","Try searching with a simpler term"]}}let a=Xe(s);if(!s||typeof s!="object")return{packages:[],totalFound:0,rawResponseChars:a};let c=ay.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((m,g)=>{let b=m.score?.final??0;return(g.score?.final??0)-b}).map(m=>m.package).filter(m=>typeof m.name=="string"&&m.name.length>0).slice(0,t),d=await Promise.all(u.map(async m=>{if(n){let g=await Ll(m.name,!0);if(g.pkg)return g}return{pkg:{name:m.name,npmUrl:(m.links?.npm??"")||`https://www.npmjs.com/package/${encodeURIComponent(m.name)}`,repoUrl:m.links?.repository&&typeof m.links.repository=="string"?dn(m.links.repository):null,version:m.version??"unknown",source:"registry",...m.description?{description:m.description}:{},...m.links?.homepage?{homepage:m.links.homepage}:{}},rawResponseChars:0}})),p=d.map(m=>m.pkg).filter(m=>!!m),f=d.reduce((m,g)=>m+g.rawResponseChars,0);return{packages:p,totalFound:sv(c.data.total,p.length),rawResponseChars:a+f}}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 dy(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 Bt(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:Xe(i)};let s=i;if(!Array.isArray(s.results))return{packages:[],totalFound:0,rawResponseChars:Xe(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"?dn(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:Xe(i)}}catch(o){return{error:`Web search failed: ${o instanceof Error?o.message:String(o)}`}}}async function py(e,t,n,r=0){try{let o=await mv(e,t,n,r);if(!("error"in o))return o}catch{}return gv(e,t,n,r)}async function fy(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}):gy(t.name),t.lastPublished?Promise.resolve({lastPublished:void 0,rawResponseChars:0}):by(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)]}}async function Sy(e,t,n,r=0){let o=Qe("npm-search",{name:e,limit:t,metadata:n,from:r});return Ue(o,async()=>{if(oy(ls)){if(r===0&&t===1&&us(e)){let u=await Ry(e,n);if(u.pkg){let d=await Al(e,u.pkg,u.rawResponseChars);return{packages:d.pkg?[d.pkg]:[],totalFound:d.pkg?1:0,rawResponseChars:d.rawResponseChars}}}let l=await dy(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&&us(e)){let l=await fv(e,n,t===1);if("error"in l){if(!hy(l.error))return l}else if(l.packages.length>0||t===1)return l}let s=await py(e,t,n,r);if(!("error"in s)&&s.packages.length>0)return fy(s);let a=iv(e);if(a!==e){let l=await py(a,t,n,r);if(!("error"in l)&&l.packages.length>0)return fy(l)}let c=await dy(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 ls,rv,cs,ov,Cy=y(()=>{"use strict";ty();sy();Nt();Ol();cy();ie();ls="https://registry.npmjs.org",rv=3e3,cs=null;ov="https://api.npmjs.org/downloads/point/last-week"});async function Py(e){let t=us(e.name),n=e.itemsPerPage??(t?1:10),r=Math.max(0,((e.page??1)-1)*n);return Sy(e.name,n,!0,r)}var wy=y(()=>{"use strict";Cy()});function hv(e){return"error"in e}function ps(e){return"npmUrl"in e}function yv(e){return ps(e)&&e.path?e.path:e.name}function bv(e){return ps(e)?e.repoUrl:e.repository}function Rv(e){if(!e)return;let t=e.replace(/^\.\//,"").replace(/^\//,"");return t.length>0?t:void 0}function Sv(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 Cv(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 Pv(e,t){let n=Cv(e);if(!n)return;let{owner:r,repo:o}=n;return{viewRepoStructure:{tool:"ghViewRepoStructure",query:{owner:r,repo:o,...t?{path:t}:{}}},searchCode:{tool:"ghSearchCode",query:{owner:r,repo:o}},cloneRepo:{tool:"ghCloneRepo",query:{owner:r,repo:o,...t?{sparsePath:t}:{}}}}}function wv(e){let t=yv(e),n=Sv(bv(e)),r={name:t};ps(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=Rv(ps(e)?e.repositoryDirectory:void 0);o&&(r.repositoryDirectory=o);let i=Pv(n,o);return i&&(r.next=i),r}function xv(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 xy(e){return re(e.queries,async t=>{try{if(!t.packageName)return F("Package name is required for package search",t);let n=await Py({name:t.packageName,page:t.page,itemsPerPage:t.itemsPerPage,mainResearchGoal:t.mainResearchGoal,researchGoal:t.researchGoal,reasoning:t.reasoning});if(hv(n))return F(n.error,t,{rawResponse:n});let r=n.packages,o=r.map(wv),i=o.length>0,s=r.length>1||n.totalFound>1,a=xv(t,n.totalFound,o.length,s);return Oe(t,{packages:o,pagination:a},i,A.PACKAGE_SEARCH,{rawResponse:n.rawResponseChars??n})}catch(n){return F(n,t,{toolName:A.PACKAGE_SEARCH})}},{toolName:A.PACKAGE_SEARCH,keysPriority:["packages","pagination","error"]},e)}var Ty=y(()=>{"use strict";wy();$e();Me();pe()});var bt,ao=y(()=>{"use strict";bt={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 Ey(e,t){return n=>t}var ky=y(()=>{"use strict"});import{open as Tv,readFile as Ev,stat as kv}from"fs/promises";import{ContentSanitizer as Ov}from"@octocodeai/octocode-engine/contentSanitizer";function _l(e,t){let n=Math.abs(t-e);return n>=50&&n/e>=.02?{sourceChars:e,sourceBytes:t}:{sourceChars:e}}function Oy(e,t,n){return{...e,..._l(t,n)}}function vv(e){let t=e.fullContent===!0,n=e.matchString!==void 0,r=e.startLine!==void 0||e.endLine!==void 0;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 Av(e,t){try{return{fileStats:await kv(t)}}catch(n){let r=et.fileAccessFailed(e.path,n instanceof Error?n:void 0);return{errorResult:F(r,e,{toolName:A.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function Lv(e,t){return t>bt.LARGE_FILE_THRESHOLD_KB&&!e.matchString&&!e.startLine&&!e.fullContent}function _v(e,t,n){let r=et.fileTooLarge(e.path,n,bt.LARGE_FILE_THRESHOLD_KB);return F(r,e,{toolName:A.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}function Iv(e,t){let n=et.binaryFileUnsupported(e.path);return F(n,e,{toolName:A.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}async function Fv(e){let n=Buffer.alloc(8192),r;try{r=await Tv(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(Ey("binary sample handle close",void 0))}}async function Mv(e,t){try{return{content:await Ev(t,"utf-8")}}catch(n){let r=n instanceof Error?n:void 0,i=r?.code==="EISDIR"?et.fileAccessFailed(e.path,r):et.fileReadFailed(e.path,r);return{errorResult:F(i,e,{toolName:A.LOCAL_FETCH_CONTENT,extra:{resolvedPath:t}})}}}function Dv(e,t){return{status:"empty",errorCode:q.NO_MATCHES,totalLines:t}}function Nv(e,t,n){let r=Li(t,e.matchString,e.contextLines??5,e.matchStringIsRegex??!1,e.matchStringCaseSensitive??!1);if(r.lines.length===0)return{isPartial:!1,earlyResult:Dv(e,n)};let o=r.lines.join(`
37
+ `),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 p=r.matchRanges[0],f=r.matchRanges[r.matchRanges.length-1];p&&f&&(l=p.start,u=f.end,r.matchRanges.length>1&&(d=r.matchRanges))}return{resultContent:o,isPartial:!0,actualStartLine:l,actualEndLine:u,matchRanges:d,warnings:[c]}}function Gv(e){return e.startLine!==void 0&&e.endLine!==void 0}function Hv(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:q.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:q.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(`
38
+ `),isPartial:!0,actualStartLine:i,actualEndLine:s,warnings:a}}function zv(e,t,n){let r=t.split(`
39
+ `),o=Pt(t);return e.matchString?Nv(e,r,o):Gv(e)?Hv(e,r,o):{resultContent:t,isPartial:!1}}function Bv(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?M.applyContentViewMinification(t.resultContent,c):t.resultContent,u=e.charLength,d=e.charOffset??0,p=u,f=!1,m=d;p===void 0&&l.length>o&&(p=o,f=!0,a.push(`Auto-paginated: Content (${l.length} chars) exceeds ${o} char limit`));let g="char-limit",b=p;if(p!==void 0){let E=Ai(l,m,p,c);g=E.chunkMode,b=E.length}let S=Un(l,m,b,p!==void 0?{pageSize:p}:void 0),C=t.isPartial||S.hasMore,k;if(S.hasMore&&g==="char-limit"&&Oi(S.paginatedContent)){let E=S.charOffset+S.charLength;k=vi(l,E,c)}let _=S.hasMore&&S.nextCharOffset!==void 0?{continueChars:{tool:"localGetFileContent",query:{path:c,charOffset:S.nextCharOffset,charLength:p??S.charLength,minify:e.minify}}}:void 0;return{path:c,content:S.paginatedContent,...s!=="standard"&&{contentView:s},...C&&{isPartial:C},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()},...(p!==void 0||d>0||f)&&{pagination:{...jf(S),chunkMode:g,...k!==void 0&&{nextBlockChar:k}}},..._?{next:_}:{},...a.length>0&&{warnings:a}}}function Qv(e,t,n=!1){return typeof e.content!="string"?e:{...e,contentView:t,...n?{isSkeleton:!0}:{}}}async function fs(e){let t=Ze();try{let n=qe(e,A.LOCAL_FETCH_CONTENT);if(!n.isValid)return n.errorResult;let r=vv(e);if(r)return r;let o=n.sanitizedPath,i=String(e.path),{fileStats:s,errorResult:a}=await Av(e,o);if(a||!s)return a;let c=typeof s.size=="bigint"?Number(s.size):s.size,l=c/1024;if(await Fv(o))return U(Iv(e,o),c);if(Lv(e,l))return U(_v(e,o,l),c);let{content:u,errorResult:d}=await Mv(e,o);if(d||u===void 0)return d;let p=Ov.sanitizeContent(u,i),f=p.content,m=f.length,g=Buffer.byteLength(f,"utf-8"),b=p.hasSecrets?`Secrets detected and redacted: ${p.secretsDetected.join(", ")}`:void 0,S=e.minify,C=S==="standard"||S==="symbols",k=C?"standard":"none",_;if(S==="symbols"){let I=M.extractSignatures(f,i);if(I===null){let v=_i(f,i);if(v!==null)return U({path:e.path,content:v,contentView:"symbols",isSkeleton:!0,totalLines:Pt(f),..._l(m,g),...b?{warnings:[b]}:{}},m);_=`minify:"symbols" is not supported for this file type (${i.split(".").pop()??"unknown"}) \u2014 falling back to standard content view.`}if(I!==null){let v=Pt(f),D=M.applyContentViewMinification(I,i);return U({path:e.path,content:D,contentView:"symbols",isSkeleton:!0,totalLines:v,..._l(m,g),...b?{warnings:[b]}:{}},m)}}let E=Pt(f),O=zv(e,f,t),x=I=>{let v=[..._?[_]:[],...b?[b]:[]];if(v.length===0)return I;let D=I.warnings??[];return{...I,warnings:[...D,...v]}};if(O.earlyResult){let I=O.earlyResult.content,v=C&&typeof I=="string"?{...O.earlyResult,content:M.applyContentViewMinification(I,i)}:O.earlyResult;return U(Oy(x(Il(Qv(v,k),e,E)),m,g),m)}let H=Bv(e,O,s,E,t,C,k);return U(Oy(x(Il(H,e,E)),m,g),m)}catch(n){return F(n,e,{toolName:A.LOCAL_FETCH_CONTENT})}}function Il(e,t,n){return e}var ms=y(()=>{"use strict";Ac();ge();ki();vc();ao();Qr();zr();pe();wt();ji();Wr();ky();ie();Ii()});async function vy(e){let{queries:t}=e;return re(t||[],async n=>je({toolName:A.LOCAL_FETCH_CONTENT,query:n,contextMessage:"localGetFileContent execution failed",execute:async()=>{let r=Fe(wn,n);return r.ok===!1?r.error:await fs(r.data)}}),{toolName:A.LOCAL_FETCH_CONTENT},e)}var Ay=y(()=>{"use strict";pe();$e();ms();Bo();Me();Ht();ms()});function Vn(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 co(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 gs=y(()=>{"use strict"});function jv(e,t){let n=t??$v,r=new Set(e.split("/").filter(Boolean));return n.filter(o=>!r.has(o))}async function Wn(e){let t=e.details??!1,n=e.showFileLastModified??!1,r=n||(e.sortBy||"modified")==="modified";try{let o=qe(e,A.LOCAL_FIND_FILES);if(!o.isValid)return o.errorResult;let i={...e,path:o.sanitizedPath},s={...i,excludeDir:jv(i.path,i.excludeDir)},a=Yv(s),c=e.limit??1e4,l=M.queryFileSystem({path:s.path,recursive:!0,includeRoot:!0,showHidden:!0,maxDepth:s.maxDepth,minDepth:s.minDepth,names:s.names,pathPattern:s.pathPattern,regex:s.regex,entryType:s.entryType,empty:s.empty,modifiedWithin:s.modifiedWithin,modifiedBefore:s.modifiedBefore,accessedWithin:s.accessedWithin,sizeGreater:s.sizeGreater,sizeLess:s.sizeLess,permissions:s.permissions,executable:s.executable,readable:s.readable,writable:s.writable,excludeDir:s.excludeDir,limit:c}),u=l.totalDiscovered,d=l.wasCapped,p=l.entries.map(v=>qv(v,r)),f=e.sortBy||"modified";Vv(p,f,r);let m=Wv(p,t,n),g=m.length,b=e.itemsPerPage||20,S=e.page||1,C=Math.max(1,Math.ceil(g/b)),k=(S-1)*b,_=Math.min(k+b,g),O=m.slice(k,_),x=[...l.warnings,...l.skipped>0?[`${l.skipped} entr${l.skipped===1?"y":"ies"} skipped during filesystem traversal`]:[]],H=[...a,...x],I={...g===0?{status:"empty"}:{},path:i.path,files:O,pagination:{currentPage:S,totalPages:C,filesPerPage:b,totalFiles:g,hasMore:S<C,...S<C?{nextPage:S+1}:{},...d?{totalFilesFound:u}:{}},...H.length>0&&{warnings:H}};return U(Ly(I,e,{totalFiles:g}),l.entries.reduce((v,D)=>v+D.path.length,0))}catch(o){return F(o,e,{toolName:A.LOCAL_FIND_FILES})}}function qv(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 Ly(e,t,n){return e}function Vv(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 Wv(e,t,n){return e.map(r=>{let o={path:r.path,type:r.type};return r.size!==void 0&&r.type!=="directory"&&(o.sizeFormatted=Vn(r.size)),t&&r.permissions&&(o.permissions=r.permissions),r.modified&&(o.modified=r.modified),o})}function Yv(e){let t=[],n=[{key:"modifiedBefore",value:e.modifiedBefore},{key:"modifiedWithin",value:e.modifiedWithin},{key:"accessedWithin",value:e.accessedWithin}];for(let{key:r,value:o}of n)o&&!Kv.test(o)&&t.push(`${r}="${o}" has an unsupported format \u2014 filter was skipped. Use a relative duration like "7d", "2h", "1w", or "3m".`);return t}var $v,Kv,hs=y(()=>{"use strict";wt();gs();ge();pe();fe();ie();$v=[];Kv=/^\d+[hdwm]$/});async function _y(e){let{queries:t}=e;return re(t||[],async n=>je({toolName:A.LOCAL_FIND_FILES,query:n,contextMessage:"localFindFiles execution failed",execute:async()=>{let r=Fe(xn,n);return r.ok===!1?r.error:await Wn(r.data)}}),{toolName:A.LOCAL_FIND_FILES},e)}var Iy=y(()=>{"use strict";Uo();pe();$e();hs();Me();Ht();hs()});function Dl(e){return Ny.exec(e)?.[1]?.toLowerCase()??""}function aA(e){let t=Dl(e);if(!t)return!1;for(let n of sA)if(lo[n].extensions.includes(t))return!0;return!1}function cA(e,t,n){if(n&&n!=="auto")return lo[n];let r=Dl(e),o=(t??"").toLowerCase();for(let i of Fy){let s=lo[i];if(i!=="generic"&&o&&(i===o||s.extensions.includes(o)))return s}for(let i of Fy){let s=lo[i];if(i!=="generic"&&s.extensions.includes(r))return s}return lo.generic}function Gy(e){return eA.test(e)?"generated":nA.test(e)?"fixture":tA.test(e)?"test":oA.test(e)?"config":rA.test(e)?"docs":!Ml.test(e)&&(iA.test(e)||aA(e))?"source":"unknown"}function lA(e){if(!e)return;let t=/[A-Za-z_$][\w$]*/.exec(e);return t?t[0]:void 0}function uA(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 dA(e,t,n,r,o){if(!e||e.length===0)return 0;let i=PA(n.keyword),s=0,a="";for(let c of e){let l=c.value??"";if(!l)continue;let u=wA(l,r,n.caseSensitive),d=0,p=[];r&&i&&(new RegExp(`(^|[^\\w$])${zy(r)}([^\\w$]|$)`,n.caseSensitive?"":"i").test(u)?(d+=se.exactWholeWord,p.push("whole-word match")):!n.caseSensitive&&u.toLowerCase().includes(r.toLowerCase())?(d+=se.exactCaseInsensitive,p.push("case-insensitive match")):u.includes(r)&&(d+=se.substring,p.push("substring match")));let f=c.kind;if(f)d+=pA(f,p);else{let m=xA(u,r,t.id,n.caseSensitive);m!=="code"?(d+=se.commentOrStringPenalty,p.push(m==="comment"?"comment match (weak)":"string literal (weak)")):(Fl(t.declaration,u)&&(d+=se.declarationLine,p.push("declaration line")),Fl(t.export,u)&&(d+=se.exportLine,p.push("export/public line")),Fl(t.import,u)&&(d+=se.importLine,p.push("import line")),t.id==="markdown"&&Zv.test(u)&&(d+=se.headingLine,p.push("markdown heading")),(t.id==="json"||t.id==="yaml")&&fA(u,r)&&(d+=se.configKeyLine,p.push("config key match")))}d>s&&(s=d,a=p.join(", "))}return a&&o.push(a),s}function pA(e,t){switch(e){case"declaration":return t.push("AST: declaration"),se.declarationLine;case"export":return t.push("AST: export/public"),se.exportLine;case"configKey":return t.push("AST: config key"),se.configKeyLine;case"heading":return t.push("AST: heading"),se.headingLine;case"import":return t.push("AST: import"),se.importLine;case"comment":case"string":return t.push(`AST: ${e} (weak)`),se.commentOrStringPenalty;case"callsite":return t.push("AST: callsite"),1;default:return 0}}function fA(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 mA(e,t,n,r,o,i){let s=0;if(n){let c=e.toLowerCase(),l=n.toLowerCase();c.split("/").some(u=>u.replace(Ny,"").includes(l))&&(s+=se.pathSegmentToken,i.push("query token in path"))}let a=Dl(e);return r.extensions.includes(a)&&t.langType&&(s+=se.extMatchesLangType,i.push("extension matches langType")),o==="source"&&(s+=se.sourceDir,i.push("source file")),s}function gA(e,t,n){return t.explicitLowSignal?0:e==="generated"||e==="fixture"?(n.push(`${e} file (penalized)`),se.lowSignalPathPenalty):0}function hA(e,t){if(e<=0)return 0;let n=Math.log2(e+1)*se.matchCountScale,r=Math.min(n,se.matchCountCap);return e>1&&t.push(`match count saturated (${e})`),r}function yA(e,t){let n=uA(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=>bA(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 bA(e,t,n){let r=n?"":"i",o=new RegExp(`(^|[^\\w$])${zy(t)}([^\\w$]|$)`,r);for(let i of e.matches??[])if(o.test(i.value??""))return!0;return o.test(e.path)}function RA(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*se.rareQueryTokenScale,se.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 SA(e,t,n){let r=cA(e.path,t.langType,t.profileOverride),o=Gy(e.path),i=lA(t.keyword),s=[],a=0;return a+=dA(e.matches,r,t,i,s),a+=mA(e.path,t,i,r,o,s),t.queryPath&&e.path.startsWith(t.queryPath.replace(/\/+$/,"")+"/")&&(a+=se.pathUnderQuery,s.push("under requested subtree")),a+=gA(o,t,s),Ml.test(e.path)&&!t.explicitLowSignal&&(a+=se.lowSignalPathPenalty,s.push("low-signal path (penalized)")),a+=hA(e.matchCount??0,s),a+=RA(e,n,s),{score:Math.round(a*100)/100,profile:r.id,pathRole:o,reasons:s}}function Hy(e,t,n,r={}){if(t==="matchCount")return{files:[...e].sort(Dy),cappedCandidates:0};if(t==="path")return{files:[...e].sort((d,p)=>d.path.localeCompare(p.path)),cappedCandidates:0};if(t==="created"||t==="modified"||t==="accessed")return{files:[...e],cappedCandidates:0};let o=r.candidateCap??Xv,i=e,s=[],a=0;if(e.length>o){let d=[...e].sort(Dy);i=d.slice(0,o),s=d.slice(o),a=s.length}let c=yA(i,n),l=i.map(d=>{try{return{file:d,s:SA(d,n,c)}}catch{return{file:d,s:CA()}}});l.sort((d,p)=>{if(p.s.score!==d.s.score)return p.s.score-d.s.score;let f=(p.file.matchCount??0)-(d.file.matchCount??0);return f!==0?f:d.file.path.localeCompare(p.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 CA(){return{score:0,profile:"generic",pathRole:"unknown",reasons:["ranking unavailable for this file"]}}function Dy(e,t){let n=(t.matchCount??0)-(e.matchCount??0);return n!==0?n:e.path.localeCompare(t.path)}function Fl(e,t){for(let n of e)if(n.test(t))return!0;return!1}function zy(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function PA(e){return!!e&&/^[A-Za-z_$][\w$]*$/.test(e.trim())}function wA(e,t,n){if(e.indexOf(`
40
40
  `)<0)return e;let o=e.split(`
41
- `);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 GC(e,t,n,r){if(n==="markdown")return/<!--/.test(e)?"comment":"code";if(n==="json")return"code";if(mC.test(e))return"comment";let o=UC(e,t,r);if(o<0)return"code";let i=BC(e);return i>=0&&o>i?"comment":zC(e,o)?"string":"code"}function UC(e,t,n){return t?n?e.indexOf(t):e.toLowerCase().indexOf(t.toLowerCase()):-1}function BC(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 zC(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 zd(e){if(!e)return!1;if(Vi.test(e))return!0;let t=Gd(e);return t==="test"||t==="docs"||t==="fixture"||t==="generated"}var Qd=8,QC=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"]),$C=/^[A-Za-z_$][A-Za-z0-9_$]*$/;async function Kr(e,t,n,r,o){let i=t.sort??"relevance",s;try{s=Ud(e,i,YC(t),{debug:!!t.debugRanking})}catch{s={files:e,cappedCandidates:0},r.push("Relevance ranking failed; returning results in unranked engine order.")}let a=s.files,c=s.debug,u=a,l=!1;t.maxFiles&&a.length>t.maxFiles&&(u=a.slice(0,t.maxFiles),l=!0);let d=u.length,m=!!(t.filesOnly||t.filesWithoutMatch),p=!!(t.countLinesPerFile||t.countMatchesPerFile),f=m||p,g=u.reduce((Q,M)=>Q+(M.matchCount??0),0),h=f?o?.matchCount??g:g,b=t,R=b.itemsPerPage||We.DEFAULT_FILES_PER_PAGE,C=b.page||1,w=Math.ceil(d/R),T=(C-1)*R,A=Math.min(T+R,d),G=u.slice(T,A),$=b.maxMatchesPerFile||We.DEFAULT_MATCHES_PER_PAGE,x=G.map(Q=>{let M=Q.matches?.length??0,fe=Math.ceil(M/$),ie=Math.max(1,b.matchPage||1),Ye=(ie-1)*$,_t=Math.min(Ye+$,M),j=f?void 0:Q.matches?.slice(Ye,_t),Qe=c?.get(Q.path);return{path:Q.path,...m?{}:{matchCount:p?Q.matchCount||1:M},...j!==void 0&&{matches:j},...Qe?{ranking:{score:Qe.score,profile:Qe.profile,pathRole:Qe.pathRole,reasons:Qe.reasons}}:{},pagination:!f&&M>$?{currentPage:ie,totalPages:fe,matchesPerPage:$,totalMatches:M,hasMore:ie<fe,...ie<fe?{nextMatchPage:ie+1}:{}}:void 0}}),L=x.filter(Q=>Q.pagination?.hasMore),z=jC(x,t,n,{isFileListMode:f,currentPage:C,totalFilePages:w,matchPage:b.matchPage||1,matchesPerPage:$,hasFileWithMoreMatches:L.length>0}),se={searchEngine:n,...o?{stats:o}:{},files:x,pagination:{currentPage:C,totalPages:w,filesPerPage:R,totalFiles:d,...m?{}:{totalMatches:h},hasMore:C<w,...C<w?{nextPage:C+1}:{},...l?{totalFilesFound:a.length}:{}},...r.length>0?{warnings:r}:{},...Object.keys(z).length>0?{next:z}:{}};return $d(se,t,{totalMatches:h,totalFiles:d})}function $d(e,t,n){return e}function jC(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=VC(i);s.fetchExact={tool:"localGetFileContent",query:Wr({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"none"}),why:"Read exact source around the first grep match before editing, quoting, or validating comments/tests.",confidence:"exact"},s.fetchStandard={tool:"localGetFileContent",query:Wr({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"standard"}),why:"Read a token-efficient source slice around the first grep match.",confidence:"exact"}}else r.isFileListMode&&(s.fetchStandard={tool:"localGetFileContent",query:{path:o.path,minify:"standard"},why:"Read the first matched file from file-list/count mode.",confidence:"heuristic"});s.fetchSymbols={tool:"localGetFileContent",query:{path:o.path,minify:"symbols"},why:"Get a symbol skeleton for fast orientation before opening large bodies.",confidence:"exact"};let a=WC(i,t,n);if(a&&i?.line){let c={uri:o.path,symbolName:a,lineHint: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:Wr({...t,page:r.currentPage+1}),why:"Continue to the next page of matched files.",confidence:"exact"}),r.hasFileWithMoreMatches&&(s.nextMatchPage={tool:"localSearchCode",query:Wr({...t,maxMatchesPerFile:r.matchesPerPage,matchPage:r.matchPage+1}),why:"Continue within files that have more matches than this response returned.",confidence:"exact"}),s}function VC(e){let t=Math.max(1,e.line??1),n=Math.max(t,e.endLine??t);return{startLine:Math.max(1,t-Qd),endLine:n+Qd}}function WC(e,t,n){if(!(t.countLinesPerFile||t.countMatchesPerFile||t.countUnique||t.unique)){if(n==="structural")return KC(e?.metavars);if(!t.matchWindow)return t.onlyMatching?Ki(e?.value):Ki(t.keywords)}}function KC(e){if(e)for(let t of Object.values(e))for(let n of t){let r=Ki(n);if(r)return r}}function Ki(e){if(typeof e!="string")return;let t=e.trim();if($C.test(t)&&!QC.has(t))return t}function Wr(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function YC(e){let t=e.rankingProfile,n=!!(e.include?.length||zd(e.path));return{queryPath:e.path,keyword:e.keywords,langType:e.langType,caseSensitive:e.caseSensitive,wholeWord:e.wholeWord,profileOverride:t,explicitLowSignal:n}}function jd(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=O.validateRipgrepPattern(r,e.fixedString,e.perlRegex);return o.valid||t.push(`invalid regex: ${o.error??"unknown regex parse error"}`),!e.fixedString&&XC(r)&&n.push(`pattern '${r}' looks literal \u2014 pass fixedString: true to skip regex parsing and avoid accidental wildcards`),!e.perlRegex&&JC(r)&&n.push("pattern uses lookaround (?= / ?! / ?<= / ?<!) which requires perlRegex: true; ripgrep will refuse it otherwise"),{isValid:t.length===0,errors:t,warnings:n}}function XC(e){return/[\\^$|()[\]{}+*?]/.test(e)?!1:!!(e.includes(".")&&/^[\w.\-/:]+$/.test(e))}function JC(e){return/\(\?[=!<]/.test(e)}function qC(e){return e==="created"||e==="modified"||e==="accessed"?e:"path"}function eT(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:qC(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 tT(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 Vd(e){let t=[],n=ZC(e);if(!n.isValid)return _(new Error(`Query validation failed: ${n.errors.join("; ")}`),e,{toolName:S.LOCAL_RIPGREP,extra:{warnings:n.warnings}});t.push(...n.warnings);let r=Qt.safeParse(e);if(!r.success){let g=r.error.issues.map(h=>h.message);return _(new Error(`Query validation failed: ${g.join(", ")}`),e,{toolName:S.LOCAL_RIPGREP,extra:{warnings:t}})}let o=r.data;if(!o.path)return _(new Error("Path is required for search"),o,{toolName:S.LOCAL_RIPGREP,extra:{warnings:t}});let s=Le(o,S.LOCAL_RIPGREP);if(!s.isValid)return s.errorResult;let a={...o,path:s.sanitizedPath},c=jd({pattern:a.keywords??"",fixedString:a.fixedString,perlRegex:a.perlRegex});if(!c.isValid)return _(new Error(`Pattern validation failed: ${c.errors.join("; ")}`),o,{toolName:S.LOCAL_RIPGREP,extra:{warnings:[...t,...c.warnings]}});let u=[...c.warnings],l;try{l=await O.searchRipgrep(eT(a))}catch(g){return _(g instanceof Error?g:new Error(String(g)),o,{toolName:S.LOCAL_RIPGREP})}let d=l.files.map(g=>({path:g.path,matchCount:g.matchCount,matches:g.matches.map(h=>{let b={line:h.line,column:h.column,value:h.value};return h.count!==void 0&&(b.count=h.count),h.kind!==void 0&&(b.kind=h.kind),h.scoreHint!==void 0&&(b.scoreHint=h.scoreHint),b})})),m=tT(d),p={matchCount:l.stats.matchCount,matchedLines:l.stats.matchedLines,filesMatched:l.stats.filesMatched,filesSearched:l.stats.filesSearched,bytesSearched:l.stats.bytesSearched??void 0,searchTime:l.stats.searchTime};if(d.length===0)return D({status:"empty",searchEngine:"rg",stats:p,warnings:[...t,...u]},m);!a.filesOnly&&m>We.LARGE_RESULT_BYTES_HINT&&u.push(`Result payload is large (~${Math.round(m/1024)}KB).`);let f=await Kr(d,o,"rg",[...t,...u],p);return D(f,m)}var nT=[],rT=2e3,oT=1e6,iT="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`.",sT={ts:["ts","tsx","mts","cts"],typescript:["ts","tsx","mts","cts"],tsx:["tsx"],js:["js","jsx","mjs","cjs"],javascript:["js","jsx","mjs","cjs"],jsx:["jsx"],py:["py","pyi"],python:["py","pyi"],go:["go"],rs:["rs"],rust:["rs"],java:["java"],c:["c","h"],cpp:["cpp","hpp","cc","cxx","hh","hxx"],"c++":["cpp","hpp","cc","cxx","hh","hxx"],cs:["cs"],csharp:["cs"],sh:["sh","bash","zsh"],bash:["sh","bash","zsh"],shell:["sh","bash","zsh"],html:["html","htm"],css:["css"],scss:["scss"],less:["less"],scala:["scala","sc","sbt"],json:["json","jsonc"],yaml:["yaml","yml"],yml:["yaml","yml"],toml:["toml"]};function aT(e){if(!e)return;let t=e.trim().toLowerCase();return(sT[t]??[t.replace(/^[.*]+/,"")]).filter(Boolean).map(r=>`*.${r}`)}async function Wd(e){let t=Le(e,S.LOCAL_RIPGREP);if(!t.isValid)return t.errorResult;let n;try{n=O.structuralSearchFiles({path:t.sanitizedPath,pattern:e.pattern,rule:e.rule,include:e.include?.length?e.include:aT(e.langType),excludeDir:e.excludeDir?.length?e.excludeDir:nT,maxFiles:e.maxFiles??rT,maxFileBytes:oT})}catch(s){let a=s instanceof Error?s.message:String(s),c=e.langType||"source";return _(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:S.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.split(`
42
- `,1)[0],column:a.startCol,endColumn:a.endCol,metavars:a.metavars,...a.metavarRanges&&Object.keys(a.metavarRanges).length>0?{metavarRanges:a.metavarRanges}:{}}))})),o={matchCount:n.totalMatches},i=[...n.warnings];return(r.length===0||n.totalMatches===0)&&i.push(iT),await Kr(r,e,"structural",i,o)}function cT(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 Kd(e){let t=cT(e);if(t.mode==="structural")return await Wd(t);t.contextLines===void 0&&(t.contextLines=2);try{return await Vd(t)}catch(n){let r=n instanceof Error?n.message:String(n);return r.includes("Output size limit exceeded")?{status:"error",error:r,errorCode:H.OUTPUT_TOO_LARGE}:_(n,t,{toolName:S.LOCAL_RIPGREP})}}async function Yd(e){let{queries:t}=e;return Y(t||[],async n=>Ae({toolName:S.LOCAL_RIPGREP,query:n,contextMessage:"localSearchCode execution failed",execute:async()=>{let r=Te(Qt,n);return r.ok===!1?r.error:await Kd(r.data)}}),{toolName:S.LOCAL_RIPGREP},e)}var uT=new Set(["+","*","?"]),lT=1e3;function dT(e,t){let n=t+1;for(;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n++,n++;return n+1}function Xd(e,t){let n=e[t];return n===void 0?!1:uT.has(n)||n==="{"&&fT(e,t)}function pT(e,t,n){let r=n.pop()??!1,o=Xd(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?Zd(e,t+1):t+1})}function mT(e,t,n){return n.some(r=>r)?{unsafe:!0,next:t+1}:(n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:Zd(e,t)})}function Jd(e){if(e.length>lT)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=dT(e,r);continue}if(o==="("){n.push(!1),r++;continue}if(o===")"){let i=pT(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}if(Xd(e,r)){let i=mT(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}r++}return{safe:!0}}function fT(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 Zd(e,t){return e[t]==="{"?t=e.indexOf("}",t)+1:t++,t<e.length&&(e[t]==="?"||e[t]==="+")&&t++,t}function qd(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(!Jd(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 t.directoriesOnly&&(n=n.filter(r=>r.type==="directory")),t.filesOnly&&(n=n.filter(r=>r.type==="file")),n}function ep(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 tp(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 np(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+kn(i.size):o,0);return`${e.length} entries (${t} files, ${n} dirs, ${Vt(r)})`}function rp(e,t){let n=e.length,r=t.itemsPerPage||We.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 op(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`]}async function ip(e){try{let t=Le(e,S.LOCAL_VIEW_STRUCTURE);if(!t.isValid)return t.errorResult;let n=e.showFileLastModified??(e.sortBy==="time"||e.details===!0);return gT(e,t.sanitizedPath,n)}catch(t){let n=Fe.toolExecutionFailed("LOCAL_VIEW_STRUCTURE",t instanceof Error?t:void 0);return{status:"error",error:n.message,errorCode:n.errorCode}}}function gT(e,t,n=!1){let r=!!(e.maxDepth||e.recursive),o=r?e.maxDepth||(e.recursive?5:2):1,i=yT(e),s=r&&e.limit&&!hT(e,i)?e.limit*2:1e4,a;try{a=O.queryFileSystem({path:t,recursive:r,includeRoot:!1,showHidden:e.hidden??!1,maxDepth:o,names:i,extensions:e.extensions,entryType:RT(e),limit:s})}catch(C){return CT(C,e,t)}let c=a.entries.map(C=>bT(C,n,e.details??!1)),u=qd(c,e),l=e.sortBy??"name";u=u.sort((C,w)=>{let T=0;switch(l){case"size":{let A=C.sizeBytes??(C.size?kn(C.size):0),G=w.sizeBytes??(w.size?kn(w.size):0);T=A-G;break}case"time":n&&C.modified&&w.modified?T=C.modified.localeCompare(w.modified):T=C.name.localeCompare(w.name);break;case"extension":T=(C.extension||"").localeCompare(w.extension||"");break;default:T=C.name.localeCompare(w.name);break}return e.reverse?-T:T}),e.limit&&(u=u.slice(0,e.limit));let d=u.length,{paginatedEntries:m,pagination:p}=rp(u,e),g=e.details===!0||e.showFileLastModified===!0?{path:t,entries:m.map(C=>({...tp(C),path:C.path??`${t.replace(/\/$/,"")}/${C.name}`}))}:{path:t,...ep(m)},h=[...a.warnings,...op({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,R=np(u);return D(sp({...b?{status:"empty"}:{},...g,summary:R,...p.hasMore||p.totalPages>1?{pagination:p}:{},...h.length>0&&{warnings:h}},e),a.entries.reduce((C,w)=>C+w.path.length,0))}function hT(e,t){return!!((typeof e.pattern=="string"?e.pattern:void 0)&&!t)}function yT(e){let t=typeof e.pattern=="string"?e.pattern:void 0;if(t&&!t.includes("["))return t.includes("*")||t.includes("?")?[t]:[`*${t}*`]}function RT(e){if(e.filesOnly&&!e.directoriesOnly)return"f";if(e.directoriesOnly&&!e.filesOnly)return"d"}function bT(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:Vt(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=ST(e.permissions)),o}function ST(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 CT(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=Fe.pathValidationFailed(n,o?`Directory not found: ${n}`:i?`Permission denied: ${n}`:s?`Not a directory: ${n}`:`Cannot access path: ${n}`);return _(a,t,{toolName:S.LOCAL_VIEW_STRUCTURE})}function sp(e,t){return e}async function ap(e){let{queries:t}=e;return Y(t||[],async n=>Ae({toolName:S.LOCAL_VIEW_STRUCTURE,query:n,contextMessage:"localViewStructure execution failed",execute:async()=>{let r=Te(Tr,n);return r.ok===!1?r.error:await ip(r.data)}}),{toolName:S.LOCAL_VIEW_STRUCTURE,keysPriority:["path","summary","pagination","files","folders","entries"]},e)}import LT from"node:path";import{acquirePooledClient as gp,isLanguageServerAvailable as hp}from"@octocodeai/octocode-engine/lsp/manager";import{resolveImportAliasDefinitions as OT}from"@octocodeai/octocode-engine/lsp/resolver";import{resolveWorkspaceRootForFile as yp}from"@octocodeai/octocode-engine/lsp/workspaceRoot";import{safeReadFile as TT}from"@octocodeai/octocode-engine/lsp/validation";var cp={truncatedByDepth:!1,cycleCount:0,failedRequestCount:0};function Fn(e){return`${e.uri}:${e.range.start.line}:${e.name}`}async function up(e,t,n){if(t<=0)return e;let r=await TT(e.uri);if(!r)return e;let o=mn(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((u,l)=>{let d=s+l+1;return`${d===i+1?">":" "}${String(d).padStart(4," ")}| ${u}`}).join(`
43
- `);return{...e,content:c,displayRange:{startLine:s+1,endLine:a+1}}}async function PT(e,t){return Promise.all(e.map(async n=>({...n,from:await up(n.from,t,n.fromRanges)})))}async function ET(e,t){return Promise.all(e.map(async n=>({...n,to:await up(n.to,t)})))}async function Yi(e,t,n,r,o){if(n<=0||!e)return{calls:[],...cp};try{let i=await e.getIncomingCalls(t),s=o>0?await PT(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 u=Fn(c.from);return r.has(u)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(u),Yi(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,u)=>c+u.cycleCount,0),failedRequestCount:a.reduce((c,u)=>c+u.failedRequestCount,0)}}catch{return{calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1}}}async function Xi(e,t,n,r,o){if(n<=0||!e)return{calls:[],...cp};try{let i=await e.getOutgoingCalls(t),s=o>0?await ET(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 u=Fn(c.to);return r.has(u)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(u),Xi(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,u)=>c+u.cycleCount,0),failedRequestCount:a.reduce((c,u)=>c+u.failedRequestCount,0)}}catch{return{calls:[],truncatedByDepth:!1,cycleCount:0,failedRequestCount:1}}}import{readFile as wT}from"node:fs/promises";import{SymbolResolver as _T,SymbolResolutionError as xT}from"@octocodeai/octocode-engine/lsp/resolver";import{LSP_ERROR_CODES as lp}from"@octocodeai/octocode-engine/lsp/lspErrorCodes";async function Ji(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{return{ok:!0,value:{uri:o,absolutePath:o,content:await wT(o,"utf-8")}}}catch(i){return{ok:!1,error:{status:"error",error:i instanceof Error?i.message:String(i),errorType:"file_not_found",errorCode:lp.LSP_REQUEST_FAILED,hints:[`Could not read file: ${n??"<missing>"}`]}}}}async function dp(e,t){let n=await Ji(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 _T({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)),u=a>1&&c>3?!0:void 0;return{ok:!0,value:{...n.value,resolvedSymbol:{name:e.symbolName,uri:n.value.absolutePath,range:AT(o.position),foundAtLine:o.foundAtLine,orderHint:e.orderHint,position:o.position,...u&&{isAmbiguous:u}}}}}catch(o){if(o instanceof xT)return{ok:!1,error:{status:"empty",error:o.message,errorType:"symbol_not_found",errorCode:lp.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 AT(e){return{start:e,end:{line:e.line,character:e.character}}}var Zi;function Rp(e){return Zi||(Zi=new Set(O.getSupportedJsTsExtensions().map(t=>`.${t}`))),Zi.has(LT.extname(e).toLowerCase())}function IT(e,t){if(!Rp(e))return null;try{let n=O.extractJsSymbols(t,e);if(!n)return null;let r=JSON.parse(n);return Array.isArray(r)?r:null}catch{return null}}var kT=40,bp=40,vT=10,FT=8;async function Sp(e){return Y(e.queries||[],async t=>Ae({toolName:Ee,query:t,contextMessage:"lspGetSemantics execution failed",execute:async()=>{let n=await $T(t);return MT(NT(t,n))}}),{toolName:Ee,minQueryTimeoutMs:3e4},e)}function MT(e){return D(e,F(e))}function NT(e,t){return e.format!=="compact"||!DT(t)?t:HT(t)}function DT(e){return wt(e)&&typeof e.type=="string"&&typeof e.uri=="string"&&wt(e.payload)}function HT(e){return{...e,format:"compact",payload:GT(e.payload)}}function GT(e){switch(e.kind){case"definition":case"typeDefinition":case"implementation":return{kind:e.kind,locations:e.locations.map(pp)};case"references":return{kind:"references",...e.byFile?{byFile:e.byFile.map(BT)}:{locations:(e.locations??[]).map(pp)},totalReferences:e.totalReferences,totalFiles:e.totalFiles};case"callers":case"callees":case"callHierarchy":return{kind:e.kind,...e.root?{root:Cp(e.root)}:{},direction:e.direction,calls:e.calls.map(zT),...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(UT)};case"hover":case"empty":return e}}function UT(e){if(!wt(e))return String(e);let t=Oe(e,"line"),n=Oe(e,"character"),r=Oe(e,"endLine"),o=et(e,"kind"),i=et(e,"name"),s=Oe(e,"childCount"),a=et(e,"containerName");return[`${t}:${n}${r!==t?`-${r}`:""}`,o,i,a?`< ${a}`:"",s>0?`children=${s}`:""].filter(Boolean).join(" ")}function pp(e){if(typeof e=="string")return e;let t=e.displayRange?`${e.displayRange.startLine}-${e.displayRange.endLine}`:"?",n=e.isDefinition?" def":"",r=e.content?` | ${Pp(e.content,180)}`:"";return`${e.uri}:${t}${n}${r}`}function BT(e){if(!wt(e))return String(e);let t=et(e,"uri"),n=Oe(e,"firstLine"),r=Oe(e,"firstCharacter"),o=Oe(e,"count"),i=Tp(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 zT(e){if(!wt(e))return String(e);let t=et(e,"direction"),n=Cp(e.item),r=Tp(e,"ranges").map(QT).join(","),o=Oe(e,"rangeCount"),i=Oe(e,"rangeSampleCount"),s=et(e,"contentPreview");return[t,n,r?`ranges=${r}`:"",o>i?`totalRanges=${o}`:"",s?`| ${Pp(s,180)}`:""].filter(Boolean).join(" ")}function Cp(e){if(!wt(e))return String(e);let t=et(e,"name"),n=et(e,"kind"),r=et(e,"uri"),o=Oe(e,"line"),i=Oe(e,"endLine"),s=Oe(e,"selectionLine"),a=s>0?` sel=${s}`:"";return`${t} ${n} ${r}:${o}-${i}${a}`}function QT(e){return wt(e)?`${Oe(e,"line")}:${Oe(e,"character")}`:String(e)}function wt(e){return typeof e=="object"&&e!==null}function et(e,t,n=""){let r=e[t];return typeof r=="string"?r:n}function Oe(e,t,n=0){let r=e[t];return typeof r=="number"?r:n}function Tp(e,t){let n=e[t];return Array.isArray(n)?n:[]}function Pp(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}async function $T(e){if(e.type==="documentSymbols")return jT(e);let t=await dp(e,Ee);if(t.ok===!1){let i=typeof t.error.error=="string"?t.error.error:"Symbol anchor resolution failed";return rP(e,i)}let n=e.workspaceRoot??await yp(t.value.uri);if(!await hp(t.value.uri,n)){if(e.type==="references"){let i=WT(e,t.value);if(i)return i}return qe(e.type,t.value,"Language server unavailable")}let o=await gp(n,t.value.uri);if(!o)return qe(e.type,t.value,"Language server unavailable");switch(e.type){case"definition":return o.hasCapability("definitionProvider")?qi(e,t.value,"definition","definitionProvider",await OT({anchorUri:t.value.uri,symbolName:t.value.resolvedSymbol.name,locations:await o.gotoDefinition(t.value.uri,t.value.resolvedSymbol.position,t.value.content)})):qe(e.type,t.value,"definitionProvider unsupported",!0);case"typeDefinition":return o.hasCapability("typeDefinitionProvider")?qi(e,t.value,"typeDefinition","typeDefinitionProvider",await o.typeDefinition(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):qe(e.type,t.value,"typeDefinitionProvider unsupported",!0);case"implementation":return o.hasCapability("implementationProvider")?qi(e,t.value,"implementation","implementationProvider",await o.implementation(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):qe(e.type,t.value,"implementationProvider unsupported",!0);case"references":return o.hasCapability("referencesProvider")?Ep(e,t.value,await o.findReferences(t.value.uri,t.value.resolvedSymbol.position,e.includeDeclaration??!0,t.value.content)):qe(e.type,t.value,"referencesProvider unsupported",!0);case"hover":return o.hasCapability("hoverProvider")?KT(e,t.value,await o.hover(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):qe(e.type,t.value,"hoverProvider unsupported",!0);case"callers":case"callees":case"callHierarchy":return o.hasCapability("callHierarchyProvider")?YT(e,t.value,o):qe(e.type,t.value,"callHierarchyProvider unsupported",!0)}}async function jT(e){let t=await Ji(e,Ee);if(t.ok===!1)return t.error;let n=e.workspaceRoot??await yp(t.value.uri),r=await hp(t.value.uri,n),o=r?await gp(n,t.value.uri):null,i=!!o?.hasCapability("documentSymbolProvider"),s=[],a;if(i&&o){let h=await o.documentSymbols(t.value.uri,t.value.content);s=Array.isArray(h)?h:[],a="lsp"}else{let h=IT(t.value.uri,t.value.content);h&&(s=h,a="native")}let c=a!==void 0,u=XT(s),l=qT(s),{pageItems:d,pagination:m}=Yr(u,e.page??1,e.itemsPerPage??kT),p=eP(u,h=>h.kind),g=c?void 0:{category:r?"unsupportedOperation":"serverUnavailable",reason:(c?void 0:r?"documentSymbolProvider unsupported":"Language server unavailable; native outline supports JS/TS only")??"document symbols unavailable"};return{type:"documentSymbols",uri:t.value.uri,lsp:{serverAvailable:r,...a==="lsp"?{provider:"documentSymbolProvider"}:{},...a?{source:a}:{}},summary:{totalSymbols:u.length,returnedSymbols:d.length,topLevelSymbols:l,kinds:p},payload:{kind:"documentSymbols",symbols:d,...g?{empty:g}:{}},pagination:m}}function qi(e,t,n,r,o){let i=o.length>0,s=o.map(Io),{pageItems:a,pagination:c}=Yr(s,e.page??1,e.itemsPerPage??bp);return{type:e.type,uri:t.uri,resolvedSymbol:Ft(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}:{}}}var VT={kind:"lsp"};function Ep(e,t,n,r=VT){let o=r.kind==="native",i=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}:{}}}),s=e.groupByFile?oP(i):void 0,a=s??i.map(Io),{pageItems:c,pagination:u}=Yr(a,e.page??1,e.itemsPerPage??bp),l=i.length===0?{category:"noReferences",reason:o?"no in-file references found":"referencesProvider returned no references"}:void 0;return{type:"references",uri:t.uri,resolvedSymbol:Ft(t.resolvedSymbol),lsp:o?{serverAvailable:!1,source:"native"}:{serverAvailable:!0,provider:"referencesProvider",source:"lsp"},payload:{kind:"references",...s?{byFile:c}:{locations:c},totalReferences:i.length,totalFiles:new Set(i.map(d=>d.uri)).size,...l?{empty:l}:{}},pagination:u,...l&&o?{warnings:["source: native (oxc) \u2014 same-file references only; install a language server for cross-file references."]}:{}}}function WT(e,t){if(!Rp(t.uri))return null;let n;try{let i=O.findInFileReferences(t.content,t.uri,t.resolvedSymbol.position.line,t.resolvedSymbol.position.character);if(!i)return null;let s=JSON.parse(i);if(!Array.isArray(s))return null;n=s}catch{return null}let r=t.content.split(`
44
- `),o=n.map(i=>({uri:t.uri,range:i,content:(r[i.start.line]??"").trim()}));return Ep(e,t,o,{kind:"native",scope:"file"})}async function KT(e,t,n){let r=iP(n),o=!!(r.markdown||r.text);return{type:"hover",uri:t.uri,resolvedSymbol:Ft(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"hoverProvider"},payload:o?{kind:"hover",...r}:{kind:"empty",category:"noHover",reason:"hoverProvider returned no hover content"}}}async function YT(e,t,n){let o=(await n.prepareCallHierarchy(t.uri,t.resolvedSymbol.position,t.content))[0];if(!o)return qe(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 Yi(n,o,i,new Set([Fn(o)]),e.contextLines??0):s,c=e.type==="callees"||e.type==="callHierarchy"?await Xi(n,o,i,new Set([Fn(o)]),e.contextLines??0):s,u=R=>/node_modules\/typescript\/lib\/lib\.[^/]*\.d\.ts$/.test(R.to.uri),l=c.calls.filter(u).length,d=c.calls.filter(R=>!u(R)),m=[...a.calls.map(R=>({direction:"incoming",...R})),...d.map(R=>({direction:"outgoing",...R}))],p=m.map(R=>R.direction==="incoming"?tP(R,e.contextLines??0):nP(R,e.contextLines??0)),{pageItems:f,pagination:g}=Yr(p,e.page??1,e.itemsPerPage??vT),h=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:Ft(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"callHierarchyProvider"},payload:{kind:e.type,root:ts(o),direction:h,calls:f,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,...l>0&&{stdlibCallsExcluded:l}},...m.length===0?{empty:{category:"noCalls",reason:"callHierarchyProvider returned no calls"}}:{}},pagination:g}}function Yr(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 XT(e){let t=[];for(let n of e)wp(n,t);return t.sort((n,r)=>n.line-r.line||n.character-r.character)}function wp(e,t,n){if(!e||typeof e!="object")return;let r=e,o=ZT(r);if(typeof r.name=="string"&&o&&t.push({name:r.name,kind:es(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)&&JT.has(es(r.kind))){let i=typeof r.name=="string"?r.name:n;for(let s of r.children)wp(s,t,i)}}var JT=new Set(["file","module","namespace","package","class","enum","interface","struct"]);function ZT(e){if(mp(e.range))return e.range;let t=e.location;return t&&mp(t.range)?t.range:void 0}function mp(e){if(!e||typeof e!="object")return!1;let t=e;return fp(t.start)&&fp(t.end)}function fp(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.line=="number"&&typeof t.character=="number"}function qT(e){return e.filter(t=>t&&typeof t=="object"&&"name"in t).length}function eP(e,t){let n={};for(let r of e){let o=t(r);n[o]=(n[o]??0)+1}return n}function tP(e,t){let n=_p(e.fromRanges);return{direction:"incoming",item:ts(e.from),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...xp(e.from,t)}}function nP(e,t){let n=_p(e.fromRanges);return{direction:"outgoing",item:ts(e.to),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...xp(e.to,t)}}function ts(e){return{name:e.name,kind:es(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 _p(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>=FT))break}return n}function xp(e,t){return t<=0||!e.content?{}:{contentPreview:e.content}}function es(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"}}function Ap(e,t){return/unavailable/i.test(t)?"serverUnavailable":/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 rP(e,t){let n=e.uri??"";return{type:e.type,uri:n,lsp:{},payload:{kind:"empty",category:Ap(e.type,t),reason:t}}}function qe(e,t,n,r=!1){return{type:e,uri:t.uri,resolvedSymbol:Ft(t.resolvedSymbol),lsp:{serverAvailable:r},payload:{kind:"empty",category:Ap(e,n),reason:n}}}function oP(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 iP(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=>sP(r)).join(`
45
- `).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 sP(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 ns={hasTool(e){return $o(e)},getDescription(e){return Qo[e]??""},getToolName(e){return S[e]??String(e)}};var Lp=(e,t=ns)=>t.getDescription(e);function aP(e,t){return t.getToolName(e)}function He(e,t,n){let r=aP(t,e);return{...n,name:r,description:Lp(r,e)}}function cP(e=ns){let t=He(e,"GITHUB_SEARCH_CODE",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:Vc,inputSchema:Wc,executionFn:$l,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),n=He(e,"GITHUB_FETCH_CONTENT",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Rr,inputSchema:Qc,executionFn:zl,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),r=He(e,"GITHUB_VIEW_REPO_STRUCTURE",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:ru,inputSchema:ou,executionFn:id,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),o=He(e,"GITHUB_SEARCH_REPOSITORIES",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:qc,inputSchema:eu,executionFn:od,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),i=He(e,"GITHUB_SEARCH_PULL_REQUESTS",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:br,inputSchema:Xc,executionFn:Zl,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),s=He(e,"PACKAGE_SEARCH",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:au,inputSchema:cu,executionFn:xd,security:"remote",requiresServerRuntime:!0}}),a=He(e,"GITHUB_CLONE_REPO",{isDefault:!0,isLocal:!0,isClone:!0,type:"content",skipMetadataCheck:!0,direct:{schema:oi,inputSchema:Uc,executionFn:Tl,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),c=He(e,"LOCAL_RIPGREP",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:Qt,inputSchema:yu,executionFn:Yd,security:"basic"}}),u=He(e,"LOCAL_VIEW_STRUCTURE",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:Tr,inputSchema:Su,executionFn:ap,security:"basic"}}),l=He(e,"LOCAL_FIND_FILES",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:Cr,inputSchema:fu,executionFn:Fd,security:"basic"}}),d=He(e,"LOCAL_FETCH_CONTENT",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:Sr,inputSchema:du,executionFn:Id,security:"basic"}}),m={name:Ee,description:Lp(Ee,e),isDefault:!0,isLocal:!0,skipMetadataCheck:!0,type:"content",direct:{schema:wu,inputSchema:_u,executionFn:Sp,security:"basic",requiresServerRuntime:!0}},p=He(e,"LOCAL_BINARY_INSPECT",{isDefault:!0,isLocal:!0,isBinary:!0,type:"content",direct:{schema:wr,inputSchema:Iu,executionFn:il,security:"basic"}});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:u,LOCAL_FIND_FILES:l,LOCAL_FETCH_CONTENT:d,LSP_GET_SEMANTIC_CONTENT:m,LOCAL_BINARY_INSPECT:p,ALL_TOOLS:[t,n,r,o,i,s,a,c,u,l,d,m,p]}}var Ie=cP(),fH=Ie.GITHUB_SEARCH_CODE,gH=Ie.GITHUB_FETCH_CONTENT,hH=Ie.GITHUB_VIEW_REPO_STRUCTURE,yH=Ie.GITHUB_SEARCH_REPOSITORIES,RH=Ie.GITHUB_SEARCH_PULL_REQUESTS,bH=Ie.PACKAGE_SEARCH,SH=Ie.GITHUB_CLONE_REPO,CH=Ie.LOCAL_RIPGREP,TH=Ie.LOCAL_VIEW_STRUCTURE,PH=Ie.LOCAL_FIND_FILES,EH=Ie.LOCAL_FETCH_CONTENT,wH=Ie.LSP_GET_SEMANTIC_CONTENT,_H=Ie.LOCAL_BINARY_INSPECT,Op=Ie.ALL_TOOLS;import{ContentSanitizer as uP}from"@octocodeai/octocode-engine/security";import{maskSensitiveData as Ip}from"@octocodeai/octocode-engine/mask";function rs(e){let t=e;if(t.content?.length&&(t={...t,content:t.content.map(n=>{if(n.type==="text"&&"text"in n&&typeof n.text=="string")try{let r=uP.sanitizeContent(n.text),o=r.hasSecrets?Ip(r.content):Ip(n.text);return{...n,text:o}}catch{return n}return n})}),t.structuredContent)try{t={...t,structuredContent:ct(t.structuredContent)}}catch{}return t}var lP="TOOL_CALLBACK_EXCEPTION";function os(e,t){let n=dP(t),r={content:[{type:"text",text:`error: tool "${e}" threw an exception
46
- message: ${n.message}`}],structuredContent:{status:"error",tool:e,code:lP,error:{name:n.name,message:n.message,code:n.code}},isError:!0};try{return rs(r)}catch{return r}}function dP(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:pP(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 pP(e){try{return JSON.stringify(e)}catch{return}}import{withSecurityValidation as mP,withBasicSecurityValidation as fP}from"@octocodeai/octocode-engine/security";function kp(e,t){let n=mP(e,(r,o,i)=>t(r,o,i));return(r,o)=>n(r,o)}function vp(e,t){let n=fP(r=>e(r),t);return(r,o)=>n(r,o)}import{releaseAllPooledClients as gP}from"@octocodeai/octocode-engine/lsp/manager";var cs=["GitHub","Local","LSP","Package","Other"],Fp=new Map([de.GITHUB_SEARCH_CODE,de.GITHUB_SEARCH_REPOSITORIES,de.GITHUB_SEARCH_PULL_REQUESTS,de.GITHUB_FETCH_CONTENT,de.GITHUB_VIEW_REPO_STRUCTURE,de.GITHUB_CLONE_REPO,de.LOCAL_RIPGREP,de.LOCAL_FIND_FILES,de.LOCAL_FETCH_CONTENT,de.LOCAL_VIEW_STRUCTURE,Ee,de.PACKAGE_SEARCH].map((e,t)=>[e,t])),Ke=class extends Error{constructor(n,r=[]){super(n);this.details=r;this.name="DirectToolInputError"}details},is=null,ss=null,hP=["id","mainResearchGoal","researchGoal","reasoning"],ds=new Set([...hP]),yP=["id","researchGoal","reasoning"],Mp=[{name:"content",type:"Array<{ type: string; text: string }>"},{name:"structuredContent",type:"object",optional:!0},{name:"isError",type:"boolean",optional:!0}];function RP(e){return async t=>e(t)}function bP(e){let{direct:t}=e;return{name:e.name,schema:t.schema,inputSchema:t.inputSchema,execute:RP(t.executionFn),security:t.security,isLocal:e.isLocal,isClone:e.isClone,requiresServerRuntime:t.requiresServerRuntime,requiresProviders:t.requiresProviders}}var Np=Op.map(bP),SP=Np.map(Gp);function ps(e){let t=fs(e);return t?Gp(t):void 0}function Mn(e){return e.startsWith("gh")?"GitHub":e.startsWith("local")?"Local":e.startsWith("lsp")?"LSP":e===de.PACKAGE_SEARCH?"Package":"Other"}function CP(e){return[...e].sort((t,n)=>{let r=cs.indexOf(Mn(t)),o=cs.indexOf(Mn(n));if(r!==o)return r-o;let i=Fp.get(t)??Number.MAX_SAFE_INTEGER,s=Fp.get(n)??Number.MAX_SAFE_INTEGER;return i!==s?i-s:t.localeCompare(n)})}function TP(e){let t=ps(e);if(!t)return"{}";try{return JSON.stringify(as.toJSONSchema(t.inputSchema),null,2)}catch{return JSON.stringify(as.toJSONSchema(t.schema),null,2)}}function PP(e){return JSON.stringify(e??{},null,2)}function EP(e){let t=Mn(e),n=[...yP];return(t==="GitHub"||t==="Package")&&n.splice(1,0,"mainResearchGoal"),n}function wP(){return Mp.map(e=>({...e}))}function _P(){return JSON.stringify(Object.fromEntries(Mp.map(e=>[e.name,e.optional?`${e.type} (optional)`:e.type])),null,2)}function xP(e,t){return t?.tools?.[e]?.description??e}function ms(e){let t=ps(e);if(!t)return[];let n=as.toJSONSchema(t.schema);if(!Nn(n))return[];let r=dt(n.properties)?n.properties:{},o=new Set(Array.isArray(n.required)?n.required.filter(i=>!ds.has(i)&&!ls(r[i])):[]);return us(r,o)}function AP(e){let t=ms(e),n=t.filter(i=>i.required),r=n.length>0?n:t.slice(0,4),o={};for(let i of r)o[i.name]=NP(i.name,i.type);return e.startsWith("lsp")&&t.some(i=>i.name==="uri")&&(o.uri??="uri"),e===Ee&&(o.type??="definition",o.symbolName??="symbolName",o.lineHint??=1),o}function LP(e,t,n={}){if(typeof t!="string")return null;let r;try{r=JSON.parse(t)}catch{throw new Ke("Tool input must be valid JSON.")}return Dp(e,r,n)}function Dp(e,t,n={}){let r=IP(e,t,n),o=fs(e);if(!o)throw new Ke(`Unknown tool: ${e}`);let i=o.inputSchema.safeParse(r);if(!i.success)throw new Ke("Tool input does not match the expected schema.",OP(i.error));return i.data}function OP(e){return e.issues.map(t=>`${t.path.length>0?t.path.join("."):"input"}: ${t.message}`)}function IP(e,t,n){let r=[];if(Array.isArray(t))r=t;else if(dt(t)&&Array.isArray(t.queries))r=t.queries;else if(dt(t))r=[t];else throw new Ke('Tool input must be a JSON object, an array of query objects, or { "queries": [...] }.');if(r.length===0)throw new Ke("At least one query is required.");let o=dt(t)&&Array.isArray(t.queries)?Object.fromEntries(Object.entries(t).filter(([c])=>c!=="queries")):{},i=!1,s={...n,onUnknownFields:(c,u)=>{i=!0,n.onUnknownFields?.(c,u)}},a=r.map((c,u)=>kP(e,u,FP(e,c,u,s),{sourceLabel:n.sourceLabel}));if(i&&n.onUnknownFields!==void 0)throw new Ke("Tool input contains unknown fields. See warnings above for details.");return{...o,queries:a}}function kP(e,t,n,r){let o={...n},i=Mn(e),s=r.sourceLabel??"direct tool execution",a=vP(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 vP(e,t){return`Execute ${e} via ${t}`}function FP(e,t,n,r={}){if(!dt(t))throw new Ke("Tool input must be a JSON object or an array of objects.");let o=new Set([...ms(e).filter(a=>!a.name.includes(".")).map(a=>a.name),...ds]),i={},s=[];for(let[a,c]of Object.entries(t)){if(o.has(a)){i[a]=c;continue}s.push(a)}return s.length>0&&o.size>0&&r.onUnknownFields?.(s,n),i}function MP(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 Hp(e){if(Array.isArray(e.enum)&&e.enum.length>0)return`enum(${e.enum.map(String).join(", ")})`;if(e.type==="array"){let t=Nn(e.items)?e.items:void 0;return`array<${t?Hp(t):"value"}>`}return Array.isArray(e.type)?e.type.join(" | "):typeof e.type=="string"?e.type:"value"}function us(e,t,n=""){let r=[];for(let[o,i]of Object.entries(e)){if(!n&&ds.has(o))continue;let s=Nn(i)?i:{},a=n?`${n}.${o}`:o;if(r.push({name:a,required:t.has(o),type:Hp(s),constraints:MP(s),description:typeof s.description=="string"?s.description:void 0}),dt(s.properties)){let u=new Set(Array.isArray(s.required)?s.required.filter(l=>typeof l=="string"?!ls(s.properties?.[l]):!1):[]);r.push(...us(s.properties,u,a))}let c=s.type==="array"&&Nn(s.items)?s.items:void 0;if(c&&dt(c.properties)){let u=new Set(Array.isArray(c.required)?c.required.filter(l=>typeof l=="string"?!ls(c.properties?.[l]):!1):[]);r.push(...us(c.properties,u,a))}}return r}function NP(e,t){if(t.startsWith("array<"))return[e];if(t==="integer"||t==="number")return 1;if(t==="boolean")return!0;if(t.startsWith("enum("))return/^enum\(([^,)]+)/.exec(t)?.[1]??e;switch(e){case"path":return".";case"owner":return"bgauryy";case"repo":return"octocode";case"name":case"packageName":return"react";default:return e}}function dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Nn(e){return dt(e)}function ls(e){return Nn(e)&&"default"in e}async function DP(e,t){let n=fs(e);if(!n)throw new Error(`Unknown tool: ${e}`);try{let r=HP(n,t);return await GP(n),UP(n),await BP(n,r)}catch(r){return os(n.name,r)}finally{e===Ee&&await gP()}}function Gp(e){return{name:e.name,schema:e.schema,inputSchema:e.inputSchema}}function fs(e){return Np.find(t=>t.name===e)}function HP(e,t){let n=e.inputSchema.safeParse(t);if(!n.success)throw n.error;return n.data}async function GP(e){e.requiresServerRuntime&&(is||(is=pa()),await is),e.requiresProviders&&(ss||(ss=Nc().then(()=>{})),await ss)}function UP(e){if(!e.isLocal&&!e.isClone)return;let t=ge();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}if(e.isClone&&!(t.local.enabled&&t.local.enableClone)){let n=new Error(`Tool "${e.name}" requires clone support. Set ENABLE_CLONE=true and ENABLE_LOCAL=true to use it.`);throw n.code="cloneDisabled",n}}async function BP(e,t){try{let n=e.security==="remote"?await zP(e,t):await QP(e,t);return rs(n)}catch(n){return os(e.name,n)}}async function zP(e,t){return kp(e.name,async(r,o,i)=>e.execute({...r,authInfo:o,sessionId:i}))(t,{})}async function QP(e,t){return vp(e.execute,e.name)(t)}import{completeMetadata as $P}from"@octocodeai/octocode-core";var gs=null;function jP(){return gs||(gs=$P),gs}async function VP(){return jP()}export{cs as DIRECT_TOOL_CATEGORIES,SP as DIRECT_TOOL_DEFINITIONS,Ke as DirectToolInputError,AP as buildDirectToolExampleQuery,DP as executeDirectTool,ps as findDirectToolDefinition,uy as formatCallToolResultForOutput,PP as formatDirectToolMetadataSchemaText,_P as formatDirectToolOutputSchemaText,TP as formatDirectToolSchemaText,EP as getDirectToolAutoFilledFields,Mn as getDirectToolCategory,xP as getDirectToolDescription,ms as getDirectToolDisplayFields,wP as getDirectToolOutputFields,VP as loadToolContent,Dp as prepareDirectToolInput,LP as prepareDirectToolInputFromJsonText,CP as sortDirectToolNames};
41
+ `);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 xA(e,t,n,r){if(n==="markdown")return/<!--/.test(e)?"comment":"code";if(n==="json")return"code";if(Jv.test(e))return"comment";let o=TA(e,t,r);if(o<0)return"code";let i=EA(e);return i>=0&&o>i?"comment":kA(e,o)?"string":"code"}function TA(e,t,n){return t?n?e.indexOf(t):e.toLowerCase().indexOf(t.toLowerCase()):-1}function EA(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 kA(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 By(e){if(!e)return!1;if(Ml.test(e))return!0;let t=Gy(e);return t==="test"||t==="docs"||t==="fixture"||t==="generated"}var Fy,se,Xv,Jv,My,lo,Zv,Ml,eA,tA,nA,rA,oA,iA,sA,Ny,Qy=y(()=>{"use strict";Fy=["typescript","javascript","rust","python","go","java","scala","markdown","json","yaml","generic"],se={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},Xv=2e3,Jv=/^\s*(\/\/|#|\*|\/\*|<!--|--)/,My={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+['"]/]},lo={typescript:{id:"typescript",extensions:["ts","tsx","mts","cts"],...My},javascript:{id:"javascript",extensions:["js","jsx","mjs","cjs"],...My},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/]}},Zv=/^\s*#{1,6}\s/,Ml=/(^|\/)(dist|build|out|coverage|node_modules|vendor|\.next|__snapshots__)(\/|$)/,eA=/(\.min\.|\.bundle\.|\.generated\.|\.d\.ts$|-lock\.)/,tA=/(^|\/)(tests?|__tests__|spec|e2e)(\/|$)|\.(test|spec)\./,nA=/(^|\/)(fixtures?|__fixtures__|snapshots?)(\/|$)/,rA=/(^|\/)(docs?|examples?)(\/|$)|\.(md|markdown|mdx|rst|txt)$/i,oA=/(^|\/)(config|\.github)(\/|$)|\.(json|ya?ml|toml|ini|cfg|conf|env)$|(^|\/)[^/]*\.config\.[jt]s$/i,iA=/(^|\/)(src|lib|app|packages|internal|pkg|cmd|crates|include|sources?)(\/|$)/,sA=new Set(["typescript","javascript","rust","python","go","java","scala"]),Ny=/\.([a-z0-9]+)$/i});async function bs(e,t,n,r,o){let i=t.sort??"relevance",s;try{s=Hy(e,i,FA(t),{debug:!!t.debugRanking})}catch{s={files:e,cappedCandidates:0},r.push("Relevance ranking failed; returning results in unranked engine order.")}let a=s.files,c=s.debug,l=a.length,u=!!(t.filesOnly||t.filesWithoutMatch),d=!!(t.countLinesPerFile||t.countMatchesPerFile),p=u||d,f=a.reduce((D,B)=>D+(B.matchCount??0),0),m=p?o?.totalOccurrences??o?.totalStructuralMatches??f:f,g=t,b=Math.min(g.itemsPerPage||bt.DEFAULT_FILES_PER_PAGE,t.maxFiles||Number.POSITIVE_INFINITY),S=g.page||1,C=Math.max(1,Math.ceil(l/b)),k=(S-1)*b,_=Math.min(k+b,l),E=a.slice(k,_),O=g.maxMatchesPerFile||bt.DEFAULT_MATCHES_PER_PAGE,x=E.map(D=>{let B=D.matches?.length??0,Z=Math.ceil(B/O),z=Math.max(1,g.matchPage||1),Ae=(z-1)*O,Pe=Math.min(Ae+O,B),mt=p?void 0:D.matches?.slice(Ae,Pe),Vt=mt?.length,K=c?.get(D.path);return{path:D.path,...u?{}:t.countLinesPerFile?{totalMatchedLines:D.matchCount||1}:t.countMatchesPerFile?{totalOccurrences:D.matchCount||1}:{totalMatchRows:B,...Vt!==void 0?{returnedMatchRows:Vt}:{}},...mt!==void 0&&{matches:mt},...K?{ranking:{score:K.score,profile:K.profile,pathRole:K.pathRole,reasons:K.reasons}}:{},pagination:!p&&B>O?{currentPage:z,totalPages:Z,matchesPerPage:O,totalMatches:B,hasMore:z<Z,...z<Z?{nextMatchPage:z+1}:{}}:void 0}}),H=x.filter(D=>D.pagination?.hasMore),I=AA(x,t,n,{isFileListMode:p,currentPage:S,totalFilePages:C,matchPage:g.matchPage||1,matchesPerPage:O,hasFileWithMoreMatches:H.length>0}),v={searchEngine:n,...o?{stats:o}:{},files:x,pagination:{currentPage:S,totalPages:C,filesPerPage:b,totalFiles:l,...u?{}:{totalMatches:m},hasMore:S<C,...S<C?{nextPage:S+1}:{}},...r.length>0?{warnings:r}:{},...Object.keys(I).length>0?{next:I}:{}};return $y(v,t,{totalMatches:m,totalFiles:l})}function $y(e,t,n){return e}function AA(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=LA(i);s.fetchExact={tool:"localGetFileContent",query:ys({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"none"}),why:"Read exact source around the first grep match before editing, quoting, or validating comments/tests.",confidence:"exact"},s.fetchStandard={tool:"localGetFileContent",query:ys({path:o.path,startLine:c.startLine,endLine:c.endLine,minify:"standard"}),why:"Read a token-efficient source slice around the first grep match.",confidence:"exact"}}else r.isFileListMode&&(s.fetchStandard={tool:"localGetFileContent",query:{path:o.path,minify:"standard"},why:"Read the first matched file from file-list/count mode.",confidence:"heuristic"});s.fetchSymbols={tool:"localGetFileContent",query:{path:o.path,minify:"symbols"},why:"Get a symbol skeleton for fast orientation before opening large bodies.",confidence:"exact"};let a=_A(i,t,n);if(a&&i?.line){let c={uri:o.path,symbolName:a,lineHint: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:ys({...t,page:r.currentPage+1}),why:"Continue to the next page of matched files.",confidence:"exact"}),r.hasFileWithMoreMatches&&(s.nextMatchPage={tool:"localSearchCode",query:ys({...t,maxMatchesPerFile:r.matchesPerPage,matchPage:r.matchPage+1}),why:"Continue within files that have more matches than this response returned.",confidence:"exact"}),s}function LA(e){let t=Math.max(1,e.line??1),n=Math.max(t,e.endLine??t);return{startLine:Math.max(1,t-Uy),endLine:n+Uy}}function _A(e,t,n){if(!(t.countLinesPerFile||t.countMatchesPerFile||t.countUnique||t.unique)){if(n==="structural")return IA(e?.metavars);if(!t.matchWindow)return t.onlyMatching?Nl(e?.value):Nl(t.keywords)}}function IA(e){if(e)for(let t of Object.values(e))for(let n of t){let r=Nl(n);if(r)return r}}function Nl(e){if(typeof e!="string")return;let t=e.trim();if(vA.test(t)&&!OA.has(t))return t}function ys(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function FA(e){let t=e.rankingProfile,n=!!(e.include?.length||By(e.path));return{queryPath:e.path,keyword:e.keywords,langType:e.langType,caseSensitive:e.caseSensitive,wholeWord:e.wholeWord,profileOverride:t,explicitLowSignal:n}}var Uy,OA,vA,Rs=y(()=>{"use strict";ao();Qy();Uy=8,OA=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"]),vA=/^[A-Za-z_$][A-Za-z0-9_$]*$/});function jy(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=M.validateRipgrepPattern(r,e.fixedString,e.perlRegex);return o.valid||t.push(`invalid regex: ${o.error??"unknown regex parse error"}`),!e.fixedString&&MA(r)&&n.push(`pattern '${r}' looks literal \u2014 pass fixedString: true to skip regex parsing and avoid accidental wildcards`),!e.perlRegex&&DA(r)&&n.push("pattern uses lookaround (?= / ?! / ?<= / ?<!) which requires perlRegex: true; ripgrep will refuse it otherwise"),{isValid:t.length===0,errors:t,warnings:n}}function MA(e){return/[\\^$|()[\]{}+*?]/.test(e)?!1:!!(e.includes(".")&&/^[\w.\-/:]+$/.test(e))}function DA(e){return/\(\?[=!<]/.test(e)}var qy=y(()=>{"use strict";ge()});import{validateRipgrepQuery as NA}from"@octocodeai/octocode-core/schemas/runtime";function GA(e){return e==="created"||e==="modified"||e==="accessed"?e:"path"}function HA(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:GA(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 zA(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 Vy(e){let t=[],n=NA(e);if(!n.isValid)return F(new Error(`Query validation failed: ${n.errors.join("; ")}`),e,{toolName:A.LOCAL_RIPGREP,extra:{warnings:n.warnings}});t.push(...n.warnings);let r=Ot.safeParse(e);if(!r.success){let g=r.error.issues.map(b=>b.message);return F(new Error(`Query validation failed: ${g.join(", ")}`),e,{toolName:A.LOCAL_RIPGREP,extra:{warnings:t}})}let o=r.data;if(!o.path)return F(new Error("Path is required for search"),o,{toolName:A.LOCAL_RIPGREP,extra:{warnings:t}});let s=qe(o,A.LOCAL_RIPGREP);if(!s.isValid)return s.errorResult;let a={...o,path:s.sanitizedPath},c=jy({pattern:a.keywords??"",fixedString:a.fixedString,perlRegex:a.perlRegex});if(!c.isValid)return F(new Error(`Pattern validation failed: ${c.errors.join("; ")}`),o,{toolName:A.LOCAL_RIPGREP,extra:{warnings:[...t,...c.warnings]}});let l=[...c.warnings],u;try{u=await M.searchRipgrep(HA(a))}catch(g){return F(g instanceof Error?g:new Error(String(g)),o,{toolName:A.LOCAL_RIPGREP})}let d=u.files.map(g=>({path:g.path,matchCount:g.matchCount,matches:g.matches.map(b=>{let S={line:b.line,column:b.column,value:b.value};return b.count!==void 0&&(S.count=b.count),b.kind!==void 0&&(S.kind=b.kind),b.scoreHint!==void 0&&(S.scoreHint=b.scoreHint),S})})),p=zA(d),f={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 U({status:"empty",searchEngine:"rg",stats:f,warnings:[...t,...l]},p);!a.filesOnly&&p>bt.LARGE_RESULT_BYTES_HINT&&l.push(`Result payload is large (~${Math.round(p/1024)}KB).`);let m=await bs(d,o,"rg",[...t,...l],f);return U(m,p)}var Wy=y(()=>{"use strict";wt();ar();ao();pe();Rs();qy();ie();ge()});function UA(e){return e.trim().replace(/^\./,"").toLowerCase()}function Kn(e){if(!e?.trim())return;let t=UA(e),n=BA[t]??QA[t];return n?{raw:e,normalized:t,...n}:{raw:e,normalized:t,kind:"unknown",canonicalLanguage:e.trim()}}function $A(e){return[...e??[]].map(t=>`**/*.${t}`)}function Gl(e){return[...e??[]].map(t=>`*.${t}`)}function Ss(e){let t=Kn(e);return t?t.kind==="extension"&&t.extension?{extension:t.extension}:t.canonicalLanguage?{language:t.canonicalLanguage}:{}:{}}function Hl(e){let t=Kn(e);return t?t.kind==="extension"&&t.extension?{include:$A([t.extension])}:t.kind==="language"?{langType:t.normalized}:t.normalized?{langType:t.normalized}:{}:{}}function zl(e){let t=Kn(e);return t?t.kind==="extension"&&t.extension?Gl([t.extension]):t.kind==="language"?Gl(t.extensions):t.normalized?Gl([t.normalized]):[]:[]}function Ky(e){let t=Kn(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 Bl(e){return Kn(e)?.canonicalLanguage}var BA,QA,Ql=y(()=>{"use strict";BA={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"]}},QA={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"]}}});import{readFile as jA,stat as qA}from"node:fs/promises";function YA(e){if(!e||!/\)\s*\{/.test(e))return"";let t=e.replace(/\)\s*\{/,"): $R {");return t===e?"":` Try: \`${t}\`.`}function Xy(e){return e.include?.length?e.include:Ky(e.langType)}async function XA(e){try{return(await qA(e)).isFile()}catch{return!1}}async function JA(e,t){let n=await jA(e,"utf8"),r=M.structuralSearch(n,e,t.pattern,t.rule);return{files:r.length>0?[{path:e,matches:r}]:[],totalMatches:r.length,parsedFiles:1,skippedByPreFilter:0,skippedUnreadable:0,skippedLarge:0,warnings:[]}}async function Jy(e){let t=qe(e,A.LOCAL_RIPGREP);if(!t.isValid)return t.errorResult;let n;try{n=await XA(t.sanitizedPath)?await JA(t.sanitizedPath,e):M.structuralSearchFiles({path:t.sanitizedPath,pattern:e.pattern,rule:e.rule,...Xy(e)?{include:Xy(e)}:{},...e.exclude?.length?{exclude:e.exclude}:{},...e.excludeDir?.length?{excludeDir:e.excludeDir}:Yy.length?{excludeDir:Yy}:{},...e.hidden!==void 0?{hidden:e.hidden}:{},...e.noIgnore!==void 0?{noIgnore:e.noIgnore}:{},maxFiles:e.maxFiles??VA,maxFileBytes:WA})}catch(s){let a=s instanceof Error?s.message:String(s),c=e.langType||"source";return F(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:A.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.split(`
42
+ `,1)[0],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(KA+YA(e.pattern)),await bs(r,e,"structural",i,o)}var Yy,VA,WA,KA,Zy=y(()=>{"use strict";ge();wt();pe();Ql();Rs();Yy=[],VA=2e3,WA=1e6,KA="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 ZA(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 Qt(e){let t=ZA(e);if(t.mode==="structural")return await Jy(t);t.contextLines===void 0&&(t.contextLines=2);try{return await Vy(t)}catch(n){let r=n instanceof Error?n.message:String(n);return r.includes("Output size limit exceeded")?{status:"error",error:r,errorCode:q.OUTPUT_TOO_LARGE}:F(n,t,{toolName:A.LOCAL_RIPGREP})}}var Ul=y(()=>{"use strict";wt();Wr();pe();Wy();Zy()});async function eb(e){let{queries:t}=e;return re(t||[],async n=>je({toolName:A.LOCAL_RIPGREP,query:n,contextMessage:"localSearchCode execution failed",execute:async()=>{let r=Fe(Ot,n);return r.ok===!1?r.error:await Qt(r.data)}}),{toolName:A.LOCAL_RIPGREP},e)}var tb=y(()=>{"use strict";ar();pe();$e();Ul();Me();Ht();Rs()});function nL(e,t){let n=t+1;for(;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n++,n++;return n+1}function nb(e,t){let n=e[t];return n===void 0?!1:eL.has(n)||n==="{"&&iL(e,t)}function rL(e,t,n){let r=n.pop()??!1,o=nb(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?ob(e,t+1):t+1})}function oL(e,t,n){return n.some(r=>r)?{unsafe:!0,next:t+1}:(n.length>0&&(n[n.length-1]=!0),{unsafe:!1,next:ob(e,t)})}function rb(e){if(e.length>tL)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=nL(e,r);continue}if(o==="("){n.push(!1),r++;continue}if(o===")"){let i=rL(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}if(nb(e,r)){let i=oL(e,r,n);if(i.unsafe)return{safe:!1,reason:t};r=i.next;continue}r++}return{safe:!0}}function iL(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 ob(e,t){return e[t]==="{"?t=e.indexOf("}",t)+1:t++,t<e.length&&(e[t]==="?"||e[t]==="+")&&t++,t}var eL,tL,ib=y(()=>{"use strict";eL=new Set(["+","*","?"]),tL=1e3});function sb(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(!rb(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 ab(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 cb(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 lb=y(()=>{"use strict";ib()});function ub(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+co(i.size):o,0);return`${e.length} entries (${t} files, ${n} dirs, ${Vn(r)})`}function db(e,t){let n=e.length,r=t.itemsPerPage||bt.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 pb(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 fb=y(()=>{"use strict";ao();gs()});async function Cs(e){try{let t=qe(e,A.LOCAL_VIEW_STRUCTURE);if(!t.isValid)return t.errorResult;let n=e.showFileLastModified??(e.sortBy==="time"||e.details===!0);return sL(e,t.sanitizedPath,n)}catch(t){let n=et.toolExecutionFailed("LOCAL_VIEW_STRUCTURE",t instanceof Error?t:void 0);return{status:"error",error:n.message,errorCode:n.errorCode}}}function sL(e,t,n=!1){let r=!!(e.maxDepth||e.recursive),o=r?e.maxDepth||(e.recursive?5:2):1,i=cL(e),s=r&&e.limit&&!aL(e,i)?e.limit*2:1e4,a;try{a=M.queryFileSystem({path:t,recursive:r,includeRoot:!1,showHidden:e.hidden??!1,maxDepth:o,names:i,extensions:e.extensions,entryType:lL(e),limit:s})}catch(k){return pL(k,e,t)}let c=a.entries.map(k=>uL(k,n,e.details??!1)),l=sb(c,e),u=e.sortBy??"name";l=l.sort((k,_)=>{let E=0;switch(u){case"size":{let O=k.sizeBytes??(k.size?co(k.size):0),x=_.sizeBytes??(_.size?co(_.size):0);E=O-x;break}case"time":n&&k.modified&&_.modified?E=k.modified.localeCompare(_.modified):E=k.name.localeCompare(_.name);break;case"extension":E=(k.extension||"").localeCompare(_.extension||"");break;default:E=k.name.localeCompare(_.name);break}return e.reverse?-E:E}),e.limit&&(l=l.slice(0,e.limit));let d=l.length,{paginatedEntries:p,pagination:f}=db(l,e),g=e.details===!0||e.showFileLastModified===!0?{path:t,entries:p.map(k=>({...cb(k),path:k.path??`${t.replace(/\/$/,"")}/${k.name}`}))}:{path:t,...ab(p)},b=[...a.warnings,...pb({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.`]:[]],S=d===0,C=ub(l);return U(mb({...S?{status:"empty"}:{},...g,summary:C,...f.hasMore||f.totalPages>1?{pagination:f}:{},...b.length>0&&{warnings:b}},e),a.entries.reduce((k,_)=>k+_.path.length,0))}function aL(e,t){return!!((typeof e.pattern=="string"?e.pattern:void 0)&&!t)}function cL(e){let t=typeof e.pattern=="string"?e.pattern:void 0;if(t&&!t.includes("["))return t.includes("*")||t.includes("?")?[t]:[`*${t}*`]}function lL(e){if(e.filesOnly&&!e.directoriesOnly)return"f";if(e.directoriesOnly&&!e.filesOnly)return"d"}function uL(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:Vn(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=dL(e.permissions)),o}function dL(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 pL(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=et.pathValidationFailed(n,o?`Directory not found: ${n}`:i?`Permission denied: ${n}`:s?`Not a directory: ${n}`:`Cannot access path: ${n}`);return F(a,t,{toolName:A.LOCAL_VIEW_STRUCTURE})}function mb(e,t){return e}var Ps=y(()=>{"use strict";gs();pe();wt();ji();lb();fb();ie();ge()});async function gb(e){let{queries:t}=e;return re(t||[],async n=>je({toolName:A.LOCAL_VIEW_STRUCTURE,query:n,contextMessage:"localViewStructure execution failed",execute:async()=>{let r=Fe(En,n);return r.ok===!1?r.error:await Cs(r.data)}}),{toolName:A.LOCAL_VIEW_STRUCTURE,keysPriority:["path","summary","pagination","files","folders","entries"]},e)}var hb=y(()=>{"use strict";qo();pe();$e();Ps();Me();Ht();Ps()});import{safeReadFile as fL}from"@octocodeai/octocode-engine/lsp/validation";function uo(e){return`${e.uri}:${e.range.start.line}:${e.name}`}async function bb(e,t,n){if(t<=0)return e;let r=await fL(e.uri);if(!r)return e;let o=Br(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(`
43
+ `);return{...e,content:c,displayRange:{startLine:s+1,endLine:a+1}}}async function mL(e,t){return Promise.all(e.map(async n=>({...n,from:await bb(n.from,t,n.fromRanges)})))}async function gL(e,t){return Promise.all(e.map(async n=>({...n,to:await bb(n.to,t)})))}async function $l(e,t,n,r,o){if(n<=0||!e)return{calls:[],...yb};try{let i=await e.getIncomingCalls(t),s=o>0?await mL(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=uo(c.from);return r.has(l)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(l),$l(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 jl(e,t,n,r,o){if(n<=0||!e)return{calls:[],...yb};try{let i=await e.getOutgoingCalls(t),s=o>0?await gL(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=uo(c.to);return r.has(l)?{calls:[],truncatedByDepth:!1,cycleCount:1,failedRequestCount:0}:(r.add(l),jl(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 yb,Rb=y(()=>{"use strict";Qr();yb={truncatedByDepth:!1,cycleCount:0,failedRequestCount:0}});import{readFile as hL,stat as yL}from"node:fs/promises";import{SymbolResolver as bL,SymbolResolutionError as RL}from"@octocodeai/octocode-engine/lsp/resolver";import{LSP_ERROR_CODES as ws}from"@octocodeai/octocode-engine/lsp/lspErrorCodes";async function ql(e,t){let n=e.uri,r=qe({...e,path:n},t);if(!r.isValid)return{ok:!1,error:r.errorResult};let o=r.sanitizedPath;try{if((await yL(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:ws.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:ws.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 hL(o,"utf-8")}}}catch(i){return{ok:!1,error:{status:"error",error:i instanceof Error?i.message:String(i),errorType:"file_not_found",errorCode:ws.LSP_REQUEST_FAILED,hints:[`Could not read file: ${n??"<missing>"}`]}}}}async function Sb(e,t){let n=await ql(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 bL({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:SL(o.position),foundAtLine:o.foundAtLine,orderHint:e.orderHint,position:o.position,...l&&{isAmbiguous:l}}}}}catch(o){if(o instanceof RL)return{ok:!1,error:{status:"empty",error:o.message,errorType:"symbol_not_found",errorCode:ws.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 SL(e){return{start:e,end:{line:e.line,character:e.character}}}var Cb=y(()=>{"use strict";wt()});import po from"node:path";import{fileURLToPath as CL}from"node:url";import{acquirePooledClient as Ts,isLanguageServerAvailable as Es}from"@octocodeai/octocode-engine/lsp/manager";import{resolveImportAliasDefinitions as PL}from"@octocodeai/octocode-engine/lsp/resolver";import{resolveWorkspaceRootForFile as Kl}from"@octocodeai/octocode-engine/lsp/workspaceRoot";function Tb(e){return Vl||(Vl=new Set(M.getSupportedJsTsExtensions().map(t=>`.${t}`))),Vl.has(po.extname(e).toLowerCase())}function xL(e,t){let n=e.startsWith("file://")?CL(e):e;return po.isAbsolute(n)?n:po.resolve(t,n)}function Eb(){return[...M.getSupportedJsTsExtensions(),...wL]}function TL(){return Eb().map(e=>`**/*.${e}`)}async function kL(e,t){let n=e.symbolName?.trim();if(n)try{return(await M.searchRipgrep({path:t,pattern:n,fixedString:!0,caseSensitive:!0,filesOnly:!0,include:TL(),excludeDir:[...EL],maxSnippetChars:1})).files[0]?.path}catch{return}}async function OL(e,t){if(e.uri)return xL(e.uri,t);let n=await kL(e,t);if(n)return n;try{let o=M.queryFileSystem({path:t,recursive:!0,includeRoot:!1,showHidden:!1,entryType:"f",extensions:Eb(),maxDepth:5,limit:1}).entries[0];if(o)return o.path}catch{}return t}function vL(e){return e instanceof Error?e.message:String(e)}function AL(e,t){if(!Tb(e))return null;try{let n=M.extractJsSymbols(t,e);if(!n)return null;let r=JSON.parse(n);return Array.isArray(r)?r:null}catch{return null}}async function Ob(e){return re(e.queries||[],async t=>je({toolName:we,query:t,contextMessage:"lspGetSemantics execution failed",execute:async()=>{let n=await QL(t);return IL(FL(t,n))}}),{toolName:we,minQueryTimeoutMs:3e4},e)}function IL(e){return U(e,Q(e))}function FL(e,t){return e.format!=="compact"||!ML(t)?t:DL(t)}function ML(e){return pn(e)&&typeof e.type=="string"&&typeof e.uri=="string"&&pn(e.payload)}function DL(e){return{...e,format:"compact",payload:NL(e.payload)}}function NL(e){switch(e.kind){case"definition":case"typeDefinition":case"implementation":return{kind:e.kind,locations:e.locations.map(Pb)};case"references":return{kind:"references",...e.byFile?{byFile:e.byFile.map(HL)}:{locations:(e.locations??[]).map(Pb)},totalReferences:e.totalReferences,totalFiles:e.totalFiles};case"callers":case"callees":case"callHierarchy":return{kind:e.kind,...e.root?{root:vb(e.root)}:{},direction:e.direction,calls:e.calls.map(zL),...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(GL)};case"hover":case"empty":case"workspaceSymbol":case"typeHierarchy":case"diagnostic":return e}}function GL(e){if(!pn(e))return String(e);let t=We(e,"line"),n=We(e,"character"),r=We(e,"endLine"),o=xt(e,"kind"),i=xt(e,"name"),s=We(e,"childCount"),a=xt(e,"containerName");return[`${t}:${n}${r!==t?`-${r}`:""}`,o,i,a?`< ${a}`:"",s>0?`children=${s}`:""].filter(Boolean).join(" ")}function Pb(e){if(typeof e=="string")return e;let t=e.displayRange?`${e.displayRange.startLine}-${e.displayRange.endLine}`:"?",n=e.isDefinition?" def":"",r=e.content?` | ${Lb(e.content,180)}`:"";return`${e.uri}:${t}${n}${r}`}function HL(e){if(!pn(e))return String(e);let t=xt(e,"uri"),n=We(e,"firstLine"),r=We(e,"firstCharacter"),o=We(e,"count"),i=Ab(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 zL(e){if(!pn(e))return String(e);let t=xt(e,"direction"),n=vb(e.item),r=Ab(e,"ranges").map(BL).join(","),o=We(e,"rangeCount"),i=We(e,"rangeSampleCount"),s=xt(e,"contentPreview");return[t,n,r?`ranges=${r}`:"",o>i?`totalRanges=${o}`:"",s?`| ${Lb(s,180)}`:""].filter(Boolean).join(" ")}function vb(e){if(!pn(e))return String(e);let t=xt(e,"name"),n=xt(e,"kind"),r=xt(e,"uri"),o=We(e,"line"),i=We(e,"endLine"),s=We(e,"selectionLine"),a=s>0?` sel=${s}`:"";return`${t} ${n} ${r}:${o}-${i}${a}`}function BL(e){return pn(e)?`${We(e,"line")}:${We(e,"character")}`:String(e)}function pn(e){return typeof e=="object"&&e!==null}function xt(e,t,n=""){let r=e[t];return typeof r=="string"?r:n}function We(e,t,n=0){let r=e[t];return typeof r=="number"?r:n}function Ab(e,t){let n=e[t];return Array.isArray(n)?n:[]}function Lb(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}async function QL(e){if(e.type==="documentSymbols")return UL(e);if(e.type==="workspaceSymbol")return WL(e);if(e.type==="diagnostic")return XL(e);let t=await Sb(e,we);if(t.ok===!1){let i=typeof t.error.error=="string"?t.error.error:"Symbol anchor resolution failed";return a_(e,i)}let n=e.workspaceRoot??await Kl(t.value.uri);if(!await Es(t.value.uri,n)){if(e.type==="references"){let i=jL(e,t.value);if(i)return i}return pt(e.type,t.value,"Language server unavailable")}let o=await Ts(n,t.value.uri);if(!o)return pt(e.type,t.value,"Language server unavailable");switch(e.type){case"definition":return o.hasCapability("definitionProvider")?Wl(e,t.value,"definition","definitionProvider",await PL({anchorUri:t.value.uri,symbolName:t.value.resolvedSymbol.name,locations:await o.gotoDefinition(t.value.uri,t.value.resolvedSymbol.position,t.value.content)})):pt(e.type,t.value,"definitionProvider unsupported",!0);case"typeDefinition":return o.hasCapability("typeDefinitionProvider")?Wl(e,t.value,"typeDefinition","typeDefinitionProvider",await o.typeDefinition(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):pt(e.type,t.value,"typeDefinitionProvider unsupported",!0);case"implementation":return o.hasCapability("implementationProvider")?Wl(e,t.value,"implementation","implementationProvider",await o.implementation(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):pt(e.type,t.value,"implementationProvider unsupported",!0);case"references":return o.hasCapability("referencesProvider")?_b(e,t.value,await o.findReferences(t.value.uri,t.value.resolvedSymbol.position,e.includeDeclaration??!0,t.value.content)):pt(e.type,t.value,"referencesProvider unsupported",!0);case"hover":return o.hasCapability("hoverProvider")?qL(e,t.value,await o.hover(t.value.uri,t.value.resolvedSymbol.position,t.value.content)):pt(e.type,t.value,"hoverProvider unsupported",!0);case"callers":case"callees":case"callHierarchy":return o.hasCapability("callHierarchyProvider")?VL(e,t.value,o):pt(e.type,t.value,"callHierarchyProvider unsupported",!0);case"supertypes":case"subtypes":return o.hasCapability("typeHierarchyProvider")?YL(e,t.value,o):pt(e.type,t.value,"typeHierarchyProvider unsupported",!0)}}async function UL(e){let t=await ql(e,we);if(t.ok===!1)return t.error;let n=e.workspaceRoot??await Kl(t.value.uri),r=await Es(t.value.uri,n),o=r?await Ts(n,t.value.uri):null,i=!!o?.hasCapability("documentSymbolProvider"),s=[],a,c=AL(t.value.uri,t.value.content);if(c?.length)s=c,a="native";else if(i&&o){let S=await o.documentSymbols(t.value.uri,t.value.content);s=Array.isArray(S)?S:[],a="lsp"}else{let S=Wf(t.value.content,t.value.uri);S&&(s=S,a="markdown")}let l=a!==void 0,u=e_(s),d=r_(s),{pageItems:p,pagination:f}=fn(u,e.page??1,e.itemsPerPage??ks),m=o_(u,S=>S.kind),b=l?void 0:{category:r?"unsupportedOperation":"serverUnavailable",reason:(l?void 0:r?"documentSymbolProvider unsupported":"Language server unavailable; native outline supports JS/TS only")??"document symbols unavailable"};return{type:"documentSymbols",uri:t.value.uri,lsp:{serverAvailable:r,...a==="lsp"?{provider:"documentSymbolProvider"}:{},...a?{source:a}:{}},summary:{totalSymbols:u.length,returnedSymbols:p.length,topLevelSymbols:d,kinds:m},payload:{kind:"documentSymbols",symbols:p,...b?{empty:b}:{}},pagination:f}}function Wl(e,t,n,r,o){let i=o.length>0,s=o.map(ea),{pageItems:a,pagination:c}=fn(s,e.page??1,e.itemsPerPage??kb);return{type:e.type,uri:t.uri,resolvedSymbol:Kt(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 _b(e,t,n,r=$L){let o=r.kind==="native",i=n.map(d=>{let p=d.uri===t.uri&&d.range.start.line===t.resolvedSymbol.position.line&&d.range.start.character===t.resolvedSymbol.position.character;return{...d,...p?{isDefinition:!0}:{}}}),s=e.groupByFile?c_(i):void 0,a=s??i.map(ea),{pageItems:c,pagination:l}=fn(a,e.page??1,e.itemsPerPage??kb),u=i.length===0?{category:"noReferences",reason:o?"no in-file references found":"referencesProvider returned no references"}:void 0;return{type:"references",uri:t.uri,resolvedSymbol:Kt(t.resolvedSymbol),lsp:o?{serverAvailable:!1,source:"native"}:{serverAvailable:!0,provider:"referencesProvider",source:"lsp"},payload:{kind:"references",...s?{byFile:c}:{locations:c},totalReferences:i.length,totalFiles:new Set(i.map(d=>d.uri)).size,...u?{empty:u}:{}},pagination:l,...u&&o?{warnings:["source: native (oxc) \u2014 same-file references only; install a language server for cross-file references."]}:{}}}function jL(e,t){if(!Tb(t.uri))return null;let n;try{let i=M.findInFileReferences(t.content,t.uri,t.resolvedSymbol.position.line,t.resolvedSymbol.position.character);if(!i)return null;let s=JSON.parse(i);if(!Array.isArray(s))return null;n=s}catch{return null}let r=t.content.split(`
44
+ `),o=n.map(i=>({uri:t.uri,range:i,content:(r[i.start.line]??"").trim()}));return _b(e,t,o,{kind:"native",scope:"file"})}async function qL(e,t,n){let r=l_(n),o=!!(r.markdown||r.text);return{type:"hover",uri:t.uri,resolvedSymbol:Kt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"hoverProvider"},payload:o?{kind:"hover",...r}:{kind:"empty",category:"noHover",reason:"hoverProvider returned no hover content"}}}async function VL(e,t,n){let o=(await n.prepareCallHierarchy(t.uri,t.resolvedSymbol.position,t.content))[0];if(!o)return pt(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 $l(n,o,i,new Set([uo(o)]),e.contextLines??0):s,c=e.type==="callees"||e.type==="callHierarchy"?await jl(n,o,i,new Set([uo(o)]),e.contextLines??0):s,l=C=>/node_modules\/typescript\/lib\/lib\.[^/]*\.d\.ts$/.test(C.to.uri),u=c.calls.filter(l).length,d=c.calls.filter(C=>!l(C)),p=[...a.calls.map(C=>({direction:"incoming",...C})),...d.map(C=>({direction:"outgoing",...C}))],f=p.map(C=>C.direction==="incoming"?i_(C,e.contextLines??0):s_(C,e.contextLines??0)),{pageItems:m,pagination:g}=fn(f,e.page??1,e.itemsPerPage??LL),b=e.type==="callers"?"incoming":e.type==="callees"?"outgoing":"both",S=!a.truncatedByDepth&&!c.truncatedByDepth&&a.failedRequestCount+c.failedRequestCount===0;return{type:e.type,uri:t.uri,resolvedSymbol:Kt(t.resolvedSymbol),lsp:{serverAvailable:!0,provider:"callHierarchyProvider"},payload:{kind:e.type,root:Yl(o),direction:b,calls:m,incomingCalls:a.calls.length,outgoingCalls:d.length,completeness:{complete:S,truncatedByDepth:a.truncatedByDepth||c.truncatedByDepth,cycleCount:a.cycleCount+c.cycleCount,failedRequestCount:a.failedRequestCount+c.failedRequestCount,dynamicCallsExcluded:!0,...u>0&&{stdlibCallsExcluded:u}},...p.length===0?{empty:{category:"noCalls",reason:"callHierarchyProvider returned no calls"}}:{}},pagination:g}}async function WL(e){let t=e.symbolName??"",n=po.resolve(e.workspaceRoot??process.cwd()),r=await OL(e,n);if(!await Es(r,n))return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!1},payload:{kind:"empty",category:"serverUnavailable",reason:"Language server unavailable"}};let i=await Ts(n,r);if(!i)return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!1},payload:{kind:"empty",category:"serverUnavailable",reason:"Language server unavailable"}};if(!i.hasCapability("workspaceSymbolProvider"))return{type:"workspaceSymbol",uri:r,lsp:{serverAvailable:!0,provider:"workspaceSymbolProvider"},payload:{kind:"empty",category:"unsupportedOperation",reason:"workspaceSymbolProvider unsupported"}};let s;try{po.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: ${vL(u)}`}}}let a=KL(s),{pageItems:c,pagination:l}=fn(a,e.page??1,e.itemsPerPage??ks);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 KL(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:xs(o),line:c,character:s?.start?.character??0,endLine:l,childCount:0,...u?{containerName:u}:{},uri:a}]})}async function YL(e,t,n){let o=(await n.prepareTypeHierarchy(t.uri,t.resolvedSymbol.position,t.content))[0];if(!o)return pt(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}=fn(s,e.page??1,e.itemsPerPage??ks);return{type:e.type,uri:t.uri,resolvedSymbol:Kt(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}}async function XL(e){let t=e.uri??"",n=e.workspaceRoot??(t?await Kl(t):process.cwd());if(!await Es(t,n))return{type:"diagnostic",uri:t,lsp:{serverAvailable:!1},payload:{kind:"empty",category:"serverUnavailable",reason:"Language server unavailable"}};let o=await Ts(n,t);if(!o)return{type:"diagnostic",uri:t,lsp:{serverAvailable:!1},payload:{kind:"empty",category:"serverUnavailable",reason:"Language server unavailable"}};if(!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=JL(i),a=s.filter(d=>d.severity===1).length,c=s.filter(d=>d.severity===2).length,{pageItems:l,pagination:u}=fn(s,e.page??1,e.itemsPerPage??ks);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 JL(e){if(e&&typeof e=="object"){let t=e;return(Array.isArray(t.items)?t.items:[]).flatMap(r=>ZL(r))}return[]}function ZL(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}:{}}]:[]}function fn(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 e_(e){let t=[];for(let n of e)Ib(n,t);return t.sort((n,r)=>n.line-r.line||n.character-r.character)}function Ib(e,t,n){if(!e||typeof e!="object")return;let r=e,o=n_(r);if(typeof r.name=="string"&&o&&t.push({name:r.name,kind:xs(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)&&t_.has(xs(r.kind))){let i=typeof r.name=="string"?r.name:n;for(let s of r.children)Ib(s,t,i)}}function n_(e){if(wb(e.range))return e.range;let t=e.location;return t&&wb(t.range)?t.range:void 0}function wb(e){if(!e||typeof e!="object")return!1;let t=e;return xb(t.start)&&xb(t.end)}function xb(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.line=="number"&&typeof t.character=="number"}function r_(e){return e.filter(t=>t&&typeof t=="object"&&"name"in t).length}function o_(e,t){let n={};for(let r of e){let o=t(r);n[o]=(n[o]??0)+1}return n}function i_(e,t){let n=Fb(e.fromRanges);return{direction:"incoming",item:Yl(e.from),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...Mb(e.from,t)}}function s_(e,t){let n=Fb(e.fromRanges);return{direction:"outgoing",item:Yl(e.to),ranges:n,rangeCount:e.fromRanges.length,rangeSampleCount:n.length,...Mb(e.to,t)}}function Yl(e){return{name:e.name,kind:xs(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 Fb(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>=_L))break}return n}function Mb(e,t){return t<=0||!e.content?{}:{contentPreview:e.content}}function xs(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"}}function Db(e,t){return/unavailable/i.test(t)?"serverUnavailable":/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 a_(e,t){let n=e.uri??"";return{type:e.type,uri:n,lsp:{},payload:{kind:"empty",category:Db(e.type,t),reason:t}}}function pt(e,t,n,r=!1){return{type:e,uri:t.uri,resolvedSymbol:Kt(t.resolvedSymbol),lsp:{serverAvailable:r},payload:{kind:"empty",category:Db(e,n),reason:n}}}function c_(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 l_(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=>u_(r)).join(`
45
+ `).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 u_(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 Vl,wL,EL,ks,kb,LL,_L,$L,t_,Nb=y(()=>{"use strict";$e();ie();Ht();Rb();yn();Cb();ge();Ii();wL=["py","rs","go","java","kt","cs","c","cc","cpp","h","hpp","rb","php","swift","scala","lua","dart","ex","exs","erl","hrl","clj","cljs"];EL=[".git","node_modules","dist","out","coverage","target"];ks=40,kb=40,LL=10,_L=8;$L={kind:"lsp"};t_=new Set(["file","module","namespace","package","class","enum","interface","markdownHeading","struct"])});function w(e,t,n={}){let r=n.severity??(p_.has(e)?"error":"warning"),o=n.blocksAnswer??(d_.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 Gb(e){return e.some(t=>t.blocksAnswer)}var d_,p_,Ut,ft=y(()=>{"use strict";d_=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","negativeUniverseRequired","residualNotExact","fieldTypeMismatch","requiresMaterialization","vendorNoEquivalent","lossyTransform","unsupportedVendorPredicate","responseShapeMismatch","materializationNotAllowed","materializationFailed","parserFailed","lspUnavailable","budgetExhausted","contentTruncated"]),p_=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","fieldTypeMismatch","unsupportedVendorPredicate","responseShapeMismatch","materializationNotAllowed","materializationFailed"]);Ut=class extends Error{diagnostics;constructor(t){super(t.map(n=>`${n.code}: ${n.message}`).join("; ")),this.name="OqlValidationError",this.diagnostics=t}}});import{z as P}from"zod";function zb(e,t){let n=w_[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 le,Xl,Hb,f_,m_,g_,h_,y_,b_,R_,S_,C_,P_,w_,Bb=y(()=>{"use strict";le=P.number().int().min(1),Xl=P.number().int().min(0),Hb=P.enum(["symbols","files","dependencies","relations"]),f_=P.object({match:P.enum(["file","path"]).optional(),concise:P.boolean().optional(),extension:P.string().optional(),filename:P.string().optional(),page:le.optional(),limit:le.optional()}).passthrough(),m_=P.object({type:P.enum(["definition","references","callers","callees","callHierarchy","hover","documentSymbols","typeDefinition","implementation","workspaceSymbol","supertypes","subtypes","diagnostic"]).optional(),uri:P.string().optional(),symbolName:P.string().optional(),symbolKind:P.string().optional(),lineHint:le.optional(),orderHint:P.number().int().optional(),includeDeclaration:P.boolean().optional(),depth:P.number().int().min(0).max(20).optional(),groupByFile:P.boolean().optional(),workspaceRoot:P.string().optional(),format:P.enum(["structured","compact"]).optional(),page:le.optional(),itemsPerPage:le.optional()}).passthrough(),g_=P.object({keywords:P.array(P.string()).optional(),topicsToSearch:P.union([P.string(),P.array(P.string())]).transform(e=>typeof e=="string"?[e]:e).optional(),language:P.string().optional(),owner:P.string().optional(),stars:P.union([P.string(),P.number()]).optional(),forks:P.string().optional(),goodFirstIssues:P.string().optional(),size:P.string().optional(),created:P.string().optional(),updated:P.string().optional(),license:P.string().optional(),match:P.array(P.enum(["name","description","readme"])).optional(),visibility:P.enum(["public","private"]).optional(),archived:P.boolean().optional(),sort:P.enum(["stars","forks","help-wanted-issues","updated","best-match"]).optional(),concise:P.boolean().optional(),page:le.optional()}).passthrough(),h_=P.object({packageName:P.string().optional(),keywords:P.array(P.string()).optional(),mode:P.enum(["lean","full"]).optional(),page:le.optional()}).passthrough(),y_=P.object({prNumber:le.optional(),concise:P.boolean().optional(),state:P.enum(["open","closed","merged"]).optional(),author:P.string().optional(),label:P.union([P.string(),P.array(P.string())]).optional(),keywordsToSearch:P.union([P.string(),P.array(P.string())]).transform(e=>typeof e=="string"?[e]:e).optional(),head:P.string().optional(),base:P.string().optional(),created:P.string().optional(),updated:P.string().optional(),closed:P.string().optional(),"merged-at":P.string().optional(),draft:P.boolean().optional(),archived:P.boolean().optional(),sort:P.enum(["created","updated","best-match","comments","reactions"]).optional(),order:P.enum(["asc","desc"]).optional(),reviewMode:P.string().optional(),filePage:le.optional(),commentPage:le.optional(),commitPage:le.optional(),charOffset:Xl.optional(),charLength:le.optional(),minify:P.enum(["none","standard"]).optional(),limit:le.optional(),page:le.optional(),matchString:P.string().optional(),matchScope:P.enum(["body","title","comments","reviews","all"]).optional(),content:P.record(P.string(),P.unknown()).optional()}).passthrough(),b_=P.object({path:P.string().optional(),branch:P.string().optional(),since:P.string().optional(),until:P.string().optional(),author:P.string().optional(),includeDiff:P.boolean().optional(),limit:le.optional(),page:le.optional()}).passthrough(),R_=P.object({mode:P.enum(["inspect","list","extract","decompress","strings","unpack"]).optional(),archiveFile:P.string().optional(),entryPageNumber:le.optional(),maxEntries:le.optional(),entriesPerPage:le.optional(),minLength:P.number().int().min(1).max(128).optional(),scanOffset:Xl.optional(),charOffset:Xl.optional(),charLength:le.optional(),matchString:P.string().optional(),detailed:P.boolean().optional(),format:P.string().optional(),verbose:P.boolean().optional(),includeOffsets:P.boolean().optional()}).passthrough(),S_=P.object({prNumber:le.optional(),files:P.array(P.string()).optional(),baseRef:P.string().optional(),headRef:P.string().optional(),path:P.string().optional()}).passthrough(),C_=P.object({goal:P.string().optional(),intent:P.enum(["general","reachability","dependencies","symbols"]).optional(),facets:P.array(Hb).optional(),mode:P.enum(["plan","analyze","prove"]).optional(),maxFiles:le.optional()}).passthrough(),P_=P.object({goal:P.string().optional(),intent:P.enum(["general","reachability","dependencies","symbols"]).optional(),facets:P.array(Hb).optional(),mode:P.enum(["plan","analyze","prove"]).optional(),maxFiles:le.optional(),subject:P.string().optional(),subjectKind:P.enum(["file","symbol","function","class","method","interface","type","dependency","package","entrypoint"]).optional(),relation:P.union([P.string(),P.array(P.string())]).optional(),verdict:P.union([P.string(),P.array(P.string())]).optional(),direction:P.enum(["incoming","outgoing","both"]).optional(),proof:P.enum(["none","lsp"]).optional(),proofLimit:le.max(25).optional(),includePackets:P.boolean().optional(),includeFacts:P.boolean().optional(),includeEdges:P.boolean().optional()}).passthrough(),w_={semantics:m_,repositories:g_,packages:h_,pullRequests:y_,commits:b_,artifacts:R_,diff:S_,research:C_,graph:P_,code:f_}});function X(...e){throw new Ut(e)}function Qb(e){return xd(e)?T_(e):Ub(e)}function T_(e){let t=Dd.safeParse(e);t.success||X(w("invalidQuery",Os(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)||X(w("unknownField",`Unknown batch field "${i}" is not part of OQL.`,{queryPath:i}));n.queries.length>5&&X(w("invalidQuery","OQL batches are capped at 5 queries per call.",{queryPath:"queries"}));let o=n.queries.map((i,s)=>{try{return Ub(i)}catch(a){throw a instanceof Ut?new Ut(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}:{}}}function Ub(e){let t=Md.safeParse(e);t.success||X(w("invalidQuery",Os(t.error)));let n={...t.data},r=n.filesWithoutMatch?"files":n.target??E_(n);r===void 0&&X(w("invalidQuery",`Could not determine \`target\`; specify one of: ${vt.join(", ")}.`,{queryPath:"target"})),Zo.includes(r)&&X(w("unsupportedTarget",`Target "${r}" is reserved until proof/dry-run support exists.`,{queryPath:"target",repair:{message:`Use an active target: ${vt.join(", ")}.`}})),vt.includes(r)||X(w("unknownField",`Unknown target "${r}".`));for(let m of Object.keys(n))x_.has(m)||X(w("unknownField",`Unknown field "${m}" is not part of OQL.`,{queryPath:m}));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=A_(n,r),a=__(n,s),c=I_(n,r),l=H_(n,s,c,r),u=z_(n),d=O_(n,r),p={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(p.target==="code"&&!p.where&&X(w("invalidQuery",'target:"code" requires a `where` predicate (text/regex/structural). `where` omission is not a wildcard.',{queryPath:"where"})),(p.target==="content"||p.target==="structure")&&p.where&&X(w("invalidQuery",`target:"${p.target}" does not use \`where\`. Use fetch.content.match for content anchors, or target:"code"/"files" for predicates.`,{queryPath:"where"})),(p.target==="content"||p.target==="structure")&&p.from?.kind==="github"&&!(p.from.repo&&p.from.repo.includes("/"))&&X(w("invalidQuery",`target:"${p.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).'}})),p.target==="materialize"&&(p.where&&X(w("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"})),p.from?.kind!=="github"&&p.from?.kind!=="materialized"&&X(w("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.'}}))),p.params!==void 0){let m=zb(p.target,p.params);m&&X(w("invalidQuery",m,{queryPath:"params"}))}let f=ei.safeParse(p);return f.success||X(w("invalidQuery",Os(f.error))),f.data}function E_(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 O_(e,t){let n=e.params?{...e.params}:void 0;return t!=="graph"||!n||!v_(n)?n:{...n,proof:"lsp",proofLimit:typeof n.proofLimit=="number"&&n.proofLimit>0?n.proofLimit:5}}function v_(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 k_.some(n=>t.includes(n))}function A_(e,t){let n=e.from,r=typeof e.repo=="string"||typeof e.owner=="string",o=e.path;if(n)return r&&X(w("ambiguousSugar","Provide either `from` or top-level repo/owner sugar, not both.",{queryPath:"from"})),L_(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"};wd.includes(t)||X(w("invalidQuery","A corpus is required: provide `from`, a `repo`, or a local `path`.",{queryPath:"from"}))}function L_(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}function __(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&&X(w("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}function I_(e,t){let n=D_(e);e.where&&n&&X(w("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;Zl(r,"where");let o=Jt.safeParse(r);return o.success||X(w("invalidQuery",Os(o.error),{queryPath:"where"})),o.data}function Jl(e){return e.kind==="all"||e.kind==="any"?1+e.of.reduce((t,n)=>t+Jl(n),0):e.kind==="not"?1+Jl(e.predicate):1}function M_(e){let t=e.controls?.budget?.maxBooleanExpansion;return typeof t=="number"&&t>0?t:F_}function D_(e){let t=n=>{let r=Jl(n),o=M_(e);return r>o&&X(w("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(Yn)};if(Array.isArray(e.or))return{kind:"any",of:e.or.map(Yn)};if(Array.isArray(e.noneOf))return{kind:"not",predicate:{kind:"any",of:e.noneOf.map(Yn)}};if(Array.isArray(e.xor)){e.xor.length!==2&&X(w("invalidQuery","xor is binary; use oneOf for multi-way exclusive matching.",{queryPath:"xor"}));let n=Yn(e.xor[0]),r=Yn(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(N_(e.oneOf.map(Yn)));if(typeof e.pattern=="string"||e.rule!==void 0)return typeof e.pattern=="string"&&e.rule!==void 0&&X(w("invalidQuery","A structural predicate uses exactly one of `pattern` or `rule`.",{queryPath:"pattern"})),typeof e.lang!="string"&&X(w("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 Yn(e){if(e&&typeof e=="object"&&"kind"in e)return e;X(w("invalidQuery","Boolean sugar children must be predicate objects with a `kind`.",{queryPath:"where"}))}function N_(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 Zl(e,t){switch(e.kind){case"all":case"any":(!Array.isArray(e.of)||e.of.length===0)&&X(w("invalidQuery",`Empty \`${e.kind}.of\` is invalid.`,{queryPath:t})),e.of.forEach((n,r)=>Zl(n,`${t}.of[${r}]`));break;case"not":e.predicate||X(w("invalidQuery","`not` must contain exactly one child.",{queryPath:t})),Zl(e.predicate,`${t}.predicate`);break;case"structural":typeof e.pattern=="string"==(e.rule!==void 0)&&X(w("invalidQuery","A structural predicate uses exactly one of `pattern` or `rule`.",{queryPath:t}));break;case"field":G_(e,t);break;default:break}}function G_(e,t){if(e.op==="exists"){e.value!==void 0&&X(w("fieldTypeMismatch","`exists` takes no value.",{queryPath:t}));return}e.value===void 0&&X(w("fieldTypeMismatch",`Operator "${e.op}" requires a value.`,{queryPath:t})),e.op==="in"&&(!Array.isArray(e.value)||e.value.length===0)&&X(w("fieldTypeMismatch","`in` requires a non-empty array of values.",{queryPath:t}))}function $b(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 $b(e.predicate);default:return!1}}function H_(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:$b(n)?{mode:"auto",strategy:"subtree"}:{mode:"never"}}function z_(e){return e.fetch?{...e.fetch}:void 0}function Os(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 x_,k_,F_,jb=y(()=>{"use strict";lr();ft();Bb();cr();x_=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"]);k_=["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"];F_=64});function B_(e){return e?.mode==="auto"||e?.mode==="required"}function Q_(e,t){let n=e.target==="files"?mn:$t;switch(t.kind){case"text":case"regex":case"structural":return{route:"PUSHDOWN",backend:$t,exact:!0,reason:`${t.kind} evaluated locally by ${$t}`};case"field":return{route:"PUSHDOWN",backend:n,exact:!0,reason:`field predicate evaluated locally by ${n}`}}}function U_(e,t,n){let r=B_(e.materialize);if(n)return $_(e,t,r);if(e.target==="files")return t.kind==="text"||t.kind==="regex"&&t.dialect!=="pcre2"?r?{route:"ROUTE",backend:mn,exact:!0,reason:"files-containing-term routed to materialization for an exact file set"}:{route:"PUSHDOWN",backend:Tt,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:mn,exact:!0,reason:"path/name field equality routed to materialization for an exact file set"}:{route:"PUSHDOWN",backend:Tt,exact:!0,reason:"path/name field equality listed via provider path search"}:r?{route:"ROUTE",backend:mn,exact:!0,reason:`${vs(t)} over a file listing routed to materialization`}:{route:"UNSUPPORTED",backend:mn,exact:!1,reason:`GitHub cannot enumerate files by ${vs(t)} without materialization`,diagnostic:{code:"requiresMaterialization",message:`target:"files" over GitHub cannot enumerate by ${vs(t)} without materialization (set materialize.mode "auto"/"required" with scope.path).`}};switch(t.kind){case"text":return e.materialize?.mode==="required"?{route:"ROUTE",backend:$t,exact:!0,reason:"literal text routed to materialization because materialize.mode is required"}:t.case==="sensitive"||t.wholeWord===!0?r?{route:"ROUTE",backend:$t,exact:!0,reason:"case-sensitive / whole-word text routed to materialization for exact proof"}:{route:"PUSHDOWN",backend:Tt,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:Tt,exact:!0,reason:"literal text pushed to GitHub code search"};case"regex":return t.dialect==="pcre2"?eu(e,"PCRE2 regex",r):r?{route:"ROUTE",backend:$t,exact:!0,reason:"regex routed to bounded materialization for exact local proof"}:{route:"PUSHDOWN",backend:Tt,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 eu(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:mn,exact:!0,reason:"path glob/regex routed to materialization for proof"}:{route:"PUSHDOWN",backend:Tt,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:Tt,exact:!0,reason:"path/name predicate pushed to provider"}:eu(e,`field "${t.field}"`,r)}}function vs(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 $_(e,t,n){let r=vs(t);return n?{route:"ROUTE",backend:e.target==="files"?mn:$t,exact:!0,reason:`negated ${r} needs a complete universe; routed to bounded materialization for local proof`}:{route:"UNSUPPORTED",backend:Tt,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 eu(e,t,n){if(n)return{route:"ROUTE",backend:$t,exact:!0,reason:`${t} requires local proof; routed to bounded materialization`};let r=e.materialize?.mode;return{route:"UNSUPPORTED",backend:Tt,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 qb(e,t,n=!1){return e.sourceKind==="github"?U_(e,t,n):Q_(e,t)}var $t,mn,Tt,Vb=y(()=>{"use strict";$t="localSearchCode",mn="localFindFiles",Tt="ghSearchCode"});function Xn(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 As=y(()=>{"use strict"});function Wb(e){let t=[];return e.fetch?.content?.contentView==="symbols"&&j_.has(e.target)&&t.push(w("signatureUnsupported",`A "symbols" content view is not available for target:"${e.target}" (PR/commit/diff content has no symbol skeleton); request "exact" or "compact".`,{queryPath:"fetch.content.contentView",severity:"warning",blocksAnswer:!1,repair:{message:'Set fetch.content.contentView to "exact" or "compact".'}})),t}var j_,Kb=y(()=>{"use strict";ft();j_=new Set(["pullRequests","commits","diff"])});function Yb(e){let t={schema:ot.schema,view:e.view??ot.view,page:e.page??ot.page,itemsPerPage:e.itemsPerPage??ot.itemsPerPage,maxPlanNodes:e.controls?.budget?.maxPlanNodes??ot.maxPlanNodes};return e.from?.kind==="github"&&(t["materialize.mode"]=e.materialize?.mode??ot.githubMaterializeMode),e.target==="content"&&(t["fetch.content.contentView"]=e.fetch?.content?.contentView??ot.contentView),e.target==="code"&&(t.codeContext=e.view==="detailed"?ot.detailedCodeContext:ot.normalCodeContext,t["search.sort"]=e.controls?.search?.sort??ot.localSearchSort),t}var ot,Xb=y(()=>{"use strict";ot={schema:"oql",view:"paginated",page:1,itemsPerPage:25,githubMaterializeMode:"never",textCase:"smart",regexDialectLocal:"rust",regexCase:"smart",contentView:"compact",contentCharLength:2e4,matchContentLength:500,maxPlanNodes:128,maxBooleanExpansion:64,normalCodeContext:2,detailedCodeContext:3,localSearchSort:"relevance",localRankingProfile:"auto"}});function Jb(e){return JSON.stringify(e)}function tu(e,t){let n=" ".repeat(t),r=[];e.pattern!==void 0&&r.push(`${n}pattern: ${Jb(e.pattern)}`),e.kind!==void 0&&r.push(`${n}kind: ${Jb(e.kind)}`);for(let o of["inside","has","not"]){let i=e[o];i&&(r.push(`${n}${o}:`),r.push(...tu(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=tu(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 Zb(e){return["rule:",...tu(e,1)].join(`
46
+ `)}var eR=y(()=>{"use strict"});function tR(e,t){t==="sensitive"?e.caseSensitive=!0:t==="insensitive"&&(e.caseInsensitive=!0)}function nR(e){switch(e.kind){case"text":{let t={keywords:e.value,fixedString:!0};return tR(t,e.case),e.wholeWord&&(t.wholeWord=!0),{match:t}}case"regex":{let t={keywords:e.value};return e.dialect==="pcre2"&&(t.perlRegex=!0),tR(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=Zb(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 gn(e){if(e.kind==="text"||e.kind==="regex"||e.kind==="structural"||e.kind==="field")return nR(e);if(e.kind==="not"){let t=e.predicate;if(t.kind==="text"||t.kind==="regex"||t.kind==="field"){let n=nR(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 nu=y(()=>{"use strict";eR()});var Ls=y(()=>{"use strict";Ql()});function ru(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 Je(e){if(e?.path)return Array.isArray(e.path)?e.path[0]:e.path}function Jn(e){if(e?.language)return Array.isArray(e.language)?e.language[0]:e.language}function ou(e){return typeof e.limit=="number"?e.limit:typeof e.itemsPerPage=="number"?e.itemsPerPage:void 0}var fo=y(()=>{"use strict"});function q_(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 mo(e,t={}){if(!e.where)return{ok:!1,diagnostics:[w("vendorNoEquivalent",t.unsupportedMessage??"GitHub code search needs a positive code predicate.",{backend:t.unsupportedBackend??"ghSearchCode"})]};let n=q_(e.where);if(n){let p=rR(e,t);if(p.length>0)return{ok:!1,diagnostics:p};let{owner:f,repo:m}=ru(e.from),g=e.params??{},b=typeof g.extension=="string"||typeof n.extension=="string"?{}:Ss(Jn(e.scope)),S=ou(e),C=Je(e.scope);return{ok:!0,diagnostics:[],query:{...f?{owner:f}:{},...m?{repo:m}:{},...b,...n,...C?{path:C}:{},...typeof g.extension=="string"?{extension:g.extension}:{},...S?{limit:S}:{},...e.page?{page:e.page}:{}}}}let r=gn(e.where);if(r.unsupported||r.negate||r.match?.mode==="structural")return{ok:!1,diagnostics:[w("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=rR(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:[w("vendorNoEquivalent","GitHub code search needs a non-empty search term.",{backend:t.unsupportedBackend??"ghSearchCode"})]};let{owner:s,repo:a}=ru(e.from),c=e.params??{},l=typeof c.extension=="string"?{}:Ss(Jn(e.scope)),u=ou(e),d=typeof c.match=="string"?c.match:t.defaultMatch;return{ok:!0,diagnostics:[],query:{...s?{owner:s}:{},...a?{repo:a}:{},keywords:[i],...l,...Je(e.scope)?{path:Je(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}:{}}}}function rR(e,t){let n=[],r=t.unsupportedBackend??"ghSearchCode";return Array.isArray(e.scope?.language)&&e.scope.language.length>1&&n.push(w("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(w("lossyTransform","GitHub code search cannot express multiple scope.path values without dropping values; materialize for local proof.",{backend:r,queryPath:"scope.path"})),n}var iu=y(()=>{"use strict";nu();ft();Ls();fo()});function Zn(e){if(e.target==="diff"&&e.variant){let t=e.sourceKind==="materialized"?"local":e.sourceKind;return su.find(n=>n.id===`${t}.diff.${e.variant}`)}return su.find(t=>t.target===e.target&&t.sourceKinds.includes(e.sourceKind))}function au(e){return su.find(t=>t.id===e)}function cu(e){let t=V_(e.source,e.target);if(e.target==="diff"){let n=Xn(e.params),r=n.kind==="prPatch"?"prPatch":n.kind==="directFile"?"directFile":void 0;if(r)return Zn({sourceKind:t,target:"diff",variant:r})}return Zn({sourceKind:t,target:e.target})}function oR(e,t){return e.backends.map(n=>({backend:n.backend,operation:n.operation,exact:n.exact,source:t}))}function iR(e){return{id:e.id,status:e.status,sourceKinds:e.sourceKinds,target:e.target,backends:e.backends}}function V_(e,t){return e?.kind?e.kind:t==="packages"?"npm":"github"}var su,sR=y(()=>{"use strict";As();su=[{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.artifacts",target:"artifacts",sourceKinds:["local","materialized"],status:"active",backends:[{backend:"localBinaryInspect",operation:"inspectArtifact",exact:!0}],rowKind:"record",recordType:"artifact",adapterModule:"adapters/researchTargets.ts",adapterFunctions:["executeArtifacts"]},{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 W_(e,t){return e.id??t}function lu(e,t,n,r,o,i=!1){let s=W_(t,n);if(t.kind==="all"||t.kind==="any"){let c=t.of.map((d,p)=>lu(e,d,`${n}.of[${p}]`,r,o,i)),l=K_(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(w("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=lu(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=qb(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(w(a.diagnostic.code,a.diagnostic.message,{predicateId:s,queryPath:n,backend:a.backend})),a.route!=="UNSUPPORTED"&&aR(o.backendCalls,{backend:a.backend,source:a.route==="ROUTE"?void 0:e.from,operation:Y_(e.target),exact:a.exact}),a.route}function K_(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 Y_(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"artifacts":return"inspectArtifact";case"diff":return"diff";case"research":return"runResearchFlow";case"graph":return"queryRelationshipGraph";case"materialize":return"materialize"}}function aR(e,t){e.some(r=>r.backend===t.backend&&r.operation===t.operation&&r.exact===t.exact)||e.push(t)}function uu(e,t){if(!t)return;let n=iR(t);e.transformers?.some(o=>o.id===n.id)||(e.transformers=[...e.transformers??[],n])}function _s(e,t,n){if(!t)return!1;for(let r of oR(t,n))aR(e.backendCalls,r);return!0}function X_(e,t){return cR(e,t,"files")}function cR(e,t,n,r=Zn({sourceKind:"materialized",target:n})){let o=Zn({sourceKind:"github",target:"materialize"});if(!o||!r)return!1;e.transformers=(e.transformers??[]).filter(s=>s.id!==`github.${n}`),uu(e,o),uu(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}`)),_s(e,o,t),_s(e,r,void 0),!0}function Is(e){return e?e.kind==="structural"?!0:e.kind==="all"||e.kind==="any"?e.of.some(Is):e.kind==="not"?Is(e.predicate):!1:!1}function J_(e){return e.target==="code"?au(Is(e.where)?"local.code.structural":"local.code.textRegex"):Zn({sourceKind:"materialized",target:e.target})}function Z_(e,t){return e.target==="code"&&(t.kind==="local"||t.kind==="materialized")?au(Is(e.where)?"local.code.structural":"local.code.textRegex")??cu({source:t,target:e.target,params:e.params}):cu({source:t,target:e.target,params:e.params})}function du(e){return e?e.kind==="all"||e.kind==="any"?1+e.of.reduce((t,n)=>t+du(n),0):e.kind==="not"?1+du(e.predicate):1:0}function lR(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=Z_(e,o);if(uu(n,s),e.where)lu(e,e.where,"where",i,n),o.kind==="github"&&n.nodes.some(m=>m.route==="ROUTE")&&cR(n,o,e.target,J_(e));else if(e.target==="diff"){let m=Xn(e.params);m.kind==="prPatch"||m.kind==="directFile"?_s(n,s,o)||n.diagnostics.push(w("unsupportedTarget",`No transformer registered for target:"diff" lane "${m.kind}".`,{queryPath:"target",backend:"ghHistoryResearch",severity:"error"})):n.diagnostics.push(w("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 m=o.kind==="github"&&e.target==="files"&&!e.where,g=r?.mode==="auto"||r?.mode==="required";!(m?g&&X_(n,o):_s(n,s,o))&&(!m||g)&&n.diagnostics.push(w("unsupportedTarget",m?'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(w("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(...eI(e,n.nodes)),n.diagnostics.push(...Wb(e));let a=tI(e,n.diagnostics),c=e.controls?.budget?.maxPlanNodes??ot.maxPlanNodes,l=!1,u=n.nodes;u.length>c&&(l=!0,u=u.slice(0,c),n.diagnostics.push(w("planTruncated",`Explain plan truncated to ${c} nodes; execution semantics are unchanged.`)));let d=du(e.where);!l&&n.nodes.length!==d&&n.diagnostics.push(w("invalidQuery",`Planner invariant violated: ${n.nodes.length} routed vs ${d} predicate nodes.`));let p={input:t,normalized:e,defaults:Yb(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},f=!n.nodes.some(m=>m.route==="UNSUPPORTED")&&!n.diagnostics.some(m=>m.severity==="error"&&m.code!=="planTruncated");return{plan:p,executable:f}}function uR(e){return e.kind==="not"&&e.predicate.kind==="not"?uR(e.predicate.predicate):e}function eI(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=uR(e.where),r=mo({...e,where:n},{...e.target==="files"?{defaultMatch:"file"}:{}});return r.ok?[]:r.diagnostics}function tI(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(w("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(w("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 dR=y(()=>{"use strict";Vb();As();Kb();ft();Xb();iu();sR()});function Fs(e){let t=rI(e),n=iI(e),r=t==="proof"&&n;return{...e.queryId?{queryId:e.queryId}:{},...e.queryIndex!==void 0?{queryIndex:e.queryIndex}:{},results:e.results,...e.pagination?{pagination:e.pagination}:{},...e.next&&Object.keys(e.next).length?{next:e.next}:{},diagnostics:e.diagnostics,provenance:e.provenance,evidence:{answerReady:r,complete:n,kind:t},...e.plan?{plan:e.plan}:{}}}function rI(e){return!e.executable||e.diagnostics.some(t=>nI.has(t.code))?"unsupported":e.approximate||oI(e.diagnostics)?"candidate":Gb(e.diagnostics)||pR(e)?"partial":"proof"}function oI(e){return e.some(t=>t.code==="providerSemanticsApproximate")}function pR(e){return!!(e.pagination?.hasMore||e.next&&Object.keys(e.next).some(t=>t.startsWith("next.page")||t==="next.matchPage"))}function iI(e){return!e.executable||pR(e)?!1:!e.diagnostics.some(t=>t.blocksAnswer||t.code==="partialResult")}function fR(e){return e.some(t=>!t.exact)}function pu(e,t,n,r,o){return Fs({queryId:n,queryIndex:r,results:[],diagnostics:e,provenance:[],executable:!1,plan:t,...o&&Object.keys(o).length?{next:o}:{}})}var nI,mR=y(()=>{"use strict";ft();nI=new Set(["invalidQuery","ambiguousSugar","unknownField","unsupportedTarget","unsupportedPredicate","unsupportedBoolean","unsupportedScope","unsupportedVendorPredicate","vendorNoEquivalent","responseShapeMismatch"])});function Et(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 Ms=y(()=>{"use strict"});function fu(e){return Et(e)}function sI(e){if(e)return Et({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 Ds(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,line:1,...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;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}:{},...s&&Object.keys(s).length?{metavars:s}:{},...a&&Object.keys(a).length?{metavarRanges:a}:{}})}}return{results:n,pagination:aI(sI(e.pagination),n.length)}}function aI(e,t){if(e)return e.totalItemsKind!=="files"?e:{...e,itemUnit:"files",rowCount:t,...e.reportedTotalItems!==void 0?{reportedRowCount:e.reportedTotalItems}:{}}}function Ns(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:fu(e.pagination)}}function gR(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:fu(e.pagination)}}return{results:(e.entries??[]).map(r=>{let o=r.type,i=o==="dir"||o==="directory"?"directory":"file",s=lI(r.size);return{kind:"tree",source:t,path:r.path??r.name??"",entryType:i,depth:r.depth??0,...s!==void 0?{size:s}:{}}}),pagination:fu(e.pagination)}}function lI(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=cI[t[2].toLowerCase()]??1;return Number.isFinite(n)?Math.round(n*r):void 0}function hR(e,t,n,r="compact"){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 cI,yR=y(()=>{"use strict";Ms();cI={b:1,kb:1024,mb:1024**2,gb:1024**3,tb:1024**4}});import zs from"node:path";import uI from"node:fs";function dI(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.")}function Qs(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 SR(e,t){let n=Array.isArray(e)?e.filter(r=>typeof r=="string"):[];return[...new Set([...n,...t])]}function Us(e,t,n){if(n){e.langType=n;return}let r=Hl(Jn(t));r.langType&&(e.langType=r.langType),r.include?.length&&(e.include=SR(e.include,r.include))}function pI(e){return zl(Jn(e))}function bR(e){let t=Bs(e),n=t.match(/^\*\*\/(\*\.[^/]+)$/);if(n)return n[1];if(!t.includes("/"))return t}function $s(e){return!!(e?.include?.length||e?.exclude?.length)}function hu(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(bR).filter(i=>!!i);n.length>0&&!e.names&&(e.names=SR(e.names,n));let r=(t?.include??[]).filter(i=>!bR(i));r.length===1&&!e.pathPattern&&(e.pathPattern=r[0]);let o=pI(t);o.length>0&&!e.names&&!e.pathPattern&&(e.names=o)}function fI(e,t){if($s(t.scope)){yu(e),e.page=1;return}t.itemsPerPage&&(e.itemsPerPage=t.itemsPerPage),t.page&&(e.page=t.page)}function yu(e){e.limit=mu,e.itemsPerPage=mu}async function ho(e){let t=e.from,n=dI(e),r=Je(e.scope),o=r?zs.join(n,r):n;if(!uI.existsSync(o))return{results:[],diagnostics:[w("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 yI(e,t,o);case"structure":return kI(e,t,o);case"content":return OI(e,t,o);default:return PR(e,t,o)}}function mI(e){return e.kind==="all"||e.kind==="any"?!0:e.kind==="not"?wR(e.predicate):!1}function gI(e){return e.kind==="text"||e.kind==="regex"}function CR(e){return e?.kind==="not"&&gI(e.predicate)}async function PR(e,t,n){let r=e.where;if(mI(r))return TI(e,t,n,r);if(e.view==="discovery"&&CR(r))return SI(e,t,n,r);let o=gn(r);if(o.unsupported)return{results:[],diagnostics:[w(o.unsupported.code,o.unsupported.message,{backend:"localSearchCode",...o.unsupported.predicateId?{predicateId:o.unsupported.predicateId}:{}})],provenance:[]};let i=o.match,s={path:n,...Qs(e.scope),...e.view==="discovery"?{filesOnly:!0}:{},...e.view==="detailed"?{contextLines:3}:{},...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{},...vR(e)};Us(s,e.scope,i.langType),i.mode==="structural"?(s.mode="structural",i.pattern!==void 0&&(s.pattern=i.pattern),i.rule!==void 0&&(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 Qt(s),c=Ds(a,t),l=er(a,"localSearchCode"),u=hI(a);if(u.length>0){let d=u.reduce((f,m)=>f+(m.total??0),0),p=u.reduce((f,m)=>f+m.shown,0);l.push(w("matchTruncated",`${u.length} file(s) have more matches (showed ${p} 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(w("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`).'}})),{...c,diagnostics:l,provenance:[tr("localSearchCode",t,r)]}}function hI(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}async function yI(e,t,n){let r=e.where;if(CR(r))return RI(e,t,n,r);if(r&&wR(r))return bI(e,t,n,r);if(r&&kR(r)){let l=await PR({...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};hu(o,e.scope),fI(o,e);let i=[];r&&OR(r,o,i);let s=await Wn(o),a=Ru(s,e,n);return{...Ns(a,t),diagnostics:[...i,...er(a,"localFindFiles")],provenance:[tr("localFindFiles",t,r)]}}function wR(e){return e.kind==="all"||e.kind==="any"||e.kind==="not"}async function bI(e,t,n,r){let o=[],i=[],a=[...(await Gs(e,r,t,n,o,i)).values()].sort((c,l)=>c.path.localeCompare(l.path));return a.length===0&&!i.some(c=>c.severity==="error")&&i.push(w("zeroMatches","Boolean file query matched no files.",{backend:"localSearchCode",severity:"info",blocksAnswer:!1})),{results:a,diagnostics:i,provenance:o}}async function Gs(e,t,n,r,o,i){switch(t.kind){case"all":return(await Promise.all(t.of.map(a=>Gs(e,a,n,r,o,i)))).reduce((a,c)=>a===void 0?c:CI(a,c));case"any":{let s=await Promise.all(t.of.map(c=>Gs(e,c,n,r,o,i))),a=new Map;for(let c of s)for(let[l,u]of c)a.set(l,bu(a.get(l),u));return a}case"not":{let s=await TR(e,n,r,o),a=await Gs(e,t.predicate,n,r,o,i);return new Map([...s].filter(([c])=>!a.has(c)))}default:return ER(e,t,n,r,o,i)}}async function RI(e,t,n,r){let o=await Qt(xR(e,n,r.predicate)),i=er(o,"localSearchCode");return{results:(o.files??[]).map(a=>({kind:"file",source:t,path:a.path,entryType:"file"})),diagnostics:i,provenance:[tr("localSearchCode",t,r)]}}async function SI(e,t,n,r){let o=await Qt(xR(e,n,r.predicate));return{...Ds(o,t),diagnostics:er(o,"localSearchCode"),provenance:[tr("localSearchCode",t,r)]}}function xR(e,t,n){let o=gn(n).match,i={path:t,filesWithoutMatch:!0,...Qs(e.scope),...e.itemsPerPage?{itemsPerPage:e.itemsPerPage}:{},...e.page?{page:e.page}:{},...vR(e)};return Us(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}function CI(e,t){let n=new Map;for(let[r,o]of e){let i=t.get(r);i&&n.set(r,bu(o,i))}return n}function PI(e,t){return new Set([...e].filter(n=>t.has(n)))}function bu(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}async function wI(e,t,n){return new Set((await TR(e,e.from,t,n)).keys())}async function TR(e,t,n,r){let o={path:n,entryType:"f"};hu(o,e.scope),$s(e.scope)&&(yu(o),o.page=1);let i=await Wn(o),s=Ru(i,e,n);return r.push({backend:"localFindFiles",source:e.from}),gu(Ns({...s,files:(s.files??[]).filter(a=>a.type===void 0||a.type==="f"||a.type==="file")},t).results)}async function xI(e,t,n,r,o){return new Set((await ER(e,t,e.from,n,r,o)).keys())}async function ER(e,t,n,r,o,i){if(t.kind==="field"){let u={path:r,details:!0};hu(u,e.scope),OR(t,u,i),$s(e.scope)&&(yu(u),u.page=1);let d=await Wn(u),p=Ru(d,e,r);return o.push({backend:"localFindFiles",source:e.from}),gu(Ns(p,n).results)}let s=gn(t);if(s.unsupported)return i.push(w(s.unsupported.code,s.unsupported.message,{backend:"localSearchCode"})),new Map;let a=s.match,c={path:r,filesOnly:!0,maxFiles:mu,...Qs(e.scope)};Us(c,e.scope,a.langType),a.mode==="structural"?(c.mode="structural",a.pattern!==void 0&&(c.pattern=a.pattern),a.rule!==void 0&&(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 Qt(c);return o.push({backend:"localSearchCode",source:e.from}),gu((l.files??[]).map(u=>({kind:"file",source:n,path:u.path,entryType:"file"})))}function gu(e){let t=new Map;for(let n of e)t.set(n.path,bu(t.get(n.path),n));return t}async function TI(e,t,n,r){let o=[],i=[],s=await Hs(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(w("zeroMatches","Boolean code query matched no occurrences.",{backend:"localSearchCode",severity:"info",blocksAnswer:!1})),{results:c,diagnostics:i,provenance:o}}async function Hs(e,t,n,r,o,i){switch(t.kind){case"all":{let s=await Promise.all(t.of.map(l=>Hs(e,l,n,r,o,i))),a=s.map(l=>l.files).reduce((l,u)=>l===void 0?u:PI(l,u)),c=s.flatMap(l=>l.rows);return{files:a,rows:c}}case"any":{let s=await Promise.all(t.of.map(l=>Hs(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 wI(e,r,o),a=await Hs(e,t.predicate,n,r,o,i);return{files:new Set([...s].filter(c=>!a.files.has(c))),rows:[]}}case"field":return{files:await xI(e,t,r,o,i),rows:[]};default:{let s=await EI(e,t,n,r,o,i);return{files:new Set(s.map(a=>a.path)),rows:s}}}}async function EI(e,t,n,r,o,i){let s=gn(t);if(s.unsupported)return i.push(w(s.unsupported.code,s.unsupported.message,{backend:"localSearchCode"})),[];let a=s.match,c={path:r,...Qs(e.scope)};Us(c,e.scope,a.langType),a.mode==="structural"?(c.mode="structural",a.pattern!==void 0&&(c.pattern=a.pattern),a.rule!==void 0&&(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 Qt(c);return o.push({backend:"localSearchCode",source:n}),Ds(l,n).results}async function kI(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 Cs(r);return{...gR(o,t),diagnostics:er(o,"localViewStructure"),provenance:[tr("localViewStructure",t,void 0)]}}async function OI(e,t,n){let r=e.fetch?.content,o=r?.contentView==="exact"?"none":r?.contentView==="symbols"?"symbols":"standard",i=II(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 fs(s),c=r?.contentView==="exact"?"exact":r?.contentView==="symbols"?"symbols":"compact";return{...hR(a,t,n,c),diagnostics:er(a,"localGetFileContent"),provenance:[tr("localGetFileContent",t,void 0)]}}function Ru(e,t,n){if(!$s(t.scope)||e.status==="error")return e;let r=(e.files??[]).filter(d=>vI(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 vI(e,t,n){let r=Bs(AI(e,t)),o=n?.include??[];return o.length>0&&!o.some(i=>RR(r,i))?!1:!(n?.exclude??[]).some(i=>RR(r,i))}function AI(e,t){let n=zs.relative(t,e);return!n||n.startsWith("..")||zs.isAbsolute(n)?e:n}function Bs(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function RR(e,t){let n=Bs(t),r=Bs(e),o=LI(n);return o.test(r)?!0:n.includes("/")?!1:o.test(zs.posix.basename(r))}function LI(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+=_I(r)}return new RegExp(`${t}$`)}function _I(e){return/[|\\{}()[\]^$+?.]/.test(e)?`\\${e}`:e}function II(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 kR(e){return e.kind==="text"||e.kind==="regex"||e.kind==="structural"?!0:e.kind==="not"?kR(e.predicate):!1}function OR(e,t,n){let r=e.kind==="not",o=e.kind==="not"?e.predicate:e;if(o.kind!=="field"){n.push(w("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(go(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(go(i));break}case"size":i.op===">"||i.op===">="?t.sizeGreater=String(s):i.op==="<"||i.op==="<="?t.sizeLess=String(s):n.push(go(i));break;case"modified":i.op==="within"?t.modifiedWithin=String(s):i.op==="before"?t.modifiedBefore=String(s):n.push(w("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(go(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(go(i));break}r&&n.push(w("residualNotExact","Negated field predicates over findFiles are best-effort.",{backend:"localFindFiles",severity:"warning"}))}function go(e){return w("unsupportedPredicate",`field "${e.field}" with operator "${e.op}" is not supported by the files backend.`,{backend:"localFindFiles"})}function vR(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&&(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}function er(e,t){let n=[];e.status==="error"?n.push(w("invalidQuery",e.error??"Backend error",{backend:t})):e.status==="empty"&&n.push(w("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1}));for(let r of e.warnings??[])n.push(w(FI(r),r,{backend:t,severity:"warning",blocksAnswer:!1}));return n}function FI(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 tr(e,t,n){return{backend:e,source:t,...n?.id?{pushed:[n.id]}:{}}}var mu,Su=y(()=>{"use strict";fe();Ul();hs();Ps();ms();nu();yR();ft();Ls();fo();mu=1e4});function Re(e,t){return qs(e,{queries:[{...MI,...t}]})}var MI,js=y(()=>{"use strict";Cu();MI={mainResearchGoal:"octocode search (OQL)",researchGoal:"OQL target execution",reasoning:"Compiled from an OQL query."}});function _R(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 yo(e){let n=e.structuredContent?.results?.[0];if(n)return"data"in n?n.data:n}function DI(e){return e.structuredContent?.results?.[0]?.status}function Vs(e,t){return e>0?[]:[w("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 IR(e){return!e||e==="."?"":e.replace(/^\/+|\/+$/g,"")}function AR(...e){return e.map(IR).filter(Boolean).join("/")}function NI(e){return e?Array.isArray(e)?[...e]:Object.entries(e).map(([t,n])=>({dir:t,files:n.files,folders:n.folders})):[]}function LR(e){return IR(e).split("/").filter(Boolean).length}function GI(e){return e.trim().toLowerCase().replace(/^\*\./,"").replace(/^\./,"")}function HI(e){let t=e.split("/").pop()??e,n=t.lastIndexOf(".");return n>0?t.slice(n+1).toLowerCase():""}function zI(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function BI(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(zI).join("[^/]")).join("[^/]*")).join(".*"),i=new RegExp(`^${o}$`);return i.test(r)||i.test(e)}function QI(e,t){let n=t.fetch?.tree;if(!n)return[...e];let r=(n.extensions??[]).map(GI).filter(Boolean);return e.filter(o=>n.filesOnly&&o.entryType!=="file"||n.directoriesOnly&&o.entryType!=="directory"||n.pattern&&!BI(o.path,n.pattern)?!1:o.entryType==="directory"||r.length===0||r.includes(HI(o.path)))}function FR(e){if(typeof e!="string")return e.path;let t=e.indexOf(":");return t>=0?e.slice(t+1):e}function UI(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 $I(e){return typeof e=="string"?[]:e.matches??[]}async function MR(e){switch(e.target){case"content":return VI(e);case"structure":return WI(e);case"files":return jI(e);default:return qI(e)}}async function jI(e){let t=mo(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 Re("ghSearchCode",t.query),r=yo(n),o=new Set,i=[];for(let a of r?.files??[]){let c=FR(a);o.has(c)||(o.add(c),i.push({kind:"file",source:Ce(e),path:c,entryType:"file"}))}let s=Et(r?.pagination);return{results:i,...s?{pagination:s}:{},diagnostics:[...Ws(n,"ghSearchCode"),...Vs(i.length,"ghSearchCode"),...i.length>0?[w("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:Ce(e)}]}}function Ce(e){return e.from??{kind:"github"}}async function qI(e){let t=mo(e);if(!t.ok)return{results:[],diagnostics:t.diagnostics,provenance:[]};let n=await Re("ghSearchCode",t.query),r=yo(n),o=[];for(let s of r?.files??[]){let a=FR(s),c=UI(s),l=$I(s);if(l.length===0){o.push({kind:"code",source:Ce(e),path:a,...c?{metadata:c}:{}});continue}for(let u of l)o.push({kind:"code",source:Ce(e),path:a,...u.value!==void 0?{snippet:u.value}:{},...u.matchIndices!==void 0?{matchIndices:u.matchIndices}:{},...c?{metadata:c}:{}})}let i=Et(r?.pagination);return{results:o,...i?{pagination:i}:{},diagnostics:[...Ws(n,"ghSearchCode"),...Vs(o.length,"ghSearchCode"),...o.length>0?[w("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:Ce(e)}]}}async function VI(e){let{owner:t,repo:n}=_R(Ce(e)),r=e.fetch?.content,o=r?.contentView==="exact"?"none":r?.contentView==="symbols"?"symbols":"standard",i=KI(r?.range),s={...t?{owner:t}:{},...n?{repo:n}:{},path:Je(e.scope)??"",type:"file",minify:o,...Ce(e).kind==="github"&&Ce(e).ref?{branch:Ce(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 Re("ghGetFileContent",s),c=yo(a),l=o==="none"?"exact":o==="symbols"?"symbols":"compact",u=c?.pagination,d=c?.results??c?.files??[],p=d.map(m=>{let g=m.pagination??u,b=typeof g?.charOffset=="number",S={...m.startLine!==void 0?{startLine:m.startLine}:{},...m.endLine!==void 0?{endLine:m.endLine}:{},...b?{charOffset:g.charOffset,...typeof g.charLength=="number"?{charLength:g.charLength}:{}}:{}};return{kind:"content",source:Ce(e),path:m.path,content:m.content,contentView:l,...Object.keys(S).length?{range:S}:{}}}),f=u??d.find(m=>m.pagination)?.pagination;return{results:p,...f?.hasMore!==void 0?{pagination:{hasMore:!!f.hasMore,...f.currentPage!==void 0?{currentPage:f.currentPage}:{},...f.totalPages!==void 0?{totalPages:f.totalPages}:{},...f.charLength!==void 0?{itemsPerPage:f.charLength}:{},...f.totalChars!==void 0?{totalItems:f.totalChars,totalItemsKind:"chars"}:{}}}:{},diagnostics:[...Ws(a,"ghGetFileContent"),...Vs(p.length,"ghGetFileContent")],provenance:[{backend:"ghGetFileContent",source:Ce(e)}]}}async function WI(e){let{owner:t,repo:n}=_R(Ce(e)),r={...t?{owner:t}:{},...n?{repo:n}:{},path:Je(e.scope)??"",...Ce(e).kind==="github"&&Ce(e).ref?{branch:Ce(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 Re("ghViewRepoStructure",r),i=yo(o),s=[],a=Je(e.scope);for(let u of NI(i?.structure)){let d=u.dir??".";for(let p of u.folders??[]){let f=AR(a,d,p);s.push({kind:"tree",source:Ce(e),path:f,entryType:"directory",depth:LR(f)})}for(let p of u.files??[]){let f=AR(a,d,p);s.push({kind:"tree",source:Ce(e),path:f,entryType:"file",depth:LR(f)})}}let c=QI(s,e),l=Et(i?.pagination);return{results:e.limit!==void 0?c.slice(0,e.limit):c,...l?{pagination:l}:{},diagnostics:[...Ws(o,"ghViewRepoStructure"),...Vs(c.length,"ghViewRepoStructure")],provenance:[{backend:"ghViewRepoStructure",source:Ce(e)}]}}function KI(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 Ws(e,t){let n=DI(e);if(n==="error"){let r=yo(e);return[w("invalidQuery",r?.error??"GitHub backend error",{backend:t})]}return n==="empty"?[w("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1})]:[]}var DR=y(()=>{"use strict";js();Ms();ft();iu();fo()});import NR from"node:path";function GR(e){return[...new Set(e)]}function zR(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 BR(e){let t=e.structuredContent,n=t?.results?.[0],r=n?.data;return{localPath:r?.localPath&&t?.base&&!NR.isAbsolute(r.localPath)?NR.join(t.base,r.localPath):r?.localPath,cached:r?.cached,error:r?.error,status:n?.status}}async function QR(e){if(e.from?.kind!=="github")return ho(e);let t=e.from,{owner:n,repo:r}=zR(t);if(!n||!r)return{results:[],diagnostics:[w("materializationFailed","Materialization requires a concrete owner/repo.",{backend:"ghCloneRepo"})],provenance:[]};let o=Je(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 Re("ghCloneRepo",i),{localPath:a,cached:c,error:l,status:u}=BR(s);if(u==="error"||!a)return{results:[],diagnostics:[w("materializationFailed",l??"Clone/fetch failed; cannot run local proof.",{backend:"ghCloneRepo"})],provenance:[{backend:"ghCloneRepo",source:t}]};let d=e.scope??{},p={...e,from:{kind:"materialized",localPath:a,source:t},scope:{...d,path:void 0,excludeDir:GR([...d.excludeDir??[],".git"]),exclude:GR([...d.exclude??[],".octocode-clone-meta.json","**/.octocode-clone-meta.json"])}},f=await ho(p);return{...f,diagnostics:[...f.diagnostics,...c?[w("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"},...f.provenance]}}async function UR(e){if(e.from?.kind==="materialized"){let f=e.from.localPath;return{results:[HR(f,e.from.source,void 0,!0)],diagnostics:[],provenance:[{backend:"ghCloneRepo",source:e.from}]}}if(e.from?.kind!=="github")return{results:[],diagnostics:[w("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}=zR(t);if(!n||!r)return{results:[],diagnostics:[w("materializationFailed","Materialization requires a concrete owner/repo.",{backend:"ghCloneRepo"})],provenance:[]};let i=e.materialize?.strategy==="repo"?void 0:Je(e.scope),s={owner:n,repo:r,...t.ref?{branch:t.ref}:{},...i?{sparsePath:i}:{},...e.materialize?.forceRefresh?{forceRefresh:!0}:{}},a=await Re("ghCloneRepo",s),{localPath:c,cached:l,error:u,status:d}=BR(a);if(d==="error"||!c)return{results:[],diagnostics:[w("materializationFailed",u??"Clone/fetch failed; no checkpoint produced.",{backend:"ghCloneRepo"})],provenance:[{backend:"ghCloneRepo",source:t}]};let p=!i;return{results:[HR(c,t,t.ref,p,l)],diagnostics:l?[w("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 HR(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 $R=y(()=>{"use strict";js();Su();ft();fo()});import{builtinModules as YI}from"node:module";import he from"node:path";import{readFile as Ks,readdir as XI}from"node:fs/promises";async function xu(e){let t=he.resolve(e.root),n=e.mode??"analyze",r=e.goal?.trim()||"Analyze this repository.",o=tF(r,e.intent,e.facets),i=nF(o,e.facets),s=rF(o,i),a=pF();if(n==="plan")return oF({root:t,goal:r,intent:o,facets:i,mode:n,flow:s,graphCapabilities:qR([],[],a)});let c=await iF(t,e.maxFiles??5e3),l=await sF(c.filter(x=>x.endsWith(JI))),u=await uF(t,c),d=u.map(x=>x.graphFacts).filter(x=>x!==void 0),p=qR(u,d,a);await TF(u);let f=new Set(l.map(x=>x.name).filter(XR)),m=gF(u),g=hF(t,l,u),b=yF(g,m),S=u.filter(x=>!b.has(x.path)).map(x=>({kind:"unusedFile",file:x.rel,retainedBy:[],verdict:"unused-file"})),C=bF(t,l,u,f),k=await SF(u),_=wF(k,u,b),E=_.filter(x=>x.verdict==="candidate-unused-export"||x.verdict==="unused-export").length,O=_.filter(x=>x.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:b.size,unusedFiles:S.length,unlistedDependencies:C.filter(x=>x.kind==="unlistedDependency").length,unusedDependencies:C.filter(x=>x.kind==="unusedDependency").length,duplicateDependencies:C.filter(x=>x.kind==="duplicateDependency").length,exportedSymbols:_.length,candidateUnusedExports:E,transitiveDeadExports:O,nativeGraphFiles:d.length,nativeGraphDeclarations:d.reduce((x,H)=>x+H.declarations.length,0),nativeGraphCalls:d.reduce((x,H)=>x+H.calls.length,0)},manifests:l.map(x=>({manifest:hn(t,x.path),...x.name?{name:x.name}:{},entrypoints:x.entrypoints.map(H=>hn(t,H)),dependencyCount:[...x.deps.keys()].length})),files:S,dependencies:C,symbols:_,graphFacts:d,graphCapabilities:p,caveats:["This is a smart research flow with native AST graph facts where available plus heuristic cross-file reachability. LSP references should be used before destructive cleanup.","Graph capability coverage is explicit: tree-sitter/OXC facts are syntax inventory, not semantic deletion proof.","Dynamic imports, framework entrypoints, generated files, test-only retention, and package-manager-specific workspace rules may require project-specific refinement."]}}function tF(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 nF(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 rF(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:["localSearchCode structural","lspGetSemantics documentSymbols"],produces:["symbols","lineHints"],evidence:"proof"},{id:"reference-proof",purpose:"Use references grouped by file to separate direct, external, and transitive retention.",tools:["lspGetSemantics references","localSearchCode"],produces:["directRefs","externalRefs","retainedBy","transitiveDead"],evidence:"proof"}),(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 oF(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."]}}async function iF(e,t){let n=[];async function r(o){if(n.length>=t)return;let i=await XI(o,{withFileTypes:!0});for(let s of i){if(n.length>=t)return;if(s.isDirectory()){if(ZI.has(s.name))continue;await r(he.join(o,s.name));continue}s.isFile()&&n.push(he.join(o,s.name))}}return await r(e),n}async function sF(e){return(await Promise.all(e.map(async n=>aF(n)))).filter(n=>n!==null)}async function aF(e){let t=await cF(e);if(!t)return null;let n=he.dirname(e),r=new Map;for(let o of["dependencies","devDependencies","peerDependencies","optionalDependencies"]){let i=vF(t[o]);if(i)for(let s of Object.keys(i))r.set(s,[...r.get(s)??[],o])}return{path:e,dir:n,name:YR(t.name),deps:r,entrypoints:lF(n,t)}}async function cF(e){try{let t=JSON.parse(await Ks(e,"utf8"));return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function lF(e,t){let n=new Set;for(let o of["main","module","types","typings"]){let i=YR(t[o]);i&&n.add(he.resolve(e,i))}let r=t.bin;if(typeof r=="string"&&n.add(he.resolve(e,r)),r&&typeof r=="object"&&!Array.isArray(r))for(let o of Object.values(r))typeof o=="string"&&n.add(he.resolve(e,o));WR(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(he.resolve(e,o));return[...n]}function WR(e,t,n){if(typeof t=="string"){n.add(he.resolve(e,t));return}if(!(!t||typeof t!="object"||Array.isArray(t)))for(let r of Object.values(t))WR(e,r,n)}async function uF(e,t){let n=Tu(),r=t.filter(i=>n.has(he.extname(i).toLowerCase()));return await Promise.all(r.map(async i=>{let s=await Ks(i,"utf8").catch(()=>""),a=he.extname(i).toLowerCase(),c=dF(s,i,hn(e,i)),l=LF(c?c.imports.map(u=>u.specifier):mF(s));return{path:i,rel:hn(e,i),extension:a,language:c?.language??a.slice(1),imports:l,externalPackages:l.filter(u=>!KR(u)).map(OF).filter(XR).filter(u=>!eF.has(u)),...c?{graphFacts:c}:{}}}))}function dF(e,t,n){try{let r=M.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??he.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(AF):[]}}catch{return}}function Tu(){if(bo)return bo;try{let e=M.getSupportedGraphFactExtensions().map(t=>(t.startsWith(".")?t:`.${t}`).toLowerCase());bo=new Set(e.length>0?e:jR)}catch{bo=new Set(jR)}return bo}function pF(){if(Ro)return Ro;try{let e=JSON.parse(M.getGraphFactCapabilities());Ro=Array.isArray(e)?e.filter(fF):[]}catch{Ro=[]}return Ro}function fF(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 qR(e,t,n){let r=n.length>0?n.map(l=>l.extension).sort():[...Tu()].map(l=>l.slice(1)).sort(),o=[...new Set(n.flatMap(l=>l.factFamilies))].sort(),i=VR(e,l=>l.language),s=VR(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 VR(e,t){let n={};for(let r of e){let o=t(r)||"unknown";n[o]=(n[o]??0)+1}return n}function mF(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 gF(e){let t=new Set(e.map(o=>o.path)),n=new Map(e.map(o=>[o.path,he.dirname(o.path)])),r=new Map;for(let o of e){let i=[],s=n.get(o.path)??he.dirname(o.path);for(let a of o.imports){if(!KR(a))continue;let c=kF(s,a,t);c&&i.push(c)}r.set(o.path,i)}return r}function hF(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=wu(s,r);a&&o.add(a)}for(let i of["src/index.ts","src/index.tsx","src/index.js","index.ts","index.js"]){let s=wu(he.resolve(e,i),r);s&&o.add(s)}return[...o]}function yF(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}function bF(e,t,n,r){let o=new Map,i=new Map;for(let a of n){let c=RF(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:hn(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:hn(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:hn(e,a.path),usedBy:[],declaredIn:u,verdict:"candidate-unused-dependency"})}return s}function RF(e,t){return t.filter(r=>e.startsWith(`${r.dir}${he.sep}`)).sort((r,o)=>o.dir.length-r.dir.length)[0]}async function SF(e){return(await Promise.all(e.map(async n=>{let r=CF(n);if(r.length>0)return r;let o=await Ks(n.path,"utf8").catch(()=>"");return PF(n.rel,o)}))).flat()}function CF(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 PF(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:EF(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 wF(e,t,n){let r=new Map(t.map(o=>[o.rel,o]));return e.map(o=>{let i=t.filter(u=>u.rel!==o.file&&xF(u.path,o.symbol)),s=i.filter(u=>n.has(u.path)),a=r.get(o.file),c=a?n.has(a.path):!1,l=s.length>0?"reachable":i.length>0?"transitive-dead":c?"candidate-unused-export":"unused-export";return{symbol:o.symbol,kind:o.kind,file:o.file,line:o.line,evidenceSource:o.evidenceSource,directRefs:i.length,externalRefs:s.length,retainedBy:i.map(u=>u.rel),verdict:l}})}function xF(e,t){return Pu.get(e)?.has(t)??!1}async function TF(e){Pu.clear(),await Promise.all(e.map(async t=>{let n=await Ks(t.path,"utf8").catch(()=>"");Pu.set(t.path,new Set(n.match(/[A-Za-z_$][\w$]*/g)??[]))}))}function EF(e){return/\b(function|class|const|let|var|type|interface|enum)\b/.exec(e)?.[1]??"export"}function kF(e,t,n){return wu(he.resolve(e,t),n)}function wu(e,t){let n=Tu(),r=[e];for(let o of n)r.push(`${e}${o}`);for(let o of n)r.push(he.join(e,`index${o}`));return r.find(o=>t.has(o))}function KR(e){return e.startsWith("./")||e.startsWith("../")}function OF(e){if(e.startsWith("@")){let[t,n]=e.split("/");return t&&n?`${t}/${n}`:void 0}return e.split("/")[0]}function vF(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function YR(e){return typeof e=="string"&&e.trim()?e:void 0}function XR(e){return typeof e=="string"&&e.length>0}function AF(e){return typeof e=="string"}function LF(e){return[...new Set(e)]}function hn(e,t){return he.relative(e,t)||he.basename(t)}var jR,JI,ZI,eF,bo,Ro,Pu,JR=y(()=>{"use strict";ge();jR=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".mts",".cts"],JI="package.json",ZI=new Set([".claude",".context",".cursor",".git","node_modules","dist","out","coverage","target",".next",".turbo",".yarn"]),eF=new Set(YI.flatMap(e=>[e,`node:${e}`]));Pu=new Map});import Eu from"node:path";function ku(e){let t=e.root,n=[...e.symbols.map(a=>_F(t,a)),...e.files.map(a=>DF(t,a)),...e.dependencies.filter(a=>a.kind==="unusedDependency").map(a=>NF(a))],r=a=>a==="reachable"?1:a==="unknown"?.5:0;n.sort((a,c)=>r(a.verdict)-r(c.verdict));let o={reachable:0,"candidate-dead":0,"transitive-dead":0,"candidate-unused-file":0,"candidate-unused-dependency":0,unknown:0},i=0,s=0;for(let a of n)o[a.verdict]+=1,i+=a.why.length,s+=a.retainedBy.length+(a.retains?.length??0);return{packets:n,graphSummary:{subjects:n.length,facts:i,edges:s,byVerdict:o}}}function _F(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=IF(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:"references",source:"ripgrep",confidence:"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:FF(r),next:MF(e,t)}}function IF(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 FF(e){switch(e){case"reachable":return{deleteRisk:"high",reason:"Reachable from entrypoints via reference scan; likely used \u2014 do not delete without confirming."};case"candidate-dead":return{deleteRisk:"medium",reason:"No reachable references found, but the scan is token-based. Confirm with LSP references (next.semantic) before deleting."};case"transitive-dead":return{deleteRisk:"medium",reason:"Only referenced from unreachable code. Confirm the retention chain with LSP before deleting."};default:return{deleteRisk:"unknown",reason:"Insufficient evidence."}}}function MF(e,t){let n=Eu.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:"exact"}}},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 DF(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:Eu.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:Eu.basename(t.file)},view:"discovery"},why:"Find references to the file name (dynamic import / config).",confidence:"heuristic"}}}}function NF(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 ZR=y(()=>{"use strict"});import{statSync as GF}from"node:fs";import J from"node:path";function jt(e){let n=e.structuredContent?.results?.[0];return{data:n?.data,status:n?.status}}function eS(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}}function Lu(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 HF(e,t){if(!t||J.isAbsolute(t))return t;let n=e.structuredContent;return n?.base?J.join(n.base,t):t}function zF(e,t,n){let r=t??n??".";if(!e)return r;if(J.isAbsolute(e))return e;if(n&&J.isAbsolute(n))return J.resolve(n,e);if(t&&J.isAbsolute(t)){let o=mS(t)?t:J.dirname(t);return J.resolve(o,e)}return e}function tS(e){let t=e.scope?.path;return Array.isArray(t)?t[0]:t}function lS(e){if(!e)return[];for(let t of cS){let n=e[t];if(Array.isArray(n))return n}return[e]}function QF(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e))BF.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 Co(e,t,n,r){return e.map(o=>{let i=o&&typeof o=="object"?o:{value:o},s=u0(t,i);return{kind:"record",recordType:t,...s?{id:s}:{},...n?{source:n}:{},...r?{metadata:r}:{},data:i}})}function uS(e){return e==="plan"||e==="prove"?e:"analyze"}function Ys(e,t){let n=Math.max(1,e.page??1),r=Math.max(1,e.itemsPerPage??e.limit??UF),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 $F(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;dS.includes(o)&&t.add(o)}return t.size>0?t:void 0}function jF(e,t){let n=$F(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 dS){if(n&&!n.has(l))continue;let u=r[l]??[],{packetsStart:d,packetsEnd:p,pagination:f}=Ys(e,u.length);o[l]=u.slice(d,p),o[`${l}Page`]=f,s=f.itemsPerPage,a=Math.max(a,f.totalPages??1),f.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 qF(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 nS(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 VF(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:nS(e.relation),verdicts:nS(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 WF(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 nr(e,t){return!t.relations||!e?!0:t.relations.has(e.toLowerCase())}function pS(e,t){if(!WF(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=>nr(i.relation,t)),r=t.direction!=="incoming"&&(e.retains??[]).some(i=>nr(i.relation,t)),o=e.why.some(i=>nr(i.claim,t));return n||r||o}function Ou(e,t){e.set(t.id,t)}function KF(e,t,n){nr(t.claim,n)&&e.set(t.id,t)}function vu(e,t,n,r){nr(n.relation,r)&&(Ou(e,n.from),Ou(e,n.to),t.set(n.id,n))}function YF(e){let t=e.location?.range?.start.line;return[e.kind,e.severity,e.location?.uri??"",t===void 0?"":String(t)].join(":")}function XF(e,t,n,r,o,i){let s=t.filter(g=>pS(g,r)),a=Ys(e,s.length),c=s.slice(a.packetsStart,a.packetsEnd),l=new Map,u=new Map,d=new Map,p=new Map,f={},m={};for(let g of s)f[g.verdict]=(f[g.verdict]??0)+1,m[g.proofStatus]=(m[g.proofStatus]??0)+1;for(let g of c){if(Ou(l,g.subject),r.includeFacts)for(let b of g.why)KF(d,b,r);if(r.includeEdges){if(r.direction!=="outgoing")for(let b of g.retainedBy)vu(l,u,b,r);if(r.direction!=="incoming")for(let b of g.retains??[])vu(l,u,b,r)}for(let b of g.missingProof)p.set(YF(b),b)}return r.includeEdges&&e0(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:p.size,byVerdict:f,proofStatus:m},graphSummary:n,packetPage:a.pagination,nodes:[...l.values()],edges:[...u.values()],facts:[...d.values()],missingProof:[...p.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 fS(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 JF(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{subjects:e.length,facts:n,edges:r,byVerdict:t}}function e0(e,t,n,r,o,i){if(n.size!==0)for(let s of t)for(let a of s.edges){let c=t0(a.relation);if(!nr(c,i))continue;let l=rS(a.from,e,a.line),u=rS(a.to,e,a.line);!n.has(l.id)&&!n.has(u.id)||vu(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 t0(e){let t=e.trim();return ZF.has(t)?t:"references"}function rS(e,t,n){let r=n0(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 n0(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:J.isAbsolute(o)?J.relative(t,o):o,name:i}}function oS(e,t){return e==="plan"||t.proof==="none"?!1:t.proof==="lsp"||e==="prove"}function r0(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 o0(e,t,n,r,o){let i=n.filter(l=>pS(l,r)),s=Ys(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 s0(e,l);if(l.proof={...l.proof??{},lsp:u},u.status==="unavailable"||u.status==="error"){c.push(w(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(w("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"),i0(l,u),u.paginationOpen&&(l.missingProof.push({kind:"pagination-open",severity:"high",location:l.subject}),c.push(w("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 i0(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 s0(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=J.isAbsolute(t.subject.uri)?t.subject.uri:J.resolve(e,t.subject.uri);try{let i=await Re("lspGetSemantics",{type:"references",uri:o,symbolName:n,lineHint:r,includeDeclaration:!1,groupByFile:!0,itemsPerPage:50}),s=a0(i);if(s)return{status:s.code==="localToolsDisabled"?"unavailable":"error",files:[],paginationOpen:!1,message:s.message};let{data:a,status:c}=jt(i);if(c==="error")return{status:"error",files:[],paginationOpen:!1,message:_u(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,p=So(a?.totalReferences)??So(u?.totalReferences)??So(a?.referenceCount)??So(u?.referenceCount)??So(d?.totalItems)??iS(u)??iS(a);return{status:"ok",...typeof p=="number"?{totalReferences:p}:{},files:c0(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 a0(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 iS(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 c0(e,t){let n=new Set;return Au(e,n,t),[...n].slice(0,25)}function Au(e,t,n){if(t.size>=25||e===null||e===void 0)return;if(Array.isArray(e)){for(let o of e)Au(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"&&l0(i)&&t.add(J.isAbsolute(i)?J.relative(n,i):i)}for(let o of["references","locations","byFile","results","files","groups","items"])Au(r[o],t,n)}function l0(e){return e.includes("/")||e.includes("\\")||/\.[cm]?[jt]sx?$/.test(e)}function So(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function _u(e){return typeof e=="string"?e:void 0}function sS(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function u0(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"));case"package":{let r=n("name")??n("packageName"),o=n("version");return r?o?`${r}@${o}`:r:void 0}case"pullRequest":return n("number")?`#${n("number")}`:n("url");case"commit":return n("sha")?.slice(0,12)??n("oid")?.slice(0,12);case"artifact":return n("localPath")??n("path");case"materialized":return n("localPath")??n("repoRoot");case"diff":return n("path")??n("filename");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"}}function Iu(e,t){let{status:n,data:r}=jt(e);return n==="error"?[w("invalidQuery",Lu(r?.error,`${t} failed`),{backend:t})]:n==="empty"?[w("zeroMatches","Query ran and matched nothing.",{backend:t,severity:"info",blocksAnswer:!1})]:[]}function mS(e){try{let t=J.isAbsolute(e)?e:J.resolve(e);return GF(t).isDirectory()}catch{return!1}}function Xs(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 qt(e){return e.params??{}}function d0(e){let t=e.scope?.language;if(t)return Array.isArray(t)?t[0]:t}function Fu(e,t){let n={...qt(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}function Js(e,t,n,r){let{data:o,status:i}=jt(e),s=Iu(e,n),a=i==="error"?[]:lS(o);a.length===0&&!s.some(d=>d.code==="zeroMatches"||d.severity==="error")&&s.push(w("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=Et(c,l);return{results:Co(a,t,r,QF(o)),...u?{pagination:u}:{},diagnostics:s,provenance:[{backend:n,source:r}]}}function p0(e,t){let n=[],r=e?.lsp;r?.serverAvailable===!1&&n.push(w("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?.pagination;return o?.hasMore&&n.push(w("partialResult","Semantic result is paginated; follow the continuation before treating it as complete proof.",{backend:"lspGetSemantics",blocksAnswer:!0,continuation:gS(o,t)})),n}function gS(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 f0(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:gS(n,t)}}async function m0(e){let{owner:t}=Xs(e.from),n=Fu(e,"limit"),r=typeof n.language=="string"?n.language:d0(e),o=Bl(r);o&&(n.language=o);let i=await Re("ghSearchRepos",{...t?{owner:t}:{},...n});return Js(i,"repository","ghSearchRepos",e.from??{kind:"github"})}async function g0(e){let t=await Re("npmSearch",{...Fu(e)});return Js(t,"package","npmSearch",e.from??{kind:"npm"})}async function aS(e){let{owner:t,repo:n}=Xs(e.from),r=e.target==="commits",o=r?void 0:b0(e),i=r?h0(e):void 0,s=Fu(e,r?"perPage":"limit");(o||i)&&(delete s.matchString,delete s.matchScope);let a=await Re("ghHistoryResearch",{...t?{owner:t}:{},...n?{repo:n}:{},...r?{type:"commits"}:{},...s}),c=Js(a,r?"commit":"pullRequest","ghHistoryResearch",e.from??{kind:"github"});return o?S0(c,o):i?y0(c,i):c}function h0(e){let t=qt(e);return typeof t.matchString=="string"&&t.matchString.length>0?t.matchString:void 0}function y0(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),p=Math.min(l.length,u+t.length+80);return a.match={matchString:t,scope:"message",spotlight:(d>0?"\u2026":"")+l.slice(d,p)+(p<l.length?"\u2026":"")},!0}),i=e.diagnostics.filter(s=>s.code!=="zeroMatches");return o.length===0?i.push(w("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(w("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 b0(e){let t=qt(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 R0(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(`
47
+ `)}function S0(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=R0(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(w("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(w("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}}async function C0(e){let t=qt(e),{owner:n,repo:r}=Xs(e.from),o=Xn(t);if(o.kind==="prPatch"){let i=await Re("ghHistoryResearch",{...n?{owner:n}:{},...r?{repo:r}:{},content:{patches:{mode:"all"}},...t});return Js(i,"diff","ghHistoryResearch",e.from??{kind:"github"})}return o.kind==="directFile"?e.from?.kind==="local"||e.from?.kind==="materialized"?P0(e,{baseRef:o.baseRef,headRef:o.headRef,path:o.path}):w0(e,n,r,{baseRef:o.baseRef,headRef:o.headRef,path:o.path}):{results:[],diagnostics:[w("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 P0(e,t){let n=e.from,r=n?.kind==="local"?n.path:n?.kind==="materialized"?n.localPath:void 0;if(!r)return{results:[],diagnostics:[w("invalidQuery","Local direct file diff needs from.path.",{backend:"localGetFileContent"})],provenance:[]};let o=f=>Re("localGetFileContent",{path:f,fullContent:!0,minify:"none"}),[i,s]=await Promise.all([o(r),o(t.path)]),a=jt(i),c=jt(s),l=typeof a.data?.content=="string"?a.data.content:void 0,u=typeof c.data?.content=="string"?c.data.content:void 0;if(a.status==="error"||c.status==="error"||l===void 0||u===void 0){let f=Lu(a.data?.error??c.data?.error,"Could not read local file.");return{results:[],diagnostics:[w("invalidQuery",f,{backend:"localGetFileContent"})],provenance:[{backend:"localGetFileContent",source:e.from}]}}let d=hS(l,u);return{results:[{kind:"record",recordType:"diff",id:`${r}..${t.path}`,...e.from?{source:e.from}:{},data:{path:t.path,basePath:r,headPath:t.path,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?[w("zeroMatches","Files are identical.",{backend:"localGetFileContent",severity:"info",blocksAnswer:!1})]:[],provenance:[{backend:"localGetFileContent",source:e.from}]}}async function w0(e,t,n,r){if(!t||!n)return{results:[],diagnostics:[w("invalidQuery","Direct file diff needs a concrete owner/repo.",{backend:"ghGetFileContent"})],provenance:[]};let o=p=>Re("ghGetFileContent",{owner:t,repo:n,path:r.path,branch:p,fullContent:!0,minify:"none"}),[i,s]=await Promise.all([o(r.baseRef),o(r.headRef)]),a=eS(i),c=eS(s),l=[{label:"base",ref:r.baseRef,...a},{label:"head",ref:r.headRef,...c}].find(p=>p.status==="error"||typeof p.content!="string");if(l){let p=Lu(l.error,`Could not read ${l.label} ref "${l.ref}" for ${r.path}.`);return{results:[],diagnostics:[w("invalidQuery",p,{backend:"ghGetFileContent"})],provenance:[{backend:"ghGetFileContent",source:e.from}]}}let u=hS(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?[w("zeroMatches","Files are identical at both refs.",{backend:"ghGetFileContent",severity:"info",blocksAnswer:!1})]:[],provenance:[{backend:"ghGetFileContent",source:e.from}]}}function hS(e,t){let n=e===""?[]:e.split(`
48
+ `),r=t===""?[]:t.split(`
49
+ `),o=n.length,i=r.length,s=Array.from({length:o+1},()=>new Array(i+1).fill(0));for(let f=o-1;f>=0;f--)for(let m=i-1;m>=0;m--)s[f][m]=n[f]===r[m]?s[f+1][m+1]+1:Math.max(s[f+1][m],s[f][m+1]);let a=[],c=0,l=0,u=0,d=0,p=0;for(;d<o&&p<i;)n[d]===r[p]?(a.push(` ${n[d]}`),u++,d++,p++):s[d+1][p]>=s[d][p+1]?(a.push(`- ${n[d]}`),l++,d++):(a.push(`+ ${r[p]}`),c++,p++);for(;d<o;)a.push(`- ${n[d++]}`),l++;for(;p<i;)a.push(`+ ${r[p++]}`),c++;return{additions:c,deletions:l,unchanged:u,patch:a.join(`
50
+ `)}}async function x0(e){let t=e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0;if(!t)return{results:[],diagnostics:[w("invalidQuery",'target:"artifacts" needs a local file `from` (path).',{backend:"localBinaryInspect"})],provenance:[]};let n=await Re("localBinaryInspect",{path:t,...qt(e)}),{data:r,status:o}=jt(n),i=Iu(n,"localBinaryInspect");return o==="error"||!r?{results:[],diagnostics:i.length?i:[w("zeroMatches","localBinaryInspect returned no data.",{backend:"localBinaryInspect",severity:"info",blocksAnswer:!1})],provenance:[{backend:"localBinaryInspect",source:e.from}]}:{results:Co([r],"artifact",e.from),diagnostics:[...i,...T0(r,e)],provenance:[{backend:"localBinaryInspect",source:e.from}]}}function T0(e,t){let n=e.pagination&&typeof e.pagination=="object"?e.pagination:void 0;return e.isPartial!==!0&&n?.hasMore!==!0?[]:[w("partialResult","Artifact text is paginated; follow the artifact continuation before treating the inline content as complete.",{backend:"localBinaryInspect",blocksAnswer:!0,continuation:E0(t,n)})]}function E0(e,t){if(!(t?.hasMore!==!0||typeof t.nextCharOffset!="number"))return{query:{...e,params:{...e.params??{},charOffset:t.nextCharOffset,...typeof t.charLength=="number"?{charLength:t.charLength}:{}}},why:"Read the next inline artifact text window.",confidence:"exact"}}async function k0(e){let t,n,r=[],o=[],i=qt(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,O=mS(E);n=c??(O?J.resolve(E):void 0),t=a??(O?void 0:E)}else t=a??e.from.path;else if(e.from?.kind==="materialized"){let E=tS(e),O=E?J.isAbsolute(E)?E:J.join(e.from.localPath,E):void 0;s?(n=c??e.from.localPath,t=a??O):t=a??O??e.from.localPath}else if(e.from?.kind==="github"){let{owner:E,repo:O}=Xs(e.from);if(!E||!O)return o.push(w("invalidQuery","Remote semantics needs owner/repo.",{backend:"lspGetSemantics"})),{results:[],diagnostics:o,provenance:r};let x=typeof i.uri=="string"?i.uri:void 0,H=tS(e),I=x&&!J.isAbsolute(x)?x:H,v=await Re("ghCloneRepo",{owner:E,repo:O,...e.from.ref?{branch:e.from.ref}:{},...I?{sparsePath:I}:{}}),D=jt(v).data,B=HF(v,D?.localPath);if(!B)return o.push(w("materializationFailed","Could not materialize repo for remote LSP.",{backend:"ghCloneRepo"})),{results:[],diagnostics:o,provenance:r};r.push({backend:"ghCloneRepo",source:e.from,materializedPath:B}),s?(n=c??B,x?t=J.isAbsolute(x)?x:J.join(B,x):H&&(t=J.isAbsolute(H)?H:J.join(B,H))):x?t=J.isAbsolute(x)?x:J.join(B,x):H?t=J.isAbsolute(H)?H:J.join(B,H):t=B}if(!t&&!n)return o.push(w("invalidQuery",'target:"semantics" needs a `from` anchor.',{backend:"lspGetSemantics"})),{results:[],diagnostics:o,provenance:r};let{uri:l,symbolKind:u,workspaceRoot:d,...p}=i,f=await Re("lspGetSemantics",{...p,...n?{workspaceRoot:n}:{},...t?{uri:t}:{}}),{data:m,status:g}=jt(f),b=m,S=f0(b,e),C=zF(_u(b?.uri),t,n),k=A0(e,C),_=v0(O0(b),u);return{results:g==="error"?[]:Co(_,"semantics",k),...S?{pagination:S}:{},diagnostics:[...o,...Iu(f,"lspGetSemantics"),...p0(b,e)],provenance:[...r,{backend:"lspGetSemantics",source:k}]}}function O0(e){if(!e)return[];let n=(sS(e.payload)?e.payload:void 0)?.symbols;if(Array.isArray(n)){let r=_u(e.uri);return n.map(o=>sS(o)?{...r&&typeof o.uri!="string"?{uri:r}:{},...o}:o)}return lS(e)}function v0(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 A0(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}}async function L0(e){let t=qt(e),n=e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0;if(!n)return{results:[],diagnostics:[w("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(m=>typeof m=="string"):void 0,o=uS(t.mode);if(o==="prove"&&typeof t.intent!="string")return{results:[],diagnostics:[w("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 xu({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(m){return{results:[],diagnostics:[w("invalidQuery",m instanceof Error?m.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}:ku(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?Ys(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"?jF(e,i):{fields:{}},p={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:fS(i.graphFacts),caveats:c,...a?{graphSummary:a,packetPage:l?.pagination,packets:u}:{},...d.fields},f=qF(l?.pagination,d.pagination);return{results:Co([p],"research",e.from),...f?{pagination:f}:{},diagnostics:[],provenance:[{backend:"smartOqlResearch",source:e.from}]}}async function _0(e){let t=qt(e),n=e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0;if(!n)return{results:[],diagnostics:[w("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(m=>typeof m=="string"):void 0,o=uS(t.mode);if(o==="prove"&&typeof t.intent!="string")return{results:[],diagnostics:[w("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 xu({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(m){return{results:[],diagnostics:[w("invalidQuery",m instanceof Error?m.message:"Could not analyze the requested graph root.",{backend:"smartOqlGraph"})],provenance:[{backend:"smartOqlGraph",source:e.from}]}}let s=i.mode==="plan"?void 0:ku(i),a=VF(t),c=s?.packets??[],l=oS(i.mode,t)?await o0(n,e,c,a,r0(e,t)):[],u=JF(c),d=XF(e,c,u,a,i.graphFacts,n),p=[...d.data.caveats??[],...i.caveats,...i.mode==="plan"?['mode:"plan" requested: graph packets were not built.']:[],...t.mode==="prove"?[oS(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.']:[]],f={...d.data,goal:i.goal,intent:i.intent,facets:i.facets,mode:i.mode,root:i.root,flow:i.flow,graphCapabilities:i.graphCapabilities,nativeGraphSummary:fS(i.graphFacts),caveats:p};return{results:Co([f],"graph",e.from),pagination:d.pagination,diagnostics:l,provenance:[{backend:"smartOqlGraph",source:e.from}]}}var cS,BF,UF,dS,ZF,yS,bS=y(()=>{"use strict";js();Ms();ft();As();Ls();JR();ZR();cS=["repositories","pull_requests","commits","packages","results","locations","references","symbols","strings","entries","incomingCalls","outgoingCalls"],BF=new Set([...cS,"pagination","contentPagination","next"]);UF=25;dS=["manifests","files","dependencies","symbols","graphFacts"];ZF=new Set(["contains","defines","exports","imports","references","calls","constructs","extends","implements","typeUses"]);yS={repositories:m0,packages:g0,pullRequests:aS,commits:aS,diff:C0,artifacts:x0,semantics:k0,research:L0,graph:_0}});var OS={};$S(OS,{buildArtifactContinuations:()=>xS,runOqlSearch:()=>I0});import it from"node:path";import{statSync as SS}from"node:fs";async function I0(e,t={}){let n;try{n=Qb(e)}catch(o){if(o instanceof Ut)return pu(o.diagnostics);throw o}if(Td(n))return pM(n,e,t);let r=await CS(n,e,t);return Mu(r.results),r}function Mu(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 CS(e,t,n,r){let o=lR(e,t),s=!!e.explain||!!n.dryRun?o.plan:void 0;if(!o.executable||n.dryRun)return oM(o,s,e.id,r,n.dryRun,e);let a=await dM(e,o);iM(e,a.results),F0(e,a);let c=H0(e,a);z0(e,a.results);let l=uM(e,a.results);return Fs({queryId:e.id,queryIndex:r,results:a.results,...a.pagination?{pagination:a.pagination}:{},...Object.keys(c).length?{next:c}:{},diagnostics:[...o.plan.diagnostics,...a.diagnostics,...l],provenance:a.provenance,executable:!0,approximate:fR(o.plan.backendCalls),plan:s})}function F0(e,t){if(e.target==="content"||e.target==="code"&&t.pagination?.totalItemsKind==="files"&&typeof e.limit!="number")return;let n=typeof e.limit=="number"?e.limit:typeof e.itemsPerPage=="number"?e.itemsPerPage:void 0;if(!n||n<1||t.results.length<=n)return;let r=t.pagination?.totalItems??t.results.length,o=t.pagination?.currentPage??e.page??1;t.results=t.results.slice(0,n),t.pagination={...t.pagination,currentPage:o,itemsPerPage:t.pagination?.itemsPerPage??n,totalItems:r,totalPages:t.pagination?.totalPages??Math.max(1,Math.ceil(r/n)),hasMore:!0}}function M0(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 D0(e){let t=e.scope?.path;return Array.isArray(t)?t[0]:t}function N0(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 G0(e){let t=N0(e),n=D0(e),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 ${RS(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 ${RS(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 RS(e){let t=e.where;return t?.kind==="text"||t?.kind==="regex"?t.value:t?.kind==="structural"?"pattern":"<term>"}function H0(e,t){let n={};t.pagination?.hasMore&&e.target!=="content"&&(n["next.page"]=t.pagination.next??{query:{...e,page:(e.page??1)+1},why:"More result pages remain.",confidence:"exact"}),t.diagnostics.some(o=>o.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(o=>o.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. ${G0(e)}`,confidence:"heuristic"});let r={query:e,fileFrom:nM(e)};for(let o of t.results){let i=o.kind==="record"?`record:${o.recordType}`:o.kind,s=U0[i];if(!s)continue;let a=s(o,r);a&&Object.keys(a).length&&(o.next=a)}return n}function z0(e,t){for(let n of t)n.proofGrade??=B0(e,n)}function B0(e,t){return t.kind==="code"?Po(e.where,"structural")||t.metavars!==void 0||t.metavarRanges!==void 0?"structural":Po(e.where,"text")||Po(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"?Zs(t.data)?"missing":"graph":t.recordType==="research"?Zs(t.data)?"missing":t.data.mode==="prove"?"graph":"candidate":t.recordType==="diff"||t.recordType==="artifact"?"text":"candidate"}function Po(e,t){return e?e.kind===t?!0:e.kind==="all"||e.kind==="any"?e.of.some(n=>Po(n,t)):e.kind==="not"?Po(e.predicate,t):!1:!1}function Zs(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(!Q0(r))return!1;let o=r.missingProof;return r.proofStatus==="missing"||Array.isArray(o)&&o.length>0})}function Q0(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function $0(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:M0(t.query),s={"next.fetch":{query:{schema:"oql",target:"content",from:r,...t.fileFrom?{}:{scope:{path:n.path}},fetch:{content:{contentView:"exact",...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 j0(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 PS(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 wS(e){let t=e.data;return typeof t?.localPath=="string"?t.localPath:void 0}function xS(e,t){let n={},r=e.data,o=typeof r?.mode=="string"?r.mode:void 0,i=wS(e);i&&(o==="strings"?n["next.search"]={query:{schema:"oql",target:"code",from:{kind:"local",path:i},where:{kind:"regex",value:"https?://\\S+"},controls:{search:{maxMatchesPerFile:100,matchPage:1}}},why:"Grep this strings dump with local code search (ripgrep) \u2014 swap the regex/pattern for what you need (URLs, hosts, symbols); page noisy hits losslessly with matchPage. For a huge binary this beats reading the capped inline preview.",confidence:"heuristic"}:Object.assign(n,PS(i,"extracted")));let s=typeof r?.nextScanOffset=="number"?r.nextScanOffset:void 0;s!==void 0&&(n["next.artifactStrings"]={query:{...t.query,params:{...t.query.params??{},scanOffset:s}},why:"Scan the next window of printable strings.",confidence:"exact"});let a=r?.pagination&&typeof r.pagination=="object"?r.pagination:void 0,c=typeof a?.nextCharOffset=="number"?a.nextCharOffset:void 0;if(a?.hasMore===!0&&c!==void 0){let l=typeof a.charLength=="number"?a.charLength:void 0;n["next.artifactContent"]={query:{...t.query,params:{...t.query.params??{},charOffset:c,...l!==void 0?{charLength:l}:{}}},why:"Read the next inline artifact text window.",confidence:"exact"}}return Object.keys(n).length?n:void 0}function q0(e){let t=wS(e);return t?PS(t,"materialized"):void 0}function V0(e,t){return TS(e,t,{why:"Upgrade this candidate research to LSP-proven relationships for the current page (bounded proof).",force:!0})}function W0(e,t){let n=t.query.params??{};if(n.proof==="none"||n.proof==="lsp"||n.mode==="prove")return;let r=e.data;if(Zs(r))return TS(e,t,{why:"Upgrade this candidate graph page to LSP-proven relationships (bounded proof)."})}function TS(e,t,n){let r=t.query.from;if(r?.kind!=="local"&&r?.kind!=="materialized")return;let o=e.data;if(!n.force&&!Zs(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=Y0(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 Y0(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"&&K0.has(o));return r.length>0?r:void 0}function X0(e,t){let n=e.data,r=typeof n?.uri=="string"?n.uri:void 0,o=eM(e)??tM(t.query),i=J0(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:"exact",...s?{range:{startLine:s,contextLines:2}}:{}}}},why:"Read the code at this symbol location.",confidence:"exact"}}}function J0(e,t){if(e&&it.isAbsolute(e))return e;if(t&&it.isAbsolute(t)){let n=Z0(t);return e?it.resolve(n,e):t}return t??e}function Z0(e){try{return SS(e).isDirectory()?e:it.dirname(e)}catch{return it.dirname(e)}}function eM(e){let t=e.source;if(t?.kind==="local")return t.path;if(t?.kind==="materialized")return t.localPath}function tM(e){if(e.from?.kind==="local")return e.from.path;if(e.from?.kind==="materialized")return e.from.localPath}function nM(e){let t=kS(e);if(!t)return;let n=ES(t).slice(0,-it.sep.length);return r=>({kind:"local",path:it.isAbsolute(r)?r:it.join(n,r)})}function rM(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 oM(e,t,n,r,o,i){if(!e.executable){let s=e.plan.nodes.some(a=>a.route==="UNSUPPORTED");return o&&!s?{...n?{queryId:n}:{},...r!==void 0?{queryIndex:r}:{},results:[],diagnostics:e.plan.diagnostics,provenance:[],evidence:{answerReady:!1,complete:!1,kind:"partial"},...t?{plan:t}:{}}:pu(e.plan.diagnostics,t,n,r,rM(i))}return{...n?{queryId:n}:{},...r!==void 0?{queryIndex:r}:{},results:[],diagnostics:e.plan.diagnostics,provenance:[],evidence:{answerReady:!1,complete:!1,kind:"partial"},...t?{plan:t}:{}}}function ES(e){let t=it.resolve(e);try{if(SS(t).isDirectory())return`${t}${it.sep}`}catch{}return`${it.dirname(t)}${it.sep}`}function kS(e){return e.from?.kind==="local"?e.from.path:e.from?.kind==="materialized"?e.from.localPath:void 0}function iM(e,t){let n=kS(e);if(!n)return;let r=ES(n);for(let o of t){let i=o.path;typeof i=="string"&&i.startsWith(r)&&(o.path=i.slice(r.length))}}function uM(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):aM.has(c)?o.add(c):cM.has(c)?o.add("data"):lM.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(!sM.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?[w("unknownField",`select contains unknown field(s): ${s.join(", ")}. They were ignored.`,{queryPath:"select",severity:"warning",blocksAnswer:!1})]:[]}async function dM(e,t){if(e.target==="materialize")return UR(e);let n=yS[e.target];return n?n(e):e.from?.kind==="local"||e.from?.kind==="materialized"?ho(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"?QR(e):MR(e)}async function pM(e,t,n){let r=await Promise.all(e.queries.map(async(i,s)=>{let a=await CS(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=fM(r);i.error?o.diagnostics.push(i.error):i.envelope&&(o.merged=i.envelope),o.merged&&Mu(o.merged.results)}else for(let i of r)Mu(i.envelope.results);return o}function fM(e){let t=new Set;for(let c of e)for(let l of c.envelope.results)t.add(l.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=!1,a=!1;for(let c of e){for(let l of c.envelope.results){let u=gM(l);n.has(u)||(n.add(u),r.push(l))}o.push(...c.envelope.diagnostics),i.push(...c.envelope.provenance),c.envelope.evidence.kind==="candidate"&&(s=!0),mM(c.envelope)&&(a=!0)}return a&&o.push(w("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:Fs({results:r,...a?{pagination:{hasMore:!0}}:{},diagnostics:o,provenance:i,executable:e.every(c=>c.envelope.evidence.kind!=="unsupported"),approximate:s})}}function mM(e){return!!(e.pagination?.hasMore||e.next&&Object.keys(e.next).some(t=>t.startsWith("next.page")))}function gM(e){let t=e.path??"",n=e.line??"",r=JSON.stringify(e.source??{});return`${e.kind}:${r}:${t}:${n}`}var U0,K0,sM,aM,cM,lM,vS=y(()=>{"use strict";jb();dR();ft();mR();Su();DR();$R();bS();cr();U0={code:$0,content:j0,"record:artifact":xS,"record:materialized":q0,"record:semantics":X0,"record:research":V0,"record:graph":W0};K0=new Set(["symbols","files","dependencies","relations"]);sM=new Set(["kind","source","recordType","id","proofGrade"]),aM=new Set(["path","line","endLine","column","snippet","matchIndices","metadata","content","contentView","range","metavars","metavarRanges","proofGrade","size","modified","entryType","depth","children","data"]),cM=new Set(["manifests","files","dependencies","symbols","graphFacts","packets","nodes","edges","facts"]),lM=new Set(["pagination","diagnostics","provenance","evidence","repo","localPath"])});async function LS(e){let t=hM(e),n=An.safeParse(t);if(!n.success)throw n.error;let{runOqlSearch:r}=await Promise.resolve().then(()=>(vS(),OS)),o=await r(n.data,{authInfo:e.authInfo});return yM(o)}function hM(e){let t={...e};return delete t.authInfo,delete t.sessionId,delete t.responseCharOffset,delete t.responseCharLength,t}function yM(e){let t=bM(e),n=t.results.some(r=>r.status==="error");return{content:[{type:"text",text:JSON.stringify(e,null,2)}],...n?{isError:!0}:{},structuredContent:t}}function bM(e){return Ed(e)?{results:e.children.map(t=>AS(t.envelope,t.queryId)),oql:e,mode:e.mode,...e.merged?{merged:e.merged}:{},...e.diagnostics.length>0?{diagnostics:e.diagnostics}:{}}:{results:[AS(e,e.queryId??"oqlSearch-1")],oql:e}}function AS(e,t){return{id:e.queryId??t,...RM(e),data:e}}function RM(e){return e.evidence.kind==="unsupported"||e.diagnostics.some(t=>t.severity==="error")?{status:"error"}:e.results.length===0?{status:"empty"}:{}}var _S=y(()=>{"use strict";lr();cr()});var Du,IS=y(()=>{"use strict";pe();Du={hasTool(e){return xc(e)},getDescription(e){return wc[e]??""},getToolName(e){return A[e]??String(e)}}});function SM(e,t){return t.getToolName(e)}function st(e,t,n){let r=SM(t,e);return{...n,name:r,description:Nu(r,e)}}function CM(e=Du){let t=st(e,"GITHUB_SEARCH_CODE",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:Ao,inputSchema:Lo,executionFn:Oh,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),n=st(e,"GITHUB_FETCH_CONTENT",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Sn,inputSchema:Oo,executionFn:wh,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),r=st(e,"GITHUB_VIEW_REPO_STRUCTURE",{isDefault:!0,isLocal:!1,type:"content",direct:{schema:Do,inputSchema:No,executionFn:Yh,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),o=st(e,"GITHUB_SEARCH_REPOSITORIES",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:Fo,inputSchema:Mo,executionFn:Wh,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),i=st(e,"GITHUB_SEARCH_PULL_REQUESTS",{isDefault:!0,isLocal:!1,type:"history",direct:{schema:Pn,inputSchema:_o,executionFn:zh,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),s=st(e,"PACKAGE_SEARCH",{isDefault:!0,isLocal:!1,type:"search",direct:{schema:Go,inputSchema:Ho,executionFn:xy,security:"remote",requiresServerRuntime:!0}}),a=st(e,"GITHUB_CLONE_REPO",{isDefault:!0,isLocal:!0,isClone:!0,type:"content",skipMetadataCheck:!0,direct:{schema:or,inputSchema:ko,executionFn:Kg,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}}),c=st(e,"LOCAL_RIPGREP",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:Ot,inputSchema:$o,executionFn:eb,security:"basic"}}),l=st(e,"LOCAL_VIEW_STRUCTURE",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:En,inputSchema:jo,executionFn:gb,security:"basic"}}),u=st(e,"LOCAL_FIND_FILES",{isDefault:!0,isLocal:!0,type:"search",direct:{schema:xn,inputSchema:Qo,executionFn:_y,security:"basic"}}),d=st(e,"LOCAL_FETCH_CONTENT",{isDefault:!0,isLocal:!0,type:"content",direct:{schema:wn,inputSchema:zo,executionFn:vy,security:"basic"}}),p={name:we,description:Nu(we,e),isDefault:!0,isLocal:!0,skipMetadataCheck:!0,type:"content",direct:{schema:Ko,inputSchema:Yo,executionFn:Ob,security:"basic",requiresServerRuntime:!0}},f=st(e,"LOCAL_BINARY_INSPECT",{isDefault:!0,isLocal:!0,isBinary:!0,type:"content",direct:{schema:On,inputSchema:Xo,executionFn:kg,security:"basic"}}),m={name:Wt,description:Nu(Wt,e),isDefault:!0,isLocal:!1,type:"search",direct:{schema:ti,inputSchema:An,executionFn:LS,security:"remote",requiresServerRuntime:!0,requiresProviders:!0}};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:p,LOCAL_BINARY_INSPECT:f,OQL_SEARCH:m,ALL_TOOLS:[t,n,r,o,i,s,a,c,l,u,d,p,f,m]}}var Nu,De,nY,rY,oY,iY,sY,aY,cY,lY,uY,dY,pY,fY,mY,gY,FS,MS=y(()=>{"use strict";na();vo();ra();Io();oa();ia();sa();Bo();Uo();ar();qo();la();Jo();lr();Og();Yg();xh();vh();Bh();Kh();Xh();Ty();Ay();Iy();tb();hb();Nb();_S();yn();To();IS();Nu=(e,t=Du)=>t.getDescription(e);De=CM(),nY=De.GITHUB_SEARCH_CODE,rY=De.GITHUB_FETCH_CONTENT,oY=De.GITHUB_VIEW_REPO_STRUCTURE,iY=De.GITHUB_SEARCH_REPOSITORIES,sY=De.GITHUB_SEARCH_PULL_REQUESTS,aY=De.PACKAGE_SEARCH,cY=De.GITHUB_CLONE_REPO,lY=De.LOCAL_RIPGREP,uY=De.LOCAL_VIEW_STRUCTURE,dY=De.LOCAL_FIND_FILES,pY=De.LOCAL_FETCH_CONTENT,fY=De.LSP_GET_SEMANTIC_CONTENT,mY=De.LOCAL_BINARY_INSPECT,gY=De.OQL_SEARCH,FS=De.ALL_TOOLS});import{ContentSanitizer as PM}from"@octocodeai/octocode-engine/security";function Gu(e){let t=e;if(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}=PM.sanitizeContent(n.text);return{...n,text:r}}catch{return n}return n})}),t.structuredContent)try{t={...t,structuredContent:Gt(t.structuredContent)}}catch{}return t}function Hu(e,t){let n=xM(t),r={content:[{type:"text",text:`error: tool "${e}" threw an exception
51
+ message: ${n.message}`}],structuredContent:{status:"error",tool:e,code:wM,error:{name:n.name,message:n.message,code:n.code}},isError:!0};try{return Gu(r)}catch{return r}}function xM(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:TM(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 TM(e){try{return JSON.stringify(e)}catch{return}}var wM,DS=y(()=>{"use strict";Vr();wM="TOOL_CALLBACK_EXCEPTION"});import{withSecurityValidation as EM,withBasicSecurityValidation as kM}from"@octocodeai/octocode-engine/security";function NS(e,t){let n=EM(e,(r,o,i)=>t(r,o,i));return(r,o)=>n(r,o)}function GS(e,t){let n=kM(r=>e(r),t);return(r,o)=>n(r,o)}var HS=y(()=>{"use strict"});import{releaseAllPooledClients as OM}from"@octocodeai/octocode-engine/lsp/manager";function vM(e){return async t=>e(t)}function AM(e){let{direct:t}=e;return{name:e.name,schema:t.schema,inputSchema:t.inputSchema,execute:vM(t.executionFn),security:t.security,isLocal:e.isLocal,isClone:e.isClone,requiresServerRuntime:t.requiresServerRuntime,requiresProviders:t.requiresProviders}}function _M(e){return LM.find(t=>t.name===e)}async function qs(e,t){let n=_M(e);if(!n)throw new Error(`Unknown tool: ${e}`);try{let r=IM(n,t);return await FM(n),MM(n),await DM(n,r)}catch(r){return Hu(n.name,r)}finally{e===we&&await OM()}}function IM(e,t){let n=e.inputSchema.safeParse(t);if(!n.success)throw n.error;return n.data}async function FM(e){e.requiresServerRuntime&&(zu||(zu=Jp()),await zu),e.requiresProviders&&(Bu||(Bu=qm().then(()=>{})),await Bu)}function MM(e){if(!e.isLocal&&!e.isClone)return;let t=ke();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}if(e.isClone&&!(t.local.enabled&&t.local.enableClone)){let n=new Error(`Tool "${e.name}" requires clone support. Set ENABLE_CLONE=true and ENABLE_LOCAL=true to use it.`);throw n.code="cloneDisabled",n}}async function DM(e,t){try{let n=e.security==="remote"?await NM(e,t):await GM(e,t);return Gu(n)}catch(n){return Hu(e.name,n)}}async function NM(e,t){return NS(e.name,async(r,o,i)=>e.execute({...r,authInfo:o,sessionId:i}))(t,{})}async function GM(e,t){return GS(e.execute,e.name)(t)}var zu,Bu,LM,zS=y(()=>{"use strict";_r();Qc();_e();yn();MS();DS();HS();Ca();zu=null,Bu=null;LM=FS.map(AM)});var Cu=y(()=>{"use strict";Ca();zS()});Cu();import{completeMetadata as HM}from"@octocodeai/octocode-core";var Qu=null;function zM(){return Qu||(Qu=HM),Qu}async function BM(){return zM()}Vr();export{ma as DIRECT_TOOL_CATEGORIES,Qd as DIRECT_TOOL_DEFINITIONS,ct as DirectToolInputError,cP as buildDirectToolExampleQuery,qs as executeDirectTool,dr as findDirectToolDefinition,HT as formatCallToolResultForOutput,nP as formatDirectToolMetadataSchemaText,iP as formatDirectToolOutputSchemaText,tP as formatDirectToolSchemaText,rP as getDirectToolAutoFilledFields,ur as getDirectToolCategory,sP as getDirectToolDescription,Sa as getDirectToolDisplayFields,oP as getDirectToolOutputFields,BM as loadToolContent,Ud as prepareDirectToolInput,dP as prepareDirectToolInputFromJsonText,eP as sortDirectToolNames};