@inkeep/open-knowledge 0.87.0-beta.2 → 0.87.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/cli.mjs +6 -6
  2. package/dist/constants-DbuQSZES.mjs +1 -0
  3. package/dist/{dist-0gI1oLbO.mjs → dist-Nf304EbD.mjs} +1 -1
  4. package/dist/{dist-_mI3Jjf-.mjs → dist-WUkQ-0NU.mjs} +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/init-BSfWKxH3.mjs +1 -0
  7. package/dist/{init-DIAKdBV0.mjs → init-DVV2IPlH.mjs} +2 -2
  8. package/dist/{launch-json-removal-DJC4Yapa.mjs → launch-json-removal-Cgp1LTaQ.mjs} +1 -1
  9. package/dist/loader-B24TIi2v.mjs +1 -0
  10. package/dist/{loader-CnGe_Flu.mjs → loader-DigAueDc.mjs} +1 -1
  11. package/dist/{open-browser-3bURxjbo.mjs → open-browser-DpCYxQUn.mjs} +1 -1
  12. package/dist/{preview-c3qAKdkh.mjs → preview-B6BTCdRM.mjs} +1 -1
  13. package/dist/preview-DuSjB2Jf.mjs +1 -0
  14. package/dist/public/assets/{AccountSection-Bo4dPyFQ.js → AccountSection-Db0Y5FdS.js} +1 -1
  15. package/dist/public/assets/{ActivityModeContent-CfexCY5K.js → ActivityModeContent-mBOOx8UW.js} +1 -1
  16. package/dist/public/assets/{ActivityPanelDiffView-BTB4On_E.js → ActivityPanelDiffView-CCS0Nkum.js} +1 -1
  17. package/dist/public/assets/{AddPropertiesButton-DhN1KHUi.js → AddPropertiesButton-BfMkFaFN.js} +2 -2
  18. package/dist/public/assets/{AgentConnectionsSection-BBrTu_Hd.js → AgentConnectionsSection-CFTMQXUz.js} +1 -1
  19. package/dist/public/assets/{AgentDiffPane-B4ONrFEX.js → AgentDiffPane-ePRfks7Y.js} +2 -2
  20. package/dist/public/assets/{AgentThreadClientBinder-BKZL1FEK.js → AgentThreadClientBinder-BoMnnONc.js} +1 -1
  21. package/dist/public/assets/{AppMenubar-vPHVy2jk.js → AppMenubar-Lz_2ECvw.js} +1 -1
  22. package/dist/public/assets/{AttachmentsSection-CCkTnF8H.js → AttachmentsSection-uNdpfwu0.js} +1 -1
  23. package/dist/public/assets/{BugReportHistory-DCPpzbO5.js → BugReportHistory-Cn1uopFw.js} +1 -1
  24. package/dist/public/assets/{BugReportHistoryDialog-D-QZYqdF.js → BugReportHistoryDialog-DOJthShd.js} +1 -1
  25. package/dist/public/assets/{CodeMirrorEditor-UCMRAMCV-gMzc3glM.js → CodeMirrorEditor-UCMRAMCV-NL0u-orr.js} +1 -1
  26. package/dist/public/assets/{CodeMirrorPropInput-C14KgbUB.js → CodeMirrorPropInput-BOdSzKYW.js} +3 -3
  27. package/dist/public/assets/{ConsentDialogBody-k0k7metW.js → ConsentDialogBody-XNb2G3na.js} +1 -1
  28. package/dist/public/assets/{ContentRulesSection-B9osiZ5e.js → ContentRulesSection-CHzdTm6j.js} +1 -1
  29. package/dist/public/assets/{DiffViewBoundary-DFNHnF7f.js → DiffViewBoundary-DS5sFg8l.js} +1 -1
  30. package/dist/public/assets/DocumentContext-BaFslp3W.js +108 -0
  31. package/dist/public/assets/{EditorModeToggle-lBQIZux4.js → EditorModeToggle-GDU_POcr.js} +1 -1
  32. package/dist/public/assets/{ExcalidrawDocEditor-DiwiWo-5.js → ExcalidrawDocEditor-DMwb_yqY.js} +1 -1
  33. package/dist/public/assets/FeedbackForm-h3WitRlc.js +1 -0
  34. package/dist/public/assets/{GraphPanel-4ARXQVWm.js → GraphPanel-BqNuC1PH.js} +1 -1
  35. package/dist/public/assets/{ImageAttachments-BDh-av0V.js → ImageAttachments-oSzqgO9z.js} +1 -1
  36. package/dist/public/assets/ImportSkillDialog-BSqbU7Ae.js +1 -0
  37. package/dist/public/assets/{LinkPreviewsSection-BCYSzx82.js → LinkPreviewsSection-Dq5WtXx_.js} +1 -1
  38. package/dist/public/assets/{LintConfigEditor-d7iNbkFu.js → LintConfigEditor-Q35D1bSH.js} +1 -1
  39. package/dist/public/assets/{LintingSection-BfQJhSqK.js → LintingSection-DQ0PGPlO.js} +1 -1
  40. package/dist/public/assets/{ManagedArtifactProperties-CgYx_raS.js → ManagedArtifactProperties-MA9oBq-2.js} +1 -1
  41. package/dist/public/assets/ManagedArtifactProperties-X-CbCRJf.js +1 -0
  42. package/dist/public/assets/{McpConsentDialogBody-9u-ImAfw.js → McpConsentDialogBody-xbsziJ8M.js} +1 -1
  43. package/dist/public/assets/{Mermaid-DqNhHNi1.js → Mermaid-CSQrzsa-.js} +2 -2
  44. package/dist/public/assets/{MermaidDocEditor-hIN30U4A.js → MermaidDocEditor-DLxjxh6u.js} +1 -1
  45. package/dist/public/assets/{MultiFileDiff-BFbTHRMN.js → MultiFileDiff-BPqKFglt.js} +1 -1
  46. package/dist/public/assets/{NetworkAccessSection-Bc1mBEpU.js → NetworkAccessSection-DX9o-uvH.js} +1 -1
  47. package/dist/public/assets/{OkCliPathRow-CIrEL7IY.js → OkCliPathRow-qha7ViCN.js} +1 -1
  48. package/dist/public/assets/{OkignoreSection-DplnnxQb.js → OkignoreSection-CQywQkmc.js} +1 -1
  49. package/dist/public/assets/{PageListContext-CbzXXblg.js → PageListContext-Bsok6Dkc.js} +1 -1
  50. package/dist/public/assets/{ProjectTemplatesSection-DYj1MFJG.js → ProjectTemplatesSection-BtUwaSYs.js} +1 -1
  51. package/dist/public/assets/{PropertyDisplayRow-DYZRoIHn.js → PropertyDisplayRow-DJsnpgG8.js} +1 -1
  52. package/dist/public/assets/{PublishToGitHubDialog-CWgik3XO.js → PublishToGitHubDialog-5MHJQrpq.js} +1 -1
  53. package/dist/public/assets/{ReportBugDialogBody-Bbd3DGIB.js → ReportBugDialogBody-Dx_LVm22.js} +1 -1
  54. package/dist/public/assets/{ReportBugMenuTrigger-DFg5tOG8.js → ReportBugMenuTrigger-xHppTUcT.js} +1 -1
  55. package/dist/public/assets/{SchemaConfigEditor-kryiWiDK.js → SchemaConfigEditor-BzQH91rB.js} +1 -1
  56. package/dist/public/assets/{SearchSection-Cj7FdFQQ.js → SearchSection-D-Pr_9-R.js} +1 -1
  57. package/dist/public/assets/{SessionsHost-B9gM79-g.js → SessionsHost-Bc4cskDH.js} +2 -2
  58. package/dist/public/assets/{SettingsDialogBody-CdmGZmCh.js → SettingsDialogBody-BIa5_zwI.js} +2 -2
  59. package/dist/public/assets/{ShareReceiveMissDialog-BydqiR7F.js → ShareReceiveMissDialog-CFVAh9nW.js} +1 -1
  60. package/dist/public/assets/{SharingSection-C-9tTPow.js → SharingSection-HnLTw3fT.js} +1 -1
  61. package/dist/public/assets/{SkillEditBanner-FV1XZks2.js → SkillEditBanner-BYQhRIjd.js} +1 -1
  62. package/dist/public/assets/{SkillForkDialog-BHqkO5bK.js → SkillForkDialog-Cp2VfBKT.js} +1 -1
  63. package/dist/public/assets/{SkillInstallMenu-DtXyIqB8.js → SkillInstallMenu-CsSIF4d7.js} +1 -1
  64. package/dist/public/assets/{SkillOriginInline-Z5JCe0T2.js → SkillOriginInline-DXmcEqEw.js} +2 -2
  65. package/dist/public/assets/{SkillPluginBundleDialog-XB1fO90e.js → SkillPluginBundleDialog-D8f_Pygy.js} +1 -1
  66. package/dist/public/assets/{SkillToolbarControls-KYUxZQNe.js → SkillToolbarControls-CTk9ooVZ.js} +1 -1
  67. package/dist/public/assets/{SkillUpdateConflictDialog-D_oqmK3K.js → SkillUpdateConflictDialog-BbujrDOD.js} +1 -1
  68. package/dist/public/assets/{SkillsManagerSection-DCJlhnvy.js → SkillsManagerSection-BQ6eCTsP.js} +1 -1
  69. package/dist/public/assets/{SlidesPluginSection-BhUKklqb.js → SlidesPluginSection-dXy1hGNp.js} +1 -1
  70. package/dist/public/assets/{SourceEditor-BIPGmkaK.js → SourceEditor-BUnCs6rW.js} +1 -1
  71. package/dist/public/assets/{SpellingSettings-DhyHqpT4.js → SpellingSettings-Bqz9pslj.js} +1 -1
  72. package/dist/public/assets/{SyncSection-CPLGR0K4.js → SyncSection-KBplRgYc.js} +1 -1
  73. package/dist/public/assets/{SyncStatusBadge-Co74i3q_.js → SyncStatusBadge-jRLOv6OZ.js} +1 -1
  74. package/dist/public/assets/{TerminalPanel-Bj0ZrCsM.js → TerminalPanel-DYxs61YB.js} +1 -1
  75. package/dist/public/assets/{TerminalSection-DEVYY41F.js → TerminalSection-C3kz8ltC.js} +1 -1
  76. package/dist/public/assets/{TerminalWindowApp-XRrhf3K3.js → TerminalWindowApp-v86NLljc.js} +1 -1
  77. package/dist/public/assets/{TextDocEditor-Eqrxtsiw.js → TextDocEditor-1q9gEeRK.js} +1 -1
  78. package/dist/public/assets/{ThemePluginSection-DvtPYcRy.js → ThemePluginSection-DyuaEmFe.js} +1 -1
  79. package/dist/public/assets/{ThreadView-CDE0BRUz.js → ThreadView-DFt4WifR.js} +10 -10
  80. package/dist/public/assets/{TimelineDiffPane-CLScmppv.js → TimelineDiffPane-DNZGTsLz.js} +2 -2
  81. package/dist/public/assets/{abnfDiagram-N423BO3Z-DxZ-Koze.js → abnfDiagram-N423BO3Z-DtxRG9UX.js} +1 -1
  82. package/dist/public/assets/{architectureDiagram-T3A2C74G-kC-V7IMi.js → architectureDiagram-T3A2C74G-wLxYdHFB.js} +1 -1
  83. package/dist/public/assets/{blockDiagram-VBNYF7ZC-BKEhT33t.js → blockDiagram-VBNYF7ZC-Pjeu3MNP.js} +1 -1
  84. package/dist/public/assets/{bug-report-send-manager-DWzqdFH7.js → bug-report-send-manager-BAnvVPby.js} +1 -1
  85. package/dist/public/assets/{c4Diagram-5PPSVZJV-Do2HOyes.js → c4Diagram-5PPSVZJV-DE3wsCgr.js} +1 -1
  86. package/dist/public/assets/channel-C3dKvFV5.js +1 -0
  87. package/dist/public/assets/{chunk-2GRJ4B5K-S_oJ0t4y.js → chunk-2GRJ4B5K-ClzGKqzp.js} +1 -1
  88. package/dist/public/assets/{chunk-3NCLNEKW-D5wa2WAP.js → chunk-3NCLNEKW-jfRpWNZt.js} +1 -1
  89. package/dist/public/assets/{chunk-4I5QYGJK-Dp669PmE.js → chunk-4I5QYGJK-BvE0r05N.js} +1 -1
  90. package/dist/public/assets/{chunk-5RXB4S5H-DRiK0ixI.js → chunk-5RXB4S5H-gTApSFEx.js} +1 -1
  91. package/dist/public/assets/{chunk-6Q2QTUOP-CDDzU8ni.js → chunk-6Q2QTUOP-qvPNNDVk.js} +1 -1
  92. package/dist/public/assets/{chunk-7Z6QIM7H-riu23jJK.js → chunk-7Z6QIM7H-rwCNkfVu.js} +1 -1
  93. package/dist/public/assets/{chunk-BO2N2NFS-D_QMFEED.js → chunk-BO2N2NFS-De4FWds-.js} +4 -4
  94. package/dist/public/assets/{chunk-GF5L2VYU-CcvARaXd.js → chunk-GF5L2VYU-BBflv717.js} +1 -1
  95. package/dist/public/assets/{chunk-I66GZJ75-Mkx0wAj8.js → chunk-I66GZJ75-CJhve8_m.js} +1 -1
  96. package/dist/public/assets/{chunk-J7OUQ5F2-B_dGIV0c.js → chunk-J7OUQ5F2-DS7HkZLi.js} +2 -2
  97. package/dist/public/assets/{chunk-JQJVKLGR-DzOLtgmE.js → chunk-JQJVKLGR-CHVgYkog.js} +1 -1
  98. package/dist/public/assets/{chunk-KBJHAD2P-ByDw6A4K.js → chunk-KBJHAD2P-DK3QrMpY.js} +1 -1
  99. package/dist/public/assets/{chunk-NSK5VX7P-BytRcAia.js → chunk-NSK5VX7P-CcEZtfre.js} +1 -1
  100. package/dist/public/assets/{chunk-QR6OTTB3-D8za8qsa.js → chunk-QR6OTTB3-qF4HoiE9.js} +1 -1
  101. package/dist/public/assets/{chunk-UBXNYLIW-BikKpxC2.js → chunk-UBXNYLIW-CGvZjPjz.js} +1 -1
  102. package/dist/public/assets/{chunk-W5SLKNZC-D_CrJ8tI.js → chunk-W5SLKNZC-Dw_hS9zr.js} +1 -1
  103. package/dist/public/assets/{chunk-WRU74C26-D5Y_Dzwm.js → chunk-WRU74C26-Ct6yd0-T.js} +1 -1
  104. package/dist/public/assets/classDiagram-JCYQIIEL-BuTWccfh.js +1 -0
  105. package/dist/public/assets/classDiagram-v2-OCEON4UE-xIsJuttE.js +1 -0
  106. package/dist/public/assets/{client-version-V5JX2_9H.js → client-version-BIIcXp-F.js} +1 -1
  107. package/dist/public/assets/{cm-theme-Dml6DrPs.js → cm-theme-DY245iRg.js} +1 -1
  108. package/dist/public/assets/{code-highlighter-impl-y1C6ECDp.js → code-highlighter-impl-CrzNiVvD.js} +1 -1
  109. package/dist/public/assets/{comment-chips-B6PiUF0P.js → comment-chips-DMkDjrn6.js} +1 -1
  110. package/dist/public/assets/{config-provider-CY8rv6VT.js → config-provider-B7giKNZc.js} +1 -1
  111. package/dist/public/assets/{cynefinDiagram-MW4NZA55-C5F835a_.js → cynefinDiagram-MW4NZA55-BlRVUElT.js} +1 -1
  112. package/dist/public/assets/{dagre-VZM6K2ZE-Bhk3ecW_.js → dagre-VZM6K2ZE-DFuv-cK6.js} +1 -1
  113. package/dist/public/assets/{diagram-7IWD3JNH-DvWl2aZ9.js → diagram-7IWD3JNH-BM0WTGbx.js} +1 -1
  114. package/dist/public/assets/{diagram-B4RE2ZJO-DvkMsKBc.js → diagram-B4RE2ZJO-CKPW7n8V.js} +1 -1
  115. package/dist/public/assets/{diagram-LBJQPF4R-BU8SmhWa.js → diagram-LBJQPF4R-BGJO2kEk.js} +1 -1
  116. package/dist/public/assets/{diagram-Q27KOJAE-BLJoDpTp.js → diagram-Q27KOJAE-s8QuJeNx.js} +1 -1
  117. package/dist/public/assets/{diagram-UB23O5K3-BEJov894.js → diagram-UB23O5K3-B0i1xg24.js} +1 -1
  118. package/dist/public/assets/{dist-Bw3EnfRK.js → dist-8cadZTcN.js} +1 -1
  119. package/dist/public/assets/{dist-CRnJUJYV.js → dist-B1oPuPz8.js} +1 -1
  120. package/dist/public/assets/{dist-DL4JUOn7.js → dist-B3DJFAAc.js} +1 -1
  121. package/dist/public/assets/{dist-DxN51Ana2.js → dist-BIq0_yiu2.js} +1 -1
  122. package/dist/public/assets/{dist-BxVTbkVl.js → dist-C3P7yzPg.js} +1 -1
  123. package/dist/public/assets/{dist-urhiDaCp.js → dist-CwnKas8E.js} +1 -1
  124. package/dist/public/assets/{dist-nSDmHl8c.js → dist-D0egXYuQ.js} +1 -1
  125. package/dist/public/assets/{dist-CtBRIMC4.js → dist-DNUUqdDe.js} +1 -1
  126. package/dist/public/assets/{dist-Jw9rDwKW.js → dist-DchonWFB.js} +1 -1
  127. package/dist/public/assets/{dist-LjMlqXYz.js → dist-DhRS7v2X.js} +1 -1
  128. package/dist/public/assets/{dist-CBBf5U_8.js → dist-Dn7hbatR.js} +1 -1
  129. package/dist/public/assets/{dist-D2c3re7d.js → dist-MW_4cYgC.js} +1 -1
  130. package/dist/public/assets/dist-ei2QQdZM.js +1 -0
  131. package/dist/public/assets/{dist-DTvyxWzB.js → dist-pOXH7Izb.js} +1 -1
  132. package/dist/public/assets/{dist-BjL32yBS.js → dist-rrfJUNqT.js} +1 -1
  133. package/dist/public/assets/{doc-undo-manager-BgNKZ6KQ.js → doc-undo-manager-PHzC2AmJ.js} +1 -1
  134. package/dist/public/assets/{ebnfDiagram-BXEA7PRR-CCNI1OBw.js → ebnfDiagram-BXEA7PRR-BMJ-QLYi.js} +1 -1
  135. package/dist/public/assets/{engine-compile-DCFDOxYT.js → engine-compile-D75sBEQx.js} +1 -1
  136. package/dist/public/assets/{erDiagram-JOGREHBK-s9FPNXy0.js → erDiagram-JOGREHBK-B7RLRxay.js} +1 -1
  137. package/dist/public/assets/field-controls-BpWrodXJ.js +1 -0
  138. package/dist/public/assets/{field-controls-DtQ6Aw_j.js → field-controls-D31F23S8.js} +1 -1
  139. package/dist/public/assets/{file-tree-adapter-DC-yGI9s.js → file-tree-adapter-B_KOESNY.js} +1 -1
  140. package/dist/public/assets/flowDiagram-UKHOOZJN-DATdWVJi.js +1 -0
  141. package/dist/public/assets/{ganttDiagram-PKOTCBZU-tQng7xZg.js → ganttDiagram-PKOTCBZU-CmzX9pwR.js} +1 -1
  142. package/dist/public/assets/{gitGraphDiagram-DS77QQ5N-0oGaI7oi.js → gitGraphDiagram-DS77QQ5N-Dkk025kT.js} +1 -1
  143. package/dist/public/assets/globals-Bwyn_Aih.css +1 -0
  144. package/dist/public/assets/{highlighted-body-OFNGDK62-BwM9yU73.js → highlighted-body-OFNGDK62-CNZlBSJb.js} +1 -1
  145. package/dist/public/assets/{image-attachment-CkuQ83TY.js → image-attachment-BPChXLGL.js} +1 -1
  146. package/dist/public/assets/{ime-composition-DSJh5ynW.js → ime-composition-B56Lnl92.js} +1 -1
  147. package/dist/public/assets/{index-zyBtEQ0N.js → index-D9p_dx5H.js} +16 -16
  148. package/dist/public/assets/{infoDiagram-6WML65LV-DQIEucLv.js → infoDiagram-6WML65LV-Ba5SAnnJ.js} +1 -1
  149. package/dist/public/assets/{ishikawaDiagram-WSZJBQD7-Qb2IAMef.js → ishikawaDiagram-WSZJBQD7-DPN71z8-.js} +1 -1
  150. package/dist/public/assets/{journeyDiagram-NVQOT4AX-8_jX-C8a.js → journeyDiagram-NVQOT4AX-DqPWIdSs.js} +1 -1
  151. package/dist/public/assets/{kanban-definition-27J2QSJJ-CEEYwllg.js → kanban-definition-27J2QSJJ-Yb-w6MLu.js} +1 -1
  152. package/dist/public/assets/{lib-CHTgVmKZ.js → lib-B4aE3tlX.js} +1 -1
  153. package/dist/public/assets/{lib-BiDTxxNs.js → lib-BZo-U1ex.js} +1 -1
  154. package/dist/public/assets/{lib-DggJrklf.js → lib-CUUpVIaO.js} +1 -1
  155. package/dist/public/assets/{line-BsarArEL.js → line-DSgqlaou.js} +1 -1
  156. package/dist/public/assets/{lint-config-client-DZxh6x0d.js → lint-config-client-CLttd-hM.js} +1 -1
  157. package/dist/public/assets/{lint-plugins-D1JSXJl8.js → lint-plugins-CFqN0r2X.js} +1 -1
  158. package/dist/public/assets/{markdown-lint-CYB8LZHY.js → markdown-lint-wCP_bSbs.js} +3 -3
  159. package/dist/public/assets/{markdownlint-rule-browser-BHLBJ88w.js → markdownlint-rule-browser-nIryvJXe.js} +1 -1
  160. package/dist/public/assets/mermaid-GHXKKRXX-BmxFNCbl.js +1 -0
  161. package/dist/public/assets/{mermaid.core-CyLGJzps.js → mermaid.core-kyxAVtOe.js} +3 -3
  162. package/dist/public/assets/mermaid.core-vijUbFeL.js +1 -0
  163. package/dist/public/assets/{mindmap-definition-FAOFIHXS-CtH6yYX-.js → mindmap-definition-FAOFIHXS-WaeBxEI3.js} +1 -1
  164. package/dist/public/assets/{navigation-targets-DSSJ_2xi.js → navigation-targets-wIVrXum1.js} +1 -1
  165. package/dist/public/assets/{page-list-cache-p7dO1d0k.js → page-list-cache-DjTjuoEq.js} +1 -1
  166. package/dist/public/assets/{pegDiagram-VL7TDLO6-DlYnsUKl.js → pegDiagram-VL7TDLO6-CtHls9u3.js} +1 -1
  167. package/dist/public/assets/{pending-receive-nav-store-DDsjXMmg.js → pending-receive-nav-store-CEqPw9Ws.js} +1 -1
  168. package/dist/public/assets/{pieDiagram-7S7Q4E2Y-BDatfRsc.js → pieDiagram-7S7Q4E2Y-DExDDy1k.js} +1 -1
  169. package/dist/public/assets/{pierre-theme-DzTcpkj5.js → pierre-theme-BcjBYmHp.js} +1 -1
  170. package/dist/public/assets/{preferred-session-events-YlTzEpA1.js → preferred-session-events-CIXvQFyG.js} +1 -1
  171. package/dist/public/assets/{prod-CN58f7_5.js → prod-TDqup_vF.js} +5 -5
  172. package/dist/public/assets/{progress-fe7kZ4GR.js → progress-gj6w_kTR.js} +1 -1
  173. package/dist/public/assets/{project-paths-BFzGZn4G.js → project-paths-DtCPeXsO.js} +1 -1
  174. package/dist/public/assets/{quadrantDiagram-CIZ2JOQS-DqK8f_ul.js → quadrantDiagram-CIZ2JOQS-jtaC898v.js} +1 -1
  175. package/dist/public/assets/{railroadDiagram-AXF67PYL-BRhbMHP6.js → railroadDiagram-AXF67PYL-Cu9VIEoH.js} +1 -1
  176. package/dist/public/assets/{requirementDiagram-LRYGKXZP-vdezDb9X.js → requirementDiagram-LRYGKXZP-Ai-HpF_c.js} +1 -1
  177. package/dist/public/assets/{restart-collab-server-D_8KLQoA.js → restart-collab-server-CHlRP7RK.js} +1 -1
  178. package/dist/public/assets/{sankeyDiagram-W5VNT64P-C57JgB9L.js → sankeyDiagram-W5VNT64P-CMNt1Rab.js} +1 -1
  179. package/dist/public/assets/{schema-section-DUv4SBzP.js → schema-section-Ceiv9_HZ.js} +1 -1
  180. package/dist/public/assets/{selection-context-CJj4QU9m.js → selection-context-DRmEMsEZ.js} +1 -1
  181. package/dist/public/assets/{sequenceDiagram-SI44F4Z6-BuLkAztr.js → sequenceDiagram-SI44F4Z6-CBkryIPb.js} +1 -1
  182. package/dist/public/assets/{sign-in-terminal-events-BjvOWBuh.js → sign-in-terminal-events-D1Wi4Xw6.js} +1 -1
  183. package/dist/public/assets/{single-file-mode-_W9sHrBm.js → single-file-mode-BxiPl4Ah.js} +1 -1
  184. package/dist/public/assets/{skeleton-CrbF9ppq.js → skeleton-izVZCkjV.js} +1 -1
  185. package/dist/public/assets/{src-DHA7yznt.js → src-CVi-8D7H.js} +1 -1
  186. package/dist/public/assets/{stateDiagram-OKZ733FA-DXk5EfyR.js → stateDiagram-OKZ733FA-DEf6Fks3.js} +1 -1
  187. package/dist/public/assets/stateDiagram-v2-UEYNNEHI-ZjpHqFIy.js +1 -0
  188. package/dist/public/assets/{swimlanes-SLNWSIFB-CMmm9y1W.js → swimlanes-SLNWSIFB-BgtzsnGU.js} +1 -1
  189. package/dist/public/assets/swimlanesDiagram-ULZ7WXOC-BvPT90kO.js +8 -0
  190. package/dist/public/assets/{syntax-YjkwC8Y2.js → syntax-DSW4pYwe.js} +1 -1
  191. package/dist/public/assets/{tag-pill-input-qgfgpKpV.js → tag-pill-input-D_fe_Zbo.js} +1 -1
  192. package/dist/public/assets/{target-navigation-intent-D1w61eVY.js → target-navigation-intent-Bh2lFZbu.js} +1 -1
  193. package/dist/public/assets/{telemetry-impl-BoQfVHFh.js → telemetry-impl-62LVdmmL.js} +1 -1
  194. package/dist/public/assets/{telemetry-startup-BePJfd1G.js → telemetry-startup-CbVoQQGP.js} +1 -1
  195. package/dist/public/assets/{text-viewer-languages-BpNCtJFb.js → text-viewer-languages-CKtwqOI2.js} +2 -2
  196. package/dist/public/assets/{thread-client-CySNJ-9g.js → thread-client-BCtL-FWj.js} +1 -1
  197. package/dist/public/assets/{timeline-definition-Z64GVDOM-Bu9qjWc1.js → timeline-definition-Z64GVDOM-fW0Ws4bU.js} +1 -1
  198. package/dist/public/assets/{trim-lines-6NHDbF9s.js → trim-lines-BXDvYbHZ.js} +1 -1
  199. package/dist/public/assets/{typing-burst-detector-DEB_IQXO.js → typing-burst-detector-WWwAiWAb.js} +3 -3
  200. package/dist/public/assets/{uninstall-DnITG12q.js → uninstall-DyYmGM9i.js} +1 -1
  201. package/dist/public/assets/{use-activity-panel-DmN2jwm1.js → use-activity-panel-B5VoL2zJ.js} +1 -1
  202. package/dist/public/assets/{use-collab-url-BWFGjvvU.js → use-collab-url-BDpItMkY.js} +1 -1
  203. package/dist/public/assets/{use-installed-clis-IB8iDaEn.js → use-installed-clis-D3LjLTuG.js} +2 -2
  204. package/dist/public/assets/{use-open-skill-D8ppWfzv.js → use-open-skill-BztMkDbq.js} +1 -1
  205. package/dist/public/assets/{use-skill-origin-B9YRoKsz.js → use-skill-origin-CiJpOXFq.js} +1 -1
  206. package/dist/public/assets/{use-skill-targets-DZmqRDS7.js → use-skill-targets-EVebu2kh.js} +1 -1
  207. package/dist/public/assets/{use-skills-CkvdjORj.js → use-skills-BWAh3dDS.js} +1 -1
  208. package/dist/public/assets/{use-terminal-enabled-CnYgBQu6.js → use-terminal-enabled-CfpnEp8D.js} +1 -1
  209. package/dist/public/assets/{use-timeline-entry-diff-Bj9IKZ0j.js → use-timeline-entry-diff-CLuh0nLL.js} +1 -1
  210. package/dist/public/assets/{vennDiagram-T6HMQDX7-DZCyigDG.js → vennDiagram-T6HMQDX7-Q3FtvMIj.js} +1 -1
  211. package/dist/public/assets/{wardleyDiagram-T6FBY63Y-BabyWrgB.js → wardleyDiagram-T6FBY63Y-C5C7LOLR.js} +1 -1
  212. package/dist/public/assets/{xychartDiagram-ELKLHX3M-8objR63x.js → xychartDiagram-ELKLHX3M-WBJDnI7r.js} +1 -1
  213. package/dist/public/index.html +98 -98
  214. package/dist/public/uninstall.html +3 -3
  215. package/dist/{registry-probes-DjoTkaRp.mjs → registry-probes-BbWNGKfd.mjs} +1 -1
  216. package/dist/{removal-file-path-C3qKjXP1.mjs → removal-file-path-Cvsoz35t.mjs} +1 -1
  217. package/dist/{repair-launch-json-BLLbBwuS.mjs → repair-launch-json-C4WV8ng6.mjs} +1 -1
  218. package/dist/{repair-mcp-configs-Du599MHw.mjs → repair-mcp-configs-BBPwpkkl.mjs} +1 -1
  219. package/dist/src-DQ9BvUF9.mjs +1 -0
  220. package/dist/{src-CV7s8o8N.mjs → src-DtfcZBsp.mjs} +1 -1
  221. package/dist/{start-WZZeXyQg.mjs → start-D-wMeTj8.mjs} +3 -3
  222. package/dist/start-DWFGBNZm.mjs +1 -0
  223. package/package.json +4 -4
  224. package/dist/constants-BHRHFiiA.mjs +0 -1
  225. package/dist/init-D8PiEGEU.mjs +0 -1
  226. package/dist/loader-CjDr4LBh.mjs +0 -1
  227. package/dist/preview-Bb3fqNig.mjs +0 -1
  228. package/dist/public/assets/DocumentContext-B534Taw0.js +0 -108
  229. package/dist/public/assets/FeedbackForm-DN-7wKfh.js +0 -1
  230. package/dist/public/assets/ImportSkillDialog-gWGVsUXL.js +0 -1
  231. package/dist/public/assets/ManagedArtifactProperties-D0kvL_kU.js +0 -1
  232. package/dist/public/assets/channel-pAazZ6IO.js +0 -1
  233. package/dist/public/assets/classDiagram-JCYQIIEL-DkFvSY54.js +0 -1
  234. package/dist/public/assets/classDiagram-v2-OCEON4UE-CDzbe5RX.js +0 -1
  235. package/dist/public/assets/dist-B5Lgn--k.js +0 -1
  236. package/dist/public/assets/field-controls-DShsojhy.js +0 -1
  237. package/dist/public/assets/flowDiagram-UKHOOZJN-B24oe-HH.js +0 -1
  238. package/dist/public/assets/globals-kLKgmkBv.css +0 -1
  239. package/dist/public/assets/mermaid-GHXKKRXX-C2B7_ENC.js +0 -1
  240. package/dist/public/assets/mermaid.core-B351QNJ8.js +0 -1
  241. package/dist/public/assets/stateDiagram-v2-UEYNNEHI-DbQ9-zRG.js +0 -1
  242. package/dist/public/assets/swimlanesDiagram-ULZ7WXOC-p2VXN9vA.js +0 -8
  243. package/dist/src-C3wvr_Qn.mjs +0 -1
  244. package/dist/start-B6ETYSpw.mjs +0 -1
  245. /package/dist/public/assets/{AuthModal-YZGpNH__.js → AuthModal-CDv9Ka9d.js} +0 -0
  246. /package/dist/public/assets/{ConfigSharingInfoTooltip-DSloJmkE.js → ConfigSharingInfoTooltip-DySl2X4f.js} +0 -0
  247. /package/dist/public/assets/{CopyButton-BTy3joJd.js → CopyButton-BQkeo9bl.js} +0 -0
  248. /package/dist/public/assets/{RowDisclosure-Bj2sD4-N.js → RowDisclosure-BIxlyswE.js} +0 -0
  249. /package/dist/public/assets/{TemplateRow-B04s7sdl.js → TemplateRow-CQTK4uJX.js} +0 -0
  250. /package/dist/public/assets/{acp-thread-protocol-DEJR583g.js → acp-thread-protocol-CWbl02Jp.js} +0 -0
  251. /package/dist/public/assets/{agent-diff-store-Bxx1cLWW.js → agent-diff-store-B_PHpjoM.js} +0 -0
  252. /package/dist/public/assets/{agent-launcher-labels-CKZLww6j.js → agent-launcher-labels-WHKiZE2H.js} +0 -0
  253. /package/dist/public/assets/{agent-presence-BB8MLPTF.js → agent-presence-DttIZzMw.js} +0 -0
  254. /package/dist/public/assets/{api-config-BeqD_2Y2.js → api-config-DY0IQM13.js} +0 -0
  255. /package/dist/public/assets/{ccount-DGTHxXcy.js → ccount-D2axTgHX.js} +0 -0
  256. /package/dist/public/assets/{channel-cli-copy-DOAEiMde.js → channel-cli-copy-BySq87hR.js} +0 -0
  257. /package/dist/public/assets/{clipboard-adapter-C8gKg_7K.js → clipboard-adapter-BzEuR0hT.js} +0 -0
  258. /package/dist/public/assets/{contact-email-store-Cr7VN6uy.js → contact-email-store-K5cpIvvi.js} +0 -0
  259. /package/dist/public/assets/{context-menu-B5MxEep2.js → context-menu-DSlq1GYo.js} +0 -0
  260. /package/dist/public/assets/{desktop-bridge-p6CFXLIz.js → desktop-bridge-BJzXwZwD.js} +0 -0
  261. /package/dist/public/assets/{dist-BosZaL03.js → dist-B8KZUrr_.js} +0 -0
  262. /package/dist/public/assets/{doc-paths-DiEZR__C.js → doc-paths-5ibOUcTo.js} +0 -0
  263. /package/dist/public/assets/{documents-fetch-BPNWNaEf.js → documents-fetch-C22H7c-g.js} +0 -0
  264. /package/dist/public/assets/{excalidraw-scene-7qRUVF00.js → excalidraw-scene-DKlZeb8o.js} +0 -0
  265. /package/dist/public/assets/{file-tree-rename-validation-DAMy4Ak1.js → file-tree-rename-validation-Cpa_Vek-.js} +0 -0
  266. /package/dist/public/assets/{globals-CcgTjZMO.js → globals-DcxxoWPt.js} +0 -0
  267. /package/dist/public/assets/{katex-Diqujmde.js → katex-DUOilEXW.js} +0 -0
  268. /package/dist/public/assets/{known-skill-dirs-WpNGuhvr.js → known-skill-dirs-DNpdjBsx.js} +0 -0
  269. /package/dist/public/assets/{lazy-with-preload-D9fROG5C.js → lazy-with-preload-Ct49YkMK.js} +0 -0
  270. /package/dist/public/assets/{lib-DjmHwbg0.js → lib-CYXogIvt.js} +0 -0
  271. /package/dist/public/assets/{lib-qLdVx2Nx.js → lib-DlCf5-vZ.js} +0 -0
  272. /package/dist/public/assets/{markdownit-BNu6K0Lc.js → markdownit-Ck6NoOTM.js} +0 -0
  273. /package/dist/public/assets/{open-managed-artifact-tab-Bgndx1BG.js → open-managed-artifact-tab-Bt4fZblC.js} +0 -0
  274. /package/dist/public/assets/{panel-4D0jDR6z.js → panel-dxdTyKXc.js} +0 -0
  275. /package/dist/public/assets/{skill-scope-DOTLd4gL.js → skill-scope-DlzReYLC.js} +0 -0
  276. /package/dist/public/assets/{skills-api-CCijBzjo.js → skills-api-DjykKWn7.js} +0 -0
  277. /package/dist/public/assets/{space-separated-tokens-BMeAno6f.js → space-separated-tokens-DnBNyEmh.js} +0 -0
  278. /package/dist/public/assets/{startup-marks-Cb3e8PuI.js → startup-marks-DLk8fGL-.js} +0 -0
  279. /package/dist/public/assets/{stex-BAMK64Qm.js → stex-C0vEAtfn.js} +0 -0
  280. /package/dist/public/assets/{terminal-cli-display-Irv_lU4O.js → terminal-cli-display-nVuidfOl.js} +0 -0
  281. /package/dist/public/assets/{use-semantic-search-status-7_z6UOU1.js → use-semantic-search-status-D9HCPCCa.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{o as e}from"./rolldown-runtime-tZXQYakl.mjs";import{$c as t,$u as n,Bf as r,Bl as i,Ca as a,Ef as o,Ff as s,G as c,If as l,Jc as u,Mf as d,Sa as f,Tf as p,U as m,Vl as h,W as g,Yc as _,bf as v,el as y,jf as b,kf as x,l as S,u as ee}from"./md-manager-BGnqyqi1-I7NmBKjQ.mjs";import{Co as C,Di as w,Ei as T,Gi as E,Mt as D,Ra as O,Rs as k,Ti as A,Uo as j,Zt as te,_s as M,fi as N,fr as ne,ga as re,gr as ie,hs as P,ki as ae,m as oe,nr as F,qi as se,ra as ce,ri as le,vs as ue,ya as de,yi as fe,ys as pe}from"./dist-0gI1oLbO.mjs";import{t as me}from"./yazl-BBz29IQN.mjs";import{ct as he,gt as ge,ht as _e,mt as ve,pt as ye,st as be,wt as xe}from"./init-DIAKdBV0.mjs";import{T as Se,l as Ce,u as we}from"./registry-probes-DjoTkaRp.mjs";import{c as Te}from"./colors-r_owlCuY.mjs";import{t as Ee}from"./is-object-BGze3w87.mjs";import{n as De}from"./constants-BHRHFiiA.mjs";import"./loader-CnGe_Flu.mjs";import"./preview-c3qAKdkh.mjs";import{execFile as Oe,execSync as ke,spawnSync as Ae}from"node:child_process";import{basename as I,dirname as L,isAbsolute as je,join as R,relative as Me,resolve as z,sep as B,win32 as Ne}from"node:path";import{closeSync as Pe,cpSync as Fe,createWriteStream as Ie,existsSync as V,lstatSync as Le,mkdirSync as H,mkdtempSync as Re,openSync as ze,readFileSync as U,readSync as Be,readdirSync as W,readlinkSync as Ve,realpathSync as He,rmSync as G,rmdirSync as Ue,statSync as We,writeFileSync as K}from"node:fs";import{arch as Ge,freemem as Ke,homedir as q,hostname as qe,platform as Je,release as Ye,tmpdir as Xe,totalmem as Ze,type as Qe,uptime as $e}from"node:os";import{readFile as et,readdir as tt,stat as nt}from"node:fs/promises";import{createHash as rt}from"node:crypto";function it(e,t){let n=t.map(e=>[k(e),e]);for(let t of e){let e=k(t);if(e===null)continue;let r=n.find(([t])=>t===e);if(r!==void 0)return r[1]}}function at(e){let{override:t,storedPreference:n,preferenceList:r,supportedLocales:i}=e,a=e.autoDetectableLocales??i;if(t!==void 0){let e=it([t],i);if(e!==void 0)return{locale:e,source:`override`}}if(n!==void 0&&n!==`system`&&i.includes(n))return{locale:n,source:`explicit`};let o=it(r,a);return o===void 0?{locale:`en`,source:`fallback`}:{locale:o,source:`system`}}function ot(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return`unknown`;let r=Math.floor(Math.max(0,t-n)/1e3);if(r<60)return`${r}s ago`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);return a<24?`${a}h ago`:`${Math.floor(a/24)}d ago`}const st=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`audit`,`deinit`,`auth`]);function ct(e,t,n=ie){if(e!==void 0&&!st.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let lt=null;function ut(e){lt=e}function dt(){return lt??process.cwd()}const ft=`Open Knowledge`;function pt(e={}){let t=e.platformName??process.platform,n=e.productName??d().productName;return be(t).join(he({...e,platformName:t}),n)}function mt(e={}){let t=e.platformName??process.platform,n=e.home??q(),r=e.env??process.env,i=be(t),a;return a=t===`win32`?r.LOCALAPPDATA||i.join(n,`AppData`,`Local`):t===`darwin`?i.join(n,`Library`,`Caches`):r.XDG_CACHE_HOME||i.join(n,`.cache`),i.join(a,`${d().packageName.replaceAll(`/`,``)}-updater`)}function ht(e){if(typeof e!=`object`||!e)return null;let t=e.recentProjects;if(!Array.isArray(t))return null;let n=[];for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;typeof t.path==`string`&&typeof t.name==`string`&&n.push({path:t.path,name:t.name})}return n}function gt(e){let t=R(e,`state.json`);if(!V(t))return[];let n;try{n=JSON.parse(U(t,`utf-8`))}catch{return[]}return ht(n)??[]}function _t(e){let t=R(e,`state.json`);if(!V(t))return!1;try{return ht(JSON.parse(U(t,`utf-8`)))!==null}catch{return!1}}const vt=8192;function yt(e,t){if(e.outcome===`not-present`)return`not-present (no DiagnosticReports directory)`;if(e.outcome===`unreadable-directory`)return`unreadable (${e.directoryErrorCode??`unknown`} reading DiagnosticReports)`;let n=[`${e.windowDays}d`,`${e.foreignIgnored} other-process report(s) ignored`,`${e.unparseable} unparseable`];e.droppedOverCap>0&&n.push(`${e.droppedOverCap} older dropped over cap`);let r=e.files.length-t;return r>0&&n.push(`${r} vanished before staging`),e.outcome===`none-in-window`?`none found in window (${n.join(`; `)})`:`${t} collected (${n.join(`; `)})`}function bt(e){return e.replace(/\\+\/?/g,e=>{if(!e.endsWith(`/`))return e;let t=e.length-1;return`${`\\`.repeat(t-t%2)}/`})}const xt=RegExp(`("(?:${[`crashReporterKey`,`bootSessionUUID`,`deviceIdentifierForVendor`].join(`|`)})"\\s*:\\s*)"[^"]*"`,`g`);function St(e){return e.replace(xt,`$1"[REDACTED-DEVICE-ID]"`)}function Ct(e){return St(bt(e))}const wt=/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})(\.\d+)? ([+-]\d{2})(\d{2})$/;function Tt(e){if(typeof e!=`string`)return null;let t=wt.exec(e.trim());if(t===null)return null;let[,n,r,i=``,a,o]=t,s=Date.parse(`${n}T${r}${i}${a}:${o}`);return Number.isNaN(s)?null:s}function Et(e){let t=ze(e,`r`);try{let e=Buffer.alloc(vt),n=0,r=!1;for(;n<vt;){let i=Be(t,e,n,vt-n,n);if(i===0){r=!0;break}let a=n;n+=i;let o=e.subarray(0,n).indexOf(10,a);if(o!==-1)return e.subarray(0,o).toString(`utf-8`)}return r?e.subarray(0,n).toString(`utf-8`):null}finally{Pe(t)}}function Dt(e){try{let t=Et(e);if(t===null)return{kind:`unreadable`};let n=JSON.parse(t);if(typeof n!=`object`||!n)return{kind:`unreadable`};let{name:r,app_name:i,timestamp:a}=n,o=typeof r==`string`?r:typeof i==`string`?i:null;return o===null?{kind:`unreadable`}:{kind:`named`,name:o,timestampMs:Tt(a)}}catch{return{kind:`unreadable`}}}function Ot(e){return e===`OpenKnowledge`||e.startsWith(`OpenKnowledge `)}function kt(e,t){let n={files:[],foreignIgnored:0,unparseable:0,droppedOverCap:0,windowDays:7},r;try{r=W(e,{withFileTypes:!0})}catch(e){let t=e.code;return t===`ENOENT`?{...n,outcome:`not-present`}:{...n,outcome:`unreadable-directory`,directoryErrorCode:t??`unknown`}}let i=t.getTime()-6048e5,a=[],o=0,s=0;for(let t of r){if(!t.isFile()||!t.name.endsWith(`.ips`))continue;let n=R(e,t.name),r;try{r=We(n).mtimeMs}catch{continue}if(r<i)continue;let c=Dt(n),l=c.kind===`named`&&c.timestampMs!==null?c.timestampMs:r;if(c.kind===`unreadable`){s+=1;continue}if(!Ot(c.name)){o+=1;continue}a.push({path:n,atMs:l})}a.sort((e,t)=>t.atMs-e.atMs);let c=a.slice(0,25),l={foreignIgnored:o,unparseable:s,droppedOverCap:a.length-c.length,windowDays:7};return c.length===0?{...l,files:[],outcome:`none-in-window`}:{...l,files:c.map(e=>e.path),outcome:`collected`}}const At=`state/os-termination-evidence.json`,jt=6048e5,Mt=/openknowledge/i,Nt=x.map(e=>l(o[e]));function Pt(e={}){return(t,n)=>new Promise(r=>{try{Oe(t,n,{encoding:`utf8`,timeout:e.timeoutMs??15e3,maxBuffer:e.maxBuffer??16777216,windowsHide:!0},(e,t,n)=>{r({...Ft(e),stdout:t,stderr:n})})}catch(e){let t=e.code;r({status:null,stdout:``,stderr:``,errorCode:typeof t==`string`?t:`spawn-failed`})}})}function Ft(e){return e===null?{status:0}:typeof e.code==`string`?{status:null,errorCode:e.code}:typeof e.code==`number`?{status:e.code}:e.killed===!0?{status:null,errorCode:`ETIMEDOUT`}:e.signal?{status:null,signal:e.signal}:{status:null}}function It(e){if(e.errorCode!==void 0)return e.errorCode;if(e.signal!==void 0)return`signal ${e.signal}`;let t=(e.stderr.trim().split(`
1
+ import{o as e}from"./rolldown-runtime-tZXQYakl.mjs";import{$c as t,$u as n,Bf as r,Bl as i,Ca as a,Ef as o,Ff as s,G as c,If as l,Jc as u,Mf as d,Sa as f,Tf as p,U as m,Vl as h,W as g,Yc as _,bf as v,el as y,jf as b,kf as x,l as S,u as ee}from"./md-manager-BGnqyqi1-I7NmBKjQ.mjs";import{Co as C,Di as w,Ei as T,Gi as E,Mt as D,Ra as O,Rs as k,Ti as A,Uo as j,Zt as te,_s as M,fi as N,fr as ne,ga as re,gr as ie,hs as P,ki as ae,m as oe,nr as F,qi as se,ra as ce,ri as le,vs as ue,ya as de,yi as fe,ys as pe}from"./dist-Nf304EbD.mjs";import{t as me}from"./yazl-BBz29IQN.mjs";import{ct as he,gt as ge,ht as _e,mt as ve,pt as ye,st as be,wt as xe}from"./init-DVV2IPlH.mjs";import{T as Se,l as Ce,u as we}from"./registry-probes-BbWNGKfd.mjs";import{c as Te}from"./colors-r_owlCuY.mjs";import{t as Ee}from"./is-object-BGze3w87.mjs";import{n as De}from"./constants-DbuQSZES.mjs";import"./loader-DigAueDc.mjs";import"./preview-B6BTCdRM.mjs";import{execFile as Oe,execSync as ke,spawnSync as Ae}from"node:child_process";import{basename as I,dirname as L,isAbsolute as je,join as R,relative as Me,resolve as z,sep as B,win32 as Ne}from"node:path";import{closeSync as Pe,cpSync as Fe,createWriteStream as Ie,existsSync as V,lstatSync as Le,mkdirSync as H,mkdtempSync as Re,openSync as ze,readFileSync as U,readSync as Be,readdirSync as W,readlinkSync as Ve,realpathSync as He,rmSync as G,rmdirSync as Ue,statSync as We,writeFileSync as K}from"node:fs";import{arch as Ge,freemem as Ke,homedir as q,hostname as qe,platform as Je,release as Ye,tmpdir as Xe,totalmem as Ze,type as Qe,uptime as $e}from"node:os";import{readFile as et,readdir as tt,stat as nt}from"node:fs/promises";import{createHash as rt}from"node:crypto";function it(e,t){let n=t.map(e=>[k(e),e]);for(let t of e){let e=k(t);if(e===null)continue;let r=n.find(([t])=>t===e);if(r!==void 0)return r[1]}}function at(e){let{override:t,storedPreference:n,preferenceList:r,supportedLocales:i}=e,a=e.autoDetectableLocales??i;if(t!==void 0){let e=it([t],i);if(e!==void 0)return{locale:e,source:`override`}}if(n!==void 0&&n!==`system`&&i.includes(n))return{locale:n,source:`explicit`};let o=it(r,a);return o===void 0?{locale:`en`,source:`fallback`}:{locale:o,source:`system`}}function ot(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return`unknown`;let r=Math.floor(Math.max(0,t-n)/1e3);if(r<60)return`${r}s ago`;let i=Math.floor(r/60);if(i<60)return`${i}m ago`;let a=Math.floor(i/60);return a<24?`${a}h ago`:`${Math.floor(a/24)}d ago`}const st=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`audit`,`deinit`,`auth`]);function ct(e,t,n=ie){if(e!==void 0&&!st.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let lt=null;function ut(e){lt=e}function dt(){return lt??process.cwd()}const ft=`Open Knowledge`;function pt(e={}){let t=e.platformName??process.platform,n=e.productName??d().productName;return be(t).join(he({...e,platformName:t}),n)}function mt(e={}){let t=e.platformName??process.platform,n=e.home??q(),r=e.env??process.env,i=be(t),a;return a=t===`win32`?r.LOCALAPPDATA||i.join(n,`AppData`,`Local`):t===`darwin`?i.join(n,`Library`,`Caches`):r.XDG_CACHE_HOME||i.join(n,`.cache`),i.join(a,`${d().packageName.replaceAll(`/`,``)}-updater`)}function ht(e){if(typeof e!=`object`||!e)return null;let t=e.recentProjects;if(!Array.isArray(t))return null;let n=[];for(let e of t){if(typeof e!=`object`||!e)continue;let t=e;typeof t.path==`string`&&typeof t.name==`string`&&n.push({path:t.path,name:t.name})}return n}function gt(e){let t=R(e,`state.json`);if(!V(t))return[];let n;try{n=JSON.parse(U(t,`utf-8`))}catch{return[]}return ht(n)??[]}function _t(e){let t=R(e,`state.json`);if(!V(t))return!1;try{return ht(JSON.parse(U(t,`utf-8`)))!==null}catch{return!1}}const vt=8192;function yt(e,t){if(e.outcome===`not-present`)return`not-present (no DiagnosticReports directory)`;if(e.outcome===`unreadable-directory`)return`unreadable (${e.directoryErrorCode??`unknown`} reading DiagnosticReports)`;let n=[`${e.windowDays}d`,`${e.foreignIgnored} other-process report(s) ignored`,`${e.unparseable} unparseable`];e.droppedOverCap>0&&n.push(`${e.droppedOverCap} older dropped over cap`);let r=e.files.length-t;return r>0&&n.push(`${r} vanished before staging`),e.outcome===`none-in-window`?`none found in window (${n.join(`; `)})`:`${t} collected (${n.join(`; `)})`}function bt(e){return e.replace(/\\+\/?/g,e=>{if(!e.endsWith(`/`))return e;let t=e.length-1;return`${`\\`.repeat(t-t%2)}/`})}const xt=RegExp(`("(?:${[`crashReporterKey`,`bootSessionUUID`,`deviceIdentifierForVendor`].join(`|`)})"\\s*:\\s*)"[^"]*"`,`g`);function St(e){return e.replace(xt,`$1"[REDACTED-DEVICE-ID]"`)}function Ct(e){return St(bt(e))}const wt=/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})(\.\d+)? ([+-]\d{2})(\d{2})$/;function Tt(e){if(typeof e!=`string`)return null;let t=wt.exec(e.trim());if(t===null)return null;let[,n,r,i=``,a,o]=t,s=Date.parse(`${n}T${r}${i}${a}:${o}`);return Number.isNaN(s)?null:s}function Et(e){let t=ze(e,`r`);try{let e=Buffer.alloc(vt),n=0,r=!1;for(;n<vt;){let i=Be(t,e,n,vt-n,n);if(i===0){r=!0;break}let a=n;n+=i;let o=e.subarray(0,n).indexOf(10,a);if(o!==-1)return e.subarray(0,o).toString(`utf-8`)}return r?e.subarray(0,n).toString(`utf-8`):null}finally{Pe(t)}}function Dt(e){try{let t=Et(e);if(t===null)return{kind:`unreadable`};let n=JSON.parse(t);if(typeof n!=`object`||!n)return{kind:`unreadable`};let{name:r,app_name:i,timestamp:a}=n,o=typeof r==`string`?r:typeof i==`string`?i:null;return o===null?{kind:`unreadable`}:{kind:`named`,name:o,timestampMs:Tt(a)}}catch{return{kind:`unreadable`}}}function Ot(e){return e===`OpenKnowledge`||e.startsWith(`OpenKnowledge `)}function kt(e,t){let n={files:[],foreignIgnored:0,unparseable:0,droppedOverCap:0,windowDays:7},r;try{r=W(e,{withFileTypes:!0})}catch(e){let t=e.code;return t===`ENOENT`?{...n,outcome:`not-present`}:{...n,outcome:`unreadable-directory`,directoryErrorCode:t??`unknown`}}let i=t.getTime()-6048e5,a=[],o=0,s=0;for(let t of r){if(!t.isFile()||!t.name.endsWith(`.ips`))continue;let n=R(e,t.name),r;try{r=We(n).mtimeMs}catch{continue}if(r<i)continue;let c=Dt(n),l=c.kind===`named`&&c.timestampMs!==null?c.timestampMs:r;if(c.kind===`unreadable`){s+=1;continue}if(!Ot(c.name)){o+=1;continue}a.push({path:n,atMs:l})}a.sort((e,t)=>t.atMs-e.atMs);let c=a.slice(0,25),l={foreignIgnored:o,unparseable:s,droppedOverCap:a.length-c.length,windowDays:7};return c.length===0?{...l,files:[],outcome:`none-in-window`}:{...l,files:c.map(e=>e.path),outcome:`collected`}}const At=`state/os-termination-evidence.json`,jt=6048e5,Mt=/openknowledge/i,Nt=x.map(e=>l(o[e]));function Pt(e={}){return(t,n)=>new Promise(r=>{try{Oe(t,n,{encoding:`utf8`,timeout:e.timeoutMs??15e3,maxBuffer:e.maxBuffer??16777216,windowsHide:!0},(e,t,n)=>{r({...Ft(e),stdout:t,stderr:n})})}catch(e){let t=e.code;r({status:null,stdout:``,stderr:``,errorCode:typeof t==`string`?t:`spawn-failed`})}})}function Ft(e){return e===null?{status:0}:typeof e.code==`string`?{status:null,errorCode:e.code}:typeof e.code==`number`?{status:e.code}:e.killed===!0?{status:null,errorCode:`ETIMEDOUT`}:e.signal?{status:null,signal:e.signal}:{status:null}}function It(e){if(e.errorCode!==void 0)return e.errorCode;if(e.signal!==void 0)return`signal ${e.signal}`;let t=(e.stderr.trim().split(`
2
2
  `)[0]??``).replace(/\S*\/journal\/\S*/g,`<journal path>`).replace(/\b[0-9a-f]{32}\b/gi,`<id>`);return`exit ${e.status}${t===``?``:`: ${t}`}`}function J(e,t,n){return{schemaVersion:1,platform:e,source:t,outcome:`none-in-window`,readFrom:n,windowDays:7,foreignIgnored:0,unparseable:0,droppedOverCap:0,events:[]}}function Lt(e,t){return{...e,outcome:`unavailable`,unavailableReason:t}}function Rt(e){return{...e,outcome:e.events.length>0?`collected`:`none-in-window`}}function zt(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function Bt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Vt(e,t){let n=t.indexOf(`
3
3
  `);if(n===-1)return null;let r,i;try{r=Bt(JSON.parse(t.slice(0,n))),i=Bt(JSON.parse(t.slice(n+1)))}catch{return null}if(r===null||i===null||!Array.isArray(i.processes))return null;let a=[];for(let e of i.processes){let t=Bt(e);t===null||typeof t.name!=`string`||!Ot(t.name)||a.push({name:t.name,pid:zt(t.pid),killReason:typeof t.reason==`string`?t.reason:null,residentPages:zt(t.rpages),lifetimeMaxPages:zt(t.lifetimeMax)})}let o=Tt(r.timestamp);return{kind:`jetsam`,at:o===null?null:new Date(o).toISOString(),file:e,pageSize:zt(Bt(i.memoryStatus)?.pageSize),largestProcessOwned:typeof i.largestProcess==`string`?Ot(i.largestProcess):null,ownedProcesses:a}}const Ht=/^JetsamEvent-.*\.ips$/;function Ut(e,t,n,r){let i=e.flatMap(({file:e,mtimeMs:n})=>n!==null&&n>=t?[{file:e,mtimeMs:n}]:[]);return i.sort((e,t)=>r===`newest-first`?t.mtimeMs-e.mtimeMs:e.mtimeMs-t.mtimeMs),{files:i.slice(0,n).map(({file:e})=>e),statFailed:e.filter(({mtimeMs:e})=>e===null).length,droppedOverCap:Math.max(0,i.length-n)}}async function Wt(e,t){let n=J(`darwin`,`macos-jetsam`,[R(e,`JetsamEvent-*.ips`)]),r;try{r=await tt(e)}catch(e){return Lt(n,e.code??`unknown`)}let i=Ut(await Promise.all(r.filter(e=>Ht.test(e)).map(async t=>{try{return{file:t,mtimeMs:(await nt(R(e,t))).mtimeMs}}catch{return{file:t,mtimeMs:null}}})),t.getTime()-jt,50,`newest-first`);n.unparseable+=i.statFailed,n.droppedOverCap=i.droppedOverCap;for(let t of i.files){let r=null;try{r=Vt(t,await et(R(e,t),`utf8`))}catch{}r===null?n.unparseable+=1:r.ownedProcesses.length===0?n.foreignIgnored+=1:n.events.push(r)}return Rt(n)}const Gt=[`--no-pager`,`--output=short-iso-precise`,`--since=-7d`,`--grep=Out of memory|oom-kill|Killed process|Killed /|memory pressure`,`_TRANSPORT=kernel`,`+`,`_SYSTEMD_UNIT=systemd-oomd.service`],Kt=[`--user`,`--no-pager`,`--output=short-iso-precise`,`--since=-7d`,`--grep=Fatal Wayland communication error|Wayland protocol error|X IO error|Missing X server`],qt=/^(\S+) \S+ ([^:\s[]+)(?:\[\d+\])?: (.*)$/,Jt=/\[(\d+)(?::\d+)?:\d{4}\/\d{6}\.\d+:[A-Z0-9]+:[^\]]*\]\s*(.*)$/,Yt=/^desktop\.\d{4}-\d{2}-\d{2}\.log$/;async function Xt(e,t){let n=new Set,r;try{r=await tt(e)}catch{return{pids:n,unreadable:!0}}let i=!1;for(let a of r){if(!Yt.test(a))continue;let r=R(e,a);try{if(t.getTime()-(await nt(r)).mtimeMs>jt)continue;for(let e of(await et(r,`utf8`)).split(`
4
4
  `)){if(!e.includes(`"event":"desktop.boot"`))continue;let t=/"pid":(\d+)/.exec(e)?.[1];t!==void 0&&n.add(Number(t))}}catch{i=!0}}return{pids:n,unreadable:i}}function Zt(e,t){if(e===`systemd-oomd`){let e=/^Killed (\S+)/.exec(t);if(e===null)return null;let n=e[1]?.split(`/`).pop()??``;return{origin:`systemd-oomd`,action:`oomd-kill`,pid:null,processName:null,unit:Mt.test(n)?n:null,trigger:/swap used/.test(t)?`swap`:/memory pressure/.test(t)?`memory-pressure`:null}}if(e!==`kernel`)return null;let n=/Killed process (\d+) \(([^)]+)\)/.exec(t);if(n!==null)return{origin:`kernel`,action:`oom-kill`,pid:Number(n[1]),processName:n[2]??null,unit:null,trigger:null};let r=/task=([^,]+),pid=(\d+)/.exec(t);if(r!==null)return{origin:`kernel`,action:`oom-kill`,pid:Number(r[2]),processName:r[1]??null,unit:null,trigger:null};let i=/^(\S+) invoked oom-killer/.exec(t);return i===null?null:{origin:`kernel`,action:`oom-invoked`,pid:null,processName:i[1]??null,unit:null,trigger:null}}function Qt(e){let t=[],n=0,r=0;for(let i of e.split(`
@@ -1,5 +1,5 @@
1
- import{C as e,Cl as t,I as n,Q as r,Z as i,i as a,jf as o,yd as s}from"./md-manager-BGnqyqi1-I7NmBKjQ.mjs";import{Ai as c,As as l,Ti as u,Wi as d,_s as f,k as p,pi as m,ys as h}from"./dist-0gI1oLbO.mjs";import{B as g,Et as _,R as v,Tt as y,Z as b,b as x,dt as S,wt as C,x as w}from"./init-DIAKdBV0.mjs";import{C as T,a as E,c as ee,d as D,g as O,h as k,i as A,m as j,n as M,o as N,r as P,s as F,t as I}from"./registry-probes-DjoTkaRp.mjs";import{n as te}from"./constants-BHRHFiiA.mjs";import{execFileSync as L,spawn as R}from"node:child_process";import{basename as z,dirname as B,resolve as V}from"node:path";import{existsSync as H,realpathSync as ne}from"node:fs";import{homedir as re,tmpdir as ie}from"node:os";import{rm as ae}from"node:fs/promises";import{setTimeout as oe}from"node:timers/promises";const se=[`/opt/homebrew/bin/gh`,`/usr/local/bin/gh`,`/opt/local/bin/gh`,`/snap/bin/gh`,`/usr/bin/gh`],ce={encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3,windowsHide:!0};function le(e,t={}){let{login:n}=t,r=t._exec??L,i=U(t._fileExists??H),a=e?[`--hostname`,e]:[];if(n){let e=W(r,i,[`auth`,`token`,...a,`--user`,n]);if(e)return{available:!0,token:e,resolvedLogin:n,fallback:!1}}let o=W(r,i,[`auth`,`token`,...a]);return o?n?{available:!0,token:o,fallback:!0}:{available:!0,token:o}:{available:!1}}function U(e){return[`gh`,...se.filter(e)]}function W(e,t,n){for(let r of t)try{let t=e(r,n,ce).toString().trim();if(t.length>0)return t}catch{}}function ue(e,t={}){let n=t._exec??L,r=U(t._fileExists??H),i=[`auth`,`status`,...e?[`--hostname`,e]:[]],a=W(n,r,[...i,`--json`,`hosts`]);if(a!==void 0){let t=de(a,e);if(t)return t}let o=W(n,r,i);if(o!==void 0){let e=ge(o);if(e.length>0)return e}}function G(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function de(e,t){let n;try{n=JSON.parse(e)}catch{return}let r=G(G(n)?.hosts);if(!r||t!==void 0&&r[t]===void 0)return;let i=t===void 0?Object.values(r):[r[t]],a=[];for(let e of i){if(!Array.isArray(e))return;for(let t of e){let e=G(t);if(!e)continue;let n=e.login;typeof n==`string`&&n.length!==0&&a.push({login:n,active:e.active===!0})}}return a}const fe=/Logged in to \S+ account (\S+) \(/,pe=/(?:Failed to log in to|Timeout trying to log in to) \S+/,me=/^\s*-\s*Active account:\s*true\s*$/,he=/\u001b\[[0-9;]*m/g;function ge(e){let t=[],n;for(let r of e.split(`
2
- `)){let e=r.replace(he,``),i=fe.exec(e)?.[1];if(i){n={login:i,active:!1},t.push(n);continue}if(pe.test(e)){n=void 0;continue}n&&me.test(e)&&(n.active=!0)}return t}const _e={mode:`published`,skipAvailabilityCheck:!0,replaceEntry:!0};function K(){return{action:`failed`,errorId:`write-failed`}}function q(){return{action:`skipped-missing`,errorId:`surface-missing`}}function J(e,t,n){l(`agent-integrations-apply`).warn({editor:e,path:t,reason:n},`skill write failed`)}function Y(){return{action:`skipped-unsupported`,errorId:`no-writer`}}function ve(e){switch(e){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`left-foreign`:return{action:`skipped-foreign`,errorId:`foreign-artifact`};case`declined`:return{action:`declined`,errorId:`write-declined`}}}function ye(e,t,n,r,i){let a=b[e];try{let o=N(a,t,n,r,i);return o.kind===`removed`&&o.trustDetail&&l(`agent-integrations-apply`).warn({editor:e,path:r??a.configPath(t,n),trust:o.trust,trustDetail:o.trustDetail},`MCP config removal retained Pi folder trust`),ve(o.kind)}catch(i){return l(`agent-integrations-apply`).warn({editor:e,path:r??a.configPath(t,n),reason:i instanceof Error?i.message:String(i)},`MCP config removal failed`),K()}}async function be(e,t,n){if(b[e].scope!==`global`)return q();if(n===`absent`)return ye(e,``,t.home,void 0,t.env);let r=(await w({editors:[e],home:t.home,replaceEntry:!0})).find(t=>t.editorId===e);if(r===void 0)return K();switch(r.action){case`written`:case`overwritten`:return{action:r.action};case`declined`:return{action:`declined`,errorId:`write-declined`};case`skipped-missing`:return q();case`skipped-flag`:return Y();default:return K()}}function xe(e,t,n){let r=b[e].projectConfigPath?.(t.cwd);if(r===void 0)return q();if(n===`absent`)return ye(e,t.cwd,t.home,r,t.env);let i=x(b[e],t.cwd,_e,void 0,r);switch(i.action){case`written`:case`overwritten`:return{action:i.action};case`declined`:return{action:`declined`,errorId:`write-declined`};default:return K()}}function Se(e,t,n){let r=t.home??re();if(n===`absent`){let t=P(e,r);switch(t.action){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`skipped-unsupported`:return q();case`failed`:return J(e,t.path,t.error),K()}}let i=E(e,r);switch(i.action){case`written`:return{action:`written`};case`overwritten`:return{action:`overwritten`};case`skipped-unsupported`:return q();case`failed`:return J(e,i.path,i.error),K()}}function Ce(e,t,n){if(n===`absent`){let n=v(b[e],t.cwd);switch(n.action){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`skipped-unsupported`:return q();case`failed`:return J(e,n.path,n.error),K()}}let r=g(b[e],t.cwd);switch(r.action){case`written`:return{action:`written`};case`overwritten`:return{action:`overwritten`};case`skipped-unsupported`:return q();case`skipped-prerequisite`:return{action:`skipped-prerequisite`,errorId:`dependency-failed`};case`failed`:return J(e,r.path,r.error),K()}}function we(e){return t=>{if(t.pathId===void 0)return Y();let n=s(t.pathId);if(n===null||n.kind===`central-skill-store`)return Y();switch(n.kind){case`editor-user-config`:return be(n.editor,e,t.desired);case`editor-project-config`:return xe(n.editor,e,t.desired);case`editor-project-skill-root`:return Ce(n.editor,e,t.desired);case`editor-user-skill-root`:return Se(n.editor,e,t.desired)}}}function Te(e,t){return e.bind?.[0]??t.HOST??`127.0.0.1`}function Ee(e){if(e===`server`)return e;throw new y(`--only must be 'server'`)}function De(e=H,t=import.meta.dirname??new URL(`.`,import.meta.url).pathname){let n=[V(t,`public`),V(t,`../../app/dist`),V(t,`../../../app/dist`)];return e(V(t,`../../app.asar`))&&n.push(V(t,`../../app`)),n.find(t=>e(t))}function Oe(e){if(e.explicitDir!==void 0)return{dir:e.explicitDir,missingBundle:!1};if(e.only===`server`)return{dir:void 0,missingBundle:!1};let t=e.findBundledDir();return{dir:t,missingBundle:t===void 0}}function ke(e){if(e===`off`)return`off`;if(!t.test(e))throw new y(`--idle-shutdown must be 'off' or a duration like 90s, 30m, 2h`);return e}function Ae(e){return e===`localhost`||e===`::1`||e===`[::1]`||e.startsWith(`127.`)}function je(e){return!e.flagBindSet&&!e.okBindSet&&e.hostEnvSet&&e.fileBindCount>1}function Me(e){return!e.openBrowser||e.ephemeral||e.only===`server`||!e.servesUi?!1:(e.explicitOn||Ae(e.host))&&e.isTTY}function Ne(e,t){let n;try{n=new URL(t)}catch{throw new y(`${e} is not a valid URL: ${t}`)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new y(`${e} must be an http(s) origin (got: ${t})`);return t}function Pe(e){return Ne(`--external-url`,e)}function Fe(e){let t=z(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var X=class extends Error{cwd;constructor(e){super(`This directory isn't set up yet. Run \`${o()} init\` first, then \`${o()} start\` again.`),this.name=`OkDirMissingError`,this.cwd=e}},Z=class extends Error{projectDir;constructor(e){super(`--project-dir must be a throwaway ${p}* directory under the OS temp dir. Refusing to write ephemeral session state into ${e}. Omit --project-dir to let ${o()} start create (and clean up) its own.`),this.name=`EphemeralProjectDirNotThrowawayError`,this.projectDir=e}};function Q(e,t={}){let n=t.tmpdirFn??ie,r=t.realpathFn??ne,i=e=>{try{return r(e)}catch(t){return t.code===`ENOENT`?V(e):null}},a=V(e),o;try{o=r(a)}catch(e){if(e.code===`ENOENT`){let e=i(B(a));o=e===null?null:V(e,z(a))}else o=null}if(o===null)return!1;let s=i(n());return s!==null&&B(o)===s&&z(o).startsWith(`ok-ephemeral-`)}function Ie(e,t,n=e=>ae(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{if(Q(t))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`)}else process.stderr.write(`[start] leaving ${t} in place: only ${p}* dirs under the OS temp dir are removed on ephemeral teardown\n`)}}}function Le(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 $(e){let{config:t,cwd:n,host:r}=e,i=e.skipAutoInit??!1,a=e.idleThresholdMs===void 0?18e5:e.idleThresholdMs,{existsSync:o,mkdirSync:s}=await import(`node:fs`),{basename:l,dirname:u,resolve:f}=await import(`node:path`),{bootServer:p,createEphemeralProjectDir:h,getLogger:g,resolveContentDir:_,resolveLockDir:v,seedEphemeralProjectDir:y,waitForServerLockDrain:b}=await import(`./dist-_mI3Jjf-.mjs`),x=e.log??g(`start`),C=e.singleFile!==void 0,w=C?d(e.singleFile).canonicalFilePath:void 0,E=w?u(w):void 0,D=w?l(w):void 0,O,k=!1;if(E!==void 0){if(e.projectDir!==void 0){if(O=e.projectDir,!Q(O))throw new Z(O);o(f(O,`.ok`,`config.yml`))||y(O,E)}else O=h(E),k=!0}let j=async()=>{if(!(!k||O===void 0)){if(!Q(O)){x.warn({ephemeralProjectDir:O},`[start] refusing to reap self-provisioned ephemeral dir: no longer resolves to an ok-ephemeral-* temp dir`);return}try{await ae(O,{recursive:!0,force:!0})}catch(e){x.warn({err:e,ephemeralProjectDir:O},`[start] failed to reap self-provisioned ephemeral temp dir`)}}},N=O;if(!C){if(!i&&!m(n))throw new X(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{e.severity===`info`?x.debug({event:e},`[start] reclaim sweep event`):x.warn({event:e},`[start] reclaim sweep reported a problem`)};try{let i=(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-Du599MHw.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r}).outcomes.filter(e=>e.outcome!==`no-entry`&&e.outcome!==`canonical`&&e.outcome!==`repaired`&&e.outcome!==`foreign`);i.length>0&&x.warn({unhealed:i},`[start] reclaim sweep left entries it could not heal`)}catch(e){x.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-BLLbBwuS.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){x.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}}let P=E??_(t,n);!C&&!o(P)&&(s(P,{recursive:!0}),x.info({contentDir:P},`Created content directory`));let te=T(),L=c(),R;try{{let e=v(O??n),t=Date.now(),r=await b(e);r!==`no-drain`&&x.info({event:`start-waited-for-draining-predecessor`,outcome:r,waitedMs:Date.now()-t,drainLockDir:e},r===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}R=await p({config:t,contentDir:P,projectDir:O??n,contentRoot:C?void 0:t.content.dir,port:e.port,host:r,quiet:!1,detectGh:le,detectGhAccounts:ue,tokenStore:te,embeddingsKeyStore:L,mcpTomlEditor:S(),...C?{ephemeral:!0,singleDocRelPath:D,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>M(e,t),probePiAcpBridge:e=>ee(e),ensurePiAcpBridge:(e,t)=>F(e,void 0,void 0,void 0,t),agentIntegrations:(()=>{let e={cwd:O??n,home:re(),env:process.env};return{probe:I(e),execute:we(e),userSkillPresentAnywhere:A}})(),idleShutdownMs:a,...e.serverRuntime===void 0?{}:{serverRuntime:e.serverRuntime},...e.bind===void 0?{}:{bind:e.bind},skipAutoInit:!0,idleShutdownHandler:t=>{let n=t;return Le(N===void 0?n:Ie(n,N),{log:x,exit:e.idleExit})},log:x,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{},...e.terminalAuthAvailable===!0?{terminalAuthAvailable:!0}:{}})}catch(e){throw await j(),e}let z=R.destroy,B=k?async()=>{try{await z()}finally{await j()}}:z;return{httpServer:R.httpServer,destroy:B,lockDir:R.lockDir,contentDir:P,port:R.port,ready:R.ready,degraded:R.degraded}}function Re(e,t,n=()=>f({absPath:h(`user`,process.cwd()),sideline:!1,warn:()=>{}}).value){return t===void 0?e:n()}function ze(e){if(e===`browser`||e===`app`)return e;throw new y(`--mode must be 'browser' or 'app'`)}function Be(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function Ve(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 He(t,o){let s=Re(t,o.singleFile),c=Be(process.env);c!==null&&(process.env.OK_CONSOLE_LEVEL=c);let{renderBanner:l}=await import(`./banner-kywHhVaC.mjs`),{accent:u,dim:d,error:f,warning:p}=await import(`./colors-SgU3JHQu.mjs`),m=process.cwd();process.title=Fe(m);let h;try{h=i(process.env)}catch(e){throw e instanceof a&&(console.error(f(e.message)),process.exit(78)),e}for(let e of h.diagnostics)console.warn(p(`[config] ${e.message}`));let g=e(s,h.layer),_=h.overrides.some(e=>e.envVar===`OK_BIND`),v=o.bind!==void 0&&o.bind.length>0?o.bind:void 0,y=process.env.HOST,b=y!==void 0&&y.trim()!==``?y:void 0,x=r(g),S=v??(_||b===void 0?[...x.bind]:[b]);je({flagBindSet:v!==void 0,okBindSet:_,hostEnvSet:b!==void 0,fileBindCount:x.bind.length})&&console.warn(p(`[config] HOST=${b} overrides server.bind — dropping the file-configured addresses (${x.bind.join(`, `)}). Use OK_BIND with a space-separated list to keep multiple binds.`));let C=S[0]??`127.0.0.1`,w=S,T=o.externalUrl,E=r(e(g,{server:{bind:w,...T===void 0?{}:{externalUrl:T}}}));if(E.allowExternal&&(!E.loopbackOnly||E.externalUrl)){let e=E.externalUrl??E.bind.join(`, `);console.warn(p([``,`⚠ EXTERNAL ACCESS ENABLED (server.allowExternal) — no server-side authentication.`,` This server is reachable beyond this machine (${e}). Anyone who can`,` reach it has FULL control of this knowledge base — sync, publishing, GitHub`,` credentials, and local operations (clone, sign-in, repo spawn).`,` Restrict who can reach it at the edge: a Tailscale ACL, a reverse proxy with`,` auth (Cloudflare Access, oauth2-proxy), or a firewall.`,``].join(`
3
- `)))}let ee=o.port===void 0?void 0:Number(o.port),D=h.overrides.find(e=>e.envVar===`PORT`)?.value,O=ee??D??s.server?.port,k=Oe({explicitDir:o.reactShellDistDir,only:o.only,findBundledDir:De}),A=k.dir;k.missingBundle&&console.warn(`bundled web UI not found — serving /api and /mcp only. Reinstall @inkeep/open-knowledge, or build packages/app in a source checkout.`);let j;try{j=await $({config:s,cwd:m,host:C,port:O,bind:w,...o.serveContentAssets===void 0?{}:{serveContentAssets:o.serveContentAssets},...A?{reactShellDistDir:A}:{},idleThresholdMs:n(o.idleShutdown??E.idleShutdown),serverRuntime:E,...o.singleFile?{singleFile:o.singleFile}:{},...o.projectDir?{projectDir:o.projectDir}:{},...o.terminalAuth===!0?{terminalAuthAvailable:!0}:{}})}catch(e){e instanceof X&&(console.error(f(e.message)),process.exit(1)),e instanceof Z&&(console.error(f(e.message)),process.exit(1));let t=await import(`./dist-_mI3Jjf-.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),e instanceof t.ExposureConsentError&&(console.error(f(e.message)),process.exit(78)),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(f(e.message)),process.exit(1)),(e instanceof t.MissingOkConfigError||e instanceof t.DocumentDurabilityStateError)&&(console.error(f(e.message)),process.exit(1)),Ge(e,t,m)){let e=t.resolveLockDir(m),n=null;try{n=await Ue({readServerLock:()=>t.readServerLock(e),now:Date.now,sleep:e=>oe(e),timeoutMs:3e3,pollIntervalMs:50})}catch(e){process.stderr.write(`[start] spawn-or-reuse: lock poll failed (${e instanceof Error?e.message:String(e)}) — falling back to the collision message\n`)}if(n!==null){let[e,...t]=We(n);console.log(u(e));for(let e of t)console.log(d(e));process.exit(0)}}let n=Ke(e,m,t);n!==null&&(console.error(f(n)),process.exit(1)),console.error(`${f(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let M=!1,N=async e=>{if(M)return;M=!0;let[t,...n]=Ve(e);console.log(u(`\n${t}`));for(let e of n)console.log(d(` ${e}`));try{await j.destroy(`external-signal`)}catch(e){console.error(`${f(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{N(`SIGINT`)}),process.once(`SIGTERM`,()=>{N(`SIGTERM`)});let P=`http://${C.includes(`:`)&&!C.startsWith(`[`)?`[${C}]`:C}:${j.port}`,F=C===`0.0.0.0`||C===`::`?`http://0.0.0.0:${j.port}`:void 0,I=P;console.log(l({name:`open-knowledge`,version:te,localUrl:I,networkUrl:F,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let L={"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`};j.ready.then(async()=>{if(j.degraded.length>0){console.log();for(let e of j.degraded){let t=L[e]??`${e} (check server logs for details)`;console.warn(` ${p(`⚠`)} ${p(e)}: ${d(t)}`)}console.log()}if(Me({openBrowser:o.openBrowser!==!1&&E.openBrowser,explicitOn:o.openBrowser!==!1&&g.server?.openBrowser===!0,host:C,isTTY:process.stdout.isTTY===!0,ephemeral:o.singleFile!==void 0,only:o.only,servesUi:A!==void 0})){let{openBrowser:e}=await import(`./open-browser-3bURxjbo.mjs`);e(I)}}).catch(e=>{console.error(` ${f(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}async function Ue(e){let t=e.now()+e.timeoutMs,n=e.readServerLock();for(;n!==null&&n.draining!==!0&&n.port<=0&&e.now()<t;)await e.sleep(e.pollIntervalMs),n=e.readServerLock();return n===null||n.draining===!0||n.port<=0?null:u(n)&&n.url!==void 0?{url:n.url,kind:n.kind,pid:n.pid,servesUi:!0}:{url:n.url??`http://127.0.0.1:${n.port}`,kind:n.kind,pid:n.pid,servesUi:!1}}function We(e){return[`${e.kind===`mcp-spawned`?`An MCP-spawned OpenKnowledge server is already running on this project`:`OpenKnowledge is already running on this project`} (pid ${e.pid}).`,` ${e.url}`,`Leaving it running — run \`${o()} stop\` first if you want a fresh server.`]}function Ge(e,t,n){let r=t.ServerLockCollisionError;if(r!==void 0&&e instanceof r)return!0;let i=t.ServerAuthorityCollisionError;if(i===void 0||!(e instanceof i))return!1;try{return e.existing.scope.kind===`tree`&&ne.native(n)===e.existing.projectDir}catch{return!1}}function Ke(e,t,n){let r=n.ServerAuthorityCollisionError;if(r!==void 0&&e instanceof r)return e.message;let i=n.ServerAuthorityRegistryError;if(i!==void 0&&e instanceof i)return e.message;let a=n.ProcessLockFileError;if(a!==void 0&&e instanceof a)return e.message;let s=n.ServerLockCollisionError;if(s===void 0||!(e instanceof s))return null;try{let e=n.readServerLock(n.resolveLockDir(t)),r=o();return e?.kind===`mcp-spawned`?`An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run \`${r} stop\`.`:`OpenKnowledge server is already running on this project — check \`${r} status\` or \`${r} stop\`.`}catch{return null}}function qe(e){return new C(`start`).description(`Start the OpenKnowledge server (UI + API + MCP + collab on one port)`).option(`-p, --port <port>`,`Server port`,void 0).option(`--bind <address>`,`Bind address (repeatable; default 127.0.0.1 — loopback only)`,(e,t)=>[...t??[],e]).option(`--no-open-browser`,`Do not open the browser after start (interactive loopback starts open it by default)`).option(`--only <module>`,`Serve one module: 'server' (API + MCP only, no shell or browser)`,Ee).option(`--idle-shutdown <duration>`,`Shut the server down after this long with no connected clients ('off', or a duration like 90s, 30m, 2h; default 30m)`,ke).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ze).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>`).addOption(new _(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).hideHelp()).addOption(new _(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).hideHelp()).addOption(new _(`--terminal-auth`,`Tell in-app agents that this server's client can run terminal sign-ins (the desktop app passes it when it has a terminal)`).hideHelp()).option(`--external-url <url>`,`Canonical external origin clients dial (sets server.externalUrl for this run) — its host joins the Host/Origin allowlists (CORS + external-Host admission). External exposure additionally requires consent (OK_ALLOW_EXTERNAL=1 or server.allowExternal).`,Pe).action(async t=>{let n=e();if(t.only===`server`&&t.reactShellDistDir!==void 0&&(process.stderr.write(`error: option '--only server' cannot be combined with '--react-shell-dist-dir'
1
+ import{C as e,Cl as t,I as n,Q as r,Z as i,i as a,jf as o,yd as s}from"./md-manager-BGnqyqi1-I7NmBKjQ.mjs";import{Ai as c,As as l,Ti as u,Wi as d,_s as f,k as p,pi as m,ys as h}from"./dist-Nf304EbD.mjs";import{B as g,Et as _,R as v,Tt as y,Z as b,b as x,dt as S,wt as C,x as w}from"./init-DVV2IPlH.mjs";import{C as T,a as E,c as ee,d as D,g as O,h as k,i as A,m as j,n as M,o as N,r as P,s as F,t as I}from"./registry-probes-BbWNGKfd.mjs";import{n as te}from"./constants-DbuQSZES.mjs";import{execFileSync as L,spawn as R}from"node:child_process";import{basename as z,dirname as B,resolve as V}from"node:path";import{existsSync as H,realpathSync as ne}from"node:fs";import{homedir as re,tmpdir as ie}from"node:os";import{rm as ae}from"node:fs/promises";import{setTimeout as oe}from"node:timers/promises";const se=[`/opt/homebrew/bin/gh`,`/usr/local/bin/gh`,`/opt/local/bin/gh`,`/snap/bin/gh`,`/usr/bin/gh`],ce={encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3,windowsHide:!0};function le(e,t={}){let{login:n}=t,r=t._exec??L,i=U(t._fileExists??H),a=e?[`--hostname`,e]:[];if(n){let e=W(r,i,[`auth`,`token`,...a,`--user`,n]);if(e)return{available:!0,token:e,resolvedLogin:n,fallback:!1}}let o=W(r,i,[`auth`,`token`,...a]);return o?n?{available:!0,token:o,fallback:!0}:{available:!0,token:o}:{available:!1}}function U(e){return[`gh`,...se.filter(e)]}function W(e,t,n){for(let r of t)try{let t=e(r,n,ce).toString().trim();if(t.length>0)return t}catch{}}function ue(e,t={}){let n=t._exec??L,r=U(t._fileExists??H),i=[`auth`,`status`,...e?[`--hostname`,e]:[]],a=W(n,r,[...i,`--json`,`hosts`]);if(a!==void 0){let t=de(a,e);if(t)return t}let o=W(n,r,i);if(o!==void 0){let e=ge(o);if(e.length>0)return e}}function G(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function de(e,t){let n;try{n=JSON.parse(e)}catch{return}let r=G(G(n)?.hosts);if(!r||t!==void 0&&r[t]===void 0)return;let i=t===void 0?Object.values(r):[r[t]],a=[];for(let e of i){if(!Array.isArray(e))return;for(let t of e){let e=G(t);if(!e)continue;let n=e.login;typeof n==`string`&&n.length!==0&&a.push({login:n,active:e.active===!0})}}return a}const fe=/Logged in to \S+ account (\S+) \(/,pe=/(?:Failed to log in to|Timeout trying to log in to) \S+/,me=/^\s*-\s*Active account:\s*true\s*$/,he=/\u001b\[[0-9;]*m/g;function ge(e){let t=[],n;for(let r of e.split(`
2
+ `)){let e=r.replace(he,``),i=fe.exec(e)?.[1];if(i){n={login:i,active:!1},t.push(n);continue}if(pe.test(e)){n=void 0;continue}n&&me.test(e)&&(n.active=!0)}return t}const _e={mode:`published`,skipAvailabilityCheck:!0,replaceEntry:!0};function K(){return{action:`failed`,errorId:`write-failed`}}function q(){return{action:`skipped-missing`,errorId:`surface-missing`}}function J(e,t,n){l(`agent-integrations-apply`).warn({editor:e,path:t,reason:n},`skill write failed`)}function Y(){return{action:`skipped-unsupported`,errorId:`no-writer`}}function ve(e){switch(e){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`left-foreign`:return{action:`skipped-foreign`,errorId:`foreign-artifact`};case`declined`:return{action:`declined`,errorId:`write-declined`}}}function ye(e,t,n,r,i){let a=b[e];try{let o=N(a,t,n,r,i);return o.kind===`removed`&&o.trustDetail&&l(`agent-integrations-apply`).warn({editor:e,path:r??a.configPath(t,n),trust:o.trust,trustDetail:o.trustDetail},`MCP config removal retained Pi folder trust`),ve(o.kind)}catch(i){return l(`agent-integrations-apply`).warn({editor:e,path:r??a.configPath(t,n),reason:i instanceof Error?i.message:String(i)},`MCP config removal failed`),K()}}async function be(e,t,n){if(b[e].scope!==`global`)return q();if(n===`absent`)return ye(e,``,t.home,void 0,t.env);let r=(await w({editors:[e],home:t.home,replaceEntry:!0})).find(t=>t.editorId===e);if(r===void 0)return K();switch(r.action){case`written`:case`overwritten`:return{action:r.action};case`declined`:return{action:`declined`,errorId:`write-declined`};case`skipped-missing`:return q();case`skipped-flag`:return Y();default:return K()}}function xe(e,t,n){let r=b[e].projectConfigPath?.(t.cwd);if(r===void 0)return q();if(n===`absent`)return ye(e,t.cwd,t.home,r,t.env);let i=x(b[e],t.cwd,_e,void 0,r);switch(i.action){case`written`:case`overwritten`:return{action:i.action};case`declined`:return{action:`declined`,errorId:`write-declined`};default:return K()}}function Se(e,t,n){let r=t.home??re();if(n===`absent`){let t=P(e,r);switch(t.action){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`skipped-unsupported`:return q();case`failed`:return J(e,t.path,t.error),K()}}let i=E(e,r);switch(i.action){case`written`:return{action:`written`};case`overwritten`:return{action:`overwritten`};case`skipped-unsupported`:return q();case`failed`:return J(e,i.path,i.error),K()}}function Ce(e,t,n){if(n===`absent`){let n=v(b[e],t.cwd);switch(n.action){case`removed`:return{action:`removed`};case`not-present`:return{action:`no-op`};case`skipped-unsupported`:return q();case`failed`:return J(e,n.path,n.error),K()}}let r=g(b[e],t.cwd);switch(r.action){case`written`:return{action:`written`};case`overwritten`:return{action:`overwritten`};case`skipped-unsupported`:return q();case`skipped-prerequisite`:return{action:`skipped-prerequisite`,errorId:`dependency-failed`};case`failed`:return J(e,r.path,r.error),K()}}function we(e){return t=>{if(t.pathId===void 0)return Y();let n=s(t.pathId);if(n===null||n.kind===`central-skill-store`)return Y();switch(n.kind){case`editor-user-config`:return be(n.editor,e,t.desired);case`editor-project-config`:return xe(n.editor,e,t.desired);case`editor-project-skill-root`:return Ce(n.editor,e,t.desired);case`editor-user-skill-root`:return Se(n.editor,e,t.desired)}}}function Te(e,t){return e.bind?.[0]??t.HOST??`127.0.0.1`}function Ee(e){if(e===`server`)return e;throw new y(`--only must be 'server'`)}function De(e=H,t=import.meta.dirname??new URL(`.`,import.meta.url).pathname){let n=[V(t,`public`),V(t,`../../app/dist`),V(t,`../../../app/dist`)];return e(V(t,`../../app.asar`))&&n.push(V(t,`../../app`)),n.find(t=>e(t))}function Oe(e){if(e.explicitDir!==void 0)return{dir:e.explicitDir,missingBundle:!1};if(e.only===`server`)return{dir:void 0,missingBundle:!1};let t=e.findBundledDir();return{dir:t,missingBundle:t===void 0}}function ke(e){if(e===`off`)return`off`;if(!t.test(e))throw new y(`--idle-shutdown must be 'off' or a duration like 90s, 30m, 2h`);return e}function Ae(e){return e===`localhost`||e===`::1`||e===`[::1]`||e.startsWith(`127.`)}function je(e){return!e.flagBindSet&&!e.okBindSet&&e.hostEnvSet&&e.fileBindCount>1}function Me(e){return!e.openBrowser||e.ephemeral||e.only===`server`||!e.servesUi?!1:(e.explicitOn||Ae(e.host))&&e.isTTY}function Ne(e,t){let n;try{n=new URL(t)}catch{throw new y(`${e} is not a valid URL: ${t}`)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new y(`${e} must be an http(s) origin (got: ${t})`);return t}function Pe(e){return Ne(`--external-url`,e)}function Fe(e){let t=z(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var X=class extends Error{cwd;constructor(e){super(`This directory isn't set up yet. Run \`${o()} init\` first, then \`${o()} start\` again.`),this.name=`OkDirMissingError`,this.cwd=e}},Z=class extends Error{projectDir;constructor(e){super(`--project-dir must be a throwaway ${p}* directory under the OS temp dir. Refusing to write ephemeral session state into ${e}. Omit --project-dir to let ${o()} start create (and clean up) its own.`),this.name=`EphemeralProjectDirNotThrowawayError`,this.projectDir=e}};function Q(e,t={}){let n=t.tmpdirFn??ie,r=t.realpathFn??ne,i=e=>{try{return r(e)}catch(t){return t.code===`ENOENT`?V(e):null}},a=V(e),o;try{o=r(a)}catch(e){if(e.code===`ENOENT`){let e=i(B(a));o=e===null?null:V(e,z(a))}else o=null}if(o===null)return!1;let s=i(n());return s!==null&&B(o)===s&&z(o).startsWith(`ok-ephemeral-`)}function Ie(e,t,n=e=>ae(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{if(Q(t))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`)}else process.stderr.write(`[start] leaving ${t} in place: only ${p}* dirs under the OS temp dir are removed on ephemeral teardown\n`)}}}function Le(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 $(e){let{config:t,cwd:n,host:r}=e,i=e.skipAutoInit??!1,a=e.idleThresholdMs===void 0?18e5:e.idleThresholdMs,{existsSync:o,mkdirSync:s}=await import(`node:fs`),{basename:l,dirname:u,resolve:f}=await import(`node:path`),{bootServer:p,createEphemeralProjectDir:h,getLogger:g,resolveContentDir:_,resolveLockDir:v,seedEphemeralProjectDir:y,waitForServerLockDrain:b}=await import(`./dist-WUkQ-0NU.mjs`),x=e.log??g(`start`),C=e.singleFile!==void 0,w=C?d(e.singleFile).canonicalFilePath:void 0,E=w?u(w):void 0,D=w?l(w):void 0,O,k=!1;if(E!==void 0){if(e.projectDir!==void 0){if(O=e.projectDir,!Q(O))throw new Z(O);o(f(O,`.ok`,`config.yml`))||y(O,E)}else O=h(E),k=!0}let j=async()=>{if(!(!k||O===void 0)){if(!Q(O)){x.warn({ephemeralProjectDir:O},`[start] refusing to reap self-provisioned ephemeral dir: no longer resolves to an ok-ephemeral-* temp dir`);return}try{await ae(O,{recursive:!0,force:!0})}catch(e){x.warn({err:e,ephemeralProjectDir:O},`[start] failed to reap self-provisioned ephemeral temp dir`)}}},N=O;if(!C){if(!i&&!m(n))throw new X(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{e.severity===`info`?x.debug({event:e},`[start] reclaim sweep event`):x.warn({event:e},`[start] reclaim sweep reported a problem`)};try{let i=(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-BBPwpkkl.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r}).outcomes.filter(e=>e.outcome!==`no-entry`&&e.outcome!==`canonical`&&e.outcome!==`repaired`&&e.outcome!==`foreign`);i.length>0&&x.warn({unhealed:i},`[start] reclaim sweep left entries it could not heal`)}catch(e){x.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-C4WV8ng6.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){x.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}}let P=E??_(t,n);!C&&!o(P)&&(s(P,{recursive:!0}),x.info({contentDir:P},`Created content directory`));let te=T(),L=c(),R;try{{let e=v(O??n),t=Date.now(),r=await b(e);r!==`no-drain`&&x.info({event:`start-waited-for-draining-predecessor`,outcome:r,waitedMs:Date.now()-t,drainLockDir:e},r===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}R=await p({config:t,contentDir:P,projectDir:O??n,contentRoot:C?void 0:t.content.dir,port:e.port,host:r,quiet:!1,detectGh:le,detectGhAccounts:ue,tokenStore:te,embeddingsKeyStore:L,mcpTomlEditor:S(),...C?{ephemeral:!0,singleDocRelPath:D,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>M(e,t),probePiAcpBridge:e=>ee(e),ensurePiAcpBridge:(e,t)=>F(e,void 0,void 0,void 0,t),agentIntegrations:(()=>{let e={cwd:O??n,home:re(),env:process.env};return{probe:I(e),execute:we(e),userSkillPresentAnywhere:A}})(),idleShutdownMs:a,...e.serverRuntime===void 0?{}:{serverRuntime:e.serverRuntime},...e.bind===void 0?{}:{bind:e.bind},skipAutoInit:!0,idleShutdownHandler:t=>{let n=t;return Le(N===void 0?n:Ie(n,N),{log:x,exit:e.idleExit})},log:x,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{},...e.terminalAuthAvailable===!0?{terminalAuthAvailable:!0}:{}})}catch(e){throw await j(),e}let z=R.destroy,B=k?async()=>{try{await z()}finally{await j()}}:z;return{httpServer:R.httpServer,destroy:B,lockDir:R.lockDir,contentDir:P,port:R.port,ready:R.ready,degraded:R.degraded}}function Re(e,t,n=()=>f({absPath:h(`user`,process.cwd()),sideline:!1,warn:()=>{}}).value){return t===void 0?e:n()}function ze(e){if(e===`browser`||e===`app`)return e;throw new y(`--mode must be 'browser' or 'app'`)}function Be(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function Ve(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 He(t,o){let s=Re(t,o.singleFile),c=Be(process.env);c!==null&&(process.env.OK_CONSOLE_LEVEL=c);let{renderBanner:l}=await import(`./banner-kywHhVaC.mjs`),{accent:u,dim:d,error:f,warning:p}=await import(`./colors-SgU3JHQu.mjs`),m=process.cwd();process.title=Fe(m);let h;try{h=i(process.env)}catch(e){throw e instanceof a&&(console.error(f(e.message)),process.exit(78)),e}for(let e of h.diagnostics)console.warn(p(`[config] ${e.message}`));let g=e(s,h.layer),_=h.overrides.some(e=>e.envVar===`OK_BIND`),v=o.bind!==void 0&&o.bind.length>0?o.bind:void 0,y=process.env.HOST,b=y!==void 0&&y.trim()!==``?y:void 0,x=r(g),S=v??(_||b===void 0?[...x.bind]:[b]);je({flagBindSet:v!==void 0,okBindSet:_,hostEnvSet:b!==void 0,fileBindCount:x.bind.length})&&console.warn(p(`[config] HOST=${b} overrides server.bind — dropping the file-configured addresses (${x.bind.join(`, `)}). Use OK_BIND with a space-separated list to keep multiple binds.`));let C=S[0]??`127.0.0.1`,w=S,T=o.externalUrl,E=r(e(g,{server:{bind:w,...T===void 0?{}:{externalUrl:T}}}));if(E.allowExternal&&(!E.loopbackOnly||E.externalUrl)){let e=E.externalUrl??E.bind.join(`, `);console.warn(p([``,`⚠ EXTERNAL ACCESS ENABLED (server.allowExternal) — no server-side authentication.`,` This server is reachable beyond this machine (${e}). Anyone who can`,` reach it has FULL control of this knowledge base — sync, publishing, GitHub`,` credentials, and local operations (clone, sign-in, repo spawn).`,` Restrict who can reach it at the edge: a Tailscale ACL, a reverse proxy with`,` auth (Cloudflare Access, oauth2-proxy), or a firewall.`,``].join(`
3
+ `)))}let ee=o.port===void 0?void 0:Number(o.port),D=h.overrides.find(e=>e.envVar===`PORT`)?.value,O=ee??D??s.server?.port,k=Oe({explicitDir:o.reactShellDistDir,only:o.only,findBundledDir:De}),A=k.dir;k.missingBundle&&console.warn(`bundled web UI not found — serving /api and /mcp only. Reinstall @inkeep/open-knowledge, or build packages/app in a source checkout.`);let j;try{j=await $({config:s,cwd:m,host:C,port:O,bind:w,...o.serveContentAssets===void 0?{}:{serveContentAssets:o.serveContentAssets},...A?{reactShellDistDir:A}:{},idleThresholdMs:n(o.idleShutdown??E.idleShutdown),serverRuntime:E,...o.singleFile?{singleFile:o.singleFile}:{},...o.projectDir?{projectDir:o.projectDir}:{},...o.terminalAuth===!0?{terminalAuthAvailable:!0}:{}})}catch(e){e instanceof X&&(console.error(f(e.message)),process.exit(1)),e instanceof Z&&(console.error(f(e.message)),process.exit(1));let t=await import(`./dist-WUkQ-0NU.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),e instanceof t.ExposureConsentError&&(console.error(f(e.message)),process.exit(78)),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(f(e.message)),process.exit(1)),(e instanceof t.MissingOkConfigError||e instanceof t.DocumentDurabilityStateError)&&(console.error(f(e.message)),process.exit(1)),Ge(e,t,m)){let e=t.resolveLockDir(m),n=null;try{n=await Ue({readServerLock:()=>t.readServerLock(e),now:Date.now,sleep:e=>oe(e),timeoutMs:3e3,pollIntervalMs:50})}catch(e){process.stderr.write(`[start] spawn-or-reuse: lock poll failed (${e instanceof Error?e.message:String(e)}) — falling back to the collision message\n`)}if(n!==null){let[e,...t]=We(n);console.log(u(e));for(let e of t)console.log(d(e));process.exit(0)}}let n=Ke(e,m,t);n!==null&&(console.error(f(n)),process.exit(1)),console.error(`${f(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let M=!1,N=async e=>{if(M)return;M=!0;let[t,...n]=Ve(e);console.log(u(`\n${t}`));for(let e of n)console.log(d(` ${e}`));try{await j.destroy(`external-signal`)}catch(e){console.error(`${f(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{N(`SIGINT`)}),process.once(`SIGTERM`,()=>{N(`SIGTERM`)});let P=`http://${C.includes(`:`)&&!C.startsWith(`[`)?`[${C}]`:C}:${j.port}`,F=C===`0.0.0.0`||C===`::`?`http://0.0.0.0:${j.port}`:void 0,I=P;console.log(l({name:`open-knowledge`,version:te,localUrl:I,networkUrl:F,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let L={"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`};j.ready.then(async()=>{if(j.degraded.length>0){console.log();for(let e of j.degraded){let t=L[e]??`${e} (check server logs for details)`;console.warn(` ${p(`⚠`)} ${p(e)}: ${d(t)}`)}console.log()}if(Me({openBrowser:o.openBrowser!==!1&&E.openBrowser,explicitOn:o.openBrowser!==!1&&g.server?.openBrowser===!0,host:C,isTTY:process.stdout.isTTY===!0,ephemeral:o.singleFile!==void 0,only:o.only,servesUi:A!==void 0})){let{openBrowser:e}=await import(`./open-browser-DpCYxQUn.mjs`);e(I)}}).catch(e=>{console.error(` ${f(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}async function Ue(e){let t=e.now()+e.timeoutMs,n=e.readServerLock();for(;n!==null&&n.draining!==!0&&n.port<=0&&e.now()<t;)await e.sleep(e.pollIntervalMs),n=e.readServerLock();return n===null||n.draining===!0||n.port<=0?null:u(n)&&n.url!==void 0?{url:n.url,kind:n.kind,pid:n.pid,servesUi:!0}:{url:n.url??`http://127.0.0.1:${n.port}`,kind:n.kind,pid:n.pid,servesUi:!1}}function We(e){return[`${e.kind===`mcp-spawned`?`An MCP-spawned OpenKnowledge server is already running on this project`:`OpenKnowledge is already running on this project`} (pid ${e.pid}).`,` ${e.url}`,`Leaving it running — run \`${o()} stop\` first if you want a fresh server.`]}function Ge(e,t,n){let r=t.ServerLockCollisionError;if(r!==void 0&&e instanceof r)return!0;let i=t.ServerAuthorityCollisionError;if(i===void 0||!(e instanceof i))return!1;try{return e.existing.scope.kind===`tree`&&ne.native(n)===e.existing.projectDir}catch{return!1}}function Ke(e,t,n){let r=n.ServerAuthorityCollisionError;if(r!==void 0&&e instanceof r)return e.message;let i=n.ServerAuthorityRegistryError;if(i!==void 0&&e instanceof i)return e.message;let a=n.ProcessLockFileError;if(a!==void 0&&e instanceof a)return e.message;let s=n.ServerLockCollisionError;if(s===void 0||!(e instanceof s))return null;try{let e=n.readServerLock(n.resolveLockDir(t)),r=o();return e?.kind===`mcp-spawned`?`An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run \`${r} stop\`.`:`OpenKnowledge server is already running on this project — check \`${r} status\` or \`${r} stop\`.`}catch{return null}}function qe(e){return new C(`start`).description(`Start the OpenKnowledge server (UI + API + MCP + collab on one port)`).option(`-p, --port <port>`,`Server port`,void 0).option(`--bind <address>`,`Bind address (repeatable; default 127.0.0.1 — loopback only)`,(e,t)=>[...t??[],e]).option(`--no-open-browser`,`Do not open the browser after start (interactive loopback starts open it by default)`).option(`--only <module>`,`Serve one module: 'server' (API + MCP only, no shell or browser)`,Ee).option(`--idle-shutdown <duration>`,`Shut the server down after this long with no connected clients ('off', or a duration like 90s, 30m, 2h; default 30m)`,ke).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ze).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>`).addOption(new _(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).hideHelp()).addOption(new _(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).hideHelp()).addOption(new _(`--terminal-auth`,`Tell in-app agents that this server's client can run terminal sign-ins (the desktop app passes it when it has a terminal)`).hideHelp()).option(`--external-url <url>`,`Canonical external origin clients dial (sets server.externalUrl for this run) — its host joins the Host/Origin allowlists (CORS + external-Host admission). External exposure additionally requires consent (OK_ALLOW_EXTERNAL=1 or server.allowExternal).`,Pe).action(async t=>{let n=e();if(t.only===`server`&&t.reactShellDistDir!==void 0&&(process.stderr.write(`error: option '--only server' cannot be combined with '--react-shell-dist-dir'
4
4
  `),process.exit(2)),t.projectDir!==void 0&&t.singleFile===void 0&&(process.stderr.write(`error: option '--project-dir' requires '--single-file'
5
5
  `),process.exit(2)),t.mode===`app`){let e=[];if(t.port!==void 0&&e.push(`--port`),t.bind!==void 0&&e.push(`--bind`),t.only!==void 0&&e.push(`--only`),t.idleShutdown!==void 0&&e.push(`--idle-shutdown`),t.openBrowser===!1&&e.push(`--no-open-browser`),t.externalUrl!==void 0&&e.push(`--external-url`),e.length>0){let t=process.env.OK_LOG_LEVEL??`info`;(t===`debug`||t===`trace`)&&console.error(`--mode=app: ignoring ${e.join(`, `)}`)}let n=j(D());if(n.available){k({spawn:R},n);return}console.error(O(n.reason)),process.exit(1)}await He(n,t)})}export{Ke as C,ue as D,le as E,qe as S,Le as T,Be as _,We as a,Me as b,Q as c,ke as d,Ee as f,Re as g,Ue as h,Fe as i,Ge as l,Te as m,X as n,Ve as o,De as p,$ as r,Ae as s,Z as t,Pe as u,Oe as v,Ie as w,je as x,He as y};
@@ -0,0 +1 @@
1
+ import{S as e,m as t,p as n,r}from"./start-D-wMeTj8.mjs";export{r as bootStartServer,n as resolveBundledReactShellDir,t as resolveHost,e as startCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/open-knowledge",
3
- "version": "0.87.0-beta.2",
3
+ "version": "0.87.0-beta.4",
4
4
  "description": "Local-first, agent-friendly Markdown knowledge base with a cross-platform CLI and web editor",
5
5
  "keywords": [
6
6
  "knowledge-base",
@@ -65,10 +65,10 @@
65
65
  "@parcel/watcher": "^2.5.6"
66
66
  },
67
67
  "devDependencies": {
68
- "@inkeep/open-knowledge-app": "0.87.0-beta.2",
69
- "@inkeep/open-knowledge-core": "0.87.0-beta.2",
68
+ "@inkeep/open-knowledge-app": "0.87.0-beta.4",
69
+ "@inkeep/open-knowledge-core": "0.87.0-beta.4",
70
70
  "@inkeep/open-knowledge-native-config": "0.0.0",
71
- "@inkeep/open-knowledge-server": "0.87.0-beta.2",
71
+ "@inkeep/open-knowledge-server": "0.87.0-beta.4",
72
72
  "@types/node": "^24.7.0",
73
73
  "@types/proper-lockfile": "^4.1.4",
74
74
  "@types/yazl": "^3.3.1",
@@ -1 +0,0 @@
1
- import"./md-manager-BGnqyqi1-I7NmBKjQ.mjs";var e=`0.87.0-beta.2`;const t=`config.yml`,n=e;export{n,t};
@@ -1 +0,0 @@
1
- import"./dist-0gI1oLbO.mjs";import{v as e}from"./init-DIAKdBV0.mjs";export{e as runInit};
@@ -1 +0,0 @@
1
- import{n as e}from"./loader-CnGe_Flu.mjs";export{e as loadConfig};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./preview-c3qAKdkh.mjs";export{t as formatPreviewBlock,e as previewContent};