@inkeep/open-knowledge 0.28.0-beta.8 → 0.28.1-beta.2
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.
- package/dist/assets/skills/discovery/SKILL.md +1 -1
- package/dist/assets/skills/project/SKILL.md +1 -1
- package/dist/assets/skills/write-skill/SKILL.md +1 -1
- package/dist/cli.mjs +48 -48
- package/dist/constants-CSnkwjht.mjs +2 -0
- package/dist/{dist-CD7iLv1c.mjs → dist-BvK2GLh6.mjs} +9 -9
- package/dist/{dist-D0fMk7yr.mjs → dist-CDpjGDM9.mjs} +1 -1
- package/dist/{gh-detect-Bc-KSyh6.mjs → gh-detect-RYp8nY6_.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/init-Bv8YRF0a.mjs +1 -0
- package/dist/{init-Ci768cUc.mjs → init-DUT3jX8X.mjs} +4 -4
- package/dist/loader-CU2qWOz4.mjs +1 -0
- package/dist/{loader-CUdbH5wE.mjs → loader-uMT8FFdY.mjs} +2 -2
- package/dist/preview-D6u_pKXX.mjs +1 -0
- package/dist/{preview-Ty-nKYZm.mjs → preview-en_IHxnY.mjs} +2 -2
- package/dist/public/assets/ActivityModeContent-BIqN0ONM.js +2 -0
- package/dist/public/assets/CodeMirrorPropInput-CPDk-5JJ.js +3 -0
- package/dist/public/assets/{ConsentDialogBody-u7A2_0jL.js → ConsentDialogBody-BeNIRTmZ.js} +1 -1
- package/dist/public/assets/DocumentContext-be-baGUX.js +35 -0
- package/dist/public/assets/EnableSyncConfirmDialog-BSbqFLdb.js +1 -0
- package/dist/public/assets/{GraphPanel-CHb0qJOI.js → GraphPanel-Dqtk3iTG.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-70ooWd7O.js → ManagedArtifactProperties-BdppAYrr.js} +1 -1
- package/dist/public/assets/{McpConsentDialogBody-BKvKmtg_.js → McpConsentDialogBody-CUQI4RGZ.js} +1 -1
- package/dist/public/assets/MermaidDocEditor-DU0SGBnc.js +1 -0
- package/dist/public/assets/PropertyPanel-NVSBKZMj.js +2 -0
- package/dist/public/assets/{SettingsDialogBody-BX4GP2gS.js → SettingsDialogBody-DgSfMkYv.js} +2 -2
- package/dist/public/assets/{ShareBranchSwitchDialog-Clk_4Io5.js → ShareBranchSwitchDialog-B_JDNo2q.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-BDmjkthD.js → ShareReceiveDialog-BfzI_GWc.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-Ds4kHbjr.js → ShareReceiveMissDialog-c6Vh3OWp.js} +1 -1
- package/dist/public/assets/{SkillEditorActions-pVw4b49f.js → SkillEditorActions-BQHJ7_wh.js} +1 -1
- package/dist/public/assets/SourceEditor-C8XoS6-P.js +1 -0
- package/dist/public/assets/{TerminalPanel-Cfp4xEGm.js → TerminalPanel-BOKW93aW.js} +5 -5
- package/dist/public/assets/{_baseFor-CyNhGcoH.js → _baseFor-gIylPeg5.js} +1 -1
- package/dist/public/assets/{agent-presence-C79Orlhd.js → agent-presence-bhQkrJzF.js} +1 -1
- package/dist/public/assets/{arc-D83o8OOg.js → arc-C4yhEJQw.js} +1 -1
- package/dist/public/assets/architecture-YZFGNWBL-DcH0Xwye.js +1 -0
- package/dist/public/assets/{architectureDiagram-Q4EWVU46-ChCk9piL.js → architectureDiagram-Q4EWVU46-DC4AvWYl.js} +1 -1
- package/dist/public/assets/auth-state-cache-JChrBtJe.js +11 -0
- package/dist/public/assets/{blockDiagram-DXYQGD6D-BzhsSfS3.js → blockDiagram-DXYQGD6D-C1cL6qRh.js} +1 -1
- package/dist/public/assets/{c4Diagram-AHTNJAMY-DulnnLxj.js → c4Diagram-AHTNJAMY-D6DqCCxr.js} +1 -1
- package/dist/public/assets/{calendar-1ajmwUXD.js → calendar-BcHFwA_d.js} +1 -1
- package/dist/public/assets/channel-DvmTCFK0.js +1 -0
- package/dist/public/assets/{checkbox-f-bVZCIm.js → checkbox-CZq8uurx.js} +1 -1
- package/dist/public/assets/{chunk-2KRD3SAO-DsNBCxFU.js → chunk-2KRD3SAO-Em1kdvE5.js} +1 -1
- package/dist/public/assets/{chunk-336JU56O-CcZCge2-.js → chunk-336JU56O-COSGTnty.js} +2 -2
- package/dist/public/assets/chunk-426QAEUC-lxQgJP7J.js +1 -0
- package/dist/public/assets/{chunk-4BX2VUAB-Grk9TGXN.js → chunk-4BX2VUAB-X8pZgMic.js} +1 -1
- package/dist/public/assets/{chunk-4TB4RGXK-CAXYTGg7.js → chunk-4TB4RGXK-CVfL5Gbl.js} +1 -1
- package/dist/public/assets/chunk-55IACEB6-CugRk1ll.js +1 -0
- package/dist/public/assets/{chunk-5FUZZQ4R-BrmoYnYM.js → chunk-5FUZZQ4R-DXnyU1FU.js} +1 -1
- package/dist/public/assets/{chunk-5PVQY5BW-CEeElQgj.js → chunk-5PVQY5BW-BfWflEdC.js} +1 -1
- package/dist/public/assets/{chunk-67CJDMHE-DRCcVE5j.js → chunk-67CJDMHE-DO9QtOw-.js} +1 -1
- package/dist/public/assets/{chunk-7N4EOEYR-ChRf9CRN.js → chunk-7N4EOEYR-BORVqcDw.js} +1 -1
- package/dist/public/assets/{chunk-AA7GKIK3-DJMIkYZB.js → chunk-AA7GKIK3-By1Z9lsq.js} +1 -1
- package/dist/public/assets/{chunk-BSJP7CBP-CkhFUxRl.js → chunk-BSJP7CBP-DGkoofP8.js} +1 -1
- package/dist/public/assets/{chunk-CIAEETIT-aHYgXftd.js → chunk-CIAEETIT-Ba--itJL.js} +1 -1
- package/dist/public/assets/{chunk-EDXVE4YY-B1j4UpBa.js → chunk-EDXVE4YY-CdoK23Sp.js} +1 -1
- package/dist/public/assets/{chunk-ENJZ2VHE-BNy6Rh-1.js → chunk-ENJZ2VHE-DswT8yfW.js} +1 -1
- package/dist/public/assets/{chunk-FMBD7UC4-CSbbREu-.js → chunk-FMBD7UC4-x1q3bw7Q.js} +1 -1
- package/dist/public/assets/{chunk-FOC6F5B3-Dr33I0tU.js → chunk-FOC6F5B3-DhD5rfUR.js} +1 -1
- package/dist/public/assets/{chunk-ICPOFSXX-1RLN41rn.js → chunk-ICPOFSXX-D9NDunVu.js} +1 -1
- package/dist/public/assets/{chunk-K5T4RW27-CYsL3ocS.js → chunk-K5T4RW27-BvwWfXcd.js} +1 -1
- package/dist/public/assets/{chunk-KGLVRYIC-D64iCe0j.js → chunk-KGLVRYIC-DwbKIj1d.js} +1 -1
- package/dist/public/assets/{chunk-LIHQZDEY-QwBKmGy0.js → chunk-LIHQZDEY-BoNEjWhP.js} +1 -1
- package/dist/public/assets/{chunk-ORNJ4GCN-C7OAq2PD.js → chunk-ORNJ4GCN-DAGke0iu.js} +1 -1
- package/dist/public/assets/{chunk-OYMX7WX6-DKweTKMn.js → chunk-OYMX7WX6-f6ekO3O0.js} +1 -1
- package/dist/public/assets/chunk-QZHKN3VN-BkaeB1ef.js +1 -0
- package/dist/public/assets/{chunk-U2HBQHQK-mRJ3fq4T.js → chunk-U2HBQHQK-DmscK_CK.js} +1 -1
- package/dist/public/assets/{chunk-X2U36JSP-BIFgIXrZ.js → chunk-X2U36JSP-Drcsz9sU.js} +1 -1
- package/dist/public/assets/{chunk-XPW4576I-DG64u9p6.js → chunk-XPW4576I-BaXHEna0.js} +1 -1
- package/dist/public/assets/{chunk-YZCP3GAM-BWUy7IDu.js → chunk-YZCP3GAM-mwyjbKot.js} +1 -1
- package/dist/public/assets/{chunk-ZZ45TVLE-DseNoBkl.js → chunk-ZZ45TVLE-CFmm3SWp.js} +1 -1
- package/dist/public/assets/classDiagram-6PBFFD2Q-B7ML6gIt.js +1 -0
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-B8rZ1Wmm.js +1 -0
- package/dist/public/assets/clone-Br4VE8_-.js +1 -0
- package/dist/public/assets/{collapsible-iVWLn36m.js → collapsible-DeTPPJXe.js} +1 -1
- package/dist/public/assets/config-provider-CG3O-D_g.js +4 -0
- package/dist/public/assets/{cose-bilkent-S5V4N54A-VDkktAp6.js → cose-bilkent-S5V4N54A-DvX8tKj-.js} +1 -1
- package/dist/public/assets/{dagre-vhYcUXka.js → dagre-DFSkGxKB.js} +1 -1
- package/dist/public/assets/{dagre-KV5264BT-DSZ_VImb.js → dagre-KV5264BT-Bl5Wtmeo.js} +1 -1
- package/dist/public/assets/{diagram-5BDNPKRD-DXB4cP1D.js → diagram-5BDNPKRD-tjMIOssc.js} +1 -1
- package/dist/public/assets/{diagram-G4DWMVQ6-Da83oaRA.js → diagram-G4DWMVQ6-CK9r2ubE.js} +1 -1
- package/dist/public/assets/{diagram-MMDJMWI5-DjbYSzQh.js → diagram-MMDJMWI5-pPXE2_j5.js} +1 -1
- package/dist/public/assets/{diagram-TYMM5635-Bdai1eSE.js → diagram-TYMM5635-Be2tSIFw.js} +1 -1
- package/dist/public/assets/{dialog-BiB39Lhy.js → dialog-CsCS3R9S.js} +1 -1
- package/dist/public/assets/dist-B0fhyoQg.js +11 -0
- package/dist/public/assets/{dist-BuALIrNm.js → dist-B32UcIvZ.js} +1 -1
- package/dist/public/assets/{dist-CiFyjhkz.js → dist-BCx0Ovdl.js} +1 -1
- package/dist/public/assets/{dist-C75OCMT0.js → dist-BVjP1DLS.js} +1 -1
- package/dist/public/assets/{dist-jwOy5oFW.js → dist-BqGZCIKm.js} +1 -1
- package/dist/public/assets/dist-BvPTjv8G.js +2 -0
- package/dist/public/assets/{dist-BUqH6ZNg.js → dist-C6pK6kVr.js} +1 -1
- package/dist/public/assets/{dist-DG-zKHrl.js → dist-CWUeoWMV.js} +1 -1
- package/dist/public/assets/dist-Cl10jghh.js +1 -0
- package/dist/public/assets/{dist-B9f86446.js → dist-CysbQf3k.js} +1 -1
- package/dist/public/assets/{dist-DQJENePL.js → dist-DFpeaPKa.js} +1 -1
- package/dist/public/assets/{dist-BEjpPm3y.js → dist-DS_yhd1x.js} +1 -1
- package/dist/public/assets/{dist-Bp_rHida.js → dist-Dcb8C0af.js} +1 -1
- package/dist/public/assets/{dist-DsZfUH3j.js → dist-HncSDvaf.js} +1 -1
- package/dist/public/assets/{dist-C71DLMde.js → dist-K8OBeqgm.js} +1 -1
- package/dist/public/assets/{dist-BQeT9ICH.js → dist-w6PaZv_P.js} +146 -146
- package/dist/public/assets/{doc-hash-eLdowlcO.js → doc-hash-PVDtHUyI.js} +1 -1
- package/dist/public/assets/{documents-events-DftWTO_p.js → documents-events-DDeQH5lL.js} +1 -1
- package/dist/public/assets/documents-fetch-Dm5drRwY.js +1 -0
- package/dist/public/assets/{erDiagram-SMLLAGMA-BVfj1vre.js → erDiagram-SMLLAGMA-B3cWhMkB.js} +1 -1
- package/dist/public/assets/eye-WB1l5kVb.js +1 -0
- package/dist/public/assets/file-tree-adapter-C6VstyQq.js +1 -0
- package/dist/public/assets/{flatten-D_Wjvstd.js → flatten-C63FDqGp.js} +1 -1
- package/dist/public/assets/floating-ui.dom-BgPtBule.js +1 -0
- package/dist/public/assets/{flowDiagram-DWJPFMVM-OSUtzHqA.js → flowDiagram-DWJPFMVM-Bk7b9VCg.js} +1 -1
- package/dist/public/assets/{ganttDiagram-T4ZO3ILL-B-nn56dM.js → ganttDiagram-T4ZO3ILL-CSPHkGTp.js} +1 -1
- package/dist/public/assets/gitGraph-7Q5UKJZL-Ba9p2nZi.js +1 -0
- package/dist/public/assets/{gitGraphDiagram-UUTBAWPF-DZkSF-OC.js → gitGraphDiagram-UUTBAWPF-DmEcXdKa.js} +1 -1
- package/dist/public/assets/{graphlib-BIasyxiN.js → graphlib-D4vC2miW.js} +1 -1
- package/dist/public/assets/index-DDbdubJY.js +2003 -0
- package/dist/public/assets/{index-CgoVvMy1.css → index-DtRk7cSB.css} +1 -1
- package/dist/public/assets/info-OMHHGYJF-DauoPq4L.js +1 -0
- package/dist/public/assets/{infoDiagram-42DDH7IO-BeC9BiIu.js → infoDiagram-42DDH7IO-B90k1FDC.js} +1 -1
- package/dist/public/assets/{isEmpty-n3rjfMgT.js → isEmpty-DKDyjxZL.js} +1 -1
- package/dist/public/assets/isSymbol-TQCBVYcF.js +1 -0
- package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-Dkujw5jx.js → ishikawaDiagram-UXIWVN3A-CrJNhiO8.js} +1 -1
- package/dist/public/assets/{journeyDiagram-VCZTEJTY-CUCWKR7f.js → journeyDiagram-VCZTEJTY-CDnYFlD-.js} +1 -1
- package/dist/public/assets/{kanban-definition-6JOO6SKY-CYLhLDNP.js → kanban-definition-6JOO6SKY-P5CLe5Ry.js} +1 -1
- package/dist/public/assets/{keyboard-shortcuts-C5JAtPtb.js → keyboard-shortcuts-CNsCpHo3.js} +1 -1
- package/dist/public/assets/{label-hTzLGQhh.js → label-fu3Tx8AH.js} +1 -1
- package/dist/public/assets/{line-C2FdpsKU.js → line-CesgYl1m.js} +1 -1
- package/dist/public/assets/{linear-uAS6gY07.js → linear-B5q34u3D.js} +1 -1
- package/dist/public/assets/{mermaid-parser.core-D3oLXj2Q.js → mermaid-parser.core-D4lUxfcL.js} +2 -2
- package/dist/public/assets/{mermaid.core-Cam_8F7g.js → mermaid.core-4wEyIHsI.js} +3 -3
- package/dist/public/assets/{mindmap-definition-QFDTVHPH-xm-abLJ0.js → mindmap-definition-QFDTVHPH-BFkxkOoR.js} +1 -1
- package/dist/public/assets/navigation-targets-C138S-Ad.js +1 -0
- package/dist/public/assets/{now-Cz4lG-PF.js → now-C1KCZH9r.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-BiLs1dgV.js → open-managed-artifact-tab-C9jOHfz4.js} +1 -1
- package/dist/public/assets/{ordinal-DdJ_tP-k.js → ordinal-mOcmz1dH.js} +1 -1
- package/dist/public/assets/packet-4T2RLAQJ-wCm--Lnm.js +1 -0
- package/dist/public/assets/parse-api-error-Bbj0-BSQ.js +1 -0
- package/dist/public/assets/{pending-receive-nav-store-eEQMXb1T.js → pending-receive-nav-store-CNk27AB1.js} +1 -1
- package/dist/public/assets/pie-ZZUOXDRM-SVjTW51k.js +1 -0
- package/dist/public/assets/{pieDiagram-DEJITSTG-BOho7tDc.js → pieDiagram-DEJITSTG-xrZk9MzS.js} +1 -1
- package/dist/public/assets/{project-paths-cuCZTJ3P.js → project-paths-1M9SPXQv.js} +1 -1
- package/dist/public/assets/prop-types-CclpOdFN.js +1 -0
- package/dist/public/assets/{quadrantDiagram-34T5L4WZ-BeSxfVib.js → quadrantDiagram-34T5L4WZ-6Gq9f5n0.js} +1 -1
- package/dist/public/assets/radar-PYXPWWZC-CpEUEFTa.js +1 -0
- package/dist/public/assets/{radio-group-G2GVDZug.js → radio-group-CUljjIYe.js} +1 -1
- package/dist/public/assets/{receive-store-Ckz3u5Dv.js → receive-store-BI47GRKC.js} +1 -1
- package/dist/public/assets/{reduce-CLi1_fYh.js → reduce-DSZ8N5lq.js} +1 -1
- package/dist/public/assets/{requirementDiagram-MS252O5E-Cyy0OBiH.js → requirementDiagram-MS252O5E-Bz4BXIxO.js} +1 -1
- package/dist/public/assets/{sankeyDiagram-XADWPNL6-CxxO0Br2.js → sankeyDiagram-XADWPNL6-JUUNe85z.js} +1 -1
- package/dist/public/assets/{selection-context-DaymKQhd.js → selection-context-exHoVFmy.js} +1 -1
- package/dist/public/assets/{sequenceDiagram-FGHM5R23-D2PtzhZJ.js → sequenceDiagram-FGHM5R23-CMIYv0yF.js} +1 -1
- package/dist/public/assets/skill-actions-Bed6NZWV.js +1 -0
- package/dist/public/assets/skill-scope-B81M2_xh.js +1 -0
- package/dist/public/assets/skills-api-BdFj9A8Y.js +1 -0
- package/dist/public/assets/src-CeGNnK-l.js +2 -0
- package/dist/public/assets/{src-28IIV2Sn.js → src-vR35WiAc.js} +1 -1
- package/dist/public/assets/{stateDiagram-FHFEXIEX-DFFeLq2Y.js → stateDiagram-FHFEXIEX-zOcM60tH.js} +1 -1
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-D_B4Ywf0.js +1 -0
- package/dist/public/assets/{target-navigation-intent-DJtJaVBl.js → target-navigation-intent-Dv6mHsTm.js} +1 -1
- package/dist/public/assets/{telemetry-impl-DbDKK1Kj.js → telemetry-impl-_dZB-keU.js} +2 -2
- package/dist/public/assets/{telemetry-startup-ChBVT3Gs.js → telemetry-startup-XWK3xABf.js} +1 -1
- package/dist/public/assets/{timeline-definition-GMOUNBTQ-DjU4O-O4.js → timeline-definition-GMOUNBTQ-BZmnLBNO.js} +1 -1
- package/dist/public/assets/{toggle-group-ChBgoXkr.js → toggle-group-ZxRmfinR.js} +1 -1
- package/dist/public/assets/{tooltip-C-qXynAd.js → tooltip-BKaRnpkE.js} +1 -1
- package/dist/public/assets/trash-2-DHwjvW5E.js +1 -0
- package/dist/public/assets/treeView-SZITEDCU-CxW1Fi0N.js +1 -0
- package/dist/public/assets/treemap-W4RFUUIX-DSnxX8Tx.js +1 -0
- package/dist/public/assets/typing-burst-detector-OvRo-erH.js +6 -0
- package/dist/public/assets/{vennDiagram-DHZGUBPP-B5IEI223.js → vennDiagram-DHZGUBPP-CQdhzc6t.js} +1 -1
- package/dist/public/assets/wardley-RL74JXVD-9K1UST4U.js +1 -0
- package/dist/public/assets/{wardleyDiagram-NUSXRM2D-DmKxROfA.js → wardleyDiagram-NUSXRM2D-BqO3bSrz.js} +1 -1
- package/dist/public/assets/{xychartDiagram-5P7HB3ND-DfsFGMvs.js → xychartDiagram-5P7HB3ND-B096Qbw8.js} +1 -1
- package/dist/public/index.html +78 -71
- package/dist/{repair-launch-json-Bvn_t98K.mjs → repair-launch-json-B86-ywpD.mjs} +2 -2
- package/dist/{repair-mcp-configs-TvlevgIB.mjs → repair-mcp-configs-iqA205gC.mjs} +2 -2
- package/dist/repair-skills-B4QZF-d3.mjs +1 -0
- package/dist/{repair-skills-v6Mlols4.mjs → repair-skills-LHV8H9aK.mjs} +2 -2
- package/dist/server-lock-GuuouVft-BPXunOvH.mjs +1 -0
- package/dist/{server-lock-iLcBw_q0-D_cD26E0.mjs → server-lock-iLcBw_q0-pnLGEjec.mjs} +102 -102
- package/dist/{src-BDsw_Ypd.mjs → src-Btp9Walr.mjs} +2 -2
- package/dist/{start-6yv8Ce7C.mjs → start-B1i5Dpuw.mjs} +2 -2
- package/dist/start-CMMuPqVu.mjs +1 -0
- package/dist/{write-project-skill-Pt6mb0Oq.mjs → write-project-skill-DwKyM2bJ.mjs} +2 -2
- package/package.json +1 -1
- package/dist/constants-Z9iTGlVY.mjs +0 -2
- package/dist/init-79Qb-xiL.mjs +0 -1
- package/dist/loader-Hx3ppSIp.mjs +0 -1
- package/dist/preview-CmJ-n5_k.mjs +0 -1
- package/dist/public/assets/ActivityModeContent-FXULq3P6.js +0 -2
- package/dist/public/assets/DocumentContext-AziEfQFy.js +0 -36
- package/dist/public/assets/EnableSyncConfirmDialog-D8UuFHxQ.js +0 -1
- package/dist/public/assets/PropertyPanel-Cq1sqsH4.js +0 -2
- package/dist/public/assets/SourceEditor-DXcSGXCG.js +0 -2
- package/dist/public/assets/architecture-YZFGNWBL-D9UBIAHq.js +0 -1
- package/dist/public/assets/auth-state-cache-De8QvFee.js +0 -11
- package/dist/public/assets/channel-DytC2OSB.js +0 -1
- package/dist/public/assets/chunk-426QAEUC-CAVhttwb.js +0 -1
- package/dist/public/assets/chunk-55IACEB6-DuYRPofq.js +0 -1
- package/dist/public/assets/chunk-QZHKN3VN-DhXqi7R7.js +0 -1
- package/dist/public/assets/classDiagram-6PBFFD2Q-DYWeklG8.js +0 -1
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-CfLkcf5Y.js +0 -1
- package/dist/public/assets/clone-JWFgAdwR.js +0 -1
- package/dist/public/assets/config-provider-DY1ejnq-.js +0 -4
- package/dist/public/assets/dist-0Zj_lz7j.js +0 -11
- package/dist/public/assets/dist-C_vWk3jN.js +0 -1
- package/dist/public/assets/file-tree-adapter-BHXYt6U1.js +0 -1
- package/dist/public/assets/gitGraph-7Q5UKJZL-BbqhmoM-.js +0 -1
- package/dist/public/assets/index-CyKgBKog.js +0 -2003
- package/dist/public/assets/info-OMHHGYJF-DnibNYIM.js +0 -1
- package/dist/public/assets/isSymbol-XZKBrOoF.js +0 -1
- package/dist/public/assets/navigation-targets-fzjpgS0d.js +0 -1
- package/dist/public/assets/packet-4T2RLAQJ-CQ75ftcu.js +0 -1
- package/dist/public/assets/pie-ZZUOXDRM-DrLpeke2.js +0 -1
- package/dist/public/assets/prop-types-DVWxeasv.js +0 -1
- package/dist/public/assets/radar-PYXPWWZC-DsxR4TyY.js +0 -1
- package/dist/public/assets/skill-actions-CBRvSwTx.js +0 -1
- package/dist/public/assets/skill-scope-Bt2TwqtA.js +0 -1
- package/dist/public/assets/skills-api-c0dJMBt0.js +0 -1
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-DH8XnZl5.js +0 -1
- package/dist/public/assets/treeView-SZITEDCU-DcfbDroR.js +0 -1
- package/dist/public/assets/treemap-W4RFUUIX-C1lvB3Lz.js +0 -1
- package/dist/public/assets/typing-burst-detector-fx0Rb57X.js +0 -7
- package/dist/public/assets/wardley-RL74JXVD-CsvQ_3RJ.js +0 -1
- package/dist/repair-skills-Bv8iL5x_.mjs +0 -1
- package/dist/server-lock-GuuouVft-BFFcTQcA.mjs +0 -1
- package/dist/start-B5ydqSJZ.mjs +0 -1
- /package/dist/public/assets/{ActivityPanelDiffView-DKeRw1Cx.js → ActivityPanelDiffView-Oap1F4vk.js} +0 -0
- /package/dist/public/assets/{__vite-browser-external-BYnGn7dC.js → __vite-browser-external-CgB6cL13.js} +0 -0
- /package/dist/public/assets/{array-C2ARTgCj.js → array-DvTWoG0m.js} +0 -0
- /package/dist/public/assets/{arrow-up-right-DoN2FmSd.js → arrow-up-right-Crm0Btez.js} +0 -0
- /package/dist/public/assets/{check-Dqb-7gfx.js → check-DRRCCRSs.js} +0 -0
- /package/dist/public/assets/{chevron-down-D3nis7uo.js → chevron-down-BvNcCN1f.js} +0 -0
- /package/dist/public/assets/{chevron-left-C6Q_NKVx.js → chevron-left-BEP8MhU3.js} +0 -0
- /package/dist/public/assets/{chevron-right-BfmqRYl8.js → chevron-right-DSNnH-Vb.js} +0 -0
- /package/dist/public/assets/{clike-D1vNpgsL.js → clike-0lvcGvys.js} +0 -0
- /package/dist/public/assets/{colors-S-eYy0dP.js → colors-IR5jcHwc.js} +0 -0
- /package/dist/public/assets/{config-context-CVpOcWSZ.js → config-context-CzdMgLHH.js} +0 -0
- /package/dist/public/assets/{cursor-CGeB2PU5.js → cursor-e0zRswH3.js} +0 -0
- /package/dist/public/assets/{cytoscape.esm-C8VTsmgM.js → cytoscape.esm-CX-taWeI.js} +0 -0
- /package/dist/public/assets/{defaultLocale-Ddnx0blM.js → defaultLocale-gFRIUUHz.js} +0 -0
- /package/dist/public/assets/{desktop-bridge-types-BeY3wQCX.js → desktop-bridge-types-De2kjWgu.js} +0 -0
- /package/dist/public/assets/{diff-BeNfkPWe.js → diff-BYaxtv-Y.js} +0 -0
- /package/dist/public/assets/{dist-D9WIglau.js → dist-BA1b6hgf.js} +0 -0
- /package/dist/public/assets/{dist-DLLyJf3c.js → dist-BDlvQLfA.js} +0 -0
- /package/dist/public/assets/{dist-IEs1iCqd.js → dist-CHtJ0hxO.js} +0 -0
- /package/dist/public/assets/{dist-VYgKuZZh.js → dist-CTdX28hn.js} +0 -0
- /package/dist/public/assets/{dist-CbgmYSt6.js → dist-vTz-cLLB.js} +0 -0
- /package/dist/public/assets/{external-link-Do3_Yhal.js → external-link-27uXLNxg.js} +0 -0
- /package/dist/public/assets/{file-tree-rename-validation-BkATWpiZ.js → file-tree-rename-validation-DTVQL2Xb.js} +0 -0
- /package/dist/public/assets/{format-IdV1ZccK.js → format-1Qr8HOYT.js} +0 -0
- /package/dist/public/assets/{git-branch-DtntyZcb.js → git-branch-q0qWPEwd.js} +0 -0
- /package/dist/public/assets/{go-BPQOrv_-.js → go-s8LhlcQN.js} +0 -0
- /package/dist/public/assets/{info-B_9IOYHV.js → info-BlYnsVoP.js} +0 -0
- /package/dist/public/assets/{init-C1Y52B8f.js → init-BiVQaVme.js} +0 -0
- /package/dist/public/assets/{input-D0MSkqYi.js → input-s7JSCucz.js} +0 -0
- /package/dist/public/assets/{isObjectLike-B-XBvMIZ.js → isObjectLike-CplF2yFH.js} +0 -0
- /package/dist/public/assets/{loader-circle-CiIO3Fk-.js → loader-circle-B7Gv_Djz.js} +0 -0
- /package/dist/public/assets/{lua-De73j3Nj.js → lua-BJMsYVXC.js} +0 -0
- /package/dist/public/assets/{mcp-consent-store-hDvds8gj.js → mcp-consent-store-BIFsQSdo.js} +0 -0
- /package/dist/public/assets/{min-Du20ti5G.js → min-3e1jfujw.js} +0 -0
- /package/dist/public/assets/{miss-dialog-store-Ay7SdCdU.js → miss-dialog-store-PJQ_kr0I.js} +0 -0
- /package/dist/public/assets/{panzoom.es-BcYSRiVh.js → panzoom.es-KLVlk3tM.js} +0 -0
- /package/dist/public/assets/{path-DAmnUwYX.js → path-G868Kf9B.js} +0 -0
- /package/dist/public/assets/{pdf-PfDliStv.js → pdf-Cm0Z_df8.js} +0 -0
- /package/dist/public/assets/{pdf.worker-rrxcKZlR.js → pdf.worker-U3xqv7qk.js} +0 -0
- /package/dist/public/assets/{perl-_CDvIe1D.js → perl-DVyM2C9-.js} +0 -0
- /package/dist/public/assets/{properties-C7HiLOXK.js → properties-NhXpAKoe.js} +0 -0
- /package/dist/public/assets/{r-C7fediNL.js → r-D725PTfh.js} +0 -0
- /package/dist/public/assets/{refresh-cw-EVALIeLp.js → refresh-cw-CluaccKu.js} +0 -0
- /package/dist/public/assets/{rough.esm-CNnrul_b.js → rough.esm-DHcrZ6TO.js} +0 -0
- /package/dist/public/assets/{ruby-ScdRRFFa.js → ruby-D1PV8skF.js} +0 -0
- /package/dist/public/assets/{share-metadata-rows-Bd_ant37.js → share-metadata-rows-ZQ-JmihW.js} +0 -0
- /package/dist/public/assets/{shell-DhAwSAum.js → shell-BymBffsk.js} +0 -0
- /package/dist/public/assets/{sql-Cra_k0U6.js → sql-DSkPJi80.js} +0 -0
- /package/dist/public/assets/{src-cx4Sgc5-.js → src-BMeqqHjK.js} +0 -0
- /package/dist/public/assets/{startup-marks-DdMtjWR-.js → startup-marks-DWFDLvEG.js} +0 -0
- /package/dist/public/assets/{stex-AIAzjJoG.js → stex-Ds-MGVqb.js} +0 -0
- /package/dist/public/assets/{swift-DmZcjeK9.js → swift-DvFGtMVO.js} +0 -0
- /package/dist/public/assets/{textarea-9jwlIkqW.js → textarea-BV8h2udO.js} +0 -0
- /package/dist/public/assets/{toml-QZGHzT2O.js → toml-4Y1WOP_Q.js} +0 -0
- /package/dist/public/assets/{triangle-alert-r1Ou0VrE.js → triangle-alert-D4Umd2kR.js} +0 -0
package/dist/cli.mjs
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{s as e}from"./chunk-C94x7I9S.mjs";import{
|
|
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 Qn(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 $n(e,t){let n=new
|
|
2
|
+
import{s as e}from"./chunk-C94x7I9S.mjs";import{Bi as t,Ga as n,Go as r,Ko as i,Li as a,Mn as o,Oo as s,To as c,Wa as l,Za as u,_a as d,an as f,bo as p,c as m,co as h,fo as g,h as _,in as v,jo as y,mo as b,mt as x,n as S,po as C,si as w,ui as T,vo as ee,xo as E,yo as te}from"./server-lock-iLcBw_q0-pnLGEjec.mjs";import{i as ne}from"./git-handle-B4hCEi7c-CXOP12Ds.mjs";import{$ as re,An as ie,Ar as ae,D as oe,En as se,Ft as ce,Gn as le,Gt as ue,Hn as de,Kt as fe,L as pe,Mr as me,Nn as he,Nr as ge,O as _e,Rr as ve,Sa as ye,Tn as be,Wt as xe,Yn as Se,Yr as Ce,Zt as we,_ as Te,_a as Ee,_n as De,_t as Oe,aa as ke,at as Ae,b as je,ba as Me,bi as Ne,bt as Pe,c as Fe,cr as Ie,da as Le,en as Re,et as ze,fa as Be,gn as Ve,ha as He,hn as Ue,ii as D,jr as We,la as Ge,ln as Ke,lr as qe,ma as Je,ot as Ye,pa as Xe,pn as Ze,rt as Qe,si as $e,st as et,ti as tt,ua as nt,wa as rt,wt as it,x as at,xa as ot,ya as st}from"./dist-BvK2GLh6.mjs";import{t as ct}from"./yazl-DgCFuIuD.mjs";import{t as O}from"./esm-CsQUg9js.mjs";import{a as lt,n as ut,r as dt,t as ft}from"./gh-detect-RYp8nY6_.mjs";import{n as pt,r as mt,t as ht}from"./dist-bundle-D75dREX-.mjs";import{A as gt,B as _t,E as vt,F as yt,G as bt,H as xt,I as St,J as Ct,K as wt,N as Tt,P as Et,R as Dt,U as Ot,V as kt,W as At,Y as jt,h as Mt,j as Nt,q as Pt,z as Ft}from"./init-DUT3jX8X.mjs";import{a as It,b as Lt,c as Rt,g as zt,h as Bt,i as Vt,l as Ht,o as Ut,p as Wt,s as Gt,x as Kt}from"./src-Btp9Walr.mjs";import{n as qt,t as Jt}from"./constants-CSnkwjht.mjs";import{d as Yt,n as Xt,o as Zt,s as Qt,y as $t}from"./write-project-skill-DwKyM2bJ.mjs";import{t as en}from"./is-object-Cg453afR.mjs";import{n as tn,t as nn}from"./loader-uMT8FFdY.mjs";import{c as rn,i as k,n as A,o as j,r as M,s as N,t as P}from"./colors-8SzMRIVy.mjs";import{C as an,S as on,_ as sn,m as cn,w as ln,x as un}from"./start-B1i5Dpuw.mjs";import{n as dn}from"./repair-skills-LHV8H9aK.mjs";import{execFile as fn,execFileSync as pn,execSync as mn,spawn as hn,spawnSync as gn}from"node:child_process";import{basename as F,dirname as I,join as L,relative as _n,resolve as R,sep as vn}from"node:path";import yn from"node:process";import{fileURLToPath as bn}from"node:url";import{arch as xn,freemem as Sn,homedir as Cn,platform as wn,release as Tn,tmpdir as En,totalmem as Dn,type as On,uptime as kn}from"node:os";import{accessSync as An,closeSync as jn,constants as Mn,cpSync as Nn,createWriteStream as Pn,existsSync as z,lstatSync as Fn,mkdirSync as B,mkdtempSync as In,openSync as Ln,readFileSync as V,readdirSync as Rn,realpathSync as zn,rmSync as H,statSync as U,unlinkSync as Bn,writeFileSync as W}from"node:fs";import{createHash as Vn,randomUUID as Hn}from"node:crypto";import{rm as Un}from"node:fs/promises";import{setTimeout as Wn}from"node:timers/promises";import{promisify as Gn}from"node:util";import{createInterface as Kn}from"node:readline/promises";const qn={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 Jn;(function(e){})(Jn||={});function Yn(e){return y(h,e)}async function Xn(e,t,n,r){let i=Zn(await Qn(e)).host??``,a=e=>e.replace(/[\r\n]/g,``);if(!i)return r?.log?.warn({outcome:`no-host`,backend:n.backend},`[auth] git-credential get`),1;let o=process.env.OK_GH_TOKEN,s=process.env.OK_GH_TOKEN_HOST;if(o&&s===i)return r?.log?.debug({host:i,outcome:`gh-env-token`,backend:n.backend},`[auth] git-credential get`),t.write(`username=x-access-token\npassword=${a(o)}\n`),0;let c=await n.get(i),l=r?.getDiag?.(),u=c==null?l?.kind??`absent`:`found`;if(r?.log){let e={host:i,outcome:u,backend:n.backend,...l?.error?{keychainError:l.error}:{}};u===`found`?r.log.debug(e,`[auth] git-credential get`):r.log.warn(e,`[auth] git-credential get`)}return c==null?1:(t.write(`username=${a(c.login)}\npassword=${a(c.token)}\n`),0)}function Zn(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 Qn(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 $n(e,t){let n=new O(`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 n=t?.();try{let t,r=await e({onKeychainRead:e=>{t=e},onBackendSelected:e=>{e.backend===`file`&&e.reason&&n?.warn({backend:`file`,reason:e.reason},`[auth] token storage fallback`)}}),i=await Xn(process.stdin,process.stdout,r,{log:n,getDiag:()=>t});await se(n),process.exit(i)}catch(e){n?.error({error:e instanceof Error?e.message:String(e)},`[auth] git-credential get: unexpected error`),await se(n),process.exit(1)}}),n}function er(e){let t=e.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(t.baseUrl)?`https://github.com`:t.baseUrl.replace(`/api/v3`,``)}async function tr(e,t,n){let r={baseUrl:er(e),headers:{accept:`application/json`},...n},i=await e(t,r);if(`error`in i.data){let n=new pt(`${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 nr(e){let t=e.request||ht,n={client_id:e.clientId};return`scopes`in e&&Array.isArray(e.scopes)&&(n.scope=e.scopes.join(` `)),tr(t,`POST /login/device/code`,n)}async function rr(e){let t=await tr(e.request||ht,`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=ir(e,t.data.expires_in),n.refreshTokenExpiresAt=ir(e,t.data.refresh_token_expires_in)}delete n.scopes}return{...t,authentication:n}}function ir(e,t){return new Date(e+t*1e3).toISOString()}async function ar(e,t){let n=or(e,t.auth);if(n)return n;let{data:r}=await nr({clientType:e.clientType,clientId:e.clientId,request:t.request||e.request,scopes:t.auth.scopes||e.scopes});await e.onVerification(r);let i=await cr(t.request||e.request,e.clientId,e.clientType,r);return e.authentication=i,i}function or(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 sr(e){await new Promise(t=>setTimeout(t,e*1e3))}async function cr(e,t,n,r){try{let i={clientId:t,request:e,code:r.device_code},{authentication:a}=n===`oauth-app`?await rr({...i,clientType:`oauth-app`}):await rr({...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 sr(r.interval),cr(e,t,n,r);if(a===`slow_down`)return await sr(r.interval+7),cr(e,t,n,r);throw i}}async function lr(e,t){return ar(e,{auth:t})}async function ur(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 ar(e,{request:t,auth:{type:`oauth`}});return i.headers.authorization=`token ${a}`,t(i)}var dr=`0.0.0-development`;function fr(e){let t=e.request||ht.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${dr} ${mt()}`}}),{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(lr.bind(null,i),{hook:ur.bind(null,i)})}async function pr(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=fr({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-BnlRWriT.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??[]}}function mr(){return process.env.OPEN_KNOWLEDGE_GITHUB_CLIENT_ID??`Ov23liqlSd0V1MwR6rhI`}const hr=new Set([`gitlab.com`,`bitbucket.org`,`codeberg.org`,`gitea.com`,`sr.ht`,`sourcehut.org`]);function G(e){let t=e.toLowerCase().replace(/:\d+$/,``);hr.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 gr(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function _r(e,t,n=pr){let r=mr(),{host:i,json:a}=e;G(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?gr(!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?gr(!0,{type:`complete`,host:i,login:s}):process.stderr.write(`✓ Logged in as ${s} on ${i}\n`)}function vr(e){return new O(`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 _r(t,await e())})}const yr={style:{maskedText:`[input is masked]`}};var br=Ot((e,t)=>{let{validate:n=()=>!0}=e,r=Pt(yr,e.theme),[i,a]=Ct(`idle`),[o,s]=Ct(),[c,l]=Ct(``),u=wt({status:i,theme:r});bt(async(e,r)=>{if(i===`idle`)if(jt(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)}${At}`),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 xr(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)=>xr.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 Sr(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 Cr(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 wr=Function.bind,Tr=wr.bind(wr);function Er(e,t,n){let r=Tr(Cr,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]=Tr(Sr,null).apply(null,i)})}function Dr(){let e=Symbol(`Singular`),t={registry:{}},n=xr.bind(null,t,e);return Er(n,t,e),n}function Or(){let e={registry:{}},t=xr.bind(null,e);return Er(t,e),t}var kr={Singular:Dr,Collection:Or},Ar=`0.0.0-development`;function jr(e){return`Request failed due to following response errors:
|
|
4
4
|
`+e.errors.map(e=>` - ${e.message}`).join(`
|
|
5
|
-
`)}var Mr=class extends Error{constructor(e,t,n){super(jr(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},Nr=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],Pr=[`query`,`method`,`url`],Fr=/\/api\/v3\/?$/;function Ir(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(Pr.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)=>Nr.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Fr.test(a)&&(i.url=a.replace(Fr,`/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 Mr(i,t,e.data)}return e.data.data})}function Lr(e,t){let n=e.defaults(t);return Object.assign((e,t)=>Ir(n,e,t),{defaults:Lr.bind(null,n),endpoint:n.endpoint})}Lr(gt,{headers:{"user-agent":`octokit-graphql.js/${Ar} ${ht()}`},method:`POST`,url:`/graphql`});function Rr(e){return Lr(e,{method:`POST`,url:`/graphql`})}var zr=`(?:[a-zA-Z0-9_-]+)`,Br=`\\.`,Vr=RegExp(`^${zr}${Br}${zr}${Br}${zr}$`),Hr=Vr.test.bind(Vr);async function Ur(e){let t=Hr(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 Wr(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Gr(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Wr(e),t(i)}var Kr=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(Ur.bind(null,e),{hook:Gr.bind(null,e)})};const qr=`7.0.6`,Jr=()=>{},Yr=console.warn.bind(console),Xr=console.error.bind(console);function Zr(e={}){return typeof e.debug!=`function`&&(e.debug=Jr),typeof e.info!=`function`&&(e.info=Jr),typeof e.warn!=`function`&&(e.warn=Yr),typeof e.error!=`function`&&(e.error=Xr),e}const Qr=`octokit-core.js/${qr} ${ht()}`;var $r=class{static VERSION=qr;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 kr.Collection,n={baseUrl:gt.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} ${Qr}`:Qr,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=gt.defaults(n),this.graphql=Rr(this.request).defaults(n),this.log=Zr(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=Kr(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 ei(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})})}ei.VERSION=`6.0.0`;var ti=`0.0.0-development`;function ni(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 ri(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=ni(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 ii(e,t,n,r){return typeof n==`function`&&(r=n,n=void 0),ai(e,[],ri(e,t,n)[Symbol.asyncIterator](),r)}function ai(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:ai(e,t,n,r)})}Object.assign(ii,{iterator:ri});function oi(e){return{paginate:Object.assign(ii.bind(null,e),{iterator:ri.bind(null,e)})}}oi.VERSION=ti;const si=`17.0.0`;var ci={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 K=new Map;for(let[e,t]of Object.entries(ci))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);K.has(e)||K.set(e,new Map),K.get(e).set(n,{scope:e,methodName:n,endpointDefaults:c,decorations:a})}const li={has({scope:e},t){return K.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[...K.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=K.get(t).get(r);if(!i)return;let{endpointDefaults:a,decorations:o}=i;return o?n[r]=di(e,t,r,a,o):n[r]=e.request.defaults(a),n[r]}};function ui(e){let t={};for(let n of K.keys())t[n]=new Proxy({octokit:e,scope:n,cache:{}},li);return t}function di(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 fi(e){return{rest:ui(e)}}fi.VERSION=si;function pi(e){let t=ui(e);return{...t,rest:t}}pi.VERSION=si;const mi=$r.plugin(ei,pi,oi).defaults({userAgent:`octokit-rest.js/22.0.1`});async function hi(e,t,n){let{host:r,json:i}=e;G(r);let a=await(n??(()=>br({message:`Enter PAT:`})))();a||(process.stderr.write(`No token provided
|
|
5
|
+
`)}var Mr=class extends Error{constructor(e,t,n){super(jr(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},Nr=[`method`,`baseUrl`,`url`,`headers`,`request`,`query`,`mediaType`,`operationName`],Pr=[`query`,`method`,`url`],Fr=/\/api\/v3\/?$/;function Ir(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(Pr.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)=>Nr.includes(t)?(e[t]=r[t],e):(e.variables||={},e.variables[t]=r[t],e),{}),a=r.baseUrl||e.endpoint.DEFAULTS.baseUrl;return Fr.test(a)&&(i.url=a.replace(Fr,`/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 Mr(i,t,e.data)}return e.data.data})}function Lr(e,t){let n=e.defaults(t);return Object.assign((e,t)=>Ir(n,e,t),{defaults:Lr.bind(null,n),endpoint:n.endpoint})}Lr(ht,{headers:{"user-agent":`octokit-graphql.js/${Ar} ${mt()}`},method:`POST`,url:`/graphql`});function Rr(e){return Lr(e,{method:`POST`,url:`/graphql`})}var zr=`(?:[a-zA-Z0-9_-]+)`,Br=`\\.`,Vr=RegExp(`^${zr}${Br}${zr}${Br}${zr}$`),Hr=Vr.test.bind(Vr);async function Ur(e){let t=Hr(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 Wr(e){return e.split(/\./).length===3?`bearer ${e}`:`token ${e}`}async function Gr(e,t,n,r){let i=t.endpoint.merge(n,r);return i.headers.authorization=Wr(e),t(i)}var Kr=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(Ur.bind(null,e),{hook:Gr.bind(null,e)})};const qr=`7.0.6`,Jr=()=>{},Yr=console.warn.bind(console),Xr=console.error.bind(console);function Zr(e={}){return typeof e.debug!=`function`&&(e.debug=Jr),typeof e.info!=`function`&&(e.info=Jr),typeof e.warn!=`function`&&(e.warn=Yr),typeof e.error!=`function`&&(e.error=Xr),e}const Qr=`octokit-core.js/${qr} ${mt()}`;var $r=class{static VERSION=qr;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 kr.Collection,n={baseUrl:ht.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} ${Qr}`:Qr,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers[`time-zone`]=e.timeZone),this.request=ht.defaults(n),this.graphql=Rr(this.request).defaults(n),this.log=Zr(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=Kr(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 ei(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})})}ei.VERSION=`6.0.0`;var ti=`0.0.0-development`;function ni(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 ri(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=ni(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 ii(e,t,n,r){return typeof n==`function`&&(r=n,n=void 0),ai(e,[],ri(e,t,n)[Symbol.asyncIterator](),r)}function ai(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:ai(e,t,n,r)})}Object.assign(ii,{iterator:ri});function oi(e){return{paginate:Object.assign(ii.bind(null,e),{iterator:ri.bind(null,e)})}}oi.VERSION=ti;const si=`17.0.0`;var ci={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 K=new Map;for(let[e,t]of Object.entries(ci))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);K.has(e)||K.set(e,new Map),K.get(e).set(n,{scope:e,methodName:n,endpointDefaults:c,decorations:a})}const li={has({scope:e},t){return K.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[...K.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=K.get(t).get(r);if(!i)return;let{endpointDefaults:a,decorations:o}=i;return o?n[r]=di(e,t,r,a,o):n[r]=e.request.defaults(a),n[r]}};function ui(e){let t={};for(let n of K.keys())t[n]=new Proxy({octokit:e,scope:n,cache:{}},li);return t}function di(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 fi(e){return{rest:ui(e)}}fi.VERSION=si;function pi(e){let t=ui(e);return{...t,rest:t}}pi.VERSION=si;const mi=$r.plugin(ei,pi,oi).defaults({userAgent:`octokit-rest.js/22.0.1`});async function hi(e,t,n){let{host:r,json:i}=e;G(r);let a=await(n??(()=>br({message:`Enter PAT:`})))();a||(process.stderr.write(`No token provided
|
|
6
6
|
`),process.exit(1));let o=r===`github.com`?void 0:`https://${r}/api/v3`,s=new mi({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
|
|
7
|
-
`),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 gi(e){return new
|
|
7
|
+
`),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 gi(e){return new O(`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 hi(t,await e())})}async function _i(e,t,n=ft){let r=n(e);return r.available&&r.token?r.token:(await t.get(e))?.token??null}async function vi(e,t){let{host:n,json:r}=e;G(n);let i=await _i(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 mi({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 yi(e){return new O(`repos`).description(`List accessible repositories`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await vi(t,await e())})}async function bi(e){let{host:t}=e,{touched:n}=await ut(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
|
|
8
8
|
`),n.includes(`file`)&&process.stderr.write(` cleared from ~/.ok/auth.yml
|
|
9
|
-
`)}function xi(){return new
|
|
9
|
+
`)}function xi(){return new O(`signout`).description(`Remove stored credentials`).option(`--host <host>`,`GitHub hostname`,`github.com`).action(async e=>{await bi(e)})}async function Si(e,t,n=ft){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}}function Ci(e,t,n){return{type:`status`,host:e,backend:t,...n}}async function wi(e,t){let{host:n,json:r}=e;G(n);let i=t.backend,a=await Si(n,t);a.tier===`none`&&(r?process.stdout.write(`${JSON.stringify(Ci(n,i,{authenticated:!1}))}\n`):process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let o=n===`github.com`?void 0:`https://${n}/api/v3`,s=new mi({auth:a.token,...o?{baseUrl:o}:{}});try{let{data:e}=await s.users.getAuthenticated();r?process.stdout.write(`${JSON.stringify(Ci(n,i,{authenticated:!0,tier:a.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(Ci(n,i,{authenticated:!1,error:`token invalid`}))}\n`):process.stderr.write(`✗ Token invalid for ${n}\n`),process.exit(1)}}function Ti(e){return new O(`status`).description(`Show authentication status`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await wi(t,await e())})}function Ei(e){let t=new O(`auth`);t.description(`GitHub authentication management`);let n=e=>dt(void 0,e);return t.addCommand(vr(n)),t.addCommand(Ti(n)),t.addCommand(yi(n)),t.addCommand(xi()),t.addCommand(gi(n)),t.addCommand($n(n,e)),t}const Di=[{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]@`}],Oi=Di.map(e=>e.name);function ki(e){let t=new Set,n=0;return{redacted:e.split(`
|
|
10
10
|
`).map(e=>{let r=e;for(let{name:e,regex:i,replacement:a}of Di)i.lastIndex=0,i.test(r)&&(t.add(e),n++,i.lastIndex=0,r=r.replace(i,a));return r}).join(`
|
|
11
|
-
`),patterns:[...t],lineCount:n}}const Ai=L(Cn(),`.ok`,`logs`),ji=L(Cn(),`.ok`,`bug-reports`);function Mi(e){let t=L(e,`.ok`,`config.yml`);if(z(t))try{let e=V(t,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch{}return z(L(e,`.ok`))?Vn(`sha256`).update(R(e)).digest(`hex`).slice(0,12):null}function Ni(){let e={timestamp:new Date().toISOString(),platform:wn(),osType:On(),osRelease:Tn(),hostname:`[redacted]`,uptime:kn(),freeMem:Sn(),totalMem:Dn(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=
|
|
12
|
-
`);d.addBuffer(Buffer.from(h,`utf8`),`README.md`),d.end();let g=Pn(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&&wn()===`darwin`)try{
|
|
11
|
+
`),patterns:[...t],lineCount:n}}const Ai=L(Cn(),`.ok`,`logs`),ji=L(Cn(),`.ok`,`bug-reports`);function Mi(e){let t=L(e,`.ok`,`config.yml`);if(z(t))try{let e=V(t,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch{}return z(L(e,`.ok`))?Vn(`sha256`).update(R(e)).digest(`hex`).slice(0,12):null}function Ni(){let e={timestamp:new Date().toISOString(),platform:wn(),osType:On(),osRelease:Tn(),hostname:`[redacted]`,uptime:kn(),freeMem:Sn(),totalMem:Dn(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=mn(`sw_vers -productVersion 2>/dev/null`,{encoding:`utf8`}).trim()}catch{}try{let t=L(__dirname,`..`,`..`,`package.json`);z(t)&&(e.okVersion=JSON.parse(V(t,`utf8`)).version)}catch{}return e}function Pi(e){if(!z(Ai))return{files:[],dir:Ai};let t=Rn(Ai).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>L(Ai,e));if(e&&t.length>0){let n=t.filter(t=>{try{return V(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});n.length>0&&(t=n)}return{files:t,dir:Ai}}function Fi(e){let t=L(e,`.ok`,`local`);return z(t)?{files:[`server.lock`,`last-spawn-error.log`].map(e=>L(t,e)).filter(e=>z(e)),dir:t}:{files:[],dir:null}}function Ii(e){let t=L(e,`.ok`,`local`,`logs`);return z(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>L(t,e)).filter(e=>z(e)),dir:t}:{files:[],dir:null}}async function Li(t){let n=df();B(ji,{recursive:!0});let r=L(ji,`${new Date().toISOString().replace(/[:.]/g,`-`)}-bugreport.zip`);n?.info({projectSlug:t.projectSlug},`gathering diagnostic data`);let i=Ni(),{files:a}=Pi(t.projectSlug),{files:o}=Fi(t.cwd),{files:s}=Ii(t.cwd);n?.info({logFileCount:a.length,lockFileCount:o.length,localSinkFileCount:s.length},`files collected`);let c=[],l=[],{ZipFile:u}=await import(`./yazl-Clfc09F-.mjs`).then(t=>e(t.default,1)),d=new u;for(let e of a)try{let{redacted:t,patterns:n,lineCount:r}=ki(V(e,`utf8`)),i=`logs/${F(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}=ki(V(e,`utf8`)),i=`lockdir/${F(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}=ki(V(e,`utf8`)),i=`local-logs/${F(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: ${Oi.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(`
|
|
12
|
+
`);d.addBuffer(Buffer.from(h,`utf8`),`README.md`),d.end();let g=Pn(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&&wn()===`darwin`)try{hn(`/usr/bin/open`,[`-R`,r],{detached:!0,stdio:`ignore`}).unref()}catch{}return r}function Ri(){return new O(`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=Mi(t);try{await Li({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 zi(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 Bi(e){let t=e.inspect??(t=>Kt(e.lockDir,t)),n=e.unlink??(e=>Bn(e)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=zi(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 Vi(e){return new O(`clean`).description(`Prune stale / corrupt open-knowledge lock files (never touches live locks)`).action(()=>{e(),Bi({lockDir:D(process.cwd())}).failed.length>0&&(process.exitCode=1)})}async function Hi(e,t,n={},r=ft){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 Ui(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 Wi=[[`count`,0,10],[`compress`,10,20],[`receiv`,20,60],[`resolv`,60,100]];function Gi(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 Wi)if(n.includes(e))return{stage:t[1],pct:Math.round(i+r/100*(a-i))};return null}function q(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}function Ki(e=process.env){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t.GIT_TERMINAL_PROMPT=`0`,t.LANG=`C`,t.LC_ALL=`C`,t}function qi(e){return typeof e!=`string`||e.length===0?[`--progress`]:[`--progress`,`-b`,e]}const Ji=a;async function Yi(e){try{return await e.clone(qi(e.branch)),{fellBack:!1}}catch(t){if(e.branch!==null&&Ji(t))return e.onFallback(e.branch),await e.clone(qi(null)),{fellBack:!0};throw t}}function Xi(e,t){return{baseDir:e,config:t,unsafe:{allowUnsafeCredentialHelper:!0,allowUnsafePager:!0,allowUnsafeSshCommand:!0,allowUnsafeAskPass:!0}}}function Zi(e,t,n){return e===`https`&&t===`github.com`&&n}function Qi(e,t){let n=`${t.owner}/${t.name}`;return e===n||e===`${n}.git`?`https://${t.hostname}/${n}`:e}async function $i(e,t,n,r=process.cwd()){let i=Lt(e);if(!i)throw Error(`Invalid git URL: ${e}`);let a=Qi(e,i),o=t.dir?R(r,t.dir):R(r,i.name);if(z(o)&&Rn(o).length>0)throw Error(`Target directory is not empty: ${o}`);Pe();let s=lt(),c=i.protocol===`https`&&i.hostname===`github.com`?await Ui(i.owner,i.name):!1,l=Zi(i.protocol,i.hostname,c)?{tier:`none`,credentialArgs:[]}:await Hi(i.hostname,s,{}),u=Ki(),d=ne(Xi(r,l.credentialArgs.length>=2?[l.credentialArgs[1]]:[])).env(u),f=-1;d.outputHandler((e,n,r)=>{r.on(`data`,e=>{let n=e.toString(`utf-8`);for(let e of n.split(`
|
|
13
13
|
`)){let n=Gi(e);n&&n.pct!==f&&(f=n.pct,q(t.json,{type:`progress`,pct:n.pct,stage:n.stage}),t.json||process.stderr.write(`\r Cloning ${n.pct}%`))}})}),await Yi({branch:typeof t.branch==`string`&&t.branch.length>0?t.branch:null,clone:e=>d.clone(a,o,e),onFallback:e=>{q(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(`
|
|
14
|
-
`);try{let{runInit:e}=await import(`./init-
|
|
15
|
-
`)}if(
|
|
16
|
-
`)}function aa(e){let t=e.error instanceof Error?e.error.message:String(e.error);if(e.json){e.emit({type:`error`,message:t});return}let n=ia({error:e.error,url:e.url,branch:e.branch,principal:e.principal});e.printStderr(`${n??`✗ ${t}`}\n`)}async function oa(e,t){let n=(await e.get(t))?.login;return n&&n!==`unknown`?n:null}async function sa(e){let t=
|
|
17
|
-
`)}function ba(e){let t=e.skillVersion??`unknown`,n=e.recordedAt??`unknown`;return[
|
|
18
|
-
`)}function xa(e){let t=e.skillVersion?` • Skill v${e.skillVersion}`:``;return[
|
|
19
|
-
`)}function Sa(e){return`${
|
|
20
|
-
`)}function Ga(e){let t=e.removed.length,n=e.failed.length,r=e.results.filter(e=>e.status===`not-present`).length,i=e.results.filter(e=>e.status===`skipped`),a=[];a.push(n>0?
|
|
21
|
-
`)}function Ka(e){return{scope:e.scope,mode:`dry-run`,planned:e.ops.map(e=>({kind:e.kind,label:e.label}))}}function qa(e,t){return{scope:e,mode:`applied`,removed:t.removed.map(e=>({kind:e.op.kind,label:e.op.label})),skipped:t.results.filter(e=>e.status===`skipped`).map(e=>({kind:e.op.kind,label:e.op.label,detail:e.detail})),failed:t.failed.map(e=>({kind:e.op.kind,label:e.op.label,detail:e.detail}))}}async function Ja(e={}){let t=R(e.cwd??process.cwd()),n=e.home??Cn();if(!z(L(t,`.ok`)))return{status:`no-op`,message:
|
|
14
|
+
`);try{let{runInit:e}=await import(`./init-Bv8YRF0a.mjs`),n=await e({cwd:o,mcp:!1});if(n.contentUpdated.length>0){let e=`auto-init: updated ${n.contentUpdated.join(`, `)}`;t.json?q(!0,{type:`warning`,message:e}):process.stderr.write(` ${e}\n`)}}catch(e){let n=e instanceof Error?e.message:String(e);t.json?q(!0,{type:`warning`,message:`auto-init: ${n}`}):process.stderr.write(` auto-init: ${n}\n`)}try{ea(o)}catch(e){let n=e instanceof Error?e.message:String(e);t.json?q(!0,{type:`warning`,message:`git-exclude: ${n}`}):process.stderr.write(` git-exclude: ${n}\n`)}return o}function ea(e){let t=St(e,[`.ok/`]);return t.kind===`no-exclude`?`no-exclude`:t.kind===`refused-tracked`?`already-present`:t.appended.length>0?`appended`:`already-present`}const ta=/^[A-Za-z0-9._/:@-]+$/;function na(e){return ta.test(e)?e:d(e)}function ra(e,t){let n=typeof t==`string`&&t.length>0?` -b ${na(t)}`:``;return`ok clone ${na(e)}${n}`}function ia(e){let n=w(e.error);if(n.kind!==`auth`)return null;if(t(n)){let t=ra(e.url,e.branch);return[`✗ Couldn't clone ${e.url} — authentication is required.`,``,` To fix:`,` 1. Run: ok auth login`,` 2. Then re-run: ${t}`].join(`
|
|
15
|
+
`)}if(n.subclass===`403`){let t=typeof e.principal==`string`&&e.principal.length>0?` (signed in as @${e.principal} — may lack access)`:``;return`✗ Access denied when cloning ${e.url}${t}. Check that your account has access to the repository.`}return n.subclass===`ssh-auth`?`✗ Couldn't clone ${e.url} over SSH — authentication failed. Check that your SSH key is added to your GitHub account and the host key is trusted, or clone the HTTPS URL instead.`:["✗ Your GitHub token is missing required OAuth scopes — likely the `repo` scope.",``,` To fix:`," 1. Create a token with `repo` scope at https://github.com/settings/tokens",` 2. Run: ok auth pat`,` 3. Then re-run: ${ra(e.url,e.branch)}`].join(`
|
|
16
|
+
`)}function aa(e){let t=e.error instanceof Error?e.error.message:String(e.error);if(e.json){e.emit({type:`error`,message:t});return}let n=ia({error:e.error,url:e.url,branch:e.branch,principal:e.principal});e.printStderr(`${n??`✗ ${t}`}\n`)}async function oa(e,t){let n=(await e.get(t))?.login;return n&&n!==`unknown`?n:null}async function sa(e){let t=w(e.error),n=null;if(!e.json&&t.kind===`auth`&&t.subclass===`403`){let t=Lt(e.url);t&&(n=await(e.resolvePrincipal??(e=>oa(lt(),e)))(t.hostname))}aa({error:e.error,url:e.url,branch:e.branch,json:e.json,principal:n,emit:e.emit,printStderr:e.printStderr})}function ca(e){return new O(`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 $i(t,{json:r.json,dir:n,branch:r.branch??null},i);if(r.json)q(!0,{type:`complete`,dir:a});else{process.stderr.write(`✓ Cloned to ${a}\n`),process.chdir(a);let{startCommand:t}=await import(`./start-CMMuPqVu.mjs`);await t(e).parseAsync([],{from:`user`})}}catch(e){if(e instanceof oe||e instanceof _e){r.json?q(!0,{type:`error`,message:e.message}):process.stderr.write(`${e.message}\n`),process.exitCode=78;return}await sa({error:e,url:t,branch:r.branch??null,json:r.json,emit:e=>q(!0,e),printStderr:e=>process.stderr.write(e)}),process.exitCode=1}})}var la=i();const ua=[[`sync`],[`persistence`,`debounceMs`],[`persistence`,`maxDebounceMs`],[`server`,`port`],...n.map(e=>e.path)];function da(e={}){let t=e.log??(e=>console.error(e)),n=e.error??(e=>console.error(e)),r=e.loadConfigFn??tn;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 fa(e){let t=(0,la.parseDocument)(V(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 ua)t.hasIn(e)&&n.push(e.join(`.`));return n}function pa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ma(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=pa(i)?i:{};e[r]=a,e=a}e[n[n.length-1]]=null}return t}async function ha(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??st,s=[];(r===`project`||r===`both`)&&s.push({scope:`project`,absPath:Ee(`project`,a,e.homedirOverride)}),(r===`user`||r===`both`)&&s.push({scope:`user`,absPath:Ee(`user`,a,e.homedirOverride)});let c=[],l=!0;for(let{scope:t,absPath:n}of s){if(!z(n)){c.push({path:n,scope:t,found:[],removed:[]});continue}let r;try{r=fa(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:ma(ua.filter(e=>r.includes(e.join(`.`)))),homedirOverride:e.homedirOverride});if(!s.ok){c.push({path:n,scope:t,found:r,removed:[],error:u(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 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:l}}function ga(){let e=new O(`config`).description(`Inspect and maintain OpenKnowledge configuration files`);return e.command(`validate`).description(`Validate the merged config (defaults → user → project)`).action(()=>{da({}).ok||(process.exitCode=1)}),e.command(`migrate`).description(`Remove deprecated config fields from config.yml idempotently (every removed key in the registry — content.*, folders, appearance.editorModeDefault, server.host, etc. — plus the silently-dropped sync.*, persistence.*, server.port)`).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 ha({scope:t,dryRun:e.dryRun})).ok||(process.exitCode=1)}),e}const _a=[` 1. ${P(`Customize`)} (sidebar) → ${P(`Skills`)}`,` 2. Click the ${P(`+`)} button`,` 3. Click ${P(`Create skill`)}`,` 4. Click ${P(`Upload skill`)}`,` 5. Pick ${P(`openknowledge.skill`)} from Downloads`],va=k(` Open the Claude Desktop App, then: ${P(`Customize → Skills → + → Create skill → Upload skill`)} → pick the file.`);function ya(e){let t=[j(`Built ${e.outputPath}`),A(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…`)];return e.handoffError&&t.push(N(` Handoff failed: ${e.handoffError.message}`)),t.push(va),t.join(`
|
|
17
|
+
`)}function ba(e){let t=e.skillVersion??`unknown`,n=e.recordedAt??`unknown`;return[k(`OpenKnowledge skill ${P(`v${t}`)} already delivered to Claude Desktop.`),A(` Recorded at ${n} in ~/.ok/skill-state.yml`),A(` Use ${P(`--force`)} to rebuild and re-open the install dialog.`)].join(`
|
|
18
|
+
`)}function xa(e){let t=e.skillVersion?` • Skill v${e.skillVersion}`:``;return[j(`Built ${e.outputPath}`),A(` ${e.size} bytes • sha256 ${e.sha256?.slice(0,12)}…${t}`),k(` Claude Desktop App opened. Now upload the file manually:`),..._a,A(` If Claude Desktop didn't open, open it and start at step 1. The file is at ${e.outputPath}`)].join(`
|
|
19
|
+
`)}function Sa(e){return`${M(`Error:`)} ${e.buildError??`unknown build failure`}`}async function Ca(e={}){let t=await it(e);return t.status===`failed`?{...t,message:Sa(t),exitCode:1}:t.status===`skip-current`?{...t,message:ba(t),exitCode:0}:t.status===`installed`?{...t,message:xa(t),exitCode:0}:{...t,message:ya(t),exitCode:0}}function wa(){return new O(`cowork`).description("Build openknowledge.skill and open the Claude Desktop App so you can upload it for Claude Chat & Cowork. (Advanced/rarely needed — `ok init` already wires Claude.)").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 Ca({out:e.out,noOpen:!e.open,force:e.force??!1});process.stdout.write(`${t.message}\n`),t.exitCode!==0&&process.exit(t.exitCode)})}async function Ta(e,t){let n=Kn({input:t??process.stdin,output:process.stderr});try{let t=(await n.question(e)).trim().toLowerCase();return t===`y`||t===`yes`}finally{n.close()}}function Ea(e={}){let t=e.productName??`OpenKnowledge`;return L($t(e),t)}function Da(e){if(typeof e!=`object`||!e)return null;let t=e.recentProjects;if(!Array.isArray(t))return null;let n=[];for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;typeof t.path==`string`&&typeof t.name==`string`&&n.push({path:t.path,name:t.name})}return n}function Oa(e){let t=L(e,`state.json`);if(!z(t))return[];let n;try{n=JSON.parse(V(t,`utf-8`))}catch{return[]}return Da(n)??[]}function ka(e){let t=L(e,`state.json`);if(!z(t))return!1;try{return Da(JSON.parse(V(t,`utf-8`)))!==null}catch{return!1}}const Aa={allowTrailingComma:!0,disallowComments:!1};function ja(e,t){return e.error===1&&e.offset===0&&t.charCodeAt(0)===65279}function Ma(e){let t=L(e,`.claude`,`launch.json`);if(!z(t))return{kind:`not-present`};let n;try{n=V(t,`utf-8`)}catch{return{kind:`declined`}}let r=[],i=yt(n,r,Aa)??void 0;if(r.some(e=>!ja(e,n))||!i||i.type!==`object`)return{kind:`declined`};let a=Et(i).configurations;if(!Array.isArray(a))return{kind:`not-present`};let o=a.findIndex(e=>en(e)&&e.name===`open-knowledge-ui`);if(o===-1)return{kind:`not-present`};if(a.length===1)return H(t,{force:!0}),{kind:`removed-file`};let{text:s,changed:c}=Tt(n,[`configurations`,o]);return c?(He(t,s,{mode:Nt(t)}),{kind:`removed`}):{kind:`not-present`}}function J(e,t){return e===t?`~`:e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Na(e){return vn===`/`?e:e.split(vn).join(`/`)}function Pa(e,t,n=`This project`){let r=[];r.push({kind:`stop-server`,group:n,label:`Stop the project server (if running)`,lockDir:D(e)});let i=new Set;for(let a of Qt){let o=Yt[a];if(!o.projectConfigPath)continue;let s=o.projectConfigPath(e);i.add(Na(_n(e,s))),r.push({kind:`mcp-entry`,group:n,label:`Remove OK's MCP entry from ${o.label} (${Na(_n(e,s))})`,editorId:a,scope:`project`,cwd:e,home:t,configPath:s})}r.push({kind:`launch-entry`,group:n,label:`Remove OK's entry from .claude/launch.json`,projectRoot:e}),r.push({kind:`git-exclude`,group:n,label:`Remove OK paths from .git/info/exclude`,projectRoot:e});for(let t of Ft(e)){let a=t.replace(/\/$/,``);i.has(a)||a!==`.claude/launch.json`&&r.push({kind:`remove-path`,group:n,label:`Remove ${t}`,path:L(e,a),containWithin:e})}try{r.push({kind:`remove-path`,group:n,label:`Remove the OK shadow repo (.git/ok/)`,path:rt(e)})}catch{}return r}function Fa(e,t){return{scope:`deinit`,ops:Pa(e,t)}}function Ia(e){let{home:t,platform:n,host:r,lockDirs:i,marker:a,recentDeinitProjectRoots:o,purgeContent:s}=e,c=[];for(let e of i)c.push({kind:`stop-server`,group:`Running servers`,label:`Stop server at ${J(L(e,`..`,`..`),t)}`,lockDir:e});c.push({kind:`keychain-token`,group:`Credentials`,label:`Remove the GitHub credential (${r}) from the OS keychain + auth.yml`,host:r}),c.push({kind:`embeddings-key`,group:`Credentials`,label:`Remove the embeddings API key (secrets.yml)`}),c.push(...Ra(a,t));for(let e of Qt){let n=Yt[e],r;try{r=n.configPath(``,t)}catch{continue}c.push({kind:`mcp-entry`,group:`Editor MCP configs`,label:`Remove OK's MCP entry from ${n.label} (${J(r,t)})`,editorId:e,scope:`user`,cwd:t,home:t,configPath:r})}for(let e of Zt(t))c.push({kind:`remove-path`,group:`Skill bundles`,label:`Remove ${J(e.path,t)}`,path:e.path});c.push(...za(t,n,e.env));for(let e of o)c.push(...Pa(e,t,`Project: ${F(e)}`));return c.push({kind:`remove-path`,group:`Global directory`,label:s?`Remove ~/.ok (including user-authored skills)`:`Remove ~/.ok (keeping ~/.ok/skills)`,path:L(t,`.ok`),preserve:s?void 0:[`skills`]}),{scope:`uninstall`,ops:c}}function La(e){return[L(e,`.zshrc`),L(e,`.bash_profile`),L(e,`.config`,`fish`,`conf.d`,`open-knowledge.fish`)]}function Ra(e,t){let n=[],r=new Set([...La(t),...e?.rcFiles??[]]);for(let e of r)z(e)&&n.push({kind:`shell-block`,group:`Shell PATH`,label:`Strip the OK block from ${J(e,t)}`,rcFile:e});for(let r of e?.extraSymlinks??[])n.push({kind:`extra-symlink`,group:`Shell PATH`,label:`Remove the ok symlink at ${J(r.path,t)}`,path:r.path,target:r.target});return n}function za(e,t,n){if(t!==`darwin`)return[];let r={home:e,platformName:t,env:n},i=Ea(r),a=Ea({...r,productName:`Open Knowledge`}),o=L(e,`Library`,`Caches`,`OpenKnowledge-updater`);return[{kind:`remove-path`,group:`Application data`,label:`Remove ${J(i,e)}`,path:i},{kind:`remove-path`,group:`Application data`,label:`Remove ${J(a,e)} (only if it is OpenKnowledge's)`,path:a,requireOurState:!0},{kind:`remove-path`,group:`Application data`,label:`Remove ${J(o,e)}`,path:o}]}async function Ba(e,t={}){let n=t.clearToken??ut,r=t.clearEmbeddingsKey??ce,i=t.stopServer??(e=>{let t=Vt({lockDir:e,log:()=>{},error:()=>{}});return{stopped:t.stopped.length,failed:t.failed.map(e=>({pid:e.target.pid,error:e.error}))}}),a=[];for(let t of e.ops)try{a.push(await Va(t,{clearToken:n,clearEmbeddingsKey:r,stopServer:i}))}catch(e){a.push({op:t,status:`failed`,detail:e instanceof Error?e.message:String(e)})}return{results:a,removed:a.filter(e=>e.status===`removed`),failed:a.filter(e=>e.status===`failed`)}}async function Va(e,t){switch(e.kind){case`stop-server`:{let{stopped:n,failed:r}=t.stopServer(e.lockDir);return r.length>0?{op:e,status:`failed`,detail:`could not stop the server (${r.map(e=>`pid ${e.pid}: ${e.error}`).join(`; `)}); a process may still be using files that were removed`}:{op:e,status:n>0?`removed`:`not-present`}}case`keychain-token`:{let{touched:n,keychainError:r}=await t.clearToken(e.host);return r?{op:e,status:`failed`,detail:`keychain unreachable (${r}); remove manually: Keychain Access → service "open-knowledge"`}:{op:e,status:n.length>0?`removed`:`not-present`}}case`embeddings-key`:{let{touched:n}=await t.clearEmbeddingsKey();return{op:e,status:n.length>0?`removed`:`not-present`}}case`shell-block`:{if(!z(e.rcFile))return{op:e,status:`not-present`};let{text:t,changed:n,emptyAfter:r}=zt(V(e.rcFile,`utf-8`));return n?r?(H(e.rcFile,{force:!0}),{op:e,status:`removed`,detail:`file removed (was OK-owned)`}):(He(e.rcFile,t,{mode:Nt(e.rcFile)}),{op:e,status:`removed`}):{op:e,status:`not-present`}}case`extra-symlink`:return Wt(e.path,e.target)?(Bn(e.path),{op:e,status:`removed`}):{op:e,status:`not-present`};case`mcp-entry`:{let t=Ht(Yt[e.editorId],e.cwd,e.home,e.configPath);switch(t.kind){case`removed`:return{op:e,status:`removed`};case`not-present`:return{op:e,status:`not-present`};case`left-foreign`:return{op:e,status:`skipped`,detail:`left a non-OK server in place`};case`declined`:return{op:e,status:`skipped`,detail:`declined (${t.reason})`};default:throw Error(`unhandled mcp-remove outcome: ${t.kind}`)}}case`launch-entry`:{let t=Ma(e.projectRoot);switch(t.kind){case`removed`:case`removed-file`:return{op:e,status:`removed`};case`not-present`:return{op:e,status:`not-present`};case`declined`:return{op:e,status:`skipped`,detail:`declined (unparseable)`};default:throw Error(`unhandled launch-remove outcome: ${t.kind}`)}}case`git-exclude`:{if(Dt(e.projectRoot).length===0)return{op:e,status:`not-present`};let t=xt(e.projectRoot,Ft(e.projectRoot));return t.kind===`no-exclude`?t.reason===`inaccessible`?{op:e,status:`failed`,detail:`could not write .git/info/exclude (inaccessible)`}:{op:e,status:`not-present`,detail:t.reason}:{op:e,status:t.removed.length>0?`removed`:`not-present`}}case`remove-path`:return Ha(e)}}function Ha(e){if(e.requireOurState&&!ka(e.path))return{op:e,status:`skipped`,detail:`not verified as OpenKnowledge — left untouched`};e.containWithin&&Xt(e.path,e.containWithin);let t;try{t=Fn(e.path)}catch(e){if(e.code!==`ENOENT`)throw e}if(!t)return{op:e,status:`not-present`};if(t.isSymbolicLink())return Bn(e.path),{op:e,status:`removed`};if(e.preserve&&e.preserve.length>0){let t=new Set(e.preserve),n=!1;for(let r of Rn(e.path))t.has(r)||(H(L(e.path,r),{recursive:!0,force:!0}),n=!0);return{op:e,status:n?`removed`:`not-present`}}return H(e.path,{recursive:!0,force:!0}),{op:e,status:`removed`}}function Ua(e){let t=new Map;for(let n of e){let e=t.get(n.group)??[];e.push(n),t.set(n.group,e)}return t}function Wa(e){if(e.ops.length===0)return A(`Nothing to remove.`);let t=[];for(let[n,r]of Ua(e.ops)){t.length>0&&t.push(``),t.push(P(`${n}:`));for(let e of r)t.push(` ${N(`-`)} ${e.label}`)}return t.join(`
|
|
20
|
+
`)}function Ga(e){let t=e.removed.length,n=e.failed.length,r=e.results.filter(e=>e.status===`not-present`).length,i=e.results.filter(e=>e.status===`skipped`),a=[];a.push(n>0?N(`Removed ${t} item${t===1?``:`s`}, ${n} could not be removed.`):j(`✓ Removed ${t} item${t===1?``:`s`}.`)),r>0&&a.push(A(` ${r} already absent.`));for(let e of i)a.push(` ${N(`·`)} Left in place: ${e.op.label}${e.detail?` — ${A(e.detail)}`:``}`);if(n>0){a.push(``),a.push(M(`Could not remove:`));for(let t of e.failed)a.push(` ${M(`✗`)} ${t.op.label}${t.detail?` — ${t.detail}`:``}`)}return a.join(`
|
|
21
|
+
`)}function Ka(e){return{scope:e.scope,mode:`dry-run`,planned:e.ops.map(e=>({kind:e.kind,label:e.label}))}}function qa(e,t){return{scope:e,mode:`applied`,removed:t.removed.map(e=>({kind:e.op.kind,label:e.op.label})),skipped:t.results.filter(e=>e.status===`skipped`).map(e=>({kind:e.op.kind,label:e.op.label,detail:e.detail})),failed:t.failed.map(e=>({kind:e.op.kind,label:e.op.label,detail:e.detail}))}}async function Ja(e={}){let t=R(e.cwd??process.cwd()),n=e.home??Cn();if(!z(L(t,`.ok`)))return{status:`no-op`,message:A(`No OpenKnowledge project found at ${t}. Nothing to remove.`),exitCode:0};let r=Fa(t,n);if(e.dryRun)return{status:`dry-run`,message:e.json?JSON.stringify(Ka(r),null,2):`${P(`Would remove (dry-run — no changes made):`)}\n\n${Wa(r)}`,exitCode:0};if(e.json&&!e.yes)return{status:`failed`,message:`${M(`Error:`)} --json requires --yes (or --dry-run) so there is no interactive prompt.`,exitCode:1};if(!e.yes&&(process.stderr.write(`${P(`Remove OpenKnowledge from ${t}:`)}\n\n${Wa(r)}\n\n`),!await Ta(`${P(`Remove these?`)} ${A(`[y/N] `)}`,e.confirmStream)))return{status:`cancelled`,message:A(`Cancelled.`),exitCode:0};let i=await Ba(r,e.runRemovalDeps);return{status:i.failed.length>0?`failed`:`done`,message:e.json?JSON.stringify(qa(`deinit`,i),null,2):Ga(i),exitCode:i.failed.length>0?1:0}}function Ya(){return new O(`deinit`).description("Remove OpenKnowledge from this project (its .ok/, editor MCP entries, git-exclude lines, shadow repo) while leaving your markdown content untouched. Re-run `ok start` to re-scaffold.").argument(`[path]`,`Project directory (defaults to the current project)`).option(`-y, --yes`,`Skip the confirmation prompt`).option(`--dry-run`,`Print the removal plan and exit without changing anything`).option(`--json`,`Emit a machine-readable plan/outcome (requires --yes or --dry-run)`).action(async(e,t)=>{let n=await Ja({cwd:e??process.cwd(),yes:t.yes,dryRun:t.dryRun,json:t.json});process.stdout.write(`${n.message}\n`),n.exitCode!==0&&(process.exitCode=n.exitCode)})}var Xa=e(ct(),1),Y=e(rn(),1);const Za=new Set([`doc.name`]);function Qa(e){return`doc:${Vn(`blake2b512`,{outputLength:32}).update(e).digest(`hex`).slice(0,8)}`}function $a(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 eo(e,t){let n=t.originalToHashed.get(e);if(n!==void 0)return n;let r=Qa(e);return t.originalToHashed.set(e,r),$a(t,e,r),r}function to(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function no(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ro(e,t){if(typeof e==`string`)return to(e,t.contentDir);if(Array.isArray(e))return e.map(e=>ro(e,t));if(!no(e))return e;let n=typeof e.key==`string`&&Za.has(e.key)&&no(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`&&no(a)){let e=eo(n,t);r[i]={...a,stringValue:e}}else Za.has(i)&&typeof a==`string`?r[i]=eo(a,t):r[i]=ro(a,t);return r}function io(e,t){if(t.originalToHashed.size===0)return e;let n=Array.from(t.originalToHashed.entries()).sort(([e],[t])=>t.length-e.length),r=e;for(let[e,t]of n)e.length!==0&&r.includes(e)&&(r=r.split(e).join(t));return r}function ao(e,t){let n=V(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
|
|
22
22
|
`),i=n.split(`
|
|
23
23
|
`),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=ro(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}W(e,r?`${a.join(`
|
|
24
24
|
`)}\n`:a.join(`
|
|
25
25
|
`))}function oo(e,t){let n=V(e,`utf-8`);if(n.trim().length!==0)try{let r=ro(JSON.parse(n),t),i=n.endsWith(`
|
|
26
26
|
`)?`
|
|
27
|
-
`:``;W(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=io(to(n,t.contentDir),t);r!==n&&W(e,r)}}function so(e,t){let n=V(e,`utf-8`),r=to(n,t.contentDir);r!==n&&W(e,r)}function co(e){try{return Rn(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>L(e,t.name))}catch{return[]}}const lo=new Set([`agent-presence.json`,`runtime.json`]);function uo(e){let t={contentDir:e.contentDir,docNameMap:{},originalToHashed:new Map,docNameCollisions:{}};for(let n of[`telemetry`,`logs`,`process`])for(let r of co(L(e.stagingDir,n)))r.endsWith(`.jsonl`)?ao(r,t):r.endsWith(`.json`)?oo(r,t):so(r,t);for(let n of co(L(e.stagingDir,`state`))){let e=F(n);lo.has(e)?oo(n,t):so(n,t)}return{docNameMap:t.docNameMap,docNameCollisions:t.docNameCollisions}}const fo=[`.ok`,`local`,`telemetry`],po=[`.ok`,`local`,`logs`],mo=`spans-current.jsonl`,ho=`spans-prev.jsonl`,go=`server-current.jsonl`,_o=`server-prev.jsonl`;function vo(e){return L(e,...fo,mo)}function yo(e){return L(e,...fo,ho)}function bo(e){return L(e,...po,go)}function xo(e){return L(e,...po,_o)}async function So(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 Co(e){let t=L(e,`.git`,`ok`);if(!z(t))return null;let n=gn(`git`,[`-C`,t,`log`,`--oneline`,`-50`],{encoding:`utf-8`,timeout:2e3});return n.error||n.status!==0?null:n.stdout??``}function wo(){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 To(){return{nodeVersion:process.version,platform:wn(),arch:xn()}}function Eo(){return process.env.OTEL_SDK_DISABLED===`false`}function Do(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oo(e){if(!z(e))return{};let t;try{t=(0,la.parse)(V(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(!Do(t))return{};let n=t.telemetry;if(!Do(n))return{};let r=n.localSink;return Do(r)?r:{}}function ko(e){return typeof e==`boolean`?e:void 0}function Ao(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function jo(e){if(Do(e))return Ao(e.maxBytes)}function Mo(e){let t=Oo(
|
|
28
|
-
`:`not-running (${h})\n`;if(W(L(d,`state`,`server-status.txt`),x),e.processDir&&z(e.processDir)){let t=L(d,`process`);B(t,{recursive:!0}),Nn(e.processDir,t,{recursive:!0})}let S=null;e.redact===!0&&(S=uo({stagingDir:d,contentDir:t}));let
|
|
29
|
-
`).filter(Boolean).slice(0,25);for(let e of r){let t=(await n.raw(`log`,`-1`,`--format=%cI%x00%B`,e)).trim(),r=t.indexOf(`\0`);if(r<0)continue;let i=t.slice(0,r);if(
|
|
30
|
-
`))n.push(` ${Y.default.dim(t)}`);return n}function ls(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 us(e,t={}){let n=t.checks??os(),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(!Qo(e.check))return i(Y.default.red(`unknown check '${e.check}'. Valid: ${Zo.join(`, `)}`)),2;let t=e.check,r=n.find(e=>e.name===t);if(!r)return i(Y.default.red(`internal error: check '${e.check}' not registered`)),2;c=[r]}else c=[...n];let l={cwd:e.cwd},u=await es(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 cs(e,s))r(t);r(``),r(ls(u))}return u.some(e=>e.status===`fail`)?1:0}function ds(){return new
|
|
27
|
+
`:``;W(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=io(to(n,t.contentDir),t);r!==n&&W(e,r)}}function so(e,t){let n=V(e,`utf-8`),r=to(n,t.contentDir);r!==n&&W(e,r)}function co(e){try{return Rn(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>L(e,t.name))}catch{return[]}}const lo=new Set([`agent-presence.json`,`runtime.json`]);function uo(e){let t={contentDir:e.contentDir,docNameMap:{},originalToHashed:new Map,docNameCollisions:{}};for(let n of[`telemetry`,`logs`,`process`])for(let r of co(L(e.stagingDir,n)))r.endsWith(`.jsonl`)?ao(r,t):r.endsWith(`.json`)?oo(r,t):so(r,t);for(let n of co(L(e.stagingDir,`state`))){let e=F(n);lo.has(e)?oo(n,t):so(n,t)}return{docNameMap:t.docNameMap,docNameCollisions:t.docNameCollisions}}const fo=[`.ok`,`local`,`telemetry`],po=[`.ok`,`local`,`logs`],mo=`spans-current.jsonl`,ho=`spans-prev.jsonl`,go=`server-current.jsonl`,_o=`server-prev.jsonl`;function vo(e){return L(e,...fo,mo)}function yo(e){return L(e,...fo,ho)}function bo(e){return L(e,...po,go)}function xo(e){return L(e,...po,_o)}async function So(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 Co(e){let t=L(e,`.git`,`ok`);if(!z(t))return null;let n=gn(`git`,[`-C`,t,`log`,`--oneline`,`-50`],{encoding:`utf-8`,timeout:2e3});return n.error||n.status!==0?null:n.stdout??``}function wo(){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 To(){return{nodeVersion:process.version,platform:wn(),arch:xn()}}function Eo(){return process.env.OTEL_SDK_DISABLED===`false`}function Do(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oo(e){if(!z(e))return{};let t;try{t=(0,la.parse)(V(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(!Do(t))return{};let n=t.telemetry;if(!Do(n))return{};let r=n.localSink;return Do(r)?r:{}}function ko(e){return typeof e==`boolean`?e:void 0}function Ao(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function jo(e){if(Do(e))return Ao(e.maxBytes)}function Mo(e){let t=Oo(Ee(`project`,e)),n=Oo(Ee(`project-local`,e));return{enabled:ko(n.enabled)??ko(t.enabled)??!0,spansMaxBytes:jo(n.spans)??jo(t.spans)??52428800,logsMaxBytes:jo(n.logs)??jo(t.logs)??26214400}}function No(e){return Vn(`sha256`).update(e).digest(`hex`)}function Po(e){let t=V(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}function Fo(e){let t=V(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 Io(e,t){return z(e)?(B(I(t),{recursive:!0}),Nn(e,t),!0):!1}function Lo(e){let t=[],n=e=>{let r=Rn(e,{withFileTypes:!0});for(let i of r){let r=L(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const Ro=new Set([`.jsonl`]);function zo(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Ro.has(e.slice(t))}function Bo(e,t){return _n(e,t).split(vn).join(`/`)}async function Vo(e){let t=R(e.contentDir),n=R(e.projectDir??e.contentDir),r=e.deps??{},i=r.fetchAgentPresence??So,a=r.readShadowHead??Co,o=r.now??(()=>new Date),s=r.okVersion??(()=>qt),c=r.readDesktopEnv??wo,l=r.readRuntime??To,u=r.isOtlpPushEnabled??Eo,d=In(L(En(),`ok-bundle-`));B(L(d,`telemetry`),{recursive:!0}),B(L(d,`logs`),{recursive:!0}),B(L(d,`state`),{recursive:!0}),Io(vo(n),L(d,`telemetry`,mo)),Io(yo(n),L(d,`telemetry`,ho)),Io(bo(n),L(d,`logs`,go)),Io(xo(n),L(d,`logs`,_o));let f=L(n,`.ok`,`local`),p=L(f,`server.lock`),m=`not-running`,h=`no server.lock`,g=null;if(z(p)){Io(p,L(d,`state`,`server.lock`));try{let e=V(p,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?g=t.port:h=`lock present but no port`}catch{h=`lock present but unparseable`}}if(g!==null){let e=await i(g);e===null?h=`agent-presence endpoint at :${g} unreachable`:(W(L(d,`state`,`agent-presence.json`),e),m=`running`,h=``)}let _=a(t);_!==null&&W(L(d,`state`,`shadow-head.txt`),_),Io(L(f,`last-spawn-error.log`),L(d,`state`,`last-spawn-error.log`));let v=l(),y=c(),b={ok:{version:s(),nodeVersion:v.nodeVersion,platform:v.platform,arch:v.arch},host:{desktop:y}};W(L(d,`state`,`runtime.json`),`${JSON.stringify(b,null,2)}\n`);let x=m===`running`?`running
|
|
28
|
+
`:`not-running (${h})\n`;if(W(L(d,`state`,`server-status.txt`),x),e.processDir&&z(e.processDir)){let t=L(d,`process`);B(t,{recursive:!0}),Nn(e.processDir,t,{recursive:!0})}let S=null;e.redact===!0&&(S=uo({stagingDir:d,contentDir:t}));let C=Mo(n),w=Lo(d),T=[],ee=0,E=0;for(let e of w){let t=Bo(d,e),n=U(e).size,r=zo(t)?Po(e):0;T.push({path:t,bytes:n,lines:r}),ee+=n,t.startsWith(`telemetry/`)&&zo(t)&&(E+=Fo(e))}let te={schemaVersion:1,createdAt:o().toISOString(),ok:{version:s(),nodeVersion:v.nodeVersion,platform:v.platform,arch:v.arch},host:{desktop:y},contentDir:{pathSha256:No(t),absolutePath:S===null?t:`<CONTENT_DIR>`},telemetry:{localSink:C,otlpPushEnabled:u()},redaction:S===null?{applied:!1,docNameMapSidecar:null}:Object.keys(S.docNameCollisions).length>0?{applied:!0,docNameMapSidecar:null,docNameCollisions:S.docNameCollisions}:{applied:!0,docNameMapSidecar:null},serverStatus:m,files:T};W(L(d,`manifest.json`),`${JSON.stringify(te,null,2)}\n`);let ne=w.some(e=>{try{return V(e,`utf-8`).includes(t)}catch{return!1}}),re={totalBytes:ee,fileCount:T.length,docNameCount:E,contentDirVisible:ne,redacted:S!==null},ie=!1;return{stagingDir:d,manifest:te,summary:re,redactionMapPayload:S===null?null:{docNameMap:S.docNameMap,docNameCollisions:S.docNameCollisions},cleanup:()=>{ie||(ie=!0,H(d,{recursive:!0,force:!0}))}}}async function Ho(e){let{collected:t,outputPath:n}=e,r=I(n);if(!z(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=`${F(n,`.zip`)}.docnames.json`,r={...t.manifest,redaction:{...t.manifest.redaction,applied:!0,docNameMapSidecar:e}};W(L(t.stagingDir,`manifest.json`),`${JSON.stringify(r,null,2)}\n`)}let i=new Xa.ZipFile,a=Lo(t.stagingDir);for(let e of a){let n=Bo(t.stagingDir,e);i.addFile(e,n)}i.end(),t.redactionMapPayload!==null&&W(L(r,`${F(n,`.zip`)}.docnames.json`),`${JSON.stringify({docNameMap:t.redactionMapPayload.docNameMap,docNameCollisions:t.redactionMapPayload.docNameCollisions},null,2)}\n`,{mode:384});let o=Pn(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}function Uo(){let e=gn(`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 Wo(e={}){let t=e.probe??Uo;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 Go(e={}){let t=e.loader??tn;return{name:`config-yaml`,run:async e=>{if(!z(R(e.cwd,`.ok`,`config.yml`)))return{name:`config-yaml`,status:`warn`,summary:`.ok/${Jt} 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/${Jt} failed to parse`,detail:t}}}}}function Ko(e){try{return An(e,Mn.W_OK),{writable:!0}}catch(e){return{writable:!1,reason:e instanceof Error?e.message:String(e)}}}function qo(e={}){let t=e.loader??tn,n=e.probeWritable??Ko;return{name:`content-dir`,run:async e=>{if(!z(R(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=R(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(!z(r))return{name:`content-dir`,status:`fail`,summary:`content.dir does not exist: ${r}`,remediation:`Create the directory or fix \`content.dir\` in .ok/${Jt}.`};if(!U(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 Jo(e={}){let t=e.assert??Pe;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 oe)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 _e)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 Yo(e){let t=gn(`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 Xo(e={}){let t=e.platform??process.platform,n=e.execPath??process.execPath,r=e.codesignVerify??Yo;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 OpenKnowledge.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 OpenKnowledge from the official releases page.`,detail:`bundlePath: ${i}\n${a.stderr}`}}}}const Zo=[`git`,`bun`,`config-yaml`,`content-dir`,`server-lock`,`shadow-repo`,`shadow-health`,`macos-codesig`];function Qo(e){return Zo.includes(e)}async function $o(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 es(e,t,n={}){let r=[];for(let i of e)r.push(await $o(i,t,n));return r}function ts(e={}){let t=e.inspect??Kt;return{name:`server-lock`,run:async e=>{let n=D(e.cwd);if(!z(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 OpenKnowledge 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 ${R(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}}}}async function ns(e,t){let n={gitDir:e,workTree:t},r=await xe(n),i=await fe(n),a=await ue(n,Date.now()-18e5),o=de(n),s=null;for(let t of[`objects/info/commit-graph`,`objects/info/commit-graphs`]){let n=R(e,t);if(z(n))try{s=Math.max(s??0,U(n).mtimeMs)}catch{}}let c=null;try{let n=ne({baseDir:t,timeout:{block:4e3}}).env({GIT_DIR:e}),r=(await n.raw(`for-each-ref`,`--sort=-creatordate`,`--format=%(objectname)`,`refs/checkpoints/`)).trim().split(`
|
|
29
|
+
`).filter(Boolean).slice(0,25);for(let e of r){let t=(await n.raw(`log`,`-1`,`--format=%cI%x00%B`,e)).trim(),r=t.indexOf(`\0`);if(r<0)continue;let i=t.slice(0,r);if(ye(t.slice(r+1))?.kind===`auto-consolidation`){let e=Date.parse(i);Number.isFinite(e)&&(c=e);break}}}catch{}return{looseObjects:r.looseObjects,packfiles:r.packfiles,wipWidth:i,deadChains:a,gcLogLatch:o,lastPackedAtMs:s,lastConsolidationAtMs:c}}function rs(e){if(e===null)return`never`;let t=Date.now()-e,n=t/(1440*60*1e3);if(n>=1)return`${Math.round(n)}d ago`;let r=t/(3600*1e3);return r>=1?`${Math.round(r)}h ago`:`${Math.max(0,Math.round(t/6e4))}m ago`}function is(e={}){let t=e.resolveDir??rt,n=e.readFacts??ns;return{name:`shadow-health`,run:async e=>{if(!z(R(e.cwd,`.git`)))return{name:`shadow-health`,status:`warn`,summary:`no .git/ at project root (shadow repo not initialized)`,remediation:"Run `ok start` once to initialize the shadow repo."};let r;try{r=t(e.cwd)}catch(e){return{name:`shadow-health`,status:`warn`,summary:`cannot resolve shadow gitdir: ${e instanceof Error?e.message:String(e)}`}}if(!z(r))return{name:`shadow-health`,status:`warn`,summary:`shadow repo not yet initialized`,remediation:"Run `ok start` once to initialize the shadow repo."};let i=await n(r,e.cwd),a=[];i.gcLogLatch&&a.push(`gc.log latch present (auto-packing disabled until it self-expires)`),i.looseObjects>2e3?a.push(`${i.looseObjects} loose objects (unpacked)`):i.packfiles===0&&i.looseObjects>512&&a.push(`${i.looseObjects} loose objects, never packed`),i.deadChains>5&&a.push(`${i.deadChains} dead chains unfolded (auto-consolidation not keeping up)`),i.wipWidth>20&&a.push(`${i.wipWidth} WIP refs (version-journal width high)`);let o=[`loose objects: ${i.looseObjects}`,`packfiles: ${i.packfiles}`,`WIP refs: ${i.wipWidth}`,`dead chains: ${i.deadChains}`,`gc.log latch: ${i.gcLogLatch?`present`:`none`}`,`last packed: ${rs(i.lastPackedAtMs)}`,`last fold: ${rs(i.lastConsolidationAtMs)}`].join(`, `);return a.length>0?{name:`shadow-health`,status:`warn`,summary:`history may be slow: ${a.join(`; `)}`,remediation:`Packing and journal cleanup run automatically on the next server start and during use. If this persists, check the server logs.`,detail:o}:{name:`shadow-health`,status:`pass`,summary:`${i.looseObjects} loose, ${i.packfiles} packs, ${i.wipWidth} WIP refs`,detail:o}}}}function as(e={}){let t=e.resolve??rt;return{name:`shadow-repo`,run:async e=>{if(!z(R(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 ot||e instanceof Me)return{name:`shadow-repo`,status:`fail`,summary:`cannot resolve shadow gitdir: ${e.message}`};throw e}if(!z(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=R(n,`HEAD`);if(!z(r))return{name:`shadow-repo`,status:`fail`,summary:`shadow repo at ${n} is missing HEAD`};let i;try{i=V(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 os(){return[Jo(),Wo(),Go(),qo(),ts(),as(),is(),Xo()]}function ss(e){switch(e){case`pass`:return Y.default.green(`✓`);case`warn`:return Y.default.yellow(`!`);case`fail`:return Y.default.red(`✗`)}}function cs(e,t){let n=[`[${ss(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(`
|
|
30
|
+
`))n.push(` ${Y.default.dim(t)}`);return n}function ls(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 us(e,t={}){let n=t.checks??os(),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(!Qo(e.check))return i(Y.default.red(`unknown check '${e.check}'. Valid: ${Zo.join(`, `)}`)),2;let t=e.check,r=n.find(e=>e.name===t);if(!r)return i(Y.default.red(`internal error: check '${e.check}' not registered`)),2;c=[r]}else c=[...n];let l={cwd:e.cwd},u=await es(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 cs(e,s))r(t);r(``),r(ls(u))}return u.some(e=>e.status===`fail`)?1:0}function ds(){return new O(`health`).description(`Run environment health checks (${Zo.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: ${Zo.join(`, `)}`).option(`--quiet`,`Suppress output; exit code only`).action(async e=>{let t=await us({cwd:process.cwd(),json:e.json,verbose:e.verbose,check:e.check,quiet:e.quiet});process.exit(t)})}function fs(e){let t=gn(`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 ps(e){let t=gn(`lsof`,[`-p`,String(e)],{encoding:`utf-8`,timeout:5e3});return t.error||!t.stdout?null:t.stdout}function ms(e){let t=[];for(let n of e.split(`
|
|
31
31
|
`)){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 hs(e){let t=gn(`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 gs(e,t,n){let r=L(In(L(En(),`ok-cdp-`)),`profiler.mjs`);return W(r,`import { writeFileSync } from 'node:fs';
|
|
32
32
|
const ws = new WebSocket(${JSON.stringify(e)});
|
|
33
33
|
let id = 0;
|
|
@@ -47,26 +47,26 @@ ws.addEventListener('message', ({ data }) => {
|
|
|
47
47
|
ws.addEventListener('close', () => process.exit(0));
|
|
48
48
|
ws.addEventListener('error', () => process.exit(1));
|
|
49
49
|
setTimeout(() => process.exit(2), ${t+1e4});
|
|
50
|
-
`),r}async function _s(e,t,n,r,i){let a=gs(e,t,L(r,`cpu.cpuprofile`)),o=!1,s=
|
|
51
|
-
`)}async function ys(e,t={}){let{pid:n,cpuProfileSecs:r=15,noInspector:i=!1}=e,a=t.log??(e=>console.log(e)),o=t.discover??
|
|
52
|
-
`)}\n`);try{S(`stacks.txt`,vs(V(L(x,`cpu.cpuprofile`),`utf-8`)))}catch(e){a(Y.default.yellow(` stacks.txt skipped: ${e.message}`))}}}else a(Y.default.yellow(` Node inspector unavailable — skipping CPU profile`))}a(``),a(Y.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: ${Y.default.bold(x)}`)}async function bs(e){let t=Kn({input:process.stdin,output:process.stdout});try{return(await t.question(e)).trim()}finally{t.close()}}async function xs(e){let t=In(L(En(),`ok-bundle-process-`));return await ys({pid:e,output:t}),t}function Ss(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 Cs(e){let t=e.trim().toLowerCase();return t===`y`||t===`yes`}function ws(e,t,n){let{summary:r,manifest:i}=t;e(``),e(Y.default.bold(`ok diagnose bundle — content summary`)),e(``),e(` Files: ${r.fileCount}`),e(` Total size: ${Ss(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 Ts(e,t={}){let n=t.log??(e=>console.log(e)),r=t.prompt??bs,i=t.runProcessDiagnose??xs,a=t.now??(()=>new Date),o;if(e.out!==void 0){o=e.out;let t=I(o);if(!z(t))throw Error(`ok diagnose bundle: --out parent directory does not exist: ${t}. Create it first.`)}else{let t=a().toISOString().replace(/[:.]/g,`-`),n=L(e.contentDir,`.ok`,`local`,`diagnostics`);B(n,{recursive:!0}),o=L(n,`bundle-${t}.zip`)}let s;e.pid!==void 0&&(n(Y.default.dim(`Running ok diagnose process ${e.pid} into a temp dir`)),s=await i(e.pid));let c=await Vo({contentDir:e.contentDir,projectDir:e.projectDir,processDir:s,redact:e.redact===!0,deps:t.collectDeps});try{return c.manifest.serverStatus===`not-running`&&n(Y.default.yellow(` server not running — live state unavailable`)),ws(n,c,o),e.yes!==!0&&!Cs(await r(`Write bundle? [y/N]: `))?(n(Y.default.dim(`Aborted; no bundle written.`)),{outputPath:null,declined:!0}):(await Ho({collected:c,outputPath:o}),n(Y.default.bold(`Bundle: ${o}`)),{outputPath:o,declined:!1})}finally{if(c.cleanup(),s!==void 0)try{H(s,{recursive:!0,force:!0})}catch{}}}function Es(){let e=new
|
|
53
|
-
`),process.exitCode=1;return}await
|
|
50
|
+
`),r}async function _s(e,t,n,r,i){let a=gs(e,t,L(r,`cpu.cpuprofile`)),o=!1,s=hn(process.execPath,[a],{stdio:`ignore`}),c=setInterval(()=>{let e=fs(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{H(L(a,`..`),{recursive:!0,force:!0})}catch{}return o}function vs(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(`
|
|
51
|
+
`)}async function ys(e,t={}){let{pid:n,cpuProfileSecs:r=15,noInspector:i=!1}=e,a=t.log??(e=>console.log(e)),o=t.discover??Ze,s=t.inspect??Kt,c=t.resolveCommand??me,l=t.resolveUsage??ge,u=t.collectLsofFn??ps,d=t.getEndpoints??hs,f=t.profiler??_s,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(Y.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 b=new Date().toISOString().replace(/[:.]/g,`-`),x=e.output?e.output:v?L(v,`.ok`,`local`,`diagnostics`,`process-${n}-${b}`):L(process.cwd(),`ok-diagnose-${n}-${b}`);try{B(x,{recursive:!0})}catch(e){a(Y.default.red(`Cannot create output directory ${x}: ${e.message}`));return}a(Y.default.bold(`Diagnosing pid ${n}`)),a(`Output: ${x}`),a(``);let S=(e,t)=>{W(L(x,e),t),a(` wrote ${e}`)},C=c(n),w=l(n);S(`metadata.json`,JSON.stringify({capturedAt:new Date().toISOString(),pid:n,command:C,usage:w,lockInfo:y},null,2)),a(` sampling lsof`);let T=u(n);if(T&&S(`lsof.txt`,T),!i){let e=T?ms(T).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(Y.default.yellow(` SIGUSR1 delivery failed: ${e.message}`))}}if(t&&t.length>0){S(`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,x,e=>t.push(e))?a(` wrote cpu.cpuprofile`):a(Y.default.yellow(` CPU profile capture failed`)),t.length>0&&S(`process-stats.jsonl`,`${t.map(e=>JSON.stringify(e)).join(`
|
|
52
|
+
`)}\n`);try{S(`stacks.txt`,vs(V(L(x,`cpu.cpuprofile`),`utf-8`)))}catch(e){a(Y.default.yellow(` stacks.txt skipped: ${e.message}`))}}}else a(Y.default.yellow(` Node inspector unavailable — skipping CPU profile`))}a(``),a(Y.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: ${Y.default.bold(x)}`)}async function bs(e){let t=Kn({input:process.stdin,output:process.stdout});try{return(await t.question(e)).trim()}finally{t.close()}}async function xs(e){let t=In(L(En(),`ok-bundle-process-`));return await ys({pid:e,output:t}),t}function Ss(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 Cs(e){let t=e.trim().toLowerCase();return t===`y`||t===`yes`}function ws(e,t,n){let{summary:r,manifest:i}=t;e(``),e(Y.default.bold(`ok diagnose bundle — content summary`)),e(``),e(` Files: ${r.fileCount}`),e(` Total size: ${Ss(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 Ts(e,t={}){let n=t.log??(e=>console.log(e)),r=t.prompt??bs,i=t.runProcessDiagnose??xs,a=t.now??(()=>new Date),o;if(e.out!==void 0){o=e.out;let t=I(o);if(!z(t))throw Error(`ok diagnose bundle: --out parent directory does not exist: ${t}. Create it first.`)}else{let t=a().toISOString().replace(/[:.]/g,`-`),n=L(e.contentDir,`.ok`,`local`,`diagnostics`);B(n,{recursive:!0}),o=L(n,`bundle-${t}.zip`)}let s;e.pid!==void 0&&(n(Y.default.dim(`Running ok diagnose process ${e.pid} into a temp dir`)),s=await i(e.pid));let c=await Vo({contentDir:e.contentDir,projectDir:e.projectDir,processDir:s,redact:e.redact===!0,deps:t.collectDeps});try{return c.manifest.serverStatus===`not-running`&&n(Y.default.yellow(` server not running — live state unavailable`)),ws(n,c,o),e.yes!==!0&&!Cs(await r(`Write bundle? [y/N]: `))?(n(Y.default.dim(`Aborted; no bundle written.`)),{outputPath:null,declined:!0}):(await Ho({collected:c,outputPath:o}),n(Y.default.bold(`Bundle: ${o}`)),{outputPath:o,declined:!1})}finally{if(c.cleanup(),s!==void 0)try{H(s,{recursive:!0,force:!0})}catch{}}}function Es(){let e=new O(`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(Y.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(Y.default.red(`--cpu-profile must be a positive integer`)),process.exit(1)),await ys({pid:n,cpuProfileSecs:r,output:t.output,noInspector:!t.inspector})}),e.addCommand(ds()),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(Y.default.red(`Invalid --pid '${e.pid}': must be a positive integer`)),process.exit(1)));try{let{loadConfig:n}=await import(`./loader-CU2qWOz4.mjs`),{resolveContentDir:r}=await import(`./dist-CDpjGDM9.mjs`),i=process.cwd(),{config:a}=n(i);await Ts({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(Y.default.red(t)),process.exit(1)}}),e}async function Ds(){if(!process.stdin.isTTY){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString(`utf-8`).trim()}return(await br({message:`Enter OpenAI embeddings API key:`})).trim()}function Os(e){return ve(e)}async function ks(){return(await Ke()).file?{present:!0,source:`file`}:process.env.OK_EMBEDDINGS_API_KEY?{present:!0,source:`env`}:{present:!1,source:null}}async function As(e){try{let t=_(D(e));if(!t||t.port<=0||!m(t.pid))return null;let n=await fetch(`http://127.0.0.1:${t.port}/api/semantic-status`,{signal:AbortSignal.timeout(1500)});if(!n.ok)return null;let r=await n.json();return typeof r.embedded!=`number`||typeof r.total!=`number`?null:{embedded:r.embedded,total:r.total}}catch{return null}}function js(){return new O(`set-key`).description(`Store your OpenAI embeddings API key in ~/.ok/secrets.yml`).action(async()=>{let e=await Ds();if(!e){process.stderr.write(`No key provided.
|
|
53
|
+
`),process.exitCode=1;return}await we().set(e),process.stderr.write(`✓ OpenAI embeddings API key stored in ~/.ok/secrets.yml (0600, this machine only).
|
|
54
54
|
Now enable it per project — the easiest path is OK Desktop → Settings → This
|
|
55
55
|
project → Search (a toggle with an egress-confirmation prompt), or run
|
|
56
56
|
\`ok embeddings enable\` in the project folder.
|
|
57
|
-
`)})}function Ms(){return new
|
|
58
|
-
`);return}process.stderr.write(`✓ OpenAI embeddings API key cleared (${e.join(`, `)}).\n`)})}function Ns(e,t){return new
|
|
59
|
-
`)}\n`)})}function Fs(){return new
|
|
60
|
-
`);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),Ws(t)}clear(){this._buffer=void 0}};function Ws(e){return
|
|
61
|
-
`}var Ks=class{constructor(e=yn.stdin,t=yn.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new Us,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=Gs(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};function qs(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 Js(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 Ys(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 Xs(e){let t=e.scheduler??{setInterval:(e,t)=>globalThis.setInterval(e,t),clearInterval:e=>globalThis.clearInterval(e)},n=e.getPpid();if(n<=1)return{stop:()=>{}};let r=!1,i=t.setInterval(()=>{if(r)return;let a=e.getPpid();a!==n&&(r=!0,t.clearInterval(i),e.onHostGone(`host process exited (ppid ${n} -> ${a})`))},e.intervalMs??1e3);return i.unref?.(),{stop:()=>t.clearInterval(i)}}function Zs(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 Qs(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function $s(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...Qs(t.headers),...Qs(r.headers)}:t.headers}):e}let ec;ec=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function tc(e){return(await ec).getRandomValues(new Uint8Array(e))}async function nc(e){let t=``;for(;t.length<e;){let n=await tc(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function rc(e){return await nc(e)}async function ic(e){let t=await(await ec).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function ac(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await rc(e);return{code_verifier:t,code_challenge:await ic(t)}}const X=r().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:qn.custom,message:`URL must be parseable`,fatal:!0}),l}).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`}),oc=te({resource:T().url(),authorization_servers:_(X).optional(),jwks_uri:T().url().optional(),scopes_supported:_(T()).optional(),bearer_methods_supported:_(T()).optional(),resource_signing_alg_values_supported:_(T()).optional(),resource_name:T().optional(),resource_documentation:T().optional(),resource_policy_uri:T().url().optional(),resource_tos_uri:T().url().optional(),tls_client_certificate_bound_access_tokens:S().optional(),authorization_details_types_supported:_(T()).optional(),dpop_signing_alg_values_supported:_(T()).optional(),dpop_bound_access_tokens_required:S().optional()}),sc=te({issuer:T(),authorization_endpoint:X,token_endpoint:X,registration_endpoint:X.optional(),scopes_supported:_(T()).optional(),response_types_supported:_(T()),response_modes_supported:_(T()).optional(),grant_types_supported:_(T()).optional(),token_endpoint_auth_methods_supported:_(T()).optional(),token_endpoint_auth_signing_alg_values_supported:_(T()).optional(),service_documentation:X.optional(),revocation_endpoint:X.optional(),revocation_endpoint_auth_methods_supported:_(T()).optional(),revocation_endpoint_auth_signing_alg_values_supported:_(T()).optional(),introspection_endpoint:T().optional(),introspection_endpoint_auth_methods_supported:_(T()).optional(),introspection_endpoint_auth_signing_alg_values_supported:_(T()).optional(),code_challenge_methods_supported:_(T()).optional(),client_id_metadata_document_supported:S().optional()}),cc=m({...te({issuer:T(),authorization_endpoint:X,token_endpoint:X,userinfo_endpoint:X.optional(),jwks_uri:X,registration_endpoint:X.optional(),scopes_supported:_(T()).optional(),response_types_supported:_(T()),response_modes_supported:_(T()).optional(),grant_types_supported:_(T()).optional(),acr_values_supported:_(T()).optional(),subject_types_supported:_(T()),id_token_signing_alg_values_supported:_(T()),id_token_encryption_alg_values_supported:_(T()).optional(),id_token_encryption_enc_values_supported:_(T()).optional(),userinfo_signing_alg_values_supported:_(T()).optional(),userinfo_encryption_alg_values_supported:_(T()).optional(),userinfo_encryption_enc_values_supported:_(T()).optional(),request_object_signing_alg_values_supported:_(T()).optional(),request_object_encryption_alg_values_supported:_(T()).optional(),request_object_encryption_enc_values_supported:_(T()).optional(),token_endpoint_auth_methods_supported:_(T()).optional(),token_endpoint_auth_signing_alg_values_supported:_(T()).optional(),display_values_supported:_(T()).optional(),claim_types_supported:_(T()).optional(),claims_supported:_(T()).optional(),service_documentation:T().optional(),claims_locales_supported:_(T()).optional(),ui_locales_supported:_(T()).optional(),claims_parameter_supported:S().optional(),request_parameter_supported:S().optional(),request_uri_parameter_supported:S().optional(),require_request_uri_registration:S().optional(),op_policy_uri:X.optional(),op_tos_uri:X.optional(),client_id_metadata_document_supported:S().optional()}).shape,...sc.pick({code_challenge_methods_supported:!0}).shape}),lc=m({access_token:T(),id_token:T().optional(),token_type:T(),expires_in:Yn().optional(),scope:T().optional(),refresh_token:T().optional()}).strip(),uc=m({error:T(),error_description:T().optional(),error_uri:T().optional()}),dc=X.optional().or(f(``).transform(()=>void 0)),fc=m({redirect_uris:_(X),token_endpoint_auth_method:T().optional(),grant_types:_(T()).optional(),response_types:_(T()).optional(),client_name:T().optional(),client_uri:X.optional(),logo_uri:dc,scope:T().optional(),contacts:_(T()).optional(),tos_uri:dc,policy_uri:T().optional(),jwks_uri:X.optional(),jwks:g().optional(),software_id:T().optional(),software_version:T().optional(),software_statement:T().optional()}).strip(),pc=m({client_id:T(),client_secret:T().optional(),client_id_issued_at:ne().optional(),client_secret_expires_at:ne().optional()}).strip(),mc=fc.merge(pc);m({error:T(),error_description:T().optional()}).strip(),m({token:T(),token_type_hint:T().optional()}).strip();function hc(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function gc({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 Z=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}},_c=class extends Z{};_c.errorCode=`invalid_request`;var vc=class extends Z{};vc.errorCode=`invalid_client`;var yc=class extends Z{};yc.errorCode=`invalid_grant`;var bc=class extends Z{};bc.errorCode=`unauthorized_client`;var xc=class extends Z{};xc.errorCode=`unsupported_grant_type`;var Sc=class extends Z{};Sc.errorCode=`invalid_scope`;var Cc=class extends Z{};Cc.errorCode=`access_denied`;var wc=class extends Z{};wc.errorCode=`server_error`;var Tc=class extends Z{};Tc.errorCode=`temporarily_unavailable`;var Ec=class extends Z{};Ec.errorCode=`unsupported_response_type`;var Dc=class extends Z{};Dc.errorCode=`unsupported_token_type`;var Oc=class extends Z{};Oc.errorCode=`invalid_token`;var kc=class extends Z{};kc.errorCode=`method_not_allowed`;var Ac=class extends Z{};Ac.errorCode=`too_many_requests`;var jc=class extends Z{};jc.errorCode=`invalid_client_metadata`;var Mc=class extends Z{};Mc.errorCode=`insufficient_scope`;var Nc=class extends Z{};Nc.errorCode=`invalid_target`;const Pc={[_c.errorCode]:_c,[vc.errorCode]:vc,[yc.errorCode]:yc,[bc.errorCode]:bc,[xc.errorCode]:xc,[Sc.errorCode]:Sc,[Cc.errorCode]:Cc,[wc.errorCode]:wc,[Tc.errorCode]:Tc,[Ec.errorCode]:Ec,[Dc.errorCode]:Dc,[Oc.errorCode]:Oc,[kc.errorCode]:kc,[Ac.errorCode]:Ac,[jc.errorCode]:jc,[Mc.errorCode]:Mc,[Nc.errorCode]:Nc};var Fc=class extends Error{constructor(e){super(e??`Unauthorized`)}};function Ic(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}const Lc=`code`,Rc=`S256`;function zc(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&Ic(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 Bc(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Vc(i,a,n);return;case`client_secret_post`:Hc(i,a,r);return;case`none`:Uc(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Vc(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 Hc(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Uc(e,t){t.set(`client_id`,e)}async function Wc(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}=uc.parse(JSON.parse(n));return new(Pc[e]||wc)(t||``,r)}catch(e){return new wc(`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`)}}async function Gc(e,t){try{return await Kc(e,t)}catch(n){if(n instanceof vc||n instanceof bc)return await e.invalidateCredentials?.(`all`),await Kc(e,t);if(n instanceof yc)return await e.invalidateCredentials?.(`tokens`),await Kc(e,t);throw n}}async function Kc(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 il(c,{fetchFn:a}),!s)try{s=await Zc(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 al(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 Jc(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&&!qc(r))throw new jc(`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 dl(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 ul(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 ll(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 Z)||e instanceof wc))throw e}let g=e.state?await e.state():void 0,{authorizationUrl:_,codeVerifier:v}=await ol(c,{metadata:l,clientInformation:p,state:g,redirectUrl:e.redirectUrl,scope:f,resource:d});return await e.saveCodeVerifier(v),await e.redirectToAuthorization(_),`REDIRECT`}function qc(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function Jc(e,t,n){let r=hc(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!gc({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function Yc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return{};let i=Xc(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=Xc(e,`scope`)||void 0,s=Xc(e,`error`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s}}function Xc(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 Zc(e,t,n=fetch){let r=await nl(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 oc.parse(await r.json())}async function Qc(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?Qc(e,void 0,n):void 0;throw r}}function $c(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function el(e,t,n=fetch){return await Qc(e,{"MCP-Protocol-Version":t},n)}function tl(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function nl(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=$c(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await el(o,a,n);return!r?.metadataUrl&&tl(s,i.pathname)&&(s=await el(new URL(`/.well-known/${t}`,i),a,n)),s}function rl(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 il(e,{fetchFn:t=fetch,protocolVersion:n=Re}={}){let r={"MCP-Protocol-Version":n,Accept:`application/json`},i=rl(e);for(let{url:e,type:n}of i){let i=await Qc(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`?sc.parse(await i.json()):cc.parse(await i.json())}}}async function al(e,t){let n,r;try{n=await Zc(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 il(r,{fetchFn:t?.fetchFn});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function ol(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(Lc))throw Error(`Incompatible auth server: does not support response type ${Lc}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(Rc))throw Error(`Incompatible auth server: does not support code challenge method ${Rc}`)}else s=new URL(`/authorize`,e);let c=await ac(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Lc),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,Rc),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 sl(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function cl(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&&Bc(zc(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 Wc(l);return lc.parse(await l.json())}async function ll(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await cl(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function ul(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=sl(i,await e.codeVerifier(),e.redirectUrl)}let c=await e.clientInformation();return cl(t,{metadata:n,tokenRequestParams:s,clientInformation:c??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:a})}async function dl(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 Wc(o);return mc.parse(await o.json())}var fl=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 pl(e){}function ml(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=pl,onError:n=pl,onRetry:r=pl,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=hl(`${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}
|
|
57
|
+
`)})}function Ms(){return new O(`clear-key`).description(`Remove your stored OpenAI embeddings API key`).action(async()=>{let{touched:e}=await ce();if(e.length===0){process.stderr.write(`No stored OpenAI embeddings key found.
|
|
58
|
+
`);return}process.stderr.write(`✓ OpenAI embeddings API key cleared (${e.join(`, `)}).\n`)})}function Ns(e,t){return new O(e).description(`Turn semantic search ${t?`on`:`off`} for this project (project-local)`).option(`--cwd <path>`,`Project directory (defaults to the current directory)`).action(async n=>{let r=R(n.cwd??process.cwd()),i=await st({cwd:r,scope:`project-local`,patch:{search:{semantic:{enabled:t}}}});if(!i.ok){process.stderr.write(`Failed to ${e} semantic search — ${u(i.error)}\n`),process.exitCode=1;return}if(process.stderr.write(`✓ Semantic search ${t?`enabled`:`disabled`} for ${r}\n`),t){let{present:e}=await ks();e||process.stderr.write(" Note: no API key set yet — run `ok embeddings set-key`. Until then, search stays lexical.\n")}})}function Ps(){return new O(`status`).description(`Show semantic-search capability: key presence, enabled, coverage, provider`).option(`--cwd <path>`,`Project directory (defaults to the current directory)`).option(`--json`,`Output JSON`,!1).action(async e=>{let t=R(e.cwd??process.cwd()),n=Os(t),{present:r,source:i}=await ks(),a=n.enabled&&r,o=a?await As(t):null;if(e.json){process.stdout.write(`${JSON.stringify({project:t,machine:{keyPresent:r,keySource:i},project_config:{enabled:n.enabled,capable:a,coverage:o?{embedded:o.embedded,total:o.total}:null,provider:{baseUrl:n.baseUrl,model:n.model,dimensions:n.dimensions??null}}})}\n`);return}let s=r?`set — ${i===`env`?`environment (${at})`:`~/.ok/secrets.yml`}`:`not set`,c=a?o?`${o.embedded} / ${o.total} pages embedded`:`server not running — start it to index (or it has not embedded yet)`:null,l=[`Semantic search`,` project: ${t}`,``,` This machine (all projects):`,` API key: ${s}`,``,` This project:`,` enabled: ${n.enabled?`yes`:`no`}`,` capability: ${a?`AVAILABLE`:`unavailable (search stays lexical)`}`,...c?[` coverage: ${c}`]:[],` provider: ${n.baseUrl}`,` model: ${n.model}`,` dimensions: ${n.dimensions??`native (1536)`}`],u=[];r||u.push(`Set a key: ok embeddings set-key (or export ${at})`),n.enabled||u.push(`Enable it: ok embeddings enable (in this project folder)`),u.length>0&&l.push(``,...u.map(e=>` ${e}`)),process.stdout.write(`${l.join(`
|
|
59
|
+
`)}\n`)})}function Fs(){return new O(`embeddings`).description(`Manage the semantic-search embeddings provider key + status`).addCommand(js()).addCommand(Ms()).addCommand(Ns(`enable`,!0)).addCommand(Ns(`disable`,!1)).addCommand(Ps())}const Is=L(`Contents`,`Resources`,`cli`,`bin`,`ok.sh`),Ls=/Contents\/Resources\/cli\/dist\/cli\.mjs$/;function Rs(e,t,n){return e===`darwin`?[L(t,`Applications`,`OpenKnowledge.app`,Is),L(`/Applications`,`OpenKnowledge.app`,Is)].find(e=>n.existsSync(e))??null:null}function zs(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`&&Ls.test(t[1])?{proxy:!1,suppressedBy:`self`}:{proxy:!0,suppressedBy:null}}function Bs(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 Vs(e){Bs({stderr:e.stderr,mode:`bundled`,bundlePath:e.bundlePath,reason:null});let t=e.spawnImpl??hn,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 Hs(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.pid!==void 0&&r.push(`pid=${encodeURIComponent(String(e.pid))}`),e.connectionId&&r.push(`connectionId=${encodeURIComponent(e.connectionId)}`),e.connectionId&&e.displayName!==void 0&&e.clientName!==void 0&&e.colorSeed!==void 0&&(r.push(`displayName=${encodeURIComponent(e.displayName)}`),r.push(`clientName=${encodeURIComponent(e.clientName)}`),r.push(`colorSeed=${encodeURIComponent(e.colorSeed)}`));let i=r.length>0?`?${r.join(`&`)}`:``,o=`${t}/collab/keepalive${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 Us=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
|
|
60
|
+
`);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),Ws(t)}clear(){this._buffer=void 0}};function Ws(e){return nt.parse(JSON.parse(e))}function Gs(e){return JSON.stringify(e)+`
|
|
61
|
+
`}var Ks=class{constructor(e=yn.stdin,t=yn.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new Us,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=Gs(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};function qs(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 Js(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 Ys(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 Xs(e){let t=e.scheduler??{setInterval:(e,t)=>globalThis.setInterval(e,t),clearInterval:e=>globalThis.clearInterval(e)},n=e.getPpid();if(n<=1)return{stop:()=>{}};let r=!1,i=t.setInterval(()=>{if(r)return;let a=e.getPpid();a!==n&&(r=!0,t.clearInterval(i),e.onHostGone(`host process exited (ppid ${n} -> ${a})`))},e.intervalMs??1e3);return i.unref?.(),{stop:()=>t.clearInterval(i)}}function Zs(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 Qs(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):{...e}:{}}function $s(e=fetch,t){return t?async(n,r)=>e(n,{...t,...r,headers:r?.headers?{...Qs(t.headers),...Qs(r.headers)}:t.headers}):e}let ec;ec=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function tc(e){return(await ec).getRandomValues(new Uint8Array(e))}async function nc(e){let t=``;for(;t.length<e;){let n=await tc(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function rc(e){return await nc(e)}async function ic(e){let t=await(await ec).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function ac(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await rc(e);return{code_verifier:t,code_challenge:await ic(t)}}const X=s().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:qn.custom,message:`URL must be parseable`,fatal:!0}),r}).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`}),oc=te({resource:c().url(),authorization_servers:C(X).optional(),jwks_uri:c().url().optional(),scopes_supported:C(c()).optional(),bearer_methods_supported:C(c()).optional(),resource_signing_alg_values_supported:C(c()).optional(),resource_name:c().optional(),resource_documentation:c().optional(),resource_policy_uri:c().url().optional(),resource_tos_uri:c().url().optional(),tls_client_certificate_bound_access_tokens:b().optional(),authorization_details_types_supported:C(c()).optional(),dpop_signing_alg_values_supported:C(c()).optional(),dpop_bound_access_tokens_required:b().optional()}),sc=te({issuer:c(),authorization_endpoint:X,token_endpoint:X,registration_endpoint:X.optional(),scopes_supported:C(c()).optional(),response_types_supported:C(c()),response_modes_supported:C(c()).optional(),grant_types_supported:C(c()).optional(),token_endpoint_auth_methods_supported:C(c()).optional(),token_endpoint_auth_signing_alg_values_supported:C(c()).optional(),service_documentation:X.optional(),revocation_endpoint:X.optional(),revocation_endpoint_auth_methods_supported:C(c()).optional(),revocation_endpoint_auth_signing_alg_values_supported:C(c()).optional(),introspection_endpoint:c().optional(),introspection_endpoint_auth_methods_supported:C(c()).optional(),introspection_endpoint_auth_signing_alg_values_supported:C(c()).optional(),code_challenge_methods_supported:C(c()).optional(),client_id_metadata_document_supported:b().optional()}),cc=E({...te({issuer:c(),authorization_endpoint:X,token_endpoint:X,userinfo_endpoint:X.optional(),jwks_uri:X,registration_endpoint:X.optional(),scopes_supported:C(c()).optional(),response_types_supported:C(c()),response_modes_supported:C(c()).optional(),grant_types_supported:C(c()).optional(),acr_values_supported:C(c()).optional(),subject_types_supported:C(c()),id_token_signing_alg_values_supported:C(c()),id_token_encryption_alg_values_supported:C(c()).optional(),id_token_encryption_enc_values_supported:C(c()).optional(),userinfo_signing_alg_values_supported:C(c()).optional(),userinfo_encryption_alg_values_supported:C(c()).optional(),userinfo_encryption_enc_values_supported:C(c()).optional(),request_object_signing_alg_values_supported:C(c()).optional(),request_object_encryption_alg_values_supported:C(c()).optional(),request_object_encryption_enc_values_supported:C(c()).optional(),token_endpoint_auth_methods_supported:C(c()).optional(),token_endpoint_auth_signing_alg_values_supported:C(c()).optional(),display_values_supported:C(c()).optional(),claim_types_supported:C(c()).optional(),claims_supported:C(c()).optional(),service_documentation:c().optional(),claims_locales_supported:C(c()).optional(),ui_locales_supported:C(c()).optional(),claims_parameter_supported:b().optional(),request_parameter_supported:b().optional(),request_uri_parameter_supported:b().optional(),require_request_uri_registration:b().optional(),op_policy_uri:X.optional(),op_tos_uri:X.optional(),client_id_metadata_document_supported:b().optional()}).shape,...sc.pick({code_challenge_methods_supported:!0}).shape}),lc=E({access_token:c(),id_token:c().optional(),token_type:c(),expires_in:Yn().optional(),scope:c().optional(),refresh_token:c().optional()}).strip(),uc=E({error:c(),error_description:c().optional(),error_uri:c().optional()}),dc=X.optional().or(ee(``).transform(()=>void 0)),fc=E({redirect_uris:C(X),token_endpoint_auth_method:c().optional(),grant_types:C(c()).optional(),response_types:C(c()).optional(),client_name:c().optional(),client_uri:X.optional(),logo_uri:dc,scope:c().optional(),contacts:C(c()).optional(),tos_uri:dc,policy_uri:c().optional(),jwks_uri:X.optional(),jwks:g().optional(),software_id:c().optional(),software_version:c().optional(),software_statement:c().optional()}).strip(),pc=E({client_id:c(),client_secret:c().optional(),client_id_issued_at:p().optional(),client_secret_expires_at:p().optional()}).strip(),mc=fc.merge(pc);E({error:c(),error_description:c().optional()}).strip(),E({token:c(),token_type_hint:c().optional()}).strip();function hc(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function gc({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 Z=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}},_c=class extends Z{};_c.errorCode=`invalid_request`;var vc=class extends Z{};vc.errorCode=`invalid_client`;var yc=class extends Z{};yc.errorCode=`invalid_grant`;var bc=class extends Z{};bc.errorCode=`unauthorized_client`;var xc=class extends Z{};xc.errorCode=`unsupported_grant_type`;var Sc=class extends Z{};Sc.errorCode=`invalid_scope`;var Cc=class extends Z{};Cc.errorCode=`access_denied`;var wc=class extends Z{};wc.errorCode=`server_error`;var Tc=class extends Z{};Tc.errorCode=`temporarily_unavailable`;var Ec=class extends Z{};Ec.errorCode=`unsupported_response_type`;var Dc=class extends Z{};Dc.errorCode=`unsupported_token_type`;var Oc=class extends Z{};Oc.errorCode=`invalid_token`;var kc=class extends Z{};kc.errorCode=`method_not_allowed`;var Ac=class extends Z{};Ac.errorCode=`too_many_requests`;var jc=class extends Z{};jc.errorCode=`invalid_client_metadata`;var Mc=class extends Z{};Mc.errorCode=`insufficient_scope`;var Nc=class extends Z{};Nc.errorCode=`invalid_target`;const Pc={[_c.errorCode]:_c,[vc.errorCode]:vc,[yc.errorCode]:yc,[bc.errorCode]:bc,[xc.errorCode]:xc,[Sc.errorCode]:Sc,[Cc.errorCode]:Cc,[wc.errorCode]:wc,[Tc.errorCode]:Tc,[Ec.errorCode]:Ec,[Dc.errorCode]:Dc,[Oc.errorCode]:Oc,[kc.errorCode]:kc,[Ac.errorCode]:Ac,[jc.errorCode]:jc,[Mc.errorCode]:Mc,[Nc.errorCode]:Nc};var Fc=class extends Error{constructor(e){super(e??`Unauthorized`)}};function Ic(e){return[`client_secret_basic`,`client_secret_post`,`none`].includes(e)}const Lc=`code`,Rc=`S256`;function zc(e,t){let n=e.client_secret!==void 0;return`token_endpoint_auth_method`in e&&e.token_endpoint_auth_method&&Ic(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 Bc(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:Vc(i,a,n);return;case`client_secret_post`:Hc(i,a,r);return;case`none`:Uc(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function Vc(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 Hc(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function Uc(e,t){t.set(`client_id`,e)}async function Wc(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}=uc.parse(JSON.parse(n));return new(Pc[e]||wc)(t||``,r)}catch(e){return new wc(`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`)}}async function Gc(e,t){try{return await Kc(e,t)}catch(n){if(n instanceof vc||n instanceof bc)return await e.invalidateCredentials?.(`all`),await Kc(e,t);if(n instanceof yc)return await e.invalidateCredentials?.(`tokens`),await Kc(e,t);throw n}}async function Kc(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 il(c,{fetchFn:a}),!s)try{s=await Zc(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 al(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 Jc(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&&!qc(r))throw new jc(`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 dl(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 ul(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 ll(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 Z)||e instanceof wc))throw e}let g=e.state?await e.state():void 0,{authorizationUrl:_,codeVerifier:v}=await ol(c,{metadata:l,clientInformation:p,state:g,redirectUrl:e.redirectUrl,scope:f,resource:d});return await e.saveCodeVerifier(v),await e.redirectToAuthorization(_),`REDIRECT`}function qc(e){if(!e)return!1;try{let t=new URL(e);return t.protocol===`https:`&&t.pathname!==`/`}catch{return!1}}async function Jc(e,t,n){let r=hc(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!gc({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}function Yc(e){let t=e.headers.get(`WWW-Authenticate`);if(!t)return{};let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return{};let i=Xc(e,`resource_metadata`)||void 0,a;if(i)try{a=new URL(i)}catch{}let o=Xc(e,`scope`)||void 0,s=Xc(e,`error`)||void 0;return{resourceMetadataUrl:a,scope:o,error:s}}function Xc(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 Zc(e,t,n=fetch){let r=await nl(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 oc.parse(await r.json())}async function Qc(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?Qc(e,void 0,n):void 0;throw r}}function $c(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function el(e,t,n=fetch){return await Qc(e,{"MCP-Protocol-Version":t},n)}function tl(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function nl(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=$c(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await el(o,a,n);return!r?.metadataUrl&&tl(s,i.pathname)&&(s=await el(new URL(`/.well-known/${t}`,i),a,n)),s}function rl(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 il(e,{fetchFn:t=fetch,protocolVersion:n=Le}={}){let r={"MCP-Protocol-Version":n,Accept:`application/json`},i=rl(e);for(let{url:e,type:n}of i){let i=await Qc(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`?sc.parse(await i.json()):cc.parse(await i.json())}}}async function al(e,t){let n,r;try{n=await Zc(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 il(r,{fetchFn:t?.fetchFn});return{authorizationServerUrl:r,authorizationServerMetadata:i,resourceMetadata:n}}async function ol(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(Lc))throw Error(`Incompatible auth server: does not support response type ${Lc}`);if(t.code_challenge_methods_supported&&!t.code_challenge_methods_supported.includes(Rc))throw Error(`Incompatible auth server: does not support code challenge method ${Rc}`)}else s=new URL(`/authorize`,e);let c=await ac(),l=c.code_verifier,u=c.code_challenge;return s.searchParams.set(`response_type`,Lc),s.searchParams.set(`client_id`,n.client_id),s.searchParams.set(`code_challenge`,u),s.searchParams.set(`code_challenge_method`,Rc),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 sl(e,t,n){return new URLSearchParams({grant_type:`authorization_code`,code:e,code_verifier:t,redirect_uri:String(n)})}async function cl(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&&Bc(zc(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 Wc(l);return lc.parse(await l.json())}async function ll(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){return{refresh_token:r,...await cl(e,{metadata:t,tokenRequestParams:new URLSearchParams({grant_type:`refresh_token`,refresh_token:r}),clientInformation:n,addClientAuthentication:a,resource:i,fetchFn:o})}}async function ul(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=sl(i,await e.codeVerifier(),e.redirectUrl)}let c=await e.clientInformation();return cl(t,{metadata:n,tokenRequestParams:s,clientInformation:c??void 0,addClientAuthentication:e.addClientAuthentication,resource:r,fetchFn:a})}async function dl(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 Wc(o);return mc.parse(await o.json())}var fl=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 pl(e){}function ml(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=pl,onError:n=pl,onRetry:r=pl,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=hl(`${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}
|
|
62
62
|
`;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new fl(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new fl(`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(`
|
|
63
63
|
`)?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 hl(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
|
|
64
64
|
`,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]===`
|
|
65
|
-
`&&r++}}return[t,n]}var gl=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=ml({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 _l={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};var vl=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},yl=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=$s(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??_l}async _authThenStart(){if(!this._authProvider)throw new Fc(`No auth provider`);let e;try{e=await Gc(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 Fc;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=Qs(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 vl(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 gl({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=rt.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 Fc(`No auth provider`);if(await Gc(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Fc(`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:Ze(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 vl(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=Yc(o);if(this._resourceMetadataUrl=t,this._scope=n,await Gc(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Fc;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=Yc(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new vl(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await Gc(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new Fc;return this.send(e)}}throw new vl(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Ve(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=>rt.parse(e)):[rt.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new vl(-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 vl(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 bl(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 xl(e){if(e===void 0||e===``)return;let t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t}function Sl(e){return e===`0.0.0.0`||e===`::`?`localhost`:e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}function Cl(e,t){return`http://${Sl(e)}:${t}/mcp`}function wl(e,t){return`ws://${Sl(e)}:${t}`}function Tl(e){let t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=``,t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}function El(e,t){if(!(!e||e.port<=0)&&e.draining!==!0&&t(e.pid))return e.port}function Dl(e){return z(e)?V(e,`utf-8`).trim():``}function Ol(e,t){return`server did not start within ${e}ms${t?` stderr:\n${t}`:``}`}function kl(e){if(e&&typeof e==`object`&&`method`in e&&`id`in e)return e.id}function Al(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 jl(e,t){return{jsonrpc:`2.0`,id:e,error:{code:-32e3,message:t instanceof Error?t.message:String(t)}}}async function Ml(e){let t=e.readLock??(()=>v(e.lockDir)),n=e.isAlive??h,r=e.sleep??(e=>Wn(e)),i=e.spawn??P,a=e.readErrorLog??Dl,o=e.openErrorLog??(e=>Ln(e,`w`)),c=e.closeFd??jn,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 Cl(b,t)}let d=t(),f=El(d,n);if(f!==void 0)return Cl(b,f);if(e.envAutoStart===`0`)throw new Ie(`OpenKnowledge server is not running and OK_MCP_AUTOSTART=0 disables auto-start.`);if(d!==null&&d.draining===!0&&n(d.pid)){let e=Date.now(),i=e+l,a=!0;for(;Date.now()<i;){let e=t();if(e===null||e.draining!==!0||!n(e.pid)){a=!1;break}await r(u)}console.error(`[mcp-shim] waited ${Date.now()-e}ms for a draining predecessor server${a?` (timed out — proceeding anyway)`:``}`);let o=El(t(),n);if(o!==void 0)return Cl(b,o)}z(e.lockDir)||B(e.lockDir,{recursive:!0});let p=L(e.lockDir,s),m=o(p),g,_,y=dn();try{try{g=i(y.command,[...y.prefixArgs,`start`],{detached:!0,stdio:[`ignore`,`ignore`,m],cwd:e.contentDir,env:{...process.env,OK_LOCK_KIND:`mcp-spawned`,ELECTRON_RUN_AS_NODE:`1`}}),g.on(`error`,e=>{_=e instanceof Error?e.message:String(e)}),g.unref()}catch(e){_=e instanceof Error?e.message:String(e)}}finally{try{c(m)}catch{}}let x=Date.now()+l;for(;Date.now()<x;){if(_){let e=a(p),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${_}${t}`)}await r(u);let e=El(t(),n);if(e!==void 0)return Cl(b,e)}if(_){let e=a(p),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${_}${t}`)}throw Error(Ol(l,a(p)))}function Nl(e,t){if(e.portOverride!==void 0)return Tl(t);let n=e.readLock??(()=>v(e.lockDir)),r=e.isAlive??h,i=El(n(),r);if(i!==void 0)return wl(b,i)}async function Pl(e,t={}){let n=t.stderr??process.stderr,r=t.requestTimeoutMs??12e4,i=t.createStdioTransport?t.createStdioTransport(t.stdin,t.stdout):new Ks(t.stdin,t.stdout),a=t.createHttpTransport?t.createHttpTransport(new URL(e)):new yl(new URL(e),{fetch:bl(r),requestInit:{headers:{...w({kind:`mcp`,runtimeVersion:x}),...t.connectionId===void 0?{}:{[me]: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=kl(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(jl(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=Al(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 Fl(e){let t=e.stderr??process.stderr,n=e.bridgeFn??Pl,r=await Ml(e),i=e.createConnectionId?.()??Hn(),a=!1,o=(e.startKeepalive??Hs)({connectionId:i,pid:process.pid,resolveWsUrl:async()=>Nl(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 Il=bn(import.meta.url),Ll=Gn(pn);async function Rl(e){try{let{stdout:t}=await Ll(`git`,[`-C`,e,`worktree`,`list`,`--porcelain`],{timeout:2e3});return t.split(`
|
|
66
|
-
`).filter(e=>e.startsWith(`worktree `)).length}catch{return 0}}function zl(e){let t=R(e);for(;;){if(
|
|
67
|
-
`);let
|
|
68
|
-
`),process.exit(1)},5e3).unref(),
|
|
69
|
-
`),
|
|
65
|
+
`&&r++}}return[t,n]}var gl=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=ml({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 _l={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};var vl=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},yl=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=$s(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??_l}async _authThenStart(){if(!this._authProvider)throw new Fc(`No auth provider`);let e;try{e=await Gc(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 Fc;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=Qs(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 vl(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 gl({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=nt.parse(JSON.parse(e.data));Je(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 Fc(`No auth provider`);if(await Gc(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Fc(`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:Xe(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 vl(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=Yc(o);if(this._resourceMetadataUrl=t,this._scope=n,await Gc(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new Fc;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=Yc(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new vl(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await Gc(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new Fc;return this.send(e)}}throw new vl(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),Be(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=>nt.parse(e)):[nt.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new vl(-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 vl(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 bl(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 xl(e){if(e===void 0||e===``)return;let t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t}function Sl(e){return e===`0.0.0.0`||e===`::`?`localhost`:e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}function Cl(e,t){return`http://${Sl(e)}:${t}/mcp`}function wl(e,t){return`ws://${Sl(e)}:${t}`}function Tl(e){let t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=``,t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}function El(e,t){if(!(!e||e.port<=0)&&e.draining!==!0&&t(e.pid))return e.port}function Dl(e){return z(e)?V(e,`utf-8`).trim():``}function Ol(e,t){return`server did not start within ${e}ms${t?` stderr:\n${t}`:``}`}function kl(e){if(e&&typeof e==`object`&&`method`in e&&`id`in e)return e.id}function Al(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 jl(e,t){return{jsonrpc:`2.0`,id:e,error:{code:-32e3,message:t instanceof Error?t.message:String(t)}}}async function Ml(e){let t=e.readLock??(()=>_(e.lockDir)),n=e.isAlive??m,r=e.sleep??(e=>Wn(e)),i=e.spawn??hn,a=e.readErrorLog??Dl,s=e.openErrorLog??(e=>Ln(e,`w`)),c=e.closeFd??jn,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 Cl(x,t)}let d=t(),f=El(d,n);if(f!==void 0)return Cl(x,f);if(e.envAutoStart===`0`)throw new Fe(`OpenKnowledge server is not running and OK_MCP_AUTOSTART=0 disables auto-start.`);if(d!==null&&d.draining===!0&&n(d.pid)){let e=Date.now(),i=e+l,a=!0;for(;Date.now()<i;){let e=t();if(e===null||e.draining!==!0||!n(e.pid)){a=!1;break}await r(u)}console.error(`[mcp-shim] waited ${Date.now()-e}ms for a draining predecessor server${a?` (timed out — proceeding anyway)`:``}`);let o=El(t(),n);if(o!==void 0)return Cl(x,o)}z(e.lockDir)||B(e.lockDir,{recursive:!0});let p=L(e.lockDir,o),h=s(p),g,v,y=un();try{try{g=i(y.command,[...y.prefixArgs,`start`],{detached:!0,stdio:[`ignore`,`ignore`,h],cwd:e.contentDir,env:{...process.env,OK_LOCK_KIND:`mcp-spawned`,ELECTRON_RUN_AS_NODE:`1`}}),g.on(`error`,e=>{v=e instanceof Error?e.message:String(e)}),g.unref()}catch(e){v=e instanceof Error?e.message:String(e)}}finally{try{c(h)}catch{}}let b=Date.now()+l;for(;Date.now()<b;){if(v){let e=a(p),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${v}${t}`)}await r(u);let e=El(t(),n);if(e!==void 0)return Cl(x,e)}if(v){let e=a(p),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${v}${t}`)}throw Error(Ol(l,a(p)))}function Nl(e,t){if(e.portOverride!==void 0)return Tl(t);let n=e.readLock??(()=>_(e.lockDir)),r=e.isAlive??m,i=El(n(),r);if(i!==void 0)return wl(x,i)}async function Pl(e,t={}){let n=t.stderr??process.stderr,r=t.requestTimeoutMs??12e4,i=t.createStdioTransport?t.createStdioTransport(t.stdin,t.stdout):new Ks(t.stdin,t.stdout),a=t.createHttpTransport?t.createHttpTransport(new URL(e)):new yl(new URL(e),{fetch:bl(r),requestInit:{headers:{...T({kind:`mcp`,runtimeVersion:S}),...t.connectionId===void 0?{}:{[pe]: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=kl(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(jl(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=Al(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 Fl(e){let t=e.stderr??process.stderr,n=e.bridgeFn??Pl,r=await Ml(e),i=e.createConnectionId?.()??Hn(),a=!1,o=(e.startKeepalive??Hs)({connectionId:i,pid:process.pid,resolveWsUrl:async()=>Nl(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 Il=bn(import.meta.url),Ll=Gn(fn);async function Rl(e){try{let{stdout:t}=await Ll(`git`,[`-C`,e,`worktree`,`list`,`--porcelain`],{timeout:2e3});return t.split(`
|
|
66
|
+
`).filter(e=>e.startsWith(`worktree `)).length}catch{return 0}}function zl(e){let t=R(e);for(;;){if(Ie(t))return t;let n=I(t);if(n===t)throw Error(`No OpenKnowledge project found at or above ${e}. Pass an explicit \`cwd\` argument that points inside an OK project (a directory with a \`${l}\`).`);t=n}}function Bl(e){try{let t=new URL(e);return t.protocol===`file:`?bn(t):void 0}catch{return}}async function Vl(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=Bl(n[0].uri);return r===void 0&&e.log?.(`single root URI not usable as fs path: ${n[0].uri}`),r}async function Hl(e,t,n,r=zl){if(e!==void 0){let t=r(e);return{projectDir:t,viaRootGuess:!1,nextSticky:t}}if(t!==void 0){let e=r(t);return{projectDir:e,viaRootGuess:!1,nextSticky:e}}let i=await n();return i===void 0?{projectDir:void 0,viaRootGuess:!1,nextSticky:void 0}:{projectDir:r(i),viaRootGuess:!0,nextSticky:void 0}}async function Ul(e){let t=process.stderr,n=e.spawnTimeoutMs??xl(process.env.OK_MCP_SPAWN_TIMEOUT_MS),r=e.envAutoStart??process.env.OK_MCP_AUTOSTART,i=nn({startupCwd:e.startupCwd,startupConfig:e.startupConfig}),a=new Ge({name:f,version:S});Se(a);let o=Hn(),s={current:{connectionId:o,displayName:o,colorSeed:o}},c=new Map,l=e=>{if(c.has(e))return;let n=he(e),r=s.current,i=Hs({connectionId:o,pid:process.pid,displayName:r.displayName,clientName:r.clientInfo?.name??r.displayName,colorSeed:r.colorSeed,resolveWsUrl:async()=>Nl({lockDir:n,contentDir:e},``),log:n=>t.write(`[mcp] keepalive[${e}]: ${n}\n`)});c.set(e,i)},u=()=>Vl({getClientCapabilities:()=>a.server.getClientCapabilities(),listRoots:()=>a.server.listRoots(),log:e=>t.write(`[mcp] ${e}\n`)}),d,p=!1,m=async e=>{if(p)return;p=!0;let n=await Rl(e);if(n<=1){p=!1;return}let r=`Routed to ${e} from the MCP client's single advertised root, but this repo has ${n} git worktrees. If you are working in a worktree, pass its path as \`cwd\` on OK tool calls once — it sticks for the session, so reads, writes, and the preview all target that worktree instead of this checkout.`;try{t.write(`[mcp] ${r}\n`),await a.server.sendLoggingMessage({level:`warning`,data:r})}catch{}},h=async e=>{let t=await Hl(e,d,u);if(d=t.nextSticky??d,t.projectDir===void 0)throw Error("`cwd` is required for tool calls against the global MCP server. Pass an absolute path inside an OpenKnowledge project, or have the MCP client advertise a single root.");return t.viaRootGuess&&m(t.projectDir),t.projectDir},g=async e=>{let t=await Hl(e,d,u);if(d=t.nextSticky??d,t.projectDir===void 0)return;t.viaRootGuess&&m(t.projectDir);let a=t.projectDir,o=await i(a),s=await Ml({lockDir:he(a),contentDir:tt(o,a),envAutoStart:r,...n===void 0?{}:{timeoutMs:n}});return l(a),s.replace(/\/mcp$/,``)};a.server.oninitialized=()=>{let e=a.server.getClientVersion(),t=Ne(e?.name,o);s.current={connectionId:o,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}},Ce(a,{serverUrl:g,resolveCwd:h,config:i,identityRef:s,isDesktopTerminal:process.env.OK_DESKTOP_TERMINAL===`1`});let _=new Ks,v=!1,y,b,x=async()=>{if(v)return;v=!0,y?.stop(),b?.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(),_.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(_),t.write(`[mcp] global stdio server ready (per-call project routing)
|
|
67
|
+
`);let C=!1,w=()=>{C||(C=!0,setTimeout(()=>{t.write(`[mcp] shutdown deadline (5s) reached — forcing exit(1)
|
|
68
|
+
`),process.exit(1)},5e3).unref(),x().finally(()=>{process.exit(0)}))};if(process.once(`SIGINT`,w),process.once(`SIGTERM`,w),process.stdin.on(`end`,()=>{t.write(`[mcp] stdin end — host disconnected, shutting down
|
|
69
|
+
`),w()}),process.stdin.on(`error`,e=>{t.write(`[mcp] stdin error (${e instanceof Error?e.message:String(e)}) — host disconnected, shutting down\n`),w()}),b=Xs({getPpid:()=>process.ppid,onHostGone:e=>{t.write(`[mcp] ${e} — shutting down\n`),w()}}),Zs({log:e=>t.write(`${e}\n`),transport:_,process,stdin:process.stdin}),process.platform===`darwin`){let e=Ys(Il,{realpathSync:zn,statInoSync:e=>U(e).ino,log:e=>t.write(`${e}\n`)});if(e!==void 0){t.write(`[mcp] bundle identity anchor=${e.resolvedPath} inode=${e.inode} version=${S}\n`);let{resolvedPath:n,inode:r}=e;y=Js({detect:()=>qs({bundleAnchorPath:Il,currentInode:r,platform:process.platform,realpath:zn,statInode:e=>U(e).ino}),onReplaced:e=>{t.write(`[mcp] bundle replaced anchor=${n} bootInode=${e.currentInode} onDiskInode=${e.onDiskInode} version=${S} — exiting for host respawn\n`),w()},log:e=>t.write(`[mcp] ${e}\n`)})}}return{close:x}}function Wl(e){return new O(`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=xl(process.env.OK_MCP_SPAWN_TIMEOUT_MS);await Fl({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=zs(process.env,i,process.platform);if(a.proxy){let e=Rs(process.platform,Cn(),{existsSync:z});if(e===null)Bs({stderr:process.stderr,mode:`fallback-absent`,bundlePath:null,reason:`no installed OpenKnowledge.app bundle found`});else try{await Vs({bundlePath:e,argv:process.argv.slice(2),env:process.env,stderr:process.stderr});return}catch(t){Bs({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`;Bs({stderr:process.stderr,mode:e,bundlePath:null,reason:null})}await Ul({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}})}const Gl=/<aside>\s*([\s\S]*?)\s*<\/aside>/g,Kl=/^(?:\p{Extended_Pictographic}️?\s*)+/u;function ql(e){return e.replace(Gl,(e,t)=>{let n=t.replace(/\r\n/g,`
|
|
70
70
|
`).split(`
|
|
71
71
|
`);for(;n.length>0&&n[0].trim()===``;)n.shift();for(;n.length>0&&n[n.length-1].trim()===``;)n.pop();if(n.length>0)for(n[0]=n[0].replace(Kl,``);n.length>0&&n[0].trim()===``;)n.shift();let r=n.map(e=>e.trim()===``?`>`:`> ${e}`).join(`
|
|
72
72
|
`);return r?`> [!note]\n${r}`:`> [!note]`})}const Jl=/(!?)\[([^\]]*)\]\(data:image\/([a-z0-9.+-]+);base64,([A-Za-z0-9+/=\s]+?)\)/gi,Yl={png:`png`,jpeg:`jpg`,jpg:`jpg`,gif:`gif`,webp:`webp`,"svg+xml":`svg`};function Xl(e){return e.replace(/\.(md|mdx)$/i,``).replace(/[^A-Za-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).toLowerCase()||`inline`}function Zl(e,t,n={}){let r=[],i=Xl(t),a=0;return{markdown:e.replace(Jl,(e,t,o,s,c)=>{if(n.strip)return``;a+=1;let l=Yl[s.toLowerCase()]??s.toLowerCase().replace(/[^a-z0-9]/g,``),u=`${i}-inline-${a}.${l}`,d=new Uint8Array(Buffer.from(c.replace(/\s+/g,``),`base64`));return r.push({filename:u,bytes:d}),``}),assets:r}}function Ql(e){let t=e.charCodeAt(0)===65279?e.slice(1):e,n=[],r=``,i=[],a=!1,o=!1,s=()=>{i.push(r),r=``},c=()=>{s(),n.push(i),i=[],o=!1};for(let e=0;e<t.length;e++){let n=t[e];if(a){n===`"`?t[e+1]===`"`?(r+=`"`,e++):a=!1:r+=n,o=!0;continue}n===`"`?(a=!0,o=!0):n===`,`?(s(),o=!0):n===`
|
|
@@ -78,24 +78,24 @@ project → Search (a toggle with an egress-confirmation prompt), or run
|
|
|
78
78
|
`).replace(/\n+$/,``);return e.endsWith(`
|
|
79
79
|
`)?`${c}\n`:c}function Du(e){return e.replace(/\r\n|\r|\n/g,`<br>`).replace(/\|/g,`\\|`)}function Ou(e){return/\s/.test(e)?`<${e}>`:e}function ku(e,t={}){let{header:n,rows:r}=Ql(e),i=n.length;if(i===0)return{table:``,columns:0,wide:!1};let a=t.wideThreshold??15,o=t.titleColumn??0;return{table:[`| ${n.map(Du).join(` | `)} |`,`| ${n.map(()=>`---`).join(` | `)} |`,...r.map(e=>`| ${n.map((n,r)=>{let i=e[r]??``,a=Du(i);if(r===o&&t.linkForTitle&&i.trim()!==``){let e=t.linkForTitle(i);if(e)return`[${a}](${Ou(e)})`}return a}).join(` | `)} |`)].join(`
|
|
80
80
|
`),columns:i,wide:i>a}}function Au(e,t){let n=e.match(/^#\s+(.+)$/m);return n?n[1].trim():t}function ju(e,t){return`# ${e}\n\n${t}\n`}const Mu=[`links`,`frontmatter`,`callouts`,`images`,`tables`],Nu=/\.mdx?$/i;function Pu(e){return{isNotionExport:e,transforms:{links:0,frontmatter:0,callouts:0,images:0,tables:0},assetsExtracted:0,stubsCreated:0,csvsRemoved:0,wideTables:[],ambiguousTitleLinks:0,unreadable:[],filesChanged:0}}function Fu(e,t={}){let n=t.selected??new Set(Mu),r=yu(e);if(!r&&!t.force)return{changes:[],assets:[],deletions:[],report:Pu(!1)};let i=Pu(r),a=gu(e),o=su(a,{onUnreadable:e=>i.unreadable.push(e)}),s=n.has(`tables`),c=new Map,l=new Set;for(let e of o){e.stubPath&&l.add(e.stubPath);for(let t of e.rowFiles)c.set(t,e)}let u=[],d=[],f=[];for(let e of a){if(!Nu.test(e)||s&&l.has(e))continue;let r;try{r=V(e,`utf8`)}catch{i.unreadable.push(e);continue}let a=r,o=(e,t)=>{a!==t&&(i.transforms[e]+=1)};if(n.has(`images`)){let n=a,r=Zl(a,F(e),{strip:t.stripBase64});a=r.markdown;for(let t of r.assets)d.push({path:L(I(e),t.filename),bytes:t.bytes});i.assetsExtracted+=r.assets.length,o(`images`,n)}if(n.has(`callouts`)){let e=a;a=ql(a),o(`callouts`,e)}if(n.has(`frontmatter`)){let t=c.get(e);if(t){let e=a;a=Eu(a,t.propertyKeys),o(`frontmatter`,e)}}if(n.has(`links`)){let e=a;a=hu(a,{redirectCsv:s}),o(`links`,e)}a!==r&&u.push({path:e,content:a})}if(s)for(let e of o){let r=ku(e.csvText,{linkForTitle:t=>{let n=iu(e.folderIndex,t);return n.ambiguous&&(i.ambiguousTitleLinks+=1),n.path?_n(I(e.stubTargetPath),n.path):null}});if(r.columns===0)continue;let a=e.stubPath??e.stubTargetPath,o=null;if(e.stubPath)try{o=V(e.stubPath,`utf8`)}catch{i.unreadable.push(e.stubPath);continue}let c=ju(o===null?e.fallbackTitle:Au(o,e.fallbackTitle),r.table);n.has(`links`)&&(c=hu(c,{redirectCsv:s})),r.wide&&i.wideTables.push(a),o===null?(u.push({path:a,content:c}),i.stubsCreated+=1,i.transforms.tables+=1):c!==o&&(u.push({path:a,content:c}),i.transforms.tables+=1),t.removeCsv&&(f.push(e.csvPath),i.csvsRemoved+=1)}return i.filesChanged=new Set(u.map(e=>e.path)).size,{changes:u,assets:d,deletions:f,report:i}}function Iu(e){for(let t of e.assets)B(I(t.path),{recursive:!0}),W(t.path,t.bytes);for(let t of e.changes)B(I(t.path),{recursive:!0}),W(t.path,t.content,`utf8`);for(let t of e.deletions)try{Bn(t)}catch(e){if(e.code!==`ENOENT`)throw e}}const Lu={images:`Inline base64 images extracted`,callouts:`Notion <aside> callouts converted`,frontmatter:`Row properties lifted to frontmatter`,tables:`Databases rendered as tables`,links:`Internal links decoded`},Ru=[`images`,`callouts`,`frontmatter`,`tables`,`links`];function zu(e,t){let n=[];n.push(t.applied?`Applied Notion cleanup in ${t.dir}`:`Dry run — no changes written (${t.dir})`);for(let t of Ru)n.push(` ${Lu[t]}: ${e.transforms[t]}`);return n.push(` Assets written: ${e.assetsExtracted}`),e.stubsCreated>0&&n.push(` Database pages created (CSVs without a stub): ${e.stubsCreated}`),e.csvsRemoved>0&&n.push(` CSV files removed: ${e.csvsRemoved}`),n.push(` Files changed: ${e.filesChanged}`),e.ambiguousTitleLinks>0&&n.push(` Ambiguous title links left as plain text: ${e.ambiguousTitleLinks}`),e.wideTables.length>0&&n.push(` Wide tables (>15 columns): ${e.wideTables.length}`),e.unreadable.length>0&&n.push(` Skipped unreadable files: ${e.unreadable.length}`),!t.applied&&e.filesChanged+e.assetsExtracted+e.csvsRemoved>0&&(n.push(``),n.push(`Re-run with --apply to write these changes.`)),n.join(`
|
|
81
|
-
`)}function Bu(e,t){return JSON.stringify({applied:t.applied,...e},null,2)}function Vu(e){let t=new Set(Mu);return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0).map(e=>{if(!t.has(e))throw Error(`Unknown transform "${e}". Valid transforms: ${Mu.join(`, `)}`);return e})}function Hu(e,t){let n=new Set(Mu);if(e&&(n=new Set(Vu(e))),t)for(let e of Vu(t))n.delete(e);return n}function Uu(){let e=new
|
|
82
|
-
`)),Qu(e.json,{type:`complete`,op:r}),e.json||process.stderr.write(`✓ ${r} complete\n`)}function ed(e){return new
|
|
83
|
-
`),plan:r,exitCode:1}}let a=
|
|
84
|
-
`)}function od(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(
|
|
85
|
-
`)}async function sd(e,t){let n=Kn({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 cd(){return new
|
|
81
|
+
`)}function Bu(e,t){return JSON.stringify({applied:t.applied,...e},null,2)}function Vu(e){let t=new Set(Mu);return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0).map(e=>{if(!t.has(e))throw Error(`Unknown transform "${e}". Valid transforms: ${Mu.join(`, `)}`);return e})}function Hu(e,t){let n=new Set(Mu);if(e&&(n=new Set(Vu(e))),t)for(let e of Vu(t))n.delete(e);return n}function Uu(){let e=new O(`migrate`).description(`Migrate content from other tools into Open Knowledge`);return e.command(`notion [dir]`).description(`Clean up a Notion "Markdown & CSV" export in place (dry-run unless --apply)`).option(`--apply`,`write changes to disk (default: dry-run preview)`).option(`--strip-base64`,`delete inline base64 images instead of extracting them to files`).option(`--remove-csv`,`delete each "_all.csv" once its table page exists (destructive)`).option(`--only <transforms>`,`run only these transforms (comma-separated: links,frontmatter,callouts,images,tables)`).option(`--skip <transforms>`,`skip these transforms (comma-separated)`).option(`--force`,`run even if the directory is not detected as a Notion export`).option(`--json`,`print a machine-readable JSON report`).action((e,t)=>{let n=R(e??process.cwd()),r;try{r=Hu(t.only,t.skip)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let i=Fu(n,{selected:r,stripBase64:t.stripBase64??!1,removeCsv:t.removeCsv??!1,force:t.force??!1}),{report:a}=i;if(!a.isNotionExport&&!t.force){t.json?console.log(JSON.stringify({refused:!0,reason:`not-a-notion-export`,dir:n},null,2)):console.error(`Not a Notion export: ${n}\nNo id-suffixed pages, "_all.csv", or inline base64 images were found. Re-run with --force to override.`),process.exitCode=2;return}if(t.apply)try{Iu(i)}catch(e){console.error(`Failed to apply changes: ${e instanceof Error?e.message:String(e)}`),process.exitCode=4;return}console.log(t.json?Bu(a,{applied:t.apply??!1}):zu(a,{applied:t.apply??!1,dir:n})),a.filesChanged===0&&a.assetsExtracted===0&&i.deletions.length===0?process.exitCode=1:t.apply&&(a.ambiguousTitleLinks>0||a.wideTables.length>0)&&(process.exitCode=3)}),e}function Wu(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function Gu(e=()=>an(on())){return{detectBundlePath:()=>e().bundlePath??null,resolveBaseUrl:e=>$e({lockDir:D(e)}).baseUrl,classifyName:(e,t)=>{let n=L(e,t);try{return U(n).isDirectory()?`folder`:`doc`}catch(e){let t=e?.code;return t!==`ENOENT`&&t!==`ENOTDIR`&&process.stderr.write(`[ok open] statSync failed for ${n} (${t??`unknown`}); treating as a doc\n`),`doc`}},openTarget:e=>{hn(`open`,[e],{detached:!0,stdio:`ignore`,env:Wu(process.env)}).unref()},log:e=>process.stdout.write(`${e}\n`),error:e=>process.stderr.write(`${e}\n`)}}function Ku(e){return e.startsWith(`/`)||e.includes(`\\`)||e.split(`/`).includes(`..`)}function qu(e){return e.error("No OpenKnowledge desktop app found and no UI is running. Install OK Desktop, or start a UI with `ok ui`, then retry."),1}function Ju(e,t,n,r){let i=`openknowledge://open?project=${encodeURIComponent(e)}&${t}=${encodeURIComponent(n)}`;r.openTarget(i)}function Yu(e,t,n){let r=R(t.project??process.cwd()),i=e.replace(/\/+$/,``);if(!i)return n.error("Nothing to open: pass a doc, folder, or skill name (e.g. `ok open specs/foo/SPEC`)."),1;if(Ku(i))return n.error(`Invalid name "${i}": must be a relative path with no '..' segments, leading '/', or backslashes.`),1;if(t.skill===!0){let e=t.scope??`project`;if(!v.includes(e))return n.error(`Invalid --scope "${t.scope}": expected one of ${v.join(`, `)}.`),1;if(n.detectBundlePath())return Ju(r,`doc`,`__skill__/${e}/${i}`,n),n.log(`Opening skill ${i} (${e}) in the OpenKnowledge desktop app.`),0;let a=n.resolveBaseUrl(r);if(a){let t=`${a}/#/${De(e,i)}`;return n.openTarget(t),n.log(`Opening skill ${i} (${e}) in your browser: ${t}`),0}return qu(n)}let a=/\/+$/.test(e)||n.classifyName(r,i)===`folder`,o=n.detectBundlePath();if(a){if(o)return Ju(r,`folder`,i,n),n.log(`Opening folder ${i} in the OpenKnowledge desktop app.`),0;let e=n.resolveBaseUrl(r);if(e){let t=`${e}/#/${Ve(i)}`;return n.openTarget(t),n.log(`Opening folder ${i} in your browser: ${t}`),0}return qu(n)}if(o)return Ju(r,`doc`,i,n),n.log(`Opening ${i} in the OpenKnowledge desktop app.`),0;let s=n.resolveBaseUrl(r);if(s){let e=`${s}/#/${Ue(i)}`;return n.openTarget(e),n.log(`Opening ${i} in your browser: ${e}`),0}return qu(n)}function Xu(){return new O(`open`).description(`Open a doc, folder, or skill in the OK Desktop app (falls back to the browser UI). Docs and folders are auto-detected — no flag needed.`).argument(`<name>`,`Doc path (specs/foo/SPEC), folder path (specs/foo or specs/foo/), or a skill name with --skill`).option(`--skill`,`Open <name> as a skill in the skill editor`).option(`--scope <scope>`,`Skill scope when --skill is set: ${v.join(` | `)}`,`project`).option(`--project <dir>`,`Project root (defaults to the current directory)`).action((e,t)=>{process.exitCode=Yu(e,t,Gu())})}function Zu(e){return new O(`preview`).description(`Show what content the watcher will track (read-only)`).action(async()=>{let{previewContent:t,formatPreviewBlock:n}=await import(`./preview-D6u_pKXX.mjs`),r=e(),i=process.cwd(),a=tt(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 Qu(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function $u(e,t,n=process.cwd()){let r=e.op??`sync`,i=_(D(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`,...T({kind:`cli`,runtimeVersion:S})},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}`)}Qu(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=ne({baseDir:n});if(r===`sync`||r===`pull`){Qu(e.json,{type:`step`,step:`pull`});let t=await a.pull();Qu(e.json,{type:`pull`,summary:t.summary}),e.json||process.stderr.write(` pull: ${t.summary.changes} changes\n`)}(r===`sync`||r===`push`)&&(Qu(e.json,{type:`step`,step:`push`}),await a.push(),Qu(e.json,{type:`push`,ok:!0}),e.json||process.stderr.write(` push: ok
|
|
82
|
+
`)),Qu(e.json,{type:`complete`,op:r}),e.json||process.stderr.write(`✓ ${r} complete\n`)}function ed(e){return new O(`sync`).description(`Commit, pull, and push to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await $u({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 td(e){return new O(`pull`).description(`Pull changes from the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await $u({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 nd(e){return new O(`push`).description(`Push commits to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await $u({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 rd(e){return typeof e==`string`&&ze.includes(e)}async function id(e={}){let t=R(e.cwd??process.cwd()),n=e.pack??`knowledge-base`;if(!re[n])return{status:`failed`,message:`${M(`Error:`)} Unknown pack "${n}". Available: ${ze.join(`, `)}`,exitCode:1};let r;try{r=await ae({projectDir:t,rootDir:e.root,packId:n,skipPrerequisite:e.dryRun===!0})}catch(e){return e instanceof Qe?{status:`prerequisite-missing`,message:`${M(`Error:`)} ${e.message}`,exitCode:1}:{status:`failed`,message:`${M(`Error:`)} ${e instanceof Error?e.message:String(e)}`,exitCode:1}}if(r.created.length===0){let e=re[n].name;return{status:`no-op`,message:`${j(`Your ${e} pack is already seeded.`)}\n${A(`Nothing to do.`)}`,plan:r,exitCode:0}}if(e.dryRun){let e=ie(re[n]);return{status:`dry-run`,message:`${P(`Reference this pack for inspiration (dry-run — no changes made):`)}\n\n${e}\n\n${P(`Plan:`)}\n\n${od(r,t)}`,plan:r,exitCode:0}}if(!e.yes&&!await sd(`${P(`Plan:`)}\n\n${od(r,t)}\n\n${P(`Apply?`)} ${A(`[Y/n] `)}`,e.confirmStream))return{status:`cancelled`,message:A(`Cancelled.`),plan:r,exitCode:0};let i=await Oe(r,{projectDir:t,packId:n});if(i.errors.length>0){let e=i.errors.map(e=>` ${M(`✗`)} ${e.path}: ${e.error}`);return{status:`failed`,message:[`${N(`Applied`)} ${i.applied} entries, ${N(String(i.errors.length))} error(s):`,...e].join(`
|
|
83
|
+
`),plan:r,exitCode:1}}let a=re[n].name,o=i.packSkillsInstalled.length>0?`\n${A(`Installed the ${a} skill for: ${i.packSkillsInstalled.join(`, `)}`)}`:``;return{status:`applied`,message:`${j(`✓ Seeded ${a}`)} ${A(`(${i.applied} entries, ${i.durationMs}ms)`)}${o}`,plan:r,exitCode:0}}function ad(){let e=[P(`Available packs:`)];for(let t of ze){let n=re[t];e.push(` ${j(t)} ${A(`—`)} ${n.name}: ${n.description}`)}return e.join(`
|
|
84
|
+
`)}function od(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(P(`Folders to create:`));for(let e of r)n.push(` ${j(`+`)} ${k(_n(t,R(t,e.path))||e.path)}${A(`/`)}`)}if(i.length>0){n.length>0&&n.push(``),n.push(P(`Files to create:`));for(let e of i)n.push(` ${j(`+`)} ${k(_n(t,R(t,e.path))||e.path)}`)}if(e.skipped.length>0){n.length>0&&n.push(``),n.push(A(`Already present (skipped):`));for(let t of e.skipped)n.push(` ${A(`· ${t.path} (${t.reason})`)}`)}if(e.warnings.length>0){n.length>0&&n.push(``),n.push(N(`Warnings:`));for(let t of e.warnings)n.push(` ${N(`!`)} ${t}`)}return n.join(`
|
|
85
|
+
`)}async function sd(e,t){let n=Kn({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 cd(){return new O(`seed`).description(`Scaffold a starter pack into the project. Defaults to "${je}" — 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: ${ze.join(`, `)}. Defaults to "${je}".`).option(`-r, --root <path>`,`Subfolder (relative to the project dir) to scaffold into — created if missing. Defaults to the project root.`).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(`${ad()}\n`);return}if(t.pack!==void 0&&!rd(t.pack)){process.stderr.write(`${M(`Error:`)} Unknown pack "${t.pack}". Available: ${ze.join(`, `)}\n`),process.exitCode=1;return}let n=await id({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 ld(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 ud(e,t){let{host:n,owner:r,name:i,json:a}=e;G(n);let o=await _i(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 ld(new mi({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
|
|
86
86
|
`:`taken
|
|
87
|
-
`);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 dd(e){return new
|
|
88
|
-
`)??``}\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 gd(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 _d(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 vd(e,t){return(await e.users.getAuthenticated()).data.login.toLowerCase()===t.toLowerCase()?`user`:`org`}function yd(e){return
|
|
89
|
-
`),process.exit(1)),await wd(t,await e())})}function Ed(){let e=new
|
|
90
|
-
`)}\n`)})}function Ad(e){switch(e){case`shared`:return
|
|
91
|
-
`),a(m)),await new Promise(()=>{})}function Wd(){let e=new
|
|
92
|
-
`)}function tf(e){return R(e,`..`,`..`)}function nf(e){return z(L(e,`.ok`))}async function rf(e){let t=e.findRoot??
|
|
87
|
+
`);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 dd(e){return new O(`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 ud(t,await e())})}async function fd(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 pd(e,t){let{host:n,json:r}=e;G(n);let i=await _i(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 fd(new mi({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 md(e){return new O(`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 pd(t,await e())})}function hd(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(`
|
|
88
|
+
`)??``}\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 gd(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 _d(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 vd(e,t){return(await e.users.getAuthenticated()).data.login.toLowerCase()===t.toLowerCase()?`user`:`org`}function yd(e){return ne({baseDir:e,unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`})}function bd(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 xd={ensureOkScaffold:e=>{le(e)},gitFactory:yd};async function Sd(e){let t={...xd,...e.deps},n=R(e.projectDir),r;if(e.ownerKind)r=e.ownerKind;else try{r=await vd(e.octokit,e.body.owner)}catch(e){return{kind:`error`,code:hd(e)}}try{t.ensureOkScaffold(n)}catch{return{kind:`error`,code:`init-failed`}}let i=t.gitFactory(n);if(!z(L(n,`.git`)))try{await i.init()}catch{return{kind:`error`,code:`init-failed`}}let a;try{a=await gd({octokit:e.octokit,ownerLogin:e.body.owner,ownerKind:r,name:e.body.name,visibility:e.body.visibility,description:e.body.description})}catch(t){if(hd(t)===`name-conflict`){let t=await _d(e.octokit,e.body.owner,e.body.name);if(t===null)return{kind:`error`,code:`name-conflict`};a=t}else return{kind:`error`,code:hd(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=bd(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 Cd(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 wd(e,t){let{host:n,owner:r,name:i,visibility:a,description:o,projectDir:s,json:c}=e;G(n);let l=await _i(n,t);if(l==null){Cd(c,{kind:`error`,code:`auth-required`});return}let u=n===`github.com`?void 0:`https://${n}/api/v3`,d=new mi({auth:l,...u?{baseUrl:u}:{}});try{mn(`git config user.email`,{cwd:s,stdio:`ignore`})}catch{process.env.GIT_AUTHOR_NAME??=`OpenKnowledge`,process.env.GIT_AUTHOR_EMAIL??=`noreply@inkeep.com`,process.env.GIT_COMMITTER_NAME??=`OpenKnowledge`,process.env.GIT_COMMITTER_EMAIL??=`noreply@inkeep.com`}Cd(c,await Sd({octokit:d,token:l,projectDir:s,body:{owner:r,name:i,visibility:a,description:o}}))}function Td(e){return new O(`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'
|
|
89
|
+
`),process.exit(1)),await wd(t,await e())})}function Ed(){let e=new O(`share`);e.description(`Sharing flow operations (owners, name-check, publish)`);let t=()=>dt();return e.addCommand(md(t)),e.addCommand(dd(t)),e.addCommand(Td(t)),e}function Dd(){return new O(`share`).description(`Switch this project to shared mode (commit OK config alongside content)`).option(`--project <dir>`,`Project root (defaults to cwd)`).option(`--json`,`Output JSON`,!1).action(async e=>{let t=R(e.project??process.cwd()),n=kt(t),r=xt(t,Ft(t));if(r.kind===`no-exclude`){Od(e.json,t,r.reason);return}let i=kt(t);if(e.json){let e={type:`sharing-share`,projectRoot:t,mode:i,removed:r.removed};process.stdout.write(`${JSON.stringify(e)}\n`);return}if(n===`shared`){process.stderr.write(`${k(`Sharing mode is already`)} ${P(`shared`)} ${k(`— nothing to do.`)}\n`);return}process.stderr.write(`${j(`✓`)} ${P(`Sharing mode set to`)} ${j(`shared`)}\n`),process.stderr.write(` Removed OK paths from ${P(`.git/info/exclude`)}; commit the files to share with teammates.\n`)})}function Od(e,t,n){if(e){process.stdout.write(`${JSON.stringify({type:`sharing-share`,projectRoot:t,mode:`no-git`,removed:[],reason:n})}\n`);return}process.stderr.write(`${N({"no-git":`No git repository here — sharing mode does not apply.`,"no-info-dir":`The gitdir's info/ folder is absent; cannot toggle sharing mode.`,"malformed-pointer":"The .git pointer file is malformed (stale worktree). Run `git worktree prune` and try again.",inaccessible:`The .git path is inaccessible (permissions or mount issue).`}[n])}\n`)}function kd(){return new O(`status`).description(`Print the current sharing mode and the OK paths in .git/info/exclude`).option(`--project <dir>`,`Project root (defaults to cwd)`).option(`--json`,`Output JSON`,!1).action(async e=>{let t=R(e.project??process.cwd()),n=kt(t),r=[...Dt(t)],i=_t(t,Ft(t)).tracked;if(e.json){let e={type:`sharing-status`,projectRoot:t,mode:n,excluded:r,trackedUpstream:i};process.stdout.write(`${JSON.stringify(e)}\n`);return}let a=[];if(a.push(`OpenKnowledge sharing mode: ${Ad(n)}`),a.push(``),a.push(`Excluded from git via ${P(`.git/info/exclude`)}:`),r.length===0)a.push(` (none)`);else for(let e of r)a.push(` ${e}`);if(a.push(``),a.push(`Other OK paths exist but are tracked upstream:`),i.length===0)a.push(` (none)`);else for(let e of i)a.push(` ${e}`);a.push(``),a.push(`Toggle with: ${k(n===`local-only`?`ok config-sharing share`:`ok config-sharing unshare`)}`),process.stdout.write(`${a.join(`
|
|
90
|
+
`)}\n`)})}function Ad(e){switch(e){case`shared`:return j(`shared`);case`local-only`:return j(`local-only`);case`no-git`:return N(`no-git (not a git repository)`)}}function jd(){return new O(`unshare`).description(`Switch this project to local-only mode (add OK artifacts to .git/info/exclude so they stay out of git)`).option(`--project <dir>`,`Project root (defaults to cwd)`).option(`--json`,`Output JSON`,!1).action(async e=>{let t=R(e.project??process.cwd()),n=St(t,Ft(t));if(n.kind===`refused-tracked`){if(e.json){let e={type:`sharing-unshare`,projectRoot:t,mode:`refused-tracked`,tracked:n.tracked,remediation:n.remediation};process.stdout.write(`${JSON.stringify(e)}\n`)}else process.stderr.write(`${n.remediation}\n`);process.exitCode=1;return}if(n.kind===`no-exclude`){Md(e.json,t,n.reason);return}let r=kt(t);if(e.json){let e={type:`sharing-unshare`,projectRoot:t,mode:r,appended:n.appended,alreadyPresent:n.alreadyPresent};process.stdout.write(`${JSON.stringify(e)}\n`);return}if(n.appended.length===0){process.stderr.write(`${P(`Sharing mode is already`)} ${j(`local-only`)} ${P(`— nothing to do.`)}\n`);return}process.stderr.write(`${j(`✓`)} ${P(`Sharing mode set to`)} ${j(`local-only`)}\n`),process.stderr.write(` Added ${n.appended.length} path(s) to ${P(`.git/info/exclude`)} (per-clone, not committed).\n`)})}function Md(e,t,n){if(e){process.stdout.write(`${JSON.stringify({type:`sharing-unshare`,projectRoot:t,mode:`no-git`,appended:[],alreadyPresent:[],reason:n})}\n`);return}process.stderr.write(`${N({"no-git":`No git repository here — sharing mode does not apply.`,"no-info-dir":`The gitdir's info/ folder is absent; cannot toggle sharing mode.`,"malformed-pointer":"The .git pointer file is malformed (stale worktree). Run `git worktree prune` and try again.",inaccessible:`The .git path is inaccessible (permissions or mount issue).`}[n])}\n`)}function Nd(){let e=new O(`config-sharing`);return e.description(`Manage OpenKnowledge's git-sharing mode (share OK config with the team, or keep local-only on this machine)`),e.addCommand(Dd()),e.addCommand(jd()),e.addCommand(kd()),e}const Pd=new Set([`--cwd`,`--log-level`]);function Fd(e){let t=[],n=null,r=!1;for(let i=0;i<e.length;i++){let a=e[i];if(a===`--help`||a===`-h`||a===`--version`||a===`-V`){r=!0;break}if(a===`--cwd`||a===`--log-level`){a===`--cwd`&&(n=e[i+1]??null),i++;continue}if(a.startsWith(`--cwd=`)){n=a.slice(6);continue}if(!a.startsWith(`--log-level=`)&&!(a===`--no-color`||a===`--color`)){if(a.startsWith(`-`)){Pd.has(a)&&i++;continue}t.push(a)}}return{operands:t,cwd:n,sawTerminalFlag:r}}function Id(e,t){if(e.length===0)return null;let n=e[0];return n===`open`&&e[1]!==void 0&&t.isFileish(e[1])?e[1]:t.knownSubcommands.has(n)?null:t.isFileish(n)?n:null}function Ld(e){return/\.(md|mdx)$/i.test(e)}function Rd(e,t){if(Ld(t))return!0;try{return U(e).isFile()}catch(t){let n=t?.code;return n!==`ENOENT`&&n!==`ENOTDIR`&&process.stderr.write(`[ok] statSync failed for ${e} (${n??`unknown`}); treating as non-fileish\n`),!1}}function zd(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function Bd(e=()=>an(on())){return{prepare:We,detectBundlePath:()=>e().bundlePath??null,openTarget:e=>{hn(`open`,[e],{detached:!0,stdio:`ignore`,env:zd(process.env)}).unref()},runProjectOpen:(e,t)=>Yu(e,{project:t},Gu()),runBrowserOpen:e=>Ud(e),log:e=>process.stdout.write(`${e}\n`),error:e=>process.stderr.write(`${e}\n`)}}async function Vd(e,t){let n;try{n=t.prepare(e)}catch(e){if(e instanceof Ye||e instanceof Ae||e instanceof et)return t.error(e.message),1;throw e}if(n.mode===`project`)return t.runProjectOpen(n.docName,n.projectRoot);if(t.detectBundlePath()){let e=`openknowledge://open?file=${encodeURIComponent(n.canonicalFilePath)}`;return t.openTarget(e),t.log(`Opening ${n.singleDocRelPath} in the OpenKnowledge desktop app.`),0}return await t.runBrowserOpen(n),0}function Hd(){let e=import.meta.dirname??new URL(`.`,import.meta.url).pathname;return[R(e,`public`),R(e,`../../app/dist`),R(e,`../../../app/dist`)].find(e=>z(e))}async function Ud(e){let{createEphemeralProjectDir:t}=await import(`./dist-CDpjGDM9.mjs`),{loadConfig:n}=await import(`./index.mjs`),{bootStartServer:r,resolveHost:i}=await import(`./start-CMMuPqVu.mjs`),{openBrowser:a}=await import(`./open-browser-DHTbHSqx.mjs`),o=Hd();o||(process.stderr.write("OpenKnowledge UI assets were not found. Reinstall @inkeep/open-knowledge, or build the app (`bun run build`) in a monorepo checkout.\n"),process.exit(1));let s=t(e.contentDir),c=!1,l,u=async()=>{if(!c){c=!0;try{await l?.destroy()}catch{}try{await Un(s,{recursive:!0,force:!0})}catch{}}},d=()=>{u().then(()=>process.exit(0))};process.once(`SIGINT`,d),process.once(`SIGTERM`,d);let{config:f}=n(s),p=i({},process.env);try{l=await r({config:f,cwd:s,host:p,port:0,projectDir:s,singleFile:e.canonicalFilePath,serveContentAssets:!0,reactShellDistDir:o,idleThresholdMs:6e5})}catch(t){await u(),process.stderr.write(`Failed to open ${e.singleDocRelPath}: ${t instanceof Error?t.message:String(t)}\n`),process.exit(1)}let m=`http://${p}:${l.port}/#/${Ue(e.docName)}`;process.env.OK_SINGLE_FILE_NO_OPEN===`1`?process.stdout.write(`Serving ${e.singleDocRelPath} (headless) at: ${m}\n`):(process.stdout.write(`Opening ${e.singleDocRelPath} in your browser: ${m}\n`),process.stdout.write(`Press Ctrl-C to close the session.
|
|
91
|
+
`),a(m)),await new Promise(()=>{})}function Wd(){let e=new O(`skills`).description(`Manage Open Knowledge skills for this project.`);return e.command(`manage`).description(`Control whether OK adopts your editor skills into this project. Default: off — OK only manages skills already under .ok/skills.`).option(`--on`,`Make this project OK-managed: import existing editor skills and adopt new ones.`).option(`--off`,`Stop adopting editor skills (non-destructive — existing .ok/skills + symlinks stay).`).option(`--status`,`Print the current setting.`).action(async e=>{let t=R(process.cwd());if([e.on,e.off,e.status].filter(Boolean).length!==1){process.stderr.write(`${M(`Error:`)} pass exactly one of --on, --off, --status.\n`),process.exitCode=1;return}if(e.status){let e=qe(t);process.stdout.write(`Skill management for ${P(t)}: ${e?j(`on`):A(`off (default)`)}\n`);return}let n=!!e.on;try{await ke(t,{manageEditorSkills:n,surface:`cli`})}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`${M(`Error:`)} could not write skill-management marker: ${t}\n`),process.exitCode=1;return}process.stdout.write(n?`${j(`OK now manages skills for this project.`)} Existing editor skills are imported into ${P(`.ok/skills`)} on the next ${P(`ok start`)} / project open, and new ones adopted automatically.\n`:`${k(`OK will no longer adopt editor skills here.`)} Existing ${P(`.ok/skills`)} content + symlinks are left intact.\n`)}),e}function Gd(e,t){return{server:Kd(`server`,e),ui:Kd(`ui`,t)}}function Kd(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 qd(e){return`${Jd(e.server)}\n${Jd(e.ui)}`}function Jd(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 Yd(e){let t=e.inspect??(t=>Kt(e.lockDir,t)),n=e.log??(e=>console.log(e)),r=Gd(t(`server`),t(`ui`));return e.json?n(JSON.stringify(r,null,2)):n(qd(r)),r}function Xd(e){return new O(`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(),Yd({lockDir:D(process.cwd()),json:t.json===!0})})}function Zd(e,t,n=Qd,r=z){let i=[];for(let t of[`/Applications/OpenKnowledge.app`,L(e,`Applications`,`OpenKnowledge.app`)])r(t)&&i.push({method:`app`,label:`OK Desktop (${t})`,instruction:`Move ${t} to the Trash (or: rm -rf "${t}")`});return n([`ls`,`-g`,`--depth=0`,`@inkeep/open-knowledge`])?.includes(`@inkeep/open-knowledge@`)&&i.push({method:`npm-global`,label:`npm global install`,instruction:`npm uninstall -g @inkeep/open-knowledge`}),t&&/[/\\]_npx[/\\]/.test(t)&&i.push({method:`npx`,label:`npx (ephemeral)`,instruction:`Nothing to uninstall — npx runs from a temporary cache. (Optional: npm cache clean --force)`}),i}function Qd(e){try{return pn(`npm`,e,{encoding:`utf-8`,timeout:5e3,stdio:[`ignore`,`pipe`,`ignore`]})}catch{return null}}const $d=`━`.repeat(64);function ef(e){let t=[N($d),P(` One more step — remove the OpenKnowledge app itself`),A(` (OpenKnowledge can't delete its own running binary — do this by hand.)`),``];if(e.length===0)t.push(A(` Install method not detected. If you installed it, remove it via:`)),t.push(` ${k(`OK Desktop`)} — move /Applications/OpenKnowledge.app to the Trash`),t.push(` ${k(`npm global`)} — npm uninstall -g @inkeep/open-knowledge`),t.push(` ${k(`npx`)} — nothing to remove (runs from a temporary cache)`);else for(let n of e)t.push(` ${k(n.label)}`),t.push(` ${n.instruction}`);return t.push(N($d)),t.join(`
|
|
92
|
+
`)}function tf(e){return R(e,`..`,`..`)}function nf(e){return z(L(e,`.ok`))}async function rf(e){let t=e.findRoot??be,n=e.readRecents??Oa,r=t(e.cwd)?.rootPath??null,i=Ea({home:e.home,platformName:e.platform,env:e.env}),a=new Set;for(let e of n(i))a.add(R(e.path));let o=new Set(e.lockDirs.map(tf));for(let e of o)a.add(e);r&&a.delete(r);let s=[];r&&nf(r)&&s.push({path:r,running:o.has(r),current:!0});for(let e of a)nf(e)&&s.push({path:e,running:o.has(e),current:!1});return s.length===0?[]:e.allProjects?s.map(e=>e.path):e.yes||e.dryRun||!(e.isTTY??process.stdout.isTTY)?[]:(e.promptFn??af)(s)}async function af(e){return gt({message:`Also remove OpenKnowledge from these projects? (space to toggle; none selected by default)
|
|
93
93
|
Removes each project's .ok/ config, editor MCP entries, and OK edit-history
|
|
94
94
|
(.git/ok/). Your markdown content is kept — \`ok start\` re-adds OK later.
|
|
95
|
-
`,required:!1,theme:{icon:{checked:`[x]`,unchecked:`[ ]`}},choices:e.map(e=>({name:`${e.path}${e.current?` (current)`:``}${e.running?` (running — will be stopped)`:``}`,value:e.path,checked:!1}))})}const of=
|
|
96
|
-
`),exitCode:0};if(e.json&&!e.yes)return{status:`failed`,message:`${
|
|
97
|
-
`),exitCode:m.failed.length>0?1:0}}function cf(){return new
|
|
98
|
-
`)}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
|
|
95
|
+
`,required:!1,theme:{icon:{checked:`[x]`,unchecked:`[ ]`}},choices:e.map(e=>({name:`${e.path}${e.current?` (current)`:``}${e.running?` (running — will be stopped)`:``}`,value:e.path,checked:!1}))})}const of=A(`The openknowledge:// URL scheme deregisters itself once the app is removed — no action needed.`);async function sf(e={}){let t=e.home??Cn(),n=e.platform??process.platform,r=e.env??process.env,i=R(e.cwd??process.cwd()),a=e.host??`github.com`,o=e.purgeContent??!1,s=e.deps?.discoverLockDirs??Ze,c=e.deps?.resolveRecentProjects??rf,l=e.deps?.detectInstallMethods??Zd,u=await s(),d=Ia({home:t,platform:n,env:r,host:a,lockDirs:u,marker:Bt(t),recentDeinitProjectRoots:await c({home:t,platform:n,env:r,cwd:i,lockDirs:u,yes:e.yes,allProjects:e.allProjects,dryRun:e.dryRun,isTTY:e.isTTY}),purgeContent:o}),f=A("Individual projects are only removed when you select them (or pass --all-projects). To remove OpenKnowledge from one project, run `ok deinit` inside it."),p=()=>ef(l(t,e.argv1??process.argv[1]));if(e.dryRun)return{status:`dry-run`,message:e.json?JSON.stringify(Ka(d),null,2):[P(`Would remove (dry-run — no changes made):`),``,Wa(d),``,f,``,p()].join(`
|
|
96
|
+
`),exitCode:0};if(e.json&&!e.yes)return{status:`failed`,message:`${M(`Error:`)} --json requires --yes (or --dry-run) so there is no interactive prompt.`,exitCode:1};if(!e.yes){if(!(e.isTTY??process.stdout.isTTY))return{status:`cancelled`,message:`${M(`Aborted:`)} refusing to uninstall non-interactively without --yes.`,exitCode:1};if(process.stderr.write(`${P(`This will remove OpenKnowledge from your machine:`)}\n\n${Wa(d)}\n\n${N(`This cannot be undone.`)}\n\n`),!await Ta(`${P(`Remove all of the above?`)} ${A(`[y/N] `)}`,e.confirmStream))return{status:`cancelled`,message:A(`Cancelled. Nothing was removed.`),exitCode:0}}let m=await Ba(d,e.deps?.runRemovalDeps),h=[e.json?JSON.stringify(qa(`uninstall`,m),null,2):Ga(m)];return e.json||(h.push(``,f,of),m.failed.length===0&&h.push(``,j(`OpenKnowledge's files have been removed from this machine.`)),h.push(``,p())),{status:m.failed.length>0?`failed`:`done`,message:h.join(`
|
|
97
|
+
`),exitCode:m.failed.length>0?1:0}}function cf(){return new O(`uninstall`).description(`Remove OpenKnowledge from your machine — credentials, PATH entries, editor MCP configs, skill bundles, app data, and ~/.ok. Keeps your markdown content and your authored skills (~/.ok/skills) unless --purge-content. Detects the app install and prints how to remove it; never self-deletes.`).option(`-y, --yes`,`Skip the confirmation prompt (removes the global footprint only; add --all-projects to also deinit projects)`).option(`--dry-run`,`Print the removal plan and exit without changing anything`).option(`--json`,`Emit a machine-readable plan/outcome (requires --yes or --dry-run)`).option(`--purge-content`,`Also remove user-authored content (~/.ok/skills)`).option(`--all-projects`,`Also deinit every recent/running project (by default no project is removed — you pick them interactively)`).action(async e=>{let t=await sf({yes:e.yes,dryRun:e.dryRun,json:e.json,purgeContent:e.purgeContent,allProjects:e.allProjects});process.stdout.write(`${t.message}\n`),t.exitCode!==0&&(process.exitCode=t.exitCode)})}function lf(e){return[e,`Copyright (C) 2026 Inkeep, Inc.`,`License GPL-3.0-or-later: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.`,`This is free software: you are free to change and redistribute it.`,`There is NO WARRANTY, to the extent permitted by law.`].join(`
|
|
98
|
+
`)}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 O;let $,uf;function df(){return uf}Q.name(`open-knowledge`).description(`Local-first knowledge base with CRDT collaboration`).usage(`[options] [file | command]`).version(lf(qt)).option(`--cwd <path>`,`Working directory`).option(`--log-level <level>`,`Log level: silent, error, warn, info (default), debug, trace`,`info`).option(`--no-color`,`Disable color output`).option(`--color`,`Force color output`).hook(`preAction`,e=>{let t=e.opts().cwd;if(t!==void 0&&process.chdir(t),Q.getOptionValueSource(`logLevel`)===`cli`){let e=String(Q.opts().logLevel);process.env.LOG_LEVEL=e,process.env.OK_CONSOLE_LEVEL=e}let n=e.args?.[0],r=Rt(n,process.cwd());r!==null&&(Gt(process.cwd()),process.chdir(r),console.error(`[ok] Using OpenKnowledge project at ${r}`));let i;try{i=tn(r??t).config}catch(e){if(n===`uninstall`||n===`deinit`)console.error(`[ok] project config could not be loaded; ${n} will use defaults: ${e instanceof Error?e.message:String(e)}`),i=Te.parse({});else throw e}$=i;let a=e.args?.[0]??e.name()??`cli`;uf=Re({name:`cli`,project:i.project?.name??void 0}),uf.info({command:a,cwd:process.cwd()},`cli command started`)}),Q.action(async()=>{if(an(on()).available){ln({spawn:hn});return}await cn($,{})});const ff=sn(()=>$);Q.addCommand(ff);const pf=Wl(()=>$);Q.addCommand(pf),Q.addCommand(Mt()),Q.addCommand(cd()),Q.addCommand(Uu()),Q.addCommand(wa(),{hidden:!0}),Q.addCommand(dn()),Q.addCommand(Wd());const mf=Zu(()=>$);Q.addCommand(mf);const hf=vt(()=>$);Q.addCommand(hf),Q.addCommand(Xu()),Q.addCommand(It(()=>$)),Q.addCommand(Vi(()=>$)),Q.addCommand(Xd(()=>$)),Q.addCommand(Ya()),Q.addCommand(cf()),Q.addCommand(Ut()),Q.addCommand(Es()),Q.addCommand(Ri()),Q.addCommand(ga()),Q.addCommand(Ei(df)),Q.addCommand(Fs()),Q.addCommand(ca(()=>$)),Q.addCommand(ed(()=>$)),Q.addCommand(nd(()=>$)),Q.addCommand(td(()=>$)),Q.addCommand(Ed()),Q.addCommand(Nd()),Q.addHelpText(`after`,`
|
|
99
99
|
Examples:
|
|
100
100
|
ok Launch the desktop app (or start a local server if it isn't installed)
|
|
101
101
|
ok notes.md Open a single markdown file in the editor
|