@inkeep/open-knowledge 0.9.0-beta.10 → 0.9.0-beta.12

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 (46) hide show
  1. package/dist/assets/skills/discovery/SKILL.md +1 -1
  2. package/dist/assets/skills/project/SKILL.md +1 -1
  3. package/dist/cli.mjs +50 -50
  4. package/dist/constants-BsDF_COe.mjs +2 -0
  5. package/dist/{dist-C5vyt2gE.mjs → dist-BBbP7DxV.mjs} +4 -4
  6. package/dist/{dist-D-usc-3E.mjs → dist-CpYAbkBw.mjs} +1 -1
  7. package/dist/{gh-detect-lzLKmmPa.mjs → gh-detect-D3_evne3.mjs} +2 -2
  8. package/dist/index.mjs +1 -1
  9. package/dist/{init--MUfLCWd.mjs → init-CANrNVDk.mjs} +6 -6
  10. package/dist/init-hMRmtJMS.mjs +1 -0
  11. package/dist/loader-BsENTmPa.mjs +1 -0
  12. package/dist/{loader-D3q2Fb9q.mjs → loader-DyckoSTu.mjs} +3 -3
  13. package/dist/preview-1nz8JsfK.mjs +1 -0
  14. package/dist/{preview-Bp5kL952.mjs → preview-CtJlOfbB.mjs} +2 -2
  15. package/dist/public/assets/{ActivityModeContent-Bm0U64-P.js → ActivityModeContent-Bds2tgDc.js} +1 -1
  16. package/dist/public/assets/DocumentContext-QeMOWx_9.js +61 -0
  17. package/dist/public/assets/{GraphPanel-7INU_4XO.js → GraphPanel-BZLyzZlB.js} +3 -3
  18. package/dist/public/assets/{SettingsDialogBody-D8T0NRov.js → SettingsDialogBody-5tbTYUhy.js} +2 -2
  19. package/dist/public/assets/{SourceEditor-CpS1HdDh.js → SourceEditor-eAWbTIpy.js} +1 -1
  20. package/dist/public/assets/{config-validation-events-BTvynJE_.js → config-validation-events-ITinmoyE.js} +5 -5
  21. package/dist/public/assets/{index-CMf0n3_r.js → index-1-IrF-IN.js} +84 -84
  22. package/dist/public/assets/{index-DXJpL9JA.css → index-BuqVcYKx.css} +1 -1
  23. package/dist/public/assets/{prop-types-kmSrjLlV.js → prop-types-aT575Fhm.js} +152 -152
  24. package/dist/public/assets/{target-navigation-intent-CoXNdpnE.js → target-navigation-intent-BPXK-fNF.js} +1 -1
  25. package/dist/public/assets/{toggle-group-5aVb_hvg.js → toggle-group-BxyYbA6G.js} +1 -1
  26. package/dist/public/assets/{typing-burst-detector-CnVF7lj5.js → typing-burst-detector-Dwn4lC9Q.js} +1 -1
  27. package/dist/public/index.html +8 -8
  28. package/dist/{repair-launch-json-rPjobB3p.mjs → repair-launch-json-CC3QjG7G.mjs} +2 -2
  29. package/dist/{repair-mcp-configs-BG3t9PnE.mjs → repair-mcp-configs-6tRBtwd-.mjs} +2 -2
  30. package/dist/repair-skills-CaLjuijU.mjs +1 -0
  31. package/dist/{repair-skills-CYk7FdgE.mjs → repair-skills-DL_fR7iS.mjs} +2 -2
  32. package/dist/{server-lock-BpjJj3OD-DTrUUOuT.mjs → server-lock-BpjJj3OD-B9uBbH7Z.mjs} +2 -2
  33. package/dist/server-lock-CyhBidkz-Bp84kpW5.mjs +1 -0
  34. package/dist/{src-CiYPyC3m.mjs → src-DsuG24c2.mjs} +2 -2
  35. package/dist/{start-5jIqvlxN.mjs → start-46USgv8o.mjs} +2 -2
  36. package/dist/start-CR8iLsn1.mjs +1 -0
  37. package/dist/{write-project-skill-4i2U2-lw.mjs → write-project-skill-BNMnZE-x.mjs} +2 -2
  38. package/package.json +1 -1
  39. package/dist/constants-D4xCrM-v.mjs +0 -2
  40. package/dist/init-B6JBvA4u.mjs +0 -1
  41. package/dist/loader-BZt5z9V-.mjs +0 -1
  42. package/dist/preview-BOOifZtc.mjs +0 -1
  43. package/dist/public/assets/DocumentContext-CgD8AejB.js +0 -61
  44. package/dist/repair-skills-cLf2y4ac.mjs +0 -1
  45. package/dist/server-lock-CyhBidkz-wSdcUU--.mjs +0 -1
  46. package/dist/start-9HUhgIY9.mjs +0 -1
package/dist/cli.mjs CHANGED
@@ -1,42 +1,42 @@
1
1
  #!/usr/bin/env node
2
- import{o as e}from"./chunk-FK9Q3tQk.mjs";import{t}from"./esm-CEs3LWY3.mjs";import{Ai as n,Fi as r,Gi as i,Hi as a,Ii as o,Ji as s,Li as c,Lr as l,Ri as u,Ti as d,_i as f,bn as p,c as m,ca as h,f as g,gr as _,ji as v,ki as ee,l as te,la as y,n as b,s as x,zr as ne}from"./server-lock-BpjJj3OD-DTrUUOuT.mjs";import{a as S,n as re,r as ie,t as ae}from"./gh-detect-lzLKmmPa.mjs";import{n as oe,r as se,t as C}from"./dist-bundle-BK4P1EQn.mjs";import{A as ce,C as le,D as ue,E as de,O as fe,S as pe,T as me,b as he,k as ge,o as _e,p as ve,w as ye,x as be}from"./init--MUfLCWd.mjs";import{r as xe}from"./git-handle-uz8TUFSi-DaMTjKLA.mjs";import{A as Se,Ci as Ce,Ei as we,K as Te,Nt as Ee,Ti as De,X as Oe,_i as ke,ar as Ae,b as je,dr as Me,gi as Ne,h as Pe,hi as Fe,hn as Ie,in as Le,it as Re,j as ze,kn as Be,kr as Ve,mi as He,mr as w,ot as Ue,pi as We,pt as Ge,q as Ke,qn as qe,ut as Je,vi as Ye,vn as Xe,wi as Ze,x as Qe,xi as $e}from"./dist-C5vyt2gE.mjs";import{t as et}from"./yazl-DjRp4wSy.mjs";import{n as tt,t as nt}from"./constants-D4xCrM-v.mjs";import{i as rt}from"./src-CiYPyC3m.mjs";import{n as it,t as at}from"./loader-D3q2Fb9q.mjs";import{c as ot,f as st,h as ct,m as lt,p as ut,u as dt}from"./start-5jIqvlxN.mjs";import{c as ft,i as pt,n as T,o as E,r as D,s as mt,t as O}from"./colors-BtKMHmBX.mjs";import{n as ht}from"./repair-skills-CYk7FdgE.mjs";import{execSync as gt,spawn as _t,spawnSync as k}from"node:child_process";import vt,{basename as yt,dirname as bt,isAbsolute as xt,join as A,relative as St,resolve as j,sep as Ct}from"node:path";import{accessSync as wt,closeSync as Tt,constants as Et,cpSync as Dt,createWriteStream as Ot,existsSync as M,lstatSync as kt,mkdirSync as N,mkdtempSync as At,openSync as jt,readFileSync as P,readdirSync as Mt,realpathSync as Nt,rmSync as Pt,statSync as Ft,unlinkSync as It,writeFileSync as F}from"node:fs";import Lt from"node:process";import{arch as Rt,freemem as zt,homedir as Bt,hostname as Vt,platform as Ht,release as Ut,tmpdir as Wt,totalmem as Gt,type as Kt,uptime as qt}from"node:os";import{fileURLToPath as Jt}from"node:url";import{AsyncLocalStorage as Yt,AsyncResource as Xt}from"node:async_hooks";import{stripVTControlCharacters as Zt,styleText as I}from"node:util";import*as Qt from"node:readline";import{createHash as $t,randomUUID as en}from"node:crypto";import{realpath as tn}from"node:fs/promises";import{setTimeout as nn}from"node:timers/promises";import{createInterface as rn}from"node:readline/promises";async function an(e,t,n){let r=on(await sn(e)).host??``;if(!r)return 1;let i=await n.get(r);if(i==null)return 1;let a=e=>e.replace(/[\r\n]/g,``);return t.write(`username=${a(i.login)}\npassword=${a(i.token)}\n`),0}function on(e){let t={};for(let n of e.split(`
3
- `)){let e=n.trim();if(e===``)continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r)]=e.slice(r+1))}return t}function sn(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>r.push(e)),e.on(`end`,()=>t(Buffer.concat(r).toString(`utf-8`))),e.on(`error`,n)})}function cn(e){let n=new t(`git-credential`);return n.description(`Git credential helper (git credential-helper protocol)`),n.command(`get`).description(`Lookup credentials from TokenStore (called by git)`).action(async()=>{let t=await e(),n=await an(process.stdin,process.stdout,t);process.exit(n)}),n}function ln(e){let t=e.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(t.baseUrl)?`https://github.com`:t.baseUrl.replace(`/api/v3`,``)}async function un(e,t,n){let r={baseUrl:ln(e),headers:{accept:`application/json`},...n},i=await e(t,r);if(`error`in i.data){let n=new oe(`${i.data.error_description} (${i.data.error}, ${i.data.error_uri})`,400,{request:e.endpoint.merge(t,r)});throw n.response=i,n}return i}async function dn(e){let t=e.request||C,n={client_id:e.clientId};return`scopes`in e&&Array.isArray(e.scopes)&&(n.scope=e.scopes.join(` `)),un(t,`POST /login/device/code`,n)}async function fn(e){let t=await un(e.request||C,`POST /login/oauth/access_token`,{client_id:e.clientId,device_code:e.code,grant_type:`urn:ietf:params:oauth:grant-type:device_code`}),n={clientType:e.clientType,clientId:e.clientId,token:t.data.access_token,scopes:t.data.scope.split(/\s+/).filter(Boolean)};if(`clientSecret`in e&&(n.clientSecret=e.clientSecret),e.clientType===`github-app`){if(`refresh_token`in t.data){let e=new Date(t.headers.date).getTime();n.refreshToken=t.data.refresh_token,n.expiresAt=pn(e,t.data.expires_in),n.refreshTokenExpiresAt=pn(e,t.data.refresh_token_expires_in)}delete n.scopes}return{...t,authentication:n}}function pn(e,t){return new Date(e+t*1e3).toISOString()}async function mn(e,t){let n=hn(e,t.auth);if(n)return n;let{data:r}=await dn({clientType:e.clientType,clientId:e.clientId,request:t.request||e.request,scopes:t.auth.scopes||e.scopes});await e.onVerification(r);let i=await _n(t.request||e.request,e.clientId,e.clientType,r);return e.authentication=i,i}function hn(e,t){if(t.refresh===!0||!e.authentication)return!1;if(e.clientType===`github-app`)return e.authentication;let n=e.authentication;return(`scopes`in t&&t.scopes||e.scopes).join(` `)===n.scopes.join(` `)?n:!1}async function gn(e){await new Promise(t=>setTimeout(t,e*1e3))}async function _n(e,t,n,r){try{let i={clientId:t,request:e,code:r.device_code},{authentication:a}=n===`oauth-app`?await fn({...i,clientType:`oauth-app`}):await fn({...i,clientType:`github-app`});return{type:`token`,tokenType:`oauth`,...a}}catch(i){if(!i.response)throw i;let a=i.response.data.error;if(a===`authorization_pending`)return await gn(r.interval),_n(e,t,n,r);if(a===`slow_down`)return await gn(r.interval+7),_n(e,t,n,r);throw i}}async function vn(e,t){return mn(e,{auth:t})}async function yn(e,t,n,r){let i=t.endpoint.merge(n,r);if(/\/login\/(oauth\/access_token|device\/code)$/.test(i.url))return t(i);let{token:a}=await mn(e,{request:t,auth:{type:`oauth`}});return i.headers.authorization=`token ${a}`,t(i)}var bn=`0.0.0-development`;function xn(e){let t=e.request||C.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${bn} ${se()}`}}),{request:n=t,...r}=e,i=e.clientType===`github-app`?{...r,clientType:`github-app`,request:n}:{...r,clientType:`oauth-app`,request:n,scopes:e.scopes||[]};if(!e.clientId)throw Error(`[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)`);if(!e.onVerification)throw Error(`[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)`);return Object.assign(vn.bind(null,i),{hook:yn.bind(null,i)})}async function Sn(e){let{clientId:t,scopes:n=[`repo`,`read:user`,`user:email`],onVerification:r,host:i}=e,a=i&&i!==`github.com`?`https://${i}/api/v3`:`https://api.github.com`,o=xn({clientType:`oauth-app`,clientId:t,scopes:n,onVerification:async e=>{await r({verificationUri:e.verification_uri,userCode:e.user_code,expiresIn:e.expires_in,interval:e.interval})},request:a===`https://api.github.com`?void 0:(await import(`./dist-bundle-CjV1Pdeo.mjs`)).request.defaults({baseUrl:a})}),s;try{s=await o({type:`oauth`})}catch(e){if(e instanceof Error){let t=e.message.toLowerCase();throw t.includes(`access_denied`)?Error(`Device-flow authorization was denied.`):t.includes(`expired_token`)||t.includes(`timeout`)||t.includes(`timed out`)?Error(`Device-flow code expired before authorization — please try again.`):Error(`GitHub sign-in failed: ${e.message}`)}throw e}return{token:s.token,tokenType:s.tokenType,scopes:s.scopes??[]}}const Cn={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`};var wn;(function(e){})(wn||={});function Tn(e){return s(d,e)}function En(){return process.env.OPEN_KNOWLEDGE_GITHUB_CLIENT_ID??`Ov23liqlSd0V1MwR6rhI`}const Dn=new Set([`gitlab.com`,`bitbucket.org`,`codeberg.org`,`gitea.com`,`sr.ht`,`sourcehut.org`]);function L(e){let t=e.toLowerCase().replace(/:\d+$/,``);Dn.has(t)&&(process.stderr.write(`Error: ${e} is not a GitHub host. Only GitHub and GitHub Enterprise Server are supported.\n`),process.exit(1))}function On(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function kn(e,t,n=Sn){let r=En(),{host:i,json:a}=e;L(i),a||process.stderr.write(`Logging in to ${i}\n`);let o=await n({clientId:r,host:i===`github.com`?void 0:i,onVerification:e=>{e.userCode,e.verificationUri,a?On(!0,{type:`verification`,user_code:e.userCode,verification_uri:e.verificationUri,expires_in:e.expiresIn}):process.stderr.write(`Open: ${e.verificationUri}\nEnter code: ${e.userCode}\n`)}}),s=`unknown`,c,l;try{let e=i===`github.com`?`https://api.github.com`:`https://${i}/api/v3`,t=await fetch(`${e}/user`,{headers:{Authorization:`Bearer ${o.token}`,"User-Agent":`open-knowledge-cli`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();s=e.login??s,c=e.name??void 0,l=e.email??void 0}}catch{}await t.set(i,s,o.token,{gitProtocol:`https`,name:c,email:l}),a?On(!0,{type:`complete`,host:i,login:s}):process.stderr.write(`✓ Logged in as ${s} on ${i}\n`)}function An(e){return new t(`login`).description(`Authenticate with GitHub via Device Flow`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{await kn(t,await e())})}const jn=e=>e.name===`enter`||e.name===`return`;var Mn=class extends Error{name=`AbortPromptError`;message=`Prompt was aborted`;constructor(e){super(),this.cause=e?.cause}},Nn=class extends Error{name=`CancelPromptError`;message=`Prompt was canceled`},Pn=class extends Error{name=`ExitPromptError`},Fn=class extends Error{name=`HookError`},In=class extends Error{name=`ValidationError`};const Ln=new Yt;function Rn(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function zn(e,t){let n=Rn(e);return Ln.run(n,()=>{function e(e){n.handleChange=()=>{n.index=0,e()},n.handleChange()}return t(e)})}function R(){let e=Ln.getStore();if(!e)throw new Fn(`[Inquirer] Hook functions can only be called from within a prompt`);return e}function Bn(){return R().rl}function Vn(e){return Xt.bind((...t)=>{let n=R(),r=!1,i=n.handleChange;n.handleChange=()=>{r=!0};let a=e(...t);return r&&i(),n.handleChange=i,a})}function Hn(e){let t=R(),{index:n}=t,r=e({get(){return t.hooks[n]},set(e){t.hooks[n]=e},initialized:n in t.hooks});return t.index++,r}function Un(){R().handleChange()}const Wn={queue(e){let t=R(),{index:n}=t;t.hooksEffect.push(()=>{t.hooksCleanup[n]?.();let r=e(Bn());if(r!=null&&typeof r!=`function`)throw new In(`useEffect return value must be a cleanup function or nothing.`);t.hooksCleanup[n]=r})},run(){let e=R();Vn(()=>{e.hooksEffect.forEach(e=>{e()}),e.hooksEffect.length=0})()},clearAll(){let e=R();e.hooksCleanup.forEach(e=>{e?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function Gn(e){return typeof e==`function`}function z(e){return Hn(t=>{let n=Xt.bind(function(e){t.get()!==e&&(t.set(e),Un())});if(t.initialized)return[t.get(),n];let r=Gn(e)?e():e;return t.set(r),[r,n]})}function Kn(e,t){Hn(n=>{let r=n.get();(!Array.isArray(r)||t.some((e,t)=>!Object.is(e,r[t])))&&Wn.queue(e),n.set(t)})}const qn={prefix:{idle:I(`blue`,`?`),done:I(`green`,ce.tick)},spinner:{interval:80,frames:[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`].map(e=>I(`yellow`,e))},style:{answer:e=>I(`cyan`,e),message:e=>I(`bold`,e),error:e=>I(`red`,`> ${e}`),defaultAnswer:e=>I(`dim`,`(${e})`),help:e=>I(`dim`,e),highlight:e=>I(`cyan`,e),key:e=>I(`cyan`,I(`bold`,`<${e}>`))}};function Jn(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Yn(...e){let t={};for(let n of e)for(let[e,r]of Object.entries(n)){let n=t[e];t[e]=Jn(n)&&Jn(r)?Yn(n,r):r}return t}function Xn(...e){return Yn(qn,...e.filter(e=>e!=null))}function Zn({status:e=`idle`,theme:t}){let[n,r]=z(!1),[i,a]=z(0),{prefix:o,spinner:s}=Xn(t);return Kn(()=>{if(e===`loading`){let e,t=-1,n=setTimeout(()=>{r(!0),e=setInterval(()=>{t+=1,a(t%s.frames.length)},s.interval)},300);return()=>{clearTimeout(n),clearInterval(e)}}else r(!1)},[e]),n?s.frames[i]:typeof o==`string`?o:o[e===`loading`?`idle`:e]??o.idle}function Qn(e){return z({current:e})[0]}function $n(e){let t=Qn(e);t.current=e,Kn(e=>{let n=!1,r=Vn((r,i)=>{n||t.current(i,e)});return e.input.on(`keypress`,r),()=>{n=!0,e.input.removeListener(`keypress`,r)}},[])}var er=e(ge(),1);function tr(e,t){return e.split(`
2
+ import{o as e}from"./chunk-FK9Q3tQk.mjs";import{t}from"./esm-CEs3LWY3.mjs";import{Bi as n,Di as r,Li as i,Mi as a,Ni as o,Ri as s,Sn as c,Vr as l,Wi as u,Xi as d,c as f,da as p,f as m,ji as h,l as g,n as _,qi as v,s as y,ua as ee,vr as b,yi as x,zi as te,zr as ne}from"./server-lock-BpjJj3OD-B9uBbH7Z.mjs";import{a as S,n as re,r as ie,t as ae}from"./gh-detect-D3_evne3.mjs";import{n as oe,r as se,t as C}from"./dist-bundle-BK4P1EQn.mjs";import{A as ce,C as le,D as ue,E as de,O as fe,S as pe,T as me,b as he,k as ge,o as _e,p as ve,w as ye,x as be}from"./init-CANrNVDk.mjs";import{r as xe}from"./git-handle-uz8TUFSi-DaMTjKLA.mjs";import{A as Se,Ci as Ce,Ei as we,K as Te,Nt as Ee,Ti as De,X as Oe,_i as ke,ar as Ae,b as je,dr as Me,gi as Ne,h as Pe,hi as Fe,hn as Ie,in as Le,it as Re,j as ze,kn as Be,kr as Ve,mi as He,mr as w,ot as Ue,pi as We,pt as Ge,q as Ke,qn as qe,ut as Je,vi as Ye,vn as Xe,wi as Ze,x as Qe,xi as $e}from"./dist-BBbP7DxV.mjs";import{t as et}from"./yazl-DjRp4wSy.mjs";import{n as tt,t as nt}from"./constants-BsDF_COe.mjs";import{i as rt}from"./src-DsuG24c2.mjs";import{n as it,t as at}from"./loader-DyckoSTu.mjs";import{c as ot,f as st,h as ct,m as lt,p as ut,u as dt}from"./start-46USgv8o.mjs";import{c as ft,i as pt,n as T,o as E,r as D,s as mt,t as O}from"./colors-BtKMHmBX.mjs";import{n as ht}from"./repair-skills-DL_fR7iS.mjs";import{execSync as gt,spawn as _t,spawnSync as k}from"node:child_process";import vt,{basename as A,dirname as yt,isAbsolute as bt,join as j,relative as xt,resolve as M,sep as St}from"node:path";import{accessSync as Ct,closeSync as wt,constants as Tt,cpSync as Et,createWriteStream as Dt,existsSync as N,lstatSync as Ot,mkdirSync as P,mkdtempSync as kt,openSync as At,readFileSync as F,readdirSync as jt,realpathSync as Mt,rmSync as Nt,statSync as Pt,unlinkSync as Ft,writeFileSync as I}from"node:fs";import It from"node:process";import{arch as Lt,freemem as Rt,homedir as zt,hostname as Bt,platform as Vt,release as Ht,tmpdir as Ut,totalmem as Wt,type as Gt,uptime as Kt}from"node:os";import{fileURLToPath as qt}from"node:url";import{AsyncLocalStorage as Jt,AsyncResource as Yt}from"node:async_hooks";import{stripVTControlCharacters as Xt,styleText as L}from"node:util";import*as Zt from"node:readline";import{createHash as Qt,randomUUID as $t}from"node:crypto";import{realpath as en}from"node:fs/promises";import{setTimeout as tn}from"node:timers/promises";import{createInterface as nn}from"node:readline/promises";async function rn(e,t,n){let r=an(await on(e)).host??``;if(!r)return 1;let i=await n.get(r);if(i==null)return 1;let a=e=>e.replace(/[\r\n]/g,``);return t.write(`username=${a(i.login)}\npassword=${a(i.token)}\n`),0}function an(e){let t={};for(let n of e.split(`
3
+ `)){let e=n.trim();if(e===``)continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r)]=e.slice(r+1))}return t}function on(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>r.push(e)),e.on(`end`,()=>t(Buffer.concat(r).toString(`utf-8`))),e.on(`error`,n)})}function sn(e){let n=new t(`git-credential`);return n.description(`Git credential helper (git credential-helper protocol)`),n.command(`get`).description(`Lookup credentials from TokenStore (called by git)`).action(async()=>{let t=await e(),n=await rn(process.stdin,process.stdout,t);process.exit(n)}),n}function cn(e){let t=e.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(t.baseUrl)?`https://github.com`:t.baseUrl.replace(`/api/v3`,``)}async function ln(e,t,n){let r={baseUrl:cn(e),headers:{accept:`application/json`},...n},i=await e(t,r);if(`error`in i.data){let n=new oe(`${i.data.error_description} (${i.data.error}, ${i.data.error_uri})`,400,{request:e.endpoint.merge(t,r)});throw n.response=i,n}return i}async function un(e){let t=e.request||C,n={client_id:e.clientId};return`scopes`in e&&Array.isArray(e.scopes)&&(n.scope=e.scopes.join(` `)),ln(t,`POST /login/device/code`,n)}async function dn(e){let t=await ln(e.request||C,`POST /login/oauth/access_token`,{client_id:e.clientId,device_code:e.code,grant_type:`urn:ietf:params:oauth:grant-type:device_code`}),n={clientType:e.clientType,clientId:e.clientId,token:t.data.access_token,scopes:t.data.scope.split(/\s+/).filter(Boolean)};if(`clientSecret`in e&&(n.clientSecret=e.clientSecret),e.clientType===`github-app`){if(`refresh_token`in t.data){let e=new Date(t.headers.date).getTime();n.refreshToken=t.data.refresh_token,n.expiresAt=fn(e,t.data.expires_in),n.refreshTokenExpiresAt=fn(e,t.data.refresh_token_expires_in)}delete n.scopes}return{...t,authentication:n}}function fn(e,t){return new Date(e+t*1e3).toISOString()}async function pn(e,t){let n=mn(e,t.auth);if(n)return n;let{data:r}=await un({clientType:e.clientType,clientId:e.clientId,request:t.request||e.request,scopes:t.auth.scopes||e.scopes});await e.onVerification(r);let i=await gn(t.request||e.request,e.clientId,e.clientType,r);return e.authentication=i,i}function mn(e,t){if(t.refresh===!0||!e.authentication)return!1;if(e.clientType===`github-app`)return e.authentication;let n=e.authentication;return(`scopes`in t&&t.scopes||e.scopes).join(` `)===n.scopes.join(` `)?n:!1}async function hn(e){await new Promise(t=>setTimeout(t,e*1e3))}async function gn(e,t,n,r){try{let i={clientId:t,request:e,code:r.device_code},{authentication:a}=n===`oauth-app`?await dn({...i,clientType:`oauth-app`}):await dn({...i,clientType:`github-app`});return{type:`token`,tokenType:`oauth`,...a}}catch(i){if(!i.response)throw i;let a=i.response.data.error;if(a===`authorization_pending`)return await hn(r.interval),gn(e,t,n,r);if(a===`slow_down`)return await hn(r.interval+7),gn(e,t,n,r);throw i}}async function _n(e,t){return pn(e,{auth:t})}async function vn(e,t,n,r){let i=t.endpoint.merge(n,r);if(/\/login\/(oauth\/access_token|device\/code)$/.test(i.url))return t(i);let{token:a}=await pn(e,{request:t,auth:{type:`oauth`}});return i.headers.authorization=`token ${a}`,t(i)}var yn=`0.0.0-development`;function bn(e){let t=e.request||C.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${yn} ${se()}`}}),{request:n=t,...r}=e,i=e.clientType===`github-app`?{...r,clientType:`github-app`,request:n}:{...r,clientType:`oauth-app`,request:n,scopes:e.scopes||[]};if(!e.clientId)throw Error(`[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)`);if(!e.onVerification)throw Error(`[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)`);return Object.assign(_n.bind(null,i),{hook:vn.bind(null,i)})}async function xn(e){let{clientId:t,scopes:n=[`repo`,`read:user`,`user:email`],onVerification:r,host:i}=e,a=i&&i!==`github.com`?`https://${i}/api/v3`:`https://api.github.com`,o=bn({clientType:`oauth-app`,clientId:t,scopes:n,onVerification:async e=>{await r({verificationUri:e.verification_uri,userCode:e.user_code,expiresIn:e.expires_in,interval:e.interval})},request:a===`https://api.github.com`?void 0:(await import(`./dist-bundle-CjV1Pdeo.mjs`)).request.defaults({baseUrl:a})}),s;try{s=await o({type:`oauth`})}catch(e){if(e instanceof Error){let t=e.message.toLowerCase();throw t.includes(`access_denied`)?Error(`Device-flow authorization was denied.`):t.includes(`expired_token`)||t.includes(`timeout`)||t.includes(`timed out`)?Error(`Device-flow code expired before authorization — please try again.`):Error(`GitHub sign-in failed: ${e.message}`)}throw e}return{token:s.token,tokenType:s.tokenType,scopes:s.scopes??[]}}const Sn={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`};var Cn;(function(e){})(Cn||={});function wn(e){return d(r,e)}function Tn(){return process.env.OPEN_KNOWLEDGE_GITHUB_CLIENT_ID??`Ov23liqlSd0V1MwR6rhI`}const En=new Set([`gitlab.com`,`bitbucket.org`,`codeberg.org`,`gitea.com`,`sr.ht`,`sourcehut.org`]);function R(e){let t=e.toLowerCase().replace(/:\d+$/,``);En.has(t)&&(process.stderr.write(`Error: ${e} is not a GitHub host. Only GitHub and GitHub Enterprise Server are supported.\n`),process.exit(1))}function Dn(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function On(e,t,n=xn){let r=Tn(),{host:i,json:a}=e;R(i),a||process.stderr.write(`Logging in to ${i}\n`);let o=await n({clientId:r,host:i===`github.com`?void 0:i,onVerification:e=>{e.userCode,e.verificationUri,a?Dn(!0,{type:`verification`,user_code:e.userCode,verification_uri:e.verificationUri,expires_in:e.expiresIn}):process.stderr.write(`Open: ${e.verificationUri}\nEnter code: ${e.userCode}\n`)}}),s=`unknown`,c,l;try{let e=i===`github.com`?`https://api.github.com`:`https://${i}/api/v3`,t=await fetch(`${e}/user`,{headers:{Authorization:`Bearer ${o.token}`,"User-Agent":`open-knowledge-cli`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();s=e.login??s,c=e.name??void 0,l=e.email??void 0}}catch{}await t.set(i,s,o.token,{gitProtocol:`https`,name:c,email:l}),a?Dn(!0,{type:`complete`,host:i,login:s}):process.stderr.write(`✓ Logged in as ${s} on ${i}\n`)}function kn(e){return new t(`login`).description(`Authenticate with GitHub via Device Flow`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{await On(t,await e())})}const An=e=>e.name===`enter`||e.name===`return`;var jn=class extends Error{name=`AbortPromptError`;message=`Prompt was aborted`;constructor(e){super(),this.cause=e?.cause}},Mn=class extends Error{name=`CancelPromptError`;message=`Prompt was canceled`},Nn=class extends Error{name=`ExitPromptError`},Pn=class extends Error{name=`HookError`},Fn=class extends Error{name=`ValidationError`};const In=new Jt;function Ln(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function Rn(e,t){let n=Ln(e);return In.run(n,()=>{function e(e){n.handleChange=()=>{n.index=0,e()},n.handleChange()}return t(e)})}function z(){let e=In.getStore();if(!e)throw new Pn(`[Inquirer] Hook functions can only be called from within a prompt`);return e}function zn(){return z().rl}function Bn(e){return Yt.bind((...t)=>{let n=z(),r=!1,i=n.handleChange;n.handleChange=()=>{r=!0};let a=e(...t);return r&&i(),n.handleChange=i,a})}function Vn(e){let t=z(),{index:n}=t,r=e({get(){return t.hooks[n]},set(e){t.hooks[n]=e},initialized:n in t.hooks});return t.index++,r}function Hn(){z().handleChange()}const Un={queue(e){let t=z(),{index:n}=t;t.hooksEffect.push(()=>{t.hooksCleanup[n]?.();let r=e(zn());if(r!=null&&typeof r!=`function`)throw new Fn(`useEffect return value must be a cleanup function or nothing.`);t.hooksCleanup[n]=r})},run(){let e=z();Bn(()=>{e.hooksEffect.forEach(e=>{e()}),e.hooksEffect.length=0})()},clearAll(){let e=z();e.hooksCleanup.forEach(e=>{e?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function Wn(e){return typeof e==`function`}function B(e){return Vn(t=>{let n=Yt.bind(function(e){t.get()!==e&&(t.set(e),Hn())});if(t.initialized)return[t.get(),n];let r=Wn(e)?e():e;return t.set(r),[r,n]})}function Gn(e,t){Vn(n=>{let r=n.get();(!Array.isArray(r)||t.some((e,t)=>!Object.is(e,r[t])))&&Un.queue(e),n.set(t)})}const Kn={prefix:{idle:L(`blue`,`?`),done:L(`green`,ce.tick)},spinner:{interval:80,frames:[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`].map(e=>L(`yellow`,e))},style:{answer:e=>L(`cyan`,e),message:e=>L(`bold`,e),error:e=>L(`red`,`> ${e}`),defaultAnswer:e=>L(`dim`,`(${e})`),help:e=>L(`dim`,e),highlight:e=>L(`cyan`,e),key:e=>L(`cyan`,L(`bold`,`<${e}>`))}};function qn(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Jn(...e){let t={};for(let n of e)for(let[e,r]of Object.entries(n)){let n=t[e];t[e]=qn(n)&&qn(r)?Jn(n,r):r}return t}function Yn(...e){return Jn(Kn,...e.filter(e=>e!=null))}function Xn({status:e=`idle`,theme:t}){let[n,r]=B(!1),[i,a]=B(0),{prefix:o,spinner:s}=Yn(t);return Gn(()=>{if(e===`loading`){let e,t=-1,n=setTimeout(()=>{r(!0),e=setInterval(()=>{t+=1,a(t%s.frames.length)},s.interval)},300);return()=>{clearTimeout(n),clearInterval(e)}}else r(!1)},[e]),n?s.frames[i]:typeof o==`string`?o:o[e===`loading`?`idle`:e]??o.idle}function Zn(e){return B({current:e})[0]}function Qn(e){let t=Zn(e);t.current=e,Gn(e=>{let n=!1,r=Bn((r,i)=>{n||t.current(i,e)});return e.input.on(`keypress`,r),()=>{n=!0,e.input.removeListener(`keypress`,r)}},[])}var $n=e(ge(),1);function er(e,t){return e.split(`
4
4
  `).flatMap(e=>fe(e,t,{trim:!1,hard:!0}).split(`
5
5
  `).map(e=>e.trimEnd())).join(`
6
- `)}function nr(){return(0,er.default)({defaultWidth:80,output:Bn().output})}const rr=e=>e.split(`
7
- `).length,ir=e=>e.split(`
8
- `).pop()??``;var ar=class{height=0;extraLinesUnderPrompt=0;cursorPos;rl;constructor(e){this.rl=e,this.cursorPos=e.getCursorPos()}write(e){this.rl.output.unmute(),this.rl.output.write(e),this.rl.output.mute()}render(e,t=``){let n=Zt(ir(e)),r=n;this.rl.line.length>0&&(r=r.slice(0,-this.rl.line.length)),this.rl.setPrompt(r),this.cursorPos=this.rl.getCursorPos();let i=nr();e=tr(e,i),t=tr(t,i),n.length%i===0&&(e+=`
6
+ `)}function tr(){return(0,$n.default)({defaultWidth:80,output:zn().output})}const nr=e=>e.split(`
7
+ `).length,rr=e=>e.split(`
8
+ `).pop()??``;var ir=class{height=0;extraLinesUnderPrompt=0;cursorPos;rl;constructor(e){this.rl=e,this.cursorPos=e.getCursorPos()}write(e){this.rl.output.unmute(),this.rl.output.write(e),this.rl.output.mute()}render(e,t=``){let n=Xt(rr(e)),r=n;this.rl.line.length>0&&(r=r.slice(0,-this.rl.line.length)),this.rl.setPrompt(r),this.cursorPos=this.rl.getCursorPos();let i=tr();e=er(e,i),t=er(t,i),n.length%i===0&&(e+=`
9
9
  `);let a=e+(t?`
10
- `+t:``),o=Math.floor(n.length/i)-this.cursorPos.rows+(t?rr(t):0);o>0&&(a+=ye(o)),a+=le(this.cursorPos.cols),this.write(he(this.extraLinesUnderPrompt)+me(this.height)+a),this.extraLinesUnderPrompt=o,this.height=rr(a)}checkCursorPos(){let e=this.rl.getCursorPos();e.cols!==this.cursorPos.cols&&(this.write(le(e.cols)),this.cursorPos=e)}done({clearContent:e}){this.rl.setPrompt(``);let t=he(this.extraLinesUnderPrompt);t+=e?me(this.height):`
11
- `,t+=pe,this.write(t),this.rl.close()}},or=class extends Promise{static withResolver(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}},sr=e(ue(),1);const cr=globalThis.setImmediate;function lr(){let e=Error.prepareStackTrace,t=[];try{Error.prepareStackTrace=(e,n)=>{let r=n.slice(1);return t=r,r},Error().stack}catch{return t}return Error.prepareStackTrace=e,t}function ur(e){let t=lr();return(n,r={})=>{let{input:i=process.stdin,signal:a}=r,o=new Set,s=new sr.default;s.pipe(r.output??process.stdout),s.mute();let c=Qt.createInterface({terminal:!0,input:i,output:s}),l=new ar(c),{promise:u,resolve:d,reject:f}=or.withResolver(),p=()=>f(new Nn);if(a){let e=()=>f(new Mn({cause:a.reason}));if(a.aborted)return e(),Object.assign(u,{cancel:p});a.addEventListener(`abort`,e),o.add(()=>a.removeEventListener(`abort`,e))}o.add(de((e,t)=>{f(new Pn(`User force closed the prompt with ${e} ${t}`))}));let m=()=>f(new Pn(`User force closed the prompt with SIGINT`));return c.on(`SIGINT`,m),o.add(()=>c.removeListener(`SIGINT`,m)),zn(c,a=>{let m=Xt.bind(()=>Wn.clearAll());c.on(`close`,m),o.add(()=>c.removeListener(`close`,m));let h=()=>{let r=()=>l.checkCursorPos();c.input.on(`keypress`,r),o.add(()=>c.input.removeListener(`keypress`,r));let i=null;a(()=>{let r=!1;try{let a=e(n,e=>{r?d(e):i={value:e}});if(a===void 0){let e=t[1]?.getFileName();throw e&&!e.startsWith(`file://`)&&(e=vt.resolve(e)),Error(`Prompt functions must return a string.\n at ${e}`)}let[o,s]=typeof a==`string`?[a]:a;l.render(o,s),Wn.run()}catch(e){f(e)}if(r=!0,i!==null){let{value:e}=i;i=null,d(e)}})};return`readableFlowing`in i?cr(h):h(),Object.assign(u.then(e=>(Wn.clearAll(),e),e=>{throw Wn.clearAll(),e}).finally(()=>{o.forEach(e=>e()),l.done({clearContent:!!r.clearPromptOnDone}),s.end()}).then(()=>u),{cancel:p})})}}const dr={style:{maskedText:`[input is masked]`}};var fr=ur((e,t)=>{let{validate:n=()=>!0}=e,r=Xn(dr,e.theme),[i,a]=z(`idle`),[o,s]=z(),[c,l]=z(``),u=Zn({status:i,theme:r});$n(async(e,r)=>{if(i===`idle`)if(jn(e)){let e=c;a(`loading`);let i=await n(e);i===!0?(l(e),a(`done`),t(e)):(r.write(c),s(i||`You must provide a valid value`),a(`idle`))}else l(r.line),s(void 0)});let d=r.style.message(e.message,i),f=``,p;e.mask?f=(typeof e.mask==`string`?e.mask:`*`).repeat(c.length):i!==`done`&&(p=`${r.style.help(r.style.maskedText)}${be}`),i===`done`&&(f=r.style.answer(f));let m=``;return o&&(m=r.style.error(o)),[[u,d,e.mask?f:p].join(` `),m]});function pr(e,t,n,r){if(typeof n!=`function`)throw Error(`method for before hook must be a function`);return r||={},Array.isArray(t)?t.reverse().reduce((t,n)=>pr.bind(null,e,n,t,r),n)():Promise.resolve().then(()=>e.registry[t]?e.registry[t].reduce((e,t)=>t.hook.bind(null,e,r),n)():n(r))}function mr(e,t,n,r){let i=r;e.registry[n]||(e.registry[n]=[]),t===`before`&&(r=(e,t)=>Promise.resolve().then(i.bind(null,t)).then(e.bind(null,t))),t===`after`&&(r=(e,t)=>{let n;return Promise.resolve().then(e.bind(null,t)).then(e=>(n=e,i(n,t))).then(()=>n)}),t===`error`&&(r=(e,t)=>Promise.resolve().then(e.bind(null,t)).catch(e=>i(e,t))),e.registry[n].push({hook:r,orig:i})}function hr(e,t,n){if(!e.registry[t])return;let r=e.registry[t].map(e=>e.orig).indexOf(n);r!==-1&&e.registry[t].splice(r,1)}const gr=Function.bind,_r=gr.bind(gr);function vr(e,t,n){let r=_r(hr,null).apply(null,n?[t,n]:[t]);e.api={remove:r},e.remove=r,[`before`,`error`,`after`,`wrap`].forEach(r=>{let i=n?[t,r,n]:[t,r];e[r]=e.api[r]=_r(mr,null).apply(null,i)})}function yr(){let e=Symbol(`Singular`),t={registry:{}},n=pr.bind(null,t,e);return vr(n,t,e),n}function br(){let e={registry:{}},t=pr.bind(null,e);return vr(t,e),t}var xr={Singular:yr,Collection:br},Sr=`0.0.0-development`;function Cr(e){return`Request failed due to following response errors:
10
+ `+t:``),o=Math.floor(n.length/i)-this.cursorPos.rows+(t?nr(t):0);o>0&&(a+=ye(o)),a+=le(this.cursorPos.cols),this.write(he(this.extraLinesUnderPrompt)+me(this.height)+a),this.extraLinesUnderPrompt=o,this.height=nr(a)}checkCursorPos(){let e=this.rl.getCursorPos();e.cols!==this.cursorPos.cols&&(this.write(le(e.cols)),this.cursorPos=e)}done({clearContent:e}){this.rl.setPrompt(``);let t=he(this.extraLinesUnderPrompt);t+=e?me(this.height):`
11
+ `,t+=pe,this.write(t),this.rl.close()}},ar=class extends Promise{static withResolver(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}},or=e(ue(),1);const sr=globalThis.setImmediate;function cr(){let e=Error.prepareStackTrace,t=[];try{Error.prepareStackTrace=(e,n)=>{let r=n.slice(1);return t=r,r},Error().stack}catch{return t}return Error.prepareStackTrace=e,t}function lr(e){let t=cr();return(n,r={})=>{let{input:i=process.stdin,signal:a}=r,o=new Set,s=new or.default;s.pipe(r.output??process.stdout),s.mute();let c=Zt.createInterface({terminal:!0,input:i,output:s}),l=new ir(c),{promise:u,resolve:d,reject:f}=ar.withResolver(),p=()=>f(new Mn);if(a){let e=()=>f(new jn({cause:a.reason}));if(a.aborted)return e(),Object.assign(u,{cancel:p});a.addEventListener(`abort`,e),o.add(()=>a.removeEventListener(`abort`,e))}o.add(de((e,t)=>{f(new Nn(`User force closed the prompt with ${e} ${t}`))}));let m=()=>f(new Nn(`User force closed the prompt with SIGINT`));return c.on(`SIGINT`,m),o.add(()=>c.removeListener(`SIGINT`,m)),Rn(c,a=>{let m=Yt.bind(()=>Un.clearAll());c.on(`close`,m),o.add(()=>c.removeListener(`close`,m));let h=()=>{let r=()=>l.checkCursorPos();c.input.on(`keypress`,r),o.add(()=>c.input.removeListener(`keypress`,r));let i=null;a(()=>{let r=!1;try{let a=e(n,e=>{r?d(e):i={value:e}});if(a===void 0){let e=t[1]?.getFileName();throw e&&!e.startsWith(`file://`)&&(e=vt.resolve(e)),Error(`Prompt functions must return a string.\n at ${e}`)}let[o,s]=typeof a==`string`?[a]:a;l.render(o,s),Un.run()}catch(e){f(e)}if(r=!0,i!==null){let{value:e}=i;i=null,d(e)}})};return`readableFlowing`in i?sr(h):h(),Object.assign(u.then(e=>(Un.clearAll(),e),e=>{throw Un.clearAll(),e}).finally(()=>{o.forEach(e=>e()),l.done({clearContent:!!r.clearPromptOnDone}),s.end()}).then(()=>u),{cancel:p})})}}const ur={style:{maskedText:`[input is masked]`}};var dr=lr((e,t)=>{let{validate:n=()=>!0}=e,r=Yn(ur,e.theme),[i,a]=B(`idle`),[o,s]=B(),[c,l]=B(``),u=Xn({status:i,theme:r});Qn(async(e,r)=>{if(i===`idle`)if(An(e)){let e=c;a(`loading`);let i=await n(e);i===!0?(l(e),a(`done`),t(e)):(r.write(c),s(i||`You must provide a valid value`),a(`idle`))}else l(r.line),s(void 0)});let d=r.style.message(e.message,i),f=``,p;e.mask?f=(typeof e.mask==`string`?e.mask:`*`).repeat(c.length):i!==`done`&&(p=`${r.style.help(r.style.maskedText)}${be}`),i===`done`&&(f=r.style.answer(f));let m=``;return o&&(m=r.style.error(o)),[[u,d,e.mask?f:p].join(` `),m]});function fr(e,t,n,r){if(typeof n!=`function`)throw Error(`method for before hook must be a function`);return r||={},Array.isArray(t)?t.reverse().reduce((t,n)=>fr.bind(null,e,n,t,r),n)():Promise.resolve().then(()=>e.registry[t]?e.registry[t].reduce((e,t)=>t.hook.bind(null,e,r),n)():n(r))}function pr(e,t,n,r){let i=r;e.registry[n]||(e.registry[n]=[]),t===`before`&&(r=(e,t)=>Promise.resolve().then(i.bind(null,t)).then(e.bind(null,t))),t===`after`&&(r=(e,t)=>{let n;return Promise.resolve().then(e.bind(null,t)).then(e=>(n=e,i(n,t))).then(()=>n)}),t===`error`&&(r=(e,t)=>Promise.resolve().then(e.bind(null,t)).catch(e=>i(e,t))),e.registry[n].push({hook:r,orig:i})}function mr(e,t,n){if(!e.registry[t])return;let r=e.registry[t].map(e=>e.orig).indexOf(n);r!==-1&&e.registry[t].splice(r,1)}const hr=Function.bind,gr=hr.bind(hr);function _r(e,t,n){let r=gr(mr,null).apply(null,n?[t,n]:[t]);e.api={remove:r},e.remove=r,[`before`,`error`,`after`,`wrap`].forEach(r=>{let i=n?[t,r,n]:[t,r];e[r]=e.api[r]=gr(pr,null).apply(null,i)})}function vr(){let e=Symbol(`Singular`),t={registry:{}},n=fr.bind(null,t,e);return _r(n,t,e),n}function yr(){let e={registry:{}},t=fr.bind(null,e);return _r(t,e),t}var br={Singular:vr,Collection:yr},xr=`0.0.0-development`;function Sr(e){return`Request failed due to following response errors:
12
12
  `+e.errors.map(e=>` - ${e.message}`).join(`
13
- `)}var wr=class extends Error{constructor(e,t,n){super(Cr(n)),this.request=e,this.headers=t,this.response=n,this.errors=n.errors,this.data=n.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name=`GraphqlResponseError`;errors;data},Tr=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],Er=[`query`,`method`,`url`],Dr=/\/api\/v3\/?$/;function Or(e,t,n){if(n){if(typeof t==`string`&&`query`in n)return Promise.reject(Error(`[@octokit/graphql] "query" cannot be used as variable name`));for(let e in n)if(Er.includes(e))return Promise.reject(Error(`[@octokit/graphql] "${e}" cannot be used as variable name`))}let r=typeof t==`string`?Object.assign({query:t},n):t,i=Object.keys(r).reduce((e,t)=>Tr.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Dr.test(a)&&(i.url=a.replace(Dr,`/api/graphql`)),e(i).then(e=>{if(e.data.errors){let t={};for(let n of Object.keys(e.headers))t[n]=e.headers[n];throw new wr(i,t,e.data)}return e.data.data})}function kr(e,t){let n=e.defaults(t);return Object.assign((e,t)=>Or(n,e,t),{defaults:kr.bind(null,n),endpoint:n.endpoint})}kr(C,{headers:{"user-agent":`octokit-graphql.js/${Sr} ${se()}`},method:`POST`,url:`/graphql`});function Ar(e){return kr(e,{method:`POST`,url:`/graphql`})}var jr=`(?:[a-zA-Z0-9_-]+)`,Mr=`\\.`,Nr=RegExp(`^${jr}${Mr}${jr}${Mr}${jr}$`),Pr=Nr.test.bind(Nr);async function Fr(e){let t=Pr(e),n=e.startsWith(`v1.`)||e.startsWith(`ghs_`),r=e.startsWith(`ghu_`);return{type:`token`,token:e,tokenType:t?`app`:n?`installation`:r?`user-to-server`:`oauth`}}function Ir(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Lr(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Ir(e),t(i)}var Rr=function(e){if(!e)throw Error(`[@octokit/auth-token] No token passed to createTokenAuth`);if(typeof e!=`string`)throw Error(`[@octokit/auth-token] Token passed to createTokenAuth is not a string`);return e=e.replace(/^(token|bearer) +/i,``),Object.assign(Fr.bind(null,e),{hook:Lr.bind(null,e)})};const zr=`7.0.6`,Br=()=>{},Vr=console.warn.bind(console),Hr=console.error.bind(console);function Ur(e={}){return typeof e.debug!=`function`&&(e.debug=Br),typeof e.info!=`function`&&(e.info=Br),typeof e.warn!=`function`&&(e.warn=Vr),typeof e.error!=`function`&&(e.error=Hr),e}const Wr=`octokit-core.js/${zr} ${se()}`;var Gr=class{static VERSION=zr;static defaults(e){return class extends this{constructor(...t){let n=t[0]||{};if(typeof e==`function`){super(e(n));return}super(Object.assign({},e,n,n.userAgent&&e.userAgent?{userAgent:`${n.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(e=>!t.includes(e)))}}constructor(e={}){let t=new xr.Collection,n={baseUrl:C.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,`request`)}),mediaType:{previews:[],format:``}};if(n.headers[`user-agent`]=e.userAgent?`${e.userAgent} ${Wr}`:Wr,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=C.defaults(n),this.graphql=Ar(this.request).defaults(n),this.log=Ur(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...r}=e,i=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},e.auth));t.wrap(`request`,i.hook),this.auth=i}else if(!e.auth)this.auth=async()=>({type:`unauthenticated`});else{let n=Rr(e.auth);t.wrap(`request`,n.hook),this.auth=n}let r=this.constructor;for(let t=0;t<r.plugins.length;++t)Object.assign(this,r.plugins[t](this,e))}request;graphql;log;hook;auth};function Kr(e){e.hook.wrap(`request`,(t,n)=>{e.log.debug(`request`,n);let r=Date.now(),i=e.request.endpoint.parse(n),a=i.url.replace(n.baseUrl,``);return t(n).then(t=>{let n=t.headers[`x-github-request-id`];return e.log.info(`${i.method} ${a} - ${t.status} with id ${n} in ${Date.now()-r}ms`),t}).catch(t=>{let n=t.response?.headers[`x-github-request-id`]||`UNKNOWN`;throw e.log.error(`${i.method} ${a} - ${t.status} with id ${n} in ${Date.now()-r}ms`),t})})}Kr.VERSION=`6.0.0`;var qr=`0.0.0-development`;function Jr(e){if(!e.data)return{...e,data:[]};if(!((`total_count`in e.data||`total_commits`in e.data)&&!(`url`in e.data)))return e;let t=e.data.incomplete_results,n=e.data.repository_selection,r=e.data.total_count,i=e.data.total_commits;delete e.data.incomplete_results,delete e.data.repository_selection,delete e.data.total_count,delete e.data.total_commits;let a=Object.keys(e.data)[0];return e.data=e.data[a],t!==void 0&&(e.data.incomplete_results=t),n!==void 0&&(e.data.repository_selection=n),e.data.total_count=r,e.data.total_commits=i,e}function Yr(e,t,n){let r=typeof t==`function`?t.endpoint(n):e.request.endpoint(t,n),i=typeof t==`function`?t:e.request,a=r.method,o=r.headers,s=r.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!s)return{done:!0};try{let e=Jr(await i({method:a,url:s,headers:o}));if(s=((e.headers.link||``).match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!s&&`total_commits`in e.data){let t=new URL(e.url),n=t.searchParams,r=parseInt(n.get(`page`)||`1`,10);r*parseInt(n.get(`per_page`)||`250`,10)<e.data.total_commits&&(n.set(`page`,String(r+1)),s=t.toString())}return{value:e}}catch(e){if(e.status!==409)throw e;return s=``,{value:{status:200,headers:{},data:[]}}}}})}}function Xr(e,t,n,r){return typeof n==`function`&&(r=n,n=void 0),Zr(e,[],Yr(e,t,n)[Symbol.asyncIterator](),r)}function Zr(e,t,n,r){return n.next().then(i=>{if(i.done)return t;let a=!1;function o(){a=!0}return t=t.concat(r?r(i.value,o):i.value.data),a?t:Zr(e,t,n,r)})}Object.assign(Xr,{iterator:Yr});function Qr(e){return{paginate:Object.assign(Xr.bind(null,e),{iterator:Yr.bind(null,e)})}}Qr.VERSION=qr;const $r=`17.0.0`;var ei={actions:{addCustomLabelsToSelfHostedRunnerForOrg:[`POST /orgs/{org}/actions/runners/{runner_id}/labels`],addCustomLabelsToSelfHostedRunnerForRepo:[`POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],addRepoAccessToSelfHostedRunnerGroupInOrg:[`PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}`],addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}`],addSelectedRepoToOrgVariable:[`PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}`],approveWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve`],cancelWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`],createEnvironmentVariable:[`POST /repos/{owner}/{repo}/environments/{environment_name}/variables`],createHostedRunnerForOrg:[`POST /orgs/{org}/actions/hosted-runners`],createOrUpdateEnvironmentSecret:[`PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}`],createOrgVariable:[`POST /orgs/{org}/actions/variables`],createRegistrationTokenForOrg:[`POST /orgs/{org}/actions/runners/registration-token`],createRegistrationTokenForRepo:[`POST /repos/{owner}/{repo}/actions/runners/registration-token`],createRemoveTokenForOrg:[`POST /orgs/{org}/actions/runners/remove-token`],createRemoveTokenForRepo:[`POST /repos/{owner}/{repo}/actions/runners/remove-token`],createRepoVariable:[`POST /repos/{owner}/{repo}/actions/variables`],createWorkflowDispatch:[`POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches`],deleteActionsCacheById:[`DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}`],deleteActionsCacheByKey:[`DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}`],deleteArtifact:[`DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}`],deleteCustomImageFromOrg:[`DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}`],deleteCustomImageVersionFromOrg:[`DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}`],deleteEnvironmentSecret:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],deleteEnvironmentVariable:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],deleteHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],deleteOrgSecret:[`DELETE /orgs/{org}/actions/secrets/{secret_name}`],deleteOrgVariable:[`DELETE /orgs/{org}/actions/variables/{name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}`],deleteRepoVariable:[`DELETE /repos/{owner}/{repo}/actions/variables/{name}`],deleteSelfHostedRunnerFromOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}`],deleteSelfHostedRunnerFromRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}`],deleteWorkflowRun:[`DELETE /repos/{owner}/{repo}/actions/runs/{run_id}`],deleteWorkflowRunLogs:[`DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs`],disableSelectedRepositoryGithubActionsOrganization:[`DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}`],disableWorkflow:[`PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable`],downloadArtifact:[`GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}`],downloadJobLogsForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs`],downloadWorkflowRunAttemptLogs:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs`],downloadWorkflowRunLogs:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs`],enableSelectedRepositoryGithubActionsOrganization:[`PUT /orgs/{org}/actions/permissions/repositories/{repository_id}`],enableWorkflow:[`PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable`],forceCancelWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel`],generateRunnerJitconfigForOrg:[`POST /orgs/{org}/actions/runners/generate-jitconfig`],generateRunnerJitconfigForRepo:[`POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig`],getActionsCacheList:[`GET /repos/{owner}/{repo}/actions/caches`],getActionsCacheUsage:[`GET /repos/{owner}/{repo}/actions/cache/usage`],getActionsCacheUsageByRepoForOrg:[`GET /orgs/{org}/actions/cache/usage-by-repository`],getActionsCacheUsageForOrg:[`GET /orgs/{org}/actions/cache/usage`],getAllowedActionsOrganization:[`GET /orgs/{org}/actions/permissions/selected-actions`],getAllowedActionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions/selected-actions`],getArtifact:[`GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}`],getCustomImageForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}`],getCustomImageVersionForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}`],getCustomOidcSubClaimForRepo:[`GET /repos/{owner}/{repo}/actions/oidc/customization/sub`],getEnvironmentPublicKey:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key`],getEnvironmentSecret:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],getEnvironmentVariable:[`GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],getGithubActionsDefaultWorkflowPermissionsOrganization:[`GET /orgs/{org}/actions/permissions/workflow`],getGithubActionsDefaultWorkflowPermissionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions/workflow`],getGithubActionsPermissionsOrganization:[`GET /orgs/{org}/actions/permissions`],getGithubActionsPermissionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions`],getHostedRunnerForOrg:[`GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],getHostedRunnersGithubOwnedImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/github-owned`],getHostedRunnersLimitsForOrg:[`GET /orgs/{org}/actions/hosted-runners/limits`],getHostedRunnersMachineSpecsForOrg:[`GET /orgs/{org}/actions/hosted-runners/machine-sizes`],getHostedRunnersPartnerImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/partner`],getHostedRunnersPlatformsForOrg:[`GET /orgs/{org}/actions/hosted-runners/platforms`],getJobForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/jobs/{job_id}`],getOrgPublicKey:[`GET /orgs/{org}/actions/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/actions/secrets/{secret_name}`],getOrgVariable:[`GET /orgs/{org}/actions/variables/{name}`],getPendingDeploymentsForRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`],getRepoPermissions:[`GET /repos/{owner}/{repo}/actions/permissions`,{},{renamed:[`actions`,`getGithubActionsPermissionsRepository`]}],getRepoPublicKey:[`GET /repos/{owner}/{repo}/actions/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/actions/secrets/{secret_name}`],getRepoVariable:[`GET /repos/{owner}/{repo}/actions/variables/{name}`],getReviewsForRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals`],getSelfHostedRunnerForOrg:[`GET /orgs/{org}/actions/runners/{runner_id}`],getSelfHostedRunnerForRepo:[`GET /repos/{owner}/{repo}/actions/runners/{runner_id}`],getWorkflow:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}`],getWorkflowAccessToRepository:[`GET /repos/{owner}/{repo}/actions/permissions/access`],getWorkflowRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}`],getWorkflowRunAttempt:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}`],getWorkflowRunUsage:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing`],getWorkflowUsage:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing`],listArtifactsForRepo:[`GET /repos/{owner}/{repo}/actions/artifacts`],listCustomImageVersionsForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions`],listCustomImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom`],listEnvironmentSecrets:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets`],listEnvironmentVariables:[`GET /repos/{owner}/{repo}/environments/{environment_name}/variables`],listGithubHostedRunnersInGroupForOrg:[`GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners`],listHostedRunnersForOrg:[`GET /orgs/{org}/actions/hosted-runners`],listJobsForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs`],listJobsForWorkflowRunAttempt:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs`],listLabelsForSelfHostedRunnerForOrg:[`GET /orgs/{org}/actions/runners/{runner_id}/labels`],listLabelsForSelfHostedRunnerForRepo:[`GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],listOrgSecrets:[`GET /orgs/{org}/actions/secrets`],listOrgVariables:[`GET /orgs/{org}/actions/variables`],listRepoOrganizationSecrets:[`GET /repos/{owner}/{repo}/actions/organization-secrets`],listRepoOrganizationVariables:[`GET /repos/{owner}/{repo}/actions/organization-variables`],listRepoSecrets:[`GET /repos/{owner}/{repo}/actions/secrets`],listRepoVariables:[`GET /repos/{owner}/{repo}/actions/variables`],listRepoWorkflows:[`GET /repos/{owner}/{repo}/actions/workflows`],listRunnerApplicationsForOrg:[`GET /orgs/{org}/actions/runners/downloads`],listRunnerApplicationsForRepo:[`GET /repos/{owner}/{repo}/actions/runners/downloads`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/actions/secrets/{secret_name}/repositories`],listSelectedReposForOrgVariable:[`GET /orgs/{org}/actions/variables/{name}/repositories`],listSelectedRepositoriesEnabledGithubActionsOrganization:[`GET /orgs/{org}/actions/permissions/repositories`],listSelfHostedRunnersForOrg:[`GET /orgs/{org}/actions/runners`],listSelfHostedRunnersForRepo:[`GET /repos/{owner}/{repo}/actions/runners`],listWorkflowRunArtifacts:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts`],listWorkflowRuns:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs`],listWorkflowRunsForRepo:[`GET /repos/{owner}/{repo}/actions/runs`],reRunJobForWorkflowRun:[`POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun`],reRunWorkflow:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun`],reRunWorkflowFailedJobs:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs`],removeAllCustomLabelsFromSelfHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}/labels`],removeAllCustomLabelsFromSelfHostedRunnerForRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],removeCustomLabelFromSelfHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}`],removeCustomLabelFromSelfHostedRunnerForRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}`],removeSelectedRepoFromOrgVariable:[`DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}`],reviewCustomGatesForRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule`],reviewPendingDeploymentsForRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`],setAllowedActionsOrganization:[`PUT /orgs/{org}/actions/permissions/selected-actions`],setAllowedActionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/selected-actions`],setCustomLabelsForSelfHostedRunnerForOrg:[`PUT /orgs/{org}/actions/runners/{runner_id}/labels`],setCustomLabelsForSelfHostedRunnerForRepo:[`PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],setCustomOidcSubClaimForRepo:[`PUT /repos/{owner}/{repo}/actions/oidc/customization/sub`],setGithubActionsDefaultWorkflowPermissionsOrganization:[`PUT /orgs/{org}/actions/permissions/workflow`],setGithubActionsDefaultWorkflowPermissionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/workflow`],setGithubActionsPermissionsOrganization:[`PUT /orgs/{org}/actions/permissions`],setGithubActionsPermissionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}/repositories`],setSelectedReposForOrgVariable:[`PUT /orgs/{org}/actions/variables/{name}/repositories`],setSelectedRepositoriesEnabledGithubActionsOrganization:[`PUT /orgs/{org}/actions/permissions/repositories`],setWorkflowAccessToRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/access`],updateEnvironmentVariable:[`PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],updateHostedRunnerForOrg:[`PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],updateOrgVariable:[`PATCH /orgs/{org}/actions/variables/{name}`],updateRepoVariable:[`PATCH /repos/{owner}/{repo}/actions/variables/{name}`]},activity:{checkRepoIsStarredByAuthenticatedUser:[`GET /user/starred/{owner}/{repo}`],deleteRepoSubscription:[`DELETE /repos/{owner}/{repo}/subscription`],deleteThreadSubscription:[`DELETE /notifications/threads/{thread_id}/subscription`],getFeeds:[`GET /feeds`],getRepoSubscription:[`GET /repos/{owner}/{repo}/subscription`],getThread:[`GET /notifications/threads/{thread_id}`],getThreadSubscriptionForAuthenticatedUser:[`GET /notifications/threads/{thread_id}/subscription`],listEventsForAuthenticatedUser:[`GET /users/{username}/events`],listNotificationsForAuthenticatedUser:[`GET /notifications`],listOrgEventsForAuthenticatedUser:[`GET /users/{username}/events/orgs/{org}`],listPublicEvents:[`GET /events`],listPublicEventsForRepoNetwork:[`GET /networks/{owner}/{repo}/events`],listPublicEventsForUser:[`GET /users/{username}/events/public`],listPublicOrgEvents:[`GET /orgs/{org}/events`],listReceivedEventsForUser:[`GET /users/{username}/received_events`],listReceivedPublicEventsForUser:[`GET /users/{username}/received_events/public`],listRepoEvents:[`GET /repos/{owner}/{repo}/events`],listRepoNotificationsForAuthenticatedUser:[`GET /repos/{owner}/{repo}/notifications`],listReposStarredByAuthenticatedUser:[`GET /user/starred`],listReposStarredByUser:[`GET /users/{username}/starred`],listReposWatchedByUser:[`GET /users/{username}/subscriptions`],listStargazersForRepo:[`GET /repos/{owner}/{repo}/stargazers`],listWatchedReposForAuthenticatedUser:[`GET /user/subscriptions`],listWatchersForRepo:[`GET /repos/{owner}/{repo}/subscribers`],markNotificationsAsRead:[`PUT /notifications`],markRepoNotificationsAsRead:[`PUT /repos/{owner}/{repo}/notifications`],markThreadAsDone:[`DELETE /notifications/threads/{thread_id}`],markThreadAsRead:[`PATCH /notifications/threads/{thread_id}`],setRepoSubscription:[`PUT /repos/{owner}/{repo}/subscription`],setThreadSubscription:[`PUT /notifications/threads/{thread_id}/subscription`],starRepoForAuthenticatedUser:[`PUT /user/starred/{owner}/{repo}`],unstarRepoForAuthenticatedUser:[`DELETE /user/starred/{owner}/{repo}`]},apps:{addRepoToInstallation:[`PUT /user/installations/{installation_id}/repositories/{repository_id}`,{},{renamed:[`apps`,`addRepoToInstallationForAuthenticatedUser`]}],addRepoToInstallationForAuthenticatedUser:[`PUT /user/installations/{installation_id}/repositories/{repository_id}`],checkToken:[`POST /applications/{client_id}/token`],createFromManifest:[`POST /app-manifests/{code}/conversions`],createInstallationAccessToken:[`POST /app/installations/{installation_id}/access_tokens`],deleteAuthorization:[`DELETE /applications/{client_id}/grant`],deleteInstallation:[`DELETE /app/installations/{installation_id}`],deleteToken:[`DELETE /applications/{client_id}/token`],getAuthenticated:[`GET /app`],getBySlug:[`GET /apps/{app_slug}`],getInstallation:[`GET /app/installations/{installation_id}`],getOrgInstallation:[`GET /orgs/{org}/installation`],getRepoInstallation:[`GET /repos/{owner}/{repo}/installation`],getSubscriptionPlanForAccount:[`GET /marketplace_listing/accounts/{account_id}`],getSubscriptionPlanForAccountStubbed:[`GET /marketplace_listing/stubbed/accounts/{account_id}`],getUserInstallation:[`GET /users/{username}/installation`],getWebhookConfigForApp:[`GET /app/hook/config`],getWebhookDelivery:[`GET /app/hook/deliveries/{delivery_id}`],listAccountsForPlan:[`GET /marketplace_listing/plans/{plan_id}/accounts`],listAccountsForPlanStubbed:[`GET /marketplace_listing/stubbed/plans/{plan_id}/accounts`],listInstallationReposForAuthenticatedUser:[`GET /user/installations/{installation_id}/repositories`],listInstallationRequestsForAuthenticatedApp:[`GET /app/installation-requests`],listInstallations:[`GET /app/installations`],listInstallationsForAuthenticatedUser:[`GET /user/installations`],listPlans:[`GET /marketplace_listing/plans`],listPlansStubbed:[`GET /marketplace_listing/stubbed/plans`],listReposAccessibleToInstallation:[`GET /installation/repositories`],listSubscriptionsForAuthenticatedUser:[`GET /user/marketplace_purchases`],listSubscriptionsForAuthenticatedUserStubbed:[`GET /user/marketplace_purchases/stubbed`],listWebhookDeliveries:[`GET /app/hook/deliveries`],redeliverWebhookDelivery:[`POST /app/hook/deliveries/{delivery_id}/attempts`],removeRepoFromInstallation:[`DELETE /user/installations/{installation_id}/repositories/{repository_id}`,{},{renamed:[`apps`,`removeRepoFromInstallationForAuthenticatedUser`]}],removeRepoFromInstallationForAuthenticatedUser:[`DELETE /user/installations/{installation_id}/repositories/{repository_id}`],resetToken:[`PATCH /applications/{client_id}/token`],revokeInstallationAccessToken:[`DELETE /installation/token`],scopeToken:[`POST /applications/{client_id}/token/scoped`],suspendInstallation:[`PUT /app/installations/{installation_id}/suspended`],unsuspendInstallation:[`DELETE /app/installations/{installation_id}/suspended`],updateWebhookConfigForApp:[`PATCH /app/hook/config`]},billing:{getGithubActionsBillingOrg:[`GET /orgs/{org}/settings/billing/actions`],getGithubActionsBillingUser:[`GET /users/{username}/settings/billing/actions`],getGithubBillingPremiumRequestUsageReportOrg:[`GET /organizations/{org}/settings/billing/premium_request/usage`],getGithubBillingPremiumRequestUsageReportUser:[`GET /users/{username}/settings/billing/premium_request/usage`],getGithubBillingUsageReportOrg:[`GET /organizations/{org}/settings/billing/usage`],getGithubBillingUsageReportUser:[`GET /users/{username}/settings/billing/usage`],getGithubPackagesBillingOrg:[`GET /orgs/{org}/settings/billing/packages`],getGithubPackagesBillingUser:[`GET /users/{username}/settings/billing/packages`],getSharedStorageBillingOrg:[`GET /orgs/{org}/settings/billing/shared-storage`],getSharedStorageBillingUser:[`GET /users/{username}/settings/billing/shared-storage`]},campaigns:{createCampaign:[`POST /orgs/{org}/campaigns`],deleteCampaign:[`DELETE /orgs/{org}/campaigns/{campaign_number}`],getCampaignSummary:[`GET /orgs/{org}/campaigns/{campaign_number}`],listOrgCampaigns:[`GET /orgs/{org}/campaigns`],updateCampaign:[`PATCH /orgs/{org}/campaigns/{campaign_number}`]},checks:{create:[`POST /repos/{owner}/{repo}/check-runs`],createSuite:[`POST /repos/{owner}/{repo}/check-suites`],get:[`GET /repos/{owner}/{repo}/check-runs/{check_run_id}`],getSuite:[`GET /repos/{owner}/{repo}/check-suites/{check_suite_id}`],listAnnotations:[`GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations`],listForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/check-runs`],listForSuite:[`GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs`],listSuitesForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/check-suites`],rerequestRun:[`POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest`],rerequestSuite:[`POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest`],setSuitesPreferences:[`PATCH /repos/{owner}/{repo}/check-suites/preferences`],update:[`PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}`]},codeScanning:{commitAutofix:[`POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits`],createAutofix:[`POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix`],createVariantAnalysis:[`POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses`],deleteAnalysis:[`DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}`],deleteCodeqlDatabase:[`DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}`],getAlert:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}`,{},{renamedParameters:{alert_id:`alert_number`}}],getAnalysis:[`GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}`],getAutofix:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix`],getCodeqlDatabase:[`GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}`],getDefaultSetup:[`GET /repos/{owner}/{repo}/code-scanning/default-setup`],getSarif:[`GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}`],getVariantAnalysis:[`GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}`],getVariantAnalysisRepoTask:[`GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}`],listAlertInstances:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances`],listAlertsForOrg:[`GET /orgs/{org}/code-scanning/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/code-scanning/alerts`],listAlertsInstances:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances`,{},{renamed:[`codeScanning`,`listAlertInstances`]}],listCodeqlDatabases:[`GET /repos/{owner}/{repo}/code-scanning/codeql/databases`],listRecentAnalyses:[`GET /repos/{owner}/{repo}/code-scanning/analyses`],updateAlert:[`PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}`],updateDefaultSetup:[`PATCH /repos/{owner}/{repo}/code-scanning/default-setup`],uploadSarif:[`POST /repos/{owner}/{repo}/code-scanning/sarifs`]},codeSecurity:{attachConfiguration:[`POST /orgs/{org}/code-security/configurations/{configuration_id}/attach`],attachEnterpriseConfiguration:[`POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach`],createConfiguration:[`POST /orgs/{org}/code-security/configurations`],createConfigurationForEnterprise:[`POST /enterprises/{enterprise}/code-security/configurations`],deleteConfiguration:[`DELETE /orgs/{org}/code-security/configurations/{configuration_id}`],deleteConfigurationForEnterprise:[`DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}`],detachConfiguration:[`DELETE /orgs/{org}/code-security/configurations/detach`],getConfiguration:[`GET /orgs/{org}/code-security/configurations/{configuration_id}`],getConfigurationForRepository:[`GET /repos/{owner}/{repo}/code-security-configuration`],getConfigurationsForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations`],getConfigurationsForOrg:[`GET /orgs/{org}/code-security/configurations`],getDefaultConfigurations:[`GET /orgs/{org}/code-security/configurations/defaults`],getDefaultConfigurationsForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations/defaults`],getRepositoriesForConfiguration:[`GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories`],getRepositoriesForEnterpriseConfiguration:[`GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories`],getSingleConfigurationForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}`],setConfigurationAsDefault:[`PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults`],setConfigurationAsDefaultForEnterprise:[`PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults`],updateConfiguration:[`PATCH /orgs/{org}/code-security/configurations/{configuration_id}`],updateEnterpriseConfiguration:[`PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}`]},codesOfConduct:{getAllCodesOfConduct:[`GET /codes_of_conduct`],getConductCode:[`GET /codes_of_conduct/{key}`]},codespaces:{addRepositoryForSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}`],addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}`],checkPermissionsForDevcontainer:[`GET /repos/{owner}/{repo}/codespaces/permissions_check`],codespaceMachinesForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}/machines`],createForAuthenticatedUser:[`POST /user/codespaces`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],createOrUpdateSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}`],createWithPrForAuthenticatedUser:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces`],createWithRepoForAuthenticatedUser:[`POST /repos/{owner}/{repo}/codespaces`],deleteForAuthenticatedUser:[`DELETE /user/codespaces/{codespace_name}`],deleteFromOrganization:[`DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}`],deleteOrgSecret:[`DELETE /orgs/{org}/codespaces/secrets/{secret_name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],deleteSecretForAuthenticatedUser:[`DELETE /user/codespaces/secrets/{secret_name}`],exportForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/exports`],getCodespacesForUserInOrg:[`GET /orgs/{org}/members/{username}/codespaces`],getExportDetailsForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}/exports/{export_id}`],getForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}`],getOrgPublicKey:[`GET /orgs/{org}/codespaces/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/codespaces/secrets/{secret_name}`],getPublicKeyForAuthenticatedUser:[`GET /user/codespaces/secrets/public-key`],getRepoPublicKey:[`GET /repos/{owner}/{repo}/codespaces/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],getSecretForAuthenticatedUser:[`GET /user/codespaces/secrets/{secret_name}`],listDevcontainersInRepositoryForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/devcontainers`],listForAuthenticatedUser:[`GET /user/codespaces`],listInOrganization:[`GET /orgs/{org}/codespaces`,{},{renamedParameters:{org_id:`org`}}],listInRepositoryForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces`],listOrgSecrets:[`GET /orgs/{org}/codespaces/secrets`],listRepoSecrets:[`GET /repos/{owner}/{repo}/codespaces/secrets`],listRepositoriesForSecretForAuthenticatedUser:[`GET /user/codespaces/secrets/{secret_name}/repositories`],listSecretsForAuthenticatedUser:[`GET /user/codespaces/secrets`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories`],preFlightWithRepoForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/new`],publishForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/publish`],removeRepositoryForSecretForAuthenticatedUser:[`DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}`],repoMachinesForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/machines`],setRepositoriesForSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}/repositories`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories`],startForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/start`],stopForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/stop`],stopInOrganization:[`POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop`],updateForAuthenticatedUser:[`PATCH /user/codespaces/{codespace_name}`]},copilot:{addCopilotSeatsForTeams:[`POST /orgs/{org}/copilot/billing/selected_teams`],addCopilotSeatsForUsers:[`POST /orgs/{org}/copilot/billing/selected_users`],cancelCopilotSeatAssignmentForTeams:[`DELETE /orgs/{org}/copilot/billing/selected_teams`],cancelCopilotSeatAssignmentForUsers:[`DELETE /orgs/{org}/copilot/billing/selected_users`],copilotMetricsForOrganization:[`GET /orgs/{org}/copilot/metrics`],copilotMetricsForTeam:[`GET /orgs/{org}/team/{team_slug}/copilot/metrics`],getCopilotOrganizationDetails:[`GET /orgs/{org}/copilot/billing`],getCopilotSeatDetailsForUser:[`GET /orgs/{org}/members/{username}/copilot`],listCopilotSeats:[`GET /orgs/{org}/copilot/billing/seats`]},credentials:{revoke:[`POST /credentials/revoke`]},dependabot:{addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],deleteOrgSecret:[`DELETE /orgs/{org}/dependabot/secrets/{secret_name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],getAlert:[`GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}`],getOrgPublicKey:[`GET /orgs/{org}/dependabot/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/dependabot/secrets/{secret_name}`],getRepoPublicKey:[`GET /repos/{owner}/{repo}/dependabot/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],listAlertsForEnterprise:[`GET /enterprises/{enterprise}/dependabot/alerts`],listAlertsForOrg:[`GET /orgs/{org}/dependabot/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/dependabot/alerts`],listOrgSecrets:[`GET /orgs/{org}/dependabot/secrets`],listRepoSecrets:[`GET /repos/{owner}/{repo}/dependabot/secrets`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}`],repositoryAccessForOrg:[`GET /organizations/{org}/dependabot/repository-access`],setRepositoryAccessDefaultLevel:[`PUT /organizations/{org}/dependabot/repository-access/default-level`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories`],updateAlert:[`PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}`],updateRepositoryAccessForOrg:[`PATCH /organizations/{org}/dependabot/repository-access`]},dependencyGraph:{createRepositorySnapshot:[`POST /repos/{owner}/{repo}/dependency-graph/snapshots`],diffRange:[`GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}`],exportSbom:[`GET /repos/{owner}/{repo}/dependency-graph/sbom`]},emojis:{get:[`GET /emojis`]},enterpriseTeamMemberships:{add:[`PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`],bulkAdd:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add`],bulkRemove:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove`],get:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`],list:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships`],remove:[`DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`]},enterpriseTeamOrganizations:{add:[`PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],bulkAdd:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add`],bulkRemove:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove`],delete:[`DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],getAssignment:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],getAssignments:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations`]},enterpriseTeams:{create:[`POST /enterprises/{enterprise}/teams`],delete:[`DELETE /enterprises/{enterprise}/teams/{team_slug}`],get:[`GET /enterprises/{enterprise}/teams/{team_slug}`],list:[`GET /enterprises/{enterprise}/teams`],update:[`PATCH /enterprises/{enterprise}/teams/{team_slug}`]},gists:{checkIsStarred:[`GET /gists/{gist_id}/star`],create:[`POST /gists`],createComment:[`POST /gists/{gist_id}/comments`],delete:[`DELETE /gists/{gist_id}`],deleteComment:[`DELETE /gists/{gist_id}/comments/{comment_id}`],fork:[`POST /gists/{gist_id}/forks`],get:[`GET /gists/{gist_id}`],getComment:[`GET /gists/{gist_id}/comments/{comment_id}`],getRevision:[`GET /gists/{gist_id}/{sha}`],list:[`GET /gists`],listComments:[`GET /gists/{gist_id}/comments`],listCommits:[`GET /gists/{gist_id}/commits`],listForUser:[`GET /users/{username}/gists`],listForks:[`GET /gists/{gist_id}/forks`],listPublic:[`GET /gists/public`],listStarred:[`GET /gists/starred`],star:[`PUT /gists/{gist_id}/star`],unstar:[`DELETE /gists/{gist_id}/star`],update:[`PATCH /gists/{gist_id}`],updateComment:[`PATCH /gists/{gist_id}/comments/{comment_id}`]},git:{createBlob:[`POST /repos/{owner}/{repo}/git/blobs`],createCommit:[`POST /repos/{owner}/{repo}/git/commits`],createRef:[`POST /repos/{owner}/{repo}/git/refs`],createTag:[`POST /repos/{owner}/{repo}/git/tags`],createTree:[`POST /repos/{owner}/{repo}/git/trees`],deleteRef:[`DELETE /repos/{owner}/{repo}/git/refs/{ref}`],getBlob:[`GET /repos/{owner}/{repo}/git/blobs/{file_sha}`],getCommit:[`GET /repos/{owner}/{repo}/git/commits/{commit_sha}`],getRef:[`GET /repos/{owner}/{repo}/git/ref/{ref}`],getTag:[`GET /repos/{owner}/{repo}/git/tags/{tag_sha}`],getTree:[`GET /repos/{owner}/{repo}/git/trees/{tree_sha}`],listMatchingRefs:[`GET /repos/{owner}/{repo}/git/matching-refs/{ref}`],updateRef:[`PATCH /repos/{owner}/{repo}/git/refs/{ref}`]},gitignore:{getAllTemplates:[`GET /gitignore/templates`],getTemplate:[`GET /gitignore/templates/{name}`]},hostedCompute:{createNetworkConfigurationForOrg:[`POST /orgs/{org}/settings/network-configurations`],deleteNetworkConfigurationFromOrg:[`DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}`],getNetworkConfigurationForOrg:[`GET /orgs/{org}/settings/network-configurations/{network_configuration_id}`],getNetworkSettingsForOrg:[`GET /orgs/{org}/settings/network-settings/{network_settings_id}`],listNetworkConfigurationsForOrg:[`GET /orgs/{org}/settings/network-configurations`],updateNetworkConfigurationForOrg:[`PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}`]},interactions:{getRestrictionsForAuthenticatedUser:[`GET /user/interaction-limits`],getRestrictionsForOrg:[`GET /orgs/{org}/interaction-limits`],getRestrictionsForRepo:[`GET /repos/{owner}/{repo}/interaction-limits`],getRestrictionsForYourPublicRepos:[`GET /user/interaction-limits`,{},{renamed:[`interactions`,`getRestrictionsForAuthenticatedUser`]}],removeRestrictionsForAuthenticatedUser:[`DELETE /user/interaction-limits`],removeRestrictionsForOrg:[`DELETE /orgs/{org}/interaction-limits`],removeRestrictionsForRepo:[`DELETE /repos/{owner}/{repo}/interaction-limits`],removeRestrictionsForYourPublicRepos:[`DELETE /user/interaction-limits`,{},{renamed:[`interactions`,`removeRestrictionsForAuthenticatedUser`]}],setRestrictionsForAuthenticatedUser:[`PUT /user/interaction-limits`],setRestrictionsForOrg:[`PUT /orgs/{org}/interaction-limits`],setRestrictionsForRepo:[`PUT /repos/{owner}/{repo}/interaction-limits`],setRestrictionsForYourPublicRepos:[`PUT /user/interaction-limits`,{},{renamed:[`interactions`,`setRestrictionsForAuthenticatedUser`]}]},issues:{addAssignees:[`POST /repos/{owner}/{repo}/issues/{issue_number}/assignees`],addBlockedByDependency:[`POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by`],addLabels:[`POST /repos/{owner}/{repo}/issues/{issue_number}/labels`],addSubIssue:[`POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues`],checkUserCanBeAssigned:[`GET /repos/{owner}/{repo}/assignees/{assignee}`],checkUserCanBeAssignedToIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}`],create:[`POST /repos/{owner}/{repo}/issues`],createComment:[`POST /repos/{owner}/{repo}/issues/{issue_number}/comments`],createLabel:[`POST /repos/{owner}/{repo}/labels`],createMilestone:[`POST /repos/{owner}/{repo}/milestones`],deleteComment:[`DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}`],deleteLabel:[`DELETE /repos/{owner}/{repo}/labels/{name}`],deleteMilestone:[`DELETE /repos/{owner}/{repo}/milestones/{milestone_number}`],get:[`GET /repos/{owner}/{repo}/issues/{issue_number}`],getComment:[`GET /repos/{owner}/{repo}/issues/comments/{comment_id}`],getEvent:[`GET /repos/{owner}/{repo}/issues/events/{event_id}`],getLabel:[`GET /repos/{owner}/{repo}/labels/{name}`],getMilestone:[`GET /repos/{owner}/{repo}/milestones/{milestone_number}`],getParent:[`GET /repos/{owner}/{repo}/issues/{issue_number}/parent`],list:[`GET /issues`],listAssignees:[`GET /repos/{owner}/{repo}/assignees`],listComments:[`GET /repos/{owner}/{repo}/issues/{issue_number}/comments`],listCommentsForRepo:[`GET /repos/{owner}/{repo}/issues/comments`],listDependenciesBlockedBy:[`GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by`],listDependenciesBlocking:[`GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking`],listEvents:[`GET /repos/{owner}/{repo}/issues/{issue_number}/events`],listEventsForRepo:[`GET /repos/{owner}/{repo}/issues/events`],listEventsForTimeline:[`GET /repos/{owner}/{repo}/issues/{issue_number}/timeline`],listForAuthenticatedUser:[`GET /user/issues`],listForOrg:[`GET /orgs/{org}/issues`],listForRepo:[`GET /repos/{owner}/{repo}/issues`],listLabelsForMilestone:[`GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels`],listLabelsForRepo:[`GET /repos/{owner}/{repo}/labels`],listLabelsOnIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/labels`],listMilestones:[`GET /repos/{owner}/{repo}/milestones`],listSubIssues:[`GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues`],lock:[`PUT /repos/{owner}/{repo}/issues/{issue_number}/lock`],removeAllLabels:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels`],removeAssignees:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees`],removeDependencyBlockedBy:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}`],removeLabel:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}`],removeSubIssue:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue`],reprioritizeSubIssue:[`PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority`],setLabels:[`PUT /repos/{owner}/{repo}/issues/{issue_number}/labels`],unlock:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock`],update:[`PATCH /repos/{owner}/{repo}/issues/{issue_number}`],updateComment:[`PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}`],updateLabel:[`PATCH /repos/{owner}/{repo}/labels/{name}`],updateMilestone:[`PATCH /repos/{owner}/{repo}/milestones/{milestone_number}`]},licenses:{get:[`GET /licenses/{license}`],getAllCommonlyUsed:[`GET /licenses`],getForRepo:[`GET /repos/{owner}/{repo}/license`]},markdown:{render:[`POST /markdown`],renderRaw:[`POST /markdown/raw`,{headers:{"content-type":`text/plain; charset=utf-8`}}]},meta:{get:[`GET /meta`],getAllVersions:[`GET /versions`],getOctocat:[`GET /octocat`],getZen:[`GET /zen`],root:[`GET /`]},migrations:{deleteArchiveForAuthenticatedUser:[`DELETE /user/migrations/{migration_id}/archive`],deleteArchiveForOrg:[`DELETE /orgs/{org}/migrations/{migration_id}/archive`],downloadArchiveForOrg:[`GET /orgs/{org}/migrations/{migration_id}/archive`],getArchiveForAuthenticatedUser:[`GET /user/migrations/{migration_id}/archive`],getStatusForAuthenticatedUser:[`GET /user/migrations/{migration_id}`],getStatusForOrg:[`GET /orgs/{org}/migrations/{migration_id}`],listForAuthenticatedUser:[`GET /user/migrations`],listForOrg:[`GET /orgs/{org}/migrations`],listReposForAuthenticatedUser:[`GET /user/migrations/{migration_id}/repositories`],listReposForOrg:[`GET /orgs/{org}/migrations/{migration_id}/repositories`],listReposForUser:[`GET /user/migrations/{migration_id}/repositories`,{},{renamed:[`migrations`,`listReposForAuthenticatedUser`]}],startForAuthenticatedUser:[`POST /user/migrations`],startForOrg:[`POST /orgs/{org}/migrations`],unlockRepoForAuthenticatedUser:[`DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock`],unlockRepoForOrg:[`DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock`]},oidc:{getOidcCustomSubTemplateForOrg:[`GET /orgs/{org}/actions/oidc/customization/sub`],updateOidcCustomSubTemplateForOrg:[`PUT /orgs/{org}/actions/oidc/customization/sub`]},orgs:{addSecurityManagerTeam:[`PUT /orgs/{org}/security-managers/teams/{team_slug}`,{},{deprecated:`octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team`}],assignTeamToOrgRole:[`PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}`],assignUserToOrgRole:[`PUT /orgs/{org}/organization-roles/users/{username}/{role_id}`],blockUser:[`PUT /orgs/{org}/blocks/{username}`],cancelInvitation:[`DELETE /orgs/{org}/invitations/{invitation_id}`],checkBlockedUser:[`GET /orgs/{org}/blocks/{username}`],checkMembershipForUser:[`GET /orgs/{org}/members/{username}`],checkPublicMembershipForUser:[`GET /orgs/{org}/public_members/{username}`],convertMemberToOutsideCollaborator:[`PUT /orgs/{org}/outside_collaborators/{username}`],createArtifactStorageRecord:[`POST /orgs/{org}/artifacts/metadata/storage-record`],createInvitation:[`POST /orgs/{org}/invitations`],createIssueType:[`POST /orgs/{org}/issue-types`],createWebhook:[`POST /orgs/{org}/hooks`],customPropertiesForOrgsCreateOrUpdateOrganizationValues:[`PATCH /organizations/{org}/org-properties/values`],customPropertiesForOrgsGetOrganizationValues:[`GET /organizations/{org}/org-properties/values`],customPropertiesForReposCreateOrUpdateOrganizationDefinition:[`PUT /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:[`PATCH /orgs/{org}/properties/schema`],customPropertiesForReposCreateOrUpdateOrganizationValues:[`PATCH /orgs/{org}/properties/values`],customPropertiesForReposDeleteOrganizationDefinition:[`DELETE /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposGetOrganizationDefinition:[`GET /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposGetOrganizationDefinitions:[`GET /orgs/{org}/properties/schema`],customPropertiesForReposGetOrganizationValues:[`GET /orgs/{org}/properties/values`],delete:[`DELETE /orgs/{org}`],deleteAttestationsBulk:[`POST /orgs/{org}/attestations/delete-request`],deleteAttestationsById:[`DELETE /orgs/{org}/attestations/{attestation_id}`],deleteAttestationsBySubjectDigest:[`DELETE /orgs/{org}/attestations/digest/{subject_digest}`],deleteIssueType:[`DELETE /orgs/{org}/issue-types/{issue_type_id}`],deleteWebhook:[`DELETE /orgs/{org}/hooks/{hook_id}`],disableSelectedRepositoryImmutableReleasesOrganization:[`DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}`],enableSelectedRepositoryImmutableReleasesOrganization:[`PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}`],get:[`GET /orgs/{org}`],getImmutableReleasesSettings:[`GET /orgs/{org}/settings/immutable-releases`],getImmutableReleasesSettingsRepositories:[`GET /orgs/{org}/settings/immutable-releases/repositories`],getMembershipForAuthenticatedUser:[`GET /user/memberships/orgs/{org}`],getMembershipForUser:[`GET /orgs/{org}/memberships/{username}`],getOrgRole:[`GET /orgs/{org}/organization-roles/{role_id}`],getOrgRulesetHistory:[`GET /orgs/{org}/rulesets/{ruleset_id}/history`],getOrgRulesetVersion:[`GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}`],getWebhook:[`GET /orgs/{org}/hooks/{hook_id}`],getWebhookConfigForOrg:[`GET /orgs/{org}/hooks/{hook_id}/config`],getWebhookDelivery:[`GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}`],list:[`GET /organizations`],listAppInstallations:[`GET /orgs/{org}/installations`],listArtifactStorageRecords:[`GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records`],listAttestationRepositories:[`GET /orgs/{org}/attestations/repositories`],listAttestations:[`GET /orgs/{org}/attestations/{subject_digest}`],listAttestationsBulk:[`POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}`],listBlockedUsers:[`GET /orgs/{org}/blocks`],listFailedInvitations:[`GET /orgs/{org}/failed_invitations`],listForAuthenticatedUser:[`GET /user/orgs`],listForUser:[`GET /users/{username}/orgs`],listInvitationTeams:[`GET /orgs/{org}/invitations/{invitation_id}/teams`],listIssueTypes:[`GET /orgs/{org}/issue-types`],listMembers:[`GET /orgs/{org}/members`],listMembershipsForAuthenticatedUser:[`GET /user/memberships/orgs`],listOrgRoleTeams:[`GET /orgs/{org}/organization-roles/{role_id}/teams`],listOrgRoleUsers:[`GET /orgs/{org}/organization-roles/{role_id}/users`],listOrgRoles:[`GET /orgs/{org}/organization-roles`],listOrganizationFineGrainedPermissions:[`GET /orgs/{org}/organization-fine-grained-permissions`],listOutsideCollaborators:[`GET /orgs/{org}/outside_collaborators`],listPatGrantRepositories:[`GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories`],listPatGrantRequestRepositories:[`GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories`],listPatGrantRequests:[`GET /orgs/{org}/personal-access-token-requests`],listPatGrants:[`GET /orgs/{org}/personal-access-tokens`],listPendingInvitations:[`GET /orgs/{org}/invitations`],listPublicMembers:[`GET /orgs/{org}/public_members`],listSecurityManagerTeams:[`GET /orgs/{org}/security-managers`,{},{deprecated:`octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams`}],listWebhookDeliveries:[`GET /orgs/{org}/hooks/{hook_id}/deliveries`],listWebhooks:[`GET /orgs/{org}/hooks`],pingWebhook:[`POST /orgs/{org}/hooks/{hook_id}/pings`],redeliverWebhookDelivery:[`POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts`],removeMember:[`DELETE /orgs/{org}/members/{username}`],removeMembershipForUser:[`DELETE /orgs/{org}/memberships/{username}`],removeOutsideCollaborator:[`DELETE /orgs/{org}/outside_collaborators/{username}`],removePublicMembershipForAuthenticatedUser:[`DELETE /orgs/{org}/public_members/{username}`],removeSecurityManagerTeam:[`DELETE /orgs/{org}/security-managers/teams/{team_slug}`,{},{deprecated:`octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team`}],reviewPatGrantRequest:[`POST /orgs/{org}/personal-access-token-requests/{pat_request_id}`],reviewPatGrantRequestsInBulk:[`POST /orgs/{org}/personal-access-token-requests`],revokeAllOrgRolesTeam:[`DELETE /orgs/{org}/organization-roles/teams/{team_slug}`],revokeAllOrgRolesUser:[`DELETE /orgs/{org}/organization-roles/users/{username}`],revokeOrgRoleTeam:[`DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}`],revokeOrgRoleUser:[`DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}`],setImmutableReleasesSettings:[`PUT /orgs/{org}/settings/immutable-releases`],setImmutableReleasesSettingsRepositories:[`PUT /orgs/{org}/settings/immutable-releases/repositories`],setMembershipForUser:[`PUT /orgs/{org}/memberships/{username}`],setPublicMembershipForAuthenticatedUser:[`PUT /orgs/{org}/public_members/{username}`],unblockUser:[`DELETE /orgs/{org}/blocks/{username}`],update:[`PATCH /orgs/{org}`],updateIssueType:[`PUT /orgs/{org}/issue-types/{issue_type_id}`],updateMembershipForAuthenticatedUser:[`PATCH /user/memberships/orgs/{org}`],updatePatAccess:[`POST /orgs/{org}/personal-access-tokens/{pat_id}`],updatePatAccesses:[`POST /orgs/{org}/personal-access-tokens`],updateWebhook:[`PATCH /orgs/{org}/hooks/{hook_id}`],updateWebhookConfigForOrg:[`PATCH /orgs/{org}/hooks/{hook_id}/config`]},packages:{deletePackageForAuthenticatedUser:[`DELETE /user/packages/{package_type}/{package_name}`],deletePackageForOrg:[`DELETE /orgs/{org}/packages/{package_type}/{package_name}`],deletePackageForUser:[`DELETE /users/{username}/packages/{package_type}/{package_name}`],deletePackageVersionForAuthenticatedUser:[`DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}`],deletePackageVersionForOrg:[`DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}`],deletePackageVersionForUser:[`DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}`],getAllPackageVersionsForAPackageOwnedByAnOrg:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions`,{},{renamed:[`packages`,`getAllPackageVersionsForPackageOwnedByOrg`]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions`,{},{renamed:[`packages`,`getAllPackageVersionsForPackageOwnedByAuthenticatedUser`]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions`],getAllPackageVersionsForPackageOwnedByOrg:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions`],getAllPackageVersionsForPackageOwnedByUser:[`GET /users/{username}/packages/{package_type}/{package_name}/versions`],getPackageForAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}`],getPackageForOrganization:[`GET /orgs/{org}/packages/{package_type}/{package_name}`],getPackageForUser:[`GET /users/{username}/packages/{package_type}/{package_name}`],getPackageVersionForAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}`],getPackageVersionForOrganization:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}`],getPackageVersionForUser:[`GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}`],listDockerMigrationConflictingPackagesForAuthenticatedUser:[`GET /user/docker/conflicts`],listDockerMigrationConflictingPackagesForOrganization:[`GET /orgs/{org}/docker/conflicts`],listDockerMigrationConflictingPackagesForUser:[`GET /users/{username}/docker/conflicts`],listPackagesForAuthenticatedUser:[`GET /user/packages`],listPackagesForOrganization:[`GET /orgs/{org}/packages`],listPackagesForUser:[`GET /users/{username}/packages`],restorePackageForAuthenticatedUser:[`POST /user/packages/{package_type}/{package_name}/restore{?token}`],restorePackageForOrg:[`POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}`],restorePackageForUser:[`POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}`],restorePackageVersionForAuthenticatedUser:[`POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`],restorePackageVersionForOrg:[`POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`],restorePackageVersionForUser:[`POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`]},privateRegistries:{createOrgPrivateRegistry:[`POST /orgs/{org}/private-registries`],deleteOrgPrivateRegistry:[`DELETE /orgs/{org}/private-registries/{secret_name}`],getOrgPrivateRegistry:[`GET /orgs/{org}/private-registries/{secret_name}`],getOrgPublicKey:[`GET /orgs/{org}/private-registries/public-key`],listOrgPrivateRegistries:[`GET /orgs/{org}/private-registries`],updateOrgPrivateRegistry:[`PATCH /orgs/{org}/private-registries/{secret_name}`]},projects:{addItemForOrg:[`POST /orgs/{org}/projectsV2/{project_number}/items`],addItemForUser:[`POST /users/{username}/projectsV2/{project_number}/items`],deleteItemForOrg:[`DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],deleteItemForUser:[`DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}`],getFieldForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}`],getFieldForUser:[`GET /users/{username}/projectsV2/{project_number}/fields/{field_id}`],getForOrg:[`GET /orgs/{org}/projectsV2/{project_number}`],getForUser:[`GET /users/{username}/projectsV2/{project_number}`],getOrgItem:[`GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],getUserItem:[`GET /users/{username}/projectsV2/{project_number}/items/{item_id}`],listFieldsForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/fields`],listFieldsForUser:[`GET /users/{username}/projectsV2/{project_number}/fields`],listForOrg:[`GET /orgs/{org}/projectsV2`],listForUser:[`GET /users/{username}/projectsV2`],listItemsForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/items`],listItemsForUser:[`GET /users/{username}/projectsV2/{project_number}/items`],updateItemForOrg:[`PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],updateItemForUser:[`PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}`]},pulls:{checkIfMerged:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/merge`],create:[`POST /repos/{owner}/{repo}/pulls`],createReplyForReviewComment:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies`],createReview:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews`],createReviewComment:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/comments`],deletePendingReview:[`DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],deleteReviewComment:[`DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}`],dismissReview:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals`],get:[`GET /repos/{owner}/{repo}/pulls/{pull_number}`],getReview:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],getReviewComment:[`GET /repos/{owner}/{repo}/pulls/comments/{comment_id}`],list:[`GET /repos/{owner}/{repo}/pulls`],listCommentsForReview:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments`],listCommits:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/commits`],listFiles:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/files`],listRequestedReviewers:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],listReviewComments:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/comments`],listReviewCommentsForRepo:[`GET /repos/{owner}/{repo}/pulls/comments`],listReviews:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews`],merge:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge`],removeRequestedReviewers:[`DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],requestReviewers:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],submitReview:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events`],update:[`PATCH /repos/{owner}/{repo}/pulls/{pull_number}`],updateBranch:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch`],updateReview:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],updateReviewComment:[`PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}`]},rateLimit:{get:[`GET /rate_limit`]},reactions:{createForCommitComment:[`POST /repos/{owner}/{repo}/comments/{comment_id}/reactions`],createForIssue:[`POST /repos/{owner}/{repo}/issues/{issue_number}/reactions`],createForIssueComment:[`POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions`],createForPullRequestReviewComment:[`POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions`],createForRelease:[`POST /repos/{owner}/{repo}/releases/{release_id}/reactions`],createForTeamDiscussionCommentInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions`],createForTeamDiscussionInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions`],deleteForCommitComment:[`DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}`],deleteForIssue:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}`],deleteForIssueComment:[`DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}`],deleteForPullRequestComment:[`DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}`],deleteForRelease:[`DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}`],deleteForTeamDiscussion:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}`],deleteForTeamDiscussionComment:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}`],listForCommitComment:[`GET /repos/{owner}/{repo}/comments/{comment_id}/reactions`],listForIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/reactions`],listForIssueComment:[`GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions`],listForPullRequestReviewComment:[`GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions`],listForRelease:[`GET /repos/{owner}/{repo}/releases/{release_id}/reactions`],listForTeamDiscussionCommentInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions`],listForTeamDiscussionInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions`]},repos:{acceptInvitation:[`PATCH /user/repository_invitations/{invitation_id}`,{},{renamed:[`repos`,`acceptInvitationForAuthenticatedUser`]}],acceptInvitationForAuthenticatedUser:[`PATCH /user/repository_invitations/{invitation_id}`],addAppAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],addCollaborator:[`PUT /repos/{owner}/{repo}/collaborators/{username}`],addStatusCheckContexts:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],addTeamAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],addUserAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],cancelPagesDeployment:[`POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel`],checkAutomatedSecurityFixes:[`GET /repos/{owner}/{repo}/automated-security-fixes`],checkCollaborator:[`GET /repos/{owner}/{repo}/collaborators/{username}`],checkImmutableReleases:[`GET /repos/{owner}/{repo}/immutable-releases`],checkPrivateVulnerabilityReporting:[`GET /repos/{owner}/{repo}/private-vulnerability-reporting`],checkVulnerabilityAlerts:[`GET /repos/{owner}/{repo}/vulnerability-alerts`],codeownersErrors:[`GET /repos/{owner}/{repo}/codeowners/errors`],compareCommits:[`GET /repos/{owner}/{repo}/compare/{base}...{head}`],compareCommitsWithBasehead:[`GET /repos/{owner}/{repo}/compare/{basehead}`],createAttestation:[`POST /repos/{owner}/{repo}/attestations`],createAutolink:[`POST /repos/{owner}/{repo}/autolinks`],createCommitComment:[`POST /repos/{owner}/{repo}/commits/{commit_sha}/comments`],createCommitSignatureProtection:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],createCommitStatus:[`POST /repos/{owner}/{repo}/statuses/{sha}`],createDeployKey:[`POST /repos/{owner}/{repo}/keys`],createDeployment:[`POST /repos/{owner}/{repo}/deployments`],createDeploymentBranchPolicy:[`POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies`],createDeploymentProtectionRule:[`POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules`],createDeploymentStatus:[`POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses`],createDispatchEvent:[`POST /repos/{owner}/{repo}/dispatches`],createForAuthenticatedUser:[`POST /user/repos`],createFork:[`POST /repos/{owner}/{repo}/forks`],createInOrg:[`POST /orgs/{org}/repos`],createOrUpdateEnvironment:[`PUT /repos/{owner}/{repo}/environments/{environment_name}`],createOrUpdateFileContents:[`PUT /repos/{owner}/{repo}/contents/{path}`],createOrgRuleset:[`POST /orgs/{org}/rulesets`],createPagesDeployment:[`POST /repos/{owner}/{repo}/pages/deployments`],createPagesSite:[`POST /repos/{owner}/{repo}/pages`],createRelease:[`POST /repos/{owner}/{repo}/releases`],createRepoRuleset:[`POST /repos/{owner}/{repo}/rulesets`],createUsingTemplate:[`POST /repos/{template_owner}/{template_repo}/generate`],createWebhook:[`POST /repos/{owner}/{repo}/hooks`],customPropertiesForReposCreateOrUpdateRepositoryValues:[`PATCH /repos/{owner}/{repo}/properties/values`],customPropertiesForReposGetRepositoryValues:[`GET /repos/{owner}/{repo}/properties/values`],declineInvitation:[`DELETE /user/repository_invitations/{invitation_id}`,{},{renamed:[`repos`,`declineInvitationForAuthenticatedUser`]}],declineInvitationForAuthenticatedUser:[`DELETE /user/repository_invitations/{invitation_id}`],delete:[`DELETE /repos/{owner}/{repo}`],deleteAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions`],deleteAdminBranchProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],deleteAnEnvironment:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}`],deleteAutolink:[`DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}`],deleteBranchProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection`],deleteCommitComment:[`DELETE /repos/{owner}/{repo}/comments/{comment_id}`],deleteCommitSignatureProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],deleteDeployKey:[`DELETE /repos/{owner}/{repo}/keys/{key_id}`],deleteDeployment:[`DELETE /repos/{owner}/{repo}/deployments/{deployment_id}`],deleteDeploymentBranchPolicy:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],deleteFile:[`DELETE /repos/{owner}/{repo}/contents/{path}`],deleteInvitation:[`DELETE /repos/{owner}/{repo}/invitations/{invitation_id}`],deleteOrgRuleset:[`DELETE /orgs/{org}/rulesets/{ruleset_id}`],deletePagesSite:[`DELETE /repos/{owner}/{repo}/pages`],deletePullRequestReviewProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],deleteRelease:[`DELETE /repos/{owner}/{repo}/releases/{release_id}`],deleteReleaseAsset:[`DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}`],deleteRepoRuleset:[`DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}`],deleteWebhook:[`DELETE /repos/{owner}/{repo}/hooks/{hook_id}`],disableAutomatedSecurityFixes:[`DELETE /repos/{owner}/{repo}/automated-security-fixes`],disableDeploymentProtectionRule:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}`],disableImmutableReleases:[`DELETE /repos/{owner}/{repo}/immutable-releases`],disablePrivateVulnerabilityReporting:[`DELETE /repos/{owner}/{repo}/private-vulnerability-reporting`],disableVulnerabilityAlerts:[`DELETE /repos/{owner}/{repo}/vulnerability-alerts`],downloadArchive:[`GET /repos/{owner}/{repo}/zipball/{ref}`,{},{renamed:[`repos`,`downloadZipballArchive`]}],downloadTarballArchive:[`GET /repos/{owner}/{repo}/tarball/{ref}`],downloadZipballArchive:[`GET /repos/{owner}/{repo}/zipball/{ref}`],enableAutomatedSecurityFixes:[`PUT /repos/{owner}/{repo}/automated-security-fixes`],enableImmutableReleases:[`PUT /repos/{owner}/{repo}/immutable-releases`],enablePrivateVulnerabilityReporting:[`PUT /repos/{owner}/{repo}/private-vulnerability-reporting`],enableVulnerabilityAlerts:[`PUT /repos/{owner}/{repo}/vulnerability-alerts`],generateReleaseNotes:[`POST /repos/{owner}/{repo}/releases/generate-notes`],get:[`GET /repos/{owner}/{repo}`],getAccessRestrictions:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions`],getAdminBranchProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],getAllDeploymentProtectionRules:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules`],getAllEnvironments:[`GET /repos/{owner}/{repo}/environments`],getAllStatusCheckContexts:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`],getAllTopics:[`GET /repos/{owner}/{repo}/topics`],getAppsWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`],getAutolink:[`GET /repos/{owner}/{repo}/autolinks/{autolink_id}`],getBranch:[`GET /repos/{owner}/{repo}/branches/{branch}`],getBranchProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection`],getBranchRules:[`GET /repos/{owner}/{repo}/rules/branches/{branch}`],getClones:[`GET /repos/{owner}/{repo}/traffic/clones`],getCodeFrequencyStats:[`GET /repos/{owner}/{repo}/stats/code_frequency`],getCollaboratorPermissionLevel:[`GET /repos/{owner}/{repo}/collaborators/{username}/permission`],getCombinedStatusForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/status`],getCommit:[`GET /repos/{owner}/{repo}/commits/{ref}`],getCommitActivityStats:[`GET /repos/{owner}/{repo}/stats/commit_activity`],getCommitComment:[`GET /repos/{owner}/{repo}/comments/{comment_id}`],getCommitSignatureProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],getCommunityProfileMetrics:[`GET /repos/{owner}/{repo}/community/profile`],getContent:[`GET /repos/{owner}/{repo}/contents/{path}`],getContributorsStats:[`GET /repos/{owner}/{repo}/stats/contributors`],getCustomDeploymentProtectionRule:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}`],getDeployKey:[`GET /repos/{owner}/{repo}/keys/{key_id}`],getDeployment:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}`],getDeploymentBranchPolicy:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],getDeploymentStatus:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}`],getEnvironment:[`GET /repos/{owner}/{repo}/environments/{environment_name}`],getLatestPagesBuild:[`GET /repos/{owner}/{repo}/pages/builds/latest`],getLatestRelease:[`GET /repos/{owner}/{repo}/releases/latest`],getOrgRuleSuite:[`GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}`],getOrgRuleSuites:[`GET /orgs/{org}/rulesets/rule-suites`],getOrgRuleset:[`GET /orgs/{org}/rulesets/{ruleset_id}`],getOrgRulesets:[`GET /orgs/{org}/rulesets`],getPages:[`GET /repos/{owner}/{repo}/pages`],getPagesBuild:[`GET /repos/{owner}/{repo}/pages/builds/{build_id}`],getPagesDeployment:[`GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}`],getPagesHealthCheck:[`GET /repos/{owner}/{repo}/pages/health`],getParticipationStats:[`GET /repos/{owner}/{repo}/stats/participation`],getPullRequestReviewProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],getPunchCardStats:[`GET /repos/{owner}/{repo}/stats/punch_card`],getReadme:[`GET /repos/{owner}/{repo}/readme`],getReadmeInDirectory:[`GET /repos/{owner}/{repo}/readme/{dir}`],getRelease:[`GET /repos/{owner}/{repo}/releases/{release_id}`],getReleaseAsset:[`GET /repos/{owner}/{repo}/releases/assets/{asset_id}`],getReleaseByTag:[`GET /repos/{owner}/{repo}/releases/tags/{tag}`],getRepoRuleSuite:[`GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}`],getRepoRuleSuites:[`GET /repos/{owner}/{repo}/rulesets/rule-suites`],getRepoRuleset:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}`],getRepoRulesetHistory:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history`],getRepoRulesetVersion:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}`],getRepoRulesets:[`GET /repos/{owner}/{repo}/rulesets`],getStatusChecksProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],getTeamsWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`],getTopPaths:[`GET /repos/{owner}/{repo}/traffic/popular/paths`],getTopReferrers:[`GET /repos/{owner}/{repo}/traffic/popular/referrers`],getUsersWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`],getViews:[`GET /repos/{owner}/{repo}/traffic/views`],getWebhook:[`GET /repos/{owner}/{repo}/hooks/{hook_id}`],getWebhookConfigForRepo:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/config`],getWebhookDelivery:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}`],listActivities:[`GET /repos/{owner}/{repo}/activity`],listAttestations:[`GET /repos/{owner}/{repo}/attestations/{subject_digest}`],listAutolinks:[`GET /repos/{owner}/{repo}/autolinks`],listBranches:[`GET /repos/{owner}/{repo}/branches`],listBranchesForHeadCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head`],listCollaborators:[`GET /repos/{owner}/{repo}/collaborators`],listCommentsForCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/comments`],listCommitCommentsForRepo:[`GET /repos/{owner}/{repo}/comments`],listCommitStatusesForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/statuses`],listCommits:[`GET /repos/{owner}/{repo}/commits`],listContributors:[`GET /repos/{owner}/{repo}/contributors`],listCustomDeploymentRuleIntegrations:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps`],listDeployKeys:[`GET /repos/{owner}/{repo}/keys`],listDeploymentBranchPolicies:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies`],listDeploymentStatuses:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses`],listDeployments:[`GET /repos/{owner}/{repo}/deployments`],listForAuthenticatedUser:[`GET /user/repos`],listForOrg:[`GET /orgs/{org}/repos`],listForUser:[`GET /users/{username}/repos`],listForks:[`GET /repos/{owner}/{repo}/forks`],listInvitations:[`GET /repos/{owner}/{repo}/invitations`],listInvitationsForAuthenticatedUser:[`GET /user/repository_invitations`],listLanguages:[`GET /repos/{owner}/{repo}/languages`],listPagesBuilds:[`GET /repos/{owner}/{repo}/pages/builds`],listPublic:[`GET /repositories`],listPullRequestsAssociatedWithCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls`],listReleaseAssets:[`GET /repos/{owner}/{repo}/releases/{release_id}/assets`],listReleases:[`GET /repos/{owner}/{repo}/releases`],listTags:[`GET /repos/{owner}/{repo}/tags`],listTeams:[`GET /repos/{owner}/{repo}/teams`],listWebhookDeliveries:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries`],listWebhooks:[`GET /repos/{owner}/{repo}/hooks`],merge:[`POST /repos/{owner}/{repo}/merges`],mergeUpstream:[`POST /repos/{owner}/{repo}/merge-upstream`],pingWebhook:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/pings`],redeliverWebhookDelivery:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts`],removeAppAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],removeCollaborator:[`DELETE /repos/{owner}/{repo}/collaborators/{username}`],removeStatusCheckContexts:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],removeStatusCheckProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],removeTeamAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],removeUserAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],renameBranch:[`POST /repos/{owner}/{repo}/branches/{branch}/rename`],replaceAllTopics:[`PUT /repos/{owner}/{repo}/topics`],requestPagesBuild:[`POST /repos/{owner}/{repo}/pages/builds`],setAdminBranchProtection:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],setAppAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],setStatusCheckContexts:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],setTeamAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],setUserAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],testPushWebhook:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/tests`],transfer:[`POST /repos/{owner}/{repo}/transfer`],update:[`PATCH /repos/{owner}/{repo}`],updateBranchProtection:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection`],updateCommitComment:[`PATCH /repos/{owner}/{repo}/comments/{comment_id}`],updateDeploymentBranchPolicy:[`PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],updateInformationAboutPagesSite:[`PUT /repos/{owner}/{repo}/pages`],updateInvitation:[`PATCH /repos/{owner}/{repo}/invitations/{invitation_id}`],updateOrgRuleset:[`PUT /orgs/{org}/rulesets/{ruleset_id}`],updatePullRequestReviewProtection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],updateRelease:[`PATCH /repos/{owner}/{repo}/releases/{release_id}`],updateReleaseAsset:[`PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}`],updateRepoRuleset:[`PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}`],updateStatusCheckPotection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`,{},{renamed:[`repos`,`updateStatusCheckProtection`]}],updateStatusCheckProtection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],updateWebhook:[`PATCH /repos/{owner}/{repo}/hooks/{hook_id}`],updateWebhookConfigForRepo:[`PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config`],uploadReleaseAsset:[`POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}`,{baseUrl:`https://uploads.github.com`}]},search:{code:[`GET /search/code`],commits:[`GET /search/commits`],issuesAndPullRequests:[`GET /search/issues`],labels:[`GET /search/labels`],repos:[`GET /search/repositories`],topics:[`GET /search/topics`],users:[`GET /search/users`]},secretScanning:{createPushProtectionBypass:[`POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses`],getAlert:[`GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}`],getScanHistory:[`GET /repos/{owner}/{repo}/secret-scanning/scan-history`],listAlertsForOrg:[`GET /orgs/{org}/secret-scanning/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/secret-scanning/alerts`],listLocationsForAlert:[`GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations`],listOrgPatternConfigs:[`GET /orgs/{org}/secret-scanning/pattern-configurations`],updateAlert:[`PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}`],updateOrgPatternConfigs:[`PATCH /orgs/{org}/secret-scanning/pattern-configurations`]},securityAdvisories:{createFork:[`POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks`],createPrivateVulnerabilityReport:[`POST /repos/{owner}/{repo}/security-advisories/reports`],createRepositoryAdvisory:[`POST /repos/{owner}/{repo}/security-advisories`],createRepositoryAdvisoryCveRequest:[`POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve`],getGlobalAdvisory:[`GET /advisories/{ghsa_id}`],getRepositoryAdvisory:[`GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}`],listGlobalAdvisories:[`GET /advisories`],listOrgRepositoryAdvisories:[`GET /orgs/{org}/security-advisories`],listRepositoryAdvisories:[`GET /repos/{owner}/{repo}/security-advisories`],updateRepositoryAdvisory:[`PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}`]},teams:{addOrUpdateMembershipForUserInOrg:[`PUT /orgs/{org}/teams/{team_slug}/memberships/{username}`],addOrUpdateRepoPermissionsInOrg:[`PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],checkPermissionsForRepoInOrg:[`GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],create:[`POST /orgs/{org}/teams`],createDiscussionCommentInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments`],createDiscussionInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions`],deleteDiscussionCommentInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],deleteDiscussionInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],deleteInOrg:[`DELETE /orgs/{org}/teams/{team_slug}`],getByName:[`GET /orgs/{org}/teams/{team_slug}`],getDiscussionCommentInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],getDiscussionInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],getMembershipForUserInOrg:[`GET /orgs/{org}/teams/{team_slug}/memberships/{username}`],list:[`GET /orgs/{org}/teams`],listChildInOrg:[`GET /orgs/{org}/teams/{team_slug}/teams`],listDiscussionCommentsInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments`],listDiscussionsInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions`],listForAuthenticatedUser:[`GET /user/teams`],listMembersInOrg:[`GET /orgs/{org}/teams/{team_slug}/members`],listPendingInvitationsInOrg:[`GET /orgs/{org}/teams/{team_slug}/invitations`],listReposInOrg:[`GET /orgs/{org}/teams/{team_slug}/repos`],removeMembershipForUserInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}`],removeRepoInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],updateDiscussionCommentInOrg:[`PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],updateDiscussionInOrg:[`PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],updateInOrg:[`PATCH /orgs/{org}/teams/{team_slug}`]},users:{addEmailForAuthenticated:[`POST /user/emails`,{},{renamed:[`users`,`addEmailForAuthenticatedUser`]}],addEmailForAuthenticatedUser:[`POST /user/emails`],addSocialAccountForAuthenticatedUser:[`POST /user/social_accounts`],block:[`PUT /user/blocks/{username}`],checkBlocked:[`GET /user/blocks/{username}`],checkFollowingForUser:[`GET /users/{username}/following/{target_user}`],checkPersonIsFollowedByAuthenticated:[`GET /user/following/{username}`],createGpgKeyForAuthenticated:[`POST /user/gpg_keys`,{},{renamed:[`users`,`createGpgKeyForAuthenticatedUser`]}],createGpgKeyForAuthenticatedUser:[`POST /user/gpg_keys`],createPublicSshKeyForAuthenticated:[`POST /user/keys`,{},{renamed:[`users`,`createPublicSshKeyForAuthenticatedUser`]}],createPublicSshKeyForAuthenticatedUser:[`POST /user/keys`],createSshSigningKeyForAuthenticatedUser:[`POST /user/ssh_signing_keys`],deleteAttestationsBulk:[`POST /users/{username}/attestations/delete-request`],deleteAttestationsById:[`DELETE /users/{username}/attestations/{attestation_id}`],deleteAttestationsBySubjectDigest:[`DELETE /users/{username}/attestations/digest/{subject_digest}`],deleteEmailForAuthenticated:[`DELETE /user/emails`,{},{renamed:[`users`,`deleteEmailForAuthenticatedUser`]}],deleteEmailForAuthenticatedUser:[`DELETE /user/emails`],deleteGpgKeyForAuthenticated:[`DELETE /user/gpg_keys/{gpg_key_id}`,{},{renamed:[`users`,`deleteGpgKeyForAuthenticatedUser`]}],deleteGpgKeyForAuthenticatedUser:[`DELETE /user/gpg_keys/{gpg_key_id}`],deletePublicSshKeyForAuthenticated:[`DELETE /user/keys/{key_id}`,{},{renamed:[`users`,`deletePublicSshKeyForAuthenticatedUser`]}],deletePublicSshKeyForAuthenticatedUser:[`DELETE /user/keys/{key_id}`],deleteSocialAccountForAuthenticatedUser:[`DELETE /user/social_accounts`],deleteSshSigningKeyForAuthenticatedUser:[`DELETE /user/ssh_signing_keys/{ssh_signing_key_id}`],follow:[`PUT /user/following/{username}`],getAuthenticated:[`GET /user`],getById:[`GET /user/{account_id}`],getByUsername:[`GET /users/{username}`],getContextForUser:[`GET /users/{username}/hovercard`],getGpgKeyForAuthenticated:[`GET /user/gpg_keys/{gpg_key_id}`,{},{renamed:[`users`,`getGpgKeyForAuthenticatedUser`]}],getGpgKeyForAuthenticatedUser:[`GET /user/gpg_keys/{gpg_key_id}`],getPublicSshKeyForAuthenticated:[`GET /user/keys/{key_id}`,{},{renamed:[`users`,`getPublicSshKeyForAuthenticatedUser`]}],getPublicSshKeyForAuthenticatedUser:[`GET /user/keys/{key_id}`],getSshSigningKeyForAuthenticatedUser:[`GET /user/ssh_signing_keys/{ssh_signing_key_id}`],list:[`GET /users`],listAttestations:[`GET /users/{username}/attestations/{subject_digest}`],listAttestationsBulk:[`POST /users/{username}/attestations/bulk-list{?per_page,before,after}`],listBlockedByAuthenticated:[`GET /user/blocks`,{},{renamed:[`users`,`listBlockedByAuthenticatedUser`]}],listBlockedByAuthenticatedUser:[`GET /user/blocks`],listEmailsForAuthenticated:[`GET /user/emails`,{},{renamed:[`users`,`listEmailsForAuthenticatedUser`]}],listEmailsForAuthenticatedUser:[`GET /user/emails`],listFollowedByAuthenticated:[`GET /user/following`,{},{renamed:[`users`,`listFollowedByAuthenticatedUser`]}],listFollowedByAuthenticatedUser:[`GET /user/following`],listFollowersForAuthenticatedUser:[`GET /user/followers`],listFollowersForUser:[`GET /users/{username}/followers`],listFollowingForUser:[`GET /users/{username}/following`],listGpgKeysForAuthenticated:[`GET /user/gpg_keys`,{},{renamed:[`users`,`listGpgKeysForAuthenticatedUser`]}],listGpgKeysForAuthenticatedUser:[`GET /user/gpg_keys`],listGpgKeysForUser:[`GET /users/{username}/gpg_keys`],listPublicEmailsForAuthenticated:[`GET /user/public_emails`,{},{renamed:[`users`,`listPublicEmailsForAuthenticatedUser`]}],listPublicEmailsForAuthenticatedUser:[`GET /user/public_emails`],listPublicKeysForUser:[`GET /users/{username}/keys`],listPublicSshKeysForAuthenticated:[`GET /user/keys`,{},{renamed:[`users`,`listPublicSshKeysForAuthenticatedUser`]}],listPublicSshKeysForAuthenticatedUser:[`GET /user/keys`],listSocialAccountsForAuthenticatedUser:[`GET /user/social_accounts`],listSocialAccountsForUser:[`GET /users/{username}/social_accounts`],listSshSigningKeysForAuthenticatedUser:[`GET /user/ssh_signing_keys`],listSshSigningKeysForUser:[`GET /users/{username}/ssh_signing_keys`],setPrimaryEmailVisibilityForAuthenticated:[`PATCH /user/email/visibility`,{},{renamed:[`users`,`setPrimaryEmailVisibilityForAuthenticatedUser`]}],setPrimaryEmailVisibilityForAuthenticatedUser:[`PATCH /user/email/visibility`],unblock:[`DELETE /user/blocks/{username}`],unfollow:[`DELETE /user/following/{username}`],updateAuthenticated:[`PATCH /user`]}};const B=new Map;for(let[e,t]of Object.entries(ei))for(let[n,r]of Object.entries(t)){let[t,i,a]=r,[o,s]=t.split(/ /),c=Object.assign({method:o,url:s},i);B.has(e)||B.set(e,new Map),B.get(e).set(n,{scope:e,methodName:n,endpointDefaults:c,decorations:a})}const ti={has({scope:e},t){return B.get(e).has(t)},getOwnPropertyDescriptor(e,t){return{value:this.get(e,t),configurable:!0,writable:!0,enumerable:!0}},defineProperty(e,t,n){return Object.defineProperty(e.cache,t,n),!0},deleteProperty(e,t){return delete e.cache[t],!0},ownKeys({scope:e}){return[...B.get(e).keys()]},set(e,t,n){return e.cache[t]=n},get({octokit:e,scope:t,cache:n},r){if(n[r])return n[r];let i=B.get(t).get(r);if(!i)return;let{endpointDefaults:a,decorations:o}=i;return o?n[r]=ri(e,t,r,a,o):n[r]=e.request.defaults(a),n[r]}};function ni(e){let t={};for(let n of B.keys())t[n]=new Proxy({octokit:e,scope:n,cache:{}},ti);return t}function ri(e,t,n,r,i){let a=e.request.defaults(r);function o(...r){let o=a.endpoint.merge(...r);if(i.mapToData)return o=Object.assign({},o,{data:o[i.mapToData],[i.mapToData]:void 0}),a(o);if(i.renamed){let[r,a]=i.renamed;e.log.warn(`octokit.${t}.${n}() has been renamed to octokit.${r}.${a}()`)}if(i.deprecated&&e.log.warn(i.deprecated),i.renamedParameters){let o=a.endpoint.merge(...r);for(let[r,a]of Object.entries(i.renamedParameters))r in o&&(e.log.warn(`"${r}" parameter is deprecated for "octokit.${t}.${n}()". Use "${a}" instead`),a in o||(o[a]=o[r]),delete o[r]);return a(o)}return a(...r)}return Object.assign(o,a)}function ii(e){return{rest:ni(e)}}ii.VERSION=$r;function ai(e){let t=ni(e);return{...t,rest:t}}ai.VERSION=$r;const V=Gr.plugin(Kr,ai,Qr).defaults({userAgent:`octokit-rest.js/22.0.1`});async function oi(e,t,n){let{host:r,json:i}=e;L(r);let a=await(n??(()=>fr({message:`Enter PAT:`})))();a||(process.stderr.write(`No token provided
14
- `),process.exit(1));let o=r===`github.com`?void 0:`https://${r}/api/v3`,s=new V({auth:a,...o?{baseUrl:o}:{}}),c=`unknown`,l,u;try{let{data:e}=await s.users.getAuthenticated();c=e.login,l=e.name??void 0,u=e.email??void 0}catch{process.stderr.write(`Token validation failed
15
- `),process.exit(1)}await t.set(r,c,a,{gitProtocol:`https`,name:l,email:u}),i?process.stdout.write(`${JSON.stringify({type:`complete`,host:r,login:c})}\n`):process.stderr.write(`✓ PAT stored for ${c} on ${r}\n`)}function si(e){return new t(`pat`).description(`Store a Personal Access Token`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await oi(t,await e())})}async function ci(e,t,n=ae){let r=n(e);return r.available&&r.token?r.token:(await t.get(e))?.token??null}async function li(e,t){let{host:n,json:r}=e;L(n);let i=await ci(n,t);i??(process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new V({auth:i,...a?{baseUrl:a}:{}}),s=[];for await(let e of o.paginate.iterator(o.repos.listForAuthenticatedUser,{per_page:100,sort:`updated`}))for(let t of e.data)s.push({full_name:t.full_name,clone_url:t.clone_url,private:t.private});if(r)process.stdout.write(`${JSON.stringify({type:`repos`,host:n,repos:s})}\n`);else for(let e of s)process.stdout.write(`${e.full_name} ${e.clone_url}\n`)}function ui(e){return new t(`repos`).description(`List accessible repositories`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await li(t,await e())})}async function di(e){let{host:t}=e,{touched:n}=await re(t);if(n.length===0){process.stderr.write(`Not signed in to ${t}\n`);return}process.stderr.write(`✓ Signed out from ${t}\n`),n.includes(`keychain`)&&process.stderr.write(` cleared from OS keychain
13
+ `)}var Cr=class extends Error{constructor(e,t,n){super(Sr(n)),this.request=e,this.headers=t,this.response=n,this.errors=n.errors,this.data=n.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name=`GraphqlResponseError`;errors;data},wr=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],Tr=[`query`,`method`,`url`],Er=/\/api\/v3\/?$/;function Dr(e,t,n){if(n){if(typeof t==`string`&&`query`in n)return Promise.reject(Error(`[@octokit/graphql] "query" cannot be used as variable name`));for(let e in n)if(Tr.includes(e))return Promise.reject(Error(`[@octokit/graphql] "${e}" cannot be used as variable name`))}let r=typeof t==`string`?Object.assign({query:t},n):t,i=Object.keys(r).reduce((e,t)=>wr.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Er.test(a)&&(i.url=a.replace(Er,`/api/graphql`)),e(i).then(e=>{if(e.data.errors){let t={};for(let n of Object.keys(e.headers))t[n]=e.headers[n];throw new Cr(i,t,e.data)}return e.data.data})}function Or(e,t){let n=e.defaults(t);return Object.assign((e,t)=>Dr(n,e,t),{defaults:Or.bind(null,n),endpoint:n.endpoint})}Or(C,{headers:{"user-agent":`octokit-graphql.js/${xr} ${se()}`},method:`POST`,url:`/graphql`});function kr(e){return Or(e,{method:`POST`,url:`/graphql`})}var Ar=`(?:[a-zA-Z0-9_-]+)`,jr=`\\.`,Mr=RegExp(`^${Ar}${jr}${Ar}${jr}${Ar}$`),Nr=Mr.test.bind(Mr);async function Pr(e){let t=Nr(e),n=e.startsWith(`v1.`)||e.startsWith(`ghs_`),r=e.startsWith(`ghu_`);return{type:`token`,token:e,tokenType:t?`app`:n?`installation`:r?`user-to-server`:`oauth`}}function Fr(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Ir(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Fr(e),t(i)}var Lr=function(e){if(!e)throw Error(`[@octokit/auth-token] No token passed to createTokenAuth`);if(typeof e!=`string`)throw Error(`[@octokit/auth-token] Token passed to createTokenAuth is not a string`);return e=e.replace(/^(token|bearer) +/i,``),Object.assign(Pr.bind(null,e),{hook:Ir.bind(null,e)})};const Rr=`7.0.6`,zr=()=>{},Br=console.warn.bind(console),Vr=console.error.bind(console);function Hr(e={}){return typeof e.debug!=`function`&&(e.debug=zr),typeof e.info!=`function`&&(e.info=zr),typeof e.warn!=`function`&&(e.warn=Br),typeof e.error!=`function`&&(e.error=Vr),e}const Ur=`octokit-core.js/${Rr} ${se()}`;var Wr=class{static VERSION=Rr;static defaults(e){return class extends this{constructor(...t){let n=t[0]||{};if(typeof e==`function`){super(e(n));return}super(Object.assign({},e,n,n.userAgent&&e.userAgent?{userAgent:`${n.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(e=>!t.includes(e)))}}constructor(e={}){let t=new br.Collection,n={baseUrl:C.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,`request`)}),mediaType:{previews:[],format:``}};if(n.headers[`user-agent`]=e.userAgent?`${e.userAgent} ${Ur}`:Ur,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=C.defaults(n),this.graphql=kr(this.request).defaults(n),this.log=Hr(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...r}=e,i=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},e.auth));t.wrap(`request`,i.hook),this.auth=i}else if(!e.auth)this.auth=async()=>({type:`unauthenticated`});else{let n=Lr(e.auth);t.wrap(`request`,n.hook),this.auth=n}let r=this.constructor;for(let t=0;t<r.plugins.length;++t)Object.assign(this,r.plugins[t](this,e))}request;graphql;log;hook;auth};function Gr(e){e.hook.wrap(`request`,(t,n)=>{e.log.debug(`request`,n);let r=Date.now(),i=e.request.endpoint.parse(n),a=i.url.replace(n.baseUrl,``);return t(n).then(t=>{let n=t.headers[`x-github-request-id`];return e.log.info(`${i.method} ${a} - ${t.status} with id ${n} in ${Date.now()-r}ms`),t}).catch(t=>{let n=t.response?.headers[`x-github-request-id`]||`UNKNOWN`;throw e.log.error(`${i.method} ${a} - ${t.status} with id ${n} in ${Date.now()-r}ms`),t})})}Gr.VERSION=`6.0.0`;var Kr=`0.0.0-development`;function qr(e){if(!e.data)return{...e,data:[]};if(!((`total_count`in e.data||`total_commits`in e.data)&&!(`url`in e.data)))return e;let t=e.data.incomplete_results,n=e.data.repository_selection,r=e.data.total_count,i=e.data.total_commits;delete e.data.incomplete_results,delete e.data.repository_selection,delete e.data.total_count,delete e.data.total_commits;let a=Object.keys(e.data)[0];return e.data=e.data[a],t!==void 0&&(e.data.incomplete_results=t),n!==void 0&&(e.data.repository_selection=n),e.data.total_count=r,e.data.total_commits=i,e}function Jr(e,t,n){let r=typeof t==`function`?t.endpoint(n):e.request.endpoint(t,n),i=typeof t==`function`?t:e.request,a=r.method,o=r.headers,s=r.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!s)return{done:!0};try{let e=qr(await i({method:a,url:s,headers:o}));if(s=((e.headers.link||``).match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!s&&`total_commits`in e.data){let t=new URL(e.url),n=t.searchParams,r=parseInt(n.get(`page`)||`1`,10);r*parseInt(n.get(`per_page`)||`250`,10)<e.data.total_commits&&(n.set(`page`,String(r+1)),s=t.toString())}return{value:e}}catch(e){if(e.status!==409)throw e;return s=``,{value:{status:200,headers:{},data:[]}}}}})}}function Yr(e,t,n,r){return typeof n==`function`&&(r=n,n=void 0),Xr(e,[],Jr(e,t,n)[Symbol.asyncIterator](),r)}function Xr(e,t,n,r){return n.next().then(i=>{if(i.done)return t;let a=!1;function o(){a=!0}return t=t.concat(r?r(i.value,o):i.value.data),a?t:Xr(e,t,n,r)})}Object.assign(Yr,{iterator:Jr});function Zr(e){return{paginate:Object.assign(Yr.bind(null,e),{iterator:Jr.bind(null,e)})}}Zr.VERSION=Kr;const Qr=`17.0.0`;var $r={actions:{addCustomLabelsToSelfHostedRunnerForOrg:[`POST /orgs/{org}/actions/runners/{runner_id}/labels`],addCustomLabelsToSelfHostedRunnerForRepo:[`POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],addRepoAccessToSelfHostedRunnerGroupInOrg:[`PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}`],addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}`],addSelectedRepoToOrgVariable:[`PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}`],approveWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve`],cancelWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel`],createEnvironmentVariable:[`POST /repos/{owner}/{repo}/environments/{environment_name}/variables`],createHostedRunnerForOrg:[`POST /orgs/{org}/actions/hosted-runners`],createOrUpdateEnvironmentSecret:[`PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}`],createOrgVariable:[`POST /orgs/{org}/actions/variables`],createRegistrationTokenForOrg:[`POST /orgs/{org}/actions/runners/registration-token`],createRegistrationTokenForRepo:[`POST /repos/{owner}/{repo}/actions/runners/registration-token`],createRemoveTokenForOrg:[`POST /orgs/{org}/actions/runners/remove-token`],createRemoveTokenForRepo:[`POST /repos/{owner}/{repo}/actions/runners/remove-token`],createRepoVariable:[`POST /repos/{owner}/{repo}/actions/variables`],createWorkflowDispatch:[`POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches`],deleteActionsCacheById:[`DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}`],deleteActionsCacheByKey:[`DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}`],deleteArtifact:[`DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}`],deleteCustomImageFromOrg:[`DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}`],deleteCustomImageVersionFromOrg:[`DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}`],deleteEnvironmentSecret:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],deleteEnvironmentVariable:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],deleteHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],deleteOrgSecret:[`DELETE /orgs/{org}/actions/secrets/{secret_name}`],deleteOrgVariable:[`DELETE /orgs/{org}/actions/variables/{name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}`],deleteRepoVariable:[`DELETE /repos/{owner}/{repo}/actions/variables/{name}`],deleteSelfHostedRunnerFromOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}`],deleteSelfHostedRunnerFromRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}`],deleteWorkflowRun:[`DELETE /repos/{owner}/{repo}/actions/runs/{run_id}`],deleteWorkflowRunLogs:[`DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs`],disableSelectedRepositoryGithubActionsOrganization:[`DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}`],disableWorkflow:[`PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable`],downloadArtifact:[`GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}`],downloadJobLogsForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs`],downloadWorkflowRunAttemptLogs:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs`],downloadWorkflowRunLogs:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs`],enableSelectedRepositoryGithubActionsOrganization:[`PUT /orgs/{org}/actions/permissions/repositories/{repository_id}`],enableWorkflow:[`PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable`],forceCancelWorkflowRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel`],generateRunnerJitconfigForOrg:[`POST /orgs/{org}/actions/runners/generate-jitconfig`],generateRunnerJitconfigForRepo:[`POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig`],getActionsCacheList:[`GET /repos/{owner}/{repo}/actions/caches`],getActionsCacheUsage:[`GET /repos/{owner}/{repo}/actions/cache/usage`],getActionsCacheUsageByRepoForOrg:[`GET /orgs/{org}/actions/cache/usage-by-repository`],getActionsCacheUsageForOrg:[`GET /orgs/{org}/actions/cache/usage`],getAllowedActionsOrganization:[`GET /orgs/{org}/actions/permissions/selected-actions`],getAllowedActionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions/selected-actions`],getArtifact:[`GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}`],getCustomImageForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}`],getCustomImageVersionForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}`],getCustomOidcSubClaimForRepo:[`GET /repos/{owner}/{repo}/actions/oidc/customization/sub`],getEnvironmentPublicKey:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key`],getEnvironmentSecret:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}`],getEnvironmentVariable:[`GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],getGithubActionsDefaultWorkflowPermissionsOrganization:[`GET /orgs/{org}/actions/permissions/workflow`],getGithubActionsDefaultWorkflowPermissionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions/workflow`],getGithubActionsPermissionsOrganization:[`GET /orgs/{org}/actions/permissions`],getGithubActionsPermissionsRepository:[`GET /repos/{owner}/{repo}/actions/permissions`],getHostedRunnerForOrg:[`GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],getHostedRunnersGithubOwnedImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/github-owned`],getHostedRunnersLimitsForOrg:[`GET /orgs/{org}/actions/hosted-runners/limits`],getHostedRunnersMachineSpecsForOrg:[`GET /orgs/{org}/actions/hosted-runners/machine-sizes`],getHostedRunnersPartnerImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/partner`],getHostedRunnersPlatformsForOrg:[`GET /orgs/{org}/actions/hosted-runners/platforms`],getJobForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/jobs/{job_id}`],getOrgPublicKey:[`GET /orgs/{org}/actions/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/actions/secrets/{secret_name}`],getOrgVariable:[`GET /orgs/{org}/actions/variables/{name}`],getPendingDeploymentsForRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`],getRepoPermissions:[`GET /repos/{owner}/{repo}/actions/permissions`,{},{renamed:[`actions`,`getGithubActionsPermissionsRepository`]}],getRepoPublicKey:[`GET /repos/{owner}/{repo}/actions/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/actions/secrets/{secret_name}`],getRepoVariable:[`GET /repos/{owner}/{repo}/actions/variables/{name}`],getReviewsForRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals`],getSelfHostedRunnerForOrg:[`GET /orgs/{org}/actions/runners/{runner_id}`],getSelfHostedRunnerForRepo:[`GET /repos/{owner}/{repo}/actions/runners/{runner_id}`],getWorkflow:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}`],getWorkflowAccessToRepository:[`GET /repos/{owner}/{repo}/actions/permissions/access`],getWorkflowRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}`],getWorkflowRunAttempt:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}`],getWorkflowRunUsage:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing`],getWorkflowUsage:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing`],listArtifactsForRepo:[`GET /repos/{owner}/{repo}/actions/artifacts`],listCustomImageVersionsForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions`],listCustomImagesForOrg:[`GET /orgs/{org}/actions/hosted-runners/images/custom`],listEnvironmentSecrets:[`GET /repos/{owner}/{repo}/environments/{environment_name}/secrets`],listEnvironmentVariables:[`GET /repos/{owner}/{repo}/environments/{environment_name}/variables`],listGithubHostedRunnersInGroupForOrg:[`GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners`],listHostedRunnersForOrg:[`GET /orgs/{org}/actions/hosted-runners`],listJobsForWorkflowRun:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs`],listJobsForWorkflowRunAttempt:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs`],listLabelsForSelfHostedRunnerForOrg:[`GET /orgs/{org}/actions/runners/{runner_id}/labels`],listLabelsForSelfHostedRunnerForRepo:[`GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],listOrgSecrets:[`GET /orgs/{org}/actions/secrets`],listOrgVariables:[`GET /orgs/{org}/actions/variables`],listRepoOrganizationSecrets:[`GET /repos/{owner}/{repo}/actions/organization-secrets`],listRepoOrganizationVariables:[`GET /repos/{owner}/{repo}/actions/organization-variables`],listRepoSecrets:[`GET /repos/{owner}/{repo}/actions/secrets`],listRepoVariables:[`GET /repos/{owner}/{repo}/actions/variables`],listRepoWorkflows:[`GET /repos/{owner}/{repo}/actions/workflows`],listRunnerApplicationsForOrg:[`GET /orgs/{org}/actions/runners/downloads`],listRunnerApplicationsForRepo:[`GET /repos/{owner}/{repo}/actions/runners/downloads`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/actions/secrets/{secret_name}/repositories`],listSelectedReposForOrgVariable:[`GET /orgs/{org}/actions/variables/{name}/repositories`],listSelectedRepositoriesEnabledGithubActionsOrganization:[`GET /orgs/{org}/actions/permissions/repositories`],listSelfHostedRunnersForOrg:[`GET /orgs/{org}/actions/runners`],listSelfHostedRunnersForRepo:[`GET /repos/{owner}/{repo}/actions/runners`],listWorkflowRunArtifacts:[`GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts`],listWorkflowRuns:[`GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs`],listWorkflowRunsForRepo:[`GET /repos/{owner}/{repo}/actions/runs`],reRunJobForWorkflowRun:[`POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun`],reRunWorkflow:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun`],reRunWorkflowFailedJobs:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs`],removeAllCustomLabelsFromSelfHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}/labels`],removeAllCustomLabelsFromSelfHostedRunnerForRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],removeCustomLabelFromSelfHostedRunnerForOrg:[`DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}`],removeCustomLabelFromSelfHostedRunnerForRepo:[`DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}`],removeSelectedRepoFromOrgVariable:[`DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}`],reviewCustomGatesForRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule`],reviewPendingDeploymentsForRun:[`POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments`],setAllowedActionsOrganization:[`PUT /orgs/{org}/actions/permissions/selected-actions`],setAllowedActionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/selected-actions`],setCustomLabelsForSelfHostedRunnerForOrg:[`PUT /orgs/{org}/actions/runners/{runner_id}/labels`],setCustomLabelsForSelfHostedRunnerForRepo:[`PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels`],setCustomOidcSubClaimForRepo:[`PUT /repos/{owner}/{repo}/actions/oidc/customization/sub`],setGithubActionsDefaultWorkflowPermissionsOrganization:[`PUT /orgs/{org}/actions/permissions/workflow`],setGithubActionsDefaultWorkflowPermissionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/workflow`],setGithubActionsPermissionsOrganization:[`PUT /orgs/{org}/actions/permissions`],setGithubActionsPermissionsRepository:[`PUT /repos/{owner}/{repo}/actions/permissions`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/actions/secrets/{secret_name}/repositories`],setSelectedReposForOrgVariable:[`PUT /orgs/{org}/actions/variables/{name}/repositories`],setSelectedRepositoriesEnabledGithubActionsOrganization:[`PUT /orgs/{org}/actions/permissions/repositories`],setWorkflowAccessToRepository:[`PUT /repos/{owner}/{repo}/actions/permissions/access`],updateEnvironmentVariable:[`PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}`],updateHostedRunnerForOrg:[`PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}`],updateOrgVariable:[`PATCH /orgs/{org}/actions/variables/{name}`],updateRepoVariable:[`PATCH /repos/{owner}/{repo}/actions/variables/{name}`]},activity:{checkRepoIsStarredByAuthenticatedUser:[`GET /user/starred/{owner}/{repo}`],deleteRepoSubscription:[`DELETE /repos/{owner}/{repo}/subscription`],deleteThreadSubscription:[`DELETE /notifications/threads/{thread_id}/subscription`],getFeeds:[`GET /feeds`],getRepoSubscription:[`GET /repos/{owner}/{repo}/subscription`],getThread:[`GET /notifications/threads/{thread_id}`],getThreadSubscriptionForAuthenticatedUser:[`GET /notifications/threads/{thread_id}/subscription`],listEventsForAuthenticatedUser:[`GET /users/{username}/events`],listNotificationsForAuthenticatedUser:[`GET /notifications`],listOrgEventsForAuthenticatedUser:[`GET /users/{username}/events/orgs/{org}`],listPublicEvents:[`GET /events`],listPublicEventsForRepoNetwork:[`GET /networks/{owner}/{repo}/events`],listPublicEventsForUser:[`GET /users/{username}/events/public`],listPublicOrgEvents:[`GET /orgs/{org}/events`],listReceivedEventsForUser:[`GET /users/{username}/received_events`],listReceivedPublicEventsForUser:[`GET /users/{username}/received_events/public`],listRepoEvents:[`GET /repos/{owner}/{repo}/events`],listRepoNotificationsForAuthenticatedUser:[`GET /repos/{owner}/{repo}/notifications`],listReposStarredByAuthenticatedUser:[`GET /user/starred`],listReposStarredByUser:[`GET /users/{username}/starred`],listReposWatchedByUser:[`GET /users/{username}/subscriptions`],listStargazersForRepo:[`GET /repos/{owner}/{repo}/stargazers`],listWatchedReposForAuthenticatedUser:[`GET /user/subscriptions`],listWatchersForRepo:[`GET /repos/{owner}/{repo}/subscribers`],markNotificationsAsRead:[`PUT /notifications`],markRepoNotificationsAsRead:[`PUT /repos/{owner}/{repo}/notifications`],markThreadAsDone:[`DELETE /notifications/threads/{thread_id}`],markThreadAsRead:[`PATCH /notifications/threads/{thread_id}`],setRepoSubscription:[`PUT /repos/{owner}/{repo}/subscription`],setThreadSubscription:[`PUT /notifications/threads/{thread_id}/subscription`],starRepoForAuthenticatedUser:[`PUT /user/starred/{owner}/{repo}`],unstarRepoForAuthenticatedUser:[`DELETE /user/starred/{owner}/{repo}`]},apps:{addRepoToInstallation:[`PUT /user/installations/{installation_id}/repositories/{repository_id}`,{},{renamed:[`apps`,`addRepoToInstallationForAuthenticatedUser`]}],addRepoToInstallationForAuthenticatedUser:[`PUT /user/installations/{installation_id}/repositories/{repository_id}`],checkToken:[`POST /applications/{client_id}/token`],createFromManifest:[`POST /app-manifests/{code}/conversions`],createInstallationAccessToken:[`POST /app/installations/{installation_id}/access_tokens`],deleteAuthorization:[`DELETE /applications/{client_id}/grant`],deleteInstallation:[`DELETE /app/installations/{installation_id}`],deleteToken:[`DELETE /applications/{client_id}/token`],getAuthenticated:[`GET /app`],getBySlug:[`GET /apps/{app_slug}`],getInstallation:[`GET /app/installations/{installation_id}`],getOrgInstallation:[`GET /orgs/{org}/installation`],getRepoInstallation:[`GET /repos/{owner}/{repo}/installation`],getSubscriptionPlanForAccount:[`GET /marketplace_listing/accounts/{account_id}`],getSubscriptionPlanForAccountStubbed:[`GET /marketplace_listing/stubbed/accounts/{account_id}`],getUserInstallation:[`GET /users/{username}/installation`],getWebhookConfigForApp:[`GET /app/hook/config`],getWebhookDelivery:[`GET /app/hook/deliveries/{delivery_id}`],listAccountsForPlan:[`GET /marketplace_listing/plans/{plan_id}/accounts`],listAccountsForPlanStubbed:[`GET /marketplace_listing/stubbed/plans/{plan_id}/accounts`],listInstallationReposForAuthenticatedUser:[`GET /user/installations/{installation_id}/repositories`],listInstallationRequestsForAuthenticatedApp:[`GET /app/installation-requests`],listInstallations:[`GET /app/installations`],listInstallationsForAuthenticatedUser:[`GET /user/installations`],listPlans:[`GET /marketplace_listing/plans`],listPlansStubbed:[`GET /marketplace_listing/stubbed/plans`],listReposAccessibleToInstallation:[`GET /installation/repositories`],listSubscriptionsForAuthenticatedUser:[`GET /user/marketplace_purchases`],listSubscriptionsForAuthenticatedUserStubbed:[`GET /user/marketplace_purchases/stubbed`],listWebhookDeliveries:[`GET /app/hook/deliveries`],redeliverWebhookDelivery:[`POST /app/hook/deliveries/{delivery_id}/attempts`],removeRepoFromInstallation:[`DELETE /user/installations/{installation_id}/repositories/{repository_id}`,{},{renamed:[`apps`,`removeRepoFromInstallationForAuthenticatedUser`]}],removeRepoFromInstallationForAuthenticatedUser:[`DELETE /user/installations/{installation_id}/repositories/{repository_id}`],resetToken:[`PATCH /applications/{client_id}/token`],revokeInstallationAccessToken:[`DELETE /installation/token`],scopeToken:[`POST /applications/{client_id}/token/scoped`],suspendInstallation:[`PUT /app/installations/{installation_id}/suspended`],unsuspendInstallation:[`DELETE /app/installations/{installation_id}/suspended`],updateWebhookConfigForApp:[`PATCH /app/hook/config`]},billing:{getGithubActionsBillingOrg:[`GET /orgs/{org}/settings/billing/actions`],getGithubActionsBillingUser:[`GET /users/{username}/settings/billing/actions`],getGithubBillingPremiumRequestUsageReportOrg:[`GET /organizations/{org}/settings/billing/premium_request/usage`],getGithubBillingPremiumRequestUsageReportUser:[`GET /users/{username}/settings/billing/premium_request/usage`],getGithubBillingUsageReportOrg:[`GET /organizations/{org}/settings/billing/usage`],getGithubBillingUsageReportUser:[`GET /users/{username}/settings/billing/usage`],getGithubPackagesBillingOrg:[`GET /orgs/{org}/settings/billing/packages`],getGithubPackagesBillingUser:[`GET /users/{username}/settings/billing/packages`],getSharedStorageBillingOrg:[`GET /orgs/{org}/settings/billing/shared-storage`],getSharedStorageBillingUser:[`GET /users/{username}/settings/billing/shared-storage`]},campaigns:{createCampaign:[`POST /orgs/{org}/campaigns`],deleteCampaign:[`DELETE /orgs/{org}/campaigns/{campaign_number}`],getCampaignSummary:[`GET /orgs/{org}/campaigns/{campaign_number}`],listOrgCampaigns:[`GET /orgs/{org}/campaigns`],updateCampaign:[`PATCH /orgs/{org}/campaigns/{campaign_number}`]},checks:{create:[`POST /repos/{owner}/{repo}/check-runs`],createSuite:[`POST /repos/{owner}/{repo}/check-suites`],get:[`GET /repos/{owner}/{repo}/check-runs/{check_run_id}`],getSuite:[`GET /repos/{owner}/{repo}/check-suites/{check_suite_id}`],listAnnotations:[`GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations`],listForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/check-runs`],listForSuite:[`GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs`],listSuitesForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/check-suites`],rerequestRun:[`POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest`],rerequestSuite:[`POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest`],setSuitesPreferences:[`PATCH /repos/{owner}/{repo}/check-suites/preferences`],update:[`PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}`]},codeScanning:{commitAutofix:[`POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits`],createAutofix:[`POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix`],createVariantAnalysis:[`POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses`],deleteAnalysis:[`DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}`],deleteCodeqlDatabase:[`DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}`],getAlert:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}`,{},{renamedParameters:{alert_id:`alert_number`}}],getAnalysis:[`GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}`],getAutofix:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix`],getCodeqlDatabase:[`GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}`],getDefaultSetup:[`GET /repos/{owner}/{repo}/code-scanning/default-setup`],getSarif:[`GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}`],getVariantAnalysis:[`GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}`],getVariantAnalysisRepoTask:[`GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}`],listAlertInstances:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances`],listAlertsForOrg:[`GET /orgs/{org}/code-scanning/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/code-scanning/alerts`],listAlertsInstances:[`GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances`,{},{renamed:[`codeScanning`,`listAlertInstances`]}],listCodeqlDatabases:[`GET /repos/{owner}/{repo}/code-scanning/codeql/databases`],listRecentAnalyses:[`GET /repos/{owner}/{repo}/code-scanning/analyses`],updateAlert:[`PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}`],updateDefaultSetup:[`PATCH /repos/{owner}/{repo}/code-scanning/default-setup`],uploadSarif:[`POST /repos/{owner}/{repo}/code-scanning/sarifs`]},codeSecurity:{attachConfiguration:[`POST /orgs/{org}/code-security/configurations/{configuration_id}/attach`],attachEnterpriseConfiguration:[`POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach`],createConfiguration:[`POST /orgs/{org}/code-security/configurations`],createConfigurationForEnterprise:[`POST /enterprises/{enterprise}/code-security/configurations`],deleteConfiguration:[`DELETE /orgs/{org}/code-security/configurations/{configuration_id}`],deleteConfigurationForEnterprise:[`DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}`],detachConfiguration:[`DELETE /orgs/{org}/code-security/configurations/detach`],getConfiguration:[`GET /orgs/{org}/code-security/configurations/{configuration_id}`],getConfigurationForRepository:[`GET /repos/{owner}/{repo}/code-security-configuration`],getConfigurationsForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations`],getConfigurationsForOrg:[`GET /orgs/{org}/code-security/configurations`],getDefaultConfigurations:[`GET /orgs/{org}/code-security/configurations/defaults`],getDefaultConfigurationsForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations/defaults`],getRepositoriesForConfiguration:[`GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories`],getRepositoriesForEnterpriseConfiguration:[`GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories`],getSingleConfigurationForEnterprise:[`GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}`],setConfigurationAsDefault:[`PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults`],setConfigurationAsDefaultForEnterprise:[`PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults`],updateConfiguration:[`PATCH /orgs/{org}/code-security/configurations/{configuration_id}`],updateEnterpriseConfiguration:[`PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}`]},codesOfConduct:{getAllCodesOfConduct:[`GET /codes_of_conduct`],getConductCode:[`GET /codes_of_conduct/{key}`]},codespaces:{addRepositoryForSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}`],addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}`],checkPermissionsForDevcontainer:[`GET /repos/{owner}/{repo}/codespaces/permissions_check`],codespaceMachinesForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}/machines`],createForAuthenticatedUser:[`POST /user/codespaces`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],createOrUpdateSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}`],createWithPrForAuthenticatedUser:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces`],createWithRepoForAuthenticatedUser:[`POST /repos/{owner}/{repo}/codespaces`],deleteForAuthenticatedUser:[`DELETE /user/codespaces/{codespace_name}`],deleteFromOrganization:[`DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}`],deleteOrgSecret:[`DELETE /orgs/{org}/codespaces/secrets/{secret_name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],deleteSecretForAuthenticatedUser:[`DELETE /user/codespaces/secrets/{secret_name}`],exportForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/exports`],getCodespacesForUserInOrg:[`GET /orgs/{org}/members/{username}/codespaces`],getExportDetailsForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}/exports/{export_id}`],getForAuthenticatedUser:[`GET /user/codespaces/{codespace_name}`],getOrgPublicKey:[`GET /orgs/{org}/codespaces/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/codespaces/secrets/{secret_name}`],getPublicKeyForAuthenticatedUser:[`GET /user/codespaces/secrets/public-key`],getRepoPublicKey:[`GET /repos/{owner}/{repo}/codespaces/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}`],getSecretForAuthenticatedUser:[`GET /user/codespaces/secrets/{secret_name}`],listDevcontainersInRepositoryForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/devcontainers`],listForAuthenticatedUser:[`GET /user/codespaces`],listInOrganization:[`GET /orgs/{org}/codespaces`,{},{renamedParameters:{org_id:`org`}}],listInRepositoryForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces`],listOrgSecrets:[`GET /orgs/{org}/codespaces/secrets`],listRepoSecrets:[`GET /repos/{owner}/{repo}/codespaces/secrets`],listRepositoriesForSecretForAuthenticatedUser:[`GET /user/codespaces/secrets/{secret_name}/repositories`],listSecretsForAuthenticatedUser:[`GET /user/codespaces/secrets`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories`],preFlightWithRepoForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/new`],publishForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/publish`],removeRepositoryForSecretForAuthenticatedUser:[`DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}`],repoMachinesForAuthenticatedUser:[`GET /repos/{owner}/{repo}/codespaces/machines`],setRepositoriesForSecretForAuthenticatedUser:[`PUT /user/codespaces/secrets/{secret_name}/repositories`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories`],startForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/start`],stopForAuthenticatedUser:[`POST /user/codespaces/{codespace_name}/stop`],stopInOrganization:[`POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop`],updateForAuthenticatedUser:[`PATCH /user/codespaces/{codespace_name}`]},copilot:{addCopilotSeatsForTeams:[`POST /orgs/{org}/copilot/billing/selected_teams`],addCopilotSeatsForUsers:[`POST /orgs/{org}/copilot/billing/selected_users`],cancelCopilotSeatAssignmentForTeams:[`DELETE /orgs/{org}/copilot/billing/selected_teams`],cancelCopilotSeatAssignmentForUsers:[`DELETE /orgs/{org}/copilot/billing/selected_users`],copilotMetricsForOrganization:[`GET /orgs/{org}/copilot/metrics`],copilotMetricsForTeam:[`GET /orgs/{org}/team/{team_slug}/copilot/metrics`],getCopilotOrganizationDetails:[`GET /orgs/{org}/copilot/billing`],getCopilotSeatDetailsForUser:[`GET /orgs/{org}/members/{username}/copilot`],listCopilotSeats:[`GET /orgs/{org}/copilot/billing/seats`]},credentials:{revoke:[`POST /credentials/revoke`]},dependabot:{addSelectedRepoToOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}`],createOrUpdateOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}`],createOrUpdateRepoSecret:[`PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],deleteOrgSecret:[`DELETE /orgs/{org}/dependabot/secrets/{secret_name}`],deleteRepoSecret:[`DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],getAlert:[`GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}`],getOrgPublicKey:[`GET /orgs/{org}/dependabot/secrets/public-key`],getOrgSecret:[`GET /orgs/{org}/dependabot/secrets/{secret_name}`],getRepoPublicKey:[`GET /repos/{owner}/{repo}/dependabot/secrets/public-key`],getRepoSecret:[`GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}`],listAlertsForEnterprise:[`GET /enterprises/{enterprise}/dependabot/alerts`],listAlertsForOrg:[`GET /orgs/{org}/dependabot/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/dependabot/alerts`],listOrgSecrets:[`GET /orgs/{org}/dependabot/secrets`],listRepoSecrets:[`GET /repos/{owner}/{repo}/dependabot/secrets`],listSelectedReposForOrgSecret:[`GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories`],removeSelectedRepoFromOrgSecret:[`DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}`],repositoryAccessForOrg:[`GET /organizations/{org}/dependabot/repository-access`],setRepositoryAccessDefaultLevel:[`PUT /organizations/{org}/dependabot/repository-access/default-level`],setSelectedReposForOrgSecret:[`PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories`],updateAlert:[`PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}`],updateRepositoryAccessForOrg:[`PATCH /organizations/{org}/dependabot/repository-access`]},dependencyGraph:{createRepositorySnapshot:[`POST /repos/{owner}/{repo}/dependency-graph/snapshots`],diffRange:[`GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}`],exportSbom:[`GET /repos/{owner}/{repo}/dependency-graph/sbom`]},emojis:{get:[`GET /emojis`]},enterpriseTeamMemberships:{add:[`PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`],bulkAdd:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add`],bulkRemove:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove`],get:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`],list:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships`],remove:[`DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}`]},enterpriseTeamOrganizations:{add:[`PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],bulkAdd:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add`],bulkRemove:[`POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove`],delete:[`DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],getAssignment:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}`],getAssignments:[`GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations`]},enterpriseTeams:{create:[`POST /enterprises/{enterprise}/teams`],delete:[`DELETE /enterprises/{enterprise}/teams/{team_slug}`],get:[`GET /enterprises/{enterprise}/teams/{team_slug}`],list:[`GET /enterprises/{enterprise}/teams`],update:[`PATCH /enterprises/{enterprise}/teams/{team_slug}`]},gists:{checkIsStarred:[`GET /gists/{gist_id}/star`],create:[`POST /gists`],createComment:[`POST /gists/{gist_id}/comments`],delete:[`DELETE /gists/{gist_id}`],deleteComment:[`DELETE /gists/{gist_id}/comments/{comment_id}`],fork:[`POST /gists/{gist_id}/forks`],get:[`GET /gists/{gist_id}`],getComment:[`GET /gists/{gist_id}/comments/{comment_id}`],getRevision:[`GET /gists/{gist_id}/{sha}`],list:[`GET /gists`],listComments:[`GET /gists/{gist_id}/comments`],listCommits:[`GET /gists/{gist_id}/commits`],listForUser:[`GET /users/{username}/gists`],listForks:[`GET /gists/{gist_id}/forks`],listPublic:[`GET /gists/public`],listStarred:[`GET /gists/starred`],star:[`PUT /gists/{gist_id}/star`],unstar:[`DELETE /gists/{gist_id}/star`],update:[`PATCH /gists/{gist_id}`],updateComment:[`PATCH /gists/{gist_id}/comments/{comment_id}`]},git:{createBlob:[`POST /repos/{owner}/{repo}/git/blobs`],createCommit:[`POST /repos/{owner}/{repo}/git/commits`],createRef:[`POST /repos/{owner}/{repo}/git/refs`],createTag:[`POST /repos/{owner}/{repo}/git/tags`],createTree:[`POST /repos/{owner}/{repo}/git/trees`],deleteRef:[`DELETE /repos/{owner}/{repo}/git/refs/{ref}`],getBlob:[`GET /repos/{owner}/{repo}/git/blobs/{file_sha}`],getCommit:[`GET /repos/{owner}/{repo}/git/commits/{commit_sha}`],getRef:[`GET /repos/{owner}/{repo}/git/ref/{ref}`],getTag:[`GET /repos/{owner}/{repo}/git/tags/{tag_sha}`],getTree:[`GET /repos/{owner}/{repo}/git/trees/{tree_sha}`],listMatchingRefs:[`GET /repos/{owner}/{repo}/git/matching-refs/{ref}`],updateRef:[`PATCH /repos/{owner}/{repo}/git/refs/{ref}`]},gitignore:{getAllTemplates:[`GET /gitignore/templates`],getTemplate:[`GET /gitignore/templates/{name}`]},hostedCompute:{createNetworkConfigurationForOrg:[`POST /orgs/{org}/settings/network-configurations`],deleteNetworkConfigurationFromOrg:[`DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}`],getNetworkConfigurationForOrg:[`GET /orgs/{org}/settings/network-configurations/{network_configuration_id}`],getNetworkSettingsForOrg:[`GET /orgs/{org}/settings/network-settings/{network_settings_id}`],listNetworkConfigurationsForOrg:[`GET /orgs/{org}/settings/network-configurations`],updateNetworkConfigurationForOrg:[`PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}`]},interactions:{getRestrictionsForAuthenticatedUser:[`GET /user/interaction-limits`],getRestrictionsForOrg:[`GET /orgs/{org}/interaction-limits`],getRestrictionsForRepo:[`GET /repos/{owner}/{repo}/interaction-limits`],getRestrictionsForYourPublicRepos:[`GET /user/interaction-limits`,{},{renamed:[`interactions`,`getRestrictionsForAuthenticatedUser`]}],removeRestrictionsForAuthenticatedUser:[`DELETE /user/interaction-limits`],removeRestrictionsForOrg:[`DELETE /orgs/{org}/interaction-limits`],removeRestrictionsForRepo:[`DELETE /repos/{owner}/{repo}/interaction-limits`],removeRestrictionsForYourPublicRepos:[`DELETE /user/interaction-limits`,{},{renamed:[`interactions`,`removeRestrictionsForAuthenticatedUser`]}],setRestrictionsForAuthenticatedUser:[`PUT /user/interaction-limits`],setRestrictionsForOrg:[`PUT /orgs/{org}/interaction-limits`],setRestrictionsForRepo:[`PUT /repos/{owner}/{repo}/interaction-limits`],setRestrictionsForYourPublicRepos:[`PUT /user/interaction-limits`,{},{renamed:[`interactions`,`setRestrictionsForAuthenticatedUser`]}]},issues:{addAssignees:[`POST /repos/{owner}/{repo}/issues/{issue_number}/assignees`],addBlockedByDependency:[`POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by`],addLabels:[`POST /repos/{owner}/{repo}/issues/{issue_number}/labels`],addSubIssue:[`POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues`],checkUserCanBeAssigned:[`GET /repos/{owner}/{repo}/assignees/{assignee}`],checkUserCanBeAssignedToIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}`],create:[`POST /repos/{owner}/{repo}/issues`],createComment:[`POST /repos/{owner}/{repo}/issues/{issue_number}/comments`],createLabel:[`POST /repos/{owner}/{repo}/labels`],createMilestone:[`POST /repos/{owner}/{repo}/milestones`],deleteComment:[`DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}`],deleteLabel:[`DELETE /repos/{owner}/{repo}/labels/{name}`],deleteMilestone:[`DELETE /repos/{owner}/{repo}/milestones/{milestone_number}`],get:[`GET /repos/{owner}/{repo}/issues/{issue_number}`],getComment:[`GET /repos/{owner}/{repo}/issues/comments/{comment_id}`],getEvent:[`GET /repos/{owner}/{repo}/issues/events/{event_id}`],getLabel:[`GET /repos/{owner}/{repo}/labels/{name}`],getMilestone:[`GET /repos/{owner}/{repo}/milestones/{milestone_number}`],getParent:[`GET /repos/{owner}/{repo}/issues/{issue_number}/parent`],list:[`GET /issues`],listAssignees:[`GET /repos/{owner}/{repo}/assignees`],listComments:[`GET /repos/{owner}/{repo}/issues/{issue_number}/comments`],listCommentsForRepo:[`GET /repos/{owner}/{repo}/issues/comments`],listDependenciesBlockedBy:[`GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by`],listDependenciesBlocking:[`GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking`],listEvents:[`GET /repos/{owner}/{repo}/issues/{issue_number}/events`],listEventsForRepo:[`GET /repos/{owner}/{repo}/issues/events`],listEventsForTimeline:[`GET /repos/{owner}/{repo}/issues/{issue_number}/timeline`],listForAuthenticatedUser:[`GET /user/issues`],listForOrg:[`GET /orgs/{org}/issues`],listForRepo:[`GET /repos/{owner}/{repo}/issues`],listLabelsForMilestone:[`GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels`],listLabelsForRepo:[`GET /repos/{owner}/{repo}/labels`],listLabelsOnIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/labels`],listMilestones:[`GET /repos/{owner}/{repo}/milestones`],listSubIssues:[`GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues`],lock:[`PUT /repos/{owner}/{repo}/issues/{issue_number}/lock`],removeAllLabels:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels`],removeAssignees:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees`],removeDependencyBlockedBy:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}`],removeLabel:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}`],removeSubIssue:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue`],reprioritizeSubIssue:[`PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority`],setLabels:[`PUT /repos/{owner}/{repo}/issues/{issue_number}/labels`],unlock:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock`],update:[`PATCH /repos/{owner}/{repo}/issues/{issue_number}`],updateComment:[`PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}`],updateLabel:[`PATCH /repos/{owner}/{repo}/labels/{name}`],updateMilestone:[`PATCH /repos/{owner}/{repo}/milestones/{milestone_number}`]},licenses:{get:[`GET /licenses/{license}`],getAllCommonlyUsed:[`GET /licenses`],getForRepo:[`GET /repos/{owner}/{repo}/license`]},markdown:{render:[`POST /markdown`],renderRaw:[`POST /markdown/raw`,{headers:{"content-type":`text/plain; charset=utf-8`}}]},meta:{get:[`GET /meta`],getAllVersions:[`GET /versions`],getOctocat:[`GET /octocat`],getZen:[`GET /zen`],root:[`GET /`]},migrations:{deleteArchiveForAuthenticatedUser:[`DELETE /user/migrations/{migration_id}/archive`],deleteArchiveForOrg:[`DELETE /orgs/{org}/migrations/{migration_id}/archive`],downloadArchiveForOrg:[`GET /orgs/{org}/migrations/{migration_id}/archive`],getArchiveForAuthenticatedUser:[`GET /user/migrations/{migration_id}/archive`],getStatusForAuthenticatedUser:[`GET /user/migrations/{migration_id}`],getStatusForOrg:[`GET /orgs/{org}/migrations/{migration_id}`],listForAuthenticatedUser:[`GET /user/migrations`],listForOrg:[`GET /orgs/{org}/migrations`],listReposForAuthenticatedUser:[`GET /user/migrations/{migration_id}/repositories`],listReposForOrg:[`GET /orgs/{org}/migrations/{migration_id}/repositories`],listReposForUser:[`GET /user/migrations/{migration_id}/repositories`,{},{renamed:[`migrations`,`listReposForAuthenticatedUser`]}],startForAuthenticatedUser:[`POST /user/migrations`],startForOrg:[`POST /orgs/{org}/migrations`],unlockRepoForAuthenticatedUser:[`DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock`],unlockRepoForOrg:[`DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock`]},oidc:{getOidcCustomSubTemplateForOrg:[`GET /orgs/{org}/actions/oidc/customization/sub`],updateOidcCustomSubTemplateForOrg:[`PUT /orgs/{org}/actions/oidc/customization/sub`]},orgs:{addSecurityManagerTeam:[`PUT /orgs/{org}/security-managers/teams/{team_slug}`,{},{deprecated:`octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team`}],assignTeamToOrgRole:[`PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}`],assignUserToOrgRole:[`PUT /orgs/{org}/organization-roles/users/{username}/{role_id}`],blockUser:[`PUT /orgs/{org}/blocks/{username}`],cancelInvitation:[`DELETE /orgs/{org}/invitations/{invitation_id}`],checkBlockedUser:[`GET /orgs/{org}/blocks/{username}`],checkMembershipForUser:[`GET /orgs/{org}/members/{username}`],checkPublicMembershipForUser:[`GET /orgs/{org}/public_members/{username}`],convertMemberToOutsideCollaborator:[`PUT /orgs/{org}/outside_collaborators/{username}`],createArtifactStorageRecord:[`POST /orgs/{org}/artifacts/metadata/storage-record`],createInvitation:[`POST /orgs/{org}/invitations`],createIssueType:[`POST /orgs/{org}/issue-types`],createWebhook:[`POST /orgs/{org}/hooks`],customPropertiesForOrgsCreateOrUpdateOrganizationValues:[`PATCH /organizations/{org}/org-properties/values`],customPropertiesForOrgsGetOrganizationValues:[`GET /organizations/{org}/org-properties/values`],customPropertiesForReposCreateOrUpdateOrganizationDefinition:[`PUT /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:[`PATCH /orgs/{org}/properties/schema`],customPropertiesForReposCreateOrUpdateOrganizationValues:[`PATCH /orgs/{org}/properties/values`],customPropertiesForReposDeleteOrganizationDefinition:[`DELETE /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposGetOrganizationDefinition:[`GET /orgs/{org}/properties/schema/{custom_property_name}`],customPropertiesForReposGetOrganizationDefinitions:[`GET /orgs/{org}/properties/schema`],customPropertiesForReposGetOrganizationValues:[`GET /orgs/{org}/properties/values`],delete:[`DELETE /orgs/{org}`],deleteAttestationsBulk:[`POST /orgs/{org}/attestations/delete-request`],deleteAttestationsById:[`DELETE /orgs/{org}/attestations/{attestation_id}`],deleteAttestationsBySubjectDigest:[`DELETE /orgs/{org}/attestations/digest/{subject_digest}`],deleteIssueType:[`DELETE /orgs/{org}/issue-types/{issue_type_id}`],deleteWebhook:[`DELETE /orgs/{org}/hooks/{hook_id}`],disableSelectedRepositoryImmutableReleasesOrganization:[`DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}`],enableSelectedRepositoryImmutableReleasesOrganization:[`PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}`],get:[`GET /orgs/{org}`],getImmutableReleasesSettings:[`GET /orgs/{org}/settings/immutable-releases`],getImmutableReleasesSettingsRepositories:[`GET /orgs/{org}/settings/immutable-releases/repositories`],getMembershipForAuthenticatedUser:[`GET /user/memberships/orgs/{org}`],getMembershipForUser:[`GET /orgs/{org}/memberships/{username}`],getOrgRole:[`GET /orgs/{org}/organization-roles/{role_id}`],getOrgRulesetHistory:[`GET /orgs/{org}/rulesets/{ruleset_id}/history`],getOrgRulesetVersion:[`GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}`],getWebhook:[`GET /orgs/{org}/hooks/{hook_id}`],getWebhookConfigForOrg:[`GET /orgs/{org}/hooks/{hook_id}/config`],getWebhookDelivery:[`GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}`],list:[`GET /organizations`],listAppInstallations:[`GET /orgs/{org}/installations`],listArtifactStorageRecords:[`GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records`],listAttestationRepositories:[`GET /orgs/{org}/attestations/repositories`],listAttestations:[`GET /orgs/{org}/attestations/{subject_digest}`],listAttestationsBulk:[`POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}`],listBlockedUsers:[`GET /orgs/{org}/blocks`],listFailedInvitations:[`GET /orgs/{org}/failed_invitations`],listForAuthenticatedUser:[`GET /user/orgs`],listForUser:[`GET /users/{username}/orgs`],listInvitationTeams:[`GET /orgs/{org}/invitations/{invitation_id}/teams`],listIssueTypes:[`GET /orgs/{org}/issue-types`],listMembers:[`GET /orgs/{org}/members`],listMembershipsForAuthenticatedUser:[`GET /user/memberships/orgs`],listOrgRoleTeams:[`GET /orgs/{org}/organization-roles/{role_id}/teams`],listOrgRoleUsers:[`GET /orgs/{org}/organization-roles/{role_id}/users`],listOrgRoles:[`GET /orgs/{org}/organization-roles`],listOrganizationFineGrainedPermissions:[`GET /orgs/{org}/organization-fine-grained-permissions`],listOutsideCollaborators:[`GET /orgs/{org}/outside_collaborators`],listPatGrantRepositories:[`GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories`],listPatGrantRequestRepositories:[`GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories`],listPatGrantRequests:[`GET /orgs/{org}/personal-access-token-requests`],listPatGrants:[`GET /orgs/{org}/personal-access-tokens`],listPendingInvitations:[`GET /orgs/{org}/invitations`],listPublicMembers:[`GET /orgs/{org}/public_members`],listSecurityManagerTeams:[`GET /orgs/{org}/security-managers`,{},{deprecated:`octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams`}],listWebhookDeliveries:[`GET /orgs/{org}/hooks/{hook_id}/deliveries`],listWebhooks:[`GET /orgs/{org}/hooks`],pingWebhook:[`POST /orgs/{org}/hooks/{hook_id}/pings`],redeliverWebhookDelivery:[`POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts`],removeMember:[`DELETE /orgs/{org}/members/{username}`],removeMembershipForUser:[`DELETE /orgs/{org}/memberships/{username}`],removeOutsideCollaborator:[`DELETE /orgs/{org}/outside_collaborators/{username}`],removePublicMembershipForAuthenticatedUser:[`DELETE /orgs/{org}/public_members/{username}`],removeSecurityManagerTeam:[`DELETE /orgs/{org}/security-managers/teams/{team_slug}`,{},{deprecated:`octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team`}],reviewPatGrantRequest:[`POST /orgs/{org}/personal-access-token-requests/{pat_request_id}`],reviewPatGrantRequestsInBulk:[`POST /orgs/{org}/personal-access-token-requests`],revokeAllOrgRolesTeam:[`DELETE /orgs/{org}/organization-roles/teams/{team_slug}`],revokeAllOrgRolesUser:[`DELETE /orgs/{org}/organization-roles/users/{username}`],revokeOrgRoleTeam:[`DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}`],revokeOrgRoleUser:[`DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}`],setImmutableReleasesSettings:[`PUT /orgs/{org}/settings/immutable-releases`],setImmutableReleasesSettingsRepositories:[`PUT /orgs/{org}/settings/immutable-releases/repositories`],setMembershipForUser:[`PUT /orgs/{org}/memberships/{username}`],setPublicMembershipForAuthenticatedUser:[`PUT /orgs/{org}/public_members/{username}`],unblockUser:[`DELETE /orgs/{org}/blocks/{username}`],update:[`PATCH /orgs/{org}`],updateIssueType:[`PUT /orgs/{org}/issue-types/{issue_type_id}`],updateMembershipForAuthenticatedUser:[`PATCH /user/memberships/orgs/{org}`],updatePatAccess:[`POST /orgs/{org}/personal-access-tokens/{pat_id}`],updatePatAccesses:[`POST /orgs/{org}/personal-access-tokens`],updateWebhook:[`PATCH /orgs/{org}/hooks/{hook_id}`],updateWebhookConfigForOrg:[`PATCH /orgs/{org}/hooks/{hook_id}/config`]},packages:{deletePackageForAuthenticatedUser:[`DELETE /user/packages/{package_type}/{package_name}`],deletePackageForOrg:[`DELETE /orgs/{org}/packages/{package_type}/{package_name}`],deletePackageForUser:[`DELETE /users/{username}/packages/{package_type}/{package_name}`],deletePackageVersionForAuthenticatedUser:[`DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}`],deletePackageVersionForOrg:[`DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}`],deletePackageVersionForUser:[`DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}`],getAllPackageVersionsForAPackageOwnedByAnOrg:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions`,{},{renamed:[`packages`,`getAllPackageVersionsForPackageOwnedByOrg`]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions`,{},{renamed:[`packages`,`getAllPackageVersionsForPackageOwnedByAuthenticatedUser`]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions`],getAllPackageVersionsForPackageOwnedByOrg:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions`],getAllPackageVersionsForPackageOwnedByUser:[`GET /users/{username}/packages/{package_type}/{package_name}/versions`],getPackageForAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}`],getPackageForOrganization:[`GET /orgs/{org}/packages/{package_type}/{package_name}`],getPackageForUser:[`GET /users/{username}/packages/{package_type}/{package_name}`],getPackageVersionForAuthenticatedUser:[`GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}`],getPackageVersionForOrganization:[`GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}`],getPackageVersionForUser:[`GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}`],listDockerMigrationConflictingPackagesForAuthenticatedUser:[`GET /user/docker/conflicts`],listDockerMigrationConflictingPackagesForOrganization:[`GET /orgs/{org}/docker/conflicts`],listDockerMigrationConflictingPackagesForUser:[`GET /users/{username}/docker/conflicts`],listPackagesForAuthenticatedUser:[`GET /user/packages`],listPackagesForOrganization:[`GET /orgs/{org}/packages`],listPackagesForUser:[`GET /users/{username}/packages`],restorePackageForAuthenticatedUser:[`POST /user/packages/{package_type}/{package_name}/restore{?token}`],restorePackageForOrg:[`POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}`],restorePackageForUser:[`POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}`],restorePackageVersionForAuthenticatedUser:[`POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`],restorePackageVersionForOrg:[`POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`],restorePackageVersionForUser:[`POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore`]},privateRegistries:{createOrgPrivateRegistry:[`POST /orgs/{org}/private-registries`],deleteOrgPrivateRegistry:[`DELETE /orgs/{org}/private-registries/{secret_name}`],getOrgPrivateRegistry:[`GET /orgs/{org}/private-registries/{secret_name}`],getOrgPublicKey:[`GET /orgs/{org}/private-registries/public-key`],listOrgPrivateRegistries:[`GET /orgs/{org}/private-registries`],updateOrgPrivateRegistry:[`PATCH /orgs/{org}/private-registries/{secret_name}`]},projects:{addItemForOrg:[`POST /orgs/{org}/projectsV2/{project_number}/items`],addItemForUser:[`POST /users/{username}/projectsV2/{project_number}/items`],deleteItemForOrg:[`DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],deleteItemForUser:[`DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}`],getFieldForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}`],getFieldForUser:[`GET /users/{username}/projectsV2/{project_number}/fields/{field_id}`],getForOrg:[`GET /orgs/{org}/projectsV2/{project_number}`],getForUser:[`GET /users/{username}/projectsV2/{project_number}`],getOrgItem:[`GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],getUserItem:[`GET /users/{username}/projectsV2/{project_number}/items/{item_id}`],listFieldsForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/fields`],listFieldsForUser:[`GET /users/{username}/projectsV2/{project_number}/fields`],listForOrg:[`GET /orgs/{org}/projectsV2`],listForUser:[`GET /users/{username}/projectsV2`],listItemsForOrg:[`GET /orgs/{org}/projectsV2/{project_number}/items`],listItemsForUser:[`GET /users/{username}/projectsV2/{project_number}/items`],updateItemForOrg:[`PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}`],updateItemForUser:[`PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}`]},pulls:{checkIfMerged:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/merge`],create:[`POST /repos/{owner}/{repo}/pulls`],createReplyForReviewComment:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies`],createReview:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews`],createReviewComment:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/comments`],deletePendingReview:[`DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],deleteReviewComment:[`DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}`],dismissReview:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals`],get:[`GET /repos/{owner}/{repo}/pulls/{pull_number}`],getReview:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],getReviewComment:[`GET /repos/{owner}/{repo}/pulls/comments/{comment_id}`],list:[`GET /repos/{owner}/{repo}/pulls`],listCommentsForReview:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments`],listCommits:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/commits`],listFiles:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/files`],listRequestedReviewers:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],listReviewComments:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/comments`],listReviewCommentsForRepo:[`GET /repos/{owner}/{repo}/pulls/comments`],listReviews:[`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews`],merge:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge`],removeRequestedReviewers:[`DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],requestReviewers:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers`],submitReview:[`POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events`],update:[`PATCH /repos/{owner}/{repo}/pulls/{pull_number}`],updateBranch:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch`],updateReview:[`PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}`],updateReviewComment:[`PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}`]},rateLimit:{get:[`GET /rate_limit`]},reactions:{createForCommitComment:[`POST /repos/{owner}/{repo}/comments/{comment_id}/reactions`],createForIssue:[`POST /repos/{owner}/{repo}/issues/{issue_number}/reactions`],createForIssueComment:[`POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions`],createForPullRequestReviewComment:[`POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions`],createForRelease:[`POST /repos/{owner}/{repo}/releases/{release_id}/reactions`],createForTeamDiscussionCommentInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions`],createForTeamDiscussionInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions`],deleteForCommitComment:[`DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}`],deleteForIssue:[`DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}`],deleteForIssueComment:[`DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}`],deleteForPullRequestComment:[`DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}`],deleteForRelease:[`DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}`],deleteForTeamDiscussion:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}`],deleteForTeamDiscussionComment:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}`],listForCommitComment:[`GET /repos/{owner}/{repo}/comments/{comment_id}/reactions`],listForIssue:[`GET /repos/{owner}/{repo}/issues/{issue_number}/reactions`],listForIssueComment:[`GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions`],listForPullRequestReviewComment:[`GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions`],listForRelease:[`GET /repos/{owner}/{repo}/releases/{release_id}/reactions`],listForTeamDiscussionCommentInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions`],listForTeamDiscussionInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions`]},repos:{acceptInvitation:[`PATCH /user/repository_invitations/{invitation_id}`,{},{renamed:[`repos`,`acceptInvitationForAuthenticatedUser`]}],acceptInvitationForAuthenticatedUser:[`PATCH /user/repository_invitations/{invitation_id}`],addAppAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],addCollaborator:[`PUT /repos/{owner}/{repo}/collaborators/{username}`],addStatusCheckContexts:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],addTeamAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],addUserAccessRestrictions:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],cancelPagesDeployment:[`POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel`],checkAutomatedSecurityFixes:[`GET /repos/{owner}/{repo}/automated-security-fixes`],checkCollaborator:[`GET /repos/{owner}/{repo}/collaborators/{username}`],checkImmutableReleases:[`GET /repos/{owner}/{repo}/immutable-releases`],checkPrivateVulnerabilityReporting:[`GET /repos/{owner}/{repo}/private-vulnerability-reporting`],checkVulnerabilityAlerts:[`GET /repos/{owner}/{repo}/vulnerability-alerts`],codeownersErrors:[`GET /repos/{owner}/{repo}/codeowners/errors`],compareCommits:[`GET /repos/{owner}/{repo}/compare/{base}...{head}`],compareCommitsWithBasehead:[`GET /repos/{owner}/{repo}/compare/{basehead}`],createAttestation:[`POST /repos/{owner}/{repo}/attestations`],createAutolink:[`POST /repos/{owner}/{repo}/autolinks`],createCommitComment:[`POST /repos/{owner}/{repo}/commits/{commit_sha}/comments`],createCommitSignatureProtection:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],createCommitStatus:[`POST /repos/{owner}/{repo}/statuses/{sha}`],createDeployKey:[`POST /repos/{owner}/{repo}/keys`],createDeployment:[`POST /repos/{owner}/{repo}/deployments`],createDeploymentBranchPolicy:[`POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies`],createDeploymentProtectionRule:[`POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules`],createDeploymentStatus:[`POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses`],createDispatchEvent:[`POST /repos/{owner}/{repo}/dispatches`],createForAuthenticatedUser:[`POST /user/repos`],createFork:[`POST /repos/{owner}/{repo}/forks`],createInOrg:[`POST /orgs/{org}/repos`],createOrUpdateEnvironment:[`PUT /repos/{owner}/{repo}/environments/{environment_name}`],createOrUpdateFileContents:[`PUT /repos/{owner}/{repo}/contents/{path}`],createOrgRuleset:[`POST /orgs/{org}/rulesets`],createPagesDeployment:[`POST /repos/{owner}/{repo}/pages/deployments`],createPagesSite:[`POST /repos/{owner}/{repo}/pages`],createRelease:[`POST /repos/{owner}/{repo}/releases`],createRepoRuleset:[`POST /repos/{owner}/{repo}/rulesets`],createUsingTemplate:[`POST /repos/{template_owner}/{template_repo}/generate`],createWebhook:[`POST /repos/{owner}/{repo}/hooks`],customPropertiesForReposCreateOrUpdateRepositoryValues:[`PATCH /repos/{owner}/{repo}/properties/values`],customPropertiesForReposGetRepositoryValues:[`GET /repos/{owner}/{repo}/properties/values`],declineInvitation:[`DELETE /user/repository_invitations/{invitation_id}`,{},{renamed:[`repos`,`declineInvitationForAuthenticatedUser`]}],declineInvitationForAuthenticatedUser:[`DELETE /user/repository_invitations/{invitation_id}`],delete:[`DELETE /repos/{owner}/{repo}`],deleteAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions`],deleteAdminBranchProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],deleteAnEnvironment:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}`],deleteAutolink:[`DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}`],deleteBranchProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection`],deleteCommitComment:[`DELETE /repos/{owner}/{repo}/comments/{comment_id}`],deleteCommitSignatureProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],deleteDeployKey:[`DELETE /repos/{owner}/{repo}/keys/{key_id}`],deleteDeployment:[`DELETE /repos/{owner}/{repo}/deployments/{deployment_id}`],deleteDeploymentBranchPolicy:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],deleteFile:[`DELETE /repos/{owner}/{repo}/contents/{path}`],deleteInvitation:[`DELETE /repos/{owner}/{repo}/invitations/{invitation_id}`],deleteOrgRuleset:[`DELETE /orgs/{org}/rulesets/{ruleset_id}`],deletePagesSite:[`DELETE /repos/{owner}/{repo}/pages`],deletePullRequestReviewProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],deleteRelease:[`DELETE /repos/{owner}/{repo}/releases/{release_id}`],deleteReleaseAsset:[`DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}`],deleteRepoRuleset:[`DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}`],deleteWebhook:[`DELETE /repos/{owner}/{repo}/hooks/{hook_id}`],disableAutomatedSecurityFixes:[`DELETE /repos/{owner}/{repo}/automated-security-fixes`],disableDeploymentProtectionRule:[`DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}`],disableImmutableReleases:[`DELETE /repos/{owner}/{repo}/immutable-releases`],disablePrivateVulnerabilityReporting:[`DELETE /repos/{owner}/{repo}/private-vulnerability-reporting`],disableVulnerabilityAlerts:[`DELETE /repos/{owner}/{repo}/vulnerability-alerts`],downloadArchive:[`GET /repos/{owner}/{repo}/zipball/{ref}`,{},{renamed:[`repos`,`downloadZipballArchive`]}],downloadTarballArchive:[`GET /repos/{owner}/{repo}/tarball/{ref}`],downloadZipballArchive:[`GET /repos/{owner}/{repo}/zipball/{ref}`],enableAutomatedSecurityFixes:[`PUT /repos/{owner}/{repo}/automated-security-fixes`],enableImmutableReleases:[`PUT /repos/{owner}/{repo}/immutable-releases`],enablePrivateVulnerabilityReporting:[`PUT /repos/{owner}/{repo}/private-vulnerability-reporting`],enableVulnerabilityAlerts:[`PUT /repos/{owner}/{repo}/vulnerability-alerts`],generateReleaseNotes:[`POST /repos/{owner}/{repo}/releases/generate-notes`],get:[`GET /repos/{owner}/{repo}`],getAccessRestrictions:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions`],getAdminBranchProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],getAllDeploymentProtectionRules:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules`],getAllEnvironments:[`GET /repos/{owner}/{repo}/environments`],getAllStatusCheckContexts:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`],getAllTopics:[`GET /repos/{owner}/{repo}/topics`],getAppsWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`],getAutolink:[`GET /repos/{owner}/{repo}/autolinks/{autolink_id}`],getBranch:[`GET /repos/{owner}/{repo}/branches/{branch}`],getBranchProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection`],getBranchRules:[`GET /repos/{owner}/{repo}/rules/branches/{branch}`],getClones:[`GET /repos/{owner}/{repo}/traffic/clones`],getCodeFrequencyStats:[`GET /repos/{owner}/{repo}/stats/code_frequency`],getCollaboratorPermissionLevel:[`GET /repos/{owner}/{repo}/collaborators/{username}/permission`],getCombinedStatusForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/status`],getCommit:[`GET /repos/{owner}/{repo}/commits/{ref}`],getCommitActivityStats:[`GET /repos/{owner}/{repo}/stats/commit_activity`],getCommitComment:[`GET /repos/{owner}/{repo}/comments/{comment_id}`],getCommitSignatureProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures`],getCommunityProfileMetrics:[`GET /repos/{owner}/{repo}/community/profile`],getContent:[`GET /repos/{owner}/{repo}/contents/{path}`],getContributorsStats:[`GET /repos/{owner}/{repo}/stats/contributors`],getCustomDeploymentProtectionRule:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}`],getDeployKey:[`GET /repos/{owner}/{repo}/keys/{key_id}`],getDeployment:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}`],getDeploymentBranchPolicy:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],getDeploymentStatus:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}`],getEnvironment:[`GET /repos/{owner}/{repo}/environments/{environment_name}`],getLatestPagesBuild:[`GET /repos/{owner}/{repo}/pages/builds/latest`],getLatestRelease:[`GET /repos/{owner}/{repo}/releases/latest`],getOrgRuleSuite:[`GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}`],getOrgRuleSuites:[`GET /orgs/{org}/rulesets/rule-suites`],getOrgRuleset:[`GET /orgs/{org}/rulesets/{ruleset_id}`],getOrgRulesets:[`GET /orgs/{org}/rulesets`],getPages:[`GET /repos/{owner}/{repo}/pages`],getPagesBuild:[`GET /repos/{owner}/{repo}/pages/builds/{build_id}`],getPagesDeployment:[`GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}`],getPagesHealthCheck:[`GET /repos/{owner}/{repo}/pages/health`],getParticipationStats:[`GET /repos/{owner}/{repo}/stats/participation`],getPullRequestReviewProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],getPunchCardStats:[`GET /repos/{owner}/{repo}/stats/punch_card`],getReadme:[`GET /repos/{owner}/{repo}/readme`],getReadmeInDirectory:[`GET /repos/{owner}/{repo}/readme/{dir}`],getRelease:[`GET /repos/{owner}/{repo}/releases/{release_id}`],getReleaseAsset:[`GET /repos/{owner}/{repo}/releases/assets/{asset_id}`],getReleaseByTag:[`GET /repos/{owner}/{repo}/releases/tags/{tag}`],getRepoRuleSuite:[`GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}`],getRepoRuleSuites:[`GET /repos/{owner}/{repo}/rulesets/rule-suites`],getRepoRuleset:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}`],getRepoRulesetHistory:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history`],getRepoRulesetVersion:[`GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}`],getRepoRulesets:[`GET /repos/{owner}/{repo}/rulesets`],getStatusChecksProtection:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],getTeamsWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`],getTopPaths:[`GET /repos/{owner}/{repo}/traffic/popular/paths`],getTopReferrers:[`GET /repos/{owner}/{repo}/traffic/popular/referrers`],getUsersWithAccessToProtectedBranch:[`GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`],getViews:[`GET /repos/{owner}/{repo}/traffic/views`],getWebhook:[`GET /repos/{owner}/{repo}/hooks/{hook_id}`],getWebhookConfigForRepo:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/config`],getWebhookDelivery:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}`],listActivities:[`GET /repos/{owner}/{repo}/activity`],listAttestations:[`GET /repos/{owner}/{repo}/attestations/{subject_digest}`],listAutolinks:[`GET /repos/{owner}/{repo}/autolinks`],listBranches:[`GET /repos/{owner}/{repo}/branches`],listBranchesForHeadCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head`],listCollaborators:[`GET /repos/{owner}/{repo}/collaborators`],listCommentsForCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/comments`],listCommitCommentsForRepo:[`GET /repos/{owner}/{repo}/comments`],listCommitStatusesForRef:[`GET /repos/{owner}/{repo}/commits/{ref}/statuses`],listCommits:[`GET /repos/{owner}/{repo}/commits`],listContributors:[`GET /repos/{owner}/{repo}/contributors`],listCustomDeploymentRuleIntegrations:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps`],listDeployKeys:[`GET /repos/{owner}/{repo}/keys`],listDeploymentBranchPolicies:[`GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies`],listDeploymentStatuses:[`GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses`],listDeployments:[`GET /repos/{owner}/{repo}/deployments`],listForAuthenticatedUser:[`GET /user/repos`],listForOrg:[`GET /orgs/{org}/repos`],listForUser:[`GET /users/{username}/repos`],listForks:[`GET /repos/{owner}/{repo}/forks`],listInvitations:[`GET /repos/{owner}/{repo}/invitations`],listInvitationsForAuthenticatedUser:[`GET /user/repository_invitations`],listLanguages:[`GET /repos/{owner}/{repo}/languages`],listPagesBuilds:[`GET /repos/{owner}/{repo}/pages/builds`],listPublic:[`GET /repositories`],listPullRequestsAssociatedWithCommit:[`GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls`],listReleaseAssets:[`GET /repos/{owner}/{repo}/releases/{release_id}/assets`],listReleases:[`GET /repos/{owner}/{repo}/releases`],listTags:[`GET /repos/{owner}/{repo}/tags`],listTeams:[`GET /repos/{owner}/{repo}/teams`],listWebhookDeliveries:[`GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries`],listWebhooks:[`GET /repos/{owner}/{repo}/hooks`],merge:[`POST /repos/{owner}/{repo}/merges`],mergeUpstream:[`POST /repos/{owner}/{repo}/merge-upstream`],pingWebhook:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/pings`],redeliverWebhookDelivery:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts`],removeAppAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],removeCollaborator:[`DELETE /repos/{owner}/{repo}/collaborators/{username}`],removeStatusCheckContexts:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],removeStatusCheckProtection:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],removeTeamAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],removeUserAccessRestrictions:[`DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],renameBranch:[`POST /repos/{owner}/{repo}/branches/{branch}/rename`],replaceAllTopics:[`PUT /repos/{owner}/{repo}/topics`],requestPagesBuild:[`POST /repos/{owner}/{repo}/pages/builds`],setAdminBranchProtection:[`POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins`],setAppAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps`,{},{mapToData:`apps`}],setStatusCheckContexts:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts`,{},{mapToData:`contexts`}],setTeamAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams`,{},{mapToData:`teams`}],setUserAccessRestrictions:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users`,{},{mapToData:`users`}],testPushWebhook:[`POST /repos/{owner}/{repo}/hooks/{hook_id}/tests`],transfer:[`POST /repos/{owner}/{repo}/transfer`],update:[`PATCH /repos/{owner}/{repo}`],updateBranchProtection:[`PUT /repos/{owner}/{repo}/branches/{branch}/protection`],updateCommitComment:[`PATCH /repos/{owner}/{repo}/comments/{comment_id}`],updateDeploymentBranchPolicy:[`PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}`],updateInformationAboutPagesSite:[`PUT /repos/{owner}/{repo}/pages`],updateInvitation:[`PATCH /repos/{owner}/{repo}/invitations/{invitation_id}`],updateOrgRuleset:[`PUT /orgs/{org}/rulesets/{ruleset_id}`],updatePullRequestReviewProtection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews`],updateRelease:[`PATCH /repos/{owner}/{repo}/releases/{release_id}`],updateReleaseAsset:[`PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}`],updateRepoRuleset:[`PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}`],updateStatusCheckPotection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`,{},{renamed:[`repos`,`updateStatusCheckProtection`]}],updateStatusCheckProtection:[`PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks`],updateWebhook:[`PATCH /repos/{owner}/{repo}/hooks/{hook_id}`],updateWebhookConfigForRepo:[`PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config`],uploadReleaseAsset:[`POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}`,{baseUrl:`https://uploads.github.com`}]},search:{code:[`GET /search/code`],commits:[`GET /search/commits`],issuesAndPullRequests:[`GET /search/issues`],labels:[`GET /search/labels`],repos:[`GET /search/repositories`],topics:[`GET /search/topics`],users:[`GET /search/users`]},secretScanning:{createPushProtectionBypass:[`POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses`],getAlert:[`GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}`],getScanHistory:[`GET /repos/{owner}/{repo}/secret-scanning/scan-history`],listAlertsForOrg:[`GET /orgs/{org}/secret-scanning/alerts`],listAlertsForRepo:[`GET /repos/{owner}/{repo}/secret-scanning/alerts`],listLocationsForAlert:[`GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations`],listOrgPatternConfigs:[`GET /orgs/{org}/secret-scanning/pattern-configurations`],updateAlert:[`PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}`],updateOrgPatternConfigs:[`PATCH /orgs/{org}/secret-scanning/pattern-configurations`]},securityAdvisories:{createFork:[`POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks`],createPrivateVulnerabilityReport:[`POST /repos/{owner}/{repo}/security-advisories/reports`],createRepositoryAdvisory:[`POST /repos/{owner}/{repo}/security-advisories`],createRepositoryAdvisoryCveRequest:[`POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve`],getGlobalAdvisory:[`GET /advisories/{ghsa_id}`],getRepositoryAdvisory:[`GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}`],listGlobalAdvisories:[`GET /advisories`],listOrgRepositoryAdvisories:[`GET /orgs/{org}/security-advisories`],listRepositoryAdvisories:[`GET /repos/{owner}/{repo}/security-advisories`],updateRepositoryAdvisory:[`PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}`]},teams:{addOrUpdateMembershipForUserInOrg:[`PUT /orgs/{org}/teams/{team_slug}/memberships/{username}`],addOrUpdateRepoPermissionsInOrg:[`PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],checkPermissionsForRepoInOrg:[`GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],create:[`POST /orgs/{org}/teams`],createDiscussionCommentInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments`],createDiscussionInOrg:[`POST /orgs/{org}/teams/{team_slug}/discussions`],deleteDiscussionCommentInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],deleteDiscussionInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],deleteInOrg:[`DELETE /orgs/{org}/teams/{team_slug}`],getByName:[`GET /orgs/{org}/teams/{team_slug}`],getDiscussionCommentInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],getDiscussionInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],getMembershipForUserInOrg:[`GET /orgs/{org}/teams/{team_slug}/memberships/{username}`],list:[`GET /orgs/{org}/teams`],listChildInOrg:[`GET /orgs/{org}/teams/{team_slug}/teams`],listDiscussionCommentsInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments`],listDiscussionsInOrg:[`GET /orgs/{org}/teams/{team_slug}/discussions`],listForAuthenticatedUser:[`GET /user/teams`],listMembersInOrg:[`GET /orgs/{org}/teams/{team_slug}/members`],listPendingInvitationsInOrg:[`GET /orgs/{org}/teams/{team_slug}/invitations`],listReposInOrg:[`GET /orgs/{org}/teams/{team_slug}/repos`],removeMembershipForUserInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}`],removeRepoInOrg:[`DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}`],updateDiscussionCommentInOrg:[`PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}`],updateDiscussionInOrg:[`PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}`],updateInOrg:[`PATCH /orgs/{org}/teams/{team_slug}`]},users:{addEmailForAuthenticated:[`POST /user/emails`,{},{renamed:[`users`,`addEmailForAuthenticatedUser`]}],addEmailForAuthenticatedUser:[`POST /user/emails`],addSocialAccountForAuthenticatedUser:[`POST /user/social_accounts`],block:[`PUT /user/blocks/{username}`],checkBlocked:[`GET /user/blocks/{username}`],checkFollowingForUser:[`GET /users/{username}/following/{target_user}`],checkPersonIsFollowedByAuthenticated:[`GET /user/following/{username}`],createGpgKeyForAuthenticated:[`POST /user/gpg_keys`,{},{renamed:[`users`,`createGpgKeyForAuthenticatedUser`]}],createGpgKeyForAuthenticatedUser:[`POST /user/gpg_keys`],createPublicSshKeyForAuthenticated:[`POST /user/keys`,{},{renamed:[`users`,`createPublicSshKeyForAuthenticatedUser`]}],createPublicSshKeyForAuthenticatedUser:[`POST /user/keys`],createSshSigningKeyForAuthenticatedUser:[`POST /user/ssh_signing_keys`],deleteAttestationsBulk:[`POST /users/{username}/attestations/delete-request`],deleteAttestationsById:[`DELETE /users/{username}/attestations/{attestation_id}`],deleteAttestationsBySubjectDigest:[`DELETE /users/{username}/attestations/digest/{subject_digest}`],deleteEmailForAuthenticated:[`DELETE /user/emails`,{},{renamed:[`users`,`deleteEmailForAuthenticatedUser`]}],deleteEmailForAuthenticatedUser:[`DELETE /user/emails`],deleteGpgKeyForAuthenticated:[`DELETE /user/gpg_keys/{gpg_key_id}`,{},{renamed:[`users`,`deleteGpgKeyForAuthenticatedUser`]}],deleteGpgKeyForAuthenticatedUser:[`DELETE /user/gpg_keys/{gpg_key_id}`],deletePublicSshKeyForAuthenticated:[`DELETE /user/keys/{key_id}`,{},{renamed:[`users`,`deletePublicSshKeyForAuthenticatedUser`]}],deletePublicSshKeyForAuthenticatedUser:[`DELETE /user/keys/{key_id}`],deleteSocialAccountForAuthenticatedUser:[`DELETE /user/social_accounts`],deleteSshSigningKeyForAuthenticatedUser:[`DELETE /user/ssh_signing_keys/{ssh_signing_key_id}`],follow:[`PUT /user/following/{username}`],getAuthenticated:[`GET /user`],getById:[`GET /user/{account_id}`],getByUsername:[`GET /users/{username}`],getContextForUser:[`GET /users/{username}/hovercard`],getGpgKeyForAuthenticated:[`GET /user/gpg_keys/{gpg_key_id}`,{},{renamed:[`users`,`getGpgKeyForAuthenticatedUser`]}],getGpgKeyForAuthenticatedUser:[`GET /user/gpg_keys/{gpg_key_id}`],getPublicSshKeyForAuthenticated:[`GET /user/keys/{key_id}`,{},{renamed:[`users`,`getPublicSshKeyForAuthenticatedUser`]}],getPublicSshKeyForAuthenticatedUser:[`GET /user/keys/{key_id}`],getSshSigningKeyForAuthenticatedUser:[`GET /user/ssh_signing_keys/{ssh_signing_key_id}`],list:[`GET /users`],listAttestations:[`GET /users/{username}/attestations/{subject_digest}`],listAttestationsBulk:[`POST /users/{username}/attestations/bulk-list{?per_page,before,after}`],listBlockedByAuthenticated:[`GET /user/blocks`,{},{renamed:[`users`,`listBlockedByAuthenticatedUser`]}],listBlockedByAuthenticatedUser:[`GET /user/blocks`],listEmailsForAuthenticated:[`GET /user/emails`,{},{renamed:[`users`,`listEmailsForAuthenticatedUser`]}],listEmailsForAuthenticatedUser:[`GET /user/emails`],listFollowedByAuthenticated:[`GET /user/following`,{},{renamed:[`users`,`listFollowedByAuthenticatedUser`]}],listFollowedByAuthenticatedUser:[`GET /user/following`],listFollowersForAuthenticatedUser:[`GET /user/followers`],listFollowersForUser:[`GET /users/{username}/followers`],listFollowingForUser:[`GET /users/{username}/following`],listGpgKeysForAuthenticated:[`GET /user/gpg_keys`,{},{renamed:[`users`,`listGpgKeysForAuthenticatedUser`]}],listGpgKeysForAuthenticatedUser:[`GET /user/gpg_keys`],listGpgKeysForUser:[`GET /users/{username}/gpg_keys`],listPublicEmailsForAuthenticated:[`GET /user/public_emails`,{},{renamed:[`users`,`listPublicEmailsForAuthenticatedUser`]}],listPublicEmailsForAuthenticatedUser:[`GET /user/public_emails`],listPublicKeysForUser:[`GET /users/{username}/keys`],listPublicSshKeysForAuthenticated:[`GET /user/keys`,{},{renamed:[`users`,`listPublicSshKeysForAuthenticatedUser`]}],listPublicSshKeysForAuthenticatedUser:[`GET /user/keys`],listSocialAccountsForAuthenticatedUser:[`GET /user/social_accounts`],listSocialAccountsForUser:[`GET /users/{username}/social_accounts`],listSshSigningKeysForAuthenticatedUser:[`GET /user/ssh_signing_keys`],listSshSigningKeysForUser:[`GET /users/{username}/ssh_signing_keys`],setPrimaryEmailVisibilityForAuthenticated:[`PATCH /user/email/visibility`,{},{renamed:[`users`,`setPrimaryEmailVisibilityForAuthenticatedUser`]}],setPrimaryEmailVisibilityForAuthenticatedUser:[`PATCH /user/email/visibility`],unblock:[`DELETE /user/blocks/{username}`],unfollow:[`DELETE /user/following/{username}`],updateAuthenticated:[`PATCH /user`]}};const V=new Map;for(let[e,t]of Object.entries($r))for(let[n,r]of Object.entries(t)){let[t,i,a]=r,[o,s]=t.split(/ /),c=Object.assign({method:o,url:s},i);V.has(e)||V.set(e,new Map),V.get(e).set(n,{scope:e,methodName:n,endpointDefaults:c,decorations:a})}const ei={has({scope:e},t){return V.get(e).has(t)},getOwnPropertyDescriptor(e,t){return{value:this.get(e,t),configurable:!0,writable:!0,enumerable:!0}},defineProperty(e,t,n){return Object.defineProperty(e.cache,t,n),!0},deleteProperty(e,t){return delete e.cache[t],!0},ownKeys({scope:e}){return[...V.get(e).keys()]},set(e,t,n){return e.cache[t]=n},get({octokit:e,scope:t,cache:n},r){if(n[r])return n[r];let i=V.get(t).get(r);if(!i)return;let{endpointDefaults:a,decorations:o}=i;return o?n[r]=ni(e,t,r,a,o):n[r]=e.request.defaults(a),n[r]}};function ti(e){let t={};for(let n of V.keys())t[n]=new Proxy({octokit:e,scope:n,cache:{}},ei);return t}function ni(e,t,n,r,i){let a=e.request.defaults(r);function o(...r){let o=a.endpoint.merge(...r);if(i.mapToData)return o=Object.assign({},o,{data:o[i.mapToData],[i.mapToData]:void 0}),a(o);if(i.renamed){let[r,a]=i.renamed;e.log.warn(`octokit.${t}.${n}() has been renamed to octokit.${r}.${a}()`)}if(i.deprecated&&e.log.warn(i.deprecated),i.renamedParameters){let o=a.endpoint.merge(...r);for(let[r,a]of Object.entries(i.renamedParameters))r in o&&(e.log.warn(`"${r}" parameter is deprecated for "octokit.${t}.${n}()". Use "${a}" instead`),a in o||(o[a]=o[r]),delete o[r]);return a(o)}return a(...r)}return Object.assign(o,a)}function ri(e){return{rest:ti(e)}}ri.VERSION=Qr;function ii(e){let t=ti(e);return{...t,rest:t}}ii.VERSION=Qr;const H=Wr.plugin(Gr,ii,Zr).defaults({userAgent:`octokit-rest.js/22.0.1`});async function ai(e,t,n){let{host:r,json:i}=e;R(r);let a=await(n??(()=>dr({message:`Enter PAT:`})))();a||(process.stderr.write(`No token provided
14
+ `),process.exit(1));let o=r===`github.com`?void 0:`https://${r}/api/v3`,s=new H({auth:a,...o?{baseUrl:o}:{}}),c=`unknown`,l,u;try{let{data:e}=await s.users.getAuthenticated();c=e.login,l=e.name??void 0,u=e.email??void 0}catch{process.stderr.write(`Token validation failed
15
+ `),process.exit(1)}await t.set(r,c,a,{gitProtocol:`https`,name:l,email:u}),i?process.stdout.write(`${JSON.stringify({type:`complete`,host:r,login:c})}\n`):process.stderr.write(`✓ PAT stored for ${c} on ${r}\n`)}function oi(e){return new t(`pat`).description(`Store a Personal Access Token`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await ai(t,await e())})}async function si(e,t,n=ae){let r=n(e);return r.available&&r.token?r.token:(await t.get(e))?.token??null}async function ci(e,t){let{host:n,json:r}=e;R(n);let i=await si(n,t);i??(process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new H({auth:i,...a?{baseUrl:a}:{}}),s=[];for await(let e of o.paginate.iterator(o.repos.listForAuthenticatedUser,{per_page:100,sort:`updated`}))for(let t of e.data)s.push({full_name:t.full_name,clone_url:t.clone_url,private:t.private});if(r)process.stdout.write(`${JSON.stringify({type:`repos`,host:n,repos:s})}\n`);else for(let e of s)process.stdout.write(`${e.full_name} ${e.clone_url}\n`)}function li(e){return new t(`repos`).description(`List accessible repositories`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await ci(t,await e())})}async function ui(e){let{host:t}=e,{touched:n}=await re(t);if(n.length===0){process.stderr.write(`Not signed in to ${t}\n`);return}process.stderr.write(`✓ Signed out from ${t}\n`),n.includes(`keychain`)&&process.stderr.write(` cleared from OS keychain
16
16
  `),n.includes(`file`)&&process.stderr.write(` cleared from ~/.ok/auth.yml
17
- `)}function fi(){return new t(`signout`).description(`Remove stored credentials`).option(`--host <host>`,`GitHub hostname`,`github.com`).action(async e=>{await di(e)})}async function pi(e,t,n=ae){let r=n(e);if(r.available&&r.token)return{tier:`A`,token:r.token};let i=await t.get(e);return i==null?{tier:`none`}:{tier:i.gitProtocol===`ssh`?`C`:`B`,token:i.token}}async function mi(e,t){let{host:n,json:r}=e;L(n);let i=await pi(n,t);i.tier===`none`&&(r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!1})}\n`):process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new V({auth:i.token,...a?{baseUrl:a}:{}});try{let{data:e}=await o.users.getAuthenticated();r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!0,tier:i.tier,login:e.login,name:e.name,email:e.email})}\n`):process.stderr.write(`✓ Logged in as ${e.login} on ${n}\n`)}catch{r?process.stdout.write(JSON.stringify({type:`status`,host:n,authenticated:!1,error:`token invalid`})+`
18
- `):process.stderr.write(`✗ Token invalid for ${n}\n`),process.exit(1)}}function hi(e){return new t(`status`).description(`Show authentication status`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await mi(t,await e())})}function gi(){let e=new t(`auth`);e.description(`GitHub authentication management`);let n=()=>ie();return e.addCommand(An(n)),e.addCommand(hi(n)),e.addCommand(ui(n)),e.addCommand(fi()),e.addCommand(si(n)),e.addCommand(cn(n)),e}const _i=A(Bt(),`.ok`,`logs`),vi=A(Bt(),`.ok`,`bug-reports`),yi=[{name:`macos-home-path`,regex:/\/Users\/[^/]+\//g,replacement:`~/`},{name:`linux-home-path`,regex:/\/home\/[^/]+\//g,replacement:`~/`},{name:`github-pat`,regex:/\b(ghp_|gho_|ghu_|ghs_|ghr_)[A-Za-z0-9]{36,}\b/g,replacement:`[REDACTED-GH-PAT]`},{name:`aws-access-key`,regex:/\b(AKIA|ASIA|ABIA)[A-Z2-7]{16}\b/g,replacement:`[REDACTED-AWS-KEY]`},{name:`anthropic-key`,regex:/\bsk-ant-api03-[A-Za-z0-9_-]{20,}\b/g,replacement:`[REDACTED-ANTHROPIC]`},{name:`openai-key`,regex:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:`[REDACTED-OPENAI]`},{name:`bearer-token`,regex:/([Aa]uthorization:\s*[Bb]earer\s+)\S+/g,replacement:`$1[REDACTED]`}];function bi(e){let t=new Set,n=0;return{redacted:e.split(`
19
- `).map(e=>{let r=e;for(let{name:e,regex:i,replacement:a}of yi)i.lastIndex=0,i.test(r)&&(t.add(e),n++,i.lastIndex=0,r=r.replace(i,a));return r}).join(`
20
- `),patterns:[...t],lineCount:n}}function xi(e){let t=A(e,`.ok`,`config.yml`);if(M(t))try{let e=P(t,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch{}return M(A(e,`.ok`))?$t(`sha256`).update(j(e)).digest(`hex`).slice(0,12):null}function Si(){let e={timestamp:new Date().toISOString(),platform:Ht(),osType:Kt(),osRelease:Ut(),hostname:`[redacted]`,uptime:qt(),freeMem:zt(),totalMem:Gt(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=gt(`sw_vers -productVersion 2>/dev/null`,{encoding:`utf8`}).trim()}catch{}try{let t=A(__dirname,`..`,`..`,`package.json`);M(t)&&(e.okVersion=JSON.parse(P(t,`utf8`)).version)}catch{}return e}function Ci(e){if(!M(_i))return{files:[],dir:_i};let t=Mt(_i).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>A(_i,e));if(e&&t.length>0){let n=t.filter(t=>{try{return P(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});n.length>0&&(t=n)}return{files:t,dir:_i}}function wi(e){let t=A(e,`.ok`,`local`);return M(t)?{files:[`server.lock`,`last-spawn-error.log`].map(e=>A(t,e)).filter(e=>M(e)),dir:t}:{files:[],dir:null}}async function Ti(t){let n=Zl();N(vi,{recursive:!0});let r=A(vi,`${new Date().toISOString().replace(/[:.]/g,`-`)}-bugreport.zip`);n?.info({projectSlug:t.projectSlug},`gathering diagnostic data`);let i=Si(),{files:a}=Ci(t.projectSlug),{files:o}=wi(t.cwd);n?.info({logFileCount:a.length,lockFileCount:o.length},`files collected`);let s=[],c=[],{ZipFile:l}=await import(`./yazl-CJayzk0b.mjs`).then(t=>e(t.default,1)),u=new l;for(let e of a)try{let{redacted:t,patterns:n,lineCount:r}=bi(P(e,`utf8`)),i=`logs/${yt(e)}`;u.addBuffer(Buffer.from(t,`utf8`),i),c.push(i),n.length>0&&s.push({file:i,lineCount:r,patterns:n})}catch{}for(let e of o)try{let{redacted:t,patterns:n,lineCount:r}=bi(P(e,`utf8`)),i=`lockdir/${yt(e)}`;u.addBuffer(Buffer.from(t,`utf8`),i),c.push(i),n.length>0&&s.push({file:i,lineCount:r,patterns:n})}catch{}let d=JSON.stringify(i,null,2);u.addBuffer(Buffer.from(d,`utf8`),`sysinfo.json`),c.push(`sysinfo.json`);let f={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:t.projectSlug,files:c,redactions:s,sysinfo:i};u.addBuffer(Buffer.from(JSON.stringify(f,null,2),`utf8`),`MANIFEST.json`);let p=s.reduce((e,t)=>e+t.lineCount,0),m=[`# Bug Report Bundle`,``,`Generated: ${f.generatedAt}`,`Project: ${t.projectSlug??`(unscoped)`}`,`Discipline version: ${f.disciplineVersion}`,``,`## Contents`,``,...c.map(e=>`- ${e}`),``,`## Privacy`,``,`This bundle was auto-redacted before packaging.`,`Patterns checked: ${yi.map(e=>e.name).join(`, `)}`,p>0?`${p} line(s) were scrubbed across ${s.length} file(s).`:`No redactions were needed.`,`See MANIFEST.json for the full redaction audit report.`,``,`This bundle is safe to attach to a GitHub issue.`].join(`
21
- `);u.addBuffer(Buffer.from(m,`utf8`),`README.md`),u.end();let h=Ot(r);if(u.outputStream.pipe(h),await new Promise((e,t)=>{h.on(`close`,e),h.on(`error`,t)}),n?.info({bundlePath:r,fileCount:c.length,redactionCount:p},`bundle written`),process.stdout.write(`${r}\n`),p>0&&process.stderr.write(`ok bug-report: ${p} line(s) auto-redacted across ${s.length} file(s)\n`),!t.noReveal&&Ht()===`darwin`)try{_t(`/usr/bin/open`,[`-R`,r],{detached:!0,stdio:`ignore`}).unref()}catch{}return r}function Ei(){return new t(`bug-report`).description(`Generate a diagnostic bundle for bug reporting`).option(`--reveal`,`Reveal the bundle in Finder (default: true)`,!0).option(`--no-reveal`,`Do not reveal the bundle in Finder`).action(async e=>{let t=process.cwd(),n=xi(t);try{await Ti({projectSlug:n,cwd:t,noReveal:!e.reveal})}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`ok bug-report: failed — ${t}\n`),process.exitCode=1}})}function H(e,t,n={}){let r=te(e,t);if(!M(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(P(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!m(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??x)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};let o=n.host??Vt();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Di(e,t){let n=[];for(let[r,i]of[[`server`,e],[`ui`,t]])(i.status===`dead-pid`||i.status===`corrupt`)&&n.push({name:r,lockPath:i.lockPath,reason:i.status});return{prune:n}}function Oi(e){let t=e.inspect??(t=>H(e.lockDir,t)),n=e.unlink??(e=>It(e)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Di(t(`server`),t(`ui`));if(a.prune.length===0)return r(`No stale locks.`),{pruned:[],failed:[]};let o=[],s=[];for(let e of a.prune)try{n(e.lockPath),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}if(o.length>0){let e=o.map(e=>`${e.name} (${e.reason})`).join(`, `);r(`Pruned ${o.length} stale lock${o.length===1?``:`s`}: ${e}`)}return s.length>0&&i(`Failed to prune: ${s.map(({target:e,error:t})=>`${e.name} (${e.lockPath}): ${t}`).join(`; `)}`),{pruned:o,failed:s}}function ki(e){return new t(`clean`).description(`Prune stale / corrupt open-knowledge lock files (never touches live locks)`).action(()=>{e(),Oi({lockDir:w(process.cwd())}).failed.length>0&&(process.exitCode=1)})}async function Ai(e,t,n={},r=ae){if(!n.skipGhDetect&&r().available)return{tier:`A`,credentialArgs:[`-c`,`credential.helper=!gh auth git-credential`]};let i=await t.get(e);return i==null?{tier:`none`,credentialArgs:[]}:{tier:i.gitProtocol===`ssh`?`C`:`B`,credentialArgs:[`-c`,`credential.helper=!open-knowledge auth git-credential`]}}async function ji(e,t,n=fetch){let r=new AbortController,i=setTimeout(()=>r.abort(),5e3);try{return(await n(`https://api.github.com/repos/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{signal:r.signal,headers:{"User-Agent":`open-knowledge-cli`,Accept:`application/vnd.github+json`}})).status===200}catch{return!1}finally{clearTimeout(i)}}const Mi=[[`count`,0,10],[`compress`,10,20],[`receiv`,20,60],[`resolv`,60,100]];function Ni(e){let t=/^([\w ]+):\s+(\d+)%/.exec(e.trim());if(!t)return null;let n=t[1].toLowerCase(),r=Number(t[2]);for(let[e,i,a]of Mi)if(n.includes(e))return{stage:t[1],pct:Math.round(i+r/100*(a-i))};return null}function U(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}function Pi(e){return typeof e!=`string`||e.length===0?[`--progress`]:[`--progress`,`-b`,e]}const Fi=ne;async function Ii(e){try{return await e.clone(Pi(e.branch)),{fellBack:!1}}catch(t){if(e.branch!==null&&Fi(t))return e.onFallback(e.branch),await e.clone(Pi(null)),{fellBack:!0};throw t}}function Li(e,t,n){return e===`https`&&t===`github.com`&&n}async function Ri(e,t,n,r=process.cwd()){let i=rt(e);if(!i)throw Error(`Invalid git URL: ${e}`);let a=t.dir?j(r,t.dir):j(r,i.name);if(M(a)&&Mt(a).length>0)throw Error(`Target directory is not empty: ${a}`);let o=S(),s=i.protocol===`https`&&i.hostname===`github.com`?await ji(i.owner,i.name):!1,c=Li(i.protocol,i.hostname,s)?{tier:`none`,credentialArgs:[]}:await Ai(i.hostname,o,{}),l=xe({baseDir:r,config:c.credentialArgs.length>=2?[c.credentialArgs[1]]:[],unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`}),u=-1;l.outputHandler((e,n,r)=>{r.on(`data`,e=>{let n=e.toString(`utf-8`);for(let e of n.split(`
22
- `)){let n=Ni(e);n&&n.pct!==u&&(u=n.pct,U(t.json,{type:`progress`,pct:n.pct,stage:n.stage}),t.json||process.stderr.write(`\r Cloning ${n.pct}%`))}})}),await Ii({branch:typeof t.branch==`string`&&t.branch.length>0?t.branch:null,clone:t=>l.clone(e,a,t),onFallback:e=>{U(t.json,{type:`branch-fallback`,branch:e}),t.json||process.stderr.write(`\n Branch '${e}' not found upstream — cloning default branch instead.\n`)}}),t.json||process.stderr.write(`
23
- `);try{let{runInit:e}=await import(`./init-B6JBvA4u.mjs`),n=await e({cwd:a,mcp:!1});if(n.contentUpdated.length>0){let e=`auto-init: updated ${n.contentUpdated.join(`, `)}`;t.json?U(!0,{type:`warning`,message:e}):process.stderr.write(` ${e}\n`)}}catch(e){let n=e instanceof Error?e.message:String(e);t.json?U(!0,{type:`warning`,message:`auto-init: ${n}`}):process.stderr.write(` auto-init: ${n}\n`)}try{zi(a)}catch(e){let n=e instanceof Error?e.message:String(e);t.json?U(!0,{type:`warning`,message:`git-exclude: ${n}`}):process.stderr.write(` git-exclude: ${n}\n`)}return a}function zi(e){let t=A(e,`.git`,`info`,`exclude`);if(!M(t))return`no-exclude`;let n=P(t,`utf-8`),r=new Set([`.ok`,`.ok/`,`/.ok`,`/.ok/`]);return n.split(`
24
- `).map(e=>e.trim()).some(e=>r.has(e))?`already-present`:(F(t,`${n}${n.length===0||n.endsWith(`
17
+ `)}function di(){return new t(`signout`).description(`Remove stored credentials`).option(`--host <host>`,`GitHub hostname`,`github.com`).action(async e=>{await ui(e)})}async function fi(e,t,n=ae){let r=n(e);if(r.available&&r.token)return{tier:`A`,token:r.token};let i=await t.get(e);return i==null?{tier:`none`}:{tier:i.gitProtocol===`ssh`?`C`:`B`,token:i.token}}async function pi(e,t){let{host:n,json:r}=e;R(n);let i=await fi(n,t);i.tier===`none`&&(r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!1})}\n`):process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new H({auth:i.token,...a?{baseUrl:a}:{}});try{let{data:e}=await o.users.getAuthenticated();r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!0,tier:i.tier,login:e.login,name:e.name,email:e.email})}\n`):process.stderr.write(`✓ Logged in as ${e.login} on ${n}\n`)}catch{r?process.stdout.write(JSON.stringify({type:`status`,host:n,authenticated:!1,error:`token invalid`})+`
18
+ `):process.stderr.write(`✗ Token invalid for ${n}\n`),process.exit(1)}}function mi(e){return new t(`status`).description(`Show authentication status`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await pi(t,await e())})}function hi(){let e=new t(`auth`);e.description(`GitHub authentication management`);let n=()=>ie();return e.addCommand(kn(n)),e.addCommand(mi(n)),e.addCommand(li(n)),e.addCommand(di()),e.addCommand(oi(n)),e.addCommand(sn(n)),e}const gi=[{name:`macos-home-path`,regex:/\/Users\/[^/]+\//g,replacement:`~/`},{name:`linux-home-path`,regex:/\/home\/[^/]+\//g,replacement:`~/`},{name:`github-pat`,regex:/\b(ghp_|gho_|ghu_|ghs_|ghr_)[A-Za-z0-9]{36,}\b/g,replacement:`[REDACTED-GH-PAT]`},{name:`aws-access-key`,regex:/\b(AKIA|ASIA|ABIA)[A-Z2-7]{16}\b/g,replacement:`[REDACTED-AWS-KEY]`},{name:`anthropic-key`,regex:/\bsk-ant-api03-[A-Za-z0-9_-]{20,}\b/g,replacement:`[REDACTED-ANTHROPIC]`},{name:`openai-key`,regex:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:`[REDACTED-OPENAI]`},{name:`bearer-token`,regex:/([Aa]uthorization:\s*[Bb]earer\s+)\S+/g,replacement:`$1[REDACTED]`},{name:`jwt`,regex:/eyJ[A-Za-z0-9_-]{8,}\.eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,replacement:`[REDACTED-JWT]`},{name:`url-credentials`,regex:/:\/\/[^/\s:@]+:[^/\s:@]+@/g,replacement:`://[REDACTED]@`}],_i=gi.map(e=>e.name);function vi(e){let t=new Set,n=0;return{redacted:e.split(`
19
+ `).map(e=>{let r=e;for(let{name:e,regex:i,replacement:a}of gi)i.lastIndex=0,i.test(r)&&(t.add(e),n++,i.lastIndex=0,r=r.replace(i,a));return r}).join(`
20
+ `),patterns:[...t],lineCount:n}}const yi=j(zt(),`.ok`,`logs`),bi=j(zt(),`.ok`,`bug-reports`);function xi(e){let t=j(e,`.ok`,`config.yml`);if(N(t))try{let e=F(t,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch{}return N(j(e,`.ok`))?Qt(`sha256`).update(M(e)).digest(`hex`).slice(0,12):null}function Si(){let e={timestamp:new Date().toISOString(),platform:Vt(),osType:Gt(),osRelease:Ht(),hostname:`[redacted]`,uptime:Kt(),freeMem:Rt(),totalMem:Wt(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=gt(`sw_vers -productVersion 2>/dev/null`,{encoding:`utf8`}).trim()}catch{}try{let t=j(__dirname,`..`,`..`,`package.json`);N(t)&&(e.okVersion=JSON.parse(F(t,`utf8`)).version)}catch{}return e}function Ci(e){if(!N(yi))return{files:[],dir:yi};let t=jt(yi).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>j(yi,e));if(e&&t.length>0){let n=t.filter(t=>{try{return F(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});n.length>0&&(t=n)}return{files:t,dir:yi}}function wi(e){let t=j(e,`.ok`,`local`);return N(t)?{files:[`server.lock`,`last-spawn-error.log`].map(e=>j(t,e)).filter(e=>N(e)),dir:t}:{files:[],dir:null}}function Ti(e){let t=j(e,`.ok`,`local`,`logs`);return N(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>j(t,e)).filter(e=>N(e)),dir:t}:{files:[],dir:null}}async function Ei(t){let n=$l();P(bi,{recursive:!0});let r=j(bi,`${new Date().toISOString().replace(/[:.]/g,`-`)}-bugreport.zip`);n?.info({projectSlug:t.projectSlug},`gathering diagnostic data`);let i=Si(),{files:a}=Ci(t.projectSlug),{files:o}=wi(t.cwd),{files:s}=Ti(t.cwd);n?.info({logFileCount:a.length,lockFileCount:o.length,localSinkFileCount:s.length},`files collected`);let c=[],l=[],{ZipFile:u}=await import(`./yazl-CJayzk0b.mjs`).then(t=>e(t.default,1)),d=new u;for(let e of a)try{let{redacted:t,patterns:n,lineCount:r}=vi(F(e,`utf8`)),i=`logs/${A(e)}`;d.addBuffer(Buffer.from(t,`utf8`),i),l.push(i),n.length>0&&c.push({file:i,lineCount:r,patterns:n})}catch{}for(let e of o)try{let{redacted:t,patterns:n,lineCount:r}=vi(F(e,`utf8`)),i=`lockdir/${A(e)}`;d.addBuffer(Buffer.from(t,`utf8`),i),l.push(i),n.length>0&&c.push({file:i,lineCount:r,patterns:n})}catch{}for(let e of s)try{let{redacted:t,patterns:n,lineCount:r}=vi(F(e,`utf8`)),i=`local-logs/${A(e)}`;d.addBuffer(Buffer.from(t,`utf8`),i),l.push(i),n.length>0&&c.push({file:i,lineCount:r,patterns:n})}catch{}let f=JSON.stringify(i,null,2);d.addBuffer(Buffer.from(f,`utf8`),`sysinfo.json`),l.push(`sysinfo.json`);let p={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:t.projectSlug,files:l,redactions:c,sysinfo:i};d.addBuffer(Buffer.from(JSON.stringify(p,null,2),`utf8`),`MANIFEST.json`);let m=c.reduce((e,t)=>e+t.lineCount,0),h=[`# Bug Report Bundle`,``,`Generated: ${p.generatedAt}`,`Project: ${t.projectSlug??`(unscoped)`}`,`Discipline version: ${p.disciplineVersion}`,``,`## Contents`,``,...l.map(e=>`- ${e}`),``,`## Privacy`,``,`This bundle was auto-redacted before packaging.`,`Patterns checked: ${_i.join(`, `)}`,m>0?`${m} line(s) were scrubbed across ${c.length} file(s).`:`No redactions were needed.`,`See MANIFEST.json for the full redaction audit report.`,``,`This bundle is safe to attach to a GitHub issue.`].join(`
21
+ `);d.addBuffer(Buffer.from(h,`utf8`),`README.md`),d.end();let g=Dt(r);if(d.outputStream.pipe(g),await new Promise((e,t)=>{g.on(`close`,e),g.on(`error`,t)}),n?.info({bundlePath:r,fileCount:l.length,redactionCount:m},`bundle written`),process.stdout.write(`${r}\n`),m>0&&process.stderr.write(`ok bug-report: ${m} line(s) auto-redacted across ${c.length} file(s)\n`),!t.noReveal&&Vt()===`darwin`)try{_t(`/usr/bin/open`,[`-R`,r],{detached:!0,stdio:`ignore`}).unref()}catch{}return r}function Di(){return new t(`bug-report`).description(`Generate a diagnostic bundle for bug reporting`).option(`--reveal`,`Reveal the bundle in Finder (default: true)`,!0).option(`--no-reveal`,`Do not reveal the bundle in Finder`).action(async e=>{let t=process.cwd(),n=xi(t);try{await Ei({projectSlug:n,cwd:t,noReveal:!e.reveal})}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`ok bug-report: failed — ${t}\n`),process.exitCode=1}})}function U(e,t,n={}){let r=g(e,t);if(!N(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(F(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!f(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??y)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};let o=n.host??Bt();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Oi(e,t){let n=[];for(let[r,i]of[[`server`,e],[`ui`,t]])(i.status===`dead-pid`||i.status===`corrupt`)&&n.push({name:r,lockPath:i.lockPath,reason:i.status});return{prune:n}}function ki(e){let t=e.inspect??(t=>U(e.lockDir,t)),n=e.unlink??(e=>Ft(e)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Oi(t(`server`),t(`ui`));if(a.prune.length===0)return r(`No stale locks.`),{pruned:[],failed:[]};let o=[],s=[];for(let e of a.prune)try{n(e.lockPath),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}if(o.length>0){let e=o.map(e=>`${e.name} (${e.reason})`).join(`, `);r(`Pruned ${o.length} stale lock${o.length===1?``:`s`}: ${e}`)}return s.length>0&&i(`Failed to prune: ${s.map(({target:e,error:t})=>`${e.name} (${e.lockPath}): ${t}`).join(`; `)}`),{pruned:o,failed:s}}function Ai(e){return new t(`clean`).description(`Prune stale / corrupt open-knowledge lock files (never touches live locks)`).action(()=>{e(),ki({lockDir:w(process.cwd())}).failed.length>0&&(process.exitCode=1)})}async function ji(e,t,n={},r=ae){if(!n.skipGhDetect&&r().available)return{tier:`A`,credentialArgs:[`-c`,`credential.helper=!gh auth git-credential`]};let i=await t.get(e);return i==null?{tier:`none`,credentialArgs:[]}:{tier:i.gitProtocol===`ssh`?`C`:`B`,credentialArgs:[`-c`,`credential.helper=!open-knowledge auth git-credential`]}}async function Mi(e,t,n=fetch){let r=new AbortController,i=setTimeout(()=>r.abort(),5e3);try{return(await n(`https://api.github.com/repos/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{signal:r.signal,headers:{"User-Agent":`open-knowledge-cli`,Accept:`application/vnd.github+json`}})).status===200}catch{return!1}finally{clearTimeout(i)}}const Ni=[[`count`,0,10],[`compress`,10,20],[`receiv`,20,60],[`resolv`,60,100]];function Pi(e){let t=/^([\w ]+):\s+(\d+)%/.exec(e.trim());if(!t)return null;let n=t[1].toLowerCase(),r=Number(t[2]);for(let[e,i,a]of Ni)if(n.includes(e))return{stage:t[1],pct:Math.round(i+r/100*(a-i))};return null}function W(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}function Fi(e){return typeof e!=`string`||e.length===0?[`--progress`]:[`--progress`,`-b`,e]}const Ii=l;async function Li(e){try{return await e.clone(Fi(e.branch)),{fellBack:!1}}catch(t){if(e.branch!==null&&Ii(t))return e.onFallback(e.branch),await e.clone(Fi(null)),{fellBack:!0};throw t}}function Ri(e,t,n){return e===`https`&&t===`github.com`&&n}async function zi(e,t,n,r=process.cwd()){let i=rt(e);if(!i)throw Error(`Invalid git URL: ${e}`);let a=t.dir?M(r,t.dir):M(r,i.name);if(N(a)&&jt(a).length>0)throw Error(`Target directory is not empty: ${a}`);let o=S(),s=i.protocol===`https`&&i.hostname===`github.com`?await Mi(i.owner,i.name):!1,c=Ri(i.protocol,i.hostname,s)?{tier:`none`,credentialArgs:[]}:await ji(i.hostname,o,{}),l=xe({baseDir:r,config:c.credentialArgs.length>=2?[c.credentialArgs[1]]:[],unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`}),u=-1;l.outputHandler((e,n,r)=>{r.on(`data`,e=>{let n=e.toString(`utf-8`);for(let e of n.split(`
22
+ `)){let n=Pi(e);n&&n.pct!==u&&(u=n.pct,W(t.json,{type:`progress`,pct:n.pct,stage:n.stage}),t.json||process.stderr.write(`\r Cloning ${n.pct}%`))}})}),await Li({branch:typeof t.branch==`string`&&t.branch.length>0?t.branch:null,clone:t=>l.clone(e,a,t),onFallback:e=>{W(t.json,{type:`branch-fallback`,branch:e}),t.json||process.stderr.write(`\n Branch '${e}' not found upstream — cloning default branch instead.\n`)}}),t.json||process.stderr.write(`
23
+ `);try{let{runInit:e}=await import(`./init-hMRmtJMS.mjs`),n=await e({cwd:a,mcp:!1});if(n.contentUpdated.length>0){let e=`auto-init: updated ${n.contentUpdated.join(`, `)}`;t.json?W(!0,{type:`warning`,message:e}):process.stderr.write(` ${e}\n`)}}catch(e){let n=e instanceof Error?e.message:String(e);t.json?W(!0,{type:`warning`,message:`auto-init: ${n}`}):process.stderr.write(` auto-init: ${n}\n`)}try{Bi(a)}catch(e){let n=e instanceof Error?e.message:String(e);t.json?W(!0,{type:`warning`,message:`git-exclude: ${n}`}):process.stderr.write(` git-exclude: ${n}\n`)}return a}function Bi(e){let t=j(e,`.git`,`info`,`exclude`);if(!N(t))return`no-exclude`;let n=F(t,`utf-8`),r=new Set([`.ok`,`.ok/`,`/.ok`,`/.ok/`]);return n.split(`
24
+ `).map(e=>e.trim()).some(e=>r.has(e))?`already-present`:(I(t,`${n}${n.length===0||n.endsWith(`
25
25
  `)?``:`
26
- `}.ok/\n`,`utf-8`),`appended`)}function Bi(e){return new t(`clone`).description(`Clone a git repository and open it`).argument(`<url>`,`Repository URL or owner/repo shorthand`).argument(`[dir]`,`Target directory (default: ./<repo-name>)`).option(`--json`,`Output JSONL progress events`,!1).option(`-b, --branch <branch>`,`Branch to check out (falls back to default if missing)`).action(async(t,n,r)=>{let i=e();try{let a=await Ri(t,{json:r.json,dir:n,branch:r.branch??null},i);if(r.json)U(!0,{type:`complete`,dir:a});else{process.stderr.write(`✓ Cloned to ${a}\n`),process.chdir(a);let{startCommand:t}=await import(`./start-9HUhgIY9.mjs`);await t(e).parseAsync([],{from:`user`})}}catch(e){let t=e instanceof Error?e.message:String(e);r.json?U(!0,{type:`error`,message:t}):process.stderr.write(`✗ ${t}\n`),process.exitCode=1}})}var Vi=y();const Hi=[[`sync`],[`persistence`,`debounceMs`],[`persistence`,`maxDebounceMs`],[`server`,`port`],[`content`,`include`],[`content`,`exclude`]];function Ui(e={}){let t=e.log??(e=>console.error(e)),n=e.error??(e=>console.error(e)),r=e.loadConfigFn??it;try{let{sources:n}=r(e.cwd);return t(`✓ Configuration valid (sources: ${n.length===0?`defaults only`:n.join(`, `)})`),{ok:!0}}catch(e){return n(e instanceof Error?e.message:String(e)),{ok:!1}}}function Wi(e){let t=(0,Vi.parseDocument)(P(e,`utf-8`));if(t.errors.length>0)throw Error(`Could not parse ${e}: ${t.errors.map(e=>e.message).join(`; `)}`);let n=[];for(let e of Hi)t.hasIn(e)&&n.push(e.join(`.`));return n}function Gi(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ki(e){let t={};for(let n of e){let e=t;for(let t=0;t<n.length-1;t++){let r=n[t],i=e[r],a=Gi(i)?i:{};e[r]=a,e=a}e[n[n.length-1]]=null}return t}async function qi(e={}){let t=e.log??(e=>console.log(e)),n=e.error??(e=>console.error(e)),r=e.scope??`both`,i=e.dryRun??!1,a=e.cwd??process.cwd(),o=e.writeConfigPatchFn??Ce,s=[];(r===`project`||r===`both`)&&s.push({scope:`project`,absPath:$e(`project`,a,e.homedirOverride)}),(r===`user`||r===`both`)&&s.push({scope:`user`,absPath:$e(`user`,a,e.homedirOverride)});let c=[],u=!0;for(let{scope:t,absPath:n}of s){if(!M(n)){c.push({path:n,scope:t,found:[],removed:[]});continue}let r;try{r=Wi(n)}catch(e){let r=e instanceof Error?e.message:String(e);c.push({path:n,scope:t,found:[],removed:[],error:r}),u=!1;continue}if(r.length===0||i){c.push({path:n,scope:t,found:r,removed:[]});continue}let s=await o({cwd:a,scope:t,patch:Ki(Hi.filter(e=>r.includes(e.join(`.`)))),homedirOverride:e.homedirOverride});if(!s.ok){c.push({path:n,scope:t,found:r,removed:[],error:l(s.error)}),u=!1;continue}c.push({path:n,scope:t,found:r,removed:r})}for(let e of c)e.error&&n(`✗ ${e.path}: ${e.error}`);let d=c.some(e=>e.error!==void 0),f=c.reduce((e,t)=>e+t.found.length,0);if(f===0&&!d)t(`No deprecated fields found.`);else if(f>0)for(let e of c)e.error||(e.found.length===0?t(` ${e.path}: no deprecated fields`):t(i?`[dry-run] ${e.path}: would remove ${e.found.length} field(s): ${e.found.join(`, `)}`:`✓ ${e.path}: removed ${e.removed.length} field(s): ${e.removed.join(`, `)}`));return{outcomes:c,ok:u}}function Ji(){let e=new t(`config`).description(`Inspect and maintain Open Knowledge configuration files`);return e.command(`validate`).description(`Validate the merged config (defaults → user → project)`).action(()=>{Ui({}).ok||(process.exitCode=1)}),e.command(`migrate`).description(`Remove deprecated config fields (sync.*, persistence.{debounceMs,maxDebounceMs}, server.port, content.{include,exclude}) idempotently`).option(`--scope <scope>`,`Which scope to migrate: project | user | both`,`both`).option(`--dry-run`,`Preview without writing`,!1).action(async e=>{let t=e.scope;if(t!==`project`&&t!==`user`&&t!==`both`){console.error(`Invalid --scope: ${t}. Expected: project | user | both`),process.exitCode=2;return}(await qi({scope:t,dryRun:e.dryRun})).ok||(process.exitCode=1)}),e}var Yi=e(et(),1),W=e(ft(),1);const Xi=new Set([`doc.name`]);function Zi(e){return`doc:${$t(`blake2b512`,{outputLength:32}).update(e).digest(`hex`).slice(0,8)}`}function Qi(e,t,n){let r=e.docNameMap[n];if(r===void 0){e.docNameMap[n]=t;return}if(r===t)return;let i=e.docNameCollisions[n];i?i.includes(t)||i.push(t):e.docNameCollisions[n]=[t]}function $i(e,t){let n=t.originalToHashed.get(e);if(n!==void 0)return n;let r=Zi(e);return t.originalToHashed.set(e,r),Qi(t,e,r),r}function ea(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function ta(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function na(e,t){if(typeof e==`string`)return ea(e,t.contentDir);if(Array.isArray(e))return e.map(e=>na(e,t));if(!ta(e))return e;let n=typeof e.key==`string`&&Xi.has(e.key)&&ta(e.value)&&typeof e.value.stringValue==`string`?e.value.stringValue:null,r={};for(let[i,a]of Object.entries(e))if(n!==null&&i===`value`&&ta(a)){let e=$i(n,t);r[i]={...a,stringValue:e}}else Xi.has(i)&&typeof a==`string`?r[i]=$i(a,t):r[i]=na(a,t);return r}function ra(e,t){let n=P(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
26
+ `}.ok/\n`,`utf-8`),`appended`)}function Vi(e){return new t(`clone`).description(`Clone a git repository and open it`).argument(`<url>`,`Repository URL or owner/repo shorthand`).argument(`[dir]`,`Target directory (default: ./<repo-name>)`).option(`--json`,`Output JSONL progress events`,!1).option(`-b, --branch <branch>`,`Branch to check out (falls back to default if missing)`).action(async(t,n,r)=>{let i=e();try{let a=await zi(t,{json:r.json,dir:n,branch:r.branch??null},i);if(r.json)W(!0,{type:`complete`,dir:a});else{process.stderr.write(`✓ Cloned to ${a}\n`),process.chdir(a);let{startCommand:t}=await import(`./start-CR8iLsn1.mjs`);await t(e).parseAsync([],{from:`user`})}}catch(e){let t=e instanceof Error?e.message:String(e);r.json?W(!0,{type:`error`,message:t}):process.stderr.write(`✗ ${t}\n`),process.exitCode=1}})}var Hi=p();const Ui=[[`sync`],[`persistence`,`debounceMs`],[`persistence`,`maxDebounceMs`],[`server`,`port`],[`content`,`include`],[`content`,`exclude`]];function Wi(e={}){let t=e.log??(e=>console.error(e)),n=e.error??(e=>console.error(e)),r=e.loadConfigFn??it;try{let{sources:n}=r(e.cwd);return t(`✓ Configuration valid (sources: ${n.length===0?`defaults only`:n.join(`, `)})`),{ok:!0}}catch(e){return n(e instanceof Error?e.message:String(e)),{ok:!1}}}function Gi(e){let t=(0,Hi.parseDocument)(F(e,`utf-8`));if(t.errors.length>0)throw Error(`Could not parse ${e}: ${t.errors.map(e=>e.message).join(`; `)}`);let n=[];for(let e of Ui)t.hasIn(e)&&n.push(e.join(`.`));return n}function Ki(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qi(e){let t={};for(let n of e){let e=t;for(let t=0;t<n.length-1;t++){let r=n[t],i=e[r],a=Ki(i)?i:{};e[r]=a,e=a}e[n[n.length-1]]=null}return t}async function Ji(e={}){let t=e.log??(e=>console.log(e)),n=e.error??(e=>console.error(e)),r=e.scope??`both`,i=e.dryRun??!1,a=e.cwd??process.cwd(),o=e.writeConfigPatchFn??Ce,s=[];(r===`project`||r===`both`)&&s.push({scope:`project`,absPath:$e(`project`,a,e.homedirOverride)}),(r===`user`||r===`both`)&&s.push({scope:`user`,absPath:$e(`user`,a,e.homedirOverride)});let c=[],l=!0;for(let{scope:t,absPath:n}of s){if(!N(n)){c.push({path:n,scope:t,found:[],removed:[]});continue}let r;try{r=Gi(n)}catch(e){let r=e instanceof Error?e.message:String(e);c.push({path:n,scope:t,found:[],removed:[],error:r}),l=!1;continue}if(r.length===0||i){c.push({path:n,scope:t,found:r,removed:[]});continue}let s=await o({cwd:a,scope:t,patch:qi(Ui.filter(e=>r.includes(e.join(`.`)))),homedirOverride:e.homedirOverride});if(!s.ok){c.push({path:n,scope:t,found:r,removed:[],error:ne(s.error)}),l=!1;continue}c.push({path:n,scope:t,found:r,removed:r})}for(let e of c)e.error&&n(`✗ ${e.path}: ${e.error}`);let u=c.some(e=>e.error!==void 0),d=c.reduce((e,t)=>e+t.found.length,0);if(d===0&&!u)t(`No deprecated fields found.`);else if(d>0)for(let e of c)e.error||(e.found.length===0?t(` ${e.path}: no deprecated fields`):t(i?`[dry-run] ${e.path}: would remove ${e.found.length} field(s): ${e.found.join(`, `)}`:`✓ ${e.path}: removed ${e.removed.length} field(s): ${e.removed.join(`, `)}`));return{outcomes:c,ok:l}}function Yi(){let e=new t(`config`).description(`Inspect and maintain Open Knowledge configuration files`);return e.command(`validate`).description(`Validate the merged config (defaults → user → project)`).action(()=>{Wi({}).ok||(process.exitCode=1)}),e.command(`migrate`).description(`Remove deprecated config fields (sync.*, persistence.{debounceMs,maxDebounceMs}, server.port, content.{include,exclude}) idempotently`).option(`--scope <scope>`,`Which scope to migrate: project | user | both`,`both`).option(`--dry-run`,`Preview without writing`,!1).action(async e=>{let t=e.scope;if(t!==`project`&&t!==`user`&&t!==`both`){console.error(`Invalid --scope: ${t}. Expected: project | user | both`),process.exitCode=2;return}(await Ji({scope:t,dryRun:e.dryRun})).ok||(process.exitCode=1)}),e}var Xi=e(et(),1),G=e(ft(),1);const Zi=new Set([`doc.name`]);function Qi(e){return`doc:${Qt(`blake2b512`,{outputLength:32}).update(e).digest(`hex`).slice(0,8)}`}function $i(e,t,n){let r=e.docNameMap[n];if(r===void 0){e.docNameMap[n]=t;return}if(r===t)return;let i=e.docNameCollisions[n];i?i.includes(t)||i.push(t):e.docNameCollisions[n]=[t]}function ea(e,t){let n=t.originalToHashed.get(e);if(n!==void 0)return n;let r=Qi(e);return t.originalToHashed.set(e,r),$i(t,e,r),r}function ta(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function na(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ra(e,t){if(typeof e==`string`)return ta(e,t.contentDir);if(Array.isArray(e))return e.map(e=>ra(e,t));if(!na(e))return e;let n=typeof e.key==`string`&&Zi.has(e.key)&&na(e.value)&&typeof e.value.stringValue==`string`?e.value.stringValue:null,r={};for(let[i,a]of Object.entries(e))if(n!==null&&i===`value`&&na(a)){let e=ea(n,t);r[i]={...a,stringValue:e}}else Zi.has(i)&&typeof a==`string`?r[i]=ea(a,t):r[i]=ra(a,t);return r}function ia(e,t){let n=F(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
27
27
  `),i=n.split(`
28
- `),a=[];for(let e=0;e<i.length;e++){let n=i[e]??``;if(!(e===i.length-1&&n===``)){if(n.length===0){a.push(``);continue}try{let e=na(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}F(e,r?`${a.join(`
28
+ `),a=[];for(let e=0;e<i.length;e++){let n=i[e]??``;if(!(e===i.length-1&&n===``)){if(n.length===0){a.push(``);continue}try{let e=ra(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}I(e,r?`${a.join(`
29
29
  `)}\n`:a.join(`
30
- `))}function ia(e,t){let n=P(e,`utf-8`);if(n.trim().length!==0)try{let r=na(JSON.parse(n),t),i=n.endsWith(`
30
+ `))}function aa(e,t){let n=F(e,`utf-8`);if(n.trim().length!==0)try{let r=ra(JSON.parse(n),t),i=n.endsWith(`
31
31
  `)?`
32
- `:``;F(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=ea(n,t.contentDir);r!==n&&F(e,r)}}function aa(e,t){let n=P(e,`utf-8`),r=ea(n,t.contentDir);r!==n&&F(e,r)}function oa(e){try{return Mt(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>A(e,t.name))}catch{return[]}}const sa=new Set([`agent-presence.json`,`runtime.json`]);function ca(e){let t={contentDir:e.contentDir,docNameMap:{},originalToHashed:new Map,docNameCollisions:{}};for(let n of[`telemetry`,`logs`,`process`])for(let r of oa(A(e.stagingDir,n)))r.endsWith(`.jsonl`)?ra(r,t):r.endsWith(`.json`)?ia(r,t):aa(r,t);for(let n of oa(A(e.stagingDir,`state`))){let e=n.slice(n.lastIndexOf(`/`)+1);sa.has(e)?ia(n,t):aa(n,t)}return{docNameMap:t.docNameMap,docNameCollisions:t.docNameCollisions}}const la=[`.ok`,`local`,`telemetry`],ua=[`.ok`,`local`,`logs`],da=`spans-current.jsonl`,fa=`spans-prev.jsonl`,pa=`server-current.jsonl`,ma=`server-prev.jsonl`;function ha(e){return A(e,...la,da)}function ga(e){return A(e,...la,fa)}function _a(e){return A(e,...ua,pa)}function va(e){return A(e,...ua,ma)}async function ya(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout(1e3)});return t.ok?await t.text():null}catch{return null}}function ba(e){let t=A(e,`.git`,`ok`);if(!M(t))return null;let n=k(`git`,[`-C`,t,`log`,`--oneline`,`-50`],{encoding:`utf-8`,timeout:2e3});return n.error||n.status!==0?null:n.stdout??``}function xa(){let e=process.env.OK_DESKTOP_VERSION,t=process.env.OK_DESKTOP_PACKAGED,n=process.env.OK_DESKTOP_CHANNEL;return e===void 0||t===void 0||n===void 0?null:{electronVersion:e,packaged:t===`1`||t.toLowerCase()===`true`,channel:n}}function Sa(){return{nodeVersion:process.version,platform:Ht(),arch:Rt()}}function Ca(){return process.env.OTEL_SDK_DISABLED===`false`}function wa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ta(e){if(!M(e))return{};let t;try{t=(0,Vi.parse)(P(e,`utf-8`))}catch(t){return console.warn(`[ok diagnose bundle] failed to parse ${e} for manifest config; manifest will report schema defaults. Reason: ${t instanceof Error?t.message:String(t)}`),{}}if(!wa(t))return{};let n=t.telemetry;if(!wa(n))return{};let r=n.localSink;return wa(r)?r:{}}function Ea(e){return typeof e==`boolean`?e:void 0}function Da(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function Oa(e){if(wa(e))return Da(e.maxBytes)}function ka(e){let t=Ta($e(`project`,e)),n=Ta($e(`project-local`,e));return{enabled:Ea(n.enabled)??Ea(t.enabled)??!0,spansMaxBytes:Oa(n.spans)??Oa(t.spans)??52428800,logsMaxBytes:Oa(n.logs)??Oa(t.logs)??26214400}}function Aa(e){return $t(`sha256`).update(e).digest(`hex`)}function ja(e){let t=P(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}function Ma(e){let t=P(e,`utf-8`),n=`"doc.name"`,r=0,i=t.indexOf(n);for(;i!==-1;)r++,i=t.indexOf(n,i+10);return r}function G(e,t){return M(e)?(N(bt(t),{recursive:!0}),Dt(e,t),!0):!1}function Na(e){let t=[],n=e=>{let r=Mt(e,{withFileTypes:!0});for(let i of r){let r=A(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const Pa=new Set([`.jsonl`]);function Fa(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Pa.has(e.slice(t))}function Ia(e,t){return St(e,t).split(Ct).join(`/`)}async function La(e){let t=j(e.contentDir),n=e.deps??{},r=n.fetchAgentPresence??ya,i=n.readShadowHead??ba,a=n.now??(()=>new Date),o=n.okVersion??(()=>tt),s=n.readDesktopEnv??xa,c=n.readRuntime??Sa,l=n.isOtlpPushEnabled??Ca,u=At(A(Wt(),`ok-bundle-`));N(A(u,`telemetry`),{recursive:!0}),N(A(u,`logs`),{recursive:!0}),N(A(u,`state`),{recursive:!0}),G(ha(t),A(u,`telemetry`,da)),G(ga(t),A(u,`telemetry`,fa)),G(_a(t),A(u,`logs`,pa)),G(va(t),A(u,`logs`,ma));let d=A(t,`.ok`,`local`),f=A(d,`server.lock`),p=`not-running`,m=`no server.lock`,h=null;if(M(f)){G(f,A(u,`state`,`server.lock`));try{let e=P(f,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?h=t.port:m=`lock present but no port`}catch{m=`lock present but unparseable`}}if(h!==null){let e=await r(h);e===null?m=`agent-presence endpoint at :${h} unreachable`:(F(A(u,`state`,`agent-presence.json`),e),p=`running`,m=``)}let g=i(t);g!==null&&F(A(u,`state`,`shadow-head.txt`),g),G(A(d,`last-spawn-error.log`),A(u,`state`,`last-spawn-error.log`));let _=c(),v=s(),ee={ok:{version:o(),nodeVersion:_.nodeVersion,platform:_.platform,arch:_.arch},host:{desktop:v}};F(A(u,`state`,`runtime.json`),`${JSON.stringify(ee,null,2)}\n`);let te=p===`running`?`running
33
- `:`not-running (${m})\n`;if(F(A(u,`state`,`server-status.txt`),te),e.processDir&&M(e.processDir)){let t=A(u,`process`);N(t,{recursive:!0}),Dt(e.processDir,t,{recursive:!0})}let y=null;e.redact===!0&&(y=ca({stagingDir:u,contentDir:t}));let b=ka(e.projectDir??t),x=Na(u),ne=[],S=0,re=0;for(let e of x){let t=Ia(u,e),n=Ft(e).size,r=Fa(t)?ja(e):0;ne.push({path:t,bytes:n,lines:r}),S+=n,t.startsWith(`telemetry/`)&&Fa(t)&&(re+=Ma(e))}let ie={schemaVersion:1,createdAt:a().toISOString(),ok:{version:o(),nodeVersion:_.nodeVersion,platform:_.platform,arch:_.arch},host:{desktop:v},contentDir:{pathSha256:Aa(t),absolutePath:y===null?t:`<CONTENT_DIR>`},telemetry:{localSink:b,otlpPushEnabled:l()},redaction:y===null?{applied:!1,docNameMapSidecar:null}:Object.keys(y.docNameCollisions).length>0?{applied:!0,docNameMapSidecar:null,docNameCollisions:y.docNameCollisions}:{applied:!0,docNameMapSidecar:null},serverStatus:p,files:ne};F(A(u,`manifest.json`),`${JSON.stringify(ie,null,2)}\n`);let ae=x.some(e=>{try{return P(e,`utf-8`).includes(t)}catch{return!1}}),oe={totalBytes:S,fileCount:ne.length,docNameCount:re,contentDirVisible:ae,redacted:y!==null},se=!1;return{stagingDir:u,manifest:ie,summary:oe,redactionMapPayload:y===null?null:{docNameMap:y.docNameMap,docNameCollisions:y.docNameCollisions},cleanup:()=>{se||(se=!0,Pt(u,{recursive:!0,force:!0}))}}}async function Ra(e){let{collected:t,outputPath:n}=e,r=bt(n);if(!M(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);if(t.redactionMapPayload!==null){let e=`${yt(n,`.zip`)}.docnames.json`,r={...t.manifest,redaction:{...t.manifest.redaction,applied:!0,docNameMapSidecar:e}};F(A(t.stagingDir,`manifest.json`),`${JSON.stringify(r,null,2)}\n`)}let i=new Yi.ZipFile,a=Na(t.stagingDir);for(let e of a){let n=Ia(t.stagingDir,e);i.addFile(e,n)}i.end(),t.redactionMapPayload!==null&&F(A(r,`${yt(n,`.zip`)}.docnames.json`),`${JSON.stringify({docNameMap:t.redactionMapPayload.docNameMap,docNameCollisions:t.redactionMapPayload.docNameCollisions},null,2)}\n`,{mode:384});let o=Ot(n);return i.outputStream.pipe(o),await new Promise((e,t)=>{o.on(`close`,e),o.on(`error`,t),i.outputStream.on(`error`,t)}),n}const K=2e3,za=2e3,Ba=[/cli\.mjs/,/(^|[\s/])(open-knowledge|ok)\s+(start|mcp|ui)(\s|$)/,/Open Knowledge(?:\.app| Helper)/,/(^|[\s/])bun([\s/]).*?(run dev|packages\/app|vite|hocuspocus)/,/(^|[\s/])node([\s/]).*?(packages\/(cli|app)|vite|hocuspocus)/,/(^|\s)--ok-lock-dir-b64=/,/(^|\s)--ok-project-path=/];function Va(e){return Ba.some(t=>t.test(e))}function Ha(e){let t=e.trim().split(/\s+/).find(e=>e.startsWith(`--ok-lock-dir-b64=`));if(t==null)return null;let n=t.slice(18);if(!n)return null;try{let e=Buffer.from(n,`base64url`).toString(`utf8`);return xt(e)?e:null}catch{return null}}function Ua(e){let t=e.indexOf(`--ok-project-path=`);if(t===-1)return null;let n=t+18,r=e.slice(n),i=r.search(/\s--/),a=(i===-1?r:r.slice(0,i)).trim();return a&&xt(a)?a:null}function Wa(e){let t=[];for(let n of e.split(`
34
- `)){let e=n.trim();if(!e)continue;let r=e.indexOf(` `);if(r===-1)continue;let i=e.slice(0,r),a=e.slice(r+1),o=Number.parseInt(i,10);!Number.isNaN(o)&&Va(a)&&t.push({pid:o,command:a})}return t}function Ga(e){let t=[],n=e.split(`
35
- `);for(let e=1;e<n.length;e++){let r=n[e]?.trim();if(!r)continue;let i=r.indexOf(` `);if(i===-1)continue;let a=r.slice(0,i),o=r.slice(i+1).trim(),s=Number.parseInt(a,10);!Number.isNaN(s)&&Va(o)&&t.push({pid:s,command:o})}return t}async function Ka(){let e=k(`pgrep`,[`-a`,`-f`,`cli\\.mjs|open-knowledge|Open Knowledge(\\.app| Helper)|--ok-lock-dir-b64=|--ok-project-path=|(^|[ /])ok[ ]+(start|mcp|ui)([ ]|$)|packages/(cli|app)|hocuspocus|vite`],{encoding:`utf-8`,timeout:K});if(!(e.error!=null&&e.error.code===`ENOENT`)){let t=e.stdout??``,n=Wa(t);if(n.length>0||t.trim()===``)return n}let t=k(`ps`,[`-axo`,`pid,command`],{encoding:`utf-8`,timeout:K});return t.error!=null||!t.stdout?[]:Ga(t.stdout)}function qa(e){let t=e.trim().split(/\s+/).filter(Boolean);for(let e of t){if(e.startsWith(`@`))continue;let t=yt(e);if(t===`open-knowledge`||t===`ok`||e.endsWith(`/packages/cli/src/cli.ts`)||e.endsWith(`/packages/cli/dist/cli.mjs`)||t===`cli.mjs`||t===`cli.ts`)return e}return null}function Ja(e){let t=k(`ps`,[`-p`,String(e),`-o`,`command=`],{encoding:`utf-8`,timeout:K});return t.error!=null||!t.stdout?null:t.stdout.trim()||null}function Ya(e){let t=k(`ps`,[`-p`,String(e),`-o`,`%cpu=,%mem=`],{encoding:`utf-8`,timeout:K});if(t.error!=null||!t.stdout)return null;let[n,r]=t.stdout.trim().split(/\s+/),i=Number.parseFloat(n??``),a=Number.parseFloat(r??``);return Number.isNaN(i)||Number.isNaN(a)?null:{cpuPercent:i,memPercent:a}}async function Xa(e){let t=k(`lsof`,[`-p`,String(e),`-a`,`-d`,`cwd`,`-Fn`],{encoding:`utf-8`,timeout:K});if(t.error!=null)return null;let n=t.stdout??``;for(let e of n.split(`
36
- `))if(e.startsWith(`n`)&&e.length>1)return e.slice(1);return null}function Za(e){let t=[],n=e.split(`
37
- `);for(let e=1;e<n.length;e++){let r=n[e]?.trim();if(!r)continue;let i=r.split(/\s+/);if(i.length<2)continue;let a=Number.parseInt(i[1]??``,10);Number.isNaN(a)||t.push(a)}return[...new Set(t)]}function Qa(e){return M(A(e,`server.lock`))||M(A(e,`ui.lock`))}function $a(e,t){for(let n of[A(t,`.ok`,`local`),A(t,`.ok`)])M(n)&&Qa(n)&&e.add(n)}function eo(e,t){let n=0,r=(t,i)=>{if(n>=za||(n++,$a(e,t),i>=3))return;let a;try{a=Mt(t)}catch{return}for(let e of a){if(n>=za)return;if(e===`node_modules`||e===`.git`||e===`Library`||e.startsWith(`.`)&&e!==`.ok`)continue;let a=A(t,e),o=!1;try{o=kt(a).isDirectory()}catch{continue}o&&r(a,i+1)}};r(t,0)}async function to(){let e=new Set,t=await Ka(),n=t.map(e=>Xa(e.pid)),r=await Promise.all(n);for(let n of t){let t=Ha(n.command);t!=null&&M(t)&&e.add(t);let r=Ua(n.command);r!=null&&$a(e,r)}for(let t of r)t!=null&&$a(e,t);let i=k(`lsof`,[`-iTCP`,`-sTCP:LISTEN`,`-nP`],{encoding:`utf-8`,timeout:K});if(i.error==null&&i.stdout){let n=Za(i.stdout),r=new Set(t.map(e=>e.pid)),a=n.filter(e=>!r.has(e)).map(e=>Xa(e)),o=await Promise.all(a);for(let t of o)t!=null&&$a(e,t)}(e.size===0||r.some(e=>e===`/`))&&eo(e,process.cwd());let a=new Map;for(let t of e)try{let e=await tn(t);a.set(e,e)}catch{a.set(t,t)}return[...a.values()]}function no(){let e=k(`bun`,[`--version`],{encoding:`utf-8`,timeout:5e3,env:{...process.env,LANG:`C`,LC_ALL:`C`}});return e.error?{ok:!1,error:e.error.message}:e.signal===`SIGTERM`?{ok:!1,error:`probe timed out`}:e.status===0?{ok:!0,version:e.stdout.trim()}:{ok:!1,error:e.stderr?.trim()||`exit code ${e.status}`}}function ro(e={}){let t=e.probe??no;return{name:`bun`,run:async()=>{let e=t();return e.ok?{name:`bun`,status:`pass`,summary:`bun ${e.version}`}:{name:`bun`,status:`fail`,summary:`bun not found on PATH`,remediation:`Install Bun: https://bun.sh/docs/installation`,detail:e.error}}}}function io(e={}){let t=e.loader??it;return{name:`config-yaml`,run:async e=>{if(!M(j(e.cwd,`.ok`,`config.yml`)))return{name:`config-yaml`,status:`warn`,summary:`.ok/${nt} not found (project not initialized)`,remediation:"Run `ok init` to scaffold the project."};try{let{config:n,sources:r}=t(e.cwd);return{name:`config-yaml`,status:`pass`,summary:`parses; content.dir = ${n.content.dir}`,detail:`sources: ${r.join(`, `)}`}}catch(e){let t=e instanceof Error?e.message:String(e);return{name:`config-yaml`,status:`fail`,summary:`.ok/${nt} failed to parse`,detail:t}}}}}function ao(e){try{return wt(e,Et.W_OK),{writable:!0}}catch(e){return{writable:!1,reason:e instanceof Error?e.message:String(e)}}}function oo(e={}){let t=e.loader??it,n=e.probeWritable??ao;return{name:`content-dir`,run:async e=>{if(!M(j(e.cwd,`.ok`,`config.yml`)))return{name:`content-dir`,status:`warn`,summary:`project not initialized`,remediation:"Run `ok init` to scaffold the project."};let r;try{let{config:n}=t(e.cwd);r=j(e.cwd,n.content.dir)}catch(e){return{name:`content-dir`,status:`fail`,summary:`content.dir unresolved (config invalid)`,detail:e instanceof Error?e.message:String(e)}}if(!M(r))return{name:`content-dir`,status:`fail`,summary:`content.dir does not exist: ${r}`,remediation:`Create the directory or fix \`content.dir\` in .ok/${nt}.`};if(!Ft(r).isDirectory())return{name:`content-dir`,status:`fail`,summary:`content.dir is not a directory: ${r}`};let i=n(r);return i.writable?{name:`content-dir`,status:`pass`,summary:`${r} (writable)`}:{name:`content-dir`,status:`fail`,summary:`content.dir is not writable: ${r}`,detail:i.reason}}}}function so(e={}){let t=e.assert??Ue;return{name:`git`,run:async()=>{try{let e=t();return{name:`git`,status:`pass`,summary:`git ${e.version} (${e.source} — ${e.resolvedPath})`}}catch(e){if(e instanceof je)return{name:`git`,status:`fail`,summary:`git not found`,remediation:e.guidance.options.map(e=>`${e.label}: ${e.command}`).join(` / `),detail:e.message};if(e instanceof Qe)return{name:`git`,status:`fail`,summary:`git ${e.detected} is older than required ${e.required}`,remediation:e.guidance.options.map(e=>`${e.label}: ${e.command}`).join(` / `),detail:e.message};throw e}}}}function co(e){let t=k(`codesign`,[`--verify`,`--deep`,`--strict`,e],{encoding:`utf-8`,timeout:5e3,env:{...process.env,LANG:`C`,LC_ALL:`C`}});return t.error?{ok:!1,stderr:t.error.message}:t.signal===`SIGTERM`?{ok:!1,stderr:`codesign probe timed out`}:{ok:t.status===0,stderr:(t.stderr??``).trim()}}function lo(e={}){let t=e.platform??process.platform,n=e.execPath??process.execPath,r=e.codesignVerify??co;return{name:`macos-codesig`,run:async()=>{if(t!==`darwin`)return{name:`macos-codesig`,status:`pass`,summary:`skipped on ${t} (macOS-only check)`};let e=n.indexOf(`/Contents/MacOS/`);if(e===-1)return{name:`macos-codesig`,status:`pass`,summary:`dev mode (no app bundle)`};let i=n.slice(0,e);if(i.startsWith(`/private/var/folders/`))return{name:`macos-codesig`,status:`fail`,summary:`app is running translocated (quarantine sandbox)`,remediation:`Drag Open Knowledge.app to /Applications/ and re-launch.`,detail:`bundlePath: ${i}`};let a=r(i);return a.ok?{name:`macos-codesig`,status:`pass`,summary:`signed bundle at ${i}`}:{name:`macos-codesig`,status:`fail`,summary:`codesign --verify failed`,remediation:`Re-download Open Knowledge from the official releases page.`,detail:`bundlePath: ${i}\n${a.stderr}`}}}}const uo=[`git`,`bun`,`config-yaml`,`content-dir`,`server-lock`,`shadow-repo`,`macos-codesig`];function fo(e){return uo.includes(e)}async function po(e,t,n={}){let r=n.timeoutMs??5e3,i,a=Math.round(r/1e3);try{let n=new Promise(t=>{i=setTimeout(()=>{t({name:e.name,status:`fail`,summary:`check timed out after ${a}s`})},r)}),o=e.run(t),s=await Promise.race([o,n]);return o.catch(()=>{}),s}catch(t){let n=t instanceof Error?t.message:String(t);return{name:e.name,status:`fail`,summary:`check crashed: ${n}`}}finally{i!==void 0&&clearTimeout(i)}}async function mo(e,t,n={}){let r=[];for(let i of e)r.push(await po(i,t,n));return r}function ho(e={}){let t=e.inspect??H;return{name:`server-lock`,run:async e=>{let n=w(e.cwd);if(!M(n))return{name:`server-lock`,status:`pass`,summary:"no server lock (no `.ok/local/` yet)"};let r=t(n,`server`);switch(r.status){case`missing`:return{name:`server-lock`,status:`pass`,summary:`no server holding the lock`};case`alive`:return{name:`server-lock`,status:`fail`,summary:`server lock held by pid ${r.lock.pid} on this host`,remediation:"Stop the other Open Knowledge process or run `ok stop`.",detail:`lockPath: ${r.lockPath}; port: ${r.lock.port}; started: ${r.lock.startedAt}`};case`foreign-host`:return{name:`server-lock`,status:`warn`,summary:`lock claimed by ${r.lock.hostname} (foreign host)`,remediation:`Run \`ok clean\` to prune the stale lock at ${j(n,`server.lock`)}.`,detail:`lockPath: ${r.lockPath}; pid: ${r.lock.pid}`};case`dead-pid`:return{name:`server-lock`,status:`warn`,summary:`stale lock for non-existent pid ${r.lock.pid}`,remediation:"Run `ok clean` to prune.",detail:`lockPath: ${r.lockPath}`};case`corrupt`:return{name:`server-lock`,status:`warn`,summary:`server.lock is corrupt (unparseable or invalid pid)`,remediation:`Delete ${r.lockPath} and rerun.`};default:return r}}}}function go(e={}){let t=e.resolve??we;return{name:`shadow-repo`,run:async e=>{if(!M(j(e.cwd,`.git`)))return{name:`shadow-repo`,status:`warn`,summary:`no .git/ at project root (shadow repo not initialized)`,remediation:"Run `ok start` once to initialize the shadow repo."};let n;try{n=t(e.cwd)}catch(e){if(e instanceof De||e instanceof Ze)return{name:`shadow-repo`,status:`fail`,summary:`cannot resolve shadow gitdir: ${e.message}`};throw e}if(!M(n))return{name:`shadow-repo`,status:`warn`,summary:`shadow repo at ${n} not yet initialized`,remediation:"Run `ok start` once to initialize the shadow repo."};let r=j(n,`HEAD`);if(!M(r))return{name:`shadow-repo`,status:`fail`,summary:`shadow repo at ${n} is missing HEAD`};let i;try{i=P(r,`utf-8`).trim()}catch(e){return{name:`shadow-repo`,status:`fail`,summary:`cannot read shadow HEAD: ${e instanceof Error?e.message:String(e)}`}}return{name:`shadow-repo`,status:`pass`,summary:`${n} (HEAD: ${i})`}}}}function _o(){return[so(),ro(),io(),oo(),ho(),go(),lo()]}function vo(e){switch(e){case`pass`:return W.default.green(`✓`);case`warn`:return W.default.yellow(`!`);case`fail`:return W.default.red(`✗`)}}function yo(e,t){let n=[`[${vo(e.status)}] ${e.name}: ${e.summary}`];if(e.remediation!==void 0&&e.status!==`pass`&&n.push(` → ${e.remediation}`),t&&e.detail!==void 0)for(let t of e.detail.split(`
38
- `))n.push(` ${W.default.dim(t)}`);return n}function bo(e){let t=e.filter(e=>e.status===`fail`).length,n=e.filter(e=>e.status===`warn`).length;if(t===0&&n===0)return`All checks passed`;let r=[];return t>0&&r.push(`${t} error${t===1?``:`s`}`),n>0&&r.push(`${n} warning${n===1?``:`s`}`),r.join(`, `)}async function xo(e,t={}){let n=t.checks??_o(),r=t.stdout??(e=>console.log(e)),i=t.stderr??(e=>console.error(e)),a=e.quiet??!1,o=e.json??!1,s=e.verbose??!1,c;if(e.check!==void 0){if(!fo(e.check))return i(W.default.red(`unknown check '${e.check}'. Valid: ${uo.join(`, `)}`)),2;let t=e.check,r=n.find(e=>e.name===t);if(!r)return i(W.default.red(`internal error: check '${e.check}' not registered`)),2;c=[r]}else c=[...n];let l={cwd:e.cwd},u=await mo(c,l,t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs});if(!a)if(o)for(let e of u)r(JSON.stringify(e));else{for(let e of u)for(let t of yo(e,s))r(t);r(``),r(bo(u))}return u.some(e=>e.status===`fail`)?1:0}function So(){return new t(`health`).description(`Run environment health checks (${uo.join(`, `)})`).option(`--json`,`Emit NDJSON (one CheckResult per line)`).option(`--verbose`,`Include detail field + probe context in human-readable output`).option(`--check <name>`,`Run only the named check. One of: ${uo.join(`, `)}`).option(`--quiet`,`Suppress output; exit code only`).action(async e=>{let t=await xo({cwd:process.cwd(),json:e.json,verbose:e.verbose,check:e.check,quiet:e.quiet});process.exit(t)})}function Co(e){let t=k(`ps`,[`-p`,String(e),`-o`,`%cpu=,%mem=,rss=,vsz=`],{encoding:`utf-8`,timeout:2e3});if(t.error||!t.stdout?.trim())return null;let[n,r,i,a]=t.stdout.trim().split(/\s+/),o=Number.parseFloat(n??``),s=Number.parseFloat(r??``),c=Number.parseInt(i??``,10),l=Number.parseInt(a??``,10);return Number.isNaN(o)||Number.isNaN(s)||Number.isNaN(c)||Number.isNaN(l)?null:{ts:new Date().toISOString(),pid:e,cpuPercent:o,memPercent:s,rssKb:c,vszKb:l}}function wo(e){let t=k(`lsof`,[`-p`,String(e)],{encoding:`utf-8`,timeout:5e3});return t.error||!t.stdout?null:t.stdout}function To(e){let t=[];for(let n of e.split(`
39
- `)){let e=n.match(/127\.0\.0\.1:(\d+)\s*\(LISTEN\)/);if(e){let n=Number.parseInt(e[1]??``,10);Number.isNaN(n)||t.push(n)}}return t}function Eo(e){let t=k(`curl`,[`-s`,`--max-time`,`2`,`http://127.0.0.1:${e}/json/list`],{encoding:`utf-8`,timeout:3e3});if(t.error||!t.stdout?.trim())return null;try{let e=JSON.parse(t.stdout);return Array.isArray(e)?e:null}catch{return null}}function Do(e,t,n){let r=A(At(A(Wt(),`ok-cdp-`)),`profiler.mjs`);return F(r,`import { writeFileSync } from 'node:fs';
32
+ `:``;I(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=ta(n,t.contentDir);r!==n&&I(e,r)}}function oa(e,t){let n=F(e,`utf-8`),r=ta(n,t.contentDir);r!==n&&I(e,r)}function sa(e){try{return jt(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>j(e,t.name))}catch{return[]}}const ca=new Set([`agent-presence.json`,`runtime.json`]);function la(e){let t={contentDir:e.contentDir,docNameMap:{},originalToHashed:new Map,docNameCollisions:{}};for(let n of[`telemetry`,`logs`,`process`])for(let r of sa(j(e.stagingDir,n)))r.endsWith(`.jsonl`)?ia(r,t):r.endsWith(`.json`)?aa(r,t):oa(r,t);for(let n of sa(j(e.stagingDir,`state`))){let e=n.slice(n.lastIndexOf(`/`)+1);ca.has(e)?aa(n,t):oa(n,t)}return{docNameMap:t.docNameMap,docNameCollisions:t.docNameCollisions}}const ua=[`.ok`,`local`,`telemetry`],da=[`.ok`,`local`,`logs`],fa=`spans-current.jsonl`,pa=`spans-prev.jsonl`,ma=`server-current.jsonl`,ha=`server-prev.jsonl`;function ga(e){return j(e,...ua,fa)}function _a(e){return j(e,...ua,pa)}function va(e){return j(e,...da,ma)}function ya(e){return j(e,...da,ha)}async function ba(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout(1e3)});return t.ok?await t.text():null}catch{return null}}function xa(e){let t=j(e,`.git`,`ok`);if(!N(t))return null;let n=k(`git`,[`-C`,t,`log`,`--oneline`,`-50`],{encoding:`utf-8`,timeout:2e3});return n.error||n.status!==0?null:n.stdout??``}function Sa(){let e=process.env.OK_DESKTOP_VERSION,t=process.env.OK_DESKTOP_PACKAGED,n=process.env.OK_DESKTOP_CHANNEL;return e===void 0||t===void 0||n===void 0?null:{electronVersion:e,packaged:t===`1`||t.toLowerCase()===`true`,channel:n}}function Ca(){return{nodeVersion:process.version,platform:Vt(),arch:Lt()}}function wa(){return process.env.OTEL_SDK_DISABLED===`false`}function Ta(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ea(e){if(!N(e))return{};let t;try{t=(0,Hi.parse)(F(e,`utf-8`))}catch(t){return console.warn(`[ok diagnose bundle] failed to parse ${e} for manifest config; manifest will report schema defaults. Reason: ${t instanceof Error?t.message:String(t)}`),{}}if(!Ta(t))return{};let n=t.telemetry;if(!Ta(n))return{};let r=n.localSink;return Ta(r)?r:{}}function Da(e){return typeof e==`boolean`?e:void 0}function Oa(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function ka(e){if(Ta(e))return Oa(e.maxBytes)}function Aa(e){let t=Ea($e(`project`,e)),n=Ea($e(`project-local`,e));return{enabled:Da(n.enabled)??Da(t.enabled)??!0,spansMaxBytes:ka(n.spans)??ka(t.spans)??52428800,logsMaxBytes:ka(n.logs)??ka(t.logs)??26214400}}function ja(e){return Qt(`sha256`).update(e).digest(`hex`)}function Ma(e){let t=F(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}function Na(e){let t=F(e,`utf-8`),n=`"doc.name"`,r=0,i=t.indexOf(n);for(;i!==-1;)r++,i=t.indexOf(n,i+10);return r}function K(e,t){return N(e)?(P(yt(t),{recursive:!0}),Et(e,t),!0):!1}function Pa(e){let t=[],n=e=>{let r=jt(e,{withFileTypes:!0});for(let i of r){let r=j(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const Fa=new Set([`.jsonl`]);function Ia(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Fa.has(e.slice(t))}function La(e,t){return xt(e,t).split(St).join(`/`)}async function Ra(e){let t=M(e.contentDir),n=e.deps??{},r=n.fetchAgentPresence??ba,i=n.readShadowHead??xa,a=n.now??(()=>new Date),o=n.okVersion??(()=>tt),s=n.readDesktopEnv??Sa,c=n.readRuntime??Ca,l=n.isOtlpPushEnabled??wa,u=kt(j(Ut(),`ok-bundle-`));P(j(u,`telemetry`),{recursive:!0}),P(j(u,`logs`),{recursive:!0}),P(j(u,`state`),{recursive:!0}),K(ga(t),j(u,`telemetry`,fa)),K(_a(t),j(u,`telemetry`,pa)),K(va(t),j(u,`logs`,ma)),K(ya(t),j(u,`logs`,ha));let d=j(t,`.ok`,`local`),f=j(d,`server.lock`),p=`not-running`,m=`no server.lock`,h=null;if(N(f)){K(f,j(u,`state`,`server.lock`));try{let e=F(f,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?h=t.port:m=`lock present but no port`}catch{m=`lock present but unparseable`}}if(h!==null){let e=await r(h);e===null?m=`agent-presence endpoint at :${h} unreachable`:(I(j(u,`state`,`agent-presence.json`),e),p=`running`,m=``)}let g=i(t);g!==null&&I(j(u,`state`,`shadow-head.txt`),g),K(j(d,`last-spawn-error.log`),j(u,`state`,`last-spawn-error.log`));let _=c(),v=s(),y={ok:{version:o(),nodeVersion:_.nodeVersion,platform:_.platform,arch:_.arch},host:{desktop:v}};I(j(u,`state`,`runtime.json`),`${JSON.stringify(y,null,2)}\n`);let ee=p===`running`?`running
33
+ `:`not-running (${m})\n`;if(I(j(u,`state`,`server-status.txt`),ee),e.processDir&&N(e.processDir)){let t=j(u,`process`);P(t,{recursive:!0}),Et(e.processDir,t,{recursive:!0})}let b=null;e.redact===!0&&(b=la({stagingDir:u,contentDir:t}));let x=Aa(e.projectDir??t),te=Pa(u),ne=[],S=0,re=0;for(let e of te){let t=La(u,e),n=Pt(e).size,r=Ia(t)?Ma(e):0;ne.push({path:t,bytes:n,lines:r}),S+=n,t.startsWith(`telemetry/`)&&Ia(t)&&(re+=Na(e))}let ie={schemaVersion:1,createdAt:a().toISOString(),ok:{version:o(),nodeVersion:_.nodeVersion,platform:_.platform,arch:_.arch},host:{desktop:v},contentDir:{pathSha256:ja(t),absolutePath:b===null?t:`<CONTENT_DIR>`},telemetry:{localSink:x,otlpPushEnabled:l()},redaction:b===null?{applied:!1,docNameMapSidecar:null}:Object.keys(b.docNameCollisions).length>0?{applied:!0,docNameMapSidecar:null,docNameCollisions:b.docNameCollisions}:{applied:!0,docNameMapSidecar:null},serverStatus:p,files:ne};I(j(u,`manifest.json`),`${JSON.stringify(ie,null,2)}\n`);let ae=te.some(e=>{try{return F(e,`utf-8`).includes(t)}catch{return!1}}),oe={totalBytes:S,fileCount:ne.length,docNameCount:re,contentDirVisible:ae,redacted:b!==null},se=!1;return{stagingDir:u,manifest:ie,summary:oe,redactionMapPayload:b===null?null:{docNameMap:b.docNameMap,docNameCollisions:b.docNameCollisions},cleanup:()=>{se||(se=!0,Nt(u,{recursive:!0,force:!0}))}}}async function za(e){let{collected:t,outputPath:n}=e,r=yt(n);if(!N(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);if(t.redactionMapPayload!==null){let e=`${A(n,`.zip`)}.docnames.json`,r={...t.manifest,redaction:{...t.manifest.redaction,applied:!0,docNameMapSidecar:e}};I(j(t.stagingDir,`manifest.json`),`${JSON.stringify(r,null,2)}\n`)}let i=new Xi.ZipFile,a=Pa(t.stagingDir);for(let e of a){let n=La(t.stagingDir,e);i.addFile(e,n)}i.end(),t.redactionMapPayload!==null&&I(j(r,`${A(n,`.zip`)}.docnames.json`),`${JSON.stringify({docNameMap:t.redactionMapPayload.docNameMap,docNameCollisions:t.redactionMapPayload.docNameCollisions},null,2)}\n`,{mode:384});let o=Dt(n);return i.outputStream.pipe(o),await new Promise((e,t)=>{o.on(`close`,e),o.on(`error`,t),i.outputStream.on(`error`,t)}),n}const q=2e3,Ba=2e3,Va=[/cli\.mjs/,/(^|[\s/])(open-knowledge|ok)\s+(start|mcp|ui)(\s|$)/,/Open Knowledge(?:\.app| Helper)/,/(^|[\s/])bun([\s/]).*?(run dev|packages\/app|vite|hocuspocus)/,/(^|[\s/])node([\s/]).*?(packages\/(cli|app)|vite|hocuspocus)/,/(^|\s)--ok-lock-dir-b64=/,/(^|\s)--ok-project-path=/];function Ha(e){return Va.some(t=>t.test(e))}function Ua(e){let t=e.trim().split(/\s+/).find(e=>e.startsWith(`--ok-lock-dir-b64=`));if(t==null)return null;let n=t.slice(18);if(!n)return null;try{let e=Buffer.from(n,`base64url`).toString(`utf8`);return bt(e)?e:null}catch{return null}}function Wa(e){let t=e.indexOf(`--ok-project-path=`);if(t===-1)return null;let n=t+18,r=e.slice(n),i=r.search(/\s--/),a=(i===-1?r:r.slice(0,i)).trim();return a&&bt(a)?a:null}function Ga(e){let t=[];for(let n of e.split(`
34
+ `)){let e=n.trim();if(!e)continue;let r=e.indexOf(` `);if(r===-1)continue;let i=e.slice(0,r),a=e.slice(r+1),o=Number.parseInt(i,10);!Number.isNaN(o)&&Ha(a)&&t.push({pid:o,command:a})}return t}function Ka(e){let t=[],n=e.split(`
35
+ `);for(let e=1;e<n.length;e++){let r=n[e]?.trim();if(!r)continue;let i=r.indexOf(` `);if(i===-1)continue;let a=r.slice(0,i),o=r.slice(i+1).trim(),s=Number.parseInt(a,10);!Number.isNaN(s)&&Ha(o)&&t.push({pid:s,command:o})}return t}async function qa(){let e=k(`pgrep`,[`-a`,`-f`,`cli\\.mjs|open-knowledge|Open Knowledge(\\.app| Helper)|--ok-lock-dir-b64=|--ok-project-path=|(^|[ /])ok[ ]+(start|mcp|ui)([ ]|$)|packages/(cli|app)|hocuspocus|vite`],{encoding:`utf-8`,timeout:q});if(!(e.error!=null&&e.error.code===`ENOENT`)){let t=e.stdout??``,n=Ga(t);if(n.length>0||t.trim()===``)return n}let t=k(`ps`,[`-axo`,`pid,command`],{encoding:`utf-8`,timeout:q});return t.error!=null||!t.stdout?[]:Ka(t.stdout)}function Ja(e){let t=e.trim().split(/\s+/).filter(Boolean);for(let e of t){if(e.startsWith(`@`))continue;let t=A(e);if(t===`open-knowledge`||t===`ok`||e.endsWith(`/packages/cli/src/cli.ts`)||e.endsWith(`/packages/cli/dist/cli.mjs`)||t===`cli.mjs`||t===`cli.ts`)return e}return null}function Ya(e){let t=k(`ps`,[`-p`,String(e),`-o`,`command=`],{encoding:`utf-8`,timeout:q});return t.error!=null||!t.stdout?null:t.stdout.trim()||null}function Xa(e){let t=k(`ps`,[`-p`,String(e),`-o`,`%cpu=,%mem=`],{encoding:`utf-8`,timeout:q});if(t.error!=null||!t.stdout)return null;let[n,r]=t.stdout.trim().split(/\s+/),i=Number.parseFloat(n??``),a=Number.parseFloat(r??``);return Number.isNaN(i)||Number.isNaN(a)?null:{cpuPercent:i,memPercent:a}}async function Za(e){let t=k(`lsof`,[`-p`,String(e),`-a`,`-d`,`cwd`,`-Fn`],{encoding:`utf-8`,timeout:q});if(t.error!=null)return null;let n=t.stdout??``;for(let e of n.split(`
36
+ `))if(e.startsWith(`n`)&&e.length>1)return e.slice(1);return null}function Qa(e){let t=[],n=e.split(`
37
+ `);for(let e=1;e<n.length;e++){let r=n[e]?.trim();if(!r)continue;let i=r.split(/\s+/);if(i.length<2)continue;let a=Number.parseInt(i[1]??``,10);Number.isNaN(a)||t.push(a)}return[...new Set(t)]}function $a(e){return N(j(e,`server.lock`))||N(j(e,`ui.lock`))}function eo(e,t){for(let n of[j(t,`.ok`,`local`),j(t,`.ok`)])N(n)&&$a(n)&&e.add(n)}function to(e,t){let n=0,r=(t,i)=>{if(n>=Ba||(n++,eo(e,t),i>=3))return;let a;try{a=jt(t)}catch{return}for(let e of a){if(n>=Ba)return;if(e===`node_modules`||e===`.git`||e===`Library`||e.startsWith(`.`)&&e!==`.ok`)continue;let a=j(t,e),o=!1;try{o=Ot(a).isDirectory()}catch{continue}o&&r(a,i+1)}};r(t,0)}async function no(){let e=new Set,t=await qa(),n=t.map(e=>Za(e.pid)),r=await Promise.all(n);for(let n of t){let t=Ua(n.command);t!=null&&N(t)&&e.add(t);let r=Wa(n.command);r!=null&&eo(e,r)}for(let t of r)t!=null&&eo(e,t);let i=k(`lsof`,[`-iTCP`,`-sTCP:LISTEN`,`-nP`],{encoding:`utf-8`,timeout:q});if(i.error==null&&i.stdout){let n=Qa(i.stdout),r=new Set(t.map(e=>e.pid)),a=n.filter(e=>!r.has(e)).map(e=>Za(e)),o=await Promise.all(a);for(let t of o)t!=null&&eo(e,t)}(e.size===0||r.some(e=>e===`/`))&&to(e,process.cwd());let a=new Map;for(let t of e)try{let e=await en(t);a.set(e,e)}catch{a.set(t,t)}return[...a.values()]}function ro(){let e=k(`bun`,[`--version`],{encoding:`utf-8`,timeout:5e3,env:{...process.env,LANG:`C`,LC_ALL:`C`}});return e.error?{ok:!1,error:e.error.message}:e.signal===`SIGTERM`?{ok:!1,error:`probe timed out`}:e.status===0?{ok:!0,version:e.stdout.trim()}:{ok:!1,error:e.stderr?.trim()||`exit code ${e.status}`}}function io(e={}){let t=e.probe??ro;return{name:`bun`,run:async()=>{let e=t();return e.ok?{name:`bun`,status:`pass`,summary:`bun ${e.version}`}:{name:`bun`,status:`fail`,summary:`bun not found on PATH`,remediation:`Install Bun: https://bun.sh/docs/installation`,detail:e.error}}}}function ao(e={}){let t=e.loader??it;return{name:`config-yaml`,run:async e=>{if(!N(M(e.cwd,`.ok`,`config.yml`)))return{name:`config-yaml`,status:`warn`,summary:`.ok/${nt} not found (project not initialized)`,remediation:"Run `ok init` to scaffold the project."};try{let{config:n,sources:r}=t(e.cwd);return{name:`config-yaml`,status:`pass`,summary:`parses; content.dir = ${n.content.dir}`,detail:`sources: ${r.join(`, `)}`}}catch(e){let t=e instanceof Error?e.message:String(e);return{name:`config-yaml`,status:`fail`,summary:`.ok/${nt} failed to parse`,detail:t}}}}}function oo(e){try{return Ct(e,Tt.W_OK),{writable:!0}}catch(e){return{writable:!1,reason:e instanceof Error?e.message:String(e)}}}function so(e={}){let t=e.loader??it,n=e.probeWritable??oo;return{name:`content-dir`,run:async e=>{if(!N(M(e.cwd,`.ok`,`config.yml`)))return{name:`content-dir`,status:`warn`,summary:`project not initialized`,remediation:"Run `ok init` to scaffold the project."};let r;try{let{config:n}=t(e.cwd);r=M(e.cwd,n.content.dir)}catch(e){return{name:`content-dir`,status:`fail`,summary:`content.dir unresolved (config invalid)`,detail:e instanceof Error?e.message:String(e)}}if(!N(r))return{name:`content-dir`,status:`fail`,summary:`content.dir does not exist: ${r}`,remediation:`Create the directory or fix \`content.dir\` in .ok/${nt}.`};if(!Pt(r).isDirectory())return{name:`content-dir`,status:`fail`,summary:`content.dir is not a directory: ${r}`};let i=n(r);return i.writable?{name:`content-dir`,status:`pass`,summary:`${r} (writable)`}:{name:`content-dir`,status:`fail`,summary:`content.dir is not writable: ${r}`,detail:i.reason}}}}function co(e={}){let t=e.assert??Ue;return{name:`git`,run:async()=>{try{let e=t();return{name:`git`,status:`pass`,summary:`git ${e.version} (${e.source} — ${e.resolvedPath})`}}catch(e){if(e instanceof je)return{name:`git`,status:`fail`,summary:`git not found`,remediation:e.guidance.options.map(e=>`${e.label}: ${e.command}`).join(` / `),detail:e.message};if(e instanceof Qe)return{name:`git`,status:`fail`,summary:`git ${e.detected} is older than required ${e.required}`,remediation:e.guidance.options.map(e=>`${e.label}: ${e.command}`).join(` / `),detail:e.message};throw e}}}}function lo(e){let t=k(`codesign`,[`--verify`,`--deep`,`--strict`,e],{encoding:`utf-8`,timeout:5e3,env:{...process.env,LANG:`C`,LC_ALL:`C`}});return t.error?{ok:!1,stderr:t.error.message}:t.signal===`SIGTERM`?{ok:!1,stderr:`codesign probe timed out`}:{ok:t.status===0,stderr:(t.stderr??``).trim()}}function uo(e={}){let t=e.platform??process.platform,n=e.execPath??process.execPath,r=e.codesignVerify??lo;return{name:`macos-codesig`,run:async()=>{if(t!==`darwin`)return{name:`macos-codesig`,status:`pass`,summary:`skipped on ${t} (macOS-only check)`};let e=n.indexOf(`/Contents/MacOS/`);if(e===-1)return{name:`macos-codesig`,status:`pass`,summary:`dev mode (no app bundle)`};let i=n.slice(0,e);if(i.startsWith(`/private/var/folders/`))return{name:`macos-codesig`,status:`fail`,summary:`app is running translocated (quarantine sandbox)`,remediation:`Drag Open Knowledge.app to /Applications/ and re-launch.`,detail:`bundlePath: ${i}`};let a=r(i);return a.ok?{name:`macos-codesig`,status:`pass`,summary:`signed bundle at ${i}`}:{name:`macos-codesig`,status:`fail`,summary:`codesign --verify failed`,remediation:`Re-download Open Knowledge from the official releases page.`,detail:`bundlePath: ${i}\n${a.stderr}`}}}}const fo=[`git`,`bun`,`config-yaml`,`content-dir`,`server-lock`,`shadow-repo`,`macos-codesig`];function po(e){return fo.includes(e)}async function mo(e,t,n={}){let r=n.timeoutMs??5e3,i,a=Math.round(r/1e3);try{let n=new Promise(t=>{i=setTimeout(()=>{t({name:e.name,status:`fail`,summary:`check timed out after ${a}s`})},r)}),o=e.run(t),s=await Promise.race([o,n]);return o.catch(()=>{}),s}catch(t){let n=t instanceof Error?t.message:String(t);return{name:e.name,status:`fail`,summary:`check crashed: ${n}`}}finally{i!==void 0&&clearTimeout(i)}}async function ho(e,t,n={}){let r=[];for(let i of e)r.push(await mo(i,t,n));return r}function go(e={}){let t=e.inspect??U;return{name:`server-lock`,run:async e=>{let n=w(e.cwd);if(!N(n))return{name:`server-lock`,status:`pass`,summary:"no server lock (no `.ok/local/` yet)"};let r=t(n,`server`);switch(r.status){case`missing`:return{name:`server-lock`,status:`pass`,summary:`no server holding the lock`};case`alive`:return{name:`server-lock`,status:`fail`,summary:`server lock held by pid ${r.lock.pid} on this host`,remediation:"Stop the other Open Knowledge process or run `ok stop`.",detail:`lockPath: ${r.lockPath}; port: ${r.lock.port}; started: ${r.lock.startedAt}`};case`foreign-host`:return{name:`server-lock`,status:`warn`,summary:`lock claimed by ${r.lock.hostname} (foreign host)`,remediation:`Run \`ok clean\` to prune the stale lock at ${M(n,`server.lock`)}.`,detail:`lockPath: ${r.lockPath}; pid: ${r.lock.pid}`};case`dead-pid`:return{name:`server-lock`,status:`warn`,summary:`stale lock for non-existent pid ${r.lock.pid}`,remediation:"Run `ok clean` to prune.",detail:`lockPath: ${r.lockPath}`};case`corrupt`:return{name:`server-lock`,status:`warn`,summary:`server.lock is corrupt (unparseable or invalid pid)`,remediation:`Delete ${r.lockPath} and rerun.`};default:return r}}}}function _o(e={}){let t=e.resolve??we;return{name:`shadow-repo`,run:async e=>{if(!N(M(e.cwd,`.git`)))return{name:`shadow-repo`,status:`warn`,summary:`no .git/ at project root (shadow repo not initialized)`,remediation:"Run `ok start` once to initialize the shadow repo."};let n;try{n=t(e.cwd)}catch(e){if(e instanceof De||e instanceof Ze)return{name:`shadow-repo`,status:`fail`,summary:`cannot resolve shadow gitdir: ${e.message}`};throw e}if(!N(n))return{name:`shadow-repo`,status:`warn`,summary:`shadow repo at ${n} not yet initialized`,remediation:"Run `ok start` once to initialize the shadow repo."};let r=M(n,`HEAD`);if(!N(r))return{name:`shadow-repo`,status:`fail`,summary:`shadow repo at ${n} is missing HEAD`};let i;try{i=F(r,`utf-8`).trim()}catch(e){return{name:`shadow-repo`,status:`fail`,summary:`cannot read shadow HEAD: ${e instanceof Error?e.message:String(e)}`}}return{name:`shadow-repo`,status:`pass`,summary:`${n} (HEAD: ${i})`}}}}function vo(){return[co(),io(),ao(),so(),go(),_o(),uo()]}function yo(e){switch(e){case`pass`:return G.default.green(`✓`);case`warn`:return G.default.yellow(`!`);case`fail`:return G.default.red(`✗`)}}function bo(e,t){let n=[`[${yo(e.status)}] ${e.name}: ${e.summary}`];if(e.remediation!==void 0&&e.status!==`pass`&&n.push(` → ${e.remediation}`),t&&e.detail!==void 0)for(let t of e.detail.split(`
38
+ `))n.push(` ${G.default.dim(t)}`);return n}function xo(e){let t=e.filter(e=>e.status===`fail`).length,n=e.filter(e=>e.status===`warn`).length;if(t===0&&n===0)return`All checks passed`;let r=[];return t>0&&r.push(`${t} error${t===1?``:`s`}`),n>0&&r.push(`${n} warning${n===1?``:`s`}`),r.join(`, `)}async function So(e,t={}){let n=t.checks??vo(),r=t.stdout??(e=>console.log(e)),i=t.stderr??(e=>console.error(e)),a=e.quiet??!1,o=e.json??!1,s=e.verbose??!1,c;if(e.check!==void 0){if(!po(e.check))return i(G.default.red(`unknown check '${e.check}'. Valid: ${fo.join(`, `)}`)),2;let t=e.check,r=n.find(e=>e.name===t);if(!r)return i(G.default.red(`internal error: check '${e.check}' not registered`)),2;c=[r]}else c=[...n];let l={cwd:e.cwd},u=await ho(c,l,t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs});if(!a)if(o)for(let e of u)r(JSON.stringify(e));else{for(let e of u)for(let t of bo(e,s))r(t);r(``),r(xo(u))}return u.some(e=>e.status===`fail`)?1:0}function Co(){return new t(`health`).description(`Run environment health checks (${fo.join(`, `)})`).option(`--json`,`Emit NDJSON (one CheckResult per line)`).option(`--verbose`,`Include detail field + probe context in human-readable output`).option(`--check <name>`,`Run only the named check. One of: ${fo.join(`, `)}`).option(`--quiet`,`Suppress output; exit code only`).action(async e=>{let t=await So({cwd:process.cwd(),json:e.json,verbose:e.verbose,check:e.check,quiet:e.quiet});process.exit(t)})}function wo(e){let t=k(`ps`,[`-p`,String(e),`-o`,`%cpu=,%mem=,rss=,vsz=`],{encoding:`utf-8`,timeout:2e3});if(t.error||!t.stdout?.trim())return null;let[n,r,i,a]=t.stdout.trim().split(/\s+/),o=Number.parseFloat(n??``),s=Number.parseFloat(r??``),c=Number.parseInt(i??``,10),l=Number.parseInt(a??``,10);return Number.isNaN(o)||Number.isNaN(s)||Number.isNaN(c)||Number.isNaN(l)?null:{ts:new Date().toISOString(),pid:e,cpuPercent:o,memPercent:s,rssKb:c,vszKb:l}}function To(e){let t=k(`lsof`,[`-p`,String(e)],{encoding:`utf-8`,timeout:5e3});return t.error||!t.stdout?null:t.stdout}function Eo(e){let t=[];for(let n of e.split(`
39
+ `)){let e=n.match(/127\.0\.0\.1:(\d+)\s*\(LISTEN\)/);if(e){let n=Number.parseInt(e[1]??``,10);Number.isNaN(n)||t.push(n)}}return t}function Do(e){let t=k(`curl`,[`-s`,`--max-time`,`2`,`http://127.0.0.1:${e}/json/list`],{encoding:`utf-8`,timeout:3e3});if(t.error||!t.stdout?.trim())return null;try{let e=JSON.parse(t.stdout);return Array.isArray(e)?e:null}catch{return null}}function Oo(e,t,n){let r=j(kt(j(Ut(),`ok-cdp-`)),`profiler.mjs`);return I(r,`import { writeFileSync } from 'node:fs';
40
40
  const ws = new WebSocket(${JSON.stringify(e)});
41
41
  let id = 0;
42
42
  const send = (m) => ws.send(JSON.stringify({ id: ++id, method: m }));
@@ -55,27 +55,27 @@ ws.addEventListener('message', ({ data }) => {
55
55
  ws.addEventListener('close', () => process.exit(0));
56
56
  ws.addEventListener('error', () => process.exit(1));
57
57
  setTimeout(() => process.exit(2), ${t+1e4});
58
- `),r}async function Oo(e,t,n,r,i){let a=Do(e,t,A(r,`cpu.cpuprofile`)),o=!1,s=_t(process.execPath,[a],{stdio:`ignore`}),c=setInterval(()=>{let e=Co(n);e&&i(e)},1e3);await new Promise(e=>{s.once(`close`,t=>{o=t===0,e()}),setTimeout(()=>{s.kill(),e()},t+12e3)}),clearInterval(c);try{Pt(A(a,`..`),{recursive:!0,force:!0})}catch{}return o}function ko(e){let t;try{t=JSON.parse(e)}catch{return`(could not parse profile)`}let n=new Map(t.nodes.map(e=>[e.id,e])),r=new Map;for(let e of t.nodes)for(let t of e.children??[])r.set(t,e.id);let i=new Map;for(let e of t.samples??[])i.set(e,(i.get(e)??0)+1);let a=t.samples?.length??0,o=t.endTime!=null&&t.startTime!=null?((t.endTime-t.startTime)/1e3).toFixed(2):`?`,s=[...i.entries()].sort((e,t)=>t[1]-e[1]).slice(0,10),c=[`samples ${a} duration_ms ${o}`,``,`Top leaf nodes`];for(let[e,t]of s){let r=n.get(e);if(!r)continue;let i=a>0?(t/a*100).toFixed(1):`0.0`,{functionName:o,url:s,lineNumber:l,columnNumber:u}=r.callFrame;c.push(` ${t} ${i}% id=${e} ${o||`(anonymous)`} ${s}:${l}:${u} hit=${r.hitCount??0}`)}c.push(``,`Top stacks`);let l=e=>{let t=[],i=e;for(;i!=null;){let e=n.get(i);if(!e)break;let{functionName:a,url:o,lineNumber:s,columnNumber:c}=e.callFrame;t.unshift(` ${a||`(anonymous)`} ${o} ${s} ${c}`),i=r.get(i)}return t};for(let[e,t]of s.slice(0,5)){let n=a>0?(t/a*100).toFixed(1):`0.0`;c.push(``,`--- ${t} ${n}%`,...l(e))}return c.join(`
59
- `)}async function Ao(e,t={}){let{pid:n,cpuProfileSecs:r=15,noInspector:i=!1}=e,a=t.log??(e=>console.log(e)),o=t.discover??to,s=t.inspect??H,c=t.resolveCommand??Ja,l=t.resolveUsage??Ya,u=t.collectLsofFn??wo,d=t.getEndpoints??Eo,f=t.profiler??Oo,p=t.isAlive??(e=>{try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}),m=t.sendSignal??((e,t)=>{process.kill(e,t)}),h=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),g=r*1e3;if(!p(n)){a(W.default.red(`No process with pid ${n} found.`));return}let _=await o(),v=null,ee=null;for(let e of _){let t=s(e,`server`);if(t.status!==`missing`&&t.status!==`corrupt`&&t.lock.pid===n){v=t.lock.worktreeRoot,ee={lockDir:e,state:t.status,lockPath:t.lockPath,lock:t.lock};break}}let te=new Date().toISOString().replace(/[:.]/g,`-`),y=e.output?e.output:v?A(v,`.ok`,`local`,`diagnostics`,`process-${n}-${te}`):A(process.cwd(),`ok-diagnose-${n}-${te}`);try{N(y,{recursive:!0})}catch(e){a(W.default.red(`Cannot create output directory ${y}: ${e.message}`));return}a(W.default.bold(`Diagnosing pid ${n}`)),a(`Output: ${y}`),a(``);let b=(e,t)=>{F(A(y,e),t),a(` wrote ${e}`)},x=c(n),ne=l(n);b(`metadata.json`,JSON.stringify({capturedAt:new Date().toISOString(),pid:n,command:x,usage:ne,lockInfo:ee},null,2)),a(` sampling lsof`);let S=u(n);if(S&&b(`lsof.txt`,S),!i){let e=S?To(S).find(e=>e>=9229&&e<=9299)??9229:9229,t=d(e);if(!t||t.length===0){a(` no inspector on :${e}, sending SIGUSR1 to pid ${n}`);try{m(n,`SIGUSR1`),await h(2e3),t=d(e)}catch(e){a(W.default.yellow(` SIGUSR1 delivery failed: ${e.message}`))}}if(t&&t.length>0){b(`inspector-endpoints.json`,JSON.stringify(t,null,2));let e=t[0].webSocketDebuggerUrl;if(e){a(` capturing ${r}s CPU profile`);let t=[];await f(e,g,n,y,e=>t.push(e))?a(` wrote cpu.cpuprofile`):a(W.default.yellow(` CPU profile capture failed`)),t.length>0&&b(`process-stats.jsonl`,`${t.map(e=>JSON.stringify(e)).join(`
60
- `)}\n`);try{b(`stacks.txt`,ko(P(A(y,`cpu.cpuprofile`),`utf-8`)))}catch(e){a(W.default.yellow(` stacks.txt skipped: ${e.message}`))}}}else a(W.default.yellow(` Node inspector unavailable — skipping CPU profile`))}a(``),a(W.default.yellow(`⚠ Before sharing, review what each file contains:`)),a(` metadata.json — content directory paths, lock file locations, CPU/MEM at capture time`),a(` lsof.txt — all open files, network connections, and private paths for this process`),a(` inspector-endpoints.json — Node debugger metadata (titles, URLs)`),a(` cpu.cpuprofile — function names and source file paths from your Node process`),a(` stacks.txt — call stacks derived from cpu.cpuprofile; includes source paths`),a(` process-stats.jsonl — CPU/MEM/RSS numbers only; safe to share`),a(``),a(`Bundle: ${W.default.bold(y)}`)}async function jo(e){let t=rn({input:process.stdin,output:process.stdout});try{return(await t.question(e)).trim()}finally{t.close()}}async function Mo(e){let t=At(A(Wt(),`ok-bundle-process-`));return await Ao({pid:e,output:t}),t}function No(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t.toFixed(1)} KB`;let n=t/1024;return n<1024?`${n.toFixed(1)} MB`:`${(n/1024).toFixed(1)} GB`}function Po(e){let t=e.trim().toLowerCase();return t===`y`||t===`yes`}function Fo(e,t,n){let{summary:r,manifest:i}=t;e(``),e(W.default.bold(`ok diagnose bundle — content summary`)),e(``),e(` Files: ${r.fileCount}`),e(` Total size: ${No(r.totalBytes)} uncompressed`),e(` doc.name attributes: ${r.docNameCount} occurrence(s) in telemetry${r.redacted?` (values hashed)`:``}`),e(` Content-dir path: ${r.contentDirVisible?`visible (${i.contentDir.absolutePath})`:`not visible`}`),e(` Redacted: ${r.redacted?`yes`:`no`}`),e(` Server status: ${i.serverStatus}`),e(` Output: ${n}`),e(``)}async function Io(e,t={}){let n=t.log??(e=>console.log(e)),r=t.prompt??jo,i=t.runProcessDiagnose??Mo,a=t.now??(()=>new Date),o;if(e.out!==void 0){o=e.out;let t=bt(o);if(!M(t))throw Error(`ok diagnose bundle: --out parent directory does not exist: ${t}. Create it first.`)}else{let t=a().toISOString().replace(/[:.]/g,`-`),n=A(e.contentDir,`.ok`,`local`,`diagnostics`);N(n,{recursive:!0}),o=A(n,`bundle-${t}.zip`)}let s;e.pid!==void 0&&(n(W.default.dim(`Running ok diagnose process ${e.pid} into a temp dir`)),s=await i(e.pid));let c=await La({contentDir:e.contentDir,projectDir:e.projectDir,processDir:s,redact:e.redact===!0,deps:t.collectDeps});try{return c.manifest.serverStatus===`not-running`&&n(W.default.yellow(` server not running — live state unavailable`)),Fo(n,c,o),e.yes!==!0&&!Po(await r(`Write bundle? [y/N]: `))?(n(W.default.dim(`Aborted; no bundle written.`)),{outputPath:null,declined:!0}):(await Ra({collected:c,outputPath:o}),n(W.default.bold(`Bundle: ${o}`)),{outputPath:o,declined:!1})}finally{if(c.cleanup(),s!==void 0)try{Pt(s,{recursive:!0,force:!0})}catch{}}}function Lo(){let e=new t(`diagnose`).description(`Diagnostic utilities for open-knowledge processes`);return e.command(`process`).description(`Capture a diagnostic bundle (metadata, lsof, CPU profile) for a running process`).argument(`<pid>`,`Process ID to diagnose`).option(`--cpu-profile <seconds>`,`CPU profile duration (default: 15)`,`15`).option(`--output <dir>`,`Output directory`).option(`--no-inspector`,`Collect metadata only; skip Node inspector and CPU profile`).action(async(e,t)=>{let n=Number.parseInt(e,10);(Number.isNaN(n)||n<=0)&&(console.error(W.default.red(`Invalid pid '${e}': must be a positive integer`)),process.exit(1));let r=Number.parseInt(t.cpuProfile,10);(Number.isNaN(r)||r<=0)&&(console.error(W.default.red(`--cpu-profile must be a positive integer`)),process.exit(1)),await Ao({pid:n,cpuProfileSecs:r,output:t.output,noInspector:!t.inspector})}),e.addCommand(So()),e.command(`bundle`).description(`Capture a support bundle (telemetry + logs + server state) into a zip suitable for bug reports`).option(`--pid <pid>`,"Include `ok diagnose process <pid>` output under process/ in the bundle").option(`--out <path>`,`Write the zip to this path instead of the default location`).option(`--yes`,`Skip the y/N prompt`).option(`--redact`,`Hash doc names and strip the content-dir prefix from the staged bundle`).action(async e=>{let t;e.pid!==void 0&&(t=Number.parseInt(e.pid,10),(Number.isNaN(t)||t<=0)&&(console.error(W.default.red(`Invalid --pid '${e.pid}': must be a positive integer`)),process.exit(1)));try{let{loadConfig:n}=await import(`./loader-BZt5z9V-.mjs`),{resolveContentDir:r}=await import(`./dist-D-usc-3E.mjs`),i=process.cwd(),{config:a}=n(i);await Io({contentDir:r(a,i),projectDir:i,pid:t,out:e.out,yes:e.yes===!0,redact:e.redact===!0})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(W.default.red(t)),process.exit(1)}}),e}const Ro=[` 1. ${O(`Customize`)} (sidebar) → ${O(`Skills`)}`,` 2. Click the ${O(`+`)} button`,` 3. Click ${O(`Create skill`)}`,` 4. Click ${O(`Upload skill`)}`,` 5. Pick ${O(`openknowledge.skill`)} from Downloads`],zo=pt(` Open the Claude Desktop App, then: ${O(`Customize → Skills → + → Create skill → Upload skill`)} → pick the file.`);function Bo(e){let t=[E(`Built ${e.outputPath}`),T(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…`)];return e.handoffError&&t.push(mt(` Handoff failed: ${e.handoffError.message}`)),t.push(zo),t.join(`
61
- `)}function Vo(e){let t=e.skillVersion??`unknown`,n=e.recordedAt??`unknown`;return[pt(`Open Knowledge skill ${O(`v${t}`)} already delivered to Claude Desktop.`),T(` Recorded at ${n} in ~/.ok/skill-state.yml`),T(` Use ${O(`--force`)} to rebuild and re-open the install dialog.`)].join(`
62
- `)}function Ho(e){let t=e.skillVersion?` • Skill v${e.skillVersion}`:``;return[E(`Built ${e.outputPath}`),T(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…${t}`),pt(` Claude Desktop App opened. Now upload the file manually:`),...Ro,T(` If Claude Desktop didn't open, open it and start at step 1. The file is at ${e.outputPath}`)].join(`
63
- `)}function Uo(e){return`${D(`Error:`)} ${e.buildError??`unknown build failure`}`}async function Wo(e={}){let t=await Je(e);return t.status===`failed`?{...t,message:Uo(t),exitCode:1}:t.status===`skip-current`?{...t,message:Vo(t),exitCode:0}:t.status===`installed`?{...t,message:Ho(t),exitCode:0}:{...t,message:Bo(t),exitCode:0}}function Go(){return new t(`install-skill`).description("Build openknowledge.skill and open the Claude Desktop App so you can upload it for Claude Chat & Cowork. Not needed for Claude — `ok init` covers that separately.").option(`--out <path>`,`Custom output path (default: ~/Downloads/openknowledge.skill)`).option(`--no-open`,`Build the file but skip the OS file-association handoff`).option(`--force`,`Bypass the install-state gate and rebuild unconditionally`).action(async e=>{let t=await Wo({out:e.out,noOpen:!e.open,force:e.force??!1});process.stdout.write(`${t.message}\n`),t.exitCode!==0&&process.exit(t.exitCode)})}const Ko=A(`Contents`,`Resources`,`cli`,`bin`,`ok.sh`),qo=/Contents\/Resources\/cli\/dist\/cli\.mjs$/;function Jo(e,t,n){return e===`darwin`?[A(t,`Applications`,`Open Knowledge.app`,Ko),A(`/Applications`,`Open Knowledge.app`,Ko)].find(e=>n.existsSync(e))??null:null}function Yo(e,t,n){if(n!==`darwin`)return{proxy:!1,suppressedBy:`platform`};let r=e.OK_BUNDLE_PROXY?.toLowerCase();return r===`0`||r===`false`?{proxy:!1,suppressedBy:`env`}:t.includes(`--no-bundle-proxy`)?{proxy:!1,suppressedBy:`flag`}:typeof t[1]==`string`&&qo.test(t[1])?{proxy:!1,suppressedBy:`self`}:{proxy:!0,suppressedBy:null}}function Xo(e){e.stderr.write(`${JSON.stringify({event:`mcp-bundle-proxy`,mode:e.mode,bundlePath:e.bundlePath,reason:e.reason,hint:`Suppress with --no-bundle-proxy or OK_BUNDLE_PROXY=0.`})}\n`)}function Zo(e){Xo({stderr:e.stderr,mode:`bundled`,bundlePath:e.bundlePath,reason:null});let t=e.spawnImpl??_t,n=e.exitProcess??(e=>process.exit(e)),r=e.now??(()=>Date.now()),i=r(),a=e.startupFailureWindowMs??1e3;return new Promise((o,s)=>{let c=t(e.bundlePath,e.argv.filter(e=>e!==`--no-bundle-proxy`),{env:{...e.env,OK_BUNDLE_PROXY:`0`},stdio:`inherit`}),l=e=>{c.kill(e)},u=()=>{process.off(`SIGTERM`,l),process.off(`SIGINT`,l)};process.on(`SIGTERM`,l),process.on(`SIGINT`,l),c.once(`error`,e=>{u(),s(e)}),c.once(`exit`,(e,t)=>{if(u(),t){s(Error(`bundle process exited by signal ${t}`));return}let o=e??0,c=r()-i;if(o!==0&&c<=a){s(Error(`bundle process exited during startup with code ${o}`));return}n(o)})})}function Qo(e){let t=e.scheduler??{setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)},n=e.initialBackoffMs??1e3,r=e.maxBackoffMs??3e4,i=e.rng??Math.random,a=e.createWebSocket??(e=>new WebSocket(e)),o=e.logger??null,s=e.log,c=null,l=null,u=!1,d=n;function f(e,t,n){try{o?o[e](t,n):s?.(t)}catch{}}function p(){if(u)return;l!==null&&t.clearTimeout(l);let e=d;d=Math.min(d*2,r);let n=i(),a=Math.max(1,Math.floor(e*(1-n/2)));f(`debug`,`scheduling reconnect`,{backoffMs:a,ceilMs:e}),l=t.setTimeout(()=>{l=null,m().catch(e=>f(`warn`,`reconnect failed`,{error:String(e)}))},a)}async function m(){if(u)return;let t;try{t=await e.resolveWsUrl()}catch(e){f(`warn`,`resolveWsUrl threw`,{error:String(e)}),p();return}if(!t){p();return}let r=e.connectionId?`&connectionId=${encodeURIComponent(e.connectionId)}`:``,i=e.connectionId&&e.displayName!==void 0&&e.clientName!==void 0&&e.colorSeed!==void 0?`&displayName=${encodeURIComponent(e.displayName)}&clientName=${encodeURIComponent(e.clientName)}&colorSeed=${encodeURIComponent(e.colorSeed)}`:``,o=`${t}/collab/keepalive?pid=${process.pid}${r}${i}`;try{c=a(o)}catch(e){f(`warn`,`WebSocket constructor failed`,{url:o,error:String(e)}),c=null,p();return}c.addEventListener(`open`,()=>{f(`info`,`connected`,{url:t}),d=n}),c.addEventListener(`close`,()=>{u||(f(`info`,`disconnected`,{url:t}),c=null,p())}),c.addEventListener(`error`,()=>{f(`debug`,`websocket error observed`,{url:t,readyState:c?.readyState,reason:`error-event`})})}return queueMicrotask(()=>{m().catch(e=>f(`warn`,`initial connect failed`,{error:String(e)}))}),{close:()=>{if(!u&&(u=!0,l!==null&&(t.clearTimeout(l),l=null),c)){try{c.close()}catch{}c=null}},isConnected:()=>c!==null&&c.readyState===1}}var $o=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
64
- `);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),es(t)}clear(){this._buffer=void 0}};function es(e){return He.parse(JSON.parse(e))}function ts(e){return JSON.stringify(e)+`
65
- `}var ns=class{constructor(e=Lt.stdin,t=Lt.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new $o,this._started=!1,this._ondata=e=>{this._readBuffer.append(e),this.processReadBuffer()},this._onerror=e=>{this.onerror?.(e)}}async start(){if(this._started)throw Error(`StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.`);this._started=!0,this._stdin.on(`data`,this._ondata),this._stdin.on(`error`,this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off(`data`,this._ondata),this._stdin.off(`error`,this._onerror),this._stdin.listenerCount(`data`)===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(t=>{let n=ts(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};function rs(e){if(e.platform!==`darwin`)return{kind:`unchanged`};let t;try{t=e.realpath(e.bundleAnchorPath)}catch(e){return{kind:`unreadable`,reason:e instanceof Error?e.message:String(e)}}let n;try{n=e.statInode(t)}catch(e){return{kind:`unreadable`,reason:e instanceof Error?e.message:String(e)}}return n===e.currentInode?{kind:`unchanged`}:{kind:`replaced`,currentInode:e.currentInode,onDiskInode:n}}function is(e){let t=e.setInterval??setInterval,n=e.clearInterval??clearInterval,r=e.intervalMs??3e5,i=!0,a=!1,o=!1,s=t(()=>{if(!i)return;let t;try{t=e.detect()}catch(t){e.log(`bundle identity check threw unexpectedly (contract violation): ${t instanceof Error?t.message:String(t)}`);return}if(t.kind===`unreadable`){o||(o=!0,e.log(`bundle identity check unreadable${t.reason?`: ${t.reason}`:``} — will retry on next tick`));return}o&&(o=!1,e.log(`bundle identity check recovered from unreadable`)),t.kind!==`unchanged`&&(i=!1,e.onReplaced(t))},r);return typeof s.unref==`function`&&s.unref(),{stop:()=>{a||(a=!0,i=!1,n(s))}}}function as(e,t){let n;try{n=t.realpathSync(e)}catch(e){t.log(`[mcp] bundle identity boot capture unreadable (realpath failed): ${e instanceof Error?e.message:String(e)}`);return}let r;try{r=t.statInoSync(n)}catch(e){t.log(`[mcp] bundle identity boot capture unreadable (stat failed): ${e instanceof Error?e.message:String(e)}`);return}return{resolvedPath:n,inode:r}}function os(e){let t=t=>{try{e.log(t)}catch{}},n=e.transport.onclose;e.transport.onclose=()=>{t(`[mcp] stdio transport closed (internal shutdown)`),n?.()},e.stdin.once(`end`,()=>t(`[mcp] stdin EOF (host closed pipe)`)),e.stdin.once(`close`,()=>t(`[mcp] stdin closed`)),e.process.on(`exit`,e=>{t(`[mcp] exit code=${e}`)}),e.process.on(`uncaughtExceptionMonitor`,(e,n)=>{t(`[mcp] uncaughtException origin=${n}: ${e instanceof Error?e.stack??e.message:String(e)}`)})}function ss(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function cs(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...ss(t.headers),...ss(r.headers)}:t.headers}):e}let ls;ls=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function us(e){return(await ls).getRandomValues(new Uint8Array(e))}async function ds(e){let t=``;for(;t.length<e;){let n=await us(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function fs(e){return await ds(e)}async function ps(e){let t=await(await ls).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function ms(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await fs(e);return{code_verifier:t,code_challenge:await ps(t)}}const q=i().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:Cn.custom,message:`URL must be parseable`,fatal:!0}),h}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),hs=o({resource:a().url(),authorization_servers:n(q).optional(),jwks_uri:a().url().optional(),scopes_supported:n(a()).optional(),bearer_methods_supported:n(a()).optional(),resource_signing_alg_values_supported:n(a()).optional(),resource_name:a().optional(),resource_documentation:a().optional(),resource_policy_uri:a().url().optional(),resource_tos_uri:a().url().optional(),tls_client_certificate_bound_access_tokens:v().optional(),authorization_details_types_supported:n(a()).optional(),dpop_signing_alg_values_supported:n(a()).optional(),dpop_bound_access_tokens_required:v().optional()}),gs=o({issuer:a(),authorization_endpoint:q,token_endpoint:q,registration_endpoint:q.optional(),scopes_supported:n(a()).optional(),response_types_supported:n(a()),response_modes_supported:n(a()).optional(),grant_types_supported:n(a()).optional(),token_endpoint_auth_methods_supported:n(a()).optional(),token_endpoint_auth_signing_alg_values_supported:n(a()).optional(),service_documentation:q.optional(),revocation_endpoint:q.optional(),revocation_endpoint_auth_methods_supported:n(a()).optional(),revocation_endpoint_auth_signing_alg_values_supported:n(a()).optional(),introspection_endpoint:a().optional(),introspection_endpoint_auth_methods_supported:n(a()).optional(),introspection_endpoint_auth_signing_alg_values_supported:n(a()).optional(),code_challenge_methods_supported:n(a()).optional(),client_id_metadata_document_supported:v().optional()}),_s=u({...o({issuer:a(),authorization_endpoint:q,token_endpoint:q,userinfo_endpoint:q.optional(),jwks_uri:q,registration_endpoint:q.optional(),scopes_supported:n(a()).optional(),response_types_supported:n(a()),response_modes_supported:n(a()).optional(),grant_types_supported:n(a()).optional(),acr_values_supported:n(a()).optional(),subject_types_supported:n(a()),id_token_signing_alg_values_supported:n(a()),id_token_encryption_alg_values_supported:n(a()).optional(),id_token_encryption_enc_values_supported:n(a()).optional(),userinfo_signing_alg_values_supported:n(a()).optional(),userinfo_encryption_alg_values_supported:n(a()).optional(),userinfo_encryption_enc_values_supported:n(a()).optional(),request_object_signing_alg_values_supported:n(a()).optional(),request_object_encryption_alg_values_supported:n(a()).optional(),request_object_encryption_enc_values_supported:n(a()).optional(),token_endpoint_auth_methods_supported:n(a()).optional(),token_endpoint_auth_signing_alg_values_supported:n(a()).optional(),display_values_supported:n(a()).optional(),claim_types_supported:n(a()).optional(),claims_supported:n(a()).optional(),service_documentation:a().optional(),claims_locales_supported:n(a()).optional(),ui_locales_supported:n(a()).optional(),claims_parameter_supported:v().optional(),request_parameter_supported:v().optional(),request_uri_parameter_supported:v().optional(),require_request_uri_registration:v().optional(),op_policy_uri:q.optional(),op_tos_uri:q.optional(),client_id_metadata_document_supported:v().optional()}).shape,...gs.pick({code_challenge_methods_supported:!0}).shape}),vs=u({access_token:a(),id_token:a().optional(),token_type:a(),expires_in:Tn().optional(),scope:a().optional(),refresh_token:a().optional()}).strip(),ys=u({error:a(),error_description:a().optional(),error_uri:a().optional()}),bs=q.optional().or(r(``).transform(()=>void 0)),xs=u({redirect_uris:n(q),token_endpoint_auth_method:a().optional(),grant_types:n(a()).optional(),response_types:n(a()).optional(),client_name:a().optional(),client_uri:q.optional(),logo_uri:bs,scope:a().optional(),contacts:n(a()).optional(),tos_uri:bs,policy_uri:a().optional(),jwks_uri:q.optional(),jwks:ee().optional(),software_id:a().optional(),software_version:a().optional(),software_statement:a().optional()}).strip(),Ss=u({client_id:a(),client_secret:a().optional(),client_id_issued_at:c().optional(),client_secret_expires_at:c().optional()}).strip(),Cs=xs.merge(Ss);u({error:a(),error_description:a().optional()}).strip(),u({token:a(),token_type_hint:a().optional()}).strip();function ws(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function Ts({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length<r.pathname.length)return!1;let i=n.pathname.endsWith(`/`)?n.pathname:n.pathname+`/`,a=r.pathname.endsWith(`/`)?r.pathname:r.pathname+`/`;return i.startsWith(a)}var J=class extends Error{constructor(e,t){super(e),this.errorUri=t,this.name=this.constructor.name}toResponseObject(){let e={error:this.errorCode,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}get errorCode(){return this.constructor.errorCode}},Es=class extends J{};Es.errorCode=`invalid_request`;var Ds=class extends J{};Ds.errorCode=`invalid_client`;var Os=class extends J{};Os.errorCode=`invalid_grant`;var ks=class extends J{};ks.errorCode=`unauthorized_client`;var As=class extends J{};As.errorCode=`unsupported_grant_type`;var js=class extends J{};js.errorCode=`invalid_scope`;var Ms=class extends J{};Ms.errorCode=`access_denied`;var Y=class extends J{};Y.errorCode=`server_error`;var Ns=class extends J{};Ns.errorCode=`temporarily_unavailable`;var Ps=class extends J{};Ps.errorCode=`unsupported_response_type`;var Fs=class extends J{};Fs.errorCode=`unsupported_token_type`;var Is=class extends J{};Is.errorCode=`invalid_token`;var Ls=class extends J{};Ls.errorCode=`method_not_allowed`;var Rs=class extends J{};Rs.errorCode=`too_many_requests`;var zs=class extends J{};zs.errorCode=`invalid_client_metadata`;var Bs=class extends J{};Bs.errorCode=`insufficient_scope`;var Vs=class extends J{};Vs.errorCode=`invalid_target`;const Hs={[Es.errorCode]:Es,[Ds.errorCode]:Ds,[Os.errorCode]:Os,[ks.errorCode]:ks,[As.errorCode]:As,[js.errorCode]:js,[Ms.errorCode]:Ms,[Y.errorCode]:Y,[Ns.errorCode]:Ns,[Ps.errorCode]:Ps,[Fs.errorCode]:Fs,[Is.errorCode]:Is,[Ls.errorCode]:Ls,[Rs.errorCode]:Rs,[zs.errorCode]:zs,[Bs.errorCode]:Bs,[Vs.errorCode]:Vs};var X=class extends Error{constructor(e){super(e??`Unauthorized`)}};function Us(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}const Ws=`code`,Gs=`S256`;function Ks(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&Us(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function qs(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Js(i,a,n);return;case`client_secret_post`:Ys(i,a,r);return;case`none`:Xs(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Js(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function Ys(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Xs(e,t){t.set(`client_id`,e)}async function Zs(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let{error:e,error_description:t,error_uri:r}=ys.parse(JSON.parse(n));return new(Hs[e]||Y)(t||``,r)}catch(e){return new Y(`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`)}}async function Qs(e,t){try{return await $s(e,t)}catch(n){if(n instanceof Ds||n instanceof ks)return await e.invalidateCredentials?.(`all`),await $s(e,t);if(n instanceof Os)return await e.invalidateCredentials?.(`tokens`),await $s(e,t);throw n}}async function $s(e,{serverUrl:t,authorizationCode:n,scope:r,resourceMetadataUrl:i,fetchFn:a}){let o=await e.discoveryState?.(),s,c,l,u=i;if(!u&&o?.resourceMetadataUrl&&(u=new URL(o.resourceMetadataUrl)),o?.authorizationServerUrl){if(c=o.authorizationServerUrl,s=o.resourceMetadata,l=o.authorizationServerMetadata??await dc(c,{fetchFn:a}),!s)try{s=await ic(t,{resourceMetadataUrl:u},a)}catch{}(l!==o.authorizationServerMetadata||s!==o.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(c),resourceMetadataUrl:u?.toString(),resourceMetadata:s,authorizationServerMetadata:l})}else{let n=await fc(t,{resourceMetadataUrl:u,fetchFn:a});c=n.authorizationServerUrl,l=n.authorizationServerMetadata,s=n.resourceMetadata,await e.saveDiscoveryState?.({authorizationServerUrl:String(c),resourceMetadataUrl:u?.toString(),resourceMetadata:s,authorizationServerMetadata:l})}let d=await tc(t,e,s),f=r||s?.scopes_supported?.join(` `)||e.clientMetadata.scope,p=await Promise.resolve(e.clientInformation());if(!p){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=l?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!ec(r))throw new zs(`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)p={client_id:r},await e.saveClientInformation?.(p);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);let t=await vc(c,{metadata:l,clientMetadata:e.clientMetadata,scope:f,fetchFn:a});await e.saveClientInformation(t),p=t}}let m=!e.redirectUrl;if(n!==void 0||m){let t=await _c(e,c,{metadata:l,resource:d,authorizationCode:n,fetchFn:a});return await e.saveTokens(t),`AUTHORIZED`}let h=await e.tokens();if(h?.refresh_token)try{let t=await gc(c,{metadata:l,clientInformation:p,refreshToken:h.refresh_token,resource:d,addClientAuthentication:e.addClientAuthentication,fetchFn:a});return await e.saveTokens(t),`AUTHORIZED`}catch(e){if(!(!(e instanceof J)||e instanceof Y))throw e}let g=e.state?await e.state():void 0,{authorizationUrl:_,codeVerifier:v}=await pc(c,{metadata:l,clientInformation:p,state:g,redirectUrl:e.redirectUrl,scope:f,resource:d});return await e.saveCodeVerifier(v),await e.redirectToAuthorization(_),`REDIRECT`}function ec(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function tc(e,t,n){let r=ws(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!Ts({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function nc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return{};let i=rc(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=rc(e,`scope`)||void 0,s=rc(e,`error`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s}}function rc(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=RegExp(`${t}=(?:"([^"]+)"|([^\\s,]+))`),i=n.match(r);return i?i[1]||i[2]:null}async function ic(e,t,n=fetch){let r=await lc(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.body?.cancel(),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.body?.cancel(),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return hs.parse(await r.json())}async function ac(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?ac(e,void 0,n):void 0;throw r}}function oc(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function sc(e,t,n=fetch){return await ac(e,{"MCP-Protocol-Version":t},n)}function cc(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function lc(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=oc(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await sc(o,a,n);return!r?.metadataUrl&&cc(s,i.pathname)&&(s=await sc(new URL(`/.well-known/${t}`,i),a,n)),s}function uc(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`}),r.push({url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function dc(e,{fetchFn:t=fetch,protocolVersion:n=Fe}={}){let r={"MCP-Protocol-Version":n,Accept:`application/json`},i=uc(e);for(let{url:e,type:n}of i){let i=await ac(e,r,t);if(i){if(!i.ok){if(await i.body?.cancel(),i.status>=400&&i.status<500)continue;throw Error(`HTTP ${i.status} trying to load ${n===`oauth`?`OAuth`:`OpenID provider`} metadata from ${e}`)}return n===`oauth`?gs.parse(await i.json()):_s.parse(await i.json())}}}async function fc(e,t){let n,r;try{n=await ic(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch{}r||=String(new URL(`/`,e));let i=await dc(r,{fetchFn:t?.fetchFn});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function pc(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(Ws))throw Error(`Incompatible auth server: does not support response type ${Ws}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(Gs))throw Error(`Incompatible auth server: does not support code challenge method ${Gs}`)}else s=new URL(`/authorize`,e);let c=await ms(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Ws),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,Gs),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,o.href),{authorizationUrl:s,codeVerifier:l}}function mc(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function hc(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,fetchFn:o}){let s=t?.token_endpoint?new URL(t.token_endpoint):new URL(`/token`,e),c=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,a.href),i?await i(c,n,s,t):r&&qs(Ks(r,t?.token_endpoint_auth_methods_supported??[]),r,c,n);let l=await(o??fetch)(s,{method:`POST`,headers:c,body:n});if(!l.ok)throw await Zs(l);return vs.parse(await l.json())}async function gc(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await hc(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function _c(e,t,{metadata:n,resource:r,authorizationCode:i,fetchFn:a}={}){let o=e.clientMetadata.scope,s;if(e.prepareTokenRequest&&(s=await e.prepareTokenRequest(o)),!s){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);s=mc(i,await e.codeVerifier(),e.redirectUrl)}let c=await e.clientInformation();return hc(t,{metadata:n,tokenRequestParams:s,clientInformation:c??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:a})}async function vc(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...n,...r===void 0?{}:{scope:r}})});if(!o.ok)throw await Zs(o);return Cs.parse(await o.json())}var yc=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function bc(e){}function xc(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=bc,onError:n=bc,onRetry:r=bc,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=Sc(`${a}${t}`);for(let e of n)d(e);a=r,o=!1}function d(e){if(e===``){p();return}if(e.startsWith(`:`)){i&&i(e.slice(e.startsWith(`: `)?2:1));return}let t=e.indexOf(`:`);if(t!==-1){let n=e.slice(0,t),r=e[t+1]===` `?2:1;f(n,e.slice(t+r),e);return}f(e,``,e)}function f(e,t,i){switch(e){case`event`:l=t;break;case`data`:c=`${c}${t}
66
- `;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new yc(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new yc(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){c.length>0&&t({id:s,event:l||void 0,data:c.endsWith(`
67
- `)?c.slice(0,-1):c}),s=void 0,c=``,l=``}function m(e={}){a&&e.consume&&d(a),o=!0,s=void 0,c=``,l=``,a=``}return{feed:u,reset:m}}function Sc(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
58
+ `),r}async function ko(e,t,n,r,i){let a=Oo(e,t,j(r,`cpu.cpuprofile`)),o=!1,s=_t(process.execPath,[a],{stdio:`ignore`}),c=setInterval(()=>{let e=wo(n);e&&i(e)},1e3);await new Promise(e=>{s.once(`close`,t=>{o=t===0,e()}),setTimeout(()=>{s.kill(),e()},t+12e3)}),clearInterval(c);try{Nt(j(a,`..`),{recursive:!0,force:!0})}catch{}return o}function Ao(e){let t;try{t=JSON.parse(e)}catch{return`(could not parse profile)`}let n=new Map(t.nodes.map(e=>[e.id,e])),r=new Map;for(let e of t.nodes)for(let t of e.children??[])r.set(t,e.id);let i=new Map;for(let e of t.samples??[])i.set(e,(i.get(e)??0)+1);let a=t.samples?.length??0,o=t.endTime!=null&&t.startTime!=null?((t.endTime-t.startTime)/1e3).toFixed(2):`?`,s=[...i.entries()].sort((e,t)=>t[1]-e[1]).slice(0,10),c=[`samples ${a} duration_ms ${o}`,``,`Top leaf nodes`];for(let[e,t]of s){let r=n.get(e);if(!r)continue;let i=a>0?(t/a*100).toFixed(1):`0.0`,{functionName:o,url:s,lineNumber:l,columnNumber:u}=r.callFrame;c.push(` ${t} ${i}% id=${e} ${o||`(anonymous)`} ${s}:${l}:${u} hit=${r.hitCount??0}`)}c.push(``,`Top stacks`);let l=e=>{let t=[],i=e;for(;i!=null;){let e=n.get(i);if(!e)break;let{functionName:a,url:o,lineNumber:s,columnNumber:c}=e.callFrame;t.unshift(` ${a||`(anonymous)`} ${o} ${s} ${c}`),i=r.get(i)}return t};for(let[e,t]of s.slice(0,5)){let n=a>0?(t/a*100).toFixed(1):`0.0`;c.push(``,`--- ${t} ${n}%`,...l(e))}return c.join(`
59
+ `)}async function jo(e,t={}){let{pid:n,cpuProfileSecs:r=15,noInspector:i=!1}=e,a=t.log??(e=>console.log(e)),o=t.discover??no,s=t.inspect??U,c=t.resolveCommand??Ya,l=t.resolveUsage??Xa,u=t.collectLsofFn??To,d=t.getEndpoints??Do,f=t.profiler??ko,p=t.isAlive??(e=>{try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}),m=t.sendSignal??((e,t)=>{process.kill(e,t)}),h=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),g=r*1e3;if(!p(n)){a(G.default.red(`No process with pid ${n} found.`));return}let _=await o(),v=null,y=null;for(let e of _){let t=s(e,`server`);if(t.status!==`missing`&&t.status!==`corrupt`&&t.lock.pid===n){v=t.lock.worktreeRoot,y={lockDir:e,state:t.status,lockPath:t.lockPath,lock:t.lock};break}}let ee=new Date().toISOString().replace(/[:.]/g,`-`),b=e.output?e.output:v?j(v,`.ok`,`local`,`diagnostics`,`process-${n}-${ee}`):j(process.cwd(),`ok-diagnose-${n}-${ee}`);try{P(b,{recursive:!0})}catch(e){a(G.default.red(`Cannot create output directory ${b}: ${e.message}`));return}a(G.default.bold(`Diagnosing pid ${n}`)),a(`Output: ${b}`),a(``);let x=(e,t)=>{I(j(b,e),t),a(` wrote ${e}`)},te=c(n),ne=l(n);x(`metadata.json`,JSON.stringify({capturedAt:new Date().toISOString(),pid:n,command:te,usage:ne,lockInfo:y},null,2)),a(` sampling lsof`);let S=u(n);if(S&&x(`lsof.txt`,S),!i){let e=S?Eo(S).find(e=>e>=9229&&e<=9299)??9229:9229,t=d(e);if(!t||t.length===0){a(` no inspector on :${e}, sending SIGUSR1 to pid ${n}`);try{m(n,`SIGUSR1`),await h(2e3),t=d(e)}catch(e){a(G.default.yellow(` SIGUSR1 delivery failed: ${e.message}`))}}if(t&&t.length>0){x(`inspector-endpoints.json`,JSON.stringify(t,null,2));let e=t[0].webSocketDebuggerUrl;if(e){a(` capturing ${r}s CPU profile`);let t=[];await f(e,g,n,b,e=>t.push(e))?a(` wrote cpu.cpuprofile`):a(G.default.yellow(` CPU profile capture failed`)),t.length>0&&x(`process-stats.jsonl`,`${t.map(e=>JSON.stringify(e)).join(`
60
+ `)}\n`);try{x(`stacks.txt`,Ao(F(j(b,`cpu.cpuprofile`),`utf-8`)))}catch(e){a(G.default.yellow(` stacks.txt skipped: ${e.message}`))}}}else a(G.default.yellow(` Node inspector unavailable — skipping CPU profile`))}a(``),a(G.default.yellow(`⚠ Before sharing, review what each file contains:`)),a(` metadata.json — content directory paths, lock file locations, CPU/MEM at capture time`),a(` lsof.txt — all open files, network connections, and private paths for this process`),a(` inspector-endpoints.json — Node debugger metadata (titles, URLs)`),a(` cpu.cpuprofile — function names and source file paths from your Node process`),a(` stacks.txt — call stacks derived from cpu.cpuprofile; includes source paths`),a(` process-stats.jsonl — CPU/MEM/RSS numbers only; safe to share`),a(``),a(`Bundle: ${G.default.bold(b)}`)}async function Mo(e){let t=nn({input:process.stdin,output:process.stdout});try{return(await t.question(e)).trim()}finally{t.close()}}async function No(e){let t=kt(j(Ut(),`ok-bundle-process-`));return await jo({pid:e,output:t}),t}function Po(e){if(e<1024)return`${e} B`;let t=e/1024;if(t<1024)return`${t.toFixed(1)} KB`;let n=t/1024;return n<1024?`${n.toFixed(1)} MB`:`${(n/1024).toFixed(1)} GB`}function Fo(e){let t=e.trim().toLowerCase();return t===`y`||t===`yes`}function Io(e,t,n){let{summary:r,manifest:i}=t;e(``),e(G.default.bold(`ok diagnose bundle — content summary`)),e(``),e(` Files: ${r.fileCount}`),e(` Total size: ${Po(r.totalBytes)} uncompressed`),e(` doc.name attributes: ${r.docNameCount} occurrence(s) in telemetry${r.redacted?` (values hashed)`:``}`),e(` Content-dir path: ${r.contentDirVisible?`visible (${i.contentDir.absolutePath})`:`not visible`}`),e(` Redacted: ${r.redacted?`yes`:`no`}`),e(` Server status: ${i.serverStatus}`),e(` Output: ${n}`),e(``)}async function Lo(e,t={}){let n=t.log??(e=>console.log(e)),r=t.prompt??Mo,i=t.runProcessDiagnose??No,a=t.now??(()=>new Date),o;if(e.out!==void 0){o=e.out;let t=yt(o);if(!N(t))throw Error(`ok diagnose bundle: --out parent directory does not exist: ${t}. Create it first.`)}else{let t=a().toISOString().replace(/[:.]/g,`-`),n=j(e.contentDir,`.ok`,`local`,`diagnostics`);P(n,{recursive:!0}),o=j(n,`bundle-${t}.zip`)}let s;e.pid!==void 0&&(n(G.default.dim(`Running ok diagnose process ${e.pid} into a temp dir`)),s=await i(e.pid));let c=await Ra({contentDir:e.contentDir,projectDir:e.projectDir,processDir:s,redact:e.redact===!0,deps:t.collectDeps});try{return c.manifest.serverStatus===`not-running`&&n(G.default.yellow(` server not running — live state unavailable`)),Io(n,c,o),e.yes!==!0&&!Fo(await r(`Write bundle? [y/N]: `))?(n(G.default.dim(`Aborted; no bundle written.`)),{outputPath:null,declined:!0}):(await za({collected:c,outputPath:o}),n(G.default.bold(`Bundle: ${o}`)),{outputPath:o,declined:!1})}finally{if(c.cleanup(),s!==void 0)try{Nt(s,{recursive:!0,force:!0})}catch{}}}function Ro(){let e=new t(`diagnose`).description(`Diagnostic utilities for open-knowledge processes`);return e.command(`process`).description(`Capture a diagnostic bundle (metadata, lsof, CPU profile) for a running process`).argument(`<pid>`,`Process ID to diagnose`).option(`--cpu-profile <seconds>`,`CPU profile duration (default: 15)`,`15`).option(`--output <dir>`,`Output directory`).option(`--no-inspector`,`Collect metadata only; skip Node inspector and CPU profile`).action(async(e,t)=>{let n=Number.parseInt(e,10);(Number.isNaN(n)||n<=0)&&(console.error(G.default.red(`Invalid pid '${e}': must be a positive integer`)),process.exit(1));let r=Number.parseInt(t.cpuProfile,10);(Number.isNaN(r)||r<=0)&&(console.error(G.default.red(`--cpu-profile must be a positive integer`)),process.exit(1)),await jo({pid:n,cpuProfileSecs:r,output:t.output,noInspector:!t.inspector})}),e.addCommand(Co()),e.command(`bundle`).description(`Capture a support bundle (telemetry + logs + server state) into a zip suitable for bug reports`).option(`--pid <pid>`,"Include `ok diagnose process <pid>` output under process/ in the bundle").option(`--out <path>`,`Write the zip to this path instead of the default location`).option(`--yes`,`Skip the y/N prompt`).option(`--redact`,`Hash doc names and strip the content-dir prefix from the staged bundle`).action(async e=>{let t;e.pid!==void 0&&(t=Number.parseInt(e.pid,10),(Number.isNaN(t)||t<=0)&&(console.error(G.default.red(`Invalid --pid '${e.pid}': must be a positive integer`)),process.exit(1)));try{let{loadConfig:n}=await import(`./loader-BsENTmPa.mjs`),{resolveContentDir:r}=await import(`./dist-CpYAbkBw.mjs`),i=process.cwd(),{config:a}=n(i);await Lo({contentDir:r(a,i),projectDir:i,pid:t,out:e.out,yes:e.yes===!0,redact:e.redact===!0})}catch(e){let t=e instanceof Error?e.message:String(e);console.error(G.default.red(t)),process.exit(1)}}),e}const zo=[` 1. ${O(`Customize`)} (sidebar) → ${O(`Skills`)}`,` 2. Click the ${O(`+`)} button`,` 3. Click ${O(`Create skill`)}`,` 4. Click ${O(`Upload skill`)}`,` 5. Pick ${O(`openknowledge.skill`)} from Downloads`],Bo=pt(` Open the Claude Desktop App, then: ${O(`Customize → Skills → + → Create skill → Upload skill`)} → pick the file.`);function Vo(e){let t=[E(`Built ${e.outputPath}`),T(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…`)];return e.handoffError&&t.push(mt(` Handoff failed: ${e.handoffError.message}`)),t.push(Bo),t.join(`
61
+ `)}function Ho(e){let t=e.skillVersion??`unknown`,n=e.recordedAt??`unknown`;return[pt(`Open Knowledge skill ${O(`v${t}`)} already delivered to Claude Desktop.`),T(` Recorded at ${n} in ~/.ok/skill-state.yml`),T(` Use ${O(`--force`)} to rebuild and re-open the install dialog.`)].join(`
62
+ `)}function Uo(e){let t=e.skillVersion?` • Skill v${e.skillVersion}`:``;return[E(`Built ${e.outputPath}`),T(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…${t}`),pt(` Claude Desktop App opened. Now upload the file manually:`),...zo,T(` If Claude Desktop didn't open, open it and start at step 1. The file is at ${e.outputPath}`)].join(`
63
+ `)}function Wo(e){return`${D(`Error:`)} ${e.buildError??`unknown build failure`}`}async function Go(e={}){let t=await Je(e);return t.status===`failed`?{...t,message:Wo(t),exitCode:1}:t.status===`skip-current`?{...t,message:Ho(t),exitCode:0}:t.status===`installed`?{...t,message:Uo(t),exitCode:0}:{...t,message:Vo(t),exitCode:0}}function Ko(){return new t(`install-skill`).description("Build openknowledge.skill and open the Claude Desktop App so you can upload it for Claude Chat & Cowork. Not needed for Claude — `ok init` covers that separately.").option(`--out <path>`,`Custom output path (default: ~/Downloads/openknowledge.skill)`).option(`--no-open`,`Build the file but skip the OS file-association handoff`).option(`--force`,`Bypass the install-state gate and rebuild unconditionally`).action(async e=>{let t=await Go({out:e.out,noOpen:!e.open,force:e.force??!1});process.stdout.write(`${t.message}\n`),t.exitCode!==0&&process.exit(t.exitCode)})}const qo=j(`Contents`,`Resources`,`cli`,`bin`,`ok.sh`),Jo=/Contents\/Resources\/cli\/dist\/cli\.mjs$/;function Yo(e,t,n){return e===`darwin`?[j(t,`Applications`,`Open Knowledge.app`,qo),j(`/Applications`,`Open Knowledge.app`,qo)].find(e=>n.existsSync(e))??null:null}function Xo(e,t,n){if(n!==`darwin`)return{proxy:!1,suppressedBy:`platform`};let r=e.OK_BUNDLE_PROXY?.toLowerCase();return r===`0`||r===`false`?{proxy:!1,suppressedBy:`env`}:t.includes(`--no-bundle-proxy`)?{proxy:!1,suppressedBy:`flag`}:typeof t[1]==`string`&&Jo.test(t[1])?{proxy:!1,suppressedBy:`self`}:{proxy:!0,suppressedBy:null}}function Zo(e){e.stderr.write(`${JSON.stringify({event:`mcp-bundle-proxy`,mode:e.mode,bundlePath:e.bundlePath,reason:e.reason,hint:`Suppress with --no-bundle-proxy or OK_BUNDLE_PROXY=0.`})}\n`)}function Qo(e){Zo({stderr:e.stderr,mode:`bundled`,bundlePath:e.bundlePath,reason:null});let t=e.spawnImpl??_t,n=e.exitProcess??(e=>process.exit(e)),r=e.now??(()=>Date.now()),i=r(),a=e.startupFailureWindowMs??1e3;return new Promise((o,s)=>{let c=t(e.bundlePath,e.argv.filter(e=>e!==`--no-bundle-proxy`),{env:{...e.env,OK_BUNDLE_PROXY:`0`},stdio:`inherit`}),l=e=>{c.kill(e)},u=()=>{process.off(`SIGTERM`,l),process.off(`SIGINT`,l)};process.on(`SIGTERM`,l),process.on(`SIGINT`,l),c.once(`error`,e=>{u(),s(e)}),c.once(`exit`,(e,t)=>{if(u(),t){s(Error(`bundle process exited by signal ${t}`));return}let o=e??0,c=r()-i;if(o!==0&&c<=a){s(Error(`bundle process exited during startup with code ${o}`));return}n(o)})})}function $o(e){let t=e.scheduler??{setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)},n=e.initialBackoffMs??1e3,r=e.maxBackoffMs??3e4,i=e.rng??Math.random,a=e.createWebSocket??(e=>new WebSocket(e)),o=e.logger??null,s=e.log,c=null,l=null,u=!1,d=n;function f(e,t,n){try{o?o[e](t,n):s?.(t)}catch{}}function p(){if(u)return;l!==null&&t.clearTimeout(l);let e=d;d=Math.min(d*2,r);let n=i(),a=Math.max(1,Math.floor(e*(1-n/2)));f(`debug`,`scheduling reconnect`,{backoffMs:a,ceilMs:e}),l=t.setTimeout(()=>{l=null,m().catch(e=>f(`warn`,`reconnect failed`,{error:String(e)}))},a)}async function m(){if(u)return;let t;try{t=await e.resolveWsUrl()}catch(e){f(`warn`,`resolveWsUrl threw`,{error:String(e)}),p();return}if(!t){p();return}let r=e.connectionId?`&connectionId=${encodeURIComponent(e.connectionId)}`:``,i=e.connectionId&&e.displayName!==void 0&&e.clientName!==void 0&&e.colorSeed!==void 0?`&displayName=${encodeURIComponent(e.displayName)}&clientName=${encodeURIComponent(e.clientName)}&colorSeed=${encodeURIComponent(e.colorSeed)}`:``,o=`${t}/collab/keepalive?pid=${process.pid}${r}${i}`;try{c=a(o)}catch(e){f(`warn`,`WebSocket constructor failed`,{url:o,error:String(e)}),c=null,p();return}c.addEventListener(`open`,()=>{f(`info`,`connected`,{url:t}),d=n}),c.addEventListener(`close`,()=>{u||(f(`info`,`disconnected`,{url:t}),c=null,p())}),c.addEventListener(`error`,()=>{f(`debug`,`websocket error observed`,{url:t,readyState:c?.readyState,reason:`error-event`})})}return queueMicrotask(()=>{m().catch(e=>f(`warn`,`initial connect failed`,{error:String(e)}))}),{close:()=>{if(!u&&(u=!0,l!==null&&(t.clearTimeout(l),l=null),c)){try{c.close()}catch{}c=null}},isConnected:()=>c!==null&&c.readyState===1}}var es=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
64
+ `);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),ts(t)}clear(){this._buffer=void 0}};function ts(e){return He.parse(JSON.parse(e))}function ns(e){return JSON.stringify(e)+`
65
+ `}var rs=class{constructor(e=It.stdin,t=It.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new es,this._started=!1,this._ondata=e=>{this._readBuffer.append(e),this.processReadBuffer()},this._onerror=e=>{this.onerror?.(e)}}async start(){if(this._started)throw Error(`StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.`);this._started=!0,this._stdin.on(`data`,this._ondata),this._stdin.on(`error`,this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off(`data`,this._ondata),this._stdin.off(`error`,this._onerror),this._stdin.listenerCount(`data`)===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(t=>{let n=ns(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};function is(e){if(e.platform!==`darwin`)return{kind:`unchanged`};let t;try{t=e.realpath(e.bundleAnchorPath)}catch(e){return{kind:`unreadable`,reason:e instanceof Error?e.message:String(e)}}let n;try{n=e.statInode(t)}catch(e){return{kind:`unreadable`,reason:e instanceof Error?e.message:String(e)}}return n===e.currentInode?{kind:`unchanged`}:{kind:`replaced`,currentInode:e.currentInode,onDiskInode:n}}function as(e){let t=e.setInterval??setInterval,n=e.clearInterval??clearInterval,r=e.intervalMs??3e5,i=!0,a=!1,o=!1,s=t(()=>{if(!i)return;let t;try{t=e.detect()}catch(t){e.log(`bundle identity check threw unexpectedly (contract violation): ${t instanceof Error?t.message:String(t)}`);return}if(t.kind===`unreadable`){o||(o=!0,e.log(`bundle identity check unreadable${t.reason?`: ${t.reason}`:``} — will retry on next tick`));return}o&&(o=!1,e.log(`bundle identity check recovered from unreadable`)),t.kind!==`unchanged`&&(i=!1,e.onReplaced(t))},r);return typeof s.unref==`function`&&s.unref(),{stop:()=>{a||(a=!0,i=!1,n(s))}}}function os(e,t){let n;try{n=t.realpathSync(e)}catch(e){t.log(`[mcp] bundle identity boot capture unreadable (realpath failed): ${e instanceof Error?e.message:String(e)}`);return}let r;try{r=t.statInoSync(n)}catch(e){t.log(`[mcp] bundle identity boot capture unreadable (stat failed): ${e instanceof Error?e.message:String(e)}`);return}return{resolvedPath:n,inode:r}}function ss(e){let t=t=>{try{e.log(t)}catch{}},n=e.transport.onclose;e.transport.onclose=()=>{t(`[mcp] stdio transport closed (internal shutdown)`),n?.()},e.stdin.once(`end`,()=>t(`[mcp] stdin EOF (host closed pipe)`)),e.stdin.once(`close`,()=>t(`[mcp] stdin closed`)),e.process.on(`exit`,e=>{t(`[mcp] exit code=${e}`)}),e.process.on(`uncaughtExceptionMonitor`,(e,n)=>{t(`[mcp] uncaughtException origin=${n}: ${e instanceof Error?e.stack??e.message:String(e)}`)})}function cs(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function ls(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...cs(t.headers),...cs(r.headers)}:t.headers}):e}let us;us=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function ds(e){return(await us).getRandomValues(new Uint8Array(e))}async function fs(e){let t=``;for(;t.length<e;){let n=await ds(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function ps(e){return await fs(e)}async function ms(e){let t=await(await us).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function hs(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await ps(e);return{code_verifier:t,code_challenge:await ms(t)}}const J=v().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:Sn.custom,message:`URL must be parseable`,fatal:!0}),ee}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),gs=s({resource:u().url(),authorization_servers:a(J).optional(),jwks_uri:u().url().optional(),scopes_supported:a(u()).optional(),bearer_methods_supported:a(u()).optional(),resource_signing_alg_values_supported:a(u()).optional(),resource_name:u().optional(),resource_documentation:u().optional(),resource_policy_uri:u().url().optional(),resource_tos_uri:u().url().optional(),tls_client_certificate_bound_access_tokens:o().optional(),authorization_details_types_supported:a(u()).optional(),dpop_signing_alg_values_supported:a(u()).optional(),dpop_bound_access_tokens_required:o().optional()}),_s=s({issuer:u(),authorization_endpoint:J,token_endpoint:J,registration_endpoint:J.optional(),scopes_supported:a(u()).optional(),response_types_supported:a(u()),response_modes_supported:a(u()).optional(),grant_types_supported:a(u()).optional(),token_endpoint_auth_methods_supported:a(u()).optional(),token_endpoint_auth_signing_alg_values_supported:a(u()).optional(),service_documentation:J.optional(),revocation_endpoint:J.optional(),revocation_endpoint_auth_methods_supported:a(u()).optional(),revocation_endpoint_auth_signing_alg_values_supported:a(u()).optional(),introspection_endpoint:u().optional(),introspection_endpoint_auth_methods_supported:a(u()).optional(),introspection_endpoint_auth_signing_alg_values_supported:a(u()).optional(),code_challenge_methods_supported:a(u()).optional(),client_id_metadata_document_supported:o().optional()}),vs=n({...s({issuer:u(),authorization_endpoint:J,token_endpoint:J,userinfo_endpoint:J.optional(),jwks_uri:J,registration_endpoint:J.optional(),scopes_supported:a(u()).optional(),response_types_supported:a(u()),response_modes_supported:a(u()).optional(),grant_types_supported:a(u()).optional(),acr_values_supported:a(u()).optional(),subject_types_supported:a(u()),id_token_signing_alg_values_supported:a(u()),id_token_encryption_alg_values_supported:a(u()).optional(),id_token_encryption_enc_values_supported:a(u()).optional(),userinfo_signing_alg_values_supported:a(u()).optional(),userinfo_encryption_alg_values_supported:a(u()).optional(),userinfo_encryption_enc_values_supported:a(u()).optional(),request_object_signing_alg_values_supported:a(u()).optional(),request_object_encryption_alg_values_supported:a(u()).optional(),request_object_encryption_enc_values_supported:a(u()).optional(),token_endpoint_auth_methods_supported:a(u()).optional(),token_endpoint_auth_signing_alg_values_supported:a(u()).optional(),display_values_supported:a(u()).optional(),claim_types_supported:a(u()).optional(),claims_supported:a(u()).optional(),service_documentation:u().optional(),claims_locales_supported:a(u()).optional(),ui_locales_supported:a(u()).optional(),claims_parameter_supported:o().optional(),request_parameter_supported:o().optional(),request_uri_parameter_supported:o().optional(),require_request_uri_registration:o().optional(),op_policy_uri:J.optional(),op_tos_uri:J.optional(),client_id_metadata_document_supported:o().optional()}).shape,..._s.pick({code_challenge_methods_supported:!0}).shape}),ys=n({access_token:u(),id_token:u().optional(),token_type:u(),expires_in:wn().optional(),scope:u().optional(),refresh_token:u().optional()}).strip(),bs=n({error:u(),error_description:u().optional(),error_uri:u().optional()}),xs=J.optional().or(i(``).transform(()=>void 0)),Ss=n({redirect_uris:a(J),token_endpoint_auth_method:u().optional(),grant_types:a(u()).optional(),response_types:a(u()).optional(),client_name:u().optional(),client_uri:J.optional(),logo_uri:xs,scope:u().optional(),contacts:a(u()).optional(),tos_uri:xs,policy_uri:u().optional(),jwks_uri:J.optional(),jwks:h().optional(),software_id:u().optional(),software_version:u().optional(),software_statement:u().optional()}).strip(),Cs=n({client_id:u(),client_secret:u().optional(),client_id_issued_at:te().optional(),client_secret_expires_at:te().optional()}).strip(),ws=Ss.merge(Cs);n({error:u(),error_description:u().optional()}).strip(),n({token:u(),token_type_hint:u().optional()}).strip();function Ts(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function Es({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length<r.pathname.length)return!1;let i=n.pathname.endsWith(`/`)?n.pathname:n.pathname+`/`,a=r.pathname.endsWith(`/`)?r.pathname:r.pathname+`/`;return i.startsWith(a)}var Y=class extends Error{constructor(e,t){super(e),this.errorUri=t,this.name=this.constructor.name}toResponseObject(){let e={error:this.errorCode,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}get errorCode(){return this.constructor.errorCode}},Ds=class extends Y{};Ds.errorCode=`invalid_request`;var Os=class extends Y{};Os.errorCode=`invalid_client`;var ks=class extends Y{};ks.errorCode=`invalid_grant`;var As=class extends Y{};As.errorCode=`unauthorized_client`;var js=class extends Y{};js.errorCode=`unsupported_grant_type`;var Ms=class extends Y{};Ms.errorCode=`invalid_scope`;var Ns=class extends Y{};Ns.errorCode=`access_denied`;var X=class extends Y{};X.errorCode=`server_error`;var Ps=class extends Y{};Ps.errorCode=`temporarily_unavailable`;var Fs=class extends Y{};Fs.errorCode=`unsupported_response_type`;var Is=class extends Y{};Is.errorCode=`unsupported_token_type`;var Ls=class extends Y{};Ls.errorCode=`invalid_token`;var Rs=class extends Y{};Rs.errorCode=`method_not_allowed`;var zs=class extends Y{};zs.errorCode=`too_many_requests`;var Bs=class extends Y{};Bs.errorCode=`invalid_client_metadata`;var Vs=class extends Y{};Vs.errorCode=`insufficient_scope`;var Hs=class extends Y{};Hs.errorCode=`invalid_target`;const Us={[Ds.errorCode]:Ds,[Os.errorCode]:Os,[ks.errorCode]:ks,[As.errorCode]:As,[js.errorCode]:js,[Ms.errorCode]:Ms,[Ns.errorCode]:Ns,[X.errorCode]:X,[Ps.errorCode]:Ps,[Fs.errorCode]:Fs,[Is.errorCode]:Is,[Ls.errorCode]:Ls,[Rs.errorCode]:Rs,[zs.errorCode]:zs,[Bs.errorCode]:Bs,[Vs.errorCode]:Vs,[Hs.errorCode]:Hs};var Z=class extends Error{constructor(e){super(e??`Unauthorized`)}};function Ws(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}const Gs=`code`,Ks=`S256`;function qs(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&Ws(e.token_endpoint_auth_method)&&(t.length===0||t.includes(e.token_endpoint_auth_method))?e.token_endpoint_auth_method:t.length===0?n?`client_secret_basic`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function Js(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Ys(i,a,n);return;case`client_secret_post`:Xs(i,a,r);return;case`none`:Zs(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Ys(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function Xs(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Zs(e,t){t.set(`client_id`,e)}async function Qs(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let{error:e,error_description:t,error_uri:r}=bs.parse(JSON.parse(n));return new(Us[e]||X)(t||``,r)}catch(e){return new X(`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`)}}async function $s(e,t){try{return await ec(e,t)}catch(n){if(n instanceof Os||n instanceof As)return await e.invalidateCredentials?.(`all`),await ec(e,t);if(n instanceof ks)return await e.invalidateCredentials?.(`tokens`),await ec(e,t);throw n}}async function ec(e,{serverUrl:t,authorizationCode:n,scope:r,resourceMetadataUrl:i,fetchFn:a}){let o=await e.discoveryState?.(),s,c,l,u=i;if(!u&&o?.resourceMetadataUrl&&(u=new URL(o.resourceMetadataUrl)),o?.authorizationServerUrl){if(c=o.authorizationServerUrl,s=o.resourceMetadata,l=o.authorizationServerMetadata??await fc(c,{fetchFn:a}),!s)try{s=await ac(t,{resourceMetadataUrl:u},a)}catch{}(l!==o.authorizationServerMetadata||s!==o.resourceMetadata)&&await e.saveDiscoveryState?.({authorizationServerUrl:String(c),resourceMetadataUrl:u?.toString(),resourceMetadata:s,authorizationServerMetadata:l})}else{let n=await pc(t,{resourceMetadataUrl:u,fetchFn:a});c=n.authorizationServerUrl,l=n.authorizationServerMetadata,s=n.resourceMetadata,await e.saveDiscoveryState?.({authorizationServerUrl:String(c),resourceMetadataUrl:u?.toString(),resourceMetadata:s,authorizationServerMetadata:l})}let d=await nc(t,e,s),f=r||s?.scopes_supported?.join(` `)||e.clientMetadata.scope,p=await Promise.resolve(e.clientInformation());if(!p){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);let t=l?.client_id_metadata_document_supported===!0,r=e.clientMetadataUrl;if(r&&!tc(r))throw new Bs(`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${r}`);if(t&&r)p={client_id:r},await e.saveClientInformation?.(p);else{if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);let t=await yc(c,{metadata:l,clientMetadata:e.clientMetadata,scope:f,fetchFn:a});await e.saveClientInformation(t),p=t}}let m=!e.redirectUrl;if(n!==void 0||m){let t=await vc(e,c,{metadata:l,resource:d,authorizationCode:n,fetchFn:a});return await e.saveTokens(t),`AUTHORIZED`}let h=await e.tokens();if(h?.refresh_token)try{let t=await _c(c,{metadata:l,clientInformation:p,refreshToken:h.refresh_token,resource:d,addClientAuthentication:e.addClientAuthentication,fetchFn:a});return await e.saveTokens(t),`AUTHORIZED`}catch(e){if(!(!(e instanceof Y)||e instanceof X))throw e}let g=e.state?await e.state():void 0,{authorizationUrl:_,codeVerifier:v}=await mc(c,{metadata:l,clientInformation:p,state:g,redirectUrl:e.redirectUrl,scope:f,resource:d});return await e.saveCodeVerifier(v),await e.redirectToAuthorization(_),`REDIRECT`}function tc(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function nc(e,t,n){let r=Ts(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!Es({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function rc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return{};let i=ic(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=ic(e,`scope`)||void 0,s=ic(e,`error`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s}}function ic(e,t){let n=e.headers.get(`WWW-Authenticate`);if(!n)return null;let r=RegExp(`${t}=(?:"([^"]+)"|([^\\s,]+))`),i=n.match(r);return i?i[1]||i[2]:null}async function ac(e,t,n=fetch){let r=await uc(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw await r?.body?.cancel(),Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw await r.body?.cancel(),Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return gs.parse(await r.json())}async function oc(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?oc(e,void 0,n):void 0;throw r}}function sc(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function cc(e,t,n=fetch){return await oc(e,{"MCP-Protocol-Version":t},n)}function lc(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function uc(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??`2025-11-25`,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=sc(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await cc(o,a,n);return!r?.metadataUrl&&lc(s,i.pathname)&&(s=await cc(new URL(`/.well-known/${t}`,i),a,n)),s}function dc(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`}),r.push({url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function fc(e,{fetchFn:t=fetch,protocolVersion:n=Fe}={}){let r={"MCP-Protocol-Version":n,Accept:`application/json`},i=dc(e);for(let{url:e,type:n}of i){let i=await oc(e,r,t);if(i){if(!i.ok){if(await i.body?.cancel(),i.status>=400&&i.status<500)continue;throw Error(`HTTP ${i.status} trying to load ${n===`oauth`?`OAuth`:`OpenID provider`} metadata from ${e}`)}return n===`oauth`?_s.parse(await i.json()):vs.parse(await i.json())}}}async function pc(e,t){let n,r;try{n=await ac(e,{resourceMetadataUrl:t?.resourceMetadataUrl},t?.fetchFn),n.authorization_servers&&n.authorization_servers.length>0&&(r=n.authorization_servers[0])}catch{}r||=String(new URL(`/`,e));let i=await fc(r,{fetchFn:t?.fetchFn});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function mc(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s;if(t){if(s=new URL(t.authorization_endpoint),!t.response_types_supported.includes(Gs))throw Error(`Incompatible auth server: does not support response type ${Gs}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(Ks))throw Error(`Incompatible auth server: does not support code challenge method ${Ks}`)}else s=new URL(`/authorize`,e);let c=await hs(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Gs),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,Ks),s.searchParams.set(`redirect_uri`,String(r)),a&&s.searchParams.set(`state`,a),i&&s.searchParams.set(`scope`,i),i?.includes(`offline_access`)&&s.searchParams.append(`prompt`,`consent`),o&&s.searchParams.set(`resource`,o.href),{authorizationUrl:s,codeVerifier:l}}function hc(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function gc(e,{metadata:t,tokenRequestParams:n,clientInformation:r,addClientAuthentication:i,resource:a,fetchFn:o}){let s=t?.token_endpoint?new URL(t.token_endpoint):new URL(`/token`,e),c=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`});a&&n.set(`resource`,a.href),i?await i(c,n,s,t):r&&Js(qs(r,t?.token_endpoint_auth_methods_supported??[]),r,c,n);let l=await(o??fetch)(s,{method:`POST`,headers:c,body:n});if(!l.ok)throw await Qs(l);return ys.parse(await l.json())}async function _c(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await gc(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function vc(e,t,{metadata:n,resource:r,authorizationCode:i,fetchFn:a}={}){let o=e.clientMetadata.scope,s;if(e.prepareTokenRequest&&(s=await e.prepareTokenRequest(o)),!s){if(!i)throw Error(`Either provider.prepareTokenRequest() or authorizationCode is required`);if(!e.redirectUrl)throw Error(`redirectUrl is required for authorization_code flow`);s=hc(i,await e.codeVerifier(),e.redirectUrl)}let c=await e.clientInformation();return gc(t,{metadata:n,tokenRequestParams:s,clientInformation:c??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:a})}async function yc(e,{metadata:t,clientMetadata:n,scope:r,fetchFn:i}){let a;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);a=new URL(t.registration_endpoint)}else a=new URL(`/register`,e);let o=await(i??fetch)(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...n,...r===void 0?{}:{scope:r}})});if(!o.ok)throw await Qs(o);return ws.parse(await o.json())}var bc=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function xc(e){}function Sc(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=xc,onError:n=xc,onRetry:r=xc,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=Cc(`${a}${t}`);for(let e of n)d(e);a=r,o=!1}function d(e){if(e===``){p();return}if(e.startsWith(`:`)){i&&i(e.slice(e.startsWith(`: `)?2:1));return}let t=e.indexOf(`:`);if(t!==-1){let n=e.slice(0,t),r=e[t+1]===` `?2:1;f(n,e.slice(t+r),e);return}f(e,``,e)}function f(e,t,i){switch(e){case`event`:l=t;break;case`data`:c=`${c}${t}
66
+ `;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new bc(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new bc(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){c.length>0&&t({id:s,event:l||void 0,data:c.endsWith(`
67
+ `)?c.slice(0,-1):c}),s=void 0,c=``,l=``}function m(e={}){a&&e.consume&&d(a),o=!0,s=void 0,c=``,l=``,a=``}return{feed:u,reset:m}}function Cc(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
68
68
  `,r),o=-1;if(i!==-1&&a!==-1?o=Math.min(i,a):i===-1?a!==-1&&(o=a):o=i===e.length-1?-1:i,o===-1){n=e.slice(r);break}else{let n=e.slice(r,o);t.push(n),r=o+1,e[r-1]===`\r`&&e[r]===`
69
- `&&r++}}return[t,n]}var Cc=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=xc({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}};const wc={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};var Z=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},Tc=class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=cs(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??wc}async _authThenStart(){if(!this._authProvider)throw new X(`No auth provider`);let e;try{e=await Qs(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new X;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=ss(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let n=await this._commonHeaders();n.set(`Accept`,`text/event-stream`),t&&n.set(`last-event-id`,t);let r=await(this._fetch??fetch)(this._url,{method:`GET`,headers:n,signal:this._abortController?.signal});if(!r.ok){if(await r.body?.cancel(),r.status===401&&this._authProvider)return await this._authThenStart();if(r.status===405)return;throw new Z(r.status,`Failed to open SSE stream: ${r.statusText}`)}this._handleSseStream(r.body,e,!0)}catch(e){throw this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`));return}let r=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(n=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`)),this._scheduleReconnection(e,t+1)})},r)}_handleSseStream(e,t,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:i}=t,a,o=!1,s=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new Cc({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(a=e.id,o=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=He.parse(JSON.parse(e.data));Ye(t)&&(s=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new X(`No auth provider`);if(await Qs(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new X(`Failed to authorize`)}async close(){this._reconnectionTimeout&&=(clearTimeout(this._reconnectionTimeout),void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:n,onresumptiontoken:r}=t||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:ke(e)?e.id:void 0}).catch(e=>this.onerror?.(e));return}let i=await this._commonHeaders();i.set(`content-type`,`application/json`),i.set(`accept`,`application/json, text/event-stream`);let a={...this._requestInit,method:`POST`,headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},o=await(this._fetch??fetch)(this._url,a),s=o.headers.get(`mcp-session-id`);if(s&&(this._sessionId=s),!o.ok){let t=await o.text().catch(()=>null);if(o.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new Z(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=nc(o);if(this._resourceMetadataUrl=t,this._scope=n,await Qs(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new X;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=nc(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new Z(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await Qs(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new X;return this.send(e)}}throw new Z(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Ne(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let c=(Array.isArray(e)?e:[e]).filter(e=>`method`in e&&`id`in e&&e.id!==void 0).length>0,l=o.headers.get(`content-type`);if(c)if(l?.includes(`text/event-stream`))this._handleSseStream(o.body,{onresumptiontoken:r},!1);else if(l?.includes(`application/json`)){let e=await o.json(),t=Array.isArray(e)?e.map(e=>He.parse(e)):[He.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new Z(-1,`Unexpected content type: ${l}`);else await o.body?.cancel()}catch(e){throw this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.body?.cancel(),!n.ok&&n.status!==405)throw new Z(n.status,`Failed to terminate session: ${n.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}};function Ec(e){return(t,n)=>{if((n?.method??`GET`).toUpperCase()===`GET`)return globalThis.fetch(t,n);let r=new AbortController,i=setTimeout(()=>r.abort(Error(`MCP request timed out after ${e}ms`)),e),a=n?.signal instanceof AbortSignal?AbortSignal.any([n.signal,r.signal]):r.signal;return globalThis.fetch(t,{...n,signal:a}).finally(()=>clearTimeout(i))}}function Dc(e){if(e===void 0||e===``)return;let t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t}function Oc(e){return e===`0.0.0.0`||e===`::`?`localhost`:e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}function kc(e,t){return`http://${Oc(e)}:${t}/mcp`}function Ac(e,t){return`ws://${Oc(e)}:${t}`}function jc(e){let t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=``,t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}function Mc(e,t){if(!(!e||e.port<=0)&&t(e.pid))return e.port}function Nc(e){return M(e)?P(e,`utf-8`).trim():``}function Pc(e,t){return`server did not start within ${e}ms${t?` stderr:\n${t}`:``}`}function Fc(e){if(e&&typeof e==`object`&&`method`in e&&`id`in e)return e.id}function Ic(e){if(!e||typeof e!=`object`||!(`result`in e))return;let t=e.result;if(!t||typeof t!=`object`||!(`protocolVersion`in t))return;let n=t.protocolVersion;return typeof n==`string`?n:void 0}function Lc(e,t){return{jsonrpc:`2.0`,id:e,error:{code:-32e3,message:t instanceof Error?t.message:String(t)}}}async function Rc(e){let t=e.readLock??(()=>g(e.lockDir)),n=e.isAlive??x,r=e.sleep??(e=>nn(e)),i=e.spawn??_t,a=e.readErrorLog??Nc,o=e.openErrorLog??(e=>jt(e,`w`)),s=e.closeFd??Tt,c=e.timeoutMs??5e3,l=e.pollIntervalMs??100;if(e.portOverride!==void 0){let t=Number.parseInt(e.portOverride,10);if(Number.isNaN(t)||t<=0)throw Error(`invalid --port value '${e.portOverride}' — HTTP MCP shim requires a positive port`);return kc(`localhost`,t)}let u=Mc(t(),n);if(u!==void 0)return kc(`localhost`,u);if(e.envAutoStart===`0`)throw Error(`Open Knowledge server is not running and OK_MCP_AUTOSTART=0 disables auto-start.`);M(e.lockDir)||N(e.lockDir,{recursive:!0});let d=A(e.lockDir,p),f=o(d),m,h,_=st();try{try{m=i(_.command,[..._.prefixArgs,`start`],{detached:!0,stdio:[`ignore`,`ignore`,f],cwd:e.contentDir,env:{...process.env,OK_LOCK_KIND:`mcp-spawned`,ELECTRON_RUN_AS_NODE:`1`}}),m.on(`error`,e=>{h=e instanceof Error?e.message:String(e)}),m.unref()}catch(e){h=e instanceof Error?e.message:String(e)}}finally{try{s(f)}catch{}}let v=Date.now()+c;for(;Date.now()<v;){if(h){let e=a(d),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${h}${t}`)}await r(l);let e=Mc(t(),n);if(e!==void 0)return kc(`localhost`,e)}if(h){let e=a(d),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${h}${t}`)}throw Error(Pc(c,a(d)))}function zc(e,t){if(e.portOverride!==void 0)return jc(t);let n=e.readLock??(()=>g(e.lockDir)),r=e.isAlive??x,i=Mc(n(),r);if(i!==void 0)return Ac(`localhost`,i)}async function Bc(e,t={}){let n=t.stderr??process.stderr,r=t.requestTimeoutMs??12e4,i=t.createStdioTransport?t.createStdioTransport(t.stdin,t.stdout):new ns(t.stdin,t.stdout),a=t.createHttpTransport?t.createHttpTransport(new URL(e)):new Tc(new URL(e),{fetch:Ec(r),requestInit:{headers:{..._({kind:`mcp`,runtimeVersion:b}),...t.connectionId===void 0?{}:{[Se]:t.connectionId}}}}),o=!1,s=async()=>{o||(o=!0,t.onclose?.(),await Promise.allSettled([i.close(),a.close()]))};i.onerror=e=>{n.write(`[mcp-shim] stdio error: ${e.message}\n`)},a.onerror=e=>{n.write(`[mcp-shim] HTTP transport error: ${e.message}\n`)},i.onclose=()=>{s()},a.onclose=()=>{s()};let c=Promise.resolve();i.onmessage=e=>{c=c.then(async()=>{try{await a.send(e)}catch(t){let r=Fc(e);if(r===void 0){n.write(`[mcp-shim] failed to forward stdio notification: ${t instanceof Error?t.message:String(t)}\n`);return}await i.send(Lc(r,t)).catch(e=>{n.write(`[mcp-shim] failed to write stdio error response: ${e instanceof Error?e.message:String(e)}\n`)})}}).catch(e=>{n.write(`[mcp-shim] unexpected stdio forwarding failure: ${e instanceof Error?e.message:String(e)}\n`)})},a.onmessage=e=>{let t=Ic(e);t&&a.setProtocolVersion?.(t),i.send(e).catch(e=>{n.write(`[mcp-shim] failed to write stdio response: ${e instanceof Error?e.message:String(e)}\n`)})};try{await a.start(),await i.start()}catch(e){throw await s(),e}return{close:s}}async function Vc(e){let t=e.stderr??process.stderr,n=e.bridgeFn??Bc,r=await Rc(e),i=e.createConnectionId?.()??en(),a=!1,o=(e.startKeepalive??Qo)({connectionId:i,resolveWsUrl:async()=>zc(e,r),log:e=>t.write(`[mcp-shim] keepalive: ${e}\n`)});t.write(`[mcp-shim] proxying stdio to ${r}\n`);let s;try{s=await n(r,{stderr:t,connectionId:i,onclose:()=>{a||(o.close(),process.exit(0))}})}catch(e){throw o.close(),e}let c=()=>{a=!0,o.close(),s.close().finally(()=>{process.exit(0)})};process.once(`SIGINT`,c),process.once(`SIGTERM`,c)}const Hc=Jt(import.meta.url);function Uc(e){let t=j(e);for(;;){if(Be(t))return t;let n=bt(t);if(n===t)throw Error(`No Open Knowledge project found at or above ${e}. Pass an explicit \`cwd\` argument that points inside an OK project (a directory with a \`${f}\`).`);t=n}}function Wc(e){try{let t=new URL(e);return t.protocol===`file:`?Jt(t):void 0}catch{return}}async function Gc(e){if(!e.getClientCapabilities()?.roots)return;let t;try{t=await e.listRoots()}catch(t){e.log?.(`listRoots fallback failed: ${t instanceof Error?t.message:String(t)}`);return}let n=t.roots??[];if(n.length!==1)return;let r=Wc(n[0].uri);return r===void 0&&e.log?.(`single root URI not usable as fs path: ${n[0].uri}`),r}async function Kc(e,t){if(e!==void 0)return Uc(e);let n=await t();if(n!==void 0)return Uc(n);throw Error("`cwd` is required for tool calls against the global MCP server. Pass an absolute path inside an Open Knowledge project, or have the MCP client advertise a single root.")}async function qc(e){let t=process.stderr,n=e.spawnTimeoutMs??Dc(process.env.OK_MCP_SPAWN_TIMEOUT_MS),r=e.envAutoStart??process.env.OK_MCP_AUTOSTART,i=at({startupCwd:e.startupCwd,startupConfig:e.startupConfig}),a=new We({name:ze,version:b},{instructions:Ge({dir:`.`})});Xe(a);let o=en(),s={current:{connectionId:o,displayName:o,colorSeed:o}},c=new Map,l=e=>{if(c.has(e))return;let n=Le(e),r=s.current,i=Qo({connectionId:o,displayName:r.displayName,clientName:r.clientInfo?.name??r.displayName,colorSeed:r.colorSeed,resolveWsUrl:async()=>zc({lockDir:n,contentDir:e},``),log:n=>t.write(`[mcp] keepalive[${e}]: ${n}\n`)});c.set(e,i)},u=()=>Gc({getClientCapabilities:()=>a.server.getClientCapabilities(),listRoots:()=>a.server.listRoots(),log:e=>t.write(`[mcp] ${e}\n`)}),d=e=>Kc(e,u),f=async e=>{let t;if(e===void 0){let e=await u();if(e===void 0)return;t=Uc(e)}else t=Uc(e);let a=await i(t),o=await Rc({lockDir:Le(t),contentDir:Me(a,t),envAutoStart:r,...n===void 0?{}:{timeoutMs:n}});return l(t),o.replace(/\/mcp$/,``)};a.server.oninitialized=()=>{let e=a.server.getClientVersion(),t=Ve(e?.name,o);s.current={connectionId:o,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}},Ae(a,{serverUrl:f,resolveCwd:d,config:i,identityRef:s});let p=new ns,m=!1,h,g=async()=>{if(m)return;m=!0,h?.stop();for(let e of c.values())try{e.close()}catch(e){t.write(`[mcp] keepalive close error: ${e instanceof Error?e.message:String(e)}\n`)}c.clear();let e=await Promise.allSettled([a.close(),p.close()]);for(let n of e)if(n.status===`rejected`){let e=n.reason;t.write(`[mcp] shutdown close error: ${e instanceof Error?e.message:String(e)}\n`)}};await a.connect(p),t.write(`[mcp] global stdio server ready (per-call project routing)
70
- `);let _=!1,v=()=>{_||(_=!0,setTimeout(()=>{t.write(`[mcp] shutdown deadline (5s) reached — forcing exit(1)
71
- `),process.exit(1)},5e3).unref(),g().finally(()=>{process.exit(0)}))};if(process.once(`SIGINT`,v),process.once(`SIGTERM`,v),os({log:e=>t.write(`${e}\n`),transport:p,process,stdin:process.stdin}),process.platform===`darwin`){let e=as(Hc,{realpathSync:Nt,statInoSync:e=>Ft(e).ino,log:e=>t.write(`${e}\n`)});if(e!==void 0){t.write(`[mcp] bundle identity anchor=${e.resolvedPath} inode=${e.inode} version=${b}\n`);let{resolvedPath:n,inode:r}=e;h=is({detect:()=>rs({bundleAnchorPath:Hc,currentInode:r,platform:process.platform,realpath:Nt,statInode:e=>Ft(e).ino}),onReplaced:e=>{t.write(`[mcp] bundle replaced anchor=${n} bootInode=${e.currentInode} onDiskInode=${e.onDiskInode} version=${b} — exiting for host respawn\n`),v()},log:e=>t.write(`[mcp] ${e}\n`)})}}return{close:g}}function Jc(e){return new t(`mcp`).description(`Start MCP stdio server for project knowledge base`).option(`-p, --port <port>`,`Override per-call routing and proxy stdio to this HTTP MCP port (skips bundle proxy)`,void 0).option(`--no-bundle-proxy`,`Run the npm-fetched MCP server in-process instead of proxying to the macOS Desktop bundle (equivalent: OK_BUNDLE_PROXY=0)`).action(async t=>{try{let n=e(),r=process.cwd();if(t.port!==void 0){let e=Dc(process.env.OK_MCP_SPAWN_TIMEOUT_MS);await Vc({lockDir:``,contentDir:``,portOverride:t.port,envAutoStart:process.env.OK_MCP_AUTOSTART,timeoutMs:e});return}let i=t.bundleProxy===!1?[...process.argv,`--no-bundle-proxy`]:process.argv,a=Yo(process.env,i,process.platform);if(a.proxy){let e=Jo(process.platform,Bt(),{existsSync:M});if(e===null)Xo({stderr:process.stderr,mode:`fallback-absent`,bundlePath:null,reason:`no installed Open Knowledge.app bundle found`});else try{await Zo({bundlePath:e,argv:process.argv.slice(2),env:process.env,stderr:process.stderr});return}catch(t){Xo({stderr:process.stderr,mode:`fallback-exec-failed`,bundlePath:e,reason:t instanceof Error?t.message:String(t)})}}else{let e=a.suppressedBy===`env`?`suppressed-env`:a.suppressedBy===`flag`?`suppressed-flag`:a.suppressedBy===`self`?`suppressed-self`:`suppressed-platform`;Xo({stderr:process.stderr,mode:e,bundlePath:null,reason:null})}await qc({startupCwd:r,startupConfig:n})}catch(e){process.stderr.write(`MCP server failed to start: ${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}})}function Yc(e){return new t(`preview`).description(`Show what content the watcher will track (read-only)`).action(async()=>{let{previewContent:t,formatPreviewBlock:n}=await import(`./preview-BOOifZtc.mjs`),r=e(),i=process.cwd(),a=Me(r,i),o;try{o=t({projectDir:i,contentDir:a})}catch(e){console.error(`Content preview failed: ${e instanceof Error?e.message:String(e)}`),process.exitCode=1;return}process.stdout.write(`${n(o,i)}\n`),o.totalCount===0&&o.warnings.length>0&&(process.exitCode=1)})}function Xc(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function Zc(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function Qc(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:qa(r),command:r,isDesktop:Xc(r)}}function $c(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function el(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&$c(e)?`ui-orphan`:`stale`}const tl=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function nl(e){switch(e){case`running`:return W.default.green(e);case`desktop`:return W.default.blue(e);case`foreign`:return W.default.cyan(e);case`ui-orphan`:return W.default.magenta(e);case`stale`:return W.default.yellow(e)}}function rl(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function il(e){return`${rl(e.server.usage)} | ${rl(e.ui?.usage??null)}`}function al(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function ol(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=el(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,al(e),il(e),t,String(n),Zc(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=nl(el(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=W.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
72
- `)}async function sl(e={}){let t=e.discover??to,n=e.inspect??H,r=e.log??(e=>console.log(e)),i=e.resolveCommand??Ja,a=e.resolveUsage??Ya,o=await t(),s=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=Qc(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&s.push(o)}if(e.json){let e=s.map(e=>({...e,displayStatus:el(e)}));r(JSON.stringify(e,null,2));return}r(ol(e.all?s:s.filter(e=>tl.has(el(e)))))}function cl(){return new t(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await sl({all:t.all===!0||e===`all`,json:t.json===!0})})}function ll(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function ul(e,t,n=process.cwd()){let r=e.op??`sync`,i=g(w(n));if(i&&i.port>0){let t=`http://127.0.0.1:${i.port}/api/sync/trigger`;e.json||process.stderr.write(`Triggering ${r} via running server (port ${i.port})\n`);try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,..._({kind:`cli`,runtimeVersion:b})},body:JSON.stringify({op:r})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.title??e.error??e.message??`Server responded with ${n.status}`)}ll(e.json,{type:`triggered`,op:r,port:i.port}),e.json||process.stderr.write(`✓ ${r} triggered\n`);return}catch(t){let n=t instanceof Error?t.message:String(t);e.json||process.stderr.write(`Server trigger failed (${n}), running directly\n`)}}e.json||process.stderr.write(`Running ${r} directly (no live server)\n`);let a=xe({baseDir:n});if(r===`sync`||r===`pull`){ll(e.json,{type:`step`,step:`pull`});let t=await a.pull();ll(e.json,{type:`pull`,summary:t.summary}),e.json||process.stderr.write(` pull: ${t.summary.changes} changes\n`)}(r===`sync`||r===`push`)&&(ll(e.json,{type:`step`,step:`push`}),await a.push(),ll(e.json,{type:`push`,ok:!0}),e.json||process.stderr.write(` push: ok
73
- `)),ll(e.json,{type:`complete`,op:r}),e.json||process.stderr.write(`✓ ${r} complete\n`)}function dl(e){return new t(`sync`).description(`Commit, pull, and push to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await ul({json:t.json,op:`sync`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ sync failed: ${n}\n`),process.exit(1)}})}function fl(e){return new t(`pull`).description(`Pull changes from the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await ul({json:t.json,op:`pull`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ pull failed: ${n}\n`),process.exit(1)}})}function pl(e){return new t(`push`).description(`Push commits to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await ul({json:t.json,op:`push`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ push failed: ${n}\n`),process.exit(1)}})}function ml(e){return typeof e==`string`&&Ke.includes(e)}async function hl(e={}){let t=j(e.cwd??process.cwd()),n=e.pack??`knowledge-base`;if(!Te[n])return{status:`failed`,message:`${D(`Error:`)} Unknown pack "${n}". Available: ${Ke.join(`, `)}`,exitCode:1};let r;try{r=await qe({projectDir:t,rootDir:e.root,packId:n})}catch(e){return e instanceof Oe?{status:`prerequisite-missing`,message:`${D(`Error:`)} ${e.message}`,exitCode:1}:{status:`failed`,message:`${D(`Error:`)} ${e instanceof Error?e.message:String(e)}`,exitCode:1}}if(r.created.length===0){let e=Te[n].name;return{status:`no-op`,message:`${E(`Your ${e} pack is already seeded.`)}\n${T(`Nothing to do.`)}`,plan:r,exitCode:0}}if(e.dryRun)return{status:`dry-run`,message:`${O(`Plan (dry-run — no changes made):`)}\n\n${_l(r,t)}`,plan:r,exitCode:0};if(!e.yes&&!await vl(`${O(`Plan:`)}\n\n${_l(r,t)}\n\n${O(`Apply?`)} ${T(`[Y/n] `)}`,e.confirmStream))return{status:`cancelled`,message:T(`Cancelled.`),plan:r,exitCode:0};let i=await Re(r,{projectDir:t,packId:n});if(i.errors.length>0){let e=i.errors.map(e=>` ${D(`✗`)} ${e.path}: ${e.error}`);return{status:`failed`,message:[`${mt(`Applied`)} ${i.applied} entries, ${mt(String(i.errors.length))} error(s):`,...e].join(`
74
- `),plan:r,exitCode:1}}let a=Te[n].name;return{status:`applied`,message:`${E(`✓ Seeded ${a}`)} ${T(`(${i.applied} entries, ${i.durationMs}ms)`)}`,plan:r,exitCode:0}}function gl(){let e=[O(`Available packs:`)];for(let t of Ke){let n=Te[t];e.push(` ${E(t)} ${T(`—`)} ${n.name}: ${n.description}`)}return e.join(`
75
- `)}function _l(e,t){let n=[],r=e.created.filter(e=>e.kind===`folder`),i=e.created.filter(e=>e.kind===`file`);if(r.length>0){n.push(O(`Folders to create:`));for(let e of r)n.push(` ${E(`+`)} ${pt(St(t,j(t,e.path))||e.path)}${T(`/`)}`)}if(i.length>0){n.length>0&&n.push(``),n.push(O(`Files to create:`));for(let e of i)n.push(` ${E(`+`)} ${pt(St(t,j(t,e.path))||e.path)}`)}if(e.skipped.length>0){n.length>0&&n.push(``),n.push(T(`Already present (skipped):`));for(let t of e.skipped)n.push(` ${T(`· ${t.path} (${t.reason})`)}`)}if(e.warnings.length>0){n.length>0&&n.push(``),n.push(mt(`Warnings:`));for(let t of e.warnings)n.push(` ${mt(`!`)} ${t}`)}return n.join(`
76
- `)}async function vl(e,t){let n=rn({input:t??process.stdin,output:process.stdout});try{let t=(await n.question(e)).trim().toLowerCase();return t===``||t===`y`||t===`yes`}finally{n.close()}}function yl(){return new t(`seed`).description(`Scaffold a starter pack into the project. Defaults to "${Pe}" — the Karpathy three-layer knowledge base. Use --pack to pick a different pack (run with --list-packs to see all). Use --root to place pack folders inside a subfolder instead of the project root.`).argument(`[path]`,`Project directory (defaults to cwd)`).option(`-p, --pack <id>`,`Starter pack to scaffold. One of: ${Ke.join(`, `)}. Defaults to "${Pe}".`).option(`-r, --root <path>`,`Subfolder (relative to the project dir) to scaffold into — created if missing. Defaults to the project root when omitted in non-interactive runs; prompts on a TTY.`).option(`--list-packs`,`List available starter packs and exit.`).option(`-y, --yes`,`Skip confirmation prompt`).option(`--dry-run`,`Print the plan and exit without writing`).action(async(e,t)=>{if(t.listPacks){process.stdout.write(`${gl()}\n`);return}if(t.pack!==void 0&&!ml(t.pack)){process.stderr.write(`${D(`Error:`)} Unknown pack "${t.pack}". Available: ${Ke.join(`, `)}\n`),process.exitCode=1;return}let n=await hl({cwd:e??process.cwd(),pack:t.pack,root:t.root,yes:t.yes,dryRun:t.dryRun});process.stdout.write(`${n.message}\n`),n.exitCode!==0&&(process.exitCode=n.exitCode)})}async function bl(e,t,n){try{return await e.repos.get({owner:t,repo:n}),{kind:`ok`,available:!1}}catch(e){let t=e.status;return t===404?{kind:`ok`,available:!0}:t===401?{kind:`auth-required`}:{kind:`network`}}}async function xl(e,t){let{host:n,owner:r,name:i,json:a}=e;L(n);let o=await ci(n,t);if(o==null){if(a){process.stdout.write(`${JSON.stringify({type:`error`,code:`auth-required`})}\n`);return}process.stderr.write(`Not logged in to ${n}\n`),process.exit(1)}let s=n===`github.com`?void 0:`https://${n}/api/v3`,c=await bl(new V({auth:o,...s?{baseUrl:s}:{}}),r,i);if(c.kind===`ok`){a?process.stdout.write(`${JSON.stringify({type:`name-check`,available:c.available})}\n`):process.stdout.write(c.available?`available
69
+ `&&r++}}return[t,n]}var wc=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=Sc({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}};const Tc={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};var Ec=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},Dc=class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=ls(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??Tc}async _authThenStart(){if(!this._authProvider)throw new Z(`No auth provider`);let e;try{e=await $s(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new Z;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=cs(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let n=await this._commonHeaders();n.set(`Accept`,`text/event-stream`),t&&n.set(`last-event-id`,t);let r=await(this._fetch??fetch)(this._url,{method:`GET`,headers:n,signal:this._abortController?.signal});if(!r.ok){if(await r.body?.cancel(),r.status===401&&this._authProvider)return await this._authThenStart();if(r.status===405)return;throw new Ec(r.status,`Failed to open SSE stream: ${r.statusText}`)}this._handleSseStream(r.body,e,!0)}catch(e){throw this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`));return}let r=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(n=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`)),this._scheduleReconnection(e,t+1)})},r)}_handleSseStream(e,t,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:i}=t,a,o=!1,s=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new wc({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(a=e.id,o=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=He.parse(JSON.parse(e.data));Ye(t)&&(s=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new Z(`No auth provider`);if(await $s(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Z(`Failed to authorize`)}async close(){this._reconnectionTimeout&&=(clearTimeout(this._reconnectionTimeout),void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:n,onresumptiontoken:r}=t||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:ke(e)?e.id:void 0}).catch(e=>this.onerror?.(e));return}let i=await this._commonHeaders();i.set(`content-type`,`application/json`),i.set(`accept`,`application/json, text/event-stream`);let a={...this._requestInit,method:`POST`,headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},o=await(this._fetch??fetch)(this._url,a),s=o.headers.get(`mcp-session-id`);if(s&&(this._sessionId=s),!o.ok){let t=await o.text().catch(()=>null);if(o.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new Ec(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=rc(o);if(this._resourceMetadataUrl=t,this._scope=n,await $s(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Z;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=rc(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new Ec(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await $s(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new Z;return this.send(e)}}throw new Ec(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Ne(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let c=(Array.isArray(e)?e:[e]).filter(e=>`method`in e&&`id`in e&&e.id!==void 0).length>0,l=o.headers.get(`content-type`);if(c)if(l?.includes(`text/event-stream`))this._handleSseStream(o.body,{onresumptiontoken:r},!1);else if(l?.includes(`application/json`)){let e=await o.json(),t=Array.isArray(e)?e.map(e=>He.parse(e)):[He.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new Ec(-1,`Unexpected content type: ${l}`);else await o.body?.cancel()}catch(e){throw this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.body?.cancel(),!n.ok&&n.status!==405)throw new Ec(n.status,`Failed to terminate session: ${n.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}};function Oc(e){return(t,n)=>{if((n?.method??`GET`).toUpperCase()===`GET`)return globalThis.fetch(t,n);let r=new AbortController,i=setTimeout(()=>r.abort(Error(`MCP request timed out after ${e}ms`)),e),a=n?.signal instanceof AbortSignal?AbortSignal.any([n.signal,r.signal]):r.signal;return globalThis.fetch(t,{...n,signal:a}).finally(()=>clearTimeout(i))}}function kc(e){if(e===void 0||e===``)return;let t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t}function Ac(e){return e===`0.0.0.0`||e===`::`?`localhost`:e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}function jc(e,t){return`http://${Ac(e)}:${t}/mcp`}function Mc(e,t){return`ws://${Ac(e)}:${t}`}function Nc(e){let t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=``,t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}function Pc(e,t){if(!(!e||e.port<=0)&&t(e.pid))return e.port}function Fc(e){return N(e)?F(e,`utf-8`).trim():``}function Ic(e,t){return`server did not start within ${e}ms${t?` stderr:\n${t}`:``}`}function Lc(e){if(e&&typeof e==`object`&&`method`in e&&`id`in e)return e.id}function Rc(e){if(!e||typeof e!=`object`||!(`result`in e))return;let t=e.result;if(!t||typeof t!=`object`||!(`protocolVersion`in t))return;let n=t.protocolVersion;return typeof n==`string`?n:void 0}function zc(e,t){return{jsonrpc:`2.0`,id:e,error:{code:-32e3,message:t instanceof Error?t.message:String(t)}}}async function Bc(e){let t=e.readLock??(()=>m(e.lockDir)),n=e.isAlive??y,r=e.sleep??(e=>tn(e)),i=e.spawn??_t,a=e.readErrorLog??Fc,o=e.openErrorLog??(e=>At(e,`w`)),s=e.closeFd??wt,l=e.timeoutMs??5e3,u=e.pollIntervalMs??100;if(e.portOverride!==void 0){let t=Number.parseInt(e.portOverride,10);if(Number.isNaN(t)||t<=0)throw Error(`invalid --port value '${e.portOverride}' — HTTP MCP shim requires a positive port`);return jc(`localhost`,t)}let d=Pc(t(),n);if(d!==void 0)return jc(`localhost`,d);if(e.envAutoStart===`0`)throw Error(`Open Knowledge server is not running and OK_MCP_AUTOSTART=0 disables auto-start.`);N(e.lockDir)||P(e.lockDir,{recursive:!0});let f=j(e.lockDir,c),p=o(f),h,g,_=st();try{try{h=i(_.command,[..._.prefixArgs,`start`],{detached:!0,stdio:[`ignore`,`ignore`,p],cwd:e.contentDir,env:{...process.env,OK_LOCK_KIND:`mcp-spawned`,ELECTRON_RUN_AS_NODE:`1`}}),h.on(`error`,e=>{g=e instanceof Error?e.message:String(e)}),h.unref()}catch(e){g=e instanceof Error?e.message:String(e)}}finally{try{s(p)}catch{}}let v=Date.now()+l;for(;Date.now()<v;){if(g){let e=a(f),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${g}${t}`)}await r(u);let e=Pc(t(),n);if(e!==void 0)return jc(`localhost`,e)}if(g){let e=a(f),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${g}${t}`)}throw Error(Ic(l,a(f)))}function Vc(e,t){if(e.portOverride!==void 0)return Nc(t);let n=e.readLock??(()=>m(e.lockDir)),r=e.isAlive??y,i=Pc(n(),r);if(i!==void 0)return Mc(`localhost`,i)}async function Hc(e,t={}){let n=t.stderr??process.stderr,r=t.requestTimeoutMs??12e4,i=t.createStdioTransport?t.createStdioTransport(t.stdin,t.stdout):new rs(t.stdin,t.stdout),a=t.createHttpTransport?t.createHttpTransport(new URL(e)):new Dc(new URL(e),{fetch:Oc(r),requestInit:{headers:{...b({kind:`mcp`,runtimeVersion:_}),...t.connectionId===void 0?{}:{[Se]:t.connectionId}}}}),o=!1,s=async()=>{o||(o=!0,t.onclose?.(),await Promise.allSettled([i.close(),a.close()]))};i.onerror=e=>{n.write(`[mcp-shim] stdio error: ${e.message}\n`)},a.onerror=e=>{n.write(`[mcp-shim] HTTP transport error: ${e.message}\n`)},i.onclose=()=>{s()},a.onclose=()=>{s()};let c=Promise.resolve();i.onmessage=e=>{c=c.then(async()=>{try{await a.send(e)}catch(t){let r=Lc(e);if(r===void 0){n.write(`[mcp-shim] failed to forward stdio notification: ${t instanceof Error?t.message:String(t)}\n`);return}await i.send(zc(r,t)).catch(e=>{n.write(`[mcp-shim] failed to write stdio error response: ${e instanceof Error?e.message:String(e)}\n`)})}}).catch(e=>{n.write(`[mcp-shim] unexpected stdio forwarding failure: ${e instanceof Error?e.message:String(e)}\n`)})},a.onmessage=e=>{let t=Rc(e);t&&a.setProtocolVersion?.(t),i.send(e).catch(e=>{n.write(`[mcp-shim] failed to write stdio response: ${e instanceof Error?e.message:String(e)}\n`)})};try{await a.start(),await i.start()}catch(e){throw await s(),e}return{close:s}}async function Uc(e){let t=e.stderr??process.stderr,n=e.bridgeFn??Hc,r=await Bc(e),i=e.createConnectionId?.()??$t(),a=!1,o=(e.startKeepalive??$o)({connectionId:i,resolveWsUrl:async()=>Vc(e,r),log:e=>t.write(`[mcp-shim] keepalive: ${e}\n`)});t.write(`[mcp-shim] proxying stdio to ${r}\n`);let s;try{s=await n(r,{stderr:t,connectionId:i,onclose:()=>{a||(o.close(),process.exit(0))}})}catch(e){throw o.close(),e}let c=()=>{a=!0,o.close(),s.close().finally(()=>{process.exit(0)})};process.once(`SIGINT`,c),process.once(`SIGTERM`,c)}const Wc=qt(import.meta.url);function Gc(e){let t=M(e);for(;;){if(Be(t))return t;let n=yt(t);if(n===t)throw Error(`No Open Knowledge project found at or above ${e}. Pass an explicit \`cwd\` argument that points inside an OK project (a directory with a \`${x}\`).`);t=n}}function Kc(e){try{let t=new URL(e);return t.protocol===`file:`?qt(t):void 0}catch{return}}async function qc(e){if(!e.getClientCapabilities()?.roots)return;let t;try{t=await e.listRoots()}catch(t){e.log?.(`listRoots fallback failed: ${t instanceof Error?t.message:String(t)}`);return}let n=t.roots??[];if(n.length!==1)return;let r=Kc(n[0].uri);return r===void 0&&e.log?.(`single root URI not usable as fs path: ${n[0].uri}`),r}async function Jc(e,t){if(e!==void 0)return Gc(e);let n=await t();if(n!==void 0)return Gc(n);throw Error("`cwd` is required for tool calls against the global MCP server. Pass an absolute path inside an Open Knowledge project, or have the MCP client advertise a single root.")}async function Yc(e){let t=process.stderr,n=e.spawnTimeoutMs??kc(process.env.OK_MCP_SPAWN_TIMEOUT_MS),r=e.envAutoStart??process.env.OK_MCP_AUTOSTART,i=at({startupCwd:e.startupCwd,startupConfig:e.startupConfig}),a=new We({name:ze,version:_},{instructions:Ge({dir:`.`})});Xe(a);let o=$t(),s={current:{connectionId:o,displayName:o,colorSeed:o}},c=new Map,l=e=>{if(c.has(e))return;let n=Le(e),r=s.current,i=$o({connectionId:o,displayName:r.displayName,clientName:r.clientInfo?.name??r.displayName,colorSeed:r.colorSeed,resolveWsUrl:async()=>Vc({lockDir:n,contentDir:e},``),log:n=>t.write(`[mcp] keepalive[${e}]: ${n}\n`)});c.set(e,i)},u=()=>qc({getClientCapabilities:()=>a.server.getClientCapabilities(),listRoots:()=>a.server.listRoots(),log:e=>t.write(`[mcp] ${e}\n`)}),d=e=>Jc(e,u),f=async e=>{let t;if(e===void 0){let e=await u();if(e===void 0)return;t=Gc(e)}else t=Gc(e);let a=await i(t),o=await Bc({lockDir:Le(t),contentDir:Me(a,t),envAutoStart:r,...n===void 0?{}:{timeoutMs:n}});return l(t),o.replace(/\/mcp$/,``)};a.server.oninitialized=()=>{let e=a.server.getClientVersion(),t=Ve(e?.name,o);s.current={connectionId:o,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}},Ae(a,{serverUrl:f,resolveCwd:d,config:i,identityRef:s});let p=new rs,m=!1,h,g=async()=>{if(m)return;m=!0,h?.stop();for(let e of c.values())try{e.close()}catch(e){t.write(`[mcp] keepalive close error: ${e instanceof Error?e.message:String(e)}\n`)}c.clear();let e=await Promise.allSettled([a.close(),p.close()]);for(let n of e)if(n.status===`rejected`){let e=n.reason;t.write(`[mcp] shutdown close error: ${e instanceof Error?e.message:String(e)}\n`)}};await a.connect(p),t.write(`[mcp] global stdio server ready (per-call project routing)
70
+ `);let v=!1,y=()=>{v||(v=!0,setTimeout(()=>{t.write(`[mcp] shutdown deadline (5s) reached — forcing exit(1)
71
+ `),process.exit(1)},5e3).unref(),g().finally(()=>{process.exit(0)}))};if(process.once(`SIGINT`,y),process.once(`SIGTERM`,y),ss({log:e=>t.write(`${e}\n`),transport:p,process,stdin:process.stdin}),process.platform===`darwin`){let e=os(Wc,{realpathSync:Mt,statInoSync:e=>Pt(e).ino,log:e=>t.write(`${e}\n`)});if(e!==void 0){t.write(`[mcp] bundle identity anchor=${e.resolvedPath} inode=${e.inode} version=${_}\n`);let{resolvedPath:n,inode:r}=e;h=as({detect:()=>is({bundleAnchorPath:Wc,currentInode:r,platform:process.platform,realpath:Mt,statInode:e=>Pt(e).ino}),onReplaced:e=>{t.write(`[mcp] bundle replaced anchor=${n} bootInode=${e.currentInode} onDiskInode=${e.onDiskInode} version=${_} — exiting for host respawn\n`),y()},log:e=>t.write(`[mcp] ${e}\n`)})}}return{close:g}}function Xc(e){return new t(`mcp`).description(`Start MCP stdio server for project knowledge base`).option(`-p, --port <port>`,`Override per-call routing and proxy stdio to this HTTP MCP port (skips bundle proxy)`,void 0).option(`--no-bundle-proxy`,`Run the npm-fetched MCP server in-process instead of proxying to the macOS Desktop bundle (equivalent: OK_BUNDLE_PROXY=0)`).action(async t=>{try{let n=e(),r=process.cwd();if(t.port!==void 0){let e=kc(process.env.OK_MCP_SPAWN_TIMEOUT_MS);await Uc({lockDir:``,contentDir:``,portOverride:t.port,envAutoStart:process.env.OK_MCP_AUTOSTART,timeoutMs:e});return}let i=t.bundleProxy===!1?[...process.argv,`--no-bundle-proxy`]:process.argv,a=Xo(process.env,i,process.platform);if(a.proxy){let e=Yo(process.platform,zt(),{existsSync:N});if(e===null)Zo({stderr:process.stderr,mode:`fallback-absent`,bundlePath:null,reason:`no installed Open Knowledge.app bundle found`});else try{await Qo({bundlePath:e,argv:process.argv.slice(2),env:process.env,stderr:process.stderr});return}catch(t){Zo({stderr:process.stderr,mode:`fallback-exec-failed`,bundlePath:e,reason:t instanceof Error?t.message:String(t)})}}else{let e=a.suppressedBy===`env`?`suppressed-env`:a.suppressedBy===`flag`?`suppressed-flag`:a.suppressedBy===`self`?`suppressed-self`:`suppressed-platform`;Zo({stderr:process.stderr,mode:e,bundlePath:null,reason:null})}await Yc({startupCwd:r,startupConfig:n})}catch(e){process.stderr.write(`MCP server failed to start: ${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}})}function Zc(e){return new t(`preview`).description(`Show what content the watcher will track (read-only)`).action(async()=>{let{previewContent:t,formatPreviewBlock:n}=await import(`./preview-1nz8JsfK.mjs`),r=e(),i=process.cwd(),a=Me(r,i),o;try{o=t({projectDir:i,contentDir:a})}catch(e){console.error(`Content preview failed: ${e instanceof Error?e.message:String(e)}`),process.exitCode=1;return}process.stdout.write(`${n(o,i)}\n`),o.totalCount===0&&o.warnings.length>0&&(process.exitCode=1)})}function Qc(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function $c(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function el(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:Ja(r),command:r,isDesktop:Qc(r)}}function tl(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function nl(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&tl(e)?`ui-orphan`:`stale`}const rl=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function il(e){switch(e){case`running`:return G.default.green(e);case`desktop`:return G.default.blue(e);case`foreign`:return G.default.cyan(e);case`ui-orphan`:return G.default.magenta(e);case`stale`:return G.default.yellow(e)}}function al(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function ol(e){return`${al(e.server.usage)} | ${al(e.ui?.usage??null)}`}function sl(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function cl(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=nl(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,sl(e),ol(e),t,String(n),$c(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=il(nl(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=G.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
72
+ `)}async function ll(e={}){let t=e.discover??no,n=e.inspect??U,r=e.log??(e=>console.log(e)),i=e.resolveCommand??Ya,a=e.resolveUsage??Xa,o=await t(),s=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=el(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&s.push(o)}if(e.json){let e=s.map(e=>({...e,displayStatus:nl(e)}));r(JSON.stringify(e,null,2));return}r(cl(e.all?s:s.filter(e=>rl.has(nl(e)))))}function ul(){return new t(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await ll({all:t.all===!0||e===`all`,json:t.json===!0})})}function dl(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function fl(e,t,n=process.cwd()){let r=e.op??`sync`,i=m(w(n));if(i&&i.port>0){let t=`http://127.0.0.1:${i.port}/api/sync/trigger`;e.json||process.stderr.write(`Triggering ${r} via running server (port ${i.port})\n`);try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,...b({kind:`cli`,runtimeVersion:_})},body:JSON.stringify({op:r})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.title??e.error??e.message??`Server responded with ${n.status}`)}dl(e.json,{type:`triggered`,op:r,port:i.port}),e.json||process.stderr.write(`✓ ${r} triggered\n`);return}catch(t){let n=t instanceof Error?t.message:String(t);e.json||process.stderr.write(`Server trigger failed (${n}), running directly\n`)}}e.json||process.stderr.write(`Running ${r} directly (no live server)\n`);let a=xe({baseDir:n});if(r===`sync`||r===`pull`){dl(e.json,{type:`step`,step:`pull`});let t=await a.pull();dl(e.json,{type:`pull`,summary:t.summary}),e.json||process.stderr.write(` pull: ${t.summary.changes} changes\n`)}(r===`sync`||r===`push`)&&(dl(e.json,{type:`step`,step:`push`}),await a.push(),dl(e.json,{type:`push`,ok:!0}),e.json||process.stderr.write(` push: ok
73
+ `)),dl(e.json,{type:`complete`,op:r}),e.json||process.stderr.write(`✓ ${r} complete\n`)}function pl(e){return new t(`sync`).description(`Commit, pull, and push to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await fl({json:t.json,op:`sync`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ sync failed: ${n}\n`),process.exit(1)}})}function ml(e){return new t(`pull`).description(`Pull changes from the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await fl({json:t.json,op:`pull`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ pull failed: ${n}\n`),process.exit(1)}})}function hl(e){return new t(`push`).description(`Push commits to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await fl({json:t.json,op:`push`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ push failed: ${n}\n`),process.exit(1)}})}function gl(e){return typeof e==`string`&&Ke.includes(e)}async function _l(e={}){let t=M(e.cwd??process.cwd()),n=e.pack??`knowledge-base`;if(!Te[n])return{status:`failed`,message:`${D(`Error:`)} Unknown pack "${n}". Available: ${Ke.join(`, `)}`,exitCode:1};let r;try{r=await qe({projectDir:t,rootDir:e.root,packId:n})}catch(e){return e instanceof Oe?{status:`prerequisite-missing`,message:`${D(`Error:`)} ${e.message}`,exitCode:1}:{status:`failed`,message:`${D(`Error:`)} ${e instanceof Error?e.message:String(e)}`,exitCode:1}}if(r.created.length===0){let e=Te[n].name;return{status:`no-op`,message:`${E(`Your ${e} pack is already seeded.`)}\n${T(`Nothing to do.`)}`,plan:r,exitCode:0}}if(e.dryRun)return{status:`dry-run`,message:`${O(`Plan (dry-run — no changes made):`)}\n\n${yl(r,t)}`,plan:r,exitCode:0};if(!e.yes&&!await bl(`${O(`Plan:`)}\n\n${yl(r,t)}\n\n${O(`Apply?`)} ${T(`[Y/n] `)}`,e.confirmStream))return{status:`cancelled`,message:T(`Cancelled.`),plan:r,exitCode:0};let i=await Re(r,{projectDir:t,packId:n});if(i.errors.length>0){let e=i.errors.map(e=>` ${D(`✗`)} ${e.path}: ${e.error}`);return{status:`failed`,message:[`${mt(`Applied`)} ${i.applied} entries, ${mt(String(i.errors.length))} error(s):`,...e].join(`
74
+ `),plan:r,exitCode:1}}let a=Te[n].name;return{status:`applied`,message:`${E(`✓ Seeded ${a}`)} ${T(`(${i.applied} entries, ${i.durationMs}ms)`)}`,plan:r,exitCode:0}}function vl(){let e=[O(`Available packs:`)];for(let t of Ke){let n=Te[t];e.push(` ${E(t)} ${T(`—`)} ${n.name}: ${n.description}`)}return e.join(`
75
+ `)}function yl(e,t){let n=[],r=e.created.filter(e=>e.kind===`folder`),i=e.created.filter(e=>e.kind===`file`);if(r.length>0){n.push(O(`Folders to create:`));for(let e of r)n.push(` ${E(`+`)} ${pt(xt(t,M(t,e.path))||e.path)}${T(`/`)}`)}if(i.length>0){n.length>0&&n.push(``),n.push(O(`Files to create:`));for(let e of i)n.push(` ${E(`+`)} ${pt(xt(t,M(t,e.path))||e.path)}`)}if(e.skipped.length>0){n.length>0&&n.push(``),n.push(T(`Already present (skipped):`));for(let t of e.skipped)n.push(` ${T(`· ${t.path} (${t.reason})`)}`)}if(e.warnings.length>0){n.length>0&&n.push(``),n.push(mt(`Warnings:`));for(let t of e.warnings)n.push(` ${mt(`!`)} ${t}`)}return n.join(`
76
+ `)}async function bl(e,t){let n=nn({input:t??process.stdin,output:process.stdout});try{let t=(await n.question(e)).trim().toLowerCase();return t===``||t===`y`||t===`yes`}finally{n.close()}}function xl(){return new t(`seed`).description(`Scaffold a starter pack into the project. Defaults to "${Pe}" — the Karpathy three-layer knowledge base. Use --pack to pick a different pack (run with --list-packs to see all). Use --root to place pack folders inside a subfolder instead of the project root.`).argument(`[path]`,`Project directory (defaults to cwd)`).option(`-p, --pack <id>`,`Starter pack to scaffold. One of: ${Ke.join(`, `)}. Defaults to "${Pe}".`).option(`-r, --root <path>`,`Subfolder (relative to the project dir) to scaffold into — created if missing. Defaults to the project root when omitted in non-interactive runs; prompts on a TTY.`).option(`--list-packs`,`List available starter packs and exit.`).option(`-y, --yes`,`Skip confirmation prompt`).option(`--dry-run`,`Print the plan and exit without writing`).action(async(e,t)=>{if(t.listPacks){process.stdout.write(`${vl()}\n`);return}if(t.pack!==void 0&&!gl(t.pack)){process.stderr.write(`${D(`Error:`)} Unknown pack "${t.pack}". Available: ${Ke.join(`, `)}\n`),process.exitCode=1;return}let n=await _l({cwd:e??process.cwd(),pack:t.pack,root:t.root,yes:t.yes,dryRun:t.dryRun});process.stdout.write(`${n.message}\n`),n.exitCode!==0&&(process.exitCode=n.exitCode)})}async function Sl(e,t,n){try{return await e.repos.get({owner:t,repo:n}),{kind:`ok`,available:!1}}catch(e){let t=e.status;return t===404?{kind:`ok`,available:!0}:t===401?{kind:`auth-required`}:{kind:`network`}}}async function Cl(e,t){let{host:n,owner:r,name:i,json:a}=e;R(n);let o=await si(n,t);if(o==null){if(a){process.stdout.write(`${JSON.stringify({type:`error`,code:`auth-required`})}\n`);return}process.stderr.write(`Not logged in to ${n}\n`),process.exit(1)}let s=n===`github.com`?void 0:`https://${n}/api/v3`,c=await Sl(new H({auth:o,...s?{baseUrl:s}:{}}),r,i);if(c.kind===`ok`){a?process.stdout.write(`${JSON.stringify({type:`name-check`,available:c.available})}\n`):process.stdout.write(c.available?`available
77
77
  `:`taken
78
- `);return}if(a){process.stdout.write(`${JSON.stringify({type:`error`,code:c.kind})}\n`);return}process.stderr.write(`✗ share name-check failed: ${c.kind}\n`),process.exit(1)}function Sl(e){return new t(`name-check`).description(`Check if owner/name is available on GitHub`).requiredOption(`--owner <owner>`,`GitHub owner (user or org)`).requiredOption(`--name <name>`,`Repository name`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await xl(t,await e())})}async function Cl(e){try{let t=[],n=await e.users.getAuthenticated();t.push({login:n.data.login,kind:`user`,avatarUrl:n.data.avatar_url});for await(let n of e.paginate.iterator(e.orgs.listMembershipsForAuthenticatedUser,{state:`active`,per_page:100}))for(let e of n.data)(e.permissions?.can_create_repository===!0||e.role===`admin`)&&t.push({login:e.organization.login,kind:`org`,avatarUrl:e.organization.avatar_url??void 0});return{kind:`ok`,owners:t}}catch(e){return e.status===401?{kind:`auth-required`}:{kind:`network`}}}async function wl(e,t){let{host:n,json:r}=e;L(n);let i=await ci(n,t);if(i==null){if(r){process.stdout.write(`${JSON.stringify({type:`error`,code:`auth-required`})}\n`);return}process.stderr.write(`Not logged in to ${n}\n`),process.exit(1)}let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=await Cl(new V({auth:i,...a?{baseUrl:a}:{}}));if(o.kind===`ok`){if(r)process.stdout.write(`${JSON.stringify({type:`owners`,owners:o.owners})}\n`);else for(let e of o.owners)process.stdout.write(`${e.kind}\t${e.login}\n`);return}if(r){process.stdout.write(`${JSON.stringify({type:`error`,code:o.kind})}\n`);return}process.stderr.write(`✗ share owners failed: ${o.kind}\n`),process.exit(1)}function Tl(e){return new t(`owners`).description(`List GitHub owners eligible to host a new repository`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await wl(t,await e())})}function El(e){let t=e,n=t.status,r=t.response?.data,i=t.response?.headers,a=`${r?.message??r?.errors?.map(e=>e.message??``).join(`
79
- `)??``}\n${t.message??``}`.toLowerCase();return n===401?`auth-required`:n===403?i?.[`x-github-sso`]||a.includes(`saml`)||a.includes(`sso`)?`saml-sso`:`network`:n===422&&(r?.errors?.some(e=>e.field===`name`)||a.includes(`already exists`)||a.includes(`name already exists`))?`name-conflict`:`network`}async function Dl(e){let{octokit:t,ownerLogin:n,ownerKind:r,name:i,visibility:a,description:o}=e,s=a===`private`;if(r===`user`){let{data:e}=await t.repos.createForAuthenticatedUser({name:i,private:s,...o?{description:o}:{}});return{cloneUrl:e.clone_url,defaultBranch:e.default_branch??`main`}}let{data:c}=await t.repos.createInOrg({org:n,name:i,visibility:a,...o?{description:o}:{}});return{cloneUrl:c.clone_url,defaultBranch:c.default_branch??`main`}}async function Ol(e,t,n){try{let{data:r}=await e.repos.get({owner:t,repo:n});return{cloneUrl:r.clone_url,defaultBranch:r.default_branch??`main`}}catch{return null}}async function kl(e,t){return(await e.users.getAuthenticated()).data.login.toLowerCase()===t.toLowerCase()?`user`:`org`}function Al(e){return xe({baseDir:e,unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`})}function jl(e,t){if(!e.startsWith(`https://`))return e;try{if(new URL(e).hostname!==`github.com`)return e}catch{return e}return e.replace(`https://`,`https://x-access-token:${t}@`)}const Ml={ensureOkScaffold:e=>{Ie(e)},gitFactory:Al};async function Nl(e){let t={...Ml,...e.deps},n=j(e.projectDir),r;if(e.ownerKind)r=e.ownerKind;else try{r=await kl(e.octokit,e.body.owner)}catch(e){return{kind:`error`,code:El(e)}}try{t.ensureOkScaffold(n)}catch{return{kind:`error`,code:`init-failed`}}let i=t.gitFactory(n);if(!M(A(n,`.git`)))try{await i.init()}catch{return{kind:`error`,code:`init-failed`}}let a;try{a=await Dl({octokit:e.octokit,ownerLogin:e.body.owner,ownerKind:r,name:e.body.name,visibility:e.body.visibility,description:e.body.description})}catch(t){if(El(t)===`name-conflict`){let t=await Ol(e.octokit,e.body.owner,e.body.name);if(t===null)return{kind:`error`,code:`name-conflict`};a=t}else return{kind:`error`,code:El(t)}}try{await i.addRemote(`origin`,a.cloneUrl)}catch(e){if(!String(e.message??``).toLowerCase().includes(`remote origin already exists`))return{kind:`error`,code:`push-failed`}}let o=!1;try{await i.raw([`rev-parse`,`--verify`,`HEAD`])}catch{o=!0}if(o)try{await i.add(`.`),await i.raw([`commit`,`--allow-empty`,`-m`,`Initial commit`])}catch{return{kind:`error`,code:`init-failed`}}let s=jl(a.cloneUrl,e.token);try{await i.raw([`push`,s,`HEAD:refs/heads/${a.defaultBranch}`])}catch(e){let t=String(e.message??``).toLowerCase();return t.includes(`saml`)||t.includes(`sso`)?{kind:`error`,code:`saml-sso`}:{kind:`error`,code:`push-failed`}}try{await i.raw([`update-ref`,`refs/remotes/origin/${a.defaultBranch}`,`HEAD`])}catch{}return{kind:`ok`,value:{ownerLogin:e.body.owner,repoName:e.body.name,cloneUrl:a.cloneUrl,defaultBranch:a.defaultBranch}}}function Pl(e,t){if(!e){t.kind===`ok`?process.stdout.write(`✓ Published ${t.value.cloneUrl}\n`):(process.stderr.write(`✗ share publish failed: ${t.code}\n`),process.exit(1));return}if(t.kind===`ok`){process.stdout.write(`${JSON.stringify({type:`publish`,...t.value})}\n`);return}process.stdout.write(`${JSON.stringify({type:`error`,code:t.code})}\n`)}async function Fl(e,t){let{host:n,owner:r,name:i,visibility:a,description:o,projectDir:s,json:c}=e;L(n);let l=await ci(n,t);if(l==null){Pl(c,{kind:`error`,code:`auth-required`});return}let u=n===`github.com`?void 0:`https://${n}/api/v3`,d=new V({auth:l,...u?{baseUrl:u}:{}});try{gt(`git config user.email`,{cwd:s,stdio:`ignore`})}catch{process.env.GIT_AUTHOR_NAME??=`Open Knowledge`,process.env.GIT_AUTHOR_EMAIL??=`noreply@inkeep.com`,process.env.GIT_COMMITTER_NAME??=`Open Knowledge`,process.env.GIT_COMMITTER_EMAIL??=`noreply@inkeep.com`}Pl(c,await Nl({octokit:d,token:l,projectDir:s,body:{owner:r,name:i,visibility:a,description:o}}))}function Il(e){return new t(`publish`).description(`Publish a no-remote project to GitHub`).requiredOption(`--owner <owner>`,`GitHub owner (user or org)`).requiredOption(`--name <name>`,`Repository name`).requiredOption(`--visibility <visibility>`,`public or private`).option(`--description <description>`,`Repository description`).requiredOption(`--project-dir <projectDir>`,`Path to the project on disk`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{t.visibility!==`public`&&t.visibility!==`private`&&(process.stderr.write(`✗ visibility must be 'public' or 'private'
80
- `),process.exit(1)),await Fl(t,await e())})}function Ll(){let e=new t(`share`);e.description(`Sharing flow operations (owners, name-check, publish)`);let n=()=>ie();return e.addCommand(Tl(n)),e.addCommand(Sl(n)),e.addCommand(Il(n)),e}function Rl(e,t){return{server:zl(`server`,e),ui:zl(`ui`,t)}}function zl(e,t){switch(t.status){case`missing`:return{name:e,state:`missing`,alive:!1};case`corrupt`:return{name:e,state:`corrupt`,alive:!1};case`foreign-host`:return{name:e,state:`foreign-host`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:`unknown`};case`dead-pid`:return{name:e,state:`dead-pid`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:!1};case`alive`:return{name:e,state:`alive`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:!0}}}function Bl(e){return`${Vl(e.server)}\n${Vl(e.ui)}`}function Vl(e){let t=e.name===`server`?`server`:`ui `;return e.state===`missing`?`${t} not running`:e.state===`corrupt`?`${t} lock file corrupt — run \`ok clean\``:e.state===`foreign-host`?`${t} foreign host (${e.host}) pid=${e.pid} port=${e.port}`:e.state===`dead-pid`?`${t} stale (dead pid=${e.pid}) — run \`ok clean\``:`${t} alive pid=${e.pid} port=${e.port} started=${e.startedAt}`}function Hl(e){let t=e.inspect??(t=>H(e.lockDir,t)),n=e.log??(e=>console.log(e)),r=Rl(t(`server`),t(`ui`));return e.json?n(JSON.stringify(r,null,2)):n(Bl(r)),r}function Ul(e){return new t(`status`).description(`Show live state of the server + ui lockfiles for this project`).option(`--json`,`Emit structured JSON instead of formatted text`).action(t=>{e(),Hl({lockDir:w(process.cwd()),json:t.json===!0})})}function Wl(e,t,n={}){let r=n.isAlive??x,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function Gl(e){let t=e.inspect??(t=>H(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Wl(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function Kl(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function ql(e,t=x){let n=await to(),r=null;for(let i of n){let n=H(i,`server`),a=H(i,`ui`);if(Kl(n,t)&&n.lock.port===e||Kl(a,t)&&a.lock.port===e)return i;r===null&&(Kl(n,t)&&n.lock.pid===e||Kl(a,t)&&a.lock.pid===e)&&(r=i)}return r}function Jl(e){let t=Gl({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Yl(e){return new t(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=Gl({lockDir:w(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await sl({});return}if(n===`all`){let e=await to();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=H(n,`server`),r=H(n,`ui`);!Kl(e,x)&&!Kl(r,x)||(Jl(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await ql(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}Jl(t);return}Jl(w(n))})}process.argv.includes(`--no-color`)?(process.env.NO_COLOR=`1`,delete process.env.FORCE_COLOR):process.argv.includes(`--color`)&&(process.env.FORCE_COLOR=`1`,delete process.env.NO_COLOR);const Q=new t;let $,Xl;function Zl(){return Xl}Q.name(`open-knowledge`).description(`Local-first knowledge base with CRDT collaboration`).version(tt).option(`--cwd <path>`,`Working directory`).option(`--log-level <level>`,`Log level`,`info`).option(`--no-color`,`Disable color output`).option(`--color`,`Force color output`).hook(`preAction`,e=>{let t=e.opts().cwd;t!==void 0&&process.chdir(t);let{config:n}=it(t);$=n;let r=e.args?.[0]??e.name()??`cli`;Xl=Ee({name:`cli`,project:n.project?.name??void 0}),Xl.info({command:r,cwd:process.cwd()},`cli command started`)}),Q.action(async()=>{if(lt(ut()).available){ct({spawn:_t});return}await ot($,{})});const Ql=dt(()=>$);Q.addCommand(Ql);const $l=Jc(()=>$);Q.addCommand($l),Q.addCommand(_e()),Q.addCommand(yl()),Q.addCommand(Go()),Q.addCommand(ht());const eu=Yc(()=>$);Q.addCommand(eu);const tu=ve(()=>$);Q.addCommand(tu),Q.addCommand(Yl(()=>$)),Q.addCommand(ki(()=>$)),Q.addCommand(Ul(()=>$)),Q.addCommand(cl()),Q.addCommand(Lo()),Q.addCommand(Ei()),Q.addCommand(Ji()),Q.addCommand(gi()),Q.addCommand(Bi(()=>$)),Q.addCommand(dl(()=>$)),Q.addCommand(pl(()=>$)),Q.addCommand(fl(()=>$)),Q.addCommand(Ll()),await Q.parseAsync(process.argv,{from:`node`});export{Zl as getCliLogger};
78
+ `);return}if(a){process.stdout.write(`${JSON.stringify({type:`error`,code:c.kind})}\n`);return}process.stderr.write(`✗ share name-check failed: ${c.kind}\n`),process.exit(1)}function wl(e){return new t(`name-check`).description(`Check if owner/name is available on GitHub`).requiredOption(`--owner <owner>`,`GitHub owner (user or org)`).requiredOption(`--name <name>`,`Repository name`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await Cl(t,await e())})}async function Tl(e){try{let t=[],n=await e.users.getAuthenticated();t.push({login:n.data.login,kind:`user`,avatarUrl:n.data.avatar_url});for await(let n of e.paginate.iterator(e.orgs.listMembershipsForAuthenticatedUser,{state:`active`,per_page:100}))for(let e of n.data)(e.permissions?.can_create_repository===!0||e.role===`admin`)&&t.push({login:e.organization.login,kind:`org`,avatarUrl:e.organization.avatar_url??void 0});return{kind:`ok`,owners:t}}catch(e){return e.status===401?{kind:`auth-required`}:{kind:`network`}}}async function El(e,t){let{host:n,json:r}=e;R(n);let i=await si(n,t);if(i==null){if(r){process.stdout.write(`${JSON.stringify({type:`error`,code:`auth-required`})}\n`);return}process.stderr.write(`Not logged in to ${n}\n`),process.exit(1)}let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=await Tl(new H({auth:i,...a?{baseUrl:a}:{}}));if(o.kind===`ok`){if(r)process.stdout.write(`${JSON.stringify({type:`owners`,owners:o.owners})}\n`);else for(let e of o.owners)process.stdout.write(`${e.kind}\t${e.login}\n`);return}if(r){process.stdout.write(`${JSON.stringify({type:`error`,code:o.kind})}\n`);return}process.stderr.write(`✗ share owners failed: ${o.kind}\n`),process.exit(1)}function Dl(e){return new t(`owners`).description(`List GitHub owners eligible to host a new repository`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await El(t,await e())})}function Ol(e){let t=e,n=t.status,r=t.response?.data,i=t.response?.headers,a=`${r?.message??r?.errors?.map(e=>e.message??``).join(`
79
+ `)??``}\n${t.message??``}`.toLowerCase();return n===401?`auth-required`:n===403?i?.[`x-github-sso`]||a.includes(`saml`)||a.includes(`sso`)?`saml-sso`:`network`:n===422&&(r?.errors?.some(e=>e.field===`name`)||a.includes(`already exists`)||a.includes(`name already exists`))?`name-conflict`:`network`}async function kl(e){let{octokit:t,ownerLogin:n,ownerKind:r,name:i,visibility:a,description:o}=e,s=a===`private`;if(r===`user`){let{data:e}=await t.repos.createForAuthenticatedUser({name:i,private:s,...o?{description:o}:{}});return{cloneUrl:e.clone_url,defaultBranch:e.default_branch??`main`}}let{data:c}=await t.repos.createInOrg({org:n,name:i,visibility:a,...o?{description:o}:{}});return{cloneUrl:c.clone_url,defaultBranch:c.default_branch??`main`}}async function Al(e,t,n){try{let{data:r}=await e.repos.get({owner:t,repo:n});return{cloneUrl:r.clone_url,defaultBranch:r.default_branch??`main`}}catch{return null}}async function jl(e,t){return(await e.users.getAuthenticated()).data.login.toLowerCase()===t.toLowerCase()?`user`:`org`}function Ml(e){return xe({baseDir:e,unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`})}function Nl(e,t){if(!e.startsWith(`https://`))return e;try{if(new URL(e).hostname!==`github.com`)return e}catch{return e}return e.replace(`https://`,`https://x-access-token:${t}@`)}const Pl={ensureOkScaffold:e=>{Ie(e)},gitFactory:Ml};async function Fl(e){let t={...Pl,...e.deps},n=M(e.projectDir),r;if(e.ownerKind)r=e.ownerKind;else try{r=await jl(e.octokit,e.body.owner)}catch(e){return{kind:`error`,code:Ol(e)}}try{t.ensureOkScaffold(n)}catch{return{kind:`error`,code:`init-failed`}}let i=t.gitFactory(n);if(!N(j(n,`.git`)))try{await i.init()}catch{return{kind:`error`,code:`init-failed`}}let a;try{a=await kl({octokit:e.octokit,ownerLogin:e.body.owner,ownerKind:r,name:e.body.name,visibility:e.body.visibility,description:e.body.description})}catch(t){if(Ol(t)===`name-conflict`){let t=await Al(e.octokit,e.body.owner,e.body.name);if(t===null)return{kind:`error`,code:`name-conflict`};a=t}else return{kind:`error`,code:Ol(t)}}try{await i.addRemote(`origin`,a.cloneUrl)}catch(e){if(!String(e.message??``).toLowerCase().includes(`remote origin already exists`))return{kind:`error`,code:`push-failed`}}let o=!1;try{await i.raw([`rev-parse`,`--verify`,`HEAD`])}catch{o=!0}if(o)try{await i.add(`.`),await i.raw([`commit`,`--allow-empty`,`-m`,`Initial commit`])}catch{return{kind:`error`,code:`init-failed`}}let s=Nl(a.cloneUrl,e.token);try{await i.raw([`push`,s,`HEAD:refs/heads/${a.defaultBranch}`])}catch(e){let t=String(e.message??``).toLowerCase();return t.includes(`saml`)||t.includes(`sso`)?{kind:`error`,code:`saml-sso`}:{kind:`error`,code:`push-failed`}}try{await i.raw([`update-ref`,`refs/remotes/origin/${a.defaultBranch}`,`HEAD`])}catch{}return{kind:`ok`,value:{ownerLogin:e.body.owner,repoName:e.body.name,cloneUrl:a.cloneUrl,defaultBranch:a.defaultBranch}}}function Il(e,t){if(!e){t.kind===`ok`?process.stdout.write(`✓ Published ${t.value.cloneUrl}\n`):(process.stderr.write(`✗ share publish failed: ${t.code}\n`),process.exit(1));return}if(t.kind===`ok`){process.stdout.write(`${JSON.stringify({type:`publish`,...t.value})}\n`);return}process.stdout.write(`${JSON.stringify({type:`error`,code:t.code})}\n`)}async function Ll(e,t){let{host:n,owner:r,name:i,visibility:a,description:o,projectDir:s,json:c}=e;R(n);let l=await si(n,t);if(l==null){Il(c,{kind:`error`,code:`auth-required`});return}let u=n===`github.com`?void 0:`https://${n}/api/v3`,d=new H({auth:l,...u?{baseUrl:u}:{}});try{gt(`git config user.email`,{cwd:s,stdio:`ignore`})}catch{process.env.GIT_AUTHOR_NAME??=`Open Knowledge`,process.env.GIT_AUTHOR_EMAIL??=`noreply@inkeep.com`,process.env.GIT_COMMITTER_NAME??=`Open Knowledge`,process.env.GIT_COMMITTER_EMAIL??=`noreply@inkeep.com`}Il(c,await Fl({octokit:d,token:l,projectDir:s,body:{owner:r,name:i,visibility:a,description:o}}))}function Rl(e){return new t(`publish`).description(`Publish a no-remote project to GitHub`).requiredOption(`--owner <owner>`,`GitHub owner (user or org)`).requiredOption(`--name <name>`,`Repository name`).requiredOption(`--visibility <visibility>`,`public or private`).option(`--description <description>`,`Repository description`).requiredOption(`--project-dir <projectDir>`,`Path to the project on disk`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{t.visibility!==`public`&&t.visibility!==`private`&&(process.stderr.write(`✗ visibility must be 'public' or 'private'
80
+ `),process.exit(1)),await Ll(t,await e())})}function zl(){let e=new t(`share`);e.description(`Sharing flow operations (owners, name-check, publish)`);let n=()=>ie();return e.addCommand(Dl(n)),e.addCommand(wl(n)),e.addCommand(Rl(n)),e}function Bl(e,t){return{server:Vl(`server`,e),ui:Vl(`ui`,t)}}function Vl(e,t){switch(t.status){case`missing`:return{name:e,state:`missing`,alive:!1};case`corrupt`:return{name:e,state:`corrupt`,alive:!1};case`foreign-host`:return{name:e,state:`foreign-host`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:`unknown`};case`dead-pid`:return{name:e,state:`dead-pid`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:!1};case`alive`:return{name:e,state:`alive`,pid:t.lock.pid,port:t.lock.port,startedAt:t.lock.startedAt,host:t.lock.hostname,alive:!0}}}function Hl(e){return`${Ul(e.server)}\n${Ul(e.ui)}`}function Ul(e){let t=e.name===`server`?`server`:`ui `;return e.state===`missing`?`${t} not running`:e.state===`corrupt`?`${t} lock file corrupt — run \`ok clean\``:e.state===`foreign-host`?`${t} foreign host (${e.host}) pid=${e.pid} port=${e.port}`:e.state===`dead-pid`?`${t} stale (dead pid=${e.pid}) — run \`ok clean\``:`${t} alive pid=${e.pid} port=${e.port} started=${e.startedAt}`}function Wl(e){let t=e.inspect??(t=>U(e.lockDir,t)),n=e.log??(e=>console.log(e)),r=Bl(t(`server`),t(`ui`));return e.json?n(JSON.stringify(r,null,2)):n(Hl(r)),r}function Gl(e){return new t(`status`).description(`Show live state of the server + ui lockfiles for this project`).option(`--json`,`Emit structured JSON instead of formatted text`).action(t=>{e(),Wl({lockDir:w(process.cwd()),json:t.json===!0})})}function Kl(e,t,n={}){let r=n.isAlive??y,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function ql(e){let t=e.inspect??(t=>U(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Kl(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function Jl(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function Yl(e,t=y){let n=await no(),r=null;for(let i of n){let n=U(i,`server`),a=U(i,`ui`);if(Jl(n,t)&&n.lock.port===e||Jl(a,t)&&a.lock.port===e)return i;r===null&&(Jl(n,t)&&n.lock.pid===e||Jl(a,t)&&a.lock.pid===e)&&(r=i)}return r}function Xl(e){let t=ql({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Zl(e){return new t(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=ql({lockDir:w(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await ll({});return}if(n===`all`){let e=await no();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=U(n,`server`),r=U(n,`ui`);!Jl(e,y)&&!Jl(r,y)||(Xl(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await Yl(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}Xl(t);return}Xl(w(n))})}process.argv.includes(`--no-color`)?(process.env.NO_COLOR=`1`,delete process.env.FORCE_COLOR):process.argv.includes(`--color`)&&(process.env.FORCE_COLOR=`1`,delete process.env.NO_COLOR);const Q=new t;let $,Ql;function $l(){return Ql}Q.name(`open-knowledge`).description(`Local-first knowledge base with CRDT collaboration`).version(tt).option(`--cwd <path>`,`Working directory`).option(`--log-level <level>`,`Log level`,`info`).option(`--no-color`,`Disable color output`).option(`--color`,`Force color output`).hook(`preAction`,e=>{let t=e.opts().cwd;t!==void 0&&process.chdir(t);let{config:n}=it(t);$=n;let r=e.args?.[0]??e.name()??`cli`;Ql=Ee({name:`cli`,project:n.project?.name??void 0}),Ql.info({command:r,cwd:process.cwd()},`cli command started`)}),Q.action(async()=>{if(lt(ut()).available){ct({spawn:_t});return}await ot($,{})});const eu=dt(()=>$);Q.addCommand(eu);const tu=Xc(()=>$);Q.addCommand(tu),Q.addCommand(_e()),Q.addCommand(xl()),Q.addCommand(Ko()),Q.addCommand(ht());const nu=Zc(()=>$);Q.addCommand(nu);const ru=ve(()=>$);Q.addCommand(ru),Q.addCommand(Zl(()=>$)),Q.addCommand(Ai(()=>$)),Q.addCommand(Gl(()=>$)),Q.addCommand(ul()),Q.addCommand(Ro()),Q.addCommand(Di()),Q.addCommand(Yi()),Q.addCommand(hi()),Q.addCommand(Vi(()=>$)),Q.addCommand(pl(()=>$)),Q.addCommand(hl(()=>$)),Q.addCommand(ml(()=>$)),Q.addCommand(zl()),await Q.parseAsync(process.argv,{from:`node`});export{$l as getCliLogger};
81
81
  //# sourceMappingURL=cli.mjs.map