@inkeep/open-knowledge 0.46.0-beta.14 → 0.46.0-beta.16
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/{acp-harness-probe-DyGzojAs.mjs → acp-harness-probe-Dgh1Ipmo.mjs} +3 -3
- package/dist/cli.mjs +7 -7
- package/dist/constants-BMyLpSJ8.mjs +2 -0
- package/dist/index.d.mts +17 -1
- package/dist/index.mjs +1 -1
- package/dist/init-BnKh4hJB.mjs +1 -0
- package/dist/{init-UsHQ5nkw.mjs → init-DXZ5ZL-d.mjs} +37 -37
- package/dist/{launch-json-removal-HQmTN2zF.mjs → launch-json-removal-B6IOQFk9.mjs} +2 -2
- package/dist/loader-DJaTAEVI.mjs +1 -0
- package/dist/{loader-TX84kNNr.mjs → loader-di8ingCA.mjs} +2 -2
- package/dist/{preview-BO-_TVuU.mjs → preview-CCY8KBS2.mjs} +2 -2
- package/dist/preview-ChlChU-0.mjs +1 -0
- package/dist/public/assets/{ActivityModeContent-D04ZTB05.js → ActivityModeContent-BSGDxL9R.js} +1 -1
- package/dist/public/assets/{AgentDiffPane-BCcrDXW5.js → AgentDiffPane-D7bJvGdp.js} +2 -2
- package/dist/public/assets/{AgentThreadClientBinder--w-hCCkY.js → AgentThreadClientBinder-CaTryHIE.js} +1 -1
- package/dist/public/assets/{BugReportHistory-DJ9tF746.js → BugReportHistory-DJY_ATlh.js} +1 -1
- package/dist/public/assets/{BugReportHistoryDialog-8V1yE7Ti.js → BugReportHistoryDialog-BIDjQ_82.js} +1 -1
- package/dist/public/assets/{ChangedOutsideBadge-Jw_1ftdU.js → ChangedOutsideBadge-C-Qu_Pl8.js} +1 -1
- package/dist/public/assets/{CodeMirrorPropInput-6uPyBi97.js → CodeMirrorPropInput-CRKAndsx.js} +3 -3
- package/dist/public/assets/{ConfigSharingInfoTooltip-BEi44Q-l.js → ConfigSharingInfoTooltip-OJruUI3H.js} +1 -1
- package/dist/public/assets/{ConsentDialogBody-D6HuxFrl.js → ConsentDialogBody-DRrUivNs.js} +1 -1
- package/dist/public/assets/{DiffView-KapiOFto.js → DiffView-DITcPuOr.js} +1 -1
- package/dist/public/assets/{DocumentContext-Ddtfw06F.js → DocumentContext-COt_qsrp.js} +2 -2
- package/dist/public/assets/{EditorModeToggle-B622Ggff.js → EditorModeToggle-N6JjLfr-.js} +1 -1
- package/dist/public/assets/{EnableSyncConfirmDialog-Dt2Km8QO.js → EnableSyncConfirmDialog-Bc_A_XCY.js} +1 -1
- package/dist/public/assets/FeedbackForm-DtN1ab2c.js +1 -0
- package/dist/public/assets/{GraphPanel-DAJMshWv.js → GraphPanel-aAVgqxld.js} +1 -1
- package/dist/public/assets/{ImportSkillDialog-7_9XdUL4.js → ImportSkillDialog-LkmkJ0YU.js} +1 -1
- package/dist/public/assets/{LintConfigEditor-DoWT7p5q.js → LintConfigEditor-9eXwxoS2.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-7dshK0Jv.js → ManagedArtifactProperties-Bte_ppBh.js} +2 -2
- package/dist/public/assets/ManagedArtifactProperties-TmTNhIv4.js +1 -0
- package/dist/public/assets/McpConsentDialogBody-090py53F.js +1 -0
- package/dist/public/assets/{Mermaid-D-PR8Nq0.js → Mermaid-BQAWkx48.js} +2 -2
- package/dist/public/assets/{MermaidDocEditor-xVs3RYNL.js → MermaidDocEditor-C_G_ovY8.js} +1 -1
- package/dist/public/assets/{RegisteredAgentIcon-CKpJ_hgB.js → RegisteredAgentIcon-UInuA1Ei.js} +1 -1
- package/dist/public/assets/{ReportBugDialogBody-BOsNuOIC.js → ReportBugDialogBody-5eJLreAy.js} +1 -1
- package/dist/public/assets/{SchemaConfigEditor-dViX9E3z.js → SchemaConfigEditor-DcJSH6Kd.js} +1 -1
- package/dist/public/assets/{SessionsHost-DwEoO1aA.js → SessionsHost-9g8XG0FA.js} +2 -2
- package/dist/public/assets/{SettingsDialogBody-DapiVVeV.js → SettingsDialogBody-DYeGMO3E.js} +1 -1
- package/dist/public/assets/{ShareBranchSwitchDialog-P949gbnF.js → ShareBranchSwitchDialog-Dm4ZdzUl.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-Bhnm-iQX.js → ShareReceiveDialog-Cd240Jdo.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-UEKRcm_k.js → ShareReceiveMissDialog--hmiMg2v.js} +1 -1
- package/dist/public/assets/{SkillEditBanner-DLVzp3KP.js → SkillEditBanner-DIJcGPhx.js} +1 -1
- package/dist/public/assets/{SkillOriginInline-D2WanLMv.js → SkillOriginInline-M3Vr6Vl3.js} +1 -1
- package/dist/public/assets/{SkillToolbarControls-hj3PWE0K.js → SkillToolbarControls-CkezCxAG.js} +1 -1
- package/dist/public/assets/{SourceEditor-JLV4zFVy.js → SourceEditor-D3d3_XjY.js} +1 -1
- package/dist/public/assets/{TerminalPanel-CJ96nwqY.js → TerminalPanel-DEwu_bZF.js} +1 -1
- package/dist/public/assets/{TerminalWindowApp-DJKxzDZB.js → TerminalWindowApp-cq0ZjlPg.js} +1 -1
- package/dist/public/assets/{TextDocEditor-Bkkf7noz.js → TextDocEditor-4ayETwjy.js} +1 -1
- package/dist/public/assets/{ThreadView-BaD0xIEg.js → ThreadView-BxHj-gwp.js} +1 -1
- package/dist/public/assets/TimelineDiffPane-EP2JbHka.js +2 -0
- package/dist/public/assets/{abnfDiagram-VRR7QNED-DthMMUp7.js → abnfDiagram-VRR7QNED-DHJtI87X.js} +1 -1
- package/dist/public/assets/{agent-diff-store-P7Uc0zvh.js → agent-diff-store-NxhFZCYu.js} +1 -1
- package/dist/public/assets/{agent-visibility-Bj5OOTN2.js → agent-visibility-BVTKArCQ.js} +1 -1
- package/dist/public/assets/{arc-D6dkQwuB.js → arc-CcVRsw3e.js} +1 -1
- package/dist/public/assets/architecture-TIHT7OUA-B22-UzyM.js +1 -0
- package/dist/public/assets/{architectureDiagram-ZJ3FMSHR-D2AdknnG.js → architectureDiagram-ZJ3FMSHR-CiwaxO5n.js} +1 -1
- package/dist/public/assets/{auth-state-cache-Du0vALuT.js → auth-state-cache-DeOaKoC3.js} +1 -1
- package/dist/public/assets/{blockDiagram-677ZJIJ3-CQpuKURY.js → blockDiagram-677ZJIJ3-0zO7n7Sf.js} +1 -1
- package/dist/public/assets/{c4Diagram-LMCZKHZV-vMnsf6JP.js → c4Diagram-LMCZKHZV-C662qesx.js} +1 -1
- package/dist/public/assets/{calendar-DvE9J6Sj.js → calendar-BRay90Yd.js} +1 -1
- package/dist/public/assets/channel-DfI0YSva.js +1 -0
- package/dist/public/assets/{checkbox-CgM6fL3A.js → checkbox-Cq1BnJ3x.js} +1 -1
- package/dist/public/assets/chevron-up-CSNoGrd3.js +1 -0
- package/dist/public/assets/chunk-2Q5K7J3B-BSFIGC1j.js +1 -0
- package/dist/public/assets/{chunk-32BRIVSS-CVMNE9FE.js → chunk-32BRIVSS-CydyM0Ml.js} +1 -1
- package/dist/public/assets/{chunk-52WLFC77-ByP8adiF.js → chunk-52WLFC77-cG-DvO_j.js} +1 -1
- package/dist/public/assets/{chunk-5FCAYU7R-apcsbWAl.js → chunk-5FCAYU7R-Bxw_oikr.js} +1 -1
- package/dist/public/assets/{chunk-5HE753X5-BApo3bqD.js → chunk-5HE753X5-DKXmxfLW.js} +1 -1
- package/dist/public/assets/{chunk-5JV3BV7I-BHpORvdP.js → chunk-5JV3BV7I-DvmJcvTR.js} +1 -1
- package/dist/public/assets/{chunk-5TONJI2A-DFa3pMK9.js → chunk-5TONJI2A-DzotvxWN.js} +1 -1
- package/dist/public/assets/{chunk-5VM5RSS4-Dv_-BFYa.js → chunk-5VM5RSS4-BhXaeUUw.js} +1 -1
- package/dist/public/assets/{chunk-7BUUIJ7U-CAEbPbJV.js → chunk-7BUUIJ7U-nkQ2KUUq.js} +1 -1
- package/dist/public/assets/{chunk-BIQX33UG-BAiXBHCK.js → chunk-BIQX33UG-dgZifYB8.js} +1 -1
- package/dist/public/assets/{chunk-BO2N2NFS-BuvkRQr-.js → chunk-BO2N2NFS-BgpjQQXT.js} +3 -3
- package/dist/public/assets/{chunk-C7G6YPKG-1I7HAvac.js → chunk-C7G6YPKG-DeJ7KSfD.js} +1 -1
- package/dist/public/assets/{chunk-CQNSW5MT-CWAJXUKm.js → chunk-CQNSW5MT-WJU8lHxD.js} +1 -1
- package/dist/public/assets/{chunk-CYSBUYHQ-okSmY2v_.js → chunk-CYSBUYHQ-5BxfdOgL.js} +1 -1
- package/dist/public/assets/{chunk-EMLP6XTP-BoC1pbij.js → chunk-EMLP6XTP-mSjYkSCS.js} +1 -1
- package/dist/public/assets/{chunk-EX3LRPZG-g376BU8Z.js → chunk-EX3LRPZG-BNd6Cxwo.js} +1 -1
- package/dist/public/assets/{chunk-FWX5IMBZ-C-l8NZxe.js → chunk-FWX5IMBZ-CXQqiinv.js} +2 -2
- package/dist/public/assets/{chunk-HOUHSVGY-Do2Y3Btv.js → chunk-HOUHSVGY-FQeseOdw.js} +1 -1
- package/dist/public/assets/{chunk-ICXQ74PX-Ce0LzbhW.js → chunk-ICXQ74PX-QBz75RJe.js} +1 -1
- package/dist/public/assets/{chunk-JG7HCLWE-KxXMgbns.js → chunk-JG7HCLWE-ClAPLVoN.js} +1 -1
- package/dist/public/assets/{chunk-JWPE2WC7-CEvGtkOv.js → chunk-JWPE2WC7-D00QuO4l.js} +1 -1
- package/dist/public/assets/{chunk-MOJQB5TN-CqgruPhq.js → chunk-MOJQB5TN-BHolK4Fc.js} +1 -1
- package/dist/public/assets/{chunk-MOZMSUNE-_PphKf7-.js → chunk-MOZMSUNE-B2zrwpvW.js} +1 -1
- package/dist/public/assets/{chunk-OGEWGWER-DEtBK0B_.js → chunk-OGEWGWER-D9rNoxcC.js} +1 -1
- package/dist/public/assets/{chunk-OSBZ3O6U-CZ7_DsZG.js → chunk-OSBZ3O6U-pMDQqwwa.js} +1 -1
- package/dist/public/assets/{chunk-PUDLZKDR-DOJ6xYbt.js → chunk-PUDLZKDR-zvmgn7x_.js} +1 -1
- package/dist/public/assets/{chunk-Q4XR5HBZ-BE54IG_w.js → chunk-Q4XR5HBZ-FwXZQ9hY.js} +1 -1
- package/dist/public/assets/{chunk-QBLGF6JB-DhkUA6kz.js → chunk-QBLGF6JB-gQMNwA9k.js} +1 -1
- package/dist/public/assets/{chunk-R7FJI6CG-C8R_fEMX.js → chunk-R7FJI6CG-4qEQ9dBZ.js} +1 -1
- package/dist/public/assets/{chunk-RYQCIY6F-BGQYOx1F.js → chunk-RYQCIY6F-BV0ikdQB.js} +1 -1
- package/dist/public/assets/{chunk-U6XO7XAA-S326EP4t.js → chunk-U6XO7XAA-CaNmcaAV.js} +1 -1
- package/dist/public/assets/{chunk-V7JOEXUC-CRcOKbTq.js → chunk-V7JOEXUC-CsJjje8x.js} +1 -1
- package/dist/public/assets/chunk-VAUOI2AC-B_byVmRb.js +1 -0
- package/dist/public/assets/{chunk-VR4S4FIN-DI4tyiVg.js → chunk-VR4S4FIN-bcHVGPIL.js} +1 -1
- package/dist/public/assets/{chunk-WYO6CB5R-CB_foSvM.js → chunk-WYO6CB5R-BMZjhy31.js} +1 -1
- package/dist/public/assets/chunk-XXDRQBXY-BW_2kVvu.js +1 -0
- package/dist/public/assets/{chunk-YOTPTUD7-Df82opFk.js → chunk-YOTPTUD7-NNZ-Yv3s.js} +1 -1
- package/dist/public/assets/{chunk-ZGVPDNZ5-BwKc2ci4.js → chunk-ZGVPDNZ5-DN7h9evR.js} +1 -1
- package/dist/public/assets/{chunk-ZIRB5QZD-x2paC8Ym.js → chunk-ZIRB5QZD-BUzL4gtl.js} +1 -1
- package/dist/public/assets/classDiagram-OUVF2IWQ-D-ugBPkQ.js +1 -0
- package/dist/public/assets/classDiagram-v2-EOCWNBFH-Bn6YRP9I.js +1 -0
- package/dist/public/assets/{comment-chips-Dffri1Xa.js → comment-chips-qxdAVfqd.js} +1 -1
- package/dist/public/assets/{config-provider-DpMwlMEo.js → config-provider-C5VnXykq.js} +1 -1
- package/dist/public/assets/{cose-bilkent-JH36ORCC-CYGNHPN1.js → cose-bilkent-JH36ORCC-C3tuxXMJ.js} +1 -1
- package/dist/public/assets/cynefin-VYW2F7L2-g7Kr3o9e.js +1 -0
- package/dist/public/assets/{cynefinDiagram-TSTJHNR4-B2WpbGQm.js → cynefinDiagram-TSTJHNR4-gF8dJ8RL.js} +1 -1
- package/dist/public/assets/{dagre-m0poQDwd.js → dagre-DqpVUR-3.js} +1 -1
- package/dist/public/assets/{dagre-VKFMJZFB-D9UQmJxN.js → dagre-VKFMJZFB-Bdh7Hq5O.js} +1 -1
- package/dist/public/assets/{diagram-FQU43EPY-7M2ET6l3.js → diagram-FQU43EPY-BZ8uLueR.js} +1 -1
- package/dist/public/assets/{diagram-G47NLZAW-DpsDaYFM.js → diagram-G47NLZAW-QyYub_Y-.js} +1 -1
- package/dist/public/assets/{diagram-NH7WQ7WH-CwGRC_4A.js → diagram-NH7WQ7WH-BZmKErWp.js} +1 -1
- package/dist/public/assets/{diagram-OA4YK3LP-Cv8Yslyv.js → diagram-OA4YK3LP-X4I0Ny_1.js} +1 -1
- package/dist/public/assets/{diagram-WEI45ONY-BQVzDEI1.js → diagram-WEI45ONY-Dvn-EcwS.js} +1 -1
- package/dist/public/assets/{dialog-C1XaLkpS.js → dialog-BRwYcDyc.js} +1 -1
- package/dist/public/assets/{dist-CPb8nv1S.js → dist-1bY-7L2j.js} +1 -1
- package/dist/public/assets/{dist-DhhvZ-Fu.js → dist-4KAJEfHq.js} +1 -1
- package/dist/public/assets/{dist-DH19Ha9g.js → dist-9KHzlPis.js} +1 -1
- package/dist/public/assets/{dist-BFl6CzPt.js → dist-B5YN73un.js} +1 -1
- package/dist/public/assets/{dist-BUtHqenk2.js → dist-B_pBFyj72.js} +1 -1
- package/dist/public/assets/{dist-Dibn-GMd.js → dist-BawYG08a.js} +1 -1
- package/dist/public/assets/{dist-CWm4Y27g.js → dist-BhBnufkS.js} +1 -1
- package/dist/public/assets/{dist-CZ_7whgD.js → dist-DhrsAcRJ.js} +1 -1
- package/dist/public/assets/{dist-DXiLicfm.js → dist-DmGGmoBk.js} +1 -1
- package/dist/public/assets/{dist-Bcmi_W0T2.js → dist-Dsr-OKxp2.js} +1 -1
- package/dist/public/assets/{dist-CqYx5K2X.js → dist-Dtdr1fU5.js} +1 -1
- package/dist/public/assets/{dist-B6UNek5u.js → dist-ZmxLttHl.js} +1 -1
- package/dist/public/assets/{dist-CKIx-azO.js → dist-zNz6UTbN.js} +1 -1
- package/dist/public/assets/{ebnfDiagram-CCIWWBDH-DMAh9nKT.js → ebnfDiagram-CCIWWBDH-Bee-0Vsa.js} +1 -1
- package/dist/public/assets/{erDiagram-Q63AITRT-DKFiE0Vo.js → erDiagram-Q63AITRT-DxkcAaEh.js} +1 -1
- package/dist/public/assets/{esm-C2ewNoEu.js → esm-Dn0h--OG.js} +1 -1
- package/dist/public/assets/eventmodeling-45OFAUF4-DdR7ha8I.js +1 -0
- package/dist/public/assets/{file-tree-adapter-B4ykQtEb.js → file-tree-adapter-CRvIFP_w.js} +1 -1
- package/dist/public/assets/flowDiagram-23GEKE2U-BAuyQn3U.js +1 -0
- package/dist/public/assets/{folder-config-api-CqtfjrQF.js → folder-config-api-DI42D8Ib.js} +1 -1
- package/dist/public/assets/follow-file-B9VBGXDD.js +1 -0
- package/dist/public/assets/{ganttDiagram-NO4QXBWP--SJpls7L.js → ganttDiagram-NO4QXBWP-CfKrR8t0.js} +1 -1
- package/dist/public/assets/gitGraph-TEB2WS4Q-B9_Hbzw_.js +1 -0
- package/dist/public/assets/{gitGraphDiagram-IHSO6WYX-B1AjnInE.js → gitGraphDiagram-IHSO6WYX-l_eG9uKD.js} +1 -1
- package/dist/public/assets/globals-Ba8zXfL4.css +1 -0
- package/dist/public/assets/{globals-prQJiwR-.js → globals-Wwv5HfuY.js} +2 -2
- package/dist/public/assets/{graphlib-D6a-9iLo.js → graphlib-2mbBufU8.js} +1 -1
- package/dist/public/assets/{highlighted-body-OFNGDK62-xJQZHz65.js → highlighted-body-OFNGDK62-BIipOt-U.js} +1 -1
- package/dist/public/assets/{index-C3pQc8vq.js → index-COolXpYV.js} +15 -15
- package/dist/public/assets/info-DKCQHKI2-BQeDe2mR.js +1 -0
- package/dist/public/assets/{infoDiagram-FWYZ7A6U-DBicCXZU.js → infoDiagram-FWYZ7A6U-DgvJ7Awn.js} +1 -1
- package/dist/public/assets/{input-group-C_zrpbIa.js → input-group-DpE_QejY.js} +1 -1
- package/dist/public/assets/{ishikawaDiagram-FXEZZL3T-B5hPGOul.js → ishikawaDiagram-FXEZZL3T-DQ4Gskk4.js} +1 -1
- package/dist/public/assets/{journeyDiagram-5HDEW3XC-Dl3OnoGl.js → journeyDiagram-5HDEW3XC-DPs0RcwQ.js} +1 -1
- package/dist/public/assets/{kanban-definition-HUTT4EX6-maq6lkuf.js → kanban-definition-HUTT4EX6-Ck2HSfan.js} +1 -1
- package/dist/public/assets/{line-B2_EkJOy.js → line-DWKLErsv.js} +1 -1
- package/dist/public/assets/{linear-Bskk1XDV.js → linear-dbIThZWJ.js} +1 -1
- package/dist/public/assets/{map-BEHMQBu2.js → map-DCuMc749.js} +1 -1
- package/dist/public/assets/{markdownlint-rule-browser-DSfETRq3.js → markdownlint-rule-browser-taWXhAIu.js} +1 -1
- package/dist/public/assets/mermaid-GHXKKRXX-DE1vq5OK.js +1 -0
- package/dist/public/assets/{mermaid-parser.core-DDjZMctQ.js → mermaid-parser.core-B2uYfibA.js} +2 -2
- package/dist/public/assets/{mermaid.core-DJBoiuub.js → mermaid.core-BUTR3k00.js} +3 -3
- package/dist/public/assets/{mindmap-definition-LN4V7U3C-BMKM5jZf.js → mindmap-definition-LN4V7U3C-CjuwnrRK.js} +1 -1
- package/dist/public/assets/{navigation-targets-x6iOvvv-.js → navigation-targets-Cqw8JcW2.js} +1 -1
- package/dist/public/assets/{now-DQUsv__I.js → now-D9M3Ys6o.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-D7O6shhm.js → open-managed-artifact-tab-BJBa-17A.js} +1 -1
- package/dist/public/assets/{ordinal-Cy_9j7oo.js → ordinal-DdrNAXbu.js} +1 -1
- package/dist/public/assets/packet-7NZHBO7P-BW9abikZ.js +1 -0
- package/dist/public/assets/{pegDiagram-2B236MQR-XqQZD2V0.js → pegDiagram-2B236MQR-BbkSvB2I.js} +1 -1
- package/dist/public/assets/{pending-receive-nav-store-D4P72ovr.js → pending-receive-nav-store-BZZR-nkd.js} +1 -1
- package/dist/public/assets/pie-RZYD4A2V-D86NaVqt.js +1 -0
- package/dist/public/assets/{pieDiagram-ENE6RG2P-BtvwA4qL.js → pieDiagram-ENE6RG2P-mC03ntFr.js} +1 -1
- package/dist/public/assets/{project-paths-CqnImr76.js → project-paths-DZoifJi3.js} +1 -1
- package/dist/public/assets/{prop-types-BfZ_j9wJ.js → prop-types-UV1Ku4nq.js} +1 -1
- package/dist/public/assets/{quadrantDiagram-ABIIQ3AL-CI6wpHnQ.js → quadrantDiagram-ABIIQ3AL-C5Wf9EzX.js} +1 -1
- package/dist/public/assets/radar-I7S5WNFK-DQAd0dLq.js +1 -0
- package/dist/public/assets/railroad-3IZDKUUU-BpjxCYYP.js +1 -0
- package/dist/public/assets/railroad-abnf-AHOZXSZD-BVzINhcN.js +1 -0
- package/dist/public/assets/railroad-ebnf-EBAXGLYW-FAz3aWnD.js +1 -0
- package/dist/public/assets/railroad-peg-LSFZ7HO6-Smtu6BYl.js +1 -0
- package/dist/public/assets/{railroadDiagram-RFXS5EU6-esD3LX2s.js → railroadDiagram-RFXS5EU6-D5k_b8X2.js} +1 -1
- package/dist/public/assets/{requirementDiagram-TGXJPOKE-BInMn3Xh.js → requirementDiagram-TGXJPOKE-sZXA_y1K.js} +1 -1
- package/dist/public/assets/{sankeyDiagram-HTMAVEWB-DjH7kut4.js → sankeyDiagram-HTMAVEWB-VaejSuXD.js} +1 -1
- package/dist/public/assets/{schema-fields-view-intent-ywCTOcjb.js → schema-fields-view-intent-BMcQ1vbw.js} +1 -1
- package/dist/public/assets/select-DnZ213p0.js +1 -0
- package/dist/public/assets/{selection-context-UHJm7wNO.js → selection-context-SAJ9lGhe.js} +1 -1
- package/dist/public/assets/{sequenceDiagram-DBY2YBRQ-D9rSuKJA.js → sequenceDiagram-DBY2YBRQ-nCH-USjy.js} +1 -1
- package/dist/public/assets/{sizeCapture-X5ZJPWSS-BpnFIdO9.js → sizeCapture-X5ZJPWSS-CyNe-U3Z.js} +1 -1
- package/dist/public/assets/{skill-actions-Dm5ldBEc.js → skill-actions-bjJCqQ6r.js} +1 -1
- package/dist/public/assets/{skills-api-CcFN0_Po.js → skills-api-DqNFNsgd.js} +1 -1
- package/dist/public/assets/{src--VBSbHrD.js → src-D2I-MNPe.js} +1 -1
- package/dist/public/assets/{src-D9tbVCHI.js → src-DFZupjZD.js} +1 -1
- package/dist/public/assets/{stateDiagram-2N3HPSRC-B0iumw-I.js → stateDiagram-2N3HPSRC-uY9Mif8t.js} +1 -1
- package/dist/public/assets/stateDiagram-v2-6OUMAXLB-BdS5vmc7.js +1 -0
- package/dist/public/assets/{swimlanes-5IMT3BWC-DPME_yO4.js → swimlanes-5IMT3BWC-cGipHfZ5.js} +2 -2
- package/dist/public/assets/swimlanesDiagram-G3AALYLV-Do_H-wCL.js +8 -0
- package/dist/public/assets/{tag-pill-input-Br5GXzD6.js → tag-pill-input-Dm-oHELs.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-DEjv2wu2.js → target-navigation-intent-D4NuVWIm.js} +1 -1
- package/dist/public/assets/{telemetry-impl-D5iNhayi.js → telemetry-impl-wWahzeD4.js} +2 -2
- package/dist/public/assets/{telemetry-startup-gGtzcYyd.js → telemetry-startup-DqooJFoo.js} +1 -1
- package/dist/public/assets/{terminal-launch-events-cds9D2zG.js → terminal-launch-events-DPnh23jk.js} +1 -1
- package/dist/public/assets/{terminal-telemetry-B0_vjUSm.js → terminal-telemetry-C0iAhsN9.js} +1 -1
- package/dist/public/assets/{text-viewer-languages-BHFZCAL-.js → text-viewer-languages-qm3MvP0J.js} +2 -2
- package/dist/public/assets/{thread-client-DmkqHx9Q.js → thread-client-CylUCx4y.js} +1 -1
- package/dist/public/assets/{timeline-definition-FHXFAJF6-DXT31kug.js → timeline-definition-FHXFAJF6-BaWSHiEf.js} +1 -1
- package/dist/public/assets/treeView-QDETBFTQ-BgORrhQ0.js +1 -0
- package/dist/public/assets/treemap-6X3UGDF4-Zr5ZEdj0.js +1 -0
- package/dist/public/assets/{typing-burst-detector-BOmCFurR.js → typing-burst-detector-aQ1X_8Fj.js} +1 -1
- package/dist/public/assets/{uninstall-DNe6MvBi.js → uninstall-CZ4_m9Qa.js} +1 -1
- package/dist/public/assets/{use-activity-panel-DbcErwrL.js → use-activity-panel-CrUZg0eD.js} +1 -1
- package/dist/public/assets/{use-live-xterm-theme-KQpLA6Ig.js → use-live-xterm-theme-C7ahxcoU.js} +1 -1
- package/dist/public/assets/{use-open-skill-BYpqVFnY.js → use-open-skill-BQedNtMG.js} +1 -1
- package/dist/public/assets/{use-skill-directory-CZ_74a8P.js → use-skill-directory-CVAgFkVK.js} +1 -1
- package/dist/public/assets/{use-skills-DBT082yp.js → use-skills-LdaAjRrH.js} +1 -1
- package/dist/public/assets/{use-terminal-enabled-BtMJcFpZ.js → use-terminal-enabled-DwK_rPTk.js} +1 -1
- package/dist/public/assets/{use-timeline-entry-diff-CHAJ_uzb.js → use-timeline-entry-diff-B5KnaOaD.js} +1 -1
- package/dist/public/assets/{vennDiagram-L72KCM5P-DIsQhsUb.js → vennDiagram-L72KCM5P-boRPAxOy.js} +1 -1
- package/dist/public/assets/wardley-OPB4EBWU-WeTAUrVk.js +1 -0
- package/dist/public/assets/{wardleyDiagram-EHGQE667-CeHWZQuw.js → wardleyDiagram-EHGQE667-vi90NC-5.js} +1 -1
- package/dist/public/assets/{xychartDiagram-FW5EYKEG-5ub1f-kN.js → xychartDiagram-FW5EYKEG-Ckph0Tnv.js} +1 -1
- package/dist/public/index.html +113 -112
- package/dist/public/uninstall.html +10 -10
- package/dist/{repair-launch-json-Cc9RPEk-.mjs → repair-launch-json-BECz0463.mjs} +2 -2
- package/dist/repair-mcp-configs-CVA75ZZh.mjs +2 -0
- package/dist/{repair-skills-BMYnxn3h.mjs → repair-skills-B5s_18d0.mjs} +2 -2
- package/dist/repair-skills-ByGIGa0z.mjs +1 -0
- package/dist/{src-DDzpg6rN.mjs → src-Da5rL2HL.mjs} +4 -4
- package/dist/{start-BPeS-cjq.mjs → start-BsQjO-tR.mjs} +3 -3
- package/dist/start-D08mufE-.mjs +1 -0
- package/dist/{write-project-skill-DPGLaFfB.mjs → write-project-skill-BIBvYtT6.mjs} +2 -2
- package/package.json +5 -5
- package/dist/constants-BMl86IqT.mjs +0 -2
- package/dist/init-YMPn7j-R.mjs +0 -1
- package/dist/loader-_6OcHbvd.mjs +0 -1
- package/dist/preview-Ba0S1iHw.mjs +0 -1
- package/dist/public/assets/FeedbackForm-BB-M0GcJ.js +0 -1
- package/dist/public/assets/ManagedArtifactProperties-_eOhIDmZ.js +0 -1
- package/dist/public/assets/McpConsentDialogBody-N1L0Uz4o.js +0 -1
- package/dist/public/assets/TimelineDiffPane-BwLDgxHU.js +0 -2
- package/dist/public/assets/architecture-TIHT7OUA-BY9GAchj.js +0 -1
- package/dist/public/assets/channel-Bkag9BhJ.js +0 -1
- package/dist/public/assets/chunk-2Q5K7J3B-BsdS7tBq.js +0 -1
- package/dist/public/assets/chunk-VAUOI2AC-Bwx73Zo5.js +0 -1
- package/dist/public/assets/chunk-XXDRQBXY-B0w7NWS1.js +0 -1
- package/dist/public/assets/classDiagram-OUVF2IWQ-CBMdybof.js +0 -1
- package/dist/public/assets/classDiagram-v2-EOCWNBFH-_6omkEAt.js +0 -1
- package/dist/public/assets/cynefin-VYW2F7L2-Bld4CPSL.js +0 -1
- package/dist/public/assets/eventmodeling-45OFAUF4-BM0_rW2P.js +0 -1
- package/dist/public/assets/flowDiagram-23GEKE2U-B4eMpKzl.js +0 -1
- package/dist/public/assets/follow-file-bH1z3rvn.js +0 -1
- package/dist/public/assets/gitGraph-TEB2WS4Q-BFnnOjnN.js +0 -1
- package/dist/public/assets/globals-GzZHGkrT.css +0 -1
- package/dist/public/assets/info-DKCQHKI2-C4iD29MB.js +0 -1
- package/dist/public/assets/mermaid-GHXKKRXX-DE1sjxOE.js +0 -1
- package/dist/public/assets/packet-7NZHBO7P-7H_SSh7g.js +0 -1
- package/dist/public/assets/pie-RZYD4A2V-B5KrTLE6.js +0 -1
- package/dist/public/assets/radar-I7S5WNFK-BmyXCsHA.js +0 -1
- package/dist/public/assets/railroad-3IZDKUUU-BR0L2Ycb.js +0 -1
- package/dist/public/assets/railroad-abnf-AHOZXSZD-BJSVlTW3.js +0 -1
- package/dist/public/assets/railroad-ebnf-EBAXGLYW-DQeJc96K.js +0 -1
- package/dist/public/assets/railroad-peg-LSFZ7HO6-BOBB_YAC.js +0 -1
- package/dist/public/assets/select-BVnl5AhR.js +0 -1
- package/dist/public/assets/stateDiagram-v2-6OUMAXLB-nM3zWRo5.js +0 -1
- package/dist/public/assets/swimlanesDiagram-G3AALYLV-Bkn7cRsX.js +0 -8
- package/dist/public/assets/treeView-QDETBFTQ-BmMqItzI.js +0 -1
- package/dist/public/assets/treemap-6X3UGDF4-muRT0NuT.js +0 -1
- package/dist/public/assets/wardley-OPB4EBWU-vOd_RJdo.js +0 -1
- package/dist/repair-mcp-configs-Bk7nIh5R.mjs +0 -2
- package/dist/repair-skills-C-ey2QcX.mjs +0 -1
- package/dist/start-BRdG0jJw.mjs +0 -1
- /package/dist/public/assets/{ActivityPanelDiffView-DmVrPrCH.js → ActivityPanelDiffView-DzcGG-3T.js} +0 -0
- /package/dist/public/assets/{AppMenubar-CMfyQoWX.js → AppMenubar-rFZzqUIz.js} +0 -0
- /package/dist/public/assets/{CopyButton-C_GVjBMW.js → CopyButton-Dk8yDsPs.js} +0 -0
- /package/dist/public/assets/{SkillModeBanner-BGvDA8_3.js → SkillModeBanner-BPmqGiVe.js} +0 -0
- /package/dist/public/assets/{__vite-browser-external-B4L9Bgvr.js → __vite-browser-external-DRftbq1J.js} +0 -0
- /package/dist/public/assets/{agent-presence-CuSKbQIG.js → agent-presence-DspgbUIJ.js} +0 -0
- /package/dist/public/assets/{array-jB8ZVI0g.js → array-BlR6RSqS.js} +0 -0
- /package/dist/public/assets/{auth-prompt-store-C7w8BqXG.js → auth-prompt-store-2KB0Hew5.js} +0 -0
- /package/dist/public/assets/{badge-BTPyRUGW.js → badge-DwfQ2IQa.js} +0 -0
- /package/dist/public/assets/{chunk-KEIR6QF5-BoNEB_HG.js → chunk-KEIR6QF5-Cvu_RfZc.js} +0 -0
- /package/dist/public/assets/{chunk-Y2CYZVJY-DCzjAn36.js → chunk-Y2CYZVJY-BavonG01.js} +0 -0
- /package/dist/public/assets/{client-version-CI3pzxaH.js → client-version-BhYZd6K_.js} +0 -0
- /package/dist/public/assets/{clike-volkcHCn.js → clike-BTKURkAr.js} +0 -0
- /package/dist/public/assets/{clipboard-adapter-DdkYoUY3.js → clipboard-adapter-Brbch5VX.js} +0 -0
- /package/dist/public/assets/{colors-DP6EPL4e.js → colors-DThYSuj1.js} +0 -0
- /package/dist/public/assets/{copilot-CYbxld_I.js → copilot-_tsUyzgD.js} +0 -0
- /package/dist/public/assets/{cursor-CVuYJhcM.js → cursor-D_UKSHL6.js} +0 -0
- /package/dist/public/assets/{cytoscape.esm-DBvPDb1U.js → cytoscape.esm-CcKBPOPz.js} +0 -0
- /package/dist/public/assets/{defaultLocale-DHYtiGMG.js → defaultLocale-Bj1aksfd.js} +0 -0
- /package/dist/public/assets/{desktop-bridge-types-ByIs2Wy8.js → desktop-bridge-types-cNTLS5xb.js} +0 -0
- /package/dist/public/assets/{diff-DCzkDf0s.js → diff-CC9Zbhye.js} +0 -0
- /package/dist/public/assets/{dist-CvBo_0Zd.js → dist-BKO-SihH.js} +0 -0
- /package/dist/public/assets/{dist-Dr52ya0i.js → dist-BNVxnBBw.js} +0 -0
- /package/dist/public/assets/{dist-D5z-4WeG.js → dist-CublDHOR.js} +0 -0
- /package/dist/public/assets/{dist-D-OluTzV.js → dist-Du3GTGo5.js} +0 -0
- /package/dist/public/assets/{dist-DEf6luEB.js → dist-pl6OT5yc.js} +0 -0
- /package/dist/public/assets/{doc-paths-C6_l5qhr.js → doc-paths-CBQZMJ5n.js} +0 -0
- /package/dist/public/assets/{documents-events-Bh1LSWeJ.js → documents-events-CUD1Vtsd.js} +0 -0
- /package/dist/public/assets/{documents-fetch-Ks0Eoaj3.js → documents-fetch-D4kwvrzo.js} +0 -0
- /package/dist/public/assets/{download-DLNGh9PS.js → download-C_7Cu8X8.js} +0 -0
- /package/dist/public/assets/{external-link-CIs3ZL0b.js → external-link-CKZFgCFq.js} +0 -0
- /package/dist/public/assets/{eye-DDAm7EsR.js → eye-DGKT_dXT.js} +0 -0
- /package/dist/public/assets/{field-Cq66GDVw.js → field-mSLytCEk.js} +0 -0
- /package/dist/public/assets/{file-tree-rename-validation-D3F7wC1T.js → file-tree-rename-validation-BH8L3cc3.js} +0 -0
- /package/dist/public/assets/{file-tree-utils-COZ5qd1A.js → file-tree-utils-Bz8x8io4.js} +0 -0
- /package/dist/public/assets/{folder-CnSwxkO-.js → folder-CyL8AyXY.js} +0 -0
- /package/dist/public/assets/{folder-open-BKx7QmM_.js → folder-open-DxWbBr3T.js} +0 -0
- /package/dist/public/assets/{form-VEn6ZPb_.js → form-DipRd6xO.js} +0 -0
- /package/dist/public/assets/{format-B72MB8qy.js → format-DAPkd5Gj.js} +0 -0
- /package/dist/public/assets/{go-DJh4zI5a.js → go-BOoSlAXr.js} +0 -0
- /package/dist/public/assets/{hash-DId30u-_.js → hash-C-OUp5vU.js} +0 -0
- /package/dist/public/assets/{info-BcCY_Or2.js → info-DybUB5k_.js} +0 -0
- /package/dist/public/assets/{init-tVp38eyI.js → init-tTyHApSS.js} +0 -0
- /package/dist/public/assets/{input-CdGQDWjM.js → input-DcoGZoTQ.js} +0 -0
- /package/dist/public/assets/{isObject-C7xg_t-t.js → isObject-CS6pZNNk.js} +0 -0
- /package/dist/public/assets/{libesm-BjhN8jLl.js → libesm-COuF-Ycc.js} +0 -0
- /package/dist/public/assets/{lint-config-client-bEZXQCEN.js → lint-config-client-B3CFuMcz.js} +0 -0
- /package/dist/public/assets/{lint-plugin-meta-7A6ZrPoH.js → lint-plugin-meta-BxfSlkph.js} +0 -0
- /package/dist/public/assets/{loader-circle-A8fM_hha.js → loader-circle-C4uszcbe.js} +0 -0
- /package/dist/public/assets/{lru-string-cache-CTK2PJbw.js → lru-string-cache-DXyh0UqD.js} +0 -0
- /package/dist/public/assets/{lua-xZf4SjJ3.js → lua-Dxo01oIG.js} +0 -0
- /package/dist/public/assets/{mcp-consent-store-CsArEV-K.js → mcp-consent-store-BivjPpLe.js} +0 -0
- /package/dist/public/assets/{min-GIYS61kh.js → min-B52VabRz.js} +0 -0
- /package/dist/public/assets/{minus-BqVmr9UG.js → minus-dDmjPbo4.js} +0 -0
- /package/dist/public/assets/{miss-dialog-store-CU8cCSmK.js → miss-dialog-store-DRsTysxn.js} +0 -0
- /package/dist/public/assets/{overlay-layers-gL_2dQqz.js → overlay-layers-DGwgwjHg.js} +0 -0
- /package/dist/public/assets/{panel-Boo96yEj.js → panel-Bjv8raTx.js} +0 -0
- /package/dist/public/assets/{panel-right-open-mOxBnqyo.js → panel-right-open-EPKoGQBE.js} +0 -0
- /package/dist/public/assets/{panzoom.es-CKxXrXUu.js → panzoom.es-JQqfaE6_.js} +0 -0
- /package/dist/public/assets/{paperclip-mdBEQ0WS.js → paperclip-DSaV3jTp.js} +0 -0
- /package/dist/public/assets/{parse-api-error-9c-Rs5WJ.js → parse-api-error-CGRziNbI.js} +0 -0
- /package/dist/public/assets/{path-BYW9Uhnc.js → path-BTSnI4V0.js} +0 -0
- /package/dist/public/assets/{pdf-CGE64eYM.js → pdf-DDNlrbvd.js} +0 -0
- /package/dist/public/assets/{pdf.worker-Cxt0GdPg.js → pdf.worker-MgQT7Lb-.js} +0 -0
- /package/dist/public/assets/{perl-BwX6Ksou.js → perl-L_d0-K7D.js} +0 -0
- /package/dist/public/assets/{properties-DagD85j5.js → properties-B1mL7FEj.js} +0 -0
- /package/dist/public/assets/{r-DUn7ZAa_.js → r-D1HJ6WJD.js} +0 -0
- /package/dist/public/assets/{receive-store-C-X60pJ_.js → receive-store-CqvpoBpo.js} +0 -0
- /package/dist/public/assets/{refresh-cw-CsRXA9N2.js → refresh-cw-DaKSQ-xL.js} +0 -0
- /package/dist/public/assets/{rough.esm-xhKrnp4d.js → rough.esm-FREjYXwx.js} +0 -0
- /package/dist/public/assets/{ruby-BIPfMRfv.js → ruby-BWJ7ZkjF.js} +0 -0
- /package/dist/public/assets/{share-metadata-rows-Ci33wJ2t.js → share-metadata-rows-c17l05D6.js} +0 -0
- /package/dist/public/assets/{shell-Cq5Ihso3.js → shell-ul8ysUs1.js} +0 -0
- /package/dist/public/assets/{skeleton-CD1oYYfF.js → skeleton-Zj40UZU5.js} +0 -0
- /package/dist/public/assets/{skill-scope-B58Ho5RB.js → skill-scope-CEk2zosm.js} +0 -0
- /package/dist/public/assets/{sortable.esm-Dngr9VJ1.js → sortable.esm-BuA5-2It.js} +0 -0
- /package/dist/public/assets/{sql-C1ugTeux.js → sql-BJVFbIWu.js} +0 -0
- /package/dist/public/assets/{square-pen-BbETm_LZ.js → square-pen-BETfUJNH.js} +0 -0
- /package/dist/public/assets/{src-o9HvXeVZ.js → src-CIOeKeVw.js} +0 -0
- /package/dist/public/assets/{startup-marks-BFvG00Uu.js → startup-marks-Bl-kvAXX.js} +0 -0
- /package/dist/public/assets/{stex-BRz73jPo.js → stex-WCjgSIWy.js} +0 -0
- /package/dist/public/assets/{swift-DG2ERlv4.js → swift-BmJYIPlb.js} +0 -0
- /package/dist/public/assets/{textarea-BzPGvj03.js → textarea-Cl4IJ1LU.js} +0 -0
- /package/dist/public/assets/{thread-draft-staging-CcGOkG5T.js → thread-draft-staging-Df0IT4FR.js} +0 -0
- /package/dist/public/assets/{timeline-diff-store-BYDskbwd.js → timeline-diff-store-B-Ea84Rl.js} +0 -0
- /package/dist/public/assets/{toml-_AQXZoMV.js → toml-BOOm8Wvq.js} +0 -0
- /package/dist/public/assets/{trash-2-4ZuuBm4P.js → trash-2-YBQNhePb.js} +0 -0
- /package/dist/public/assets/{triangle-alert-BB_1Bz59.js → triangle-alert-Dk8dL1G6.js} +0 -0
- /package/dist/public/assets/{undo-2-BxTugTzj.js → undo-2-1g5Fg6rD.js} +0 -0
- /package/dist/public/assets/{use-apply-config-color-theme-C5xWr7J7.js → use-apply-config-color-theme-CFZIZmfZ.js} +0 -0
- /package/dist/public/assets/{use-collab-url-D_rLtDaU.js → use-collab-url-DrWInPcY.js} +0 -0
- /package/dist/public/assets/{use-installed-clis-a0f5-upA.js → use-installed-clis-BpdGnrVu.js} +0 -0
- /package/dist/public/assets/{use-settings-route-xhvjUTtD.js → use-settings-route-DHvE2hA4.js} +0 -0
- /package/dist/public/assets/{use-workspace-D6_5od5W.js → use-workspace-Csf6sHD8.js} +0 -0
- /package/dist/public/assets/{useLintConfigViewMode-RQ4d4hHC.js → useLintConfigViewMode-15VleUG7.js} +0 -0
- /package/dist/public/assets/{wrench-BHZvMfZp.js → wrench-86_Xzzag.js} +0 -0
- /package/dist/public/assets/{x-BL2rz544.js → x-M_y7ybHr.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as e,d as t,l as n}from"./write-project-skill-BIBvYtT6.mjs";import{d as r,v as i}from"./init-DXZ5ZL-d.mjs";import{t as a}from"./mcp-migrate-event-CWx0WLdE.mjs";import{homedir as o}from"node:os";function s(e){let r=e.logger??u,i=e.home??o(),a=[];if(e.reclaimDisableEnv===`1`)return r({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of n){let n=t[o],s=c(()=>n.configPath(``,i));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:n,home:i,cwd:``,configPath:s,configPathOverride:void 0,logger:r})),n.projectConfigPath){let t=n.projectConfigPath,i=c(()=>t(e.projectDir));i!==null&&a.push(l({scope:`project`,editorId:o,target:n,home:void 0,cwd:e.projectDir,configPath:i,configPathOverride:i,logger:r}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(t){let n={scope:t.scope,editorId:t.editorId,configPath:t.configPath},o=r(t.target,t.cwd,t.home,t.configPathOverride);if(o===null)return{...n,outcome:`no-entry`};if(e(o))return{...n,outcome:`canonical`};t.logger(a({scope:t.scope,surface:`cli-repair`,editorId:t.editorId,configPath:t.configPath,priorEntry:o}));let s=i(t.target,t.cwd,{mode:`published`,skipAvailabilityCheck:!0},t.home,t.configPathOverride);if(s.action===`failed`){let e=s.error??`unknown write failure`;return t.logger({event:`mcp-config-repair-write-failed`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,error:e}),{...n,outcome:`write-failed`,error:e}}return s.action===`declined`?(t.logger({event:`mcp-config-repair-declined`,scope:t.scope,editorId:t.editorId,configPath:t.configPath,reason:s.declineReason}),{...n,outcome:`declined`}):{...n,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
|
|
2
|
+
//# sourceMappingURL=repair-mcp-configs-CVA75ZZh.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as e}from"./src-C9yhZBbO.mjs";import{Qn as t,Zn as n,ar as r,dr as i,fr as a,nr as o,rr as s,sr as c,tr as l}from"./src-CJQ7Tr0x.mjs";import{
|
|
1
|
+
import{R as e}from"./src-C9yhZBbO.mjs";import{Qn as t,Zn as n,ar as r,dr as i,fr as a,nr as o,rr as s,sr as c,tr as l}from"./src-CJQ7Tr0x.mjs";import{T as u,a as d,d as f,f as p,o as m,s as h,t as g}from"./write-project-skill-BIBvYtT6.mjs";import{n as _,s as v,t as y}from"./colors-BsmVIwfM.mjs";import{dirname as b,join as x,relative as S,resolve as C}from"node:path";import{existsSync as w,mkdirSync as T,readFileSync as E,readdirSync as D,rmSync as O,statSync as k,writeFileSync as A}from"node:fs";import{homedir as j}from"node:os";import{createInterface as M}from"node:readline/promises";const N={existsSync:e=>w(e),isDirectory:e=>{try{return k(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>D(e),readFileSync:e=>E(e),writeFileSync:(e,t)=>{A(e,t)},mkdirSync:(e,t)=>{T(e,t)},rmSync:(e,t)=>{O(e,t)}},P={resolveProjectBundledSkillDir:()=>c(`project`,{checkDesktop:!1}),resolveUserBundledSkillDir:e=>c(e,{checkDesktop:!1}),readBundledVersion:()=>t(),readRecordedVersion:e=>l(e,`cli-hosts`),writeRecordedVersion:(e,t)=>s(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>r(e),readBundleDecision:(e,t)=>n(e,t),writeBundleDecision:(e,t,n)=>o(e,t,n),removeBundleFromDisk:(e,t)=>h(e,t)};function F(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function I(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(b(t),{recursive:!0}),L(e,t,n)}function L(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=x(e,r),a=x(t,r);n.isDirectory(i)?L(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function R(e,t,n,r,i,a){let o=[],s=x(e,`.agents`,`skills`,t),c=!1;if(r.existsSync(s))o.push({kind:`central`,path:s,outcome:`skipped-present`});else try{I(n,s,r),c=!0,o.push({kind:`central`,path:s,outcome:`written`}),i({event:`user-skill-reclaim-central-written`,scope:`user`,path:s,preexisting:!1,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`central`,path:s,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-central-failed`,scope:`user`,path:s,error:t})}for(let c of p){let l=x(e,c.hostDir),u=x(l,`skills`,t);if(u===s){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-collapsed-with-central`});continue}if(!r.existsSync(l)){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-host-absent`});continue}if(r.existsSync(u)){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-present`});continue}try{I(n,u,r),o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`written`}),i({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,preexisting:!1,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,error:t})}}return{entries:o,centralWritten:c}}function z(e,t){if(!e)return!1;try{return t.existsSync(e)?t.readFileSync(e).toString(`utf8`).includes(`# ok-mcp-`):!1}catch{return!1}}function B(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of p){let o=x(e,t.hostDir,`skills`,`open-knowledge`),s=x(o,`SKILL.md`);if(n.existsSync(s)){a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`present`});continue}let c=f[t.editorId]?.projectConfigPath?.(e);if(!z(c,n)){a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:o});continue}try{g(o,e),I(i,o,n),a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`created`}),r({event:`project-skill-reclaim-created`,scope:`project`,editorId:t.editorId,path:o})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:o,error:n})}}return{outcome:`done`,entries:a}}async function V(t,n,r,o){let s=e=>{n.recordEvent(e).catch(()=>{})},c=()=>new Date().toISOString(),l;try{l=await n.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return o({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let u;try{u=await n.readRecordedVersion(t)}catch(e){o({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),u=null}let d=[],f=null;for(let e of a)try{d.push({id:e,sourceDir:n.resolveUserBundledSkillDir(e)})}catch(e){f=e instanceof Error?e.message:String(e)}if(d.length===0)return o({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:f??`no user-global bundles`}),s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,reason:`bundle-missing:${f}`}),{outcome:`skipped`,reason:`bundle-missing`};let p=[];for(let a of d){let s=i[a.id],c=r.existsSync(x(t,`.agents`,`skills`,s)),l=await n.readBundleDecision(t,s).catch(()=>null);if(!e(l,{installedOnDisk:c})){if(c)try{n.removeBundleFromDisk(t,a.id),o({event:`user-skill-reclaim-bundle-declined-removed`,scope:`user`,bundle:a.id})}catch(e){o({event:`user-skill-reclaim-bundle-remove-failed`,scope:`user`,bundle:a.id,error:e instanceof Error?e.message:String(e)})}continue}if(l===null&&c)try{await n.writeBundleDecision(t,s,!0)}catch(e){o({event:`user-skill-reclaim-grandfather-write-failed`,scope:`user`,bundle:a.id,error:e instanceof Error?e.message:String(e)})}p.push(a)}if(p.length===0)return{outcome:`skipped`,reason:`all-bundles-declined`};let m=p.every(e=>r.existsSync(x(t,`.agents`,`skills`,i[e.id])));if(u!==null&&u===l&&m)return o({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:l}),{outcome:`skipped`,reason:`version-current`};let h=[],g=d.length===a.length,_=[];for(let{id:e,sourceDir:n}of p){let a=R(t,i[e],n,r,o,l);h.push(...a.entries),_.push({id:e,centralWritten:a.centralWritten})}let v=h.some(e=>e.kind===`central`&&e.outcome===`failed`);if(g&&!v){let e=null;try{await n.writeRecordedVersion(t,l),o({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:l})}catch(t){e=t instanceof Error?t.message:String(t),o({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:l,error:e})}for(let{id:t,centralWritten:n}of _)s({ts:c(),surface:`cli-start`,target:`cli-hosts`,bundle:t,outcome:e===null?n?`installed`:`skip-current`:`failed`,version:l,...e===null?{}:{reason:`state-write-failed:${e}`}})}else{let e=h.some(e=>e.kind===`host`&&e.outcome===`failed`);s({ts:c(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,version:l,reason:g?e?`all-writes-failed`:`central-write-failed`:`bundle-unresolved`})}return{outcome:`done`,version:l,entries:h}}async function H(e){let t=e.logger??F,n=e.fs??N,r=e.home??j(),i={...P,...e.deps};if(e.reclaimDisableEnv===`1`)return t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`};let a=B(e.projectDir,i,n,t),o=await V(r,i,n,t),s=m(r),c=[],l=!1,u=!1;if(s.skillDirs.length>0||s.emptyDirs.length>0)if(e.confirmLegacyCleanup&&await e.confirmLegacyCleanup(s)){try{c=d(r,s)}catch(e){u=!0,t({event:`legacy-fanout-cleanup-refused`,scope:`user`,error:e instanceof Error?e.message:String(e)})}for(let e of c)t({event:`legacy-fanout-path-removed`,scope:`user`,path:e})}else l=!0,t({event:`legacy-fanout-cleanup-declined`,scope:`user`});return{status:`done`,project:a,user:o,legacySwept:c,legacyCleanupDeclined:l,legacyCleanupFailed:u}}function U(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`&&e.user.reason!==`all-bundles-declined`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function W(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`present`).length,r=e.project.entries.filter(e=>e.outcome===`created`).length,i=e.project.entries.filter(e=>e.outcome===`no-token`).length,a=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} present, ${r} created, ${i} no-token, ${a} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-present`).length,i=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,a=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} present, ${i} skipped, ${a} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return e.legacySwept.length>0?t.push(` Cleanup: removed ${e.legacySwept.length} path(s) from a pre-0.42 install.`):e.legacyCleanupFailed?t.push(` Cleanup: failed — see logs; pre-0.42 directories left in place.`):e.legacyCleanupDeclined&&t.push(` Cleanup: declined — pre-0.42 directories left in place.`),t.join(`
|
|
2
2
|
`)}function G(){return new u(`repair-skills`).description("Refresh bundled SKILL.md files for installed AI editors (project-local + user-global). Runs automatically during `ok start`; this command forces an explicit sweep.").option(`-y, --yes`,`Skip the confirmation prompt for removing directories left by a pre-0.42 install.`).action(async e=>{let t=await H({projectDir:C(process.cwd()),reclaimDisableEnv:process.env.OK_RECLAIM_DISABLE??null,confirmLegacyCleanup:t=>K(t,{yes:e.yes===!0})});process.stdout.write(`${W(t)}\n`),process.exitCode=U(t)})}async function K(e,t){let n=j(),r=e=>`~/${S(n,e)}`,i=t.input??process.stdin,a=[``,y(`A previous version of OpenKnowledge installed its skill into agent tools you may never have used.`),_(`(Versions before 0.42 wrote to every host a third-party installer knew about — see issue #820.)`)];if(e.skillDirs.length>0&&a.push(``,`${y(`Remove OpenKnowledge skills:`)} ${e.skillDirs.length}`,...e.skillDirs.map(e=>` ${r(e)}`)),e.emptyDirs.length>0){let t=e.skillDirs.length>0?`Then remove these, which hold nothing else once the above are gone:`:`Remove these empty directories, left behind by that install:`;a.push(``,`${y(t)} ${e.emptyDirs.length}`,...e.emptyDirs.map(e=>` ${r(e)}`))}if(a.push(``,_(`Nothing outside these paths is touched. A directory that still holds anything is kept.`)),process.stdout.write(`${a.join(`
|
|
3
3
|
`)}\n`),t.yes)return!0;if(!i.isTTY)return process.stdout.write(`${v("Not a terminal — skipping cleanup. Re-run with `ok repair-skills --yes` to remove these.")}\n`),!1;let o=M({input:i,output:process.stdout});try{let e=(await o.question(`\n${y(`Remove them?`)} ${_(`[y/N] `)}`)).trim().toLowerCase();return e===`y`||e===`yes`}finally{o.close()}}export{G as n,H as t};
|
|
4
|
-
//# sourceMappingURL=repair-skills-
|
|
4
|
+
//# sourceMappingURL=repair-skills-B5s_18d0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./repair-skills-B5s_18d0.mjs";export{e as repairSkills};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{o as e}from"./chunk-DTipWd-i.mjs";import{Ao as t,X as n,Z as r,ms as i,ps as a}from"./src-C9yhZBbO.mjs";import{Vr as o,at as s,it as c,nt as l,rt as u,si as d,vn as f,xa as p}from"./src-CJQ7Tr0x.mjs";import{q as m}from"./sleep-TXRFWg8x.mjs";import{O as h,P as g}from"./fs-traced-wfI5VoOz.mjs";import{S as _,u as v,v as y,x as b}from"./server-lock-CCS3UzJQ.mjs";import{t as x}from"./yazl-BafwB467.mjs";import{
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{Ao as t,X as n,Z as r,ms as i,ps as a}from"./src-C9yhZBbO.mjs";import{Vr as o,at as s,it as c,nt as l,rt as u,si as d,vn as f,xa as p}from"./src-CJQ7Tr0x.mjs";import{q as m}from"./sleep-TXRFWg8x.mjs";import{O as h,P as g}from"./fs-traced-wfI5VoOz.mjs";import{S as _,u as v,v as y,x as b}from"./server-lock-CCS3UzJQ.mjs";import{t as x}from"./yazl-BafwB467.mjs";import{T as S,b as C,d as w,i as T,x as ee}from"./write-project-skill-BIBvYtT6.mjs";import{c as te}from"./colors-BsmVIwfM.mjs";import"./acp-harness-probe-Dgh1Ipmo.mjs";import{D as E,E as D,S as ne,T as O,_ as k,b as re,o as ie,v as A}from"./init-DXZ5ZL-d.mjs";import{n as ae}from"./constants-BMyLpSJ8.mjs";import{t as j}from"./is-object-ByG7RnjH.mjs";import"./loader-di8ingCA.mjs";import"./preview-CCY8KBS2.mjs";import{execSync as oe,spawnSync as M}from"node:child_process";import{basename as N,dirname as P,isAbsolute as se,join as F,relative as ce,resolve as I,sep as le}from"node:path";import{cpSync as ue,createWriteStream as de,existsSync as L,lstatSync as fe,mkdirSync as R,mkdtempSync as pe,readFileSync as z,readdirSync as me,readlinkSync as he,rmSync as ge,statSync as _e,writeFileSync as B}from"node:fs";import{arch as ve,freemem as ye,homedir as be,hostname as xe,platform as Se,release as Ce,tmpdir as we,totalmem as Te,type as Ee,uptime as De}from"node:os";import{realpath as V}from"node:fs/promises";import{createHash as Oe}from"node:crypto";var H=m();const ke=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`deinit`,`auth`]);function Ae(e,t,n=f){if(e!==void 0&&!ke.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let je=null;function Me(e){je=e}function Ne(){return je??process.cwd()}function Pe(){return F(be(),`.ok`,`bug-reports`)}function Fe(e=new Date){let t=e.toISOString().replace(/[:.]/g,`-`),n=Pe(),r=`${t}-bugreport`,i=F(n,`${r}.zip`);for(let e=2;L(i);e+=1)i=F(n,`${r}-${e}.zip`);return i}function Ie(e,t){let n=F(e,`.ok`,`config.yml`);if(L(n))try{let e=z(n,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch(e){t?.warn({configPath:n,err:e},`bug-report: failed to read .ok/config.yml for project slug; using path-hash fallback`)}return L(F(e,`.ok`))?Oe(`sha256`).update(I(e)).digest(`hex`).slice(0,12):null}function Le(){let e={timestamp:new Date().toISOString(),platform:Se(),osType:Ee(),osRelease:Ce(),hostname:`[redacted]`,uptime:De(),freeMem:ye(),totalMem:Te(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=oe(`sw_vers -productVersion 2>/dev/null`,o({encoding:`utf8`})).trim()}catch{}try{let t=F(__dirname,`..`,`..`,`package.json`);L(t)&&(e.okVersion=JSON.parse(z(t,`utf8`)).version)}catch{}return e}function Re(e,t){return ze(e,t).files}function ze(e,t){if(!L(t))return{files:[]};let n=me(t).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>F(t,e));if(e&&n.length>0){let t=n.filter(t=>{try{return z(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});t.length>0&&(n=t)}return{files:n}}function Be(e){let t=F(e,`.ok`,`local`);return L(t)?{files:[`server.lock`,`last-spawn-error.log`,n].map(e=>F(t,e)).filter(e=>L(e))}:{files:[]}}function Ve(e){let t=F(e,`.ok`,`local`,`logs`);return L(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>F(t,e)).filter(e=>L(e))}:{files:[]}}function He(e){if(e.redact){let{redacted:t,patterns:n,lineCount:r}=i(e.content);e.zipfile.addBuffer(Buffer.from(t,`utf8`),e.name),e.bundleFiles.push(e.name),n.length>0&&e.redactions.push({file:e.name,lineCount:r,patterns:n})}else e.zipfile.addBuffer(Buffer.from(e.content,`utf8`),e.name),e.bundleFiles.push(e.name)}function U(e){for(let t of e.files)try{He({zipfile:e.zipfile,name:`${e.prefix}/${N(t)}`,content:z(t,`utf8`),redact:e.redact,bundleFiles:e.bundleFiles,redactions:e.redactions})}catch(n){e.logger?.warn({file:t,prefix:e.prefix,err:n},`bug-report: skipped unreadable file`)}}async function Ue(t){let{redact:n,outputPath:r,logger:i}=t,o=t.userLogsDir??F(be(),`.ok`,`logs`),s=t.projectDir?Ie(t.projectDir,i):null;R(P(r),{recursive:!0}),i?.info({projectSlug:s},`gathering diagnostic data`);let c=Le();c.desktop=t.desktop??null;let{files:l}=ze(s,o),{files:u}=t.projectDir?Be(t.projectDir):{files:[]},{files:d}=t.projectDir?Ve(t.projectDir):{files:[]};i?.info({logFileCount:l.length,lockFileCount:u.length,localSinkFileCount:d.length},`files collected`);let f=[],p=[],{ZipFile:m}=await import(`./yazl-vwTkB7U0.mjs`).then(t=>e(t.default,1)),h=new m;U({zipfile:h,files:l,prefix:`logs`,redact:n,bundleFiles:p,redactions:f,logger:i}),U({zipfile:h,files:u,prefix:`lockdir`,redact:n,bundleFiles:p,redactions:f,logger:i}),U({zipfile:h,files:d,prefix:`local-logs`,redact:n,bundleFiles:p,redactions:f,logger:i});for(let e of t.extraFiles??[])try{let t=z(e.sourcePath),n=`extra/${e.zipName??N(e.sourcePath)}`;h.addBuffer(t,n),p.push(n)}catch(t){i?.warn({sourcePath:e.sourcePath,err:t},`extra file unreadable; omitted from bundle`)}t.note&&He({zipfile:h,name:`note.txt`,content:t.note,redact:n,bundleFiles:p,redactions:f});let g=JSON.stringify(c,null,2);h.addBuffer(Buffer.from(g,`utf8`),`sysinfo.json`),p.push(`sysinfo.json`);let _={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:s,files:p,redactions:f,sysinfo:c};h.addBuffer(Buffer.from(JSON.stringify(_,null,2),`utf8`),`MANIFEST.json`);let v=f.reduce((e,t)=>e+t.lineCount,0),y=[`# Bug Report Bundle`,``,`Generated: ${_.generatedAt}`,`Project: ${s??`(unscoped)`}`,`Discipline version: ${_.disciplineVersion}`,``,`## Contents`,``,...p.map(e=>`- ${e}`),``,`## Privacy`,``,...n?[`This bundle was auto-redacted before packaging.`,`Patterns checked: ${a.join(`, `)}`,v>0?`${v} line(s) were scrubbed across ${f.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.`]:[`Redaction was disabled for this bundle; file contents are unmodified.`]].join(`
|
|
2
2
|
`);h.addBuffer(Buffer.from(y,`utf8`),`README.md`),h.end();let b=de(r);return h.outputStream.pipe(b),await new Promise((e,t)=>{b.on(`close`,e),b.on(`error`,t)}),i?.info({bundlePath:r,fileCount:p.length,redactionCount:v},`bundle written`),{zipPath:r,summary:{projectSlug:s,files:p,redactions:f,redactedLineCount:v,generatedAt:_.generatedAt}}}var We=e(x(),1),W=e(te(),1);function G(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function Ge(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function K(e,t){if(typeof e==`string`)return G(e,t.contentDir);if(Array.isArray(e))return e.map(e=>K(e,t));if(!Ge(e))return e;let n={};for(let[r,i]of Object.entries(e))n[r]=K(i,t);return n}function Ke(e,t){let n=z(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
|
|
3
3
|
`),i=n.split(`
|
|
4
4
|
`),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=K(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}B(e,r?`${a.join(`
|
|
@@ -7,7 +7,7 @@ import{o as e}from"./chunk-DTipWd-i.mjs";import{Ao as t,X as n,Z as r,ms as i,ps
|
|
|
7
7
|
`)?`
|
|
8
8
|
`:``;B(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=G(n,t.contentDir);r!==n&&B(e,r)}}function Je(e,t){let n=z(e,`utf-8`),r=G(n,t.contentDir);r!==n&&B(e,r)}function Ye(e){try{return me(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>F(e,t.name))}catch{return[]}}const Xe=new Set([`agent-presence.json`,`agent-effects.json`,`runtime.json`]);function Ze(e){return/\.log\.\d+$/.test(e)}function Qe(e){return e.endsWith(`.jsonl`)||e.endsWith(`.log`)||Ze(e)}function $e(e){let t={contentDir:e.contentDir};for(let n of[`telemetry`,`logs`,`process`])for(let r of Ye(F(e.stagingDir,n)))Qe(r)?Ke(r,t):r.endsWith(`.json`)?qe(r,t):Je(r,t);for(let n of Ye(F(e.stagingDir,`state`))){let e=N(n);n.endsWith(`.jsonl`)?Ke(n,t):Xe.has(e)?qe(n,t):Je(n,t)}}const et=[`.ok`,`local`,`telemetry`],tt=[`.ok`,`local`,`logs`],nt=[`.ok`,`local`,`loss-capture`],rt=`spans-current.jsonl`,it=`spans-prev.jsonl`,at=`server-current.jsonl`,ot=`server-prev.jsonl`,st=`loss-current.jsonl`,ct=`loss-prev.jsonl`;function lt(e){return F(e,...et,rt)}function ut(e){return F(e,...et,it)}function dt(e){return F(e,...tt,at)}function ft(e){return F(e,...tt,ot)}function pt(e){return F(e,...nt,st)}function mt(e){return F(e,...nt,ct)}const q=1e3;async function ht(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout(q)});return t.ok?await t.text():null}catch{return null}}async function gt(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-effects`,{signal:AbortSignal.timeout(q)});return t.ok?await t.text():null}catch{return null}}async function _t(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/watcher-recent`,{signal:AbortSignal.timeout(q)});return t.ok?await t.text():null}catch{return null}}function vt(e){try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=t.decisions;return Array.isArray(n)?n.length===0?``:`${n.map(e=>JSON.stringify(e)).join(`
|
|
9
9
|
`)}\n`:null}catch{return null}}function yt(e){let t=F(e,`.git`,`ok`);if(!L(t))return null;let n=M(`git`,[`-C`,t,`log`,`--oneline`,`-50`],o({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function bt(e){let t=F(e,`.git`,`ok`);if(!L(t))return null;let n=M(`git`,[`-C`,t,`for-each-ref`,`--sort=-creatordate`,`--count=50`,`--format=%(refname)%09%(creatordate:iso-strict)%09%(contents:subject)`,`refs/checkpoints/`],o({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function xt(){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 St(){return{nodeVersion:process.version,platform:Se(),arch:ve()}}function Ct(){return process.env.OTEL_SDK_DISABLED===`false`}function J(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function wt(e){if(!L(e))return{};let t;try{t=(0,H.parse)(z(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(!J(t))return{};let n=t.telemetry;if(!J(n))return{};let r=n.localSink;return J(r)?r:{}}function Tt(e){return typeof e==`boolean`?e:void 0}function Et(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function Y(e){if(J(e))return Et(e.maxBytes)}function Dt(e){let t=wt(h(`project`,e)),n=wt(h(`project-local`,e));return{enabled:Tt(n.enabled)??Tt(t.enabled)??!0,spansMaxBytes:Y(n.spans)??Y(t.spans)??52428800,logsMaxBytes:Y(n.logs)??Y(t.logs)??26214400}}function Ot(e){return Oe(`sha256`).update(e).digest(`hex`)}function kt(e){let t=z(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}function At(e){let t=z(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 X(e,t){return L(e)?(R(P(t),{recursive:!0}),ue(e,t),!0):!1}function jt(e){let t=[],n=e=>{let r=me(e,{withFileTypes:!0});for(let i of r){let r=F(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const Mt=new Set([`.jsonl`]);function Nt(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Mt.has(e.slice(t))}const Pt=new Set([`.jsonl`,`.json`,`.txt`,`.log`,`.lock`]);function Ft(e){if(Ze(e))return!0;let t=e.lastIndexOf(`.`);return t===-1?!1:Pt.has(e.slice(t))}function It(e){let t=[];for(let n of jt(e)){let r=Lt(e,n);if(!Ft(r))continue;let{redacted:a,patterns:o,lineCount:s}=i(z(n,`utf-8`));o.length!==0&&(B(n,a),t.push({file:r,lineCount:s,patterns:o}))}return{redactions:t,redactedLineCount:t.reduce((e,t)=>e+t.lineCount,0)}}function Lt(e,t){return ce(e,t).split(le).join(`/`)}async function Rt(e){let t=I(e.contentDir),i=I(e.projectDir??e.contentDir),a=e.deps??{},o=a.fetchAgentPresence??ht,s=a.fetchAgentEffects??gt,c=a.fetchWatcherRecent??_t,l=a.readShadowHead??yt,u=a.readCheckpointRefs??bt,d=a.now??(()=>new Date),f=a.okVersion??(()=>ae),p=a.readDesktopEnv??xt,m=a.readRuntime??St,h=a.isOtlpPushEnabled??Ct,g=pe(F(we(),`ok-bundle-`));try{R(F(g,`telemetry`),{recursive:!0}),R(F(g,`logs`),{recursive:!0}),R(F(g,`state`),{recursive:!0}),X(lt(i),F(g,`telemetry`,rt)),X(ut(i),F(g,`telemetry`,it)),X(dt(i),F(g,`logs`,at)),X(ft(i),F(g,`logs`,ot));for(let t of e.userLogFiles??[])X(t,F(g,`logs`,N(t)));let _=F(i,`.ok`,`local`),v=F(_,`server.lock`),y=`not-running`,b=`no server.lock`,x=null;if(L(v)){X(v,F(g,`state`,`server.lock`));try{let e=z(v,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?x=t.port:b=`lock present but no port`}catch{b=`lock present but unparseable`}}if(x!==null){let e=await o(x);e===null?b=`agent-presence endpoint at :${x} unreachable`:(B(F(g,`state`,`agent-presence.json`),e),y=`running`,b=``);let t=await s(x);t!==null&&B(F(g,`state`,`agent-effects.json`),t);let n=await c(x);if(n!==null){let e=vt(n);e!==null&&B(F(g,`state`,`watcher-recent.jsonl`),e)}}let S=l(t);S!==null&&B(F(g,`state`,`shadow-head.txt`),S);let C=u(t);C!==null&&B(F(g,`state`,`checkpoint-refs.txt`),C),X(pt(i),F(g,`state`,st)),X(mt(i),F(g,`state`,ct)),X(F(_,`last-spawn-error.log`),F(g,`state`,`last-spawn-error.log`)),X(F(_,r),F(g,`state`,r)),X(F(_,n),F(g,`state`,n));let w=m(),T=p(),ee={ok:{version:f(),nodeVersion:w.nodeVersion,platform:w.platform,arch:w.arch},host:{desktop:T}};B(F(g,`state`,`runtime.json`),`${JSON.stringify(ee,null,2)}\n`);let te=y===`running`?`running
|
|
10
|
-
`:`not-running (${b})\n`;if(B(F(g,`state`,`server-status.txt`),te),e.processDir&&L(e.processDir)){let t=F(g,`process`);R(t,{recursive:!0}),ue(e.processDir,t,{recursive:!0})}let E=e.redact===!0;E&&$e({stagingDir:g,contentDir:t}),e.note&&B(F(g,`note.txt`),e.note);let D=null;e.scrubSecrets===!0&&(D=It(g));for(let t of e.extraFiles??[])X(t.sourcePath,F(g,`extra`,t.zipName??N(t.sourcePath)))||a.logger?.warn({sourcePath:t.sourcePath},`extra file missing; omitted from bundle`);let ne=Dt(i),O=jt(g),k=[],re=0,ie=0;for(let e of O){let t=Lt(g,e),n=_e(e).size,r=Nt(t)?kt(e):0;k.push({path:t,bytes:n,lines:r}),re+=n,t.startsWith(`telemetry/`)&&Nt(t)&&(ie+=At(e))}let A={applied:E};D!==null&&(A.secretScrub=D);let ae={schemaVersion:2,createdAt:d().toISOString(),ok:{version:f(),nodeVersion:w.nodeVersion,platform:w.platform,arch:w.arch},host:{desktop:T},contentDir:{pathSha256:Ot(t),absolutePath:E?`<CONTENT_DIR>`:t},telemetry:{localSink:ne,otlpPushEnabled:h()},redaction:A,serverStatus:y,files:k};B(F(g,`manifest.json`),`${JSON.stringify(ae,null,2)}\n`);let j=O.some(e=>{try{return z(e,`utf-8`).includes(t)}catch{return!1}}),oe={totalBytes:re,fileCount:k.length,docNameCount:ie,contentDirVisible:j,redacted:E},M=!1;return{stagingDir:g,manifest:ae,summary:oe,cleanup:()=>{M||(M=!0,ge(g,{recursive:!0,force:!0}))}}}catch(e){throw ge(g,{recursive:!0,force:!0}),e}}async function zt(e){let{collected:t,outputPath:n}=e,r=P(n);if(!L(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);let i=new We.ZipFile,a=jt(t.stagingDir);for(let e of a){let n=Lt(t.stagingDir,e);i.addFile(e,n)}i.end();let o=de(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 Bt(e,t){let n=F(e,`.ok`,`config.yml`);if(L(n))try{let t=(0,H.parse)(z(n,`utf-8`)),r=j(t)?t.content:void 0,i=j(r)?r.dir:void 0;if(typeof i==`string`&&i.length>0)return I(e,i)}catch(e){t?.warn({configPath:n,err:e},`bug-report: failed to read .ok/config.yml; falling back to project root as content dir`)}return I(e)}async function Vt(e,t,n){let r=Ie(t,e.logger),i=await Rt({contentDir:Bt(t,e.logger),projectDir:t,redact:e.redact,scrubSecrets:e.redact,note:e.note,extraFiles:e.extraFiles,userLogFiles:Re(r,e.userLogsDir??F(be(),`.ok`,`logs`)),deps:{readDesktopEnv:n,logger:e.logger}});try{R(P(e.outputPath),{recursive:!0}),await zt({collected:i,outputPath:e.outputPath});let t=i.manifest.redaction.secretScrub;return{zipPath:e.outputPath,summary:{level:`full`,systemWide:!1,projectSlug:r,files:i.manifest.files.map(e=>e.path),redactions:t?.redactions??[],redactedLineCount:t?.redactedLineCount??0,generatedAt:i.manifest.createdAt}}}finally{i.cleanup()}}async function Ht(e){let{projectDir:t}=e,n=e.readDesktopEnv??xt;if(e.level===`full`&&t!==void 0)return Vt(e,t,n);let{zipPath:r,summary:i}=await Ue({projectDir:t,redact:e.redact,outputPath:e.outputPath,userLogsDir:e.userLogsDir,logger:e.logger,note:e.note,extraFiles:e.extraFiles,desktop:n()});return{zipPath:r,summary:{level:e.level,systemWide:t===void 0,projectSlug:i.projectSlug,files:i.files,redactions:i.redactions,redactedLineCount:i.redactedLineCount,generatedAt:i.generatedAt}}}function Z(e,t,n={}){let r=v(e,t);if(!L(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(z(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!_(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??b)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};if(typeof a.machineId==`string`)return a.machineId===(n.machineId??y())?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a};let o=n.host??xe();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Ut(e){return e.replace(/:\d+$/,``)}function Wt(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^(?:[\w.-]+@)?([\w.-]+):([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e?.[1].includes(`.`)||e&&t.startsWith(`git@`))return{protocol:`ssh`,hostname:e[1],owner:e[2],name:e[3]}}{let e=/^git:([\w.-]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:e[1],owner:e[2],name:e[3]}}if(!t.includes(`://`)&&!t.includes(`@`)&&!t.startsWith(`/`)){let e=/^([\w.-]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e)return{protocol:`https`,hostname:`github.com`,owner:e[1],name:e[2]}}return null}function Gt(e){let n;try{n=new URL(e)}catch{return null}if(n.protocol!==`https:`)return null;let r=t(n.hostname);if(r===null)return null;let i=n.pathname.split(`/`).filter(e=>e.length>0);if(i.length<5||i[2]!==`blob`)return null;let a,o,s,c;try{a=decodeURIComponent(i[0]),o=decodeURIComponent(i[1]),s=decodeURIComponent(i[3]),c=i.slice(4).map(e=>decodeURIComponent(e))}catch{return null}return!a||!o||!s||c.length===0||c.some(e=>e.length===0)?null:{host:r,owner:a,repo:o,branch:s,path:c.join(`/`)}}function Kt(e){let n;try{n=new URL(e)}catch{return null}if(n.protocol!==`https:`)return null;let r=t(n.hostname);if(r===null)return null;let i=n.pathname.split(`/`);if(i.length<5||i[0]!==``||i[3]!==`tree`)return null;let a=i.slice(5);a.length===1&&a[0]===``&&a.pop();let o,s,c,l;try{o=decodeURIComponent(i[1]),s=decodeURIComponent(i[2]),c=decodeURIComponent(i[4]),l=a.map(e=>decodeURIComponent(e))}catch{return null}return!o||!s||!c||l.some(e=>e.length===0)?null:{host:r,owner:o,repo:s,branch:c,path:l.join(`/`)}}function qt(e){let t=Gt(e);if(t)return{kind:`doc`,...t};let n=Kt(e);return n?{kind:`folder`,...n}:null}const Jt=`# >>> open-knowledge cli >>>`,Yt=`# <<< open-knowledge cli <<<`,Xt=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function Zt(e){return F(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const Qt={existsSync:e=>L(e),readFileSync:(e,t)=>z(e,t),lstatSync:e=>fe(e),readlinkSync:e=>he(e)};function $t(e,t=Qt){let n=Zt(e);if(!t.existsSync(n))return null;try{let e=JSON.parse(t.readFileSync(n,`utf8`));return e?.version===1?e:null}catch{return null}}function en(e){let t=e.replace(Xt,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function tn(e,t,n=Qt){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}function nn(e){return
|
|
10
|
+
`:`not-running (${b})\n`;if(B(F(g,`state`,`server-status.txt`),te),e.processDir&&L(e.processDir)){let t=F(g,`process`);R(t,{recursive:!0}),ue(e.processDir,t,{recursive:!0})}let E=e.redact===!0;E&&$e({stagingDir:g,contentDir:t}),e.note&&B(F(g,`note.txt`),e.note);let D=null;e.scrubSecrets===!0&&(D=It(g));for(let t of e.extraFiles??[])X(t.sourcePath,F(g,`extra`,t.zipName??N(t.sourcePath)))||a.logger?.warn({sourcePath:t.sourcePath},`extra file missing; omitted from bundle`);let ne=Dt(i),O=jt(g),k=[],re=0,ie=0;for(let e of O){let t=Lt(g,e),n=_e(e).size,r=Nt(t)?kt(e):0;k.push({path:t,bytes:n,lines:r}),re+=n,t.startsWith(`telemetry/`)&&Nt(t)&&(ie+=At(e))}let A={applied:E};D!==null&&(A.secretScrub=D);let ae={schemaVersion:2,createdAt:d().toISOString(),ok:{version:f(),nodeVersion:w.nodeVersion,platform:w.platform,arch:w.arch},host:{desktop:T},contentDir:{pathSha256:Ot(t),absolutePath:E?`<CONTENT_DIR>`:t},telemetry:{localSink:ne,otlpPushEnabled:h()},redaction:A,serverStatus:y,files:k};B(F(g,`manifest.json`),`${JSON.stringify(ae,null,2)}\n`);let j=O.some(e=>{try{return z(e,`utf-8`).includes(t)}catch{return!1}}),oe={totalBytes:re,fileCount:k.length,docNameCount:ie,contentDirVisible:j,redacted:E},M=!1;return{stagingDir:g,manifest:ae,summary:oe,cleanup:()=>{M||(M=!0,ge(g,{recursive:!0,force:!0}))}}}catch(e){throw ge(g,{recursive:!0,force:!0}),e}}async function zt(e){let{collected:t,outputPath:n}=e,r=P(n);if(!L(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);let i=new We.ZipFile,a=jt(t.stagingDir);for(let e of a){let n=Lt(t.stagingDir,e);i.addFile(e,n)}i.end();let o=de(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 Bt(e,t){let n=F(e,`.ok`,`config.yml`);if(L(n))try{let t=(0,H.parse)(z(n,`utf-8`)),r=j(t)?t.content:void 0,i=j(r)?r.dir:void 0;if(typeof i==`string`&&i.length>0)return I(e,i)}catch(e){t?.warn({configPath:n,err:e},`bug-report: failed to read .ok/config.yml; falling back to project root as content dir`)}return I(e)}async function Vt(e,t,n){let r=Ie(t,e.logger),i=await Rt({contentDir:Bt(t,e.logger),projectDir:t,redact:e.redact,scrubSecrets:e.redact,note:e.note,extraFiles:e.extraFiles,userLogFiles:Re(r,e.userLogsDir??F(be(),`.ok`,`logs`)),deps:{readDesktopEnv:n,logger:e.logger}});try{R(P(e.outputPath),{recursive:!0}),await zt({collected:i,outputPath:e.outputPath});let t=i.manifest.redaction.secretScrub;return{zipPath:e.outputPath,summary:{level:`full`,systemWide:!1,projectSlug:r,files:i.manifest.files.map(e=>e.path),redactions:t?.redactions??[],redactedLineCount:t?.redactedLineCount??0,generatedAt:i.manifest.createdAt}}}finally{i.cleanup()}}async function Ht(e){let{projectDir:t}=e,n=e.readDesktopEnv??xt;if(e.level===`full`&&t!==void 0)return Vt(e,t,n);let{zipPath:r,summary:i}=await Ue({projectDir:t,redact:e.redact,outputPath:e.outputPath,userLogsDir:e.userLogsDir,logger:e.logger,note:e.note,extraFiles:e.extraFiles,desktop:n()});return{zipPath:r,summary:{level:e.level,systemWide:t===void 0,projectSlug:i.projectSlug,files:i.files,redactions:i.redactions,redactedLineCount:i.redactedLineCount,generatedAt:i.generatedAt}}}function Z(e,t,n={}){let r=v(e,t);if(!L(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(z(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!_(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??b)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};if(typeof a.machineId==`string`)return a.machineId===(n.machineId??y())?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a};let o=n.host??xe();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Ut(e){return e.replace(/:\d+$/,``)}function Wt(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:Ut(e[1]),owner:e[2],name:e[3]}}{let e=/^(?:[\w.-]+@)?([\w.-]+):([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e?.[1].includes(`.`)||e&&t.startsWith(`git@`))return{protocol:`ssh`,hostname:e[1],owner:e[2],name:e[3]}}{let e=/^git:([\w.-]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:e[1],owner:e[2],name:e[3]}}if(!t.includes(`://`)&&!t.includes(`@`)&&!t.startsWith(`/`)){let e=/^([\w.-]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e)return{protocol:`https`,hostname:`github.com`,owner:e[1],name:e[2]}}return null}function Gt(e){let n;try{n=new URL(e)}catch{return null}if(n.protocol!==`https:`)return null;let r=t(n.hostname);if(r===null)return null;let i=n.pathname.split(`/`).filter(e=>e.length>0);if(i.length<5||i[2]!==`blob`)return null;let a,o,s,c;try{a=decodeURIComponent(i[0]),o=decodeURIComponent(i[1]),s=decodeURIComponent(i[3]),c=i.slice(4).map(e=>decodeURIComponent(e))}catch{return null}return!a||!o||!s||c.length===0||c.some(e=>e.length===0)?null:{host:r,owner:a,repo:o,branch:s,path:c.join(`/`)}}function Kt(e){let n;try{n=new URL(e)}catch{return null}if(n.protocol!==`https:`)return null;let r=t(n.hostname);if(r===null)return null;let i=n.pathname.split(`/`);if(i.length<5||i[0]!==``||i[3]!==`tree`)return null;let a=i.slice(5);a.length===1&&a[0]===``&&a.pop();let o,s,c,l;try{o=decodeURIComponent(i[1]),s=decodeURIComponent(i[2]),c=decodeURIComponent(i[4]),l=a.map(e=>decodeURIComponent(e))}catch{return null}return!o||!s||!c||l.some(e=>e.length===0)?null:{host:r,owner:o,repo:s,branch:c,path:l.join(`/`)}}function qt(e){let t=Gt(e);if(t)return{kind:`doc`,...t};let n=Kt(e);return n?{kind:`folder`,...n}:null}const Jt=`# >>> open-knowledge cli >>>`,Yt=`# <<< open-knowledge cli <<<`,Xt=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function Zt(e){return F(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const Qt={existsSync:e=>L(e),readFileSync:(e,t)=>z(e,t),lstatSync:e=>fe(e),readlinkSync:e=>he(e)};function $t(e,t=Qt){let n=Zt(e);if(!t.existsSync(n))return null;try{let e=JSON.parse(t.readFileSync(n,`utf8`));return e?.version===1?e:null}catch{return null}}function en(e){let t=e.replace(Xt,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function tn(e,t,n=Qt){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}function nn(e){return C(e)||ee(e)||ne(e)}const rn=10*1024*1024;function an(e,t,n,r){let i=ie(e,t,n,r);if(i.kind===`absent`||i.kind===`no-entry`)return{kind:`not-present`};if(i.kind===`decline`)return{kind:`declined`,reason:i.reason};if(!nn(i.entry))return{kind:`left-foreign`};let a;try{a=r??e.configPath(t,n)}catch{return{kind:`not-present`}}let o=e.serverName(t);return e.format===`file`?(ge(a,{force:!0}),{kind:`removed`}):e.format===`toml`?cn(a,o):e.format===`yaml`?sn(a,e.topLevelKey,o):on(a,e.topLevelKey,e.serverMapSubKey,o)}function on(e,t,n,r){let i;try{i=z(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(i,`utf-8`)>rn)return{kind:`declined`,reason:`oversize`};let{text:a,changed:o}=E(i,k(t,n,r));return o?(g(e,a,{mode:O(e)}),{kind:`removed`}):{kind:`not-present`}}function sn(e,t,n){let r;try{r=z(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(r,`utf-8`)>rn)return{kind:`declined`,reason:`oversize`};let i=r.charCodeAt(0)===65279,a=i?r.slice(1):r,o=(0,H.parseDocument)(a);if(o.errors.length>0)return{kind:`declined`,reason:`unparseable`};let s=[t,n];if(!o.hasIn(s))return{kind:`not-present`};o.deleteIn(s);let c=o.toString(),l=D(a);a.trim()===``||a.endsWith(`
|
|
11
11
|
`)?c.endsWith(`
|
|
12
12
|
`)||(c=`${c}\n`):c=c.replace(/\n+$/,``),l&&(c=c.replace(/\r\n/g,`
|
|
13
13
|
`).replace(/\n/g,`\r
|
|
@@ -16,5 +16,5 @@ import{o as e}from"./chunk-DTipWd-i.mjs";import{Ao as t,X as n,Z as r,ms as i,ps
|
|
|
16
16
|
`)||(l=`${l}\n`):l=l.replace(/\n+$/,``),o&&(l=l.replace(/\r\n/g,`
|
|
17
17
|
`).replace(/\n/g,`\r
|
|
18
18
|
`));let u=`${i?``:``}${l}`;return u!==r&&g(e,u,{mode:O(e)}),{kind:`removed`}}function ln(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function un(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function dn(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:u(r),command:r,isDesktop:ln(r)}}function fn(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function Q(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&fn(e)?`ui-orphan`:`stale`}const pn=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function mn(e){switch(e){case`running`:return W.default.green(e);case`desktop`:return W.default.blue(e);case`foreign`:return W.default.cyan(e);case`ui-orphan`:return W.default.magenta(e);case`stale`:return W.default.yellow(e)}}function hn(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function gn(e){return`${hn(e.server.usage)} | ${hn(e.ui?.usage??null)}`}function _n(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function vn(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=Q(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,_n(e),gn(e),t,String(n),un(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=mn(Q(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=W.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
|
|
19
|
-
`)}async function yn(e={}){let t=e.discover??l,n=e.inspect??Z,r=e.log??(e=>console.log(e)),i=e.resolveCommand??c,a=e.resolveUsage??s,o=await t(),u=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=dn(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&u.push(o)}if(e.json){let e=u.map(e=>({...e,displayStatus:Q(e)}));r(JSON.stringify(e,null,2));return}r(vn(e.all?u:u.filter(e=>pn.has(Q(e)))))}function bn(){return new S(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await yn({all:t.all===!0||e===`all`,json:t.json===!0})})}function xn(e,t,n={}){let r=n.isAlive??b,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function Sn(e){let t=e.inspect??(t=>Z(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=xn(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function $(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function Cn(e,t=b){let n=await l(),r=null;for(let i of n){let n=Z(i,`server`),a=Z(i,`ui`);if($(n,t)&&n.lock.port===e||$(a,t)&&a.lock.port===e)return i;r===null&&($(n,t)&&n.lock.pid===e||$(a,t)&&a.lock.pid===e)&&(r=i)}return r}function wn(e){let t=Sn({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Tn(e){return new S(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=Sn({lockDir:d(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await yn({});return}if(n===`all`){let e=await l();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=Z(n,`server`),r=Z(n,`ui`);!$(e,b)&&!$(r,b)||(wn(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await Cn(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}wn(t);return}wn(d(I(Ne(),n)))})}function En(e){return{event:`mcp-config-decline`,scope:e.scope,surface:e.surface,editorId:e.editorId,reason:e.reason}}async function Dn(e,n){let r,i;try{r=await V(I(e)),i=await V(I(P(e)))}catch{return{kind:`not-git`}}if(!On(r,i))return{kind:`symlink-escape`};let a=F(r,`.git`),o;try{o=_e(a)}catch{return{kind:`not-git`}}if(o.isDirectory()){let e;try{e=await V(a)}catch{return{kind:`not-git`}}if(!On(e,r))return{kind:`symlink-escape`}}else if(!o.isFile())return{kind:`not-git`};let s=p(r);if(s.kind!==`repository`)return{kind:`not-git`};let c=s.repository.readRemoteUrl(`origin`);if(c.kind===`unreadable`)return{kind:`not-git`};if(c.kind===`absent`)return c.reason===`config-missing`?{kind:`not-git`}:{kind:`no-origin`};let l=c.url,u=Wt(l);if(u===null)return{kind:`non-github`};let d=t(u.hostname);if(d===null)return{kind:`non-github`};let f=d===n.host.toLowerCase(),m=u.owner.toLowerCase()===n.owner.toLowerCase(),h=u.name.toLowerCase()===n.repo.toLowerCase();return!f&&m&&h?{kind:`wrong-host`,actualHost:d}:!f||!m||!h?{kind:`wrong-repo`,actualOwner:u.owner,actualRepo:u.name}:{kind:`ok`,gitRemoteUrl:`https://${d}/${u.owner}/${u.name}.git`}}function On(e,t){if(e===t)return!0;let n=ce(t,e);return n.length>0&&!n.startsWith(`..`)&&!se(n)}const kn=[{id:`mcp-config`,write(e,t,n){let r=e.projectConfigPath?.(t);if(!r)return{integration:`mcp-config`,editorId:e.id,action:`skipped-unsupported`};try{let i=A(e,t,n,void 0,r);return i.action===`written`||i.action===`overwritten`?{integration:`mcp-config`,editorId:e.id,action:i.action,path:i.configPath}:i.action===`failed`?{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:i.error??`unknown failure`}:i.action===`declined`?{integration:`mcp-config`,editorId:e.id,action:`declined`,path:i.configPath,...i.declineReason===void 0?{}:{reason:i.declineReason}}:{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:`unexpected project-scope action: ${i.action}`}}catch(t){return{integration:`mcp-config`,editorId:e.id,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}},{id:`project-skill`,write(e,t,n){try{let r=
|
|
20
|
-
//# sourceMappingURL=src-
|
|
19
|
+
`)}async function yn(e={}){let t=e.discover??l,n=e.inspect??Z,r=e.log??(e=>console.log(e)),i=e.resolveCommand??c,a=e.resolveUsage??s,o=await t(),u=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=dn(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&u.push(o)}if(e.json){let e=u.map(e=>({...e,displayStatus:Q(e)}));r(JSON.stringify(e,null,2));return}r(vn(e.all?u:u.filter(e=>pn.has(Q(e)))))}function bn(){return new S(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await yn({all:t.all===!0||e===`all`,json:t.json===!0})})}function xn(e,t,n={}){let r=n.isAlive??b,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function Sn(e){let t=e.inspect??(t=>Z(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=xn(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function $(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function Cn(e,t=b){let n=await l(),r=null;for(let i of n){let n=Z(i,`server`),a=Z(i,`ui`);if($(n,t)&&n.lock.port===e||$(a,t)&&a.lock.port===e)return i;r===null&&($(n,t)&&n.lock.pid===e||$(a,t)&&a.lock.pid===e)&&(r=i)}return r}function wn(e){let t=Sn({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Tn(e){return new S(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=Sn({lockDir:d(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await yn({});return}if(n===`all`){let e=await l();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=Z(n,`server`),r=Z(n,`ui`);!$(e,b)&&!$(r,b)||(wn(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await Cn(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}wn(t);return}wn(d(I(Ne(),n)))})}function En(e){return{event:`mcp-config-decline`,scope:e.scope,surface:e.surface,editorId:e.editorId,reason:e.reason}}async function Dn(e,n){let r,i;try{r=await V(I(e)),i=await V(I(P(e)))}catch{return{kind:`not-git`}}if(!On(r,i))return{kind:`symlink-escape`};let a=F(r,`.git`),o;try{o=_e(a)}catch{return{kind:`not-git`}}if(o.isDirectory()){let e;try{e=await V(a)}catch{return{kind:`not-git`}}if(!On(e,r))return{kind:`symlink-escape`}}else if(!o.isFile())return{kind:`not-git`};let s=p(r);if(s.kind!==`repository`)return{kind:`not-git`};let c=s.repository.readRemoteUrl(`origin`);if(c.kind===`unreadable`)return{kind:`not-git`};if(c.kind===`absent`)return c.reason===`config-missing`?{kind:`not-git`}:{kind:`no-origin`};let l=c.url,u=Wt(l);if(u===null)return{kind:`non-github`};let d=t(u.hostname);if(d===null)return{kind:`non-github`};let f=d===n.host.toLowerCase(),m=u.owner.toLowerCase()===n.owner.toLowerCase(),h=u.name.toLowerCase()===n.repo.toLowerCase();return!f&&m&&h?{kind:`wrong-host`,actualHost:d}:!f||!m||!h?{kind:`wrong-repo`,actualOwner:u.owner,actualRepo:u.name}:{kind:`ok`,gitRemoteUrl:`https://${d}/${u.owner}/${u.name}.git`}}function On(e,t){if(e===t)return!0;let n=ce(t,e);return n.length>0&&!n.startsWith(`..`)&&!se(n)}const kn=[{id:`mcp-config`,write(e,t,n){let r=e.projectConfigPath?.(t);if(!r)return{integration:`mcp-config`,editorId:e.id,action:`skipped-unsupported`};try{let i=A(e,t,n,void 0,r);return i.action===`written`||i.action===`overwritten`?{integration:`mcp-config`,editorId:e.id,action:i.action,path:i.configPath}:i.action===`failed`?{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:i.error??`unknown failure`}:i.action===`declined`?{integration:`mcp-config`,editorId:e.id,action:`declined`,path:i.configPath,...i.declineReason===void 0?{}:{reason:i.declineReason}}:{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:`unexpected project-scope action: ${i.action}`}}catch(t){return{integration:`mcp-config`,editorId:e.id,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}},{id:`project-skill`,write(e,t,n){try{let r=T(e,t,{home:n.home});return{integration:`project-skill`,editorId:e.id,action:r.action,...r.path?{path:r.path}:{},...r.error?{error:r.error}:{}}}catch(t){return{integration:`project-skill`,editorId:e.id,action:`failed`,error:t instanceof Error?t.message:String(t)}}}}];function An(e,t,n={},r=kn){let i=[];for(let a of t){let t=w[a];for(let a of r)i.push(a.write(t,e,n))}return i}function jn(e,t,n={}){return{integrations:An(e,t,n)}}export{Fe as C,Ae as D,Me as E,zt as S,Ne as T,Kt as _,Tn as a,Ht as b,Jt as c,tn as d,Zt as f,qt as g,Gt as h,Sn as i,Xt as l,en as m,Dn as n,bn as o,$t as p,En as r,an as s,jn as t,Yt as u,Wt as v,Pe as w,Rt as x,Z as y};
|
|
20
|
+
//# sourceMappingURL=src-Da5rL2HL.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Q as e,Y as t}from"./src-C9yhZBbO.mjs";import{Jr as n,Vr as r,a as i,yn as a}from"./src-CJQ7Tr0x.mjs";import{C as o,w as s}from"./write-project-skill-DPGLaFfB.mjs";import{a as c,n as l,t as u}from"./acp-harness-probe-DyGzojAs.mjs";import{n as d}from"./constants-BMl86IqT.mjs";import{spawn as f}from"node:child_process";import{basename as p,join as m,posix as h,resolve as g,win32 as _}from"node:path";import{closeSync as v,existsSync as y,mkdirSync as b,openSync as x,statSync as S}from"node:fs";import{homedir as C}from"node:os";import{rm as w}from"node:fs/promises";import{setTimeout as T}from"node:timers/promises";function E(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function D(e,t,n={}){let i=(n.spawn??f)(e,[...t],r({detached:!0,stdio:`ignore`,env:E(n.env??process.env)}));return i.unref(),i}const O=`OpenKnowledge.app`,k=`/Applications/${O}`;function A(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return S(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function j(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(M(e,k))return k;let t=m(e.homeDir??C(),`Applications`,O);return M(e,t)?t:null}function M(e,t){return N(e,m(t,`Contents`,`MacOS`,`OpenKnowledge`))}function N(e,t){try{let n=e.statSync(t);return n&&typeof n.isFile==`function`?n.isFile():!1}catch{return!1}}const ee=[`@inkeepopen-knowledge-desktop`,`OpenKnowledge`];function P(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&/\\OpenKnowledge\.exe$/i.test(e.execPath))return e.execPath;let t=e.env.LOCALAPPDATA;if(t)for(let n of ee){let r=_.join(t,`Programs`,n,`OpenKnowledge.exe`);if(N(e,r))return r}return null}function F(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&e.execPath.endsWith(`/openknowledge`))return e.execPath;let t=`/opt/OpenKnowledge/openknowledge`;return N(e,t)?t:null}function I(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`&&e.platform!==`win32`&&e.platform!==`linux`)return{available:!1,reason:`unsupported-platform`};let t;try{t=e.platform===`darwin`?j(e):e.platform===`win32`?P(e):F(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:!(e.isTTY===!0||e.platform===`win32`&&e.isTTY===void 0&&!e.env.CI)||e.env.SSH_CONNECTION||e.env.SSH_TTY||e.platform===`linux`&&!e.env.DISPLAY&&!e.env.WAYLAND_DISPLAY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function L(e,t){let n=e.log??(e=>console.error(e)),r=e.platform??process.platform;if(n("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)"),r===`darwin`){D(`open`,[`-b`,`com.inkeep.open-knowledge`],{spawn:e.spawn});return}let i=t?.bundlePath;if(!i){n(`Desktop launch skipped: no resolved desktop executable (caller bug).`);return}D(i,[],{spawn:e.spawn})}function R(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found (checked the standard install locations for this OS). Install it, or omit --mode for browser mode.`;case`darwin-only`:case`unsupported-platform`:return`Desktop app is not available on this platform. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect the desktop install (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available but launch dispatch did not fire (caller bug).`}}function z(e){return h.join(h.dirname(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const te=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function ne(e){if(e.platform!==`darwin`||!te.test(e.execPath))return null;let t=z(e.execPath);return e.exists(t)?t:null}function B(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??y,a=r[1];return a?{command:ne({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function V(e,t){return e.host??t.HOST??`127.0.0.1`}function H(e,t){return t&&(e===`::`||e===`::1`||e===`[::1]`||e===`localhost`||e===`0.0.0.0`)?{host:`127.0.0.1`,coerced:!0}:{host:e,coerced:!1}}function U(e){let t=p(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var W=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function G(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function K(t){y(t.lockDir)||b(t.lockDir,{recursive:!0});let n=x(m(t.lockDir,e),`w`),r=t.spawn??f,{PORT:i,...a}=process.env,o=B();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{v(n)}catch{}}}function q(e,t,n,r=!1){return e??(n!==void 0||r?void 0:t)}function J(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function Y(e,t,n){return e??+(t!=null&&!n)}async function X(e){let t=e.spawn??f,n=B(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=Y(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function Z(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const re=t;function ie(e,t,n=e=>w(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function ae(e,t={}){let n=t.exit??(e=>process.exit(e)),r=t.getActiveHandles??(()=>{let e=process._getActiveHandles;return e?e.call(process):null});return async()=>{let i=!1;try{await e()}catch(e){i=!0,t.log?.error({err:e},`idle-shutdown: destroy failed — exiting anyway`)}finally{let e=null;try{let t=r();if(t!==null){e={};for(let n of t){let t=n?.constructor?.name??`unknown`;e[t]=(e[t]??0)+1}}}catch{e=null}t.log?.info({event:`idle-shutdown-exit`,exitCode:+!!i,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(+!!i)}}}async function Q(e){let t=e.sigtermGraceMs??re,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>T(e)),i=e.reason??`teardown`;try{let a=e.readUiLock(),o=e.spawnedUiPid();if(a&&e.isAlive(a.pid)&&a.pid!==o)e.log?.info({pid:a.pid,port:a.port,spawnedUiPid:o},`${i}: ui.lock holder is not our spawned sibling — leaving it alone`);else if(a&&e.isAlive(a.pid))try{e.killPid(a.pid,`SIGTERM`),e.log?.info({pid:a.pid,port:a.port},`${i}: SIGTERM UI sibling`);let o=Date.now()+t;for(;Date.now()<o&&e.isAlive(a.pid);)await r(n);if(e.isAlive(a.pid))try{e.killPid(a.pid,`SIGKILL`),e.log?.warn({pid:a.pid,graceMs:t},`${i}: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:a.pid,err:t},`${i}: SIGKILL failed`)}}catch(t){e.log?.warn({pid:a.pid,err:t},`${i}: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t},`${i}: UI lookup failed; proceeding`)}}function oe(e){let{destroy:t,...n}=e;return async()=>{await Q({...n,reason:`idle-shutdown`}),await t()}}async function se(e){let{config:t,cwd:r,host:o}=e,s=e.skipAutoInit??!1,d=e.skipUiAutoSpawn??!1,f=e.idleThresholdMs??18e5,{existsSync:p,mkdirSync:m}=await import(`node:fs`),{basename:h,dirname:g}=await import(`node:path`),{bootServer:_,getLogger:v,isProcessAlive:y,readUiLock:b,resolveContentDir:x,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./src-Dmoupsem.mjs`),w=e.log??v(`start`),E=e.singleFile!==void 0,D=e.projectDir??r,O=E?i(e.singleFile).canonicalFilePath:void 0,k=O?g(O):void 0,A=O?h(O):void 0;if(!E){if(!s&&!a(r))throw new W(r);let t=process.env.OK_RECLAIM_DISABLE??null,n=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-Bk7nIh5R.mjs`)).repairMcpConfigs)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-Cc9RPEk-.mjs`)).repairLaunchJson)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-C-ey2QcX.mjs`)).repairSkills)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let j=k??x(t,r);!E&&!p(j)&&(m(j,{recursive:!0}),w.info({contentDir:j},`Created content directory`));let M=null,N=null,ee=async({lockDir:t})=>{if(M=G({uiLock:b(t),isAlive:y}),M.action===`spawn`&&!d)try{let n=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];N=K({lockDir:t,cwd:r,spawn:e.spawn,args:n}).pid??null,w.info({reason:M.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else M.action===`skip`&&w.info({port:M.port,pid:M.pid},`UI already running at port ${M.port}`)},P=e.reactShellDistDir===void 0,F=c(),I=n();{let e=S(E?D:r),t=Date.now(),n=await C(e);n!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:n,waitedMs:Date.now()-t,drainLockDir:e},n===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let L=await _({config:t,contentDir:j,projectDir:E?D:r,contentRoot:E?void 0:t.content.dir,port:e.port,host:o,...e.enableRemote===!0?{enableRemote:!0}:{},quiet:!1,detectGh:l,tokenStore:F,embeddingsKeyStore:I,...E?{ephemeral:!0,singleDocRelPath:A,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>u(e,t),attachUiSibling:P,idleShutdownMs:f,skipAutoInit:!0,...P?{spawnUiSiblingFn:ee}:{},idleShutdownHandler:t=>{let n=oe({readUiLock:()=>b(L.lockDir),spawnedUiPid:()=>N,isAlive:y,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return ae(E?ie(n,D):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});M||={action:`skip`,reason:`alive`,pid:0,port:0};let R=M,z=null;if(R.action===`skip`)z=R.port>0?R.port:null;else if(!d){let t=e.uiBindTimeoutMs??3e3;z=await Z({readUiLock:()=>b(L.lockDir),now:Date.now,sleep:e=>T(e),timeoutMs:t,pollIntervalMs:50}),z===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:L.httpServer,destroy:L.destroy,lockDir:L.lockDir,contentDir:j,port:L.port,ready:L.ready,degraded:L.degraded,uiSpawnDecision:M,spawnedUiPid:N,resolvedUiPort:z}}function ce(e){if(e===`browser`||e===`app`)return e;throw new s(`--mode must be 'browser' or 'app'`)}function le(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new s(`--ui-port must be a port number between 1 and 65535`);return t}function ue(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function $(e){let t=[`Stopping OpenKnowledge…`,`Saving pending changes and releasing the server lock — this can take a few seconds.`];return e===`SIGINT`&&t.push(`Press Ctrl+C again to force quit.`),t}async function de(e,t){let n=ue(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner--DGfdMN8.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-MGDi6UGf.mjs`),c=process.cwd(),l=t.remote!==void 0&&t.remote!==!1,u=typeof t.remote==`string`?t.remote:void 0,f=u===void 0?e:{...e,remote:{...e.remote,url:u}};process.title=U(c),l&&(typeof f.remote?.url!=`string`||f.remote.url===``)&&(console.error(o("--remote requires a public tunnel URL — pass it (`ok start --remote https://<your-tunnel-host>`) or set remote.url in .ok/config.yml.")),process.exit(78)),l&&console.warn(s([``,`⚠ REMOTE ACCESS ENABLED — no server-side authentication.`,` Anyone who can reach ${f.remote?.url} has FULL control of this`,` knowledge base, including sync, publishing, credentials, and local operations.`,` Restrict who can reach it at the tunnel: ngrok OAuth, Cloudflare Access,`,` Tailscale ACLs, or equivalent edge auth.`,``].join(`
|
|
2
|
-
`)));let p=V(t,process.env),m=H(p,l);m.coerced&&console.warn(`remote access is enabled and ${p} is not an IPv4 loopback bind — tunnels proxy to 127.0.0.1, so binding ${p} would leave the tunnel dialing a dead port. Using 127.0.0.1.`);let h=m.host,_=t.port===void 0?void 0:Number(t.port),v=process.env.PORT?Number(process.env.PORT):void 0,b=t.uiPort===void 0?void 0:Number(t.uiPort);l&&_===void 0&&v!==void 0&&console.warn(`remote access is enabled — ignoring env PORT=${process.env.PORT}; the tunnel's port mapping targets the stable remote port (${f.remote?.port}). Pass --port to override deliberately.`);let x=q(_,v,b,l)??(l?f.remote?.port:void 0);if(b!==void 0){let{readServerLock:e,resolveLockDir:t}=await import(`./src-Dmoupsem.mjs`);if(J(b,e(t(c)))){await X({cwd:c,uiPort:b});return}}let S=t.reactShellDistDir;if(l&&S===void 0){let e=import.meta.dirname??new URL(`.`,import.meta.url).pathname;S=[g(e,`public`),g(e,`../../app/dist`),g(e,`../../../app/dist`)].find(e=>y(e)),S===void 0&&console.warn(`remote access: bundled web UI not found — serving /mcp and /api only over the tunnel.`)}let C;try{C=await se({config:f,cwd:c,host:h,port:x,...b===void 0?{}:{uiPort:b},...t.serveContentAssets===void 0?{}:{serveContentAssets:t.serveContentAssets},...S?{reactShellDistDir:S}:{},...t.singleFile?{singleFile:t.singleFile}:{},...t.projectDir?{projectDir:t.projectDir}:{},...l?{enableRemote:!0}:{}})}catch(e){e instanceof W&&(console.error(o(e.message)),process.exit(1));let t=await import(`./src-Dmoupsem.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),e instanceof t.RemoteConfigError&&(console.error(o(e.message)),process.exit(78)),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(o(e.message)),process.exit(1)),b!==void 0&&fe(e,t)){await X({cwd:c,uiPort:b});return}let n=pe(e,c,t);n!==null&&(console.error(o(n)),process.exit(1)),console.error(`${o(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let w=!1,T=async e=>{if(w)return;w=!0;let[t,...n]=$(e);console.log(i(`\n${t}`));for(let e of n)console.log(a(` ${e}`));if(C.spawnedUiPid!==null)try{let{getLogger:e,isProcessAlive:t,readUiLock:n}=await import(`./src-Dmoupsem.mjs`);await Q({readUiLock:()=>n(C.lockDir),spawnedUiPid:()=>C.spawnedUiPid,isAlive:t,killPid:(e,t)=>process.kill(e,t),log:e(`start`),reason:`shutdown`})}catch(e){console.error(`${o(`ui sibling teardown failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`)}try{await C.destroy()}catch(e){console.error(`${o(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{T(`SIGINT`)}),process.once(`SIGTERM`,()=>{T(`SIGTERM`)});let E=`http://${h}:${C.port}`,D=h===`0.0.0.0`||h===`::`?`http://0.0.0.0:${C.port}`:void 0,O=C.resolvedUiPort,k=O!==null&&O>0?`http://${h}:${O}`:E;console.log(r({name:`open-knowledge`,version:d,localUrl:k,apiUrl:k===E?void 0:E,networkUrl:D,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let A={"shadow-repo":`Version history and branch-switch safety unavailable`,"file-watcher":`External file changes will not sync to the editor`,"head-watcher":`Git branch switches may cause document inconsistency`};C.ready.then(async()=>{if(C.degraded.length>0){console.log();for(let e of C.degraded){let t=A[e]??`${e} (check server logs for details)`;console.warn(` ${s(`⚠`)} ${s(e)}: ${a(t)}`)}console.log()}if(t.open){let{openBrowser:e}=await import(`./open-browser-BiK9JzSf.mjs`);e(k)}}).catch(e=>{console.error(` ${o(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}function fe(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function pe(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=m(t,`.ok`),r=n.readServerLock(e);return r?r.kind===`interactive`?`OpenKnowledge desktop is currently running on this project. Quit it or use --cwd to point elsewhere.`:r.kind===`mcp-spawned`?"An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`."}catch{return null}}function me(e){return new
|
|
1
|
+
import{Q as e,Y as t}from"./src-C9yhZBbO.mjs";import{Jr as n,Vr as r,a as i,yn as a}from"./src-CJQ7Tr0x.mjs";import{E as o,T as s}from"./write-project-skill-BIBvYtT6.mjs";import{a as c,n as l,t as u}from"./acp-harness-probe-Dgh1Ipmo.mjs";import{n as d}from"./constants-BMyLpSJ8.mjs";import{spawn as f}from"node:child_process";import{basename as p,join as m,posix as h,resolve as g,win32 as _}from"node:path";import{closeSync as v,existsSync as y,mkdirSync as b,openSync as x,statSync as S}from"node:fs";import{homedir as C}from"node:os";import{rm as w}from"node:fs/promises";import{setTimeout as T}from"node:timers/promises";function E(e){let t={...e};return delete t.ELECTRON_RUN_AS_NODE,t}function D(e,t,n={}){let i=(n.spawn??f)(e,[...t],r({detached:!0,stdio:`ignore`,env:E(n.env??process.env)}));return i.unref(),i}const O=`OpenKnowledge.app`,k=`/Applications/${O}`;function A(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return S(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function j(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(M(e,k))return k;let t=m(e.homeDir??C(),`Applications`,O);return M(e,t)?t:null}function M(e,t){return N(e,m(t,`Contents`,`MacOS`,`OpenKnowledge`))}function N(e,t){try{let n=e.statSync(t);return n&&typeof n.isFile==`function`?n.isFile():!1}catch{return!1}}const ee=[`@inkeepopen-knowledge-desktop`,`OpenKnowledge`];function P(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&/\\OpenKnowledge\.exe$/i.test(e.execPath))return e.execPath;let t=e.env.LOCALAPPDATA;if(t)for(let n of ee){let r=_.join(t,`Programs`,n,`OpenKnowledge.exe`);if(N(e,r))return r}return null}function F(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`&&e.execPath.endsWith(`/openknowledge`))return e.execPath;let t=`/opt/OpenKnowledge/openknowledge`;return N(e,t)?t:null}function I(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`&&e.platform!==`win32`&&e.platform!==`linux`)return{available:!1,reason:`unsupported-platform`};let t;try{t=e.platform===`darwin`?j(e):e.platform===`win32`?P(e):F(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:!(e.isTTY===!0||e.platform===`win32`&&e.isTTY===void 0&&!e.env.CI)||e.env.SSH_CONNECTION||e.env.SSH_TTY||e.platform===`linux`&&!e.env.DISPLAY&&!e.env.WAYLAND_DISPLAY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function L(e,t){let n=e.log??(e=>console.error(e)),r=e.platform??process.platform;if(n("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)"),r===`darwin`){D(`open`,[`-b`,`com.inkeep.open-knowledge`],{spawn:e.spawn});return}let i=t?.bundlePath;if(!i){n(`Desktop launch skipped: no resolved desktop executable (caller bug).`);return}D(i,[],{spawn:e.spawn})}function R(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found (checked the standard install locations for this OS). Install it, or omit --mode for browser mode.`;case`darwin-only`:case`unsupported-platform`:return`Desktop app is not available on this platform. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect the desktop install (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available but launch dispatch did not fire (caller bug).`}}function z(e){return h.join(h.dirname(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const te=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function ne(e){if(e.platform!==`darwin`||!te.test(e.execPath))return null;let t=z(e.execPath);return e.exists(t)?t:null}function B(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??y,a=r[1];return a?{command:ne({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function V(e,t){return e.host??t.HOST??`127.0.0.1`}function H(e,t){return t&&(e===`::`||e===`::1`||e===`[::1]`||e===`localhost`||e===`0.0.0.0`)?{host:`127.0.0.1`,coerced:!0}:{host:e,coerced:!1}}function U(e){let t=p(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var W=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function G(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function K(t){y(t.lockDir)||b(t.lockDir,{recursive:!0});let n=x(m(t.lockDir,e),`w`),r=t.spawn??f,{PORT:i,...a}=process.env,o=B();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{v(n)}catch{}}}function q(e,t,n,r=!1){return e??(n!==void 0||r?void 0:t)}function J(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function Y(e,t,n){return e??+(t!=null&&!n)}async function X(e){let t=e.spawn??f,n=B(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=Y(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function Z(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const re=t;function ie(e,t,n=e=>w(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function ae(e,t={}){let n=t.exit??(e=>process.exit(e)),r=t.getActiveHandles??(()=>{let e=process._getActiveHandles;return e?e.call(process):null});return async()=>{let i=!1;try{await e()}catch(e){i=!0,t.log?.error({err:e},`idle-shutdown: destroy failed — exiting anyway`)}finally{let e=null;try{let t=r();if(t!==null){e={};for(let n of t){let t=n?.constructor?.name??`unknown`;e[t]=(e[t]??0)+1}}}catch{e=null}t.log?.info({event:`idle-shutdown-exit`,exitCode:+!!i,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(+!!i)}}}async function Q(e){let t=e.sigtermGraceMs??re,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>T(e)),i=e.reason??`teardown`;try{let a=e.readUiLock(),o=e.spawnedUiPid();if(a&&e.isAlive(a.pid)&&a.pid!==o)e.log?.info({pid:a.pid,port:a.port,spawnedUiPid:o},`${i}: ui.lock holder is not our spawned sibling — leaving it alone`);else if(a&&e.isAlive(a.pid))try{e.killPid(a.pid,`SIGTERM`),e.log?.info({pid:a.pid,port:a.port},`${i}: SIGTERM UI sibling`);let o=Date.now()+t;for(;Date.now()<o&&e.isAlive(a.pid);)await r(n);if(e.isAlive(a.pid))try{e.killPid(a.pid,`SIGKILL`),e.log?.warn({pid:a.pid,graceMs:t},`${i}: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:a.pid,err:t},`${i}: SIGKILL failed`)}}catch(t){e.log?.warn({pid:a.pid,err:t},`${i}: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t},`${i}: UI lookup failed; proceeding`)}}function oe(e){let{destroy:t,...n}=e;return async()=>{await Q({...n,reason:`idle-shutdown`}),await t()}}async function se(e){let{config:t,cwd:r,host:o}=e,s=e.skipAutoInit??!1,d=e.skipUiAutoSpawn??!1,f=e.idleThresholdMs??18e5,{existsSync:p,mkdirSync:m}=await import(`node:fs`),{basename:h,dirname:g}=await import(`node:path`),{bootServer:_,getLogger:v,isProcessAlive:y,readUiLock:b,resolveContentDir:x,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./src-Dmoupsem.mjs`),w=e.log??v(`start`),E=e.singleFile!==void 0,D=e.projectDir??r,O=E?i(e.singleFile).canonicalFilePath:void 0,k=O?g(O):void 0,A=O?h(O):void 0;if(!E){if(!s&&!a(r))throw new W(r);let t=process.env.OK_RECLAIM_DISABLE??null,n=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-CVA75ZZh.mjs`)).repairMcpConfigs)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-BECz0463.mjs`)).repairLaunchJson)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-ByGIGa0z.mjs`)).repairSkills)({projectDir:r,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let j=k??x(t,r);!E&&!p(j)&&(m(j,{recursive:!0}),w.info({contentDir:j},`Created content directory`));let M=null,N=null,ee=async({lockDir:t})=>{if(M=G({uiLock:b(t),isAlive:y}),M.action===`spawn`&&!d)try{let n=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];N=K({lockDir:t,cwd:r,spawn:e.spawn,args:n}).pid??null,w.info({reason:M.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else M.action===`skip`&&w.info({port:M.port,pid:M.pid},`UI already running at port ${M.port}`)},P=e.reactShellDistDir===void 0,F=c(),I=n();{let e=S(E?D:r),t=Date.now(),n=await C(e);n!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:n,waitedMs:Date.now()-t,drainLockDir:e},n===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let L=await _({config:t,contentDir:j,projectDir:E?D:r,contentRoot:E?void 0:t.content.dir,port:e.port,host:o,...e.enableRemote===!0?{enableRemote:!0}:{},quiet:!1,detectGh:l,tokenStore:F,embeddingsKeyStore:I,...E?{ephemeral:!0,singleDocRelPath:A,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>u(e,t),attachUiSibling:P,idleShutdownMs:f,skipAutoInit:!0,...P?{spawnUiSiblingFn:ee}:{},idleShutdownHandler:t=>{let n=oe({readUiLock:()=>b(L.lockDir),spawnedUiPid:()=>N,isAlive:y,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return ae(E?ie(n,D):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});M||={action:`skip`,reason:`alive`,pid:0,port:0};let R=M,z=null;if(R.action===`skip`)z=R.port>0?R.port:null;else if(!d){let t=e.uiBindTimeoutMs??3e3;z=await Z({readUiLock:()=>b(L.lockDir),now:Date.now,sleep:e=>T(e),timeoutMs:t,pollIntervalMs:50}),z===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:L.httpServer,destroy:L.destroy,lockDir:L.lockDir,contentDir:j,port:L.port,ready:L.ready,degraded:L.degraded,uiSpawnDecision:M,spawnedUiPid:N,resolvedUiPort:z}}function ce(e){if(e===`browser`||e===`app`)return e;throw new o(`--mode must be 'browser' or 'app'`)}function le(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new o(`--ui-port must be a port number between 1 and 65535`);return t}function ue(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function $(e){let t=[`Stopping OpenKnowledge…`,`Saving pending changes and releasing the server lock — this can take a few seconds.`];return e===`SIGINT`&&t.push(`Press Ctrl+C again to force quit.`),t}async function de(e,t){let n=ue(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner--DGfdMN8.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-MGDi6UGf.mjs`),c=process.cwd(),l=t.remote!==void 0&&t.remote!==!1,u=typeof t.remote==`string`?t.remote:void 0,f=u===void 0?e:{...e,remote:{...e.remote,url:u}};process.title=U(c),l&&(typeof f.remote?.url!=`string`||f.remote.url===``)&&(console.error(o("--remote requires a public tunnel URL — pass it (`ok start --remote https://<your-tunnel-host>`) or set remote.url in .ok/config.yml.")),process.exit(78)),l&&console.warn(s([``,`⚠ REMOTE ACCESS ENABLED — no server-side authentication.`,` Anyone who can reach ${f.remote?.url} has FULL control of this`,` knowledge base, including sync, publishing, credentials, and local operations.`,` Restrict who can reach it at the tunnel: ngrok OAuth, Cloudflare Access,`,` Tailscale ACLs, or equivalent edge auth.`,``].join(`
|
|
2
|
+
`)));let p=V(t,process.env),m=H(p,l);m.coerced&&console.warn(`remote access is enabled and ${p} is not an IPv4 loopback bind — tunnels proxy to 127.0.0.1, so binding ${p} would leave the tunnel dialing a dead port. Using 127.0.0.1.`);let h=m.host,_=t.port===void 0?void 0:Number(t.port),v=process.env.PORT?Number(process.env.PORT):void 0,b=t.uiPort===void 0?void 0:Number(t.uiPort);l&&_===void 0&&v!==void 0&&console.warn(`remote access is enabled — ignoring env PORT=${process.env.PORT}; the tunnel's port mapping targets the stable remote port (${f.remote?.port}). Pass --port to override deliberately.`);let x=q(_,v,b,l)??(l?f.remote?.port:void 0);if(b!==void 0){let{readServerLock:e,resolveLockDir:t}=await import(`./src-Dmoupsem.mjs`);if(J(b,e(t(c)))){await X({cwd:c,uiPort:b});return}}let S=t.reactShellDistDir;if(l&&S===void 0){let e=import.meta.dirname??new URL(`.`,import.meta.url).pathname;S=[g(e,`public`),g(e,`../../app/dist`),g(e,`../../../app/dist`)].find(e=>y(e)),S===void 0&&console.warn(`remote access: bundled web UI not found — serving /mcp and /api only over the tunnel.`)}let C;try{C=await se({config:f,cwd:c,host:h,port:x,...b===void 0?{}:{uiPort:b},...t.serveContentAssets===void 0?{}:{serveContentAssets:t.serveContentAssets},...S?{reactShellDistDir:S}:{},...t.singleFile?{singleFile:t.singleFile}:{},...t.projectDir?{projectDir:t.projectDir}:{},...l?{enableRemote:!0}:{}})}catch(e){e instanceof W&&(console.error(o(e.message)),process.exit(1));let t=await import(`./src-Dmoupsem.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),e instanceof t.RemoteConfigError&&(console.error(o(e.message)),process.exit(78)),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(o(e.message)),process.exit(1)),b!==void 0&&fe(e,t)){await X({cwd:c,uiPort:b});return}let n=pe(e,c,t);n!==null&&(console.error(o(n)),process.exit(1)),console.error(`${o(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let w=!1,T=async e=>{if(w)return;w=!0;let[t,...n]=$(e);console.log(i(`\n${t}`));for(let e of n)console.log(a(` ${e}`));if(C.spawnedUiPid!==null)try{let{getLogger:e,isProcessAlive:t,readUiLock:n}=await import(`./src-Dmoupsem.mjs`);await Q({readUiLock:()=>n(C.lockDir),spawnedUiPid:()=>C.spawnedUiPid,isAlive:t,killPid:(e,t)=>process.kill(e,t),log:e(`start`),reason:`shutdown`})}catch(e){console.error(`${o(`ui sibling teardown failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`)}try{await C.destroy()}catch(e){console.error(`${o(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{T(`SIGINT`)}),process.once(`SIGTERM`,()=>{T(`SIGTERM`)});let E=`http://${h}:${C.port}`,D=h===`0.0.0.0`||h===`::`?`http://0.0.0.0:${C.port}`:void 0,O=C.resolvedUiPort,k=O!==null&&O>0?`http://${h}:${O}`:E;console.log(r({name:`open-knowledge`,version:d,localUrl:k,apiUrl:k===E?void 0:E,networkUrl:D,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let A={"shadow-repo":`Version history and branch-switch safety unavailable`,"file-watcher":`External file changes will not sync to the editor`,"head-watcher":`Git branch switches may cause document inconsistency`};C.ready.then(async()=>{if(C.degraded.length>0){console.log();for(let e of C.degraded){let t=A[e]??`${e} (check server logs for details)`;console.warn(` ${s(`⚠`)} ${s(e)}: ${a(t)}`)}console.log()}if(t.open){let{openBrowser:e}=await import(`./open-browser-BiK9JzSf.mjs`);e(k)}}).catch(e=>{console.error(` ${o(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}function fe(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function pe(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=m(t,`.ok`),r=n.readServerLock(e);return r?r.kind===`interactive`?`OpenKnowledge desktop is currently running on this project. Quit it or use --cwd to point elsewhere.`:r.kind===`mcp-spawned`?"An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`."}catch{return null}}function me(e){return new s(`start`).description(`Start the knowledge base collab server`).option(`-p, --port <port>`,`Server port`,void 0).option(`--ui-port <port>`,`Pin the ok ui sibling to <port> and connect (not exit) if a server already runs here — the worktree-preview recipe path`,le).option(`-H, --host <host>`,`Server host`,void 0).option(`--open`,`Open browser after start`).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ce).option(`--serve-content-assets`,`Serve content assets from this server (now the default; kept for compatibility)`).option(`--react-shell-dist-dir <path>`,`Serve React shell from <path> (suppresses ok ui sibling)`).option(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).option(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).option(`--remote [url]`,`Serve through a tunnel: admit requests carrying the tunnel Host with NO server-side auth (anyone who can reach the URL has full control — restrict access at the tunnel with edge auth). Bare --remote uses remote.url from .ok/config.yml; --remote <url> supplies it for this run.`).action(async t=>{let n=e();if(t.mode===`app`){t.open&&(process.stderr.write(`error: option '--mode=app' cannot be combined with '--open' (--open opens a browser tab against the local server, which app mode does not boot)
|
|
3
3
|
`),process.exit(2));let e=[];if(t.port!==void 0&&e.push(`--port`),t.uiPort!==void 0&&e.push(`--ui-port`),t.host!==void 0&&e.push(`--host`),e.length>0){let t=process.env.OK_LOG_LEVEL??`info`;(t===`debug`||t===`trace`)&&console.error(`--mode=app: ignoring ${e.join(`, `)}`)}let n=I(A());if(n.available){L({spawn:f},n);return}console.error(R(n.reason)),process.exit(1)}await de(n,t)})}export{B as C,D,L as E,ae as S,I as T,K as _,H as a,pe as b,G as c,fe as d,q as f,J as g,de as h,oe as i,U as l,ue as m,Z as n,Y as o,V as p,se as r,X as s,W as t,$ as u,me as v,A as w,ie as x,Q as y};
|
|
4
|
-
//# sourceMappingURL=start-
|
|
4
|
+
//# sourceMappingURL=start-BsQjO-tR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as e,r as t,v as n}from"./start-BsQjO-tR.mjs";export{t as bootStartServer,e as resolveHost,n as startCommand};
|
|
@@ -52,5 +52,5 @@ foreach ($d in $dirs) {
|
|
|
52
52
|
if (Test-Path -LiteralPath $probe -PathType Leaf) { & $probe -y '@inkeep/open-knowledge@latest' mcp; exit $LASTEXITCODE }
|
|
53
53
|
}
|
|
54
54
|
[Console]::Error.WriteLine('OpenKnowledge: install Node.js 24+ (npm i -g @inkeep/open-knowledge), then restart your editor')
|
|
55
|
-
exit 127`,I=`// ok-pi-bridge`,L=`${I}-v1`,ye=`ok-pi-managed-extension`;function be(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.command===`/bin/sh`){if(!Array.isArray(t.args)||t.args[0]!==`-l`||t.args[1]!==`-c`)return!1;let e=t.args[2];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command===`powershell`){if(!Array.isArray(t.args)||t.args[0]!==`-NoProfile`||t.args[1]!==`-NonInteractive`||t.args[2]!==`-Command`)return!1;let e=t.args[3];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}if(t.type===`local`&&Array.isArray(t.command)){if(t.command[0]===`/bin/sh`){if(t.command[1]!==`-l`||t.command[2]!==`-c`)return!1;let e=t.command[3];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command[0]===`powershell`){if(t.command[1]!==`-NoProfile`||t.command[2]!==`-NonInteractive`||t.command[3]!==`-Command`)return!1;let e=t.command[4];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}return!1}if(t.command===`ok-pi-managed-extension`){if(!Array.isArray(t.args))return!1;let e=t.args[0];return typeof e==`string`&&e.startsWith(L)}return!1}function R(e=process.argv[1]){if(!e)throw Error(`Cannot infer the local CLI entry for --dev-mcp because process.argv[1] is empty.`);let t=_(e);if(d(t)===`cli.mjs`&&d(f(t))===`dist`)return t;let n=t.split(v),r=n.lastIndexOf(`packages`);if(r===-1||n[r+1]!==`cli`)throw Error(`Cannot infer the repo root for --dev-mcp from ${t}. Run the local CLI from this repo so the built dist path can be derived.`);let i=n.slice(0,r);return m(i.length===0?v:i.join(v),`packages`,`cli`,`dist`,`cli.mjs`)}function z(e={}){return e.mode===`dev`?{command:M,args:[R(),`mcp`],env:{...N}}:(e.platformName??process.platform)===`win32`?{command:`powershell`,args:[`-NoProfile`,`-NonInteractive`,`-Command`,F]}:{command:`/bin/sh`,args:[`-l`,`-c`,P]}}function xe(e={}){return e.mode===`dev`?{type:`local`,enabled:!0,command:[M,R(),`mcp`],environment:{...N}}:(e.platformName??process.platform)===`win32`?{type:`local`,enabled:!0,command:[`powershell`,`-NoProfile`,`-NonInteractive`,`-Command`,F]}:{type:`local`,enabled:!0,command:[`/bin/sh`,`-l`,`-c`,P]}}function Se(e){if(typeof e!=`object`||!e)return!1;let t=e;return B(t,z({mode:`published`,platformName:`darwin`}))||B(t,z({mode:`published`,platformName:`win32`}))}function B(e,t){return Object.keys(e).length===Object.keys(t).length?Ce(e,t):!1}function Ce(e,t){if(e.command!==t.command)return!1;let n=t.args;return!Array.isArray(n)||!Array.isArray(e.args)||e.args.length!==n.length?!1:e.args.every((e,t)=>e===n[t])}function V(e,t){let n=e=>typeof e==`string`&&e.includes(`# ok-mcp`);return t===`/bin/sh`?e[0]===`-l`&&e[1]===`-c`&&n(e[2]):t===`powershell`?e[0]===`-NoProfile`&&e[1]===`-NonInteractive`&&e[2]===`-Command`&&n(e[3]):!1}function we(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.enabled===!1||typeof t.command!=`string`||!Array.isArray(t.args)?!1:V(t.args,t.command)}function Te(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.type!==`local`||t.enabled===!1||!Array.isArray(t.command))return!1;let[n,...r]=t.command;return typeof n==`string`&&V(r,n)}function H(e){return e===`win32`?y:h}function Ee(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env,i=H(t);return t===`darwin`?i.join(n,`Library`,`Application Support`):t===`win32`?r.APPDATA??i.join(n,`AppData`,`Roaming`):r.XDG_CONFIG_HOME??i.join(n,`.config`)}function De(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.claude.json`)}function U(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env;if(t===`darwin`)return h.join(n,`Library`,`Application Support`,`Claude`,`claude_desktop_config.json`);if(t===`win32`){let e=r.APPDATA??y.join(n,`AppData`,`Roaming`);return y.join(e,`Claude`,`claude_desktop_config.json`)}throw Error(`Claude Desktop is not available on ${t}. Supported: macOS, Windows.`)}function W(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.cursor`,`mcp.json`)}function Oe(e={}){let t=e.platformName??process.platform,n=e.home??w();return(e.env??process.env).CODEX_HOME??H(t).join(n,`.codex`)}function G(e={}){return H(e.platformName??process.platform).join(Oe(e),`config.toml`)}function K(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=(e.env??process.env).COPILOT_HOME??H(t).join(n,`.copilot`);return H(t).join(r,`mcp-config.json`)}function ke(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env,i=H(t);if(t===`win32`){let e=r.APPDATA??i.join(n,`AppData`,`Roaming`);return i.join(e,`opencode`)}let a=r.XDG_CONFIG_HOME??i.join(n,`.config`);return i.join(a,`opencode`)}function q(e={}){return H(e.platformName??process.platform).join(ke(e),`opencode.json`)}function Ae(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.openclaw`,`openclaw.json`)}function je(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.hermes`,`config.yaml`)}function Me(e={}){let t=e.platformName??process.platform,n=e.home??w();return(e.env??process.env).PI_CODING_AGENT_DIR??H(t).join(n,`.pi`,`agent`)}function Ne(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.gemini`,`config`,`mcp_config.json`)}function Pe(e,t){let n=H(t),r=n.join(e,`.lmstudio`,`mcp.json`),i=n.join(e,`.cache`,`lm-studio`,`mcp.json`);return t===`darwin`?[i,r]:[r,i]}function J(e={}){let t=e.platformName??process.platform,n=Pe(e.home??w(),t);return n.find(e=>b(e))||n.find(e=>b(f(e)))||n[0]}const Y={claude:{id:`claude`,label:A.claude,configPath:(e,t)=>De({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.claude`),projectConfigPath:e=>m(e,`.mcp.json`),projectSkillPath:e=>m(e,`.claude`,`skills`,`open-knowledge`,`SKILL.md`)},"claude-desktop":{id:`claude-desktop`,label:A[`claude-desktop`],configPath:(e,t)=>U({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(U({home:t}))},cursor:{id:`cursor`,label:A.cursor,configPath:(e,t)=>W({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(W({home:t})),projectConfigPath:e=>m(e,`.cursor`,`mcp.json`),projectSkillPath:e=>m(e,`.cursor`,`skills`,`open-knowledge`,`SKILL.md`)},codex:{id:`codex`,label:A.codex,configPath:(e,t)=>G({home:t}),format:`toml`,topLevelKey:`mcp_servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(G({home:t})),projectConfigPath:e=>m(e,`.codex`,`config.toml`),projectSkillPath:e=>m(e,`.codex`,`skills`,`open-knowledge`,`SKILL.md`)},copilot:{id:`copilot`,label:A.copilot,configPath:(e,t)=>K({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(K({home:t})),projectSkillPath:e=>m(e,`.github`,`skills`,`open-knowledge`,`SKILL.md`)},opencode:{id:`opencode`,label:A.opencode,configPath:(e,t)=>q({home:t}),format:`json`,topLevelKey:`mcp`,serverName:()=>o,buildEntry:(e,t)=>xe(t),scope:`global`,detectPath:(e,t)=>f(q({home:t})),projectConfigPath:e=>m(e,`opencode.json`),projectSkillPath:e=>m(e,`.opencode`,`skills`,`open-knowledge`,`SKILL.md`)},openclaw:{id:`openclaw`,label:A.openclaw,configPath:(e,t)=>Ae({home:t}),format:`json`,topLevelKey:`mcp`,serverMapSubKey:`servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.openclaw`),offerOnlyWhenDetected:!0},pi:{id:`pi`,label:A.pi,configPath:()=>{throw Error("Pi has no user-global MCP config; OK's integration is the project-scoped bridge extension at .pi/extensions/open-knowledge.ts (run `ok init` in the project).")},format:`file`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:()=>{throw Error(`Pi has no MCP entry shape; the managed bridge file is built by buildPiExtensionSource (integrations/pi-extension.ts).`)},scope:`project`,detectPath:(e,t)=>Me({home:t}),projectConfigPath:e=>m(e,`.pi`,`extensions`,`open-knowledge.ts`),projectSkillPath:e=>m(e,`.pi`,`skills`,`open-knowledge`,`SKILL.md`)},antigravity:{id:`antigravity`,label:A.antigravity,configPath:(e,t)=>Ne({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.gemini`),offerOnlyWhenDetected:!0},"lm-studio":{id:`lm-studio`,label:A[`lm-studio`],configPath:(e,t)=>J({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(J({home:t})),offerOnlyWhenDetected:!0},hermes:{id:`hermes`,label:A.hermes,configPath:(e,t)=>je({home:t}),format:`yaml`,topLevelKey:`mcp_servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.hermes`),offerOnlyWhenDetected:!0}};function Fe(e){let t=e.filter(e=>!Object.hasOwn(Y,e));if(t.length>0)throw Error(`Unknown editor(s): ${t.join(`, `)}. Valid options: ${k.join(`, `)}`);return e.map(e=>Y[e])}const Ie=[{hostDir:`.adal`,pruneRoot:`.adal`},{hostDir:`.aider-desk`,pruneRoot:`.aider-desk`},{hostDir:`.astrbot/data`,pruneRoot:`.astrbot`},{hostDir:`.augment`,pruneRoot:`.augment`},{hostDir:`.autohand`,pruneRoot:`.autohand`},{hostDir:`.bob`,pruneRoot:`.bob`},{hostDir:`.codeartsdoer`,pruneRoot:`.codeartsdoer`},{hostDir:`.codebuddy`,pruneRoot:`.codebuddy`},{hostDir:`.codeium/windsurf`,pruneRoot:`.codeium`},{hostDir:`.codemaker`,pruneRoot:`.codemaker`},{hostDir:`.codestudio`,pruneRoot:`.codestudio`},{hostDir:`.commandcode`,pruneRoot:`.commandcode`},{hostDir:`.config/crush`,pruneRoot:`.config/crush`},{hostDir:`.config/devin`,pruneRoot:`.config/devin`},{hostDir:`.config/goose`,pruneRoot:`.config/goose`},{hostDir:`.config/kimchi/harness`,pruneRoot:`.config/kimchi`},{hostDir:`.continue`,pruneRoot:`.continue`},{hostDir:`.factory`,pruneRoot:`.factory`},{hostDir:`.forge`,pruneRoot:`.forge`},{hostDir:`.grok`,pruneRoot:`.grok`},{hostDir:`.iflow`,pruneRoot:`.iflow`},{hostDir:`.inferencesh`,pruneRoot:`.inferencesh`},{hostDir:`.jazz`,pruneRoot:`.jazz`},{hostDir:`.junie`,pruneRoot:`.junie`},{hostDir:`.kilocode`,pruneRoot:`.kilocode`},{hostDir:`.kiro`,pruneRoot:`.kiro`},{hostDir:`.kode`,pruneRoot:`.kode`},{hostDir:`.lingma`,pruneRoot:`.lingma`},{hostDir:`.mcpjam`,pruneRoot:`.mcpjam`},{hostDir:`.moxby`,pruneRoot:`.moxby`},{hostDir:`.mux`,pruneRoot:`.mux`},{hostDir:`.neovate`,pruneRoot:`.neovate`},{hostDir:`.ona`,pruneRoot:`.ona`},{hostDir:`.openhands`,pruneRoot:`.openhands`},{hostDir:`.pochi`,pruneRoot:`.pochi`},{hostDir:`.qoder`,pruneRoot:`.qoder`},{hostDir:`.qoder-cn`,pruneRoot:`.qoder-cn`},{hostDir:`.qwen`,pruneRoot:`.qwen`},{hostDir:`.reasonix`,pruneRoot:`.reasonix`},{hostDir:`.roo`,pruneRoot:`.roo`},{hostDir:`.rovodev`,pruneRoot:`.rovodev`},{hostDir:`.snowflake/cortex`,pruneRoot:`.snowflake`},{hostDir:`.tabnine/agent`,pruneRoot:`.tabnine`},{hostDir:`.terramind`,pruneRoot:`.terramind`},{hostDir:`.tinycloud`,pruneRoot:`.tinycloud`},{hostDir:`.trae`,pruneRoot:`.trae`},{hostDir:`.trae-cn`,pruneRoot:`.trae-cn`},{hostDir:`.vibe`,pruneRoot:`.vibe`},{hostDir:`.zcode`,pruneRoot:`.zcode`},{hostDir:`.zencoder`,pruneRoot:`.zencoder`}],Le=[...l.map(e=>c[e]),`open-knowledge`];function X(e){if(!p(e))throw Error(`skill cleanup requires an absolute home directory; got ${JSON.stringify(e)}`);let t=_(e);if(t===v||f(t)===t)throw Error(`skill cleanup refuses to operate on the filesystem root (${t})`);return t}function Z(e,t){let n=g(e,t);if(n.startsWith(`..`)||p(n))return!1;let r=e;for(let e of n.split(v)){r=m(r,e);try{if(!x(r).isDirectory())return!1}catch{return!1}}return!0}function Re(e,t){try{return re(e).every(n=>t.has(m(e,n)))}catch{return!1}}function ze(e){let t=X(e),n=[],r=[],i=new Set;for(let e of Ie){let a=m(t,e.hostDir,`skills`);if(!Z(t,a))continue;let o=Le.map(e=>m(a,e)).filter(e=>b(e));n.push(...o);for(let e of o)i.add(e);let s=m(t,e.pruneRoot),c=a;for(;Re(c,i)&&(r.push(c),i.add(c),c!==s);){let e=f(c);if(e===c||e===t||!e.startsWith(t+v))break;c=e}}return{skillDirs:n,emptyDirs:r}}function Be(e){try{if(!x(e).isDirectory())return!1;let t=re(e);return t.length===0||t.includes(`SKILL.md`)}catch{return!1}}function Ve(e){let t=new Set,n=new Set;for(let r of Ie){let i=m(e,r.hostDir,`skills`);for(let e of Le)t.add(m(i,e));let a=m(e,r.pruneRoot),o=i;for(;n.add(o),o!==a;){let t=f(o);if(t===o||t===e||!t.startsWith(e+v))break;o=t}}return{skillDirs:t,emptyDirs:n}}function He(e,t){let n=X(e),r=Ve(n),i=[...t.skillDirs.filter(e=>!r.skillDirs.has(e)),...t.emptyDirs.filter(e=>!r.emptyDirs.has(e))];if(i.length>0)throw Error(`refusing skill cleanup — ${i.length} path(s) outside the known legacy set: ${i.join(`, `)}`);let a=[];for(let e of t.skillDirs)if(Z(n,e)&&Be(e))try{C(e,{recursive:!0,force:!0}),a.push(e)}catch{}for(let e of t.emptyDirs)if(Z(n,e))try{ie(e),a.push(e)}catch{}return a}function Q(e){let t=X(e),n=[];for(let e of l){let r=c[e];n.push({path:m(t,`.agents`,`skills`,r),bundleId:e,scope:`central`});for(let i of j)n.push({path:m(t,i.hostDir,`skills`,r),bundleId:e,scope:`host`,hostDir:i.hostDir})}return n}function Ue(e,t){let n=[];for(let r of Q(e))if(r.bundleId===t)try{C(r.path,{recursive:!0,force:!0})}catch(e){n.push(e instanceof Error?e:Error(String(e)))}if(n.length>0)throw AggregateError(n,`Failed to remove ${n.length} path(s) for ${t}`)}function We(e,t){let n;try{n=x(e)}catch(e){if(e.code!==`ENOENT`)throw e}if(n?.isSymbolicLink())throw Error(`Refusing to write through a symbolic link at ${e}. Remove the symlink and re-run project setup.`);Ke(e,t)}function Ge(e,t){Ke(e,t)}function Ke(e,t){let n;try{n=S(t)}catch{n=_(t)}let r=f(e);for(;r.length>1&&r!==v;){let t;try{t=S(r)}catch(e){if(e.code===`ENOENT`){r=f(r);continue}throw e}let i=g(n,t);if(i===``||!i.startsWith(`..`)&&!p(i))return;throw Error(`Refusing to write at ${e}: ancestor ${r} resolves to ${t}, which is outside the project directory ${n}. A symbolic link in the path likely escapes the project. Remove the symlink and re-run project setup.`)}}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qe(e,t,n){try{if(ae(n).size>10485760)return!1}catch{return!1}let r;try{r=ne(n,`utf-8`)}catch{return!1}let i=[],a=s(r.charCodeAt(0)===65279?r.slice(1):r,i,{allowTrailingComma:!0,disallowComments:!1});if(i.length>0||!$(a))return!1;let o=a[e.topLevelKey];if(!$(o))return!1;let c=e.serverMapSubKey?o[e.serverMapSubKey]:o;return $(c)?$(c[e.serverName(t)]):!1}function Je(e,t,n={}){if(e.id!==`copilot`)return!0;try{return qe(e,t,e.configPath(t,n.home))}catch{return!1}}function Ye(e,t,n={}){let r=e.projectSkillPath?.(t);if(!r)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};if(!Je(e,t,n))return{editorId:e.id,label:e.label,action:`skipped-prerequisite`,path:r};try{let n=u(`project`,{checkDesktop:!0}),i=f(r);We(i,t);let a=b(r)?`overwritten`:`written`;return C(i,{recursive:!0,force:!0}),te(f(i),{recursive:!0}),ee(n,i,{recursive:!0}),{editorId:e.id,label:e.label,action:a,path:r}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}function Xe(e,t){let n=e.projectSkillPath?.(t);if(!n)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};try{let r=f(n);return b(n)?(Ge(r,t),C(r,{recursive:!0,force:!0}),{editorId:e.id,label:e.label,action:`removed`,path:n}):{editorId:e.id,label:e.label,action:`not-present`,path:n}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:n,error:t instanceof Error?t.message:String(t)}}}export{he as C,Fe as S,_e as T,we as _,He as a,Te as b,Q as c,Y as d,j as f,z as g,ye as h,Ye as i,k as l,L as m,Ge as n,ze as o,I as p,Xe as r,Ue as s,We as t,A as u,be as v,pe as w,Ee as x,Se as y};
|
|
56
|
-
//# sourceMappingURL=write-project-skill-
|
|
55
|
+
exit 127`,I=`// ok-pi-bridge`,L=`${I}-v1`,ye=`ok-pi-managed-extension`;function be(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.command===`/bin/sh`){if(!Array.isArray(t.args)||t.args[0]!==`-l`||t.args[1]!==`-c`)return!1;let e=t.args[2];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command===`powershell`){if(!Array.isArray(t.args)||t.args[0]!==`-NoProfile`||t.args[1]!==`-NonInteractive`||t.args[2]!==`-Command`)return!1;let e=t.args[3];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}if(t.type===`local`&&Array.isArray(t.command)){if(t.command[0]===`/bin/sh`){if(t.command[1]!==`-l`||t.command[2]!==`-c`)return!1;let e=t.command[3];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command[0]===`powershell`){if(t.command[1]!==`-NoProfile`||t.command[2]!==`-NonInteractive`||t.command[3]!==`-Command`)return!1;let e=t.command[4];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}return!1}if(t.command===`ok-pi-managed-extension`){if(!Array.isArray(t.args))return!1;let e=t.args[0];return typeof e==`string`&&e.startsWith(L)}return!1}function R(e=process.argv[1]){if(!e)throw Error(`Cannot infer the local CLI entry for --dev-mcp because process.argv[1] is empty.`);let t=_(e);if(d(t)===`cli.mjs`&&d(f(t))===`dist`)return t;let n=t.split(v),r=n.lastIndexOf(`packages`);if(r===-1||n[r+1]!==`cli`)throw Error(`Cannot infer the repo root for --dev-mcp from ${t}. Run the local CLI from this repo so the built dist path can be derived.`);let i=n.slice(0,r);return m(i.length===0?v:i.join(v),`packages`,`cli`,`dist`,`cli.mjs`)}function z(e={}){return e.mode===`dev`?{command:M,args:[R(),`mcp`],env:{...N}}:(e.platformName??process.platform)===`win32`?{command:`powershell`,args:[`-NoProfile`,`-NonInteractive`,`-Command`,F]}:{command:`/bin/sh`,args:[`-l`,`-c`,P]}}function xe(e={}){return e.mode===`dev`?{type:`local`,enabled:!0,command:[M,R(),`mcp`],environment:{...N}}:(e.platformName??process.platform)===`win32`?{type:`local`,enabled:!0,command:[`powershell`,`-NoProfile`,`-NonInteractive`,`-Command`,F]}:{type:`local`,enabled:!0,command:[`/bin/sh`,`-l`,`-c`,P]}}function Se(e){if(typeof e!=`object`||!e)return!1;let t=e;return B(t,z({mode:`published`,platformName:`darwin`}))||B(t,z({mode:`published`,platformName:`win32`}))}function B(e,t){return Object.keys(e).length===Object.keys(t).length?Ce(e,t):!1}function Ce(e,t){if(e.command!==t.command)return!1;let n=t.args;return!Array.isArray(n)||!Array.isArray(e.args)||e.args.length!==n.length?!1:e.args.every((e,t)=>e===n[t])}function V(e,t){let n=e=>typeof e==`string`&&e.includes(`# ok-mcp`);return t===`/bin/sh`?e[0]===`-l`&&e[1]===`-c`&&n(e[2]):t===`powershell`?e[0]===`-NoProfile`&&e[1]===`-NonInteractive`&&e[2]===`-Command`&&n(e[3]):!1}function we(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.enabled===!1||typeof t.command!=`string`||!Array.isArray(t.args)?!1:V(t.args,t.command)}function Te(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.type!==`local`||t.enabled===!1||!Array.isArray(t.command))return!1;let[n,...r]=t.command;return typeof n==`string`&&V(r,n)}function H(e){return e===`win32`?y:h}function Ee(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env,i=H(t);return t===`darwin`?i.join(n,`Library`,`Application Support`):t===`win32`?r.APPDATA??i.join(n,`AppData`,`Roaming`):r.XDG_CONFIG_HOME??i.join(n,`.config`)}function De(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.claude.json`)}function U(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env;if(t===`darwin`)return h.join(n,`Library`,`Application Support`,`Claude`,`claude_desktop_config.json`);if(t===`win32`){let e=r.APPDATA??y.join(n,`AppData`,`Roaming`);return y.join(e,`Claude`,`claude_desktop_config.json`)}throw Error(`Claude Desktop is not available on ${t}. Supported: macOS, Windows.`)}function W(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.cursor`,`mcp.json`)}function Oe(e={}){let t=e.platformName??process.platform,n=e.home??w();return(e.env??process.env).CODEX_HOME??H(t).join(n,`.codex`)}function ke(e={}){return H(e.platformName??process.platform).join(Oe(e),`config.toml`)}function G(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=(e.env??process.env).COPILOT_HOME??H(t).join(n,`.copilot`);return H(t).join(r,`mcp-config.json`)}function Ae(e={}){let t=e.platformName??process.platform,n=e.home??w(),r=e.env??process.env,i=H(t);if(t===`win32`){let e=r.APPDATA??i.join(n,`AppData`,`Roaming`);return i.join(e,`opencode`)}let a=r.XDG_CONFIG_HOME??i.join(n,`.config`);return i.join(a,`opencode`)}function K(e={}){return H(e.platformName??process.platform).join(Ae(e),`opencode.json`)}function je(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.openclaw`,`openclaw.json`)}function Me(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.hermes`,`config.yaml`)}function Ne(e={}){let t=e.platformName??process.platform,n=e.home??w();return(e.env??process.env).PI_CODING_AGENT_DIR??H(t).join(n,`.pi`,`agent`)}function Pe(e={}){let t=e.platformName??process.platform,n=e.home??w();return H(t).join(n,`.gemini`,`config`,`mcp_config.json`)}function Fe(e,t){let n=H(t),r=n.join(e,`.lmstudio`,`mcp.json`),i=n.join(e,`.cache`,`lm-studio`,`mcp.json`);return t===`darwin`?[i,r]:[r,i]}function q(e={}){let t=e.platformName??process.platform,n=Fe(e.home??w(),t);return n.find(e=>b(e))||n.find(e=>b(f(e)))||n[0]}function Ie(e){let t=e.serverName(``);return e.format===`toml`?`[${e.topLevelKey}.${t}]`:[e.topLevelKey,e.serverMapSubKey,t].filter(Boolean).join(`.`)}function Le(e,t){let n;try{n=e.configPath(``,t)}catch{return null}return n.startsWith(`${t}/`)?`~${n.slice(t.length)}`:n}const J={claude:{id:`claude`,label:A.claude,configPath:(e,t)=>De({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.claude`),projectConfigPath:e=>m(e,`.mcp.json`),projectSkillPath:e=>m(e,`.claude`,`skills`,`open-knowledge`,`SKILL.md`)},"claude-desktop":{id:`claude-desktop`,label:A[`claude-desktop`],configPath:(e,t)=>U({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(U({home:t}))},cursor:{id:`cursor`,label:A.cursor,configPath:(e,t)=>W({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(W({home:t})),projectConfigPath:e=>m(e,`.cursor`,`mcp.json`),projectSkillPath:e=>m(e,`.cursor`,`skills`,`open-knowledge`,`SKILL.md`)},codex:{id:`codex`,label:A.codex,configPath:(e,t)=>ke({home:t}),format:`toml`,topLevelKey:`mcp_servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(ke({home:t})),projectConfigPath:e=>m(e,`.codex`,`config.toml`),projectSkillPath:e=>m(e,`.codex`,`skills`,`open-knowledge`,`SKILL.md`)},copilot:{id:`copilot`,label:A.copilot,configPath:(e,t)=>G({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(G({home:t})),projectSkillPath:e=>m(e,`.github`,`skills`,`open-knowledge`,`SKILL.md`)},opencode:{id:`opencode`,label:A.opencode,configPath:(e,t)=>K({home:t}),format:`json`,topLevelKey:`mcp`,serverName:()=>o,buildEntry:(e,t)=>xe(t),scope:`global`,detectPath:(e,t)=>f(K({home:t})),projectConfigPath:e=>m(e,`opencode.json`),projectSkillPath:e=>m(e,`.opencode`,`skills`,`open-knowledge`,`SKILL.md`)},openclaw:{id:`openclaw`,label:A.openclaw,configPath:(e,t)=>je({home:t}),format:`json`,topLevelKey:`mcp`,serverMapSubKey:`servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.openclaw`),offerOnlyWhenDetected:!0},pi:{id:`pi`,label:A.pi,configPath:()=>{throw Error("Pi has no user-global MCP config; OK's integration is the project-scoped bridge extension at .pi/extensions/open-knowledge.ts (run `ok init` in the project).")},format:`file`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:()=>{throw Error(`Pi has no MCP entry shape; the managed bridge file is built by buildPiExtensionSource (integrations/pi-extension.ts).`)},scope:`project`,detectPath:(e,t)=>Ne({home:t}),projectConfigPath:e=>m(e,`.pi`,`extensions`,`open-knowledge.ts`),projectSkillPath:e=>m(e,`.pi`,`skills`,`open-knowledge`,`SKILL.md`)},antigravity:{id:`antigravity`,label:A.antigravity,configPath:(e,t)=>Pe({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.gemini`),offerOnlyWhenDetected:!0},"lm-studio":{id:`lm-studio`,label:A[`lm-studio`],configPath:(e,t)=>q({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>f(q({home:t})),offerOnlyWhenDetected:!0},hermes:{id:`hermes`,label:A.hermes,configPath:(e,t)=>Me({home:t}),format:`yaml`,topLevelKey:`mcp_servers`,serverName:()=>o,buildEntry:(e,t)=>z(t),scope:`global`,detectPath:(e,t)=>m(t??w(),`.hermes`),offerOnlyWhenDetected:!0}};function Re(e){let t=e.filter(e=>!Object.hasOwn(J,e));if(t.length>0)throw Error(`Unknown editor(s): ${t.join(`, `)}. Valid options: ${k.join(`, `)}`);return e.map(e=>J[e])}const Y=[{hostDir:`.adal`,pruneRoot:`.adal`},{hostDir:`.aider-desk`,pruneRoot:`.aider-desk`},{hostDir:`.astrbot/data`,pruneRoot:`.astrbot`},{hostDir:`.augment`,pruneRoot:`.augment`},{hostDir:`.autohand`,pruneRoot:`.autohand`},{hostDir:`.bob`,pruneRoot:`.bob`},{hostDir:`.codeartsdoer`,pruneRoot:`.codeartsdoer`},{hostDir:`.codebuddy`,pruneRoot:`.codebuddy`},{hostDir:`.codeium/windsurf`,pruneRoot:`.codeium`},{hostDir:`.codemaker`,pruneRoot:`.codemaker`},{hostDir:`.codestudio`,pruneRoot:`.codestudio`},{hostDir:`.commandcode`,pruneRoot:`.commandcode`},{hostDir:`.config/crush`,pruneRoot:`.config/crush`},{hostDir:`.config/devin`,pruneRoot:`.config/devin`},{hostDir:`.config/goose`,pruneRoot:`.config/goose`},{hostDir:`.config/kimchi/harness`,pruneRoot:`.config/kimchi`},{hostDir:`.continue`,pruneRoot:`.continue`},{hostDir:`.factory`,pruneRoot:`.factory`},{hostDir:`.forge`,pruneRoot:`.forge`},{hostDir:`.grok`,pruneRoot:`.grok`},{hostDir:`.iflow`,pruneRoot:`.iflow`},{hostDir:`.inferencesh`,pruneRoot:`.inferencesh`},{hostDir:`.jazz`,pruneRoot:`.jazz`},{hostDir:`.junie`,pruneRoot:`.junie`},{hostDir:`.kilocode`,pruneRoot:`.kilocode`},{hostDir:`.kiro`,pruneRoot:`.kiro`},{hostDir:`.kode`,pruneRoot:`.kode`},{hostDir:`.lingma`,pruneRoot:`.lingma`},{hostDir:`.mcpjam`,pruneRoot:`.mcpjam`},{hostDir:`.moxby`,pruneRoot:`.moxby`},{hostDir:`.mux`,pruneRoot:`.mux`},{hostDir:`.neovate`,pruneRoot:`.neovate`},{hostDir:`.ona`,pruneRoot:`.ona`},{hostDir:`.openhands`,pruneRoot:`.openhands`},{hostDir:`.pochi`,pruneRoot:`.pochi`},{hostDir:`.qoder`,pruneRoot:`.qoder`},{hostDir:`.qoder-cn`,pruneRoot:`.qoder-cn`},{hostDir:`.qwen`,pruneRoot:`.qwen`},{hostDir:`.reasonix`,pruneRoot:`.reasonix`},{hostDir:`.roo`,pruneRoot:`.roo`},{hostDir:`.rovodev`,pruneRoot:`.rovodev`},{hostDir:`.snowflake/cortex`,pruneRoot:`.snowflake`},{hostDir:`.tabnine/agent`,pruneRoot:`.tabnine`},{hostDir:`.terramind`,pruneRoot:`.terramind`},{hostDir:`.tinycloud`,pruneRoot:`.tinycloud`},{hostDir:`.trae`,pruneRoot:`.trae`},{hostDir:`.trae-cn`,pruneRoot:`.trae-cn`},{hostDir:`.vibe`,pruneRoot:`.vibe`},{hostDir:`.zcode`,pruneRoot:`.zcode`},{hostDir:`.zencoder`,pruneRoot:`.zencoder`}],X=[...l.map(e=>c[e]),`open-knowledge`];function Z(e){if(!p(e))throw Error(`skill cleanup requires an absolute home directory; got ${JSON.stringify(e)}`);let t=_(e);if(t===v||f(t)===t)throw Error(`skill cleanup refuses to operate on the filesystem root (${t})`);return t}function Q(e,t){let n=g(e,t);if(n.startsWith(`..`)||p(n))return!1;let r=e;for(let e of n.split(v)){r=m(r,e);try{if(!x(r).isDirectory())return!1}catch{return!1}}return!0}function ze(e,t){try{return re(e).every(n=>t.has(m(e,n)))}catch{return!1}}function Be(e){let t=Z(e),n=[],r=[],i=new Set;for(let e of Y){let a=m(t,e.hostDir,`skills`);if(!Q(t,a))continue;let o=X.map(e=>m(a,e)).filter(e=>b(e));n.push(...o);for(let e of o)i.add(e);let s=m(t,e.pruneRoot),c=a;for(;ze(c,i)&&(r.push(c),i.add(c),c!==s);){let e=f(c);if(e===c||e===t||!e.startsWith(t+v))break;c=e}}return{skillDirs:n,emptyDirs:r}}function Ve(e){try{if(!x(e).isDirectory())return!1;let t=re(e);return t.length===0||t.includes(`SKILL.md`)}catch{return!1}}function He(e){let t=new Set,n=new Set;for(let r of Y){let i=m(e,r.hostDir,`skills`);for(let e of X)t.add(m(i,e));let a=m(e,r.pruneRoot),o=i;for(;n.add(o),o!==a;){let t=f(o);if(t===o||t===e||!t.startsWith(e+v))break;o=t}}return{skillDirs:t,emptyDirs:n}}function Ue(e,t){let n=Z(e),r=He(n),i=[...t.skillDirs.filter(e=>!r.skillDirs.has(e)),...t.emptyDirs.filter(e=>!r.emptyDirs.has(e))];if(i.length>0)throw Error(`refusing skill cleanup — ${i.length} path(s) outside the known legacy set: ${i.join(`, `)}`);let a=[];for(let e of t.skillDirs)if(Q(n,e)&&Ve(e))try{C(e,{recursive:!0,force:!0}),a.push(e)}catch{}for(let e of t.emptyDirs)if(Q(n,e))try{ie(e),a.push(e)}catch{}return a}function We(e){let t=Z(e),n=[];for(let e of l){let r=c[e];n.push({path:m(t,`.agents`,`skills`,r),bundleId:e,scope:`central`});for(let i of j)n.push({path:m(t,i.hostDir,`skills`,r),bundleId:e,scope:`host`,hostDir:i.hostDir})}return n}function Ge(e,t){let n=[];for(let r of We(e))if(r.bundleId===t)try{C(r.path,{recursive:!0,force:!0})}catch(e){n.push(e instanceof Error?e:Error(String(e)))}if(n.length>0)throw AggregateError(n,`Failed to remove ${n.length} path(s) for ${t}`)}function Ke(e,t){let n;try{n=x(e)}catch(e){if(e.code!==`ENOENT`)throw e}if(n?.isSymbolicLink())throw Error(`Refusing to write through a symbolic link at ${e}. Remove the symlink and re-run project setup.`);Je(e,t)}function qe(e,t){Je(e,t)}function Je(e,t){let n;try{n=S(t)}catch{n=_(t)}let r=f(e);for(;r.length>1&&r!==v;){let t;try{t=S(r)}catch(e){if(e.code===`ENOENT`){r=f(r);continue}throw e}let i=g(n,t);if(i===``||!i.startsWith(`..`)&&!p(i))return;throw Error(`Refusing to write at ${e}: ancestor ${r} resolves to ${t}, which is outside the project directory ${n}. A symbolic link in the path likely escapes the project. Remove the symlink and re-run project setup.`)}}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Ye(e,t,n){try{if(ae(n).size>10485760)return!1}catch{return!1}let r;try{r=ne(n,`utf-8`)}catch{return!1}let i=[],a=s(r.charCodeAt(0)===65279?r.slice(1):r,i,{allowTrailingComma:!0,disallowComments:!1});if(i.length>0||!$(a))return!1;let o=a[e.topLevelKey];if(!$(o))return!1;let c=e.serverMapSubKey?o[e.serverMapSubKey]:o;return $(c)?$(c[e.serverName(t)]):!1}function Xe(e,t,n={}){if(e.id!==`copilot`)return!0;try{return Ye(e,t,e.configPath(t,n.home))}catch{return!1}}function Ze(e,t,n={}){let r=e.projectSkillPath?.(t);if(!r)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};if(!Xe(e,t,n))return{editorId:e.id,label:e.label,action:`skipped-prerequisite`,path:r};try{let n=u(`project`,{checkDesktop:!0}),i=f(r);Ke(i,t);let a=b(r)?`overwritten`:`written`;return C(i,{recursive:!0,force:!0}),te(f(i),{recursive:!0}),ee(n,i,{recursive:!0}),{editorId:e.id,label:e.label,action:a,path:r}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}function Qe(e,t){let n=e.projectSkillPath?.(t);if(!n)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};try{let r=f(n);return b(n)?(qe(r,t),C(r,{recursive:!0,force:!0}),{editorId:e.id,label:e.label,action:`removed`,path:n}):{editorId:e.id,label:e.label,action:`not-present`,path:n}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:n,error:t instanceof Error?t.message:String(t)}}}export{Ee as C,_e as D,pe as E,Te as S,he as T,Le as _,Ue as a,be as b,We as c,J as d,j as f,z as g,ye as h,Ze as i,k as l,L as m,qe as n,Be as o,I as p,Qe as r,Ge as s,Ke as t,A as u,Ie as v,Re as w,Se as x,we as y};
|
|
56
|
+
//# sourceMappingURL=write-project-skill-BIBvYtT6.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/open-knowledge",
|
|
3
|
-
"version": "0.46.0-beta.
|
|
3
|
+
"version": "0.46.0-beta.16",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -61,10 +61,10 @@
|
|
|
61
61
|
"ajv-formats": "^3.0.1",
|
|
62
62
|
"tsdown": "^0.21.7",
|
|
63
63
|
"typescript": "^5.9.3",
|
|
64
|
-
"@inkeep/open-knowledge-
|
|
65
|
-
"@inkeep/open-knowledge-
|
|
66
|
-
"@inkeep/open-knowledge-
|
|
67
|
-
"@inkeep/open-knowledge-
|
|
64
|
+
"@inkeep/open-knowledge-core": "0.46.0-beta.16",
|
|
65
|
+
"@inkeep/open-knowledge-app": "0.46.0-beta.16",
|
|
66
|
+
"@inkeep/open-knowledge-native-config": "0.0.0",
|
|
67
|
+
"@inkeep/open-knowledge-server": "0.46.0-beta.16"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
70
|
"build:cli": "tsdown",
|
package/dist/init-YMPn7j-R.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e}from"./init-UsHQ5nkw.mjs";export{e as runInit};
|
package/dist/loader-_6OcHbvd.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./loader-TX84kNNr.mjs";export{e as loadConfig};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./preview-BO-_TVuU.mjs";export{t as formatPreviewBlock,e as previewContent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./index-C3pQc8vq.js";export{e as FeedbackForm};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./ManagedArtifactProperties-7dshK0Jv.js";export{e as ManagedArtifactProperties};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./chunk-CYidjpOJ.js";import{t}from"./jsx-runtime-BUgB2tll.js";import{t as n}from"./react-f2sANaYj.js";import{n as r,r as i}from"./dist-Nvb76hAm.js";import{t as a}from"./compiler-runtime-BfE3aGVn.js";import{t as o}from"./utils-CPqDy6Hr.js";import{t as s}from"./button-D3xSRfT4.js";import{i as c,n as l,r as u,t as ee}from"./tooltip-CtvLp_YK.js";import{a as te,c as ne,i as re,n as ie,o as ae,s as oe,t as se}from"./dialog-C1XaLkpS.js";import{t as d}from"./checkbox-CgM6fL3A.js";import{t as f}from"./label-CGqMAe0S.js";import{ma as ce}from"./dist-D8RKvolB2.js";import{t as le}from"./arrow-up-right-CinCNAo3.js";import{t as ue}from"./info-BcCY_Or2.js";import{n as p}from"./dist-Dr52ya0i.js";import{t as de}from"./external-link-CIs3ZL0b.js";import{n as m}from"./mcp-consent-store-CsArEV-K.js";var fe=a(),h=e(n(),1),g=t();function pe(e){return e.shellDetected&&!e.alreadyInstalled}function me(e){let t=new Set;for(let n of e)n.detected&&t.add(n.id);return t}function he(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function ge(e,t){let n=[];for(let r of t)e.has(r.id)&&n.push(r.id);return n}function _e(e){return new Set(e.map(e=>e.id))}function ve(e,t){let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n}function ye(e,t){return t.filter(t=>e.has(t.id)).map(e=>e.id)}var _={error:e=>p.error(e)};function v(e){let t=(0,fe.c)(9),n;t[0]===e?n=t[1]:(n=e===void 0?{}:e,t[0]=e,t[1]=n);let{store:r,toast:i,payload:a}=n,o=r===void 0?m:r,s=i===void 0?_:i,c;t[2]!==a||t[3]!==o?(c=a??o.getSnapshot(),t[2]=a,t[3]=o,t[4]=c):c=t[4];let l=c;if(!l)return null;let u;return t[5]!==l||t[6]!==o||t[7]!==s?(u=(0,g.jsx)(y,{payload:l,store:o,toast:s}),t[5]=l,t[6]=o,t[7]=s,t[8]=u):u=t[8],u}function y(e){let t=(0,fe.c)(84),{payload:n,store:a,toast:p}=e,{_:m}=i(),_=n.detectedEditors,v=n.pathInstall,y=n.globalSkills,b=y.length>0,x;t[0]===v?x=t[1]:(x=pe(v),t[0]=v,t[1]=x);let S=x,C;t[2]===_?C=t[3]:(C=()=>me(_),t[2]=_,t[3]=C);let[w,Se]=(0,h.useState)(C),[T,Ce]=(0,h.useState)(!0),E;t[4]===y?E=t[5]:(E=()=>_e(y),t[4]=y,t[5]=E);let[D,we]=(0,h.useState)(E),[O,k]=(0,h.useState)(!1),A=(0,h.useId)(),j;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(j=function(e){Se(t=>he(t,e))},t[6]=j):j=t[6];let Te=j,M;t[7]!==_||t[8]!==y||t[9]!==S||t[10]!==T||t[11]!==w||t[12]!==D||t[13]!==b||t[14]!==a||t[15]!==p?(M=async function(){k(!0);let e=await a.confirm({editorIds:ge(w,_),pathInstall:S?T:void 0,skills:b?ye(D,y):void 0});e.ok||(p.error(e.error),k(!1))},t[7]=_,t[8]=y,t[9]=S,t[10]=T,t[11]=w,t[12]=D,t[13]=b,t[14]=a,t[15]=p,t[16]=M):M=t[16];let Ee=M,N;t[17]!==a||t[18]!==p?(N=async function(){k(!0);let e=await a.skip();e.ok||(p.error(e.error),k(!1))},t[17]=a,t[18]=p,t[19]=N):N=t[19];let P=N,F;t[20]!==O||t[21]!==P?(F=function(e){!e&&!O&&P()},t[20]=O,t[21]=P,t[22]=F):F=t[22];let De=F,I;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,g.jsx)(ne,{children:(0,g.jsx)(r,{id:`tsyExA`})}),t[23]=I):I=t[23];let L;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,g.jsxs)(oe,{children:[I,(0,g.jsx)(te,{children:(0,g.jsx)(r,{id:`GF51cw`})})]}),t[24]=L):L=t[24];let R;t[25]!==m||t[26]!==O||t[27]!==A||t[28]!==S||t[29]!==T||t[30]!==v.rcFilesToTouch||t[31]!==v.shellDetected?(R=v.shellDetected&&(0,g.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,g.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:(0,g.jsx)(r,{id:`ALhMYW`})}),(0,g.jsx)(`div`,{className:`overflow-hidden rounded-md border border-border bg-card/50`,children:(0,g.jsxs)(f,{htmlFor:`${A}-path`,className:S?`flex cursor-pointer flex-col items-start gap-1 px-3 py-2.5 font-normal hover:bg-accent`:`flex flex-col items-start gap-1 px-3 py-2.5 font-normal`,children:[(0,g.jsxs)(`span`,{className:`flex items-center gap-2.5`,children:[(0,g.jsx)(d,{id:`${A}-path`,checked:S?T:!0,disabled:O||!S,onCheckedChange:()=>Ce(xe),"data-testid":`mcp-consent-path-checkbox`}),(0,g.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1.5 text-sm font-medium text-foreground`,children:[(0,g.jsx)(r,{id:`Fsx78O`,components:{0:(0,g.jsx)(`code`,{className:`inline-code`})}}),S&&(0,g.jsx)(u,{children:(0,g.jsxs)(ee,{children:[(0,g.jsx)(c,{onClick:be,className:`text-muted-foreground hover:text-foreground`,"aria-label":m({id:`LiAw2k`}),"data-testid":`mcp-consent-path-info`,children:(0,g.jsx)(ue,{className:`size-3.5`,"aria-hidden":!0})}),(0,g.jsx)(l,{className:`max-w-xs`,children:(0,g.jsx)(`p`,{className:`leading-relaxed wrap-break-word`,"data-testid":`mcp-consent-path-status`,children:m({id:`04XyCH`,values:{0:v.rcFilesToTouch.join(`, `)}})})})]})})]})]}),!S&&(0,g.jsx)(`span`,{className:`ps-6.5 text-xs text-muted-foreground`,"data-testid":`mcp-consent-path-status`,children:m({id:`RnrnTe`})}),S&&!T&&(0,g.jsx)(`span`,{className:`ps-6.5 text-xs text-amber-600 dark:text-amber-400`,"data-testid":`mcp-consent-path-warning`,children:(0,g.jsx)(r,{id:`7PXYaF`,components:{0:(0,g.jsx)(`code`,{className:`inline-code`})}})})]})})]}),t[25]=m,t[26]=O,t[27]=A,t[28]=S,t[29]=T,t[30]=v.rcFilesToTouch,t[31]=v.shellDetected,t[32]=R):R=t[32];let z;t[33]===v.shellDetected?z=t[34]:(z=v.shellDetected&&(0,g.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground`,children:(0,g.jsx)(r,{id:`psfGPX`})}),t[33]=v.shellDetected,t[34]=z);let B;if(t[35]!==m||t[36]!==O||t[37]!==_||t[38]!==A||t[39]!==w){let e;t[41]!==m||t[42]!==O||t[43]!==A||t[44]!==w?(e=e=>{let t=w.has(e.id),n=`${A}-${e.id}`,i=`https://openknowledge.ai/docs/integrations/${ce[e.id]}`;return(0,g.jsxs)(`li`,{className:`flex flex-wrap items-stretch hover:bg-accent`,children:[(0,g.jsxs)(f,{htmlFor:n,className:o(`flex flex-1 cursor-pointer items-center gap-2.5 px-3 py-2.5 font-normal`,e.willReplace?`pb-0.5`:``),children:[(0,g.jsx)(d,{id:n,checked:t,disabled:O,onCheckedChange:()=>Te(e.id),"data-testid":`mcp-consent-checkbox-${e.id}`}),(0,g.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:e.label})]}),e.willReplace?(0,g.jsx)(`span`,{className:`ms-6.5 basis-full px-3 pb-2.5 text-xs text-amber-600 dark:text-amber-400`,"data-testid":`mcp-consent-status-${e.id}`,children:(0,g.jsx)(r,{id:`TEEPPF`})}):e.detected?null:(0,g.jsxs)(`a`,{href:i,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>de(e,i),onAuxClick:e=>de(e,i),"aria-label":m({id:`D-Oh1s`,values:{0:e.label}}),className:`flex items-center gap-0.5 px-3 py-2.5 text-xs text-muted-foreground underline-offset-2 hover:text-foreground hover:underline`,"data-testid":`mcp-consent-status-${e.id}`,children:[(0,g.jsx)(r,{id:`P_bX4O`}),(0,g.jsx)(le,{className:`size-3`,"aria-hidden":!0})]})]},e.id)},t[41]=m,t[42]=O,t[43]=A,t[44]=w,t[45]=e):e=t[45],B=_.map(e),t[35]=m,t[36]=O,t[37]=_,t[38]=A,t[39]=w,t[40]=B}else B=t[40];let V;t[46]===B?V=t[47]:(V=(0,g.jsx)(`ul`,{className:`rounded-md border border-border bg-card/50 divide-y divide-border overflow-hidden`,children:B}),t[46]=B,t[47]=V);let H;t[48]!==z||t[49]!==V?(H=(0,g.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[z,V]}),t[48]=z,t[49]=V,t[50]=H):H=t[50];let U;t[51]!==O||t[52]!==y||t[53]!==A||t[54]!==D||t[55]!==b?(U=b&&(0,g.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,g.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:(0,g.jsx)(r,{id:`28B21t`})}),(0,g.jsx)(`ul`,{className:`rounded-md border border-border bg-card/50 divide-y divide-border overflow-hidden`,children:y.map(e=>{let t=D.has(e.id),n=`${A}-skill-${e.id}`;return(0,g.jsx)(`li`,{children:(0,g.jsxs)(f,{htmlFor:n,className:`flex cursor-pointer items-start gap-2.5 px-3 py-2.5 font-normal hover:bg-accent`,children:[(0,g.jsx)(d,{id:n,checked:t,disabled:O,onCheckedChange:()=>we(t=>ve(t,e.id)),className:`mt-0.5`,"data-testid":`mcp-consent-skill-checkbox-${e.id}`}),(0,g.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,g.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:(0,g.jsx)(`code`,{children:e.name})}),(0,g.jsx)(`span`,{className:`text-xs text-muted-foreground`,"data-testid":`mcp-consent-skill-status-${e.id}`,children:e.id===`discovery`?(0,g.jsx)(r,{id:`0inVGS`}):(0,g.jsx)(r,{id:`FXk_zY`})}),e.alreadyInstalled&&!t&&(0,g.jsx)(`span`,{className:`text-xs text-amber-600 dark:text-amber-400`,"data-testid":`mcp-consent-skill-warning-${e.id}`,children:(0,g.jsx)(r,{id:`dXWMFn`})})]})]})},e.id)})})]}),t[51]=O,t[52]=y,t[53]=A,t[54]=D,t[55]=b,t[56]=U):U=t[56];let W;t[57]!==R||t[58]!==H||t[59]!==U?(W=(0,g.jsxs)(ie,{className:`flex flex-col gap-6 min-h-0`,children:[R,H,U]}),t[57]=R,t[58]=H,t[59]=U,t[60]=W):W=t[60];let G;t[61]===P?G=t[62]:(G=()=>void P(),t[61]=P,t[62]=G);let K;t[63]===Symbol.for(`react.memo_cache_sentinel`)?(K=(0,g.jsx)(r,{id:`6Uau97`}),t[63]=K):K=t[63];let q;t[64]!==O||t[65]!==G?(q=(0,g.jsx)(s,{variant:`outline`,className:`font-mono uppercase`,onClick:G,disabled:O,"data-testid":`mcp-consent-skip`,children:K}),t[64]=O,t[65]=G,t[66]=q):q=t[66];let J;t[67]===Ee?J=t[68]:(J=()=>void Ee(),t[67]=Ee,t[68]=J);let Oe=O||w.size===0&&!(S&&T)&&!b,Y;t[69]===O?Y=t[70]:(Y=O?(0,g.jsx)(r,{id:`b4itZn`}):(0,g.jsx)(r,{id:`iSLIjg`}),t[69]=O,t[70]=Y);let X;t[71]!==J||t[72]!==Oe||t[73]!==Y?(X=(0,g.jsx)(s,{onClick:J,disabled:Oe,"data-testid":`mcp-consent-add`,children:Y}),t[71]=J,t[72]=Oe,t[73]=Y,t[74]=X):X=t[74];let Z;t[75]!==q||t[76]!==X?(Z=(0,g.jsxs)(ae,{children:[q,X]}),t[75]=q,t[76]=X,t[77]=Z):Z=t[77];let Q;t[78]!==W||t[79]!==Z?(Q=(0,g.jsxs)(re,{className:`sm:max-w-md`,children:[L,W,Z]}),t[78]=W,t[79]=Z,t[80]=Q):Q=t[80];let $;return t[81]!==De||t[82]!==Q?($=(0,g.jsx)(se,{open:!0,onOpenChange:De,children:Q}),t[81]=De,t[82]=Q,t[83]=$):$=t[83],$}function be(e){e.preventDefault(),e.stopPropagation()}function xe(e){return!e}export{v as McpConsentDialogBody,v as default,me as computeInitialSelection,_e as computeInitialSkillSelection,pe as isPathRowActionable,ge as selectedIdsOrdered,ye as skillIdsOrdered,he as toggleSelectedId,ve as toggleSkillId};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ActivityPanelDiffView-DmVrPrCH.js","./chunk-CYidjpOJ.js","./dist-Nvb76hAm.js","./jsx-runtime-BUgB2tll.js","./react-f2sANaYj.js","./compiler-runtime-BfE3aGVn.js","./ActivityPanelDiffView-legcy4jI.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./chunk-CYidjpOJ.js";import{t}from"./preload-helper-Chd9yIcd.js";import{t as n}from"./jsx-runtime-BUgB2tll.js";import{t as r}from"./react-f2sANaYj.js";import{n as i,r as ee}from"./dist-Nvb76hAm.js";import{t as a}from"./compiler-runtime-BfE3aGVn.js";import{t as o}from"./button-D3xSRfT4.js";import{i as te,n as ne,t as re}from"./tooltip-CtvLp_YK.js";import{a as ie,c as ae,i as oe,o as se,s as ce,t as le}from"./dialog-C1XaLkpS.js";import{l as ue}from"./select-BVnl5AhR.js";import{n as de,t as fe}from"./toggle-group-DpvWeoN9.js";import{ft as pe}from"./dist-D8RKvolB2.js";import{t as me}from"./chevron-down-BH5tpfEN.js";import{t as he}from"./loader-circle-A8fM_hha.js";import{n as ge,t as _e}from"./panel-right-open-mOxBnqyo.js";import{t as ve}from"./undo-2-BxTugTzj.js";import{t as ye}from"./x-BL2rz544.js";import{n as be}from"./dist-Dr52ya0i.js";import{t as xe}from"./overlay-layers-gL_2dQqz.js";import{t as Se}from"./timeline-diff-store-BYDskbwd.js";import{t as s}from"./lru-string-cache-CTK2PJbw.js";import{a as Ce,c as we,i as Te,n as Ee,o as De,r as Oe,s as ke}from"./use-timeline-entry-diff-CHAJ_uzb.js";var Ae=a(),c=e(r(),1),l=n(),je=(0,c.lazy)(async()=>({default:(await t(()=>import(`./ActivityPanelDiffView-DmVrPrCH.js`),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)).ActivityPanelDiffView}));function u(e){let t=(0,Ae.c)(148),{view:n,isPanelCollapsed:r,onTogglePanel:a}=e,{_:s}=ee(),{docName:u,sha:Pe,parentSha:Fe,laterEdits:d,authorName:Ie,relativeTime:Le}=n,[Re]=(0,c.useState)(Ne),[f,ze]=(0,c.useState)(`rendered`),[p,Be]=(0,c.useState)(!1),[m,Ve]=(0,c.useState)(!1),He=(0,c.useRef)(null),Ue=(0,c.useRef)(null),[We,Ge]=(0,c.useState)(0),h=Ee(Pe,u,Re,`vs-parent`,Fe),g,Ke,_;t[0]!==f||t[1]!==h.after||t[2]!==h.before||t[3]!==h.diff||t[4]!==h.status?(g=h.status===`ready`?De(h.before,h.after):null,_=f===`rendered`&&g?.ok===!0,Ke=h.status===`ready`?_&&g?.ok?we(g):Te(h.diff):0,t[0]=f,t[1]=h.after,t[2]=h.before,t[3]=h.diff,t[4]=h.status,t[5]=g,t[6]=Ke,t[7]=_):(g=t[5],Ke=t[6],_=t[7]);let qe=Ke,Je;t[8]===_?Je=t[9]:(Je=function(e){let t=Ue.current;if(!t)return;let n=_?Array.from(t.querySelectorAll(ke)):Oe(t);if(n.length===0)return;let r=(e+n.length)%n.length;Ge(r),n[r]?.scrollIntoView({block:`center`,behavior:`smooth`})},t[8]=_,t[9]=Je);let Ye=Je,Xe,Ze;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(Xe=()=>()=>He.current?.abort(),Ze=[],t[10]=Xe,t[11]=Ze):(Xe=t[10],Ze=t[11]),(0,c.useEffect)(Xe,Ze);let Qe=h.status===`ready`?`${f}:${h.diff}`:``,$e,et;t[12]===Qe?($e=t[13],et=t[14]):($e=()=>{let e=Ue.current;if(Qe===``||!e)return;Ge(0);let t=!1,n=null,r,i,ee=()=>{if(t)return;let r=e.querySelector(`.ok-diff-ins, .ok-diff-ins-block, [data-diff-deleted]`)??Oe(e)[0];if(!r)return;t=!0,n?.disconnect();let i=window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;r.scrollIntoView({block:`center`,behavior:i?`auto`:`smooth`})},a=()=>{t||(r!==void 0&&clearTimeout(r),r=setTimeout(()=>{i!==void 0&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=requestAnimationFrame(ee)})},120))};n=new MutationObserver(a),n.observe(e,{childList:!0,subtree:!0}),a();let o=setTimeout(()=>n?.disconnect(),5e3);return()=>{n?.disconnect(),r!==void 0&&clearTimeout(r),i!==void 0&&cancelAnimationFrame(i),clearTimeout(o)}},et=[Qe],t[12]=Qe,t[13]=$e,t[14]=et),(0,c.useEffect)($e,et);let tt,nt;t[15]===p?(tt=t[16],nt=t[17]):(tt=()=>{let e=e=>{e.key===`Escape`&&(p||xe()||Se())};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},nt=[p],t[15]=p,t[16]=tt,t[17]=nt),(0,c.useEffect)(tt,nt);let rt;t[18]!==s||t[19]!==u||t[20]!==Pe?(rt=async function(){Ve(!0);let e=new AbortController;He.current=e;let t=function(){e.signal.aborted||Ve(!1),He.current===e&&(He.current=null)},n;try{n=await fetch(`/api/rollback`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({docName:u,commitSha:Pe}),signal:e.signal})}catch(n){let r=n;!e.signal.aborted&&!(r instanceof DOMException&&r.name===`AbortError`)&&be.error(s({id:`NkXEFS`}),{duration:4e3}),t();return}if(e.signal.aborted){t();return}if(n.ok){t(),Be(!1),Se();return}let r=`HTTP ${n.status}`;try{let e=pe.safeParse(await n.json());e.success&&(r=e.data.title)}catch{}be.error(s({id:`uM6jnS`}),{description:r,duration:6e3}),t()},t[18]=s,t[19]=u,t[20]=Pe,t[21]=rt):rt=t[21];let v=rt,it=h.status===`ready`&&(h.additions>0||h.deletions>0),y;t[22]===s?y=t[23]:(y=s({id:`b18t0_`}),t[22]=s,t[23]=y);let at;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(at=(0,l.jsx)(ye,{className:`size-4`}),t[24]=at):at=t[24];let b;t[25]===y?b=t[26]:(b=(0,l.jsx)(te,{asChild:!0,children:(0,l.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0`,"data-testid":`timeline-diff-close`,"aria-label":y,onClick:Me,children:at})}),t[25]=y,t[26]=b);let x;t[27]===s?x=t[28]:(x=s({id:`b18t0_`}),t[27]=s,t[28]=x);let S;t[29]===x?S=t[30]:(S=(0,l.jsx)(ne,{side:`bottom`,children:x}),t[29]=x,t[30]=S);let C;t[31]!==b||t[32]!==S?(C=(0,l.jsxs)(re,{children:[b,S]}),t[31]=b,t[32]=S,t[33]=C):C=t[33];let w;t[34]===u?w=t[35]:(w=(0,l.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:u}),t[34]=u,t[35]=w);let T;t[36]!==Ie||t[37]!==Le?(T=(0,l.jsxs)(`div`,{className:`truncate text-xs text-muted-foreground`,children:[Ie,` · `,Le]}),t[36]=Ie,t[37]=Le,t[38]=T):T=t[38];let E;t[39]!==w||t[40]!==T?(E=(0,l.jsxs)(`div`,{className:`min-w-[8rem] flex-1`,children:[w,T]}),t[39]=w,t[40]=T,t[41]=E):E=t[41];let D;t[42]!==s||t[43]!==h.additions||t[44]!==h.deletions||t[45]!==h.status||t[46]!==it?(D=it&&h.status===`ready`&&(0,l.jsxs)(`span`,{role:`img`,className:`shrink-0 text-xs tabular-nums`,"data-testid":`timeline-diff-stat`,"aria-label":s({id:`8lwQlE`,values:{0:h.additions,1:h.deletions}}),children:[(0,l.jsxs)(`span`,{"aria-hidden":`true`,className:`text-emerald-600 dark:text-emerald-500`,children:[`+`,h.additions]}),` `,(0,l.jsxs)(`span`,{"aria-hidden":`true`,className:`text-red-600 dark:text-red-500`,children:[`−`,h.deletions]})]}),t[42]=s,t[43]=h.additions,t[44]=h.deletions,t[45]=h.status,t[46]=it,t[47]=D):D=t[47];let ot;t[48]===Symbol.for(`react.memo_cache_sentinel`)?(ot=e=>{(e===`rendered`||e===`source`)&&ze(e)},t[48]=ot):ot=t[48];let O;t[49]===s?O=t[50]:(O=s({id:`ZW3mlR`}),t[49]=s,t[50]=O);let st;t[51]===Symbol.for(`react.memo_cache_sentinel`)?(st=(0,l.jsx)(de,{value:`rendered`,className:`h-6 px-2 text-xs`,"data-testid":`timeline-diff-render-rendered`,children:(0,l.jsx)(i,{id:`4z_1j2`})}),t[51]=st):st=t[51];let ct;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(ct=(0,l.jsx)(de,{value:`source`,className:`h-6 px-2 text-xs`,"data-testid":`timeline-diff-render-source`,children:(0,l.jsx)(i,{id:`wdxz7K`})}),t[52]=ct):ct=t[52];let k;t[53]!==f||t[54]!==O?(k=(0,l.jsxs)(fe,{type:`single`,value:f,onValueChange:ot,"aria-label":O,variant:`segmented`,size:`sm`,spacing:1,className:`shrink-0 rounded-md bg-muted p-0.5 dark:bg-background`,children:[st,ct]}),t[53]=f,t[54]=O,t[55]=k):k=t[55];let A;t[56]!==s||t[57]!==qe||t[58]!==We||t[59]!==Ye?(A=qe>1&&(0,l.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 rounded-md border border-border bg-muted/40 p-0.5 dark:bg-background`,children:[(0,l.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-6`,"aria-label":s({id:`_azghp`}),"data-testid":`timeline-diff-prev`,onClick:()=>Ye(We-1),children:(0,l.jsx)(ue,{className:`size-3.5`})}),(0,l.jsxs)(`span`,{className:`px-0.5 text-xs tabular-nums text-muted-foreground`,"aria-live":`polite`,children:[We+1,` / `,qe]}),(0,l.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-6`,"aria-label":s({id:`-bFGPF`}),"data-testid":`timeline-diff-next`,onClick:()=>Ye(We+1),children:(0,l.jsx)(me,{className:`size-3.5`})})]}),t[56]=s,t[57]=qe,t[58]=We,t[59]=Ye,t[60]=A):A=t[60];let j;t[61]!==v||t[62]!==d?(j=()=>d>0?Be(!0):v(),t[61]=v,t[62]=d,t[63]=j):j=t[63];let M;t[64]===m?M=t[65]:(M=m?(0,l.jsx)(he,{className:`mr-1.5 size-3.5 animate-spin`}):(0,l.jsx)(ve,{className:`mr-1.5 size-3.5`}),t[64]=m,t[65]=M);let lt;t[66]===Symbol.for(`react.memo_cache_sentinel`)?(lt=(0,l.jsx)(i,{id:`yKu_3Y`}),t[66]=lt):lt=t[66];let ut;t[67]!==m||t[68]!==j||t[69]!==M?(ut=(0,l.jsxs)(o,{variant:`outline`,size:`sm`,className:`h-7 shrink-0`,"data-testid":`timeline-diff-restore`,disabled:m,onClick:j,children:[M,lt]}),t[67]=m,t[68]=j,t[69]=M,t[70]=ut):ut=t[70];let N;t[71]!==s||t[72]!==r?(N=s(r?{id:`6iDEWA`}:{id:`170Js2`}),t[71]=s,t[72]=r,t[73]=N):N=t[73];let dt=!r,P;t[74]===r?P=t[75]:(P=r?(0,l.jsx)(_e,{className:`size-4`}):(0,l.jsx)(ge,{className:`size-4`}),t[74]=r,t[75]=P);let F;t[76]!==a||t[77]!==N||t[78]!==dt||t[79]!==P?(F=(0,l.jsx)(te,{asChild:!0,children:(0,l.jsx)(o,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0`,"data-testid":`timeline-diff-toggle-panel`,"aria-label":N,"aria-expanded":dt,onClick:a,children:P})}),t[76]=a,t[77]=N,t[78]=dt,t[79]=P,t[80]=F):F=t[80];let I;t[81]!==s||t[82]!==r?(I=s(r?{id:`6iDEWA`}:{id:`170Js2`}),t[81]=s,t[82]=r,t[83]=I):I=t[83];let L;t[84]===I?L=t[85]:(L=(0,l.jsx)(ne,{side:`bottom`,children:I}),t[84]=I,t[85]=L);let R;t[86]!==F||t[87]!==L?(R=(0,l.jsxs)(re,{children:[F,L]}),t[86]=F,t[87]=L,t[88]=R):R=t[88];let z;t[89]!==D||t[90]!==k||t[91]!==A||t[92]!==ut||t[93]!==R?(z=(0,l.jsxs)(`div`,{className:`ml-auto flex flex-wrap items-center justify-end gap-2`,children:[D,k,A,ut,R]}),t[89]=D,t[90]=k,t[91]=A,t[92]=ut,t[93]=R,t[94]=z):z=t[94];let B;t[95]!==C||t[96]!==E||t[97]!==z?(B=(0,l.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1.5 border-b border-border px-3 py-2`,children:[C,E,z]}),t[95]=C,t[96]=E,t[97]=z,t[98]=B):B=t[98];let V;t[99]===h.status?V=t[100]:(V=h.status===`loading`&&(0,l.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-3 text-xs text-muted-foreground`,children:[(0,l.jsx)(he,{className:`size-3 animate-spin`}),(0,l.jsx)(i,{id:`38foVZ`})]}),t[99]=h.status,t[100]=V);let H;t[101]===h.status?H=t[102]:(H=h.status===`error`&&(0,l.jsx)(`p`,{className:`px-4 py-3 text-xs text-destructive`,children:(0,l.jsx)(i,{id:`vvWZnu`})}),t[101]=h.status,t[102]=H);let U;t[103]!==f||t[104]!==g||t[105]!==h.after||t[106]!==h.diff||t[107]!==h.status?(U=h.status===`ready`&&(f===`rendered`&&g?.ok?(0,l.jsx)(Ce,{diff:g}):h.diff===``?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`p`,{className:`border-b border-border px-4 py-2 text-xs text-muted-foreground italic`,children:(0,l.jsx)(i,{id:`3YWddZ`})}),(0,l.jsx)(`pre`,{className:`whitespace-pre-wrap px-4 py-3 font-mono text-xs text-foreground/90`,children:h.after})]}):(0,l.jsx)(c.Suspense,{fallback:(0,l.jsxs)(`div`,{className:`flex items-center gap-2 px-4 py-3 text-xs text-muted-foreground`,children:[(0,l.jsx)(he,{className:`size-3 animate-spin`}),(0,l.jsx)(i,{id:`EDm3wJ`})]}),children:(0,l.jsx)(je,{diff:h.diff,viewType:`unified`})})),t[103]=f,t[104]=g,t[105]=h.after,t[106]=h.diff,t[107]=h.status,t[108]=U):U=t[108];let W;t[109]!==V||t[110]!==H||t[111]!==U?(W=(0,l.jsxs)(`div`,{ref:Ue,className:`min-h-0 flex-1 overflow-auto subtle-scrollbar`,children:[V,H,U]}),t[109]=V,t[110]=H,t[111]=U,t[112]=W):W=t[112];let G;t[113]===m?G=t[114]:(G=e=>{!e&&!m?Be(!1):e&&Be(!0)},t[113]=m,t[114]=G);let K;t[115]===s?K=t[116]:(K=s({id:`n3wx1q`}),t[115]=s,t[116]=K);let q;t[117]===K?q=t[118]:(q=(0,l.jsx)(ae,{children:K}),t[117]=K,t[118]=q);let J;t[119]===d?J=t[120]:(J=(0,l.jsx)(i,{id:`nfPccR`,values:{laterEdits:d}}),t[119]=d,t[120]=J);let ft;t[121]===Symbol.for(`react.memo_cache_sentinel`)?(ft=(0,l.jsx)(i,{id:`5ZbJFS`}),t[121]=ft):ft=t[121];let Y;t[122]===J?Y=t[123]:(Y=(0,l.jsxs)(ie,{children:[J,` `,ft]}),t[122]=J,t[123]=Y);let X;t[124]!==q||t[125]!==Y?(X=(0,l.jsxs)(ce,{children:[q,Y]}),t[124]=q,t[125]=Y,t[126]=X):X=t[126];let pt;t[127]===Symbol.for(`react.memo_cache_sentinel`)?(pt=(0,l.jsx)(o,{variant:`outline`,"data-testid":`timeline-diff-restore-cancel`,onClick:()=>Be(!1),children:(0,l.jsx)(i,{id:`dEgA5A`})}),t[127]=pt):pt=t[127];let Z;t[128]===v?Z=t[129]:(Z=()=>v(),t[128]=v,t[129]=Z);let Q;t[130]===m?Q=t[131]:(Q=m?(0,l.jsx)(he,{className:`mr-2 size-4 animate-spin`}):null,t[130]=m,t[131]=Q);let mt;t[132]===Symbol.for(`react.memo_cache_sentinel`)?(mt=(0,l.jsx)(i,{id:`yKu_3Y`}),t[132]=mt):mt=t[132];let ht;t[133]!==m||t[134]!==Z||t[135]!==Q?(ht=(0,l.jsxs)(se,{children:[pt,(0,l.jsxs)(o,{variant:`destructive`,"data-testid":`timeline-diff-restore-confirm`,disabled:m,onClick:Z,children:[Q,mt]})]}),t[133]=m,t[134]=Z,t[135]=Q,t[136]=ht):ht=t[136];let gt;t[137]!==X||t[138]!==ht?(gt=(0,l.jsxs)(oe,{children:[X,ht]}),t[137]=X,t[138]=ht,t[139]=gt):gt=t[139];let $;t[140]!==p||t[141]!==G||t[142]!==gt?($=(0,l.jsx)(le,{open:p,onOpenChange:G,children:gt}),t[140]=p,t[141]=G,t[142]=gt,t[143]=$):$=t[143];let _t;return t[144]!==B||t[145]!==W||t[146]!==$?(_t=(0,l.jsxs)(`div`,{className:`absolute inset-0 z-20 flex flex-col bg-background`,"data-testid":`timeline-diff-pane`,children:[B,W,$]}),t[144]=B,t[145]=W,t[146]=$,t[147]=_t):_t=t[147],_t}function Me(){return Se()}function Ne(){return new s(32)}export{u as TimelineDiffPane};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BoNEB_HG.js";import{n as e}from"./chunk-MOZMSUNE-_PphKf7-.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,ot as t}from"./chunk-WYO6CB5R-CB_foSvM.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DCzjAn36.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DCzjAn36.js";import"./src-D9tbVCHI.js";import{x as t}from"./chunk-WYO6CB5R-CB_foSvM.js";import{C as n}from"./src-o9HvXeVZ.js";var r=e(e=>{let{securityLevel:r}=t(),i=n(`body`);return r===`sandbox`&&(i=n((n(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DCzjAn36.js";import"./src-D9tbVCHI.js";import{C as t}from"./src-o9HvXeVZ.js";var n=e((e,n)=>{let r;return n===`sandbox`&&(r=t(`#i`+e)),t(n===`sandbox`?r.nodes()[0].contentDocument.body:`body`).select(`[id="${e}"]`)},`getDiagramElement`);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DCzjAn36.js";import"./src-D9tbVCHI.js";import"./chunk-WYO6CB5R-CB_foSvM.js";import"./chunk-ICXQ74PX-Ce0LzbhW.js";import"./chunk-HOUHSVGY-Do2Y3Btv.js";import"./chunk-Q4XR5HBZ-BE54IG_w.js";import"./chunk-7BUUIJ7U-CAEbPbJV.js";import"./chunk-OGEWGWER-DEtBK0B_.js";import"./chunk-32BRIVSS-CVMNE9FE.js";import"./chunk-XXDRQBXY-B0w7NWS1.js";import"./chunk-VR4S4FIN-DI4tyiVg.js";import"./chunk-C7G6YPKG-1I7HAvac.js";import"./chunk-ZGVPDNZ5-BwKc2ci4.js";import"./chunk-52WLFC77-ByP8adiF.js";import"./chunk-FWX5IMBZ-C-l8NZxe.js";import{i as t,n,r,t as i}from"./chunk-V7JOEXUC-CRcOKbTq.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-DCzjAn36.js";import"./src-D9tbVCHI.js";import"./chunk-WYO6CB5R-CB_foSvM.js";import"./chunk-ICXQ74PX-Ce0LzbhW.js";import"./chunk-HOUHSVGY-Do2Y3Btv.js";import"./chunk-Q4XR5HBZ-BE54IG_w.js";import"./chunk-7BUUIJ7U-CAEbPbJV.js";import"./chunk-OGEWGWER-DEtBK0B_.js";import"./chunk-32BRIVSS-CVMNE9FE.js";import"./chunk-XXDRQBXY-B0w7NWS1.js";import"./chunk-VR4S4FIN-DI4tyiVg.js";import"./chunk-C7G6YPKG-1I7HAvac.js";import"./chunk-ZGVPDNZ5-BwKc2ci4.js";import"./chunk-52WLFC77-ByP8adiF.js";import"./chunk-FWX5IMBZ-C-l8NZxe.js";import{i as t,n,r,t as i}from"./chunk-V7JOEXUC-CRcOKbTq.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BoNEB_HG.js";import{n as e}from"./chunk-OSBZ3O6U-CZ7_DsZG.js";export{e as createCynefinServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BoNEB_HG.js";import{n as e}from"./chunk-5JV3BV7I-BHpORvdP.js";export{e as createEventModelingServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./src-D9tbVCHI.js";import"./chunk-WYO6CB5R-CB_foSvM.js";import"./chunk-ICXQ74PX-Ce0LzbhW.js";import"./chunk-HOUHSVGY-Do2Y3Btv.js";import"./chunk-Q4XR5HBZ-BE54IG_w.js";import"./chunk-7BUUIJ7U-CAEbPbJV.js";import"./chunk-OGEWGWER-DEtBK0B_.js";import"./chunk-32BRIVSS-CVMNE9FE.js";import"./chunk-XXDRQBXY-B0w7NWS1.js";import"./chunk-VR4S4FIN-DI4tyiVg.js";import"./chunk-C7G6YPKG-1I7HAvac.js";import"./chunk-ZGVPDNZ5-BwKc2ci4.js";import"./chunk-52WLFC77-ByP8adiF.js";import"./chunk-FWX5IMBZ-C-l8NZxe.js";import"./chunk-ZIRB5QZD-x2paC8Ym.js";import{n as e}from"./chunk-PUDLZKDR-DOJ6xYbt.js";export{e as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./jsx-runtime-BUgB2tll.js";import{t}from"./compiler-runtime-BfE3aGVn.js";import{t as n}from"./utils-CPqDy6Hr.js";import{r}from"./button-D3xSRfT4.js";import{t as i}from"./separator-BhGCtoZc.js";var a=t(),o=e(),s=r(`group/button-group flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1`,{variants:{orientation:{horizontal:`[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-lg!`,vertical:`flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-lg!`}},defaultVariants:{orientation:`horizontal`}});function c(e){let t=(0,a.c)(11),r,i,c;t[0]===e?(r=t[1],i=t[2],c=t[3]):({className:r,orientation:i,...c}=e,t[0]=e,t[1]=r,t[2]=i,t[3]=c);let l;t[4]!==r||t[5]!==i?(l=n(s({orientation:i}),r),t[4]=r,t[5]=i,t[6]=l):l=t[6];let u;return t[7]!==i||t[8]!==c||t[9]!==l?(u=(0,o.jsx)(`div`,{role:`group`,"data-slot":`button-group`,"data-orientation":i,className:l,...c}),t[7]=i,t[8]=c,t[9]=l,t[10]=u):u=t[10],u}function l(e){let t=(0,a.c)(10),r,s,c;t[0]===e?(r=t[1],s=t[2],c=t[3]):({className:r,orientation:c,...s}=e,t[0]=e,t[1]=r,t[2]=s,t[3]=c);let l=c===void 0?`vertical`:c,u;t[4]===r?u=t[5]:(u=n(`relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto`,r),t[4]=r,t[5]=u);let d;return t[6]!==l||t[7]!==s||t[8]!==u?(d=(0,o.jsx)(i,{"data-slot":`button-group-separator`,orientation:l,className:u,...s}),t[6]=l,t[7]=s,t[8]=u,t[9]=d):d=t[9],d}var u=`button, a[href], [role="menuitem"], [role="button"], input, textarea, select, [contenteditable="true"]`;function d(e,t){!(e.target instanceof HTMLElement)||e.target.closest(u)||(e.preventDefault(),t.current?.focus())}var f=`ok-acp-follow-file-v1`;function p(){try{return localStorage.getItem(f)!==`0`}catch{return!0}}function m(e){try{localStorage.setItem(f,e?`1`:`0`)}catch{}}function h(e){return e===``||e.startsWith(`/`)||e.startsWith(`\\`)||e.split(`/`).some(e=>e===``||e.startsWith(`.`))?null:e}function g(e,t){let n=t.pathSeparator,r=e=>n===`\\`?e.replaceAll(`\\`,`/`):e,i=r(t.contentDir).replace(/\/$/,``),a=r(e);if(!a.startsWith(`${i}/`))return null;let o=a.slice(i.length+1),s=/\.(md|mdx)$/.exec(o);return s===null?null:h(o.slice(0,-s[0].length))}function _(e,t){let n=e[t];return typeof n==`string`&&n!==``?n:null}var v=new Set([`cat`,`ls`,`grep`,`rg`,`find`,`head`,`tail`,`wc`,`sort`,`uniq`,`cut`,`sed`,`awk`,`bat`,`less`,`more`]);function y(e,t){let n=[],r=/"([^"]*)"|'([^']*)'|(\S+)/g,i=r.exec(e);for(;i!==null;)n.push(i[1]??i[2]??i[3]??``),i=r.exec(e);let a=n[0];if(a===void 0||!v.has(a))return null;for(let e of n.slice(1)){if(e.startsWith(`-`)||/[*?[\]]/.test(e))continue;let n=/\.(md|mdx)$/i.exec(e);if(n===null)continue;if(e.startsWith(`/`)||/^[A-Za-z]:[\\/]/.test(e)){if(t!==null){let n=g(e,t);if(n!==null)return n}continue}let r=h(e.replace(/^\.\//,``).slice(0,-n[0].length));if(r!==null)return r}return null}function b(e){if(typeof e!=`object`||!e)return null;let t=e,n=_(t,`tool`)??_(t,`name`),r=t;if(typeof t.arguments==`object`&&t.arguments!==null)r=t.arguments;else if(typeof t.arguments==`string`)try{let e=JSON.parse(t.arguments);typeof e==`object`&&e&&(r=e)}catch{}return{tool:n,args:r}}function x(e,t,n,r){let i=b(e);if(i===null)return null;let{tool:a,args:o}=i;if(a===`delete`||a===null&&/\bdelete\b/i.test(t))return null;let s=typeof o.document==`object`&&o.document!==null?o.document:null,c=null;if(Array.isArray(o.documents))for(let e=o.documents.length-1;e>=0;e--){let t=o.documents[e];if(typeof t==`object`&&t){c=t;break}}let l=(s===null?null:_(s,`path`))??(c===null?null:_(c,`path`))??_(o,`to`)??_(o,`docName`);if(l!==null)return h(l.replace(/\.(md|mdx)$/,``));let u=_(o,`command`);if(u!==null){let e=y(u,n);return e!==null&&r.commandTargetExists!==void 0&&!r.commandTargetExists(e)?null:e}return null}function S(e,t,n={}){if(e.toolKind===`delete`)return null;let r=x(e.rawInput,e.title,t,n);if(r!==null)return r;if(t===null)return null;for(let n=e.locations.length-1;n>=0;n--){let r=e.locations[n];if(r===void 0)continue;let i=g(r.path,t);if(i!==null)return i}return null}function C(e,t,n={}){let r=null;for(let i of e){if(i.kind!==`tool_call`)continue;let e=S(i,t,n);e!==null&&(r=e)}return r}export{d as a,m as i,p as n,c as o,h as r,l as s,C as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-KEIR6QF5-BoNEB_HG.js";import{n as e}from"./chunk-CYSBUYHQ-okSmY2v_.js";export{e as createGitGraphServices};
|