@inkeep/open-knowledge 0.68.23 → 0.68.25

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 (174) hide show
  1. package/dist/{acp-harness-probe-VsY2MJm_.mjs → acp-harness-probe-cDPpq4cK.mjs} +2 -2
  2. package/dist/cli.mjs +24 -24
  3. package/dist/constants-veaDdIy0.mjs +2 -0
  4. package/dist/{git-handle-C0onz3KH.mjs → git-handle-BI08KePL.mjs} +2 -2
  5. package/dist/git-handle-tx24n4m3.mjs +1 -0
  6. package/dist/index.d.mts +1 -0
  7. package/dist/index.mjs +218 -219
  8. package/dist/init-BFc6ZlDx.mjs +1 -0
  9. package/dist/{init-CLtTEqbD.mjs → init-HwwBx7jE.mjs} +6 -6
  10. package/dist/{launch-json-removal-nKaQdXia.mjs → launch-json-removal-Bmp4pEbr.mjs} +2 -2
  11. package/dist/{loader-BIIfAEjP.mjs → loader-BgZTHjwC.mjs} +2 -2
  12. package/dist/loader-CPxCqyid.mjs +1 -0
  13. package/dist/md-manager-C0JXW59s.mjs +2 -0
  14. package/dist/{open-browser-7DkBQF9D.mjs → open-browser-DtPQklA3.mjs} +2 -2
  15. package/dist/parse-worker.mjs +1 -1
  16. package/dist/preview-B8bqmjqa.mjs +1 -0
  17. package/dist/{preview-CZKWPYO9.mjs → preview-C_JkVRHU.mjs} +2 -2
  18. package/dist/public/assets/{ActivityModeContent-Dmsx6-rU.js → ActivityModeContent-BsN1q6on.js} +1 -1
  19. package/dist/public/assets/{AddPropertiesButton-BXxmaoXG.js → AddPropertiesButton-DKeaL1oS.js} +2 -2
  20. package/dist/public/assets/{AgentDiffPane-CDzGDQpm.js → AgentDiffPane-BM1ahAik.js} +1 -1
  21. package/dist/public/assets/{AgentThreadClientBinder-Bf50AUBi.js → AgentThreadClientBinder-oLrPSNPH.js} +1 -1
  22. package/dist/public/assets/{BugReportHistory-wK4InFbA.js → BugReportHistory-CjOQKfkD.js} +1 -1
  23. package/dist/public/assets/{BugReportHistoryDialog-Ba01rTam.js → BugReportHistoryDialog-Diu9xO83.js} +1 -1
  24. package/dist/public/assets/CodeMirrorPropInput-C-O6O9wI.js +3 -0
  25. package/dist/public/assets/{ConsentDialogBody-D6hJwNXp.js → ConsentDialogBody-DRoNvqho.js} +1 -1
  26. package/dist/public/assets/{DiffViewBoundary-B13gBLtK.js → DiffViewBoundary-CBAGr4M4.js} +1 -1
  27. package/dist/public/assets/DocumentContext-BL03B6Lo.js +38 -0
  28. package/dist/public/assets/{EditorModeToggle-HTkemSk1.js → EditorModeToggle-BsK6ZKYQ.js} +1 -1
  29. package/dist/public/assets/{EnableSyncConfirmDialog-BIlYRb73.js → EnableSyncConfirmDialog-DjaFG6MU.js} +1 -1
  30. package/dist/public/assets/{ExcalidrawDocEditor-BuFmAaIa.js → ExcalidrawDocEditor-DphKGPeJ.js} +1 -1
  31. package/dist/public/assets/FeedbackForm-CqA8hjj8.js +1 -0
  32. package/dist/public/assets/{GraphPanel-u52WU2oL.js → GraphPanel-B2aFesGW.js} +2 -2
  33. package/dist/public/assets/{ImageAttachments-DyK8QuNY.js → ImageAttachments-Zj80uHKI.js} +1 -1
  34. package/dist/public/assets/{ImportSkillDialog-DbL6sCM2.js → ImportSkillDialog-BEWZQmnc.js} +1 -1
  35. package/dist/public/assets/{LintConfigEditor-D9ptwlFr.js → LintConfigEditor-DuIbFKSd.js} +1 -1
  36. package/dist/public/assets/ManagedArtifactProperties-Dl3pabto.js +1 -0
  37. package/dist/public/assets/ManagedArtifactProperties-PLZuubo-.js +1 -0
  38. package/dist/public/assets/{MermaidDocEditor-Dq084Ykr.js → MermaidDocEditor-CdignfBs.js} +1 -1
  39. package/dist/public/assets/{PropertyDisplayRow-BPYA3Dpm.js → PropertyDisplayRow-CyD4-Wb_.js} +1 -1
  40. package/dist/public/assets/ReportBugDialogBody-BUuxy0j2.js +3 -0
  41. package/dist/public/assets/{ReportBugMenuTrigger-Bgd4nbhS.js → ReportBugMenuTrigger-sk-thNZX.js} +2 -2
  42. package/dist/public/assets/{SchemaConfigEditor-Bs5Qb3a_.js → SchemaConfigEditor-CDpCKyKB.js} +1 -1
  43. package/dist/public/assets/{SessionsHost-xU9HmkZD.js → SessionsHost-B-TEBDCp.js} +2 -2
  44. package/dist/public/assets/{SettingsDialogBody-B8PZEIgj.js → SettingsDialogBody-DK0PsIIc.js} +4 -4
  45. package/dist/public/assets/{ShareBranchSwitchDialog-Cd1IH1tv.js → ShareBranchSwitchDialog-DCgiR2i-.js} +1 -1
  46. package/dist/public/assets/{ShareReceiveDialog-CDOEKYVB.js → ShareReceiveDialog-DUqJV0UV.js} +1 -1
  47. package/dist/public/assets/{ShareReceiveMissDialog-DmWXKwKo.js → ShareReceiveMissDialog-JxBpkBFR.js} +1 -1
  48. package/dist/public/assets/{SkillCostValue-Da0rHHTz.js → SkillCostValue-Dz6a2Lnk.js} +1 -1
  49. package/dist/public/assets/{SkillEditBanner-Cs-3UGuA.js → SkillEditBanner-BNP9V25d.js} +1 -1
  50. package/dist/public/assets/{SkillForkDialog-DNBDX1CX.js → SkillForkDialog-DoQVCana.js} +1 -1
  51. package/dist/public/assets/{SkillInstallMenu-Ds9mhQmJ.js → SkillInstallMenu-Bu9LANwb.js} +2 -2
  52. package/dist/public/assets/{SkillOriginInline-B0dcs7tW.js → SkillOriginInline-CuE2lMFY.js} +1 -1
  53. package/dist/public/assets/{SkillToolbarControls-Do_aqh2A.js → SkillToolbarControls-HtxNAB1G.js} +1 -1
  54. package/dist/public/assets/{SlidesToolbarControls-DHvw4uBT.js → SlidesToolbarControls-BZNlyduc.js} +1 -1
  55. package/dist/public/assets/SourceEditor-CDklgrky.js +1 -0
  56. package/dist/public/assets/{TerminalPanel-12Llnh6U.js → TerminalPanel-BuPs5mVj.js} +3 -3
  57. package/dist/public/assets/{TerminalWindowApp-D3xj6sKj.js → TerminalWindowApp-BTj6QFKN.js} +1 -1
  58. package/dist/public/assets/{TextDocEditor-1-vgiay8.js → TextDocEditor-Dby0nL6U.js} +1 -1
  59. package/dist/public/assets/{ThreadView-DYRIYJVr.js → ThreadView-CUE8ki-r.js} +1 -1
  60. package/dist/public/assets/{TimelineDiffPane-Bo4TRb2U.js → TimelineDiffPane-DkPuC0ku.js} +1 -1
  61. package/dist/public/assets/{agent-diff-store-BpEmZR_U.js → agent-diff-store-IPzzfrOx.js} +1 -1
  62. package/dist/public/assets/auth-state-cache-DTs2CUC0.js +11 -0
  63. package/dist/public/assets/{bug-report-send-manager-D7ZKWC13.js → bug-report-send-manager-Bss057qg.js} +1 -1
  64. package/dist/public/assets/{client-version-CyfblLiq.js → client-version-f3Ic3dkW.js} +1 -1
  65. package/dist/public/assets/{comment-chips-DSavxKRA.js → comment-chips-C9DBUwjq.js} +1 -1
  66. package/dist/public/assets/config-provider-Bvsjfg7O.js +5 -0
  67. package/dist/public/assets/{dist-Cwdy6rNm.js → dist-o3yaQSBE.js} +1 -1
  68. package/dist/public/assets/{doc-hash-2ijBcFw2.js → doc-hash-gt3yar-W.js} +1 -1
  69. package/dist/public/assets/{doc-undo-manager-Cu_ax5kl.js → doc-undo-manager-CpfBEWAw.js} +1 -1
  70. package/dist/public/assets/{documents-events-D-zWDKxn.js → documents-events-Du6II0Ei.js} +1 -1
  71. package/dist/public/assets/{file-tree-adapter-D-PRw9QY.js → file-tree-adapter-Ws51oJtV.js} +1 -1
  72. package/dist/public/assets/{file-tree-utils-CRgAMcDx.js → file-tree-utils-CjXPIk9u.js} +1 -1
  73. package/dist/public/assets/{folder-config-api-CSxHXv7z.js → folder-config-api-DRfPX6G9.js} +1 -1
  74. package/dist/public/assets/i18n-gYJ8jvKw.js +1 -0
  75. package/dist/public/assets/{index-BnyZLeou.js → index-3LY7lc1S.js} +14 -14
  76. package/dist/public/assets/{launcher-selection-BtWIyLvk.js → launcher-selection-CDIa5FVF.js} +1 -1
  77. package/dist/public/assets/{lint-config-client-mcvTJc2v.js → lint-config-client-Mu5rBBK-.js} +1 -1
  78. package/dist/public/assets/{markdownlint-rule-browser-BMGCypxy.js → markdownlint-rule-browser-CpUZseqZ.js} +1 -1
  79. package/dist/public/assets/messages-B6Ac_knU.js +1 -0
  80. package/dist/public/assets/messages-BvfFbtmp.js +1 -0
  81. package/dist/public/assets/messages-ByqVbDZe.js +1 -0
  82. package/dist/public/assets/messages-CF4EMa7T.js +1 -0
  83. package/dist/public/assets/messages-CgBcbaHh.js +1 -0
  84. package/dist/public/assets/messages-CnVn5BDO.js +1 -0
  85. package/dist/public/assets/messages-CqyX3cbt.js +1 -0
  86. package/dist/public/assets/messages-CxKqlUtN.js +1 -0
  87. package/dist/public/assets/messages-D9dpfRAa.js +1 -0
  88. package/dist/public/assets/messages-DzfDu_9j.js +1 -0
  89. package/dist/public/assets/messages-K88Wi74D.js +1 -0
  90. package/dist/public/assets/messages-oiz3Xu6U.js +1 -0
  91. package/dist/public/assets/page-list-cache-Cu9DOD34.js +1 -0
  92. package/dist/public/assets/{pending-receive-nav-store-DLi8WvuU.js → pending-receive-nav-store-vjeswZ1S.js} +1 -1
  93. package/dist/public/assets/{progress-CBMozKMY.js → progress-Bjq-7B_h.js} +3 -3
  94. package/dist/public/assets/{project-paths-CkPw54qq.js → project-paths-D-0JbskM.js} +1 -1
  95. package/dist/public/assets/{prop-types-BWOU-3iS.js → prop-types-BMmnqO1F.js} +1 -1
  96. package/dist/public/assets/{receive-store-DbCZayFQ.js → receive-store-Ch7q4td5.js} +1 -1
  97. package/dist/public/assets/{selection-context-CHPHJ_3P.js → selection-context-DxsBdCm9.js} +1 -1
  98. package/dist/public/assets/{skill-scope-Cc_tGDGk.js → skill-scope-Byq13eLB.js} +1 -1
  99. package/dist/public/assets/{skills-api-DOBXco7b.js → skills-api-B8VoCUW6.js} +1 -1
  100. package/dist/public/assets/{src-DbplITLy.js → src-2dTcoAYc.js} +1 -1
  101. package/dist/public/assets/{startup-marks-XRsgWWbt.js → startup-marks-CTXUS1Ul.js} +1 -1
  102. package/dist/public/assets/{tag-pill-input-B5neay0J.js → tag-pill-input-D-HYAX8D.js} +1 -1
  103. package/dist/public/assets/{target-navigation-intent-OdVNpD6p.js → target-navigation-intent-D3ncb9fZ.js} +1 -1
  104. package/dist/public/assets/{telemetry-startup-BLz9UO1p.js → telemetry-startup-CH9llubG.js} +1 -1
  105. package/dist/public/assets/{terminal-cli-display-C4WdyJL_.js → terminal-cli-display-C0s5xXdy.js} +1 -1
  106. package/dist/public/assets/{terminal-command-events-WuiqDErm.js → terminal-command-events-DaFJ29gM.js} +1 -1
  107. package/dist/public/assets/{typing-burst-detector-CP0dyZot.js → typing-burst-detector-oKnQh0ov.js} +3 -3
  108. package/dist/public/assets/{uninstall-Q6KZCGd1.js → uninstall-Cdgarx0X.js} +1 -1
  109. package/dist/public/assets/{use-activity-panel-C4GUe7aL.js → use-activity-panel-BM_l4tMu.js} +1 -1
  110. package/dist/public/assets/{use-apply-config-color-theme-ZQo6F7Ch.js → use-apply-config-color-theme-BzF4dCGo.js} +1 -1
  111. package/dist/public/assets/{use-collab-url-VKEV6_yX.js → use-collab-url-DhrFhtyH.js} +1 -1
  112. package/dist/public/assets/{use-conflicts-BdD4tOPl.js → use-conflicts-BsmHy6Ah.js} +1 -1
  113. package/dist/public/assets/{use-live-xterm-theme-B9XRMlxA.js → use-live-xterm-theme-Drc41C1Y.js} +1 -1
  114. package/dist/public/assets/{use-open-skill-BH_mEYpe.js → use-open-skill-Bc_MMBNx.js} +1 -1
  115. package/dist/public/assets/{use-settings-route-DdY4FJ0e.js → use-settings-route-D_hrIks1.js} +1 -1
  116. package/dist/public/assets/{use-skill-origin-AvtTl_ol.js → use-skill-origin-CteAWX6H.js} +1 -1
  117. package/dist/public/assets/{use-skills-0lg-f7-C.js → use-skills-B_7BHHiH.js} +1 -1
  118. package/dist/public/assets/{use-terminal-enabled-Bzjy0qRo.js → use-terminal-enabled-BS4HcL8d.js} +1 -1
  119. package/dist/public/assets/use-timeline-entry-diff-CjVpx90u.js +5 -0
  120. package/dist/public/assets/{use-workspace-B6rNZ9sM.js → use-workspace-BBjLPqCO.js} +1 -1
  121. package/dist/public/index.html +51 -51
  122. package/dist/public/uninstall.html +4 -4
  123. package/dist/{repair-launch-json-BauldshL.mjs → repair-launch-json-DfVqqhks.mjs} +2 -2
  124. package/dist/{repair-mcp-configs-DwXnnCf1.mjs → repair-mcp-configs-CY74SE23.mjs} +2 -2
  125. package/dist/repair-skills-BJog_ZkO.mjs +1 -0
  126. package/dist/{repair-skills-DV5Ex1fA.mjs → repair-skills-lRCFwvhr.mjs} +2 -2
  127. package/dist/{resolve-project-root-Cc2d51uk.mjs → resolve-project-root-BQmlxjbX.mjs} +3 -3
  128. package/dist/{server-lock-DKS1ePB3.mjs → server-lock-DMUPUL90.mjs} +2 -2
  129. package/dist/server-lock-qVil2gut.mjs +1 -0
  130. package/dist/{skill-teardown-CnsEXQ4M.mjs → skill-teardown-BWwkRO-B.mjs} +2 -2
  131. package/dist/{src-B2bAQ64a.mjs → src-BSHNcVXn.mjs} +107 -107
  132. package/dist/src-BxqApSys.mjs +2045 -0
  133. package/dist/src-DhnY2n-M.mjs +1 -0
  134. package/dist/src-Dx0OEah9.mjs +20 -0
  135. package/dist/{src-BRvdXeYI.mjs → src-SbH90xWg.mjs} +1 -1
  136. package/dist/start-BLvelUky.mjs +1 -0
  137. package/dist/{start-BDxtXn92.mjs → start-sZmCG1Do.mjs} +3 -3
  138. package/package.json +4 -4
  139. package/dist/constants-Dzh7neNo.mjs +0 -2
  140. package/dist/git-handle-GcGVb-Kt.mjs +0 -1
  141. package/dist/init-C1yB1g0w.mjs +0 -1
  142. package/dist/loader-DTb37YSe.mjs +0 -1
  143. package/dist/md-manager--OJ_B4tb.mjs +0 -2
  144. package/dist/preview-BpkEobrV.mjs +0 -1
  145. package/dist/public/assets/CodeMirrorPropInput-8nVGsNl8.js +0 -3
  146. package/dist/public/assets/DocumentContext-DXm1rbIR.js +0 -38
  147. package/dist/public/assets/FeedbackForm-BSoEerEL.js +0 -1
  148. package/dist/public/assets/ManagedArtifactProperties-D9RpfNxI.js +0 -1
  149. package/dist/public/assets/ManagedArtifactProperties-mMbrZxNk.js +0 -1
  150. package/dist/public/assets/ReportBugDialogBody-CT2Z753g.js +0 -3
  151. package/dist/public/assets/SourceEditor-DAMTcgxc.js +0 -1
  152. package/dist/public/assets/auth-state-cache-CyNl-PT7.js +0 -11
  153. package/dist/public/assets/config-provider-Ba3bBCYB.js +0 -5
  154. package/dist/public/assets/i18n-CkFIIxkx.js +0 -1
  155. package/dist/public/assets/messages-1No0CauP.js +0 -1
  156. package/dist/public/assets/messages-BIqXzC4l.js +0 -1
  157. package/dist/public/assets/messages-B_4omNLT.js +0 -1
  158. package/dist/public/assets/messages-Be-FYfQ4.js +0 -1
  159. package/dist/public/assets/messages-CNHhZ4a3.js +0 -1
  160. package/dist/public/assets/messages-CQAvxRgS.js +0 -1
  161. package/dist/public/assets/messages-CVeyKz0B.js +0 -1
  162. package/dist/public/assets/messages-CtF6T86x.js +0 -1
  163. package/dist/public/assets/messages-M0QpAdXx.js +0 -1
  164. package/dist/public/assets/messages-hpjSQYVz.js +0 -1
  165. package/dist/public/assets/messages-prOy2Yu2.js +0 -1
  166. package/dist/public/assets/messages-wwh_OEGG.js +0 -1
  167. package/dist/public/assets/page-list-cache-B-YfJ4Pd.js +0 -1
  168. package/dist/public/assets/use-timeline-entry-diff-ChkhgMPB.js +0 -5
  169. package/dist/repair-skills-Cd0ulalA.mjs +0 -1
  170. package/dist/server-lock-D-DD35fh.mjs +0 -1
  171. package/dist/src-H40sxqt7.mjs +0 -1
  172. package/dist/src-IiV9Xv8E.mjs +0 -2045
  173. package/dist/src-SiHgr89I.mjs +0 -21
  174. package/dist/start-ClILLevG.mjs +0 -1
@@ -0,0 +1 @@
1
+ import"./src-BSHNcVXn.mjs";import"./resolve-project-root-BQmlxjbX.mjs";import"./src-Dx0OEah9.mjs";import"./acp-harness-probe-cDPpq4cK.mjs";import"./init-HwwBx7jE.mjs";import{n as e}from"./loader-BgZTHjwC.mjs";import"./skill-teardown-BWwkRO-B.mjs";import"./preview-C_JkVRHU.mjs";import"./mcp-migrate-event-9DFnNzHa.mjs";export{e as loadConfig};
@@ -0,0 +1,20 @@
1
+ import{o as e}from"./chunk-DTipWd-i.mjs";import{Ra as t,Wa as n,cc as r,sc as i,u as a,za as o}from"./src-BSHNcVXn.mjs";import{$ as s,Ct as c,Q as l,c as u,s as d}from"./sleep-zea4v2sB.mjs";import{Bi as f,ct as p,ei as m,h,lt as g,st as _,ut as v,xr as y}from"./src-BxqApSys.mjs";import{A as b,I as x,L as S,O as C}from"./fs-traced-DgX7lP1u.mjs";import{C as w,S as T,_ as E,d as D,f as O,r as ee}from"./server-lock-DMUPUL90.mjs";import{t as k}from"./yazl-DejPO9b3.mjs";import{_ as A,h as j,m as M,v as N,x as P}from"./resolve-project-root-BQmlxjbX.mjs";import{c as te}from"./colors-DSyAT9Cz.mjs";import{a as ne,i as re}from"./acp-harness-probe-cDPpq4cK.mjs";import{D as ie,E as F,S as ae,T as I,_ as oe,b as se,o as ce}from"./init-HwwBx7jE.mjs";import{n as le}from"./constants-veaDdIy0.mjs";import{t as ue}from"./is-object-Bw0-z8qH.mjs";import"./loader-BgZTHjwC.mjs";import"./skill-teardown-BWwkRO-B.mjs";import"./preview-C_JkVRHU.mjs";import{execSync as de,spawnSync as fe}from"node:child_process";import{basename as L,dirname as R,join as z,relative as pe,resolve as B,sep as me}from"node:path";import{closeSync as he,cpSync as ge,createWriteStream as _e,existsSync as V,lstatSync as ve,mkdirSync as H,mkdtempSync as ye,openSync as be,readFileSync as U,readSync as xe,readdirSync as W,readlinkSync as Se,rmSync as Ce,statSync as we,writeFileSync as G}from"node:fs";import{arch as Te,freemem as Ee,homedir as K,hostname as De,platform as Oe,release as ke,tmpdir as Ae,totalmem as je,type as Me,uptime as Ne}from"node:os";import"node:fs/promises";import{createHash as Pe}from"node:crypto";var Fe=c();let Ie;function Le(){return Ie}function Re(e,t){if(t!==void 0&&t.length>0)return t;try{return m(e)?.rootPath}catch{return}}function ze(e){let t=Re(e.cwd,e.configuredProjectName),n=h({name:`cli`,project:t});return Ie=n,n.info({command:e.command,cwd:e.cwd,project:t},`cli command started`),n}const Be=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`deinit`,`auth`]);function Ve(e,t,n=m){if(e!==void 0&&!Be.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let He=null;function Ue(e){He=e}function We(){return He??process.cwd()}const Ge=`Open Knowledge`;function Ke(e={}){let t=e.platformName??process.platform,n=e.productName??`OpenKnowledge`;return A(t).join(N({...e,platformName:t}),n)}function qe(e={}){let t=e.platformName??process.platform,n=e.home??K(),r=e.env??process.env,i=A(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,`@inkeepopen-knowledge-desktop-updater`)}function Je(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 Ye(e){let t=z(e,`state.json`);if(!V(t))return[];let n;try{n=JSON.parse(U(t,`utf-8`))}catch{return[]}return Je(n)??[]}function Xe(e){let t=z(e,`state.json`);if(!V(t))return!1;try{return Je(JSON.parse(U(t,`utf-8`)))!==null}catch{return!1}}const Ze=8192;function Qe(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 $e(e){return e.replace(/\\+\/?/g,e=>{if(!e.endsWith(`/`))return e;let t=e.length-1;return`${`\\`.repeat(t-t%2)}/`})}const et=RegExp(`("(?:${[`crashReporterKey`,`bootSessionUUID`,`deviceIdentifierForVendor`].join(`|`)})"\\s*:\\s*)"[^"]*"`,`g`);function tt(e){return e.replace(et,`$1"[REDACTED-DEVICE-ID]"`)}function nt(e){return tt($e(e))}const rt=/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})(\.\d+)? ([+-]\d{2})(\d{2})$/;function it(e){if(typeof e!=`string`)return null;let t=rt.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 at(e){let t=be(e,`r`);try{let e=Buffer.alloc(Ze),n=0,r=!1;for(;n<Ze;){let i=xe(t,e,n,Ze-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{he(t)}}function ot(e){try{let t=at(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:it(a)}}catch{return{kind:`unreadable`}}}function st(e){return e===`OpenKnowledge`||e.startsWith(`OpenKnowledge `)}function ct(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=z(e,t.name),r;try{r=we(n).mtimeMs}catch{continue}if(r<i)continue;let c=ot(n),l=c.kind===`named`&&c.timestampMs!==null?c.timestampMs:r;if(c.kind===`unreadable`){s+=1;continue}if(!st(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`}}function q(){return z(K(),`.ok`,`bug-reports`)}function lt(e=new Date){let t=e.toISOString().replace(/[:.]/g,`-`),n=q(),r=`${t}-bugreport`,i=z(n,`${r}.zip`);for(let e=2;V(i);e+=1)i=z(n,`${r}-${e}.zip`);return i}function ut(e,t){let n=z(e,`.ok`,`config.yml`);if(V(n))try{let e=U(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 V(z(e,`.ok`))?Pe(`sha256`).update(B(e)).digest(`hex`).slice(0,12):null}function dt(){let e={timestamp:new Date().toISOString(),platform:Oe(),osType:Me(),osRelease:ke(),hostname:`[redacted]`,uptime:Ne(),freeMem:Ee(),totalMem:je(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=de(`sw_vers -productVersion 2>/dev/null`,f({encoding:`utf8`})).trim()}catch{}try{let t=z(__dirname,`..`,`..`,`package.json`);V(t)&&(e.okVersion=JSON.parse(U(t,`utf8`)).version)}catch{}return e}const ft=[{prefix:`cli`,projectTagged:!0},{prefix:`desktop`,projectTagged:!1},{prefix:`mcp`,projectTagged:!1}];function pt(e){let t=L(e);return ft.some(e=>e.projectTagged&&t.startsWith(`${e.prefix}.`))}function mt(e,t){return vt(e,t).files}const ht=[`ShipIt_stderr.log`,`ShipIt_stdout.log`];function gt(e,t=ne){let n=z(e,`${t}.ShipIt`);if(!V(n))return[];let r;try{r=W(n)}catch{return[]}return ht.flatMap(e=>r.map(t=>{if(t===e)return{entry:t,suffix:-1};if(!t.startsWith(`${e}.`))return null;let n=t.slice(e.length+1);return/^\d+$/.test(n)?{entry:t,suffix:Number(n)}:null}).filter(e=>e!==null).sort((e,t)=>e.suffix-t.suffix).slice(0,4).map(e=>z(n,e.entry)))}function _t(e){if(!V(e))return[];try{let t=new Map;for(let n of W(e).filter(e=>e.endsWith(`.yaml`)).sort()){let e=n.endsWith(`.sent.yaml`)?n.slice(0,-i.length):n.slice(0,-5),r=t.get(e);r===void 0?t.set(e,[n]):r.push(n)}return[...t.values()].slice(-25).flat().map(t=>z(e,t))}catch{return[]}}function vt(e,t){if(!V(t))return{files:[],excludedByProjectSlug:0};let n=W(t).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>z(t,e));if(!e)return{files:n,excludedByProjectSlug:0};let r=n.filter(pt),i=[],a=r.filter(t=>{try{return U(t,`utf8`).includes(`"project":"${e}"`)}catch{return i.push(t),!1}});if(a.length===0)return{files:n,excludedByProjectSlug:0};let o=new Set([...a,...i]);return{files:n.filter(e=>!pt(e)||o.has(e)),excludedByProjectSlug:r.length-o.size}}function yt(e){let t=z(e,`.ok`,`local`);return V(t)?{files:[`server.lock`,`last-spawn-error.log`,d].map(e=>z(t,e)).filter(e=>V(e))}:{files:[]}}function bt(e){let t=z(e,`.ok`,`local`,`logs`);return V(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>z(t,e)).filter(e=>V(e))}:{files:[]}}function xt(e){let t=0,n=new Map,r=e.replace(/("(?:docName|doc\.name|documentName)"\s*:\s*")((?:[^"\\]|\\.)*)"/g,(e,r,i)=>{t+=1;let a=n.get(i);return a===void 0&&(a=`doc#${Pe(`sha256`).update(i).digest(`hex`).slice(0,12)}`,n.set(i,a)),`${r}${a}"`});for(let[e,i]of[...n].sort(([e],[t])=>t.length-e.length)){if(e.length===0||!r.includes(e))continue;let n=r.split(e);t+=n.length-1,r=n.join(i)}return{text:r,count:t}}function St(e){let t=e.revealDocNames?e.content:xt(e.content).text;if(e.redact){let{redacted:n,patterns:r,lineCount:i}=o(t);e.zipfile.addBuffer(Buffer.from(n,`utf8`),e.name),e.bundleFiles.push(e.name),r.length>0&&e.redactions.push({file:e.name,lineCount:i,patterns:r})}else e.zipfile.addBuffer(Buffer.from(t,`utf8`),e.name),e.bundleFiles.push(e.name)}function J(e){for(let t of e.files)try{let n=U(t,`utf8`);St({zipfile:e.zipfile,name:`${e.prefix}/${L(t)}`,content:t.endsWith(`.ips`)?nt(n):n,redact:e.redact,revealDocNames:e.revealDocNames,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 Ct(n){let{redact:i,outputPath:a,logger:o}=n,s=n.revealDocNames??!1,c=n.userLogsDir??z(K(),`.ok`,`logs`),l=n.projectDir?ut(n.projectDir,o):null;H(R(a),{recursive:!0}),o?.info({projectSlug:l},`gathering diagnostic data`);let u=dt();u.desktop=n.desktop??null,u.language=n.language??null;let{files:d,excludedByProjectSlug:f}=vt(l,c),{files:p}=n.projectDir?yt(n.projectDir):{files:[]},{files:m}=n.projectDir?bt(n.projectDir):{files:[]},h=n.shipItLogFiles??[],g=n.diagnosticReports?.files??[];o?.info({logFileCount:d.length,logFilesExcludedByProjectSlug:f,lockFileCount:p.length,localSinkFileCount:m.length,shipItLogFileCount:h.length,diagnosticReportCount:g.length},`files collected`);let _=[],v=[],{ZipFile:y}=await import(`./yazl-BwMlCqRQ.mjs`).then(t=>e(t.default,1)),b=new y;J({zipfile:b,files:[...d,...h],prefix:`logs`,redact:i,revealDocNames:s,bundleFiles:v,redactions:_,logger:o}),J({zipfile:b,files:p,prefix:`lockdir`,redact:i,revealDocNames:s,bundleFiles:v,redactions:_,logger:o}),J({zipfile:b,files:m,prefix:`local-logs`,redact:i,revealDocNames:s,bundleFiles:v,redactions:_,logger:o}),J({zipfile:b,files:n.bugReportLedgerFiles??[],prefix:r,redact:i,revealDocNames:s,bundleFiles:v,redactions:_,logger:o}),J({zipfile:b,files:g,prefix:`diagnostic-reports`,redact:i,revealDocNames:s,bundleFiles:v,redactions:_,logger:o});for(let e of n.extraFiles??[])try{let t=U(e.sourcePath),n=`extra/${e.zipName??L(e.sourcePath)}`;b.addBuffer(t,n),v.push(n)}catch(t){o?.warn({sourcePath:e.sourcePath,err:t},`extra file unreadable; omitted from bundle`)}n.note&&St({zipfile:b,name:`note.txt`,content:n.note,redact:i,revealDocNames:s,bundleFiles:v,redactions:_});let x=new Set(g.map(e=>`diagnostic-reports/${L(e)}`)),S=v.filter(e=>x.has(e)),C=n.diagnosticReports===void 0?`not-collected (no collection attempted)`:Qe(n.diagnosticReports,S.length);b.addBuffer(Buffer.from(`${C}\n`,`utf8`),`state/diagnostic-reports-status.txt`),v.push(`state/diagnostic-reports-status.txt`);let w=JSON.stringify(u,null,2);b.addBuffer(Buffer.from(w,`utf8`),`sysinfo.json`),v.push(`sysinfo.json`);let T={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:l,files:v,redactions:_,sysinfo:u};b.addBuffer(Buffer.from(JSON.stringify(T,null,2),`utf8`),`MANIFEST.json`);let E=_.reduce((e,t)=>e+t.lineCount,0),D=new Set(h.map(e=>`logs/${L(e)}`)),O=v.filter(e=>D.has(e)),ee=new Set((n.bugReportLedgerFiles??[]).map(e=>`${r}/${L(e)}`)),k=v.filter(e=>ee.has(e)),A=l?v.filter(e=>e.startsWith(`logs/`)&&!pt(e)&&!D.has(e)):[],j=S.length>0?[`Crash reports under diagnostic-reports/ are rewritten on the way in,`,`independently of this setting: escaped path separators are normalised`,`so the scrub above can read them, and the identifiers that link this`,`machine's bundles to each other are replaced. Nothing else is changed;`,`they are not byte-identical to the files macOS wrote.`]:[],M=j.length>0?[`Redaction was disabled for this bundle; file contents are unmodified,`,`with one exception.`,...j]:[`Redaction was disabled for this bundle; file contents are unmodified.`],N=[`# Bug Report Bundle`,``,`Generated: ${T.generatedAt}`,`Project: ${l??`(unscoped)`}`,`Discipline version: ${T.disciplineVersion}`,``,`## Contents`,``,...v.map(e=>`- ${e}`),``,`## Privacy`,``,...A.length>0?[`Scope: some collected logs are user-wide rather than project-scoped.`,`These are written once per machine per day and can contain activity`,`from other projects open on this machine, including captured console`,`output:`,...A.map(e=>`- ${e}`),``]:[],...O.length>0?[`Installer logs: written by the macOS update helper rather than by`,`OpenKnowledge itself, and machine-wide rather than scoped to any one`,`project. They record the install and update history of this app on`,`this machine. Only this app is collected, never other applications`,`that use the same update mechanism:`,...O.map(e=>`- ${e}`),``]:[],...S.length>0?[`Crash reports: written by macOS itself rather than by OpenKnowledge,`,`and machine-wide rather than scoped to any one project. They record`,`why the operating system ended a process of this app — the signal or`,`exception, the code-signing verdict, and whatever text the process`,`left behind as it died. They also carry machine details the OS puts`,`in every report: the account uid, the Mac model, and the name of the`,`process that launched this app, which on a managed machine can be`,`internal tooling. The identifiers that would link this machine's`,`bundles to each other are replaced before bundling. Only this`,`app's own reports are collected, never another application's, though`,`a report of ours still names the processes it ran alongside:`,...S.map(e=>`- ${e}`),``]:[],...k.length>0?[`Send history: a small record for each bug report previously generated`,`on this machine — when it was generated, whether sending it`,`succeeded, and why it failed if it did. This is what makes a failed`,`send diagnosable at all. It is machine-wide rather than scoped to`,`this project, so it names the other projects reports were filed`,`from. It carries no document content:`,...k.map(e=>`- ${e}`),``]:[],...i?[`This bundle was auto-redacted before packaging.`,`Patterns checked: ${t.join(`, `)}`,E>0?`${E} line(s) were scrubbed across ${_.length} file(s).`:`No redactions were needed.`,`See MANIFEST.json for the full redaction audit report.`,...j,``,`This bundle is safe to attach to a GitHub issue.`]:M].join(`
2
+ `);b.addBuffer(Buffer.from(N,`utf8`),`README.md`),b.end();let P=_e(a);return b.outputStream.pipe(P),await new Promise((e,t)=>{P.on(`close`,e),P.on(`error`,t)}),o?.info({bundlePath:a,fileCount:v.length,redactionCount:E},`bundle written`),{zipPath:a,summary:{projectSlug:l,files:v,redactions:_,redactedLineCount:E,generatedAt:T.generatedAt}}}var wt=e(k(),1),Y=e(te(),1);function Tt(e){return S({absPath:b(`user`,e,e),sideline:!1,warn:()=>{}}).value.appearance?.language??`system`}function Et({home:e=K(),env:t=process.env}={}){let r=Tt(e),{override:i,preferenceList:a}=C(t),{locale:o,source:c}=n({override:i,storedPreference:r,supportedLocales:s,preferenceList:a,autoDetectableLocales:l});return{preference:r,locale:o,source:c,systemLanguages:a}}function Dt(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function Ot(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function X(e,t){if(typeof e==`string`)return Dt(e,t.contentDir);if(Array.isArray(e))return e.map(e=>X(e,t));if(!Ot(e))return e;let n={};for(let[r,i]of Object.entries(e))n[r]=X(i,t);return n}function kt(e,t){let n=U(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
3
+ `),i=n.split(`
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=X(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}G(e,r?`${a.join(`
5
+ `)}\n`:a.join(`
6
+ `))}function At(e,t){let n=U(e,`utf-8`);if(n.trim().length!==0)try{let r=X(JSON.parse(n),t),i=n.endsWith(`
7
+ `)?`
8
+ `:``;G(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=Dt(n,t.contentDir);r!==n&&G(e,r)}}function jt(e,t){let n=U(e,`utf-8`),r=Dt(n,t.contentDir);r!==n&&G(e,r)}function Mt(e){try{return W(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>z(e,t.name))}catch{return[]}}const Nt=new Set([`agent-presence.json`,`agent-effects.json`,`runtime.json`]);function Pt(e){return/\.log\.\d+$/.test(e)}function Ft(e){return e.endsWith(`.jsonl`)||e.endsWith(`.log`)||Pt(e)}const It=[`telemetry`,`logs`,`process`,`diagnostic-reports`];function Lt(e){let t={contentDir:e.contentDir};for(let n of It)for(let r of Mt(z(e.stagingDir,n)))Ft(r)?kt(r,t):r.endsWith(`.json`)?At(r,t):jt(r,t);for(let n of Mt(z(e.stagingDir,`state`))){let e=L(n);n.endsWith(`.jsonl`)?kt(n,t):Nt.has(e)?At(n,t):jt(n,t)}}const Rt=[`.ok`,`local`,`telemetry`],zt=[`.ok`,`local`,`logs`],Bt=[`.ok`,`local`,`loss-capture`],Vt=`spans-current.jsonl`,Ht=`spans-prev.jsonl`,Ut=`server-current.jsonl`,Wt=`server-prev.jsonl`,Gt=`loss-current.jsonl`,Kt=`loss-prev.jsonl`;function qt(e){return z(e,...Rt,Vt)}function Jt(e){return z(e,...Rt,Ht)}function Yt(e){return z(e,...zt,Ut)}function Xt(e){return z(e,...zt,Wt)}function Zt(e){return z(e,...Bt,Gt)}function Qt(e){return z(e,...Bt,Kt)}const $t=1e3;async function en(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout($t)});return t.ok?await t.text():null}catch{return null}}async function tn(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-effects`,{signal:AbortSignal.timeout($t)});return t.ok?await t.text():null}catch{return null}}async function nn(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/watcher-recent`,{signal:AbortSignal.timeout($t)});return t.ok?await t.text():null}catch{return null}}function rn(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
+ `)}\n`:null}catch{return null}}function an(e){let t=z(e,`.git`,`ok`);if(!V(t))return null;let n=fe(`git`,[`-C`,t,`log`,`--oneline`,`-50`],f({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function on(e){let t=z(e,`.git`,`ok`);if(!V(t))return null;let n=fe(`git`,[`-C`,t,`for-each-ref`,`--sort=-creatordate`,`--count=50`,`--format=%(refname)%09%(creatordate:iso-strict)%09%(contents:subject)`,`refs/checkpoints/`],f({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function sn(){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 cn(){return{nodeVersion:process.version,platform:Oe(),arch:Te()}}function ln(){return process.env.OTEL_SDK_DISABLED===`false`}function Z(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function un(e){if(!V(e))return{};let t;try{t=(0,Fe.parse)(U(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(!Z(t))return{};let n=t.telemetry;if(!Z(n))return{};let r=n.localSink;return Z(r)?r:{}}function dn(e){return typeof e==`boolean`?e:void 0}function fn(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function pn(e){if(Z(e))return fn(e.maxBytes)}function mn(e){let t=un(b(`project`,e)),n=un(b(`project-local`,e));return{enabled:dn(n.enabled)??dn(t.enabled)??!0,spansMaxBytes:pn(n.spans)??pn(t.spans)??52428800,logsMaxBytes:pn(n.logs)??pn(t.logs)??26214400}}function hn(e){return Pe(`sha256`).update(e).digest(`hex`)}function gn(e){let t=U(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}const _n=[`"doc.name"`,`"docName"`];function vn(e){let t=U(e,`utf-8`),n=0;for(let e of _n){let r=t.indexOf(e);for(;r!==-1;)n++,r=t.indexOf(e,r+e.length)}return n}function Q(e,t){if(!V(e))return!1;try{return H(R(t),{recursive:!0}),e.endsWith(`.ips`)?G(t,nt(U(e,`utf-8`))):ge(e,t),!0}catch{return!1}}function yn(e){let t=[],n=e=>{let r=W(e,{withFileTypes:!0});for(let i of r){let r=z(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const bn=new Set([`.jsonl`]);function xn(e){let t=e.lastIndexOf(`.`);return t===-1?!1:bn.has(e.slice(t))}const Sn=new Set([`.jsonl`,`.json`,`.txt`,`.log`,`.lock`,`.yaml`,`.yml`,`.ips`]);function Cn(e){if(Pt(e))return!0;let t=e.lastIndexOf(`.`);return t===-1?!1:Sn.has(e.slice(t))}function wn(e){let t=[];for(let n of yn(e)){let r=Tn(e,n);if(!Cn(r))continue;let{redacted:i,patterns:a,lineCount:s}=o(U(n,`utf-8`));a.length!==0&&(G(n,i),t.push({file:r,lineCount:s,patterns:a}))}return{redactions:t,redactedLineCount:t.reduce((e,t)=>e+t.lineCount,0)}}function Tn(e,t){return pe(e,t).split(me).join(`/`)}async function En(e){let t=B(e.contentDir),n=B(e.projectDir??e.contentDir),i=e.deps??{},a=i.fetchAgentPresence??en,o=i.fetchAgentEffects??tn,s=i.fetchWatcherRecent??nn,c=i.readShadowHead??an,l=i.readCheckpointRefs??on,f=i.now??(()=>new Date),p=i.okVersion??(()=>le),m=i.readDesktopEnv??sn,h=i.readLanguage??Et,g=i.readRuntime??cn,_=i.isOtlpPushEnabled??ln,v=ye(z(Ae(),`ok-bundle-`));try{H(z(v,`telemetry`),{recursive:!0}),H(z(v,`logs`),{recursive:!0}),H(z(v,`state`),{recursive:!0}),Q(qt(n),z(v,`telemetry`,Vt)),Q(Jt(n),z(v,`telemetry`,Ht)),Q(Yt(n),z(v,`logs`,Ut)),Q(Xt(n),z(v,`logs`,Wt));for(let t of e.userLogFiles??[])Q(t,z(v,`logs`,L(t)));for(let t of e.userStateFiles??[])Q(t,z(v,r,L(t)));let y=0;for(let t of e.diagnosticReports?.files??[])Q(t,z(v,`diagnostic-reports`,L(t)))&&(y+=1);let b=z(n,`.ok`,`local`),x=z(b,`server.lock`),S=`not-running`,C=`no server.lock`,w=null;if(V(x)){Q(x,z(v,`state`,`server.lock`));try{let e=U(x,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?w=t.port:C=`lock present but no port`}catch{C=`lock present but unparseable`}}if(w!==null){let e=await a(w);e===null?C=`agent-presence endpoint at :${w} unreachable`:(G(z(v,`state`,`agent-presence.json`),e),S=`running`,C=``);let t=await o(w);t!==null&&G(z(v,`state`,`agent-effects.json`),t);let n=await s(w);if(n!==null){let e=rn(n);e!==null&&G(z(v,`state`,`watcher-recent.jsonl`),e)}}let T=c(t);T!==null&&G(z(v,`state`,`shadow-head.txt`),T);let E=l(t);E!==null&&G(z(v,`state`,`checkpoint-refs.txt`),E),Q(Zt(n),z(v,`state`,Gt)),Q(Qt(n),z(v,`state`,Kt)),Q(z(b,`last-spawn-error.log`),z(v,`state`,`last-spawn-error.log`)),Q(z(b,u),z(v,`state`,u)),Q(z(b,d),z(v,`state`,d));let D=g(),O=m(),ee=h(),k={ok:{version:p(),nodeVersion:D.nodeVersion,platform:D.platform,arch:D.arch},host:{desktop:O,language:ee}};G(z(v,`state`,`runtime.json`),`${JSON.stringify(k,null,2)}\n`);let A=S===`running`?`running
10
+ `:`not-running (${C})\n`;G(z(v,`state`,`server-status.txt`),A);let j=e.diagnosticReports===void 0?`not-collected (no collection attempted)`:Qe(e.diagnosticReports,y);if(G(z(v,`state`,`diagnostic-reports-status.txt`),`${j}\n`),e.processDir&&V(e.processDir)){let t=z(v,`process`);H(t,{recursive:!0}),ge(e.processDir,t,{recursive:!0})}let M=e.redact===!0;M&&Lt({stagingDir:v,contentDir:t}),e.note&&G(z(v,`note.txt`),e.note);let N=null;e.scrubSecrets===!0&&(N=wn(v));for(let t of e.extraFiles??[])Q(t.sourcePath,z(v,`extra`,t.zipName??L(t.sourcePath)))||i.logger?.warn({sourcePath:t.sourcePath},`extra file missing; omitted from bundle`);let P=mn(n),te=yn(v),ne=[],re=0,ie=0;for(let e of te){let t=Tn(v,e),n=we(e).size,r=xn(t)?gn(e):0;ne.push({path:t,bytes:n,lines:r}),re+=n,(t.startsWith(`telemetry/`)||t.startsWith(`logs/`))&&(ie+=vn(e))}let F={applied:M};N!==null&&(F.secretScrub=N);let ae={schemaVersion:2,createdAt:f().toISOString(),ok:{version:p(),nodeVersion:D.nodeVersion,platform:D.platform,arch:D.arch},host:{desktop:O,language:ee},contentDir:{pathSha256:hn(t),absolutePath:M?`<CONTENT_DIR>`:t},telemetry:{localSink:P,otlpPushEnabled:_()},redaction:F,serverStatus:S,files:ne};G(z(v,`manifest.json`),`${JSON.stringify(ae,null,2)}\n`);let I=te.some(e=>{try{return U(e,`utf-8`).includes(t)}catch{return!1}}),oe={stagedDiagnosticReports:y,totalBytes:re,fileCount:ne.length,docNameCount:ie,contentDirVisible:I,redacted:M},se=!1;return{stagingDir:v,manifest:ae,summary:oe,cleanup:()=>{se||(se=!0,Ce(v,{recursive:!0,force:!0}))}}}catch(e){throw Ce(v,{recursive:!0,force:!0}),e}}async function Dn(e){let{collected:t,outputPath:n}=e,r=R(n);if(!V(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);let i=new wt.ZipFile,a=yn(t.stagingDir);for(let e of a){let n=Tn(t.stagingDir,e);i.addFile(e,n)}i.end();let o=_e(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 On(e,t){let n=z(e,`.ok`,`config.yml`);if(V(n))try{let t=(0,Fe.parse)(U(n,`utf-8`)),r=ue(t)?t.content:void 0,i=ue(r)?r.dir:void 0;if(typeof i==`string`&&i.length>0)return B(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 B(e)}async function kn(e,t,n,r,i){let a=ut(t,e.logger),o=await En({contentDir:On(t,e.logger),projectDir:t,redact:e.redact,scrubSecrets:e.redact,note:e.note,extraFiles:e.extraFiles,userLogFiles:[...mt(a,e.userLogsDir??z(K(),`.ok`,`logs`)),...gt(e.cachesDir??z(K(),`Library`,`Caches`))],userStateFiles:_t(e.bugReportsDir??q()),diagnosticReports:i,deps:{readDesktopEnv:n,readLanguage:r,logger:e.logger}});try{H(R(e.outputPath),{recursive:!0}),await Dn({collected:o,outputPath:e.outputPath});let t=o.manifest.redaction.secretScrub;return{zipPath:e.outputPath,summary:{level:`full`,systemWide:!1,projectSlug:a,files:o.manifest.files.map(e=>e.path),redactions:t?.redactions??[],redactedLineCount:t?.redactedLineCount??0,generatedAt:o.manifest.createdAt}}}finally{o.cleanup()}}async function An(e){let{projectDir:t}=e,n=e.readDesktopEnv??sn,r=e.readLanguage??Et,i=()=>ct(e.diagnosticReportsDir??z(K(),`Library`,`Logs`,`DiagnosticReports`),new Date);if(e.level===`full`&&t!==void 0)return kn(e,t,n,r,i());let{zipPath:a,summary:o}=await Ct({projectDir:t,redact:e.redact,revealDocNames:e.level===`full`,outputPath:e.outputPath,userLogsDir:e.userLogsDir,shipItLogFiles:gt(e.cachesDir??z(K(),`Library`,`Caches`)),bugReportLedgerFiles:_t(e.bugReportsDir??q()),diagnosticReports:e.level===`full`?i():void 0,logger:e.logger,note:e.note,extraFiles:e.extraFiles,desktop:n(),language:r()});return{zipPath:a,summary:{level:e.level,systemWide:t===void 0,projectSlug:o.projectSlug,files:o.files,redactions:o.redactions,redactedLineCount:o.redactedLineCount,generatedAt:o.generatedAt}}}function $(e,t,n={}){let r=O(e,t);if(!V(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(U(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!w(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??T)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};if(typeof a.machineId==`string`)return a.machineId===(n.machineId??E())?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a};let o=n.host??De();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function jn(e){return e.replace(/:\d+$/,``)}function Mn(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/(?:[^/?#]*@)?([^@/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:jn(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[^/?#]*@)?([^@/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:jn(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:jn(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}const Nn=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function Pn(e){return z(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const Fn={existsSync:e=>V(e),readFileSync:(e,t)=>U(e,t),lstatSync:e=>ve(e),readlinkSync:e=>Se(e)};function In(e,t=Fn){let n=Pn(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 Ln(e){let t=e.replace(Nn,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function Rn(e,t,n=Fn){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}function zn(e){return M(e)||j(e)||ae(e)}const Bn=10*1024*1024;function Vn(e,t,n,r){let i=ce(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(!zn(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);if(e.format===`file`){Ce(a,{force:!0});let e=re(t,n);return{kind:`removed`,trust:e.action,...e.error===void 0?{}:{trustError:e.error}}}return e.format===`toml`?Wn(a,o):e.format===`yaml`?Un(a,e.topLevelKey,o):Hn(a,e.topLevelKey,e.serverMapSubKey,o)}function Hn(e,t,n,r){let i;try{i=U(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(i,`utf-8`)>Bn)return{kind:`declined`,reason:`oversize`};let{text:a,changed:o}=ie(i,oe(t,n,r));return o?(x(e,a,{mode:I(e)}),{kind:`removed`}):{kind:`not-present`}}function Un(e,t,n){let r;try{r=U(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(r,`utf-8`)>Bn)return{kind:`declined`,reason:`oversize`};let i=r.charCodeAt(0)===65279,a=i?r.slice(1):r,o=(0,Fe.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=F(a);a.trim()===``||a.endsWith(`
11
+ `)?c.endsWith(`
12
+ `)||(c=`${c}\n`):c=c.replace(/\n+$/,``),l&&(c=c.replace(/\r\n/g,`
13
+ `).replace(/\n/g,`\r
14
+ `));let u=`${i?``:``}${c}`;return u!==r&&x(e,u,{mode:I(e)}),{kind:`removed`}}function Wn(e,t){let n=se();if(n.backend===`fallback`)return{kind:`declined`,reason:`no-native-writer`};let r;try{r=U(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}let i=r.charCodeAt(0)===65279,a=i?r.slice(1):r,o=F(a),s=a.trim()===``||a.endsWith(`
15
+ `),c;try{c=n.removeEntry(a,t)}catch{return{kind:`declined`,reason:`unparseable`}}if(!c.existed)return{kind:`not-present`};let l=c.text;s?l.endsWith(`
16
+ `)||(l=`${l}\n`):l=l.replace(/\n+$/,``),o&&(l=l.replace(/\r\n/g,`
17
+ `).replace(/\n/g,`\r
18
+ `));let u=`${i?``:``}${l}`;return u!==r&&x(e,u,{mode:I(e)}),{kind:`removed`}}function Gn(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function Kn(e,t=Date.now()){let n=a(e,t);return n===`unknown`?`—`:n}function qn(e,t,n,r){if(t.status===`missing`||t.status===`corrupt`)return null;let i=t.lock,a=t.status===`alive`&&ee(i)?{port:i.port,status:t.status,pid:i.pid,startedAt:i.startedAt,usage:r}:null;return{directory:i.worktreeRoot,server:{port:i.port,status:t.status,pid:i.pid,startedAt:i.startedAt,usage:r},ui:a,hostname:i.hostname,lockPath:t.lockPath,binary:n==null?null:p(n),command:n,isDesktop:Gn(n)}}function Jn(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:`stale`}const Yn=new Set([`running`,`desktop`,`foreign`]);function Xn(e){switch(e){case`running`:return Y.default.green(e);case`desktop`:return Y.default.blue(e);case`foreign`:return Y.default.cyan(e);case`stale`:return Y.default.yellow(e)}}function Zn(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function Qn(e){return`${Zn(e.server.usage)} | ${Zn(e.ui?.usage??null)}`}function $n(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null?`—`:String(e.ui.port)}`}function er(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=>[e.directory,$n(e),Qn(e),Jn(e),String(e.server.pid),Kn(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=Xn(Jn(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=Y.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
19
+ `)}async function tr(e={}){let t=e.discover??_,n=e.inspect??(e=>$(e,`server`)),r=e.log??(e=>console.log(e)),i=e.resolveCommand??g,a=e.resolveUsage??v,o=await t(),s=[];for(let e of o){let t=n(e),r=qn(e,t,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid));r!=null&&s.push(r)}if(e.json){let e=s.map(e=>({...e,displayStatus:Jn(e)}));r(JSON.stringify(e,null,2));return}r(er(e.all?s:s.filter(e=>Yn.has(Jn(e)))))}function nr(){return new P(`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 tr({all:t.all===!0||e===`all`,json:t.json===!0})})}async function rr(e,t=Le()){let n=$(e,`server`);if(n.status!==`alive`&&n.status!==`foreign-host`)return null;let r=D(n.lock);if(r===null)return null;try{let n=await fetch(`${r}/api/server-info`,{signal:AbortSignal.timeout(1500)});if(!n.ok)return t?.warn({lockDir:e,baseUrl:r,outcome:`http-error`,status:n.status},`stop client-probe failed`),null;let i=(await n.json())?.collabClients;return typeof i==`number`&&Number.isFinite(i)?i:(t?.warn({lockDir:e,baseUrl:r,outcome:`no-client-count`,received:typeof i},`stop client-probe failed`),null)}catch(n){return t?.warn({lockDir:e,baseUrl:r,outcome:`unreachable`,err:n},`stop client-probe failed`),null}}function ir(e,t={}){return{targets:or(e,t.isAlive??T)?[{name:`server`,pid:e.lock.pid,port:e.lock.port}]:[]}}async function ar(e){let t=e.inspect??(()=>$(e.lockDir,`server`)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=e.probeClients??rr,o=e.logger??Le(),s=ir(t(),{isAlive:e.isAlive});if(s.targets.length===0)return r(`No running open-knowledge processes.`),o?.info({lockDir:e.lockDir,targets:0},`stop found nothing to signal`),{stopped:[],failed:[],hadTargets:!1};if(e.force!==!0){let t=await a(e.lockDir,o);if(t!==null&&t>0)return i(`Not stopping: ${t} collaboration client${t===1?``:`s`} (editor window${t===1?``:`s`} or agents) still connected to the server at ${e.lockDir}. Close them, or re-run with --force to terminate anyway.`),o?.warn({lockDir:e.lockDir,clients:t,pids:s.targets.map(e=>e.pid)},`stop declined: live collaboration clients`),{stopped:[],failed:[],hadTargets:!0,declined:{clients:t}}}let c=[],l=[];for(let e of s.targets)try{n(e.pid,`SIGTERM`),c.push(e)}catch(t){l.push({target:e,error:t instanceof Error?t.message:String(t)})}return c.length>0&&r(`Stopped: ${c.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),o?.info({lockDir:e.lockDir,signalled:c.map(e=>({name:e.name,pid:e.pid,port:e.port})),failed:l.map(({target:e,error:t})=>({pid:e.pid,error:t})),forced:e.force===!0},`stop signalled processes`),l.length>0&&i(`Failed to stop: ${l.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:c,failed:l,hadTargets:!0}}function or(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function sr(e,t=T){let n=await _(),r=null;for(let i of n){let n=$(i,`server`);if(or(n,t)){if(n.lock.port===e)return i;r===null&&n.lock.pid===e&&(r=i)}}return r}async function cr(e,t){let n=await ar({lockDir:e,force:t});return(n.failed.length>0||n.declined!==void 0)&&(process.exitCode=1),n}function lr(e,t,n={}){return t===0?`Nothing was running for ${e}, and no other open-knowledge servers are running.`:`Nothing was running for ${e}. ${t} other open-knowledge server${t===1?` is`:`s are`} running${n.listingFollows===!0?``:" — run `ok ps` to list them"}.`}async function ur(e){let t=await _(),n=0;for(let r of t)r!==e&&or($(r,`server`),T)&&n++;return n}function dr(e){return new P(`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"`).option(`--force`,`Stop even when editor windows or agents are still connected to the server`).action(async(t,n)=>{let r=n.force===!0,i=t.length===0?void 0:t.join(` `);if(i===void 0){e();let t=y(process.cwd()),n=await ar({lockDir:t,force:r,log:()=>{}});if(n.hadTargets){if(n.stopped.length>0){let e=n.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}(n.failed.length>0||n.declined!==void 0)&&(process.exitCode=1)}else{let e=await ur(t);console.log(lr(process.cwd(),e,{listingFollows:e>0})),e>0&&await tr({})}return}if(i===`all`){let e=await _();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e)or($(n,`server`),T)&&(await cr(n,r),t++);t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(i)){let e=Number.parseInt(i,10),t=await sr(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}await cr(t,r);return}let a=B(We(),i),o=y(a),s=[],c=await ar({lockDir:o,force:r,log:e=>s.push(e)});if((c.failed.length>0||c.declined!==void 0)&&(process.exitCode=1),c.hadTargets)for(let e of s)console.log(e);else console.log(lr(a,await ur(o)))})}export{Ye as C,Ve as D,Ue as E,Le as O,Ke as S,We as T,q as _,Vn as a,Ge as b,Pn as c,Mn as d,$ as f,lt as g,Dn as h,nr as i,ze as k,In as l,En as m,ar as n,Nn as o,An as p,dr as r,Rn as s,rr as t,Ln as u,ct as v,Xe as w,qe as x,Qe as y};
20
+ //# sourceMappingURL=src-Dx0OEah9.mjs.map
@@ -1 +1 @@
1
- import{C as e,K as t,Ko as n,Qs as r,Uo as i,X as a,fs as o,ms as s,qo as c,ws as l,x as u}from"./src-B2bAQ64a.mjs";import{$ as d,$i as f,$n as p,$r as m,$t as h,A as g,Aa as _,Ai as v,An as y,Ar as b,At as x,B as S,Bi as C,Bn as w,Br as T,Bt as E,C as D,Ca as O,Cn as k,Cr as A,Ct as j,D as M,Da as N,Di as P,Dn as F,Dr as I,Dt as L,E as R,Ea as z,Ei as B,En as V,Er as H,Et as U,F as W,Fi as G,Fn as K,Fr as q,Ft as J,G as Y,Gi as X,Gn as Z,Gr as Q,Gt as $,H as ee,Hi as te,Hn as ne,Hr as re,Ht as ie,I as ae,Ii as oe,In as se,Ir as ce,It as le,J as ue,Ji as de,Jn as fe,Jt as pe,K as me,Ki as he,Kn as ge,Kr as _e,Kt as ve,L as ye,Li as be,Ln as xe,Lr as Se,Lt as Ce,M as we,Ma as Te,Mi as Ee,Mn as De,Mr as Oe,Mt as ke,N as Ae,Na as je,Ni as Me,Nn as Ne,Nr as Pe,Nt as Fe,O as Ie,Oa as Le,Oi as Re,On as ze,Or as Be,Ot as Ve,P as He,Pa as Ue,Pi as We,Pn as Ge,Pr as Ke,Pt as qe,Q as Je,Qi as Ye,Qn as Xe,Qr as Ze,Qt as Qe,R as $e,Ri as et,Rn as tt,Rr as nt,Rt as rt,S as it,Sa as at,Si as ot,Sn as st,Sr as ct,St as lt,T as ut,Ta as dt,Ti as ft,Tn as pt,Tr as mt,Tt as ht,U as gt,Ui as _t,Un as vt,Ur as yt,Ut as bt,V as xt,Vi as St,Vn as Ct,Vr as wt,Vt as Tt,W as Et,Wi as Dt,Wn as Ot,Wr as kt,Wt as At,X as jt,Xi as Mt,Xn as Nt,Xt as Pt,Y as Ft,Yi as It,Yn as Lt,Yt as Rt,Z as zt,Zi as Bt,Zn as Vt,Zt as Ht,_ as Ut,_a as Wt,_i as Gt,_n as Kt,_r as qt,a as Jt,aa as Yt,ai as Xt,an as Zt,ar as Qt,at as $t,b as en,ba as tn,bi as nn,bn as rn,br as an,bt as on,c as sn,ca as cn,ci as ln,cn as un,cr as dn,ct as fn,d as pn,da as mn,di as hn,dn as gn,dr as _n,dt as vn,ea as yn,ei as bn,en as xn,er as Sn,et as Cn,f as wn,fa as Tn,fi as En,fn as Dn,fr as On,ft as kn,g as An,ga as jn,gi as Mn,gn as Nn,gr as Pn,h as Fn,ha as In,hi as Ln,hn as Rn,hr as zn,i as Bn,ia as Vn,ii as Hn,in as Un,ir as Wn,it as Gn,j as Kn,ja as qn,ji as Jn,jn as Yn,jr as Xn,jt as Zn,k as Qn,ka as $n,ki as er,kn as tr,kr as nr,kt as rr,l as ir,la as ar,li as or,ln as sr,lr as cr,lt as lr,m as ur,ma as dr,mi as fr,mn as pr,mr,n as hr,na as gr,ni as _r,nn as vr,nr as yr,nt as br,o as xr,oa as Sr,oi as Cr,on as wr,or as Tr,ot as Er,p as Dr,pa as Or,pi as kr,pn as Ar,pr as jr,pt as Mr,q as Nr,qi as Pr,qn as Fr,qt as Ir,r as Lr,ra as Rr,ri as zr,rn as Br,rr as Vr,rt as Hr,s as Ur,sa as Wr,si as Gr,sn as Kr,sr as qr,st as Jr,t as Yr,ta as Xr,ti as Zr,tn as Qr,tr as $r,tt as ei,u as ti,ua as ni,ui as ri,un as ii,ur as ai,ut as oi,v as si,va as ci,vi as li,vn as ui,vr as di,w as fi,wa as pi,wi as mi,wn as hi,wr as gi,wt as _i,x as vi,xa as yi,xi as bi,xn as xi,xr as Si,xt as Ci,y as wi,ya as Ti,yi as Ei,yn as Di,yr as Oi,z as ki,zi as Ai,zn as ji,zr as Mi,zt as Ni}from"./src-IiV9Xv8E.mjs";import{C as Pi,E as Fi,T as Ii,_ as Li,b as Ri,c as zi,d as Bi,g as Vi,i as Hi,l as Ui,m as Wi,n as Gi,p as Ki,s as qi,t as Ji,u as Yi,v as Xi,w as Zi,x as Qi,y as $i}from"./fs-traced-DgX7lP1u.mjs";import{a as ea,d as ta,f as na,i as ra,l as ia,n as aa,r as oa,t as sa,u as ca}from"./logger-Dq-cRhcP.mjs";import{C as la,S as ua,_ as da,a as fa,b as pa,c as ma,d as ha,f as ga,g as _a,h as va,i as ya,l as ba,m as xa,n as Sa,o as Ca,p as wa,r as Ta,s as Ea,t as Da,u as Oa,x as ka}from"./server-lock-DKS1ePB3.mjs";export{dt as AGENT_ID_MAX_LEN,z as AGENT_ID_RE,St as AGENT_WRITE_ORIGIN,Te as AcpPermissionStore,$n as AcpRegistry,P as AcpThreadManager,ft as AgentFocusBroadcaster,mi as AgentPresenceBroadcaster,te as AgentSessionCapacityError,_t as AgentSessionManager,lt as AutoStartDisabledError,Gt as BUNDLE_IDS,li as BUNDLE_SCOPE,Ei as BUNDLE_SKILL_NAME,qt as BacklinkIndex,f as CC1Broadcaster,s as CC1_CONTRACT_VERSION,Nn as CONFIG_FILENAME,_n as CONFLICT_MARKER_RE,Ni as CURSOR_BUNDLE_PATHS_BY_PLATFORM,en as ConfigSchema,Yt as DEFAULT_CHECKPOINT_RETENTION,tt as DEFAULT_EMBEDDINGS_DIMENSIONS,pe as DEFAULT_PACK_ID,Y as DocumentDurabilityState,ji as EMBEDDINGS_API_KEY_ENV,Yr as EPHEMERAL_PROJECT_DIR_PREFIX,Ct as ExposureConsentError,_ as FEATURED_AGENT_IDS,Sr as FILE_SYSTEM_WRITER,zn as FILE_WATCHER_ORIGIN,De as FileEmbeddingsBackend,ii as GIT_PREFLIGHT_FAIL_SPAN_NAME,Wr as GIT_UPSTREAM_WRITER,je as GitDirAccessError,Ee as GitNotAvailableError,Me as GitTooOldError,j as HOCUSPOCUS_AUTH_REJECTION_REASONS,_i as HocuspocusAuthRejection,ht as HocuspocusAuthTokenSchema,hi as HomeProjectRootError,Hn as INSTALLED_AGENTS_SCHEMES,kn as JSON_SCHEMA_DIALECT_2020_12,o as LINEAGE_EPOCH_KEY,ee as LIVE_DERIVED_INDEX_DEBOUNCE_MS,Rt as LOG_MD_TEMPLATE,ke as MANAGED_RENAME_ORIGIN,Re as MAX_ACP_THREADS,Dt as MAX_AGENT_SESSIONS,v as MCP_CONNECTION_ID_HEADER,i as MCP_SERVER_NAME,X as MIN_EVICTABLE_IDLE_MS,We as MIN_GIT_VERSION,me as MISSING_OK_CONFIG_MESSAGE,Ue as MalformedGitPointerError,Gn as McpLogger,Nr as MissingOkConfigError,Pr as OBSERVER_SYNC_ORIGIN,Kt as OK_OKIGNORE_TEMPLATE,nn as ONBOARDING_BUNDLE_IDS,n as ORPHAN_MODES,r as PROTOCOL_VERSION,sa as PinoLogger,ba as ProcessLockCollisionError,wn as ProjectGitInitError,Fe as ROLLBACK_ORIGIN,ui as ROOT_GITIGNORE_TEMPLATE,pa as RUNTIME_VERSION,cn as SERVICE_WRITER,ce as SKILL_INSTALL_EVENTS_FILE_REL,t as SKILL_STATE_TARGETS,Pt as STARTER_FOLDERS,Ht as STARTER_FOLDER_FRONTMATTER_FILENAME,Qe as STARTER_PACKS,h as STARTER_PACK_IDS,xn as STARTER_TEMPLATES,Qn as STATE_MANIFEST_FILENAME,ka as STATE_SCHEMA_VERSION,l as SYSTEM_DOC_NAME,wr as SeedPrerequisiteError,Kr as SeedRootDirError,Da as ServerLockCollisionError,hr as SingleFileNotAFileError,Lr as SingleFileNotFoundError,Bn as SingleFileNotMarkdownError,Jt as SingleFileProjectOverrideError,g as StateManifestError,Pn as TagIndex,bi as USER_GLOBAL_BUNDLE_IDS,qe as __getShowAllWalkStatsForTesting,J as __resetShowAllWalkStatsForTesting,Oa as acquireProcessLock,Sa as acquireServerLock,he as applyAgentMarkdownWrite,cr as applyExternalChange,Ir as applySeed,Kn as assertCompatibleStateManifest,G as assertGitAvailable,Vt as assertNeverDiskEvent,pt as assertNotHomeProjectRoot,B as attachAcpThreadSocket,on as attachCollabClientCounter,Ci as attachIdleShutdown,vi as bootServer,ct as buildAndOpenSkill,Di as buildConfigYmlContent,d as buildExecResult,ne as buildIngressPolicy,er as buildOkMcpStdioCommand,fr as buildSkillZip,Qr as buildStarterFolderFrontmatterYaml,ar as buildWipTree,ot as bundleSkillMdPath,Ne as canonicalProjectKey,V as canonicalizeForCompare,Xe as classifyEvents,Ji as classifyFsPath,Ge as clearAllEmbeddingsKeys,Gr as clearContributors,vr as coercePackId,u as colorFromSeed,ni as commitUpstreamImport,mn as commitWip,Tn as commitWipFromTree,oe as compareSemver,Mi as composeEffectiveLinterConfig,T as composeFrontmatterSchemasConfig,On as containsConflictMarkers,p as contentHash,ln as contributorCount,$e as countShadowObjects,ki as countStaleAgentWipRefs,S as countWipRefs,le as createApiExtension,Zn as createAssetServeMiddleware,Ft as createCollaborationHost,Ze as createContentFilter,m as createContentFilterAsync,K as createEmbeddingsSecretStore,xr as createEphemeralProjectDir,ai as createExternalChangeHandler,Fn as createFileLogger,gt as createLiveDerivedIndexExtension,zt as createMcpHttpHandler,Xt as createOsProbe,ye as createPersistenceExtension,R as createServer,W as createServerObserverExtension,Mt as createStreamingErrorWriter,aa as createTestLogger,se as describeStoredEmbeddingsKey,wi as detectClaudeDesktopPresence,be as detectGit,we as detectProjectShape,A as detectUserSkillHosts,Jr as discoverLockDirs,yt as discoverMarkdownlintConfig,gn as emitPreflightFailureSpan,Cn as encodeDocName,ei as encodeFolderRoute,br as encodeSkillRoute,Dr as ensureProjectGit,rn as ensureProjectSkillGitignore,Bt as errorResponse,Sn as evictStaleTrackerEntries,Ce as extractHeadings,fn as extractOkBinaryPath,di as extractWikiLinksFromMarkdown,et as fallbackPaths,ur as findEnclosingGitRoot,bn as findEnclosingProjectRoot,kt as findNativeMarkdownlintFile,An as flushFileLogger,U as formatAuthRejectionWire,or as formatContributors,ri as formatContributorsFrom,$ as formatPackRationale,Or as gcCheckpointRefs,$t as getCurrentMcpLogger,vt as getIngressContext,Oi as getLocalDir,Ut as getLogFilePath,oa as getLogger,si as getLogsDir,da as getMachineId,$i as getMeter,tn as getMetrics,Ri as getTracer,yi as handleCollabSocketError,E as handleSpawnCursor,Ot as hasForwardingHeaders,xt as hasGcLogLatch,e as iconFromClientName,at as incrementCollabSocketFilteredError,O as incrementServerObserverFire,xi as initContent,dr as initShadowRepo,Qi as initTelemetry,D as initToleranceTelemetryWriter,Mr as installJsonSchemaDialect,vn as installPrettyZodErrors,ra as installTestLoggers,gi as installUserSkill,Nt as isAllowedApiOrigin,fe as isAllowedWorkspaceHostHeader,yn as isConfigDoc,L as isHocuspocusAuthRejectionReason,F as isHomeDir,Z as isHostAdmitted,Br as isKnownPackId,Xr as isLinkIndexExcludedDoc,Lt as isLoopbackAddress,gr as isManagedArtifactDoc,ge as isOriginAdmitted,c as isOrphanMode,de as isPairedWriteOrigin,Tt as isPathWithinDir,Fr as isPeerAdmitted,ua as isProcessAlive,Zr as isProjectRoot,Rr as isReservedForUserTree,$r as isSelfWrite,Vn as isSystemDoc,fi as isToleranceTelemetryEnabled,la as isValidLockPid,yr as lastKnownHash,In as listRescueCheckpoints,Un as listStarterPacks,qn as loadCustomAgents,ae as loadPrincipal,Ta as lockAdvertisesUi,ha as lockBaseUrl,ga as lockFilePath,ea as loggerFactory,ze as loginShapedUserinfoUser,ia as logsCurrentPath,ca as logsPreviousPath,xe as makeLazyEmbeddingsKeyStore,ya as markServerLockDraining,ue as mountMcpAndApi,Gi as normalizeFsPath,tr as originGitHubHost,st as packageVersionMajorMinor,Ve as parseAuthRejectionWire,Ai as parseGitVersion,rr as parseHocuspocusAuthToken,jt as parseKeepaliveConnectionId,Vr as pathToDocName,ve as planSeed,Ur as prepareSingleFileOpen,lr as processCommand,oi as processUsage,I as readAllTargets,Be as readBundleDecision,Q as readOwnNativeRules,wa as readProcessLock,xa as readProcessLockDetailed,Et as readProjectHeadState,Yn as readProjectLocalSemanticConfig,fa as readServerLock,nr as readServerPackageVersion,b as readSkillInstallStateSnapshot,Ae as readStateManifest,Xn as readTargetRecordedAt,Oe as readTargetVersion,jr as reconcile,hn as recordContributor,Se as recordSkillInstallEvent,Dn as redactShareSubprocessStderr,Je as registerAllTools,Wn as registerWrite,va as releaseProcessLock,Ca as releaseServerLock,Qt as removeLastKnownHash,H as reportSkillInstall,pi as resetMetrics,mt as resolveBuiltinSkillHosts,a as resolveBundleEnabled,Ln as resolveBundledSkillDir,an as resolveContentDir,ie as resolveCursorBinaryDefault,bt as resolveCursorSpawnInvocation,wt as resolveEffectiveLinterConfig,w as resolveEmbeddingsCredential,Ie as resolveGitHubAccountFromUrl,Si as resolveLockDir,re as resolveNativeConfigForDoc,_e as resolveNativeMarkdownlintConfig,Zt as resolvePack,ti as resolvePackageVersion,q as resolveSkillInstallReportSettings,Hr as resolveUiInfo,En as restoreContributors,it as restoreLifecycleFromConflictsJson,_r as rewriteMarkdownLinksForDocumentRename,zr as rewriteWikiLinksForDocumentRename,Ar as runAuthReposSubprocess,pr as runAuthStatusSubprocess,un as runCloneSubprocess,Rn as runDeviceFlowSubprocess,Er as runWithMcpLogger,Cr as safeContentPath,rt as safeSubdir,jn as safetyCheckpoint,y as sameGitHubLogin,Jn as sanitizeClientName,Wt as saveInMemoryCheckpoint,ci as saveVersion,x as seedBasenameIndex,sn as seedEphemeralProjectDir,ir as serializeError,Pi as setActiveSpanAttributes,It as setupServerObservers,Ti as shadowGit,Zi as shutdownTelemetry,ta as spansCurrentPath,na as spansPreviousPath,At as spawnDetached,mr as splitMarkdownBlocks,Tr as startWatcher,Ye as streamingProblemEvent,kr as swapContributors,ut as teardownToleranceTelemetryWriter,N as toBroadcasterKey,Hi as tracedAppendFileSync,qi as tracedLinkSync,zi as tracedMkdir,Ui as tracedMkdirSync,Yi as tracedRename,Bi as tracedRenameSync,Ki as tracedRmSync,Wi as tracedRmdirSync,Vi as tracedUnlinkSync,Li as tracedWriteFile,Xi as tracedWriteFileSync,M as trustSystemCertificates,pn as untrackTrackedProjectSkillProjection,qr as updateLastKnownHash,_a as updateProcessLockPort,Ea as updateServerLockPort,Le as validateAgentId,sr as validateCloneInputs,Mn as validateSkillZip,ma as waitForServerLockDrain,C as withHiddenWindowsConsole,Ii as withSpan,Fi as withSpanSync,Pe as writeBundleDecision,nt as writeMarkdownlintRule,k as writeRootGitignoreForNewRepo,He as writeStateManifest,Ke as writeTargetVersion,dn as writeTracker};
1
+ import{C as e,Es as t,Go as n,J as r,Jo as i,Q as a,T as o,Yo as s,ec as c,gs as l,ms as u}from"./src-BSHNcVXn.mjs";import{$ as d,$i as f,$n as p,$r as m,$t as h,A as g,Aa as _,Ai as v,An as y,Ar as b,At as x,B as S,Bi as C,Bn as w,Br as T,Bt as E,C as D,Ca as O,Cn as k,Cr as A,Ct as j,D as M,Da as N,Di as P,Dn as F,Dr as I,Dt as L,E as R,Ea as z,Ei as B,En as V,Er as H,Et as U,F as W,Fi as G,Fn as K,Fr as q,Ft as J,G as Y,Gi as X,Gn as Z,Gr as Q,Gt as $,H as ee,Hi as te,Hn as ne,Hr as re,Ht as ie,I as ae,Ii as oe,In as se,Ir as ce,It as le,J as ue,Ji as de,Jn as fe,Jt as pe,K as me,Ki as he,Kn as ge,Kr as _e,Kt as ve,L as ye,Li as be,Ln as xe,Lr as Se,Lt as Ce,M as we,Ma as Te,Mi as Ee,Mn as De,Mr as Oe,Mt as ke,N as Ae,Na as je,Ni as Me,Nn as Ne,Nr as Pe,Nt as Fe,O as Ie,Oa as Le,Oi as Re,On as ze,Or as Be,Ot as Ve,P as He,Pa as Ue,Pi as We,Pn as Ge,Pr as Ke,Pt as qe,Q as Je,Qi as Ye,Qn as Xe,Qr as Ze,Qt as Qe,R as $e,Ri as et,Rn as tt,Rr as nt,Rt as rt,S as it,Sa as at,Si as ot,Sn as st,Sr as ct,St as lt,T as ut,Ta as dt,Ti as ft,Tn as pt,Tr as mt,Tt as ht,U as gt,Ui as _t,Un as vt,Ur as yt,Ut as bt,V as xt,Vi as St,Vn as Ct,Vr as wt,Vt as Tt,W as Et,Wi as Dt,Wn as Ot,Wr as kt,Wt as At,X as jt,Xi as Mt,Xn as Nt,Xt as Pt,Y as Ft,Yi as It,Yn as Lt,Yt as Rt,Z as zt,Zi as Bt,Zn as Vt,Zt as Ht,_ as Ut,_a as Wt,_i as Gt,_n as Kt,_r as qt,a as Jt,aa as Yt,ai as Xt,an as Zt,ar as Qt,at as $t,b as en,ba as tn,bi as nn,bn as rn,br as an,bt as on,c as sn,ca as cn,ci as ln,cn as un,cr as dn,ct as fn,d as pn,da as mn,di as hn,dn as gn,dr as _n,dt as vn,ea as yn,ei as bn,en as xn,er as Sn,et as Cn,f as wn,fa as Tn,fi as En,fn as Dn,fr as On,ft as kn,g as An,ga as jn,gi as Mn,gn as Nn,gr as Pn,h as Fn,ha as In,hi as Ln,hn as Rn,hr as zn,i as Bn,ia as Vn,ii as Hn,in as Un,ir as Wn,it as Gn,j as Kn,ja as qn,ji as Jn,jn as Yn,jr as Xn,jt as Zn,k as Qn,ka as $n,ki as er,kn as tr,kr as nr,kt as rr,l as ir,la as ar,li as or,ln as sr,lr as cr,lt as lr,m as ur,ma as dr,mi as fr,mn as pr,mr,n as hr,na as gr,ni as _r,nn as vr,nr as yr,nt as br,o as xr,oa as Sr,oi as Cr,on as wr,or as Tr,ot as Er,p as Dr,pa as Or,pi as kr,pn as Ar,pr as jr,pt as Mr,q as Nr,qi as Pr,qn as Fr,qt as Ir,r as Lr,ra as Rr,ri as zr,rn as Br,rr as Vr,rt as Hr,s as Ur,sa as Wr,si as Gr,sn as Kr,sr as qr,st as Jr,t as Yr,ta as Xr,ti as Zr,tn as Qr,tr as $r,tt as ei,u as ti,ua as ni,ui as ri,un as ii,ur as ai,ut as oi,v as si,va as ci,vi as li,vn as ui,vr as di,w as fi,wa as pi,wi as mi,wn as hi,wr as gi,wt as _i,x as vi,xa as yi,xi as bi,xn as xi,xr as Si,xt as Ci,y as wi,ya as Ti,yi as Ei,yn as Di,yr as Oi,z as ki,zi as Ai,zn as ji,zr as Mi,zt as Ni}from"./src-BxqApSys.mjs";import{C as Pi,E as Fi,T as Ii,_ as Li,b as Ri,c as zi,d as Bi,g as Vi,i as Hi,l as Ui,m as Wi,n as Gi,p as Ki,s as qi,t as Ji,u as Yi,v as Xi,w as Zi,x as Qi,y as $i}from"./fs-traced-DgX7lP1u.mjs";import{a as ea,d as ta,f as na,i as ra,l as ia,n as aa,r as oa,t as sa,u as ca}from"./logger-Dq-cRhcP.mjs";import{C as la,S as ua,_ as da,a as fa,b as pa,c as ma,d as ha,f as ga,g as _a,h as va,i as ya,l as ba,m as xa,n as Sa,o as Ca,p as wa,r as Ta,s as Ea,t as Da,u as Oa,x as ka}from"./server-lock-DMUPUL90.mjs";export{dt as AGENT_ID_MAX_LEN,z as AGENT_ID_RE,St as AGENT_WRITE_ORIGIN,Te as AcpPermissionStore,$n as AcpRegistry,P as AcpThreadManager,ft as AgentFocusBroadcaster,mi as AgentPresenceBroadcaster,te as AgentSessionCapacityError,_t as AgentSessionManager,lt as AutoStartDisabledError,Gt as BUNDLE_IDS,li as BUNDLE_SCOPE,Ei as BUNDLE_SKILL_NAME,qt as BacklinkIndex,f as CC1Broadcaster,l as CC1_CONTRACT_VERSION,Nn as CONFIG_FILENAME,_n as CONFLICT_MARKER_RE,Ni as CURSOR_BUNDLE_PATHS_BY_PLATFORM,en as ConfigSchema,Yt as DEFAULT_CHECKPOINT_RETENTION,tt as DEFAULT_EMBEDDINGS_DIMENSIONS,pe as DEFAULT_PACK_ID,Y as DocumentDurabilityState,ji as EMBEDDINGS_API_KEY_ENV,Yr as EPHEMERAL_PROJECT_DIR_PREFIX,Ct as ExposureConsentError,_ as FEATURED_AGENT_IDS,Sr as FILE_SYSTEM_WRITER,zn as FILE_WATCHER_ORIGIN,De as FileEmbeddingsBackend,ii as GIT_PREFLIGHT_FAIL_SPAN_NAME,Wr as GIT_UPSTREAM_WRITER,je as GitDirAccessError,Ee as GitNotAvailableError,Me as GitTooOldError,j as HOCUSPOCUS_AUTH_REJECTION_REASONS,_i as HocuspocusAuthRejection,ht as HocuspocusAuthTokenSchema,hi as HomeProjectRootError,Hn as INSTALLED_AGENTS_SCHEMES,kn as JSON_SCHEMA_DIALECT_2020_12,u as LINEAGE_EPOCH_KEY,ee as LIVE_DERIVED_INDEX_DEBOUNCE_MS,Rt as LOG_MD_TEMPLATE,ke as MANAGED_RENAME_ORIGIN,Re as MAX_ACP_THREADS,Dt as MAX_AGENT_SESSIONS,v as MCP_CONNECTION_ID_HEADER,n as MCP_SERVER_NAME,X as MIN_EVICTABLE_IDLE_MS,We as MIN_GIT_VERSION,me as MISSING_OK_CONFIG_MESSAGE,Ue as MalformedGitPointerError,Gn as McpLogger,Nr as MissingOkConfigError,Pr as OBSERVER_SYNC_ORIGIN,Kt as OK_OKIGNORE_TEMPLATE,nn as ONBOARDING_BUNDLE_IDS,i as ORPHAN_MODES,c as PROTOCOL_VERSION,sa as PinoLogger,ba as ProcessLockCollisionError,wn as ProjectGitInitError,Fe as ROLLBACK_ORIGIN,ui as ROOT_GITIGNORE_TEMPLATE,pa as RUNTIME_VERSION,cn as SERVICE_WRITER,ce as SKILL_INSTALL_EVENTS_FILE_REL,r as SKILL_STATE_TARGETS,Pt as STARTER_FOLDERS,Ht as STARTER_FOLDER_FRONTMATTER_FILENAME,Qe as STARTER_PACKS,h as STARTER_PACK_IDS,xn as STARTER_TEMPLATES,Qn as STATE_MANIFEST_FILENAME,ka as STATE_SCHEMA_VERSION,t as SYSTEM_DOC_NAME,wr as SeedPrerequisiteError,Kr as SeedRootDirError,Da as ServerLockCollisionError,hr as SingleFileNotAFileError,Lr as SingleFileNotFoundError,Bn as SingleFileNotMarkdownError,Jt as SingleFileProjectOverrideError,g as StateManifestError,Pn as TagIndex,bi as USER_GLOBAL_BUNDLE_IDS,qe as __getShowAllWalkStatsForTesting,J as __resetShowAllWalkStatsForTesting,Oa as acquireProcessLock,Sa as acquireServerLock,he as applyAgentMarkdownWrite,cr as applyExternalChange,Ir as applySeed,Kn as assertCompatibleStateManifest,G as assertGitAvailable,Vt as assertNeverDiskEvent,pt as assertNotHomeProjectRoot,B as attachAcpThreadSocket,on as attachCollabClientCounter,Ci as attachIdleShutdown,vi as bootServer,ct as buildAndOpenSkill,Di as buildConfigYmlContent,d as buildExecResult,ne as buildIngressPolicy,er as buildOkMcpStdioCommand,fr as buildSkillZip,Qr as buildStarterFolderFrontmatterYaml,ar as buildWipTree,ot as bundleSkillMdPath,Ne as canonicalProjectKey,V as canonicalizeForCompare,Xe as classifyEvents,Ji as classifyFsPath,Ge as clearAllEmbeddingsKeys,Gr as clearContributors,vr as coercePackId,e as colorFromSeed,ni as commitUpstreamImport,mn as commitWip,Tn as commitWipFromTree,oe as compareSemver,Mi as composeEffectiveLinterConfig,T as composeFrontmatterSchemasConfig,On as containsConflictMarkers,p as contentHash,ln as contributorCount,$e as countShadowObjects,ki as countStaleAgentWipRefs,S as countWipRefs,le as createApiExtension,Zn as createAssetServeMiddleware,Ft as createCollaborationHost,Ze as createContentFilter,m as createContentFilterAsync,K as createEmbeddingsSecretStore,xr as createEphemeralProjectDir,ai as createExternalChangeHandler,Fn as createFileLogger,gt as createLiveDerivedIndexExtension,zt as createMcpHttpHandler,Xt as createOsProbe,ye as createPersistenceExtension,R as createServer,W as createServerObserverExtension,Mt as createStreamingErrorWriter,aa as createTestLogger,se as describeStoredEmbeddingsKey,wi as detectClaudeDesktopPresence,be as detectGit,we as detectProjectShape,A as detectUserSkillHosts,Jr as discoverLockDirs,yt as discoverMarkdownlintConfig,gn as emitPreflightFailureSpan,Cn as encodeDocName,ei as encodeFolderRoute,br as encodeSkillRoute,Dr as ensureProjectGit,rn as ensureProjectSkillGitignore,Bt as errorResponse,Sn as evictStaleTrackerEntries,Ce as extractHeadings,fn as extractOkBinaryPath,di as extractWikiLinksFromMarkdown,et as fallbackPaths,ur as findEnclosingGitRoot,bn as findEnclosingProjectRoot,kt as findNativeMarkdownlintFile,An as flushFileLogger,U as formatAuthRejectionWire,or as formatContributors,ri as formatContributorsFrom,$ as formatPackRationale,Or as gcCheckpointRefs,$t as getCurrentMcpLogger,vt as getIngressContext,Oi as getLocalDir,Ut as getLogFilePath,oa as getLogger,si as getLogsDir,da as getMachineId,$i as getMeter,tn as getMetrics,Ri as getTracer,yi as handleCollabSocketError,E as handleSpawnCursor,Ot as hasForwardingHeaders,xt as hasGcLogLatch,o as iconFromClientName,at as incrementCollabSocketFilteredError,O as incrementServerObserverFire,xi as initContent,dr as initShadowRepo,Qi as initTelemetry,D as initToleranceTelemetryWriter,Mr as installJsonSchemaDialect,vn as installPrettyZodErrors,ra as installTestLoggers,gi as installUserSkill,Nt as isAllowedApiOrigin,fe as isAllowedWorkspaceHostHeader,yn as isConfigDoc,L as isHocuspocusAuthRejectionReason,F as isHomeDir,Z as isHostAdmitted,Br as isKnownPackId,Xr as isLinkIndexExcludedDoc,Lt as isLoopbackAddress,gr as isManagedArtifactDoc,ge as isOriginAdmitted,s as isOrphanMode,de as isPairedWriteOrigin,Tt as isPathWithinDir,Fr as isPeerAdmitted,ua as isProcessAlive,Zr as isProjectRoot,Rr as isReservedForUserTree,$r as isSelfWrite,Vn as isSystemDoc,fi as isToleranceTelemetryEnabled,la as isValidLockPid,yr as lastKnownHash,In as listRescueCheckpoints,Un as listStarterPacks,qn as loadCustomAgents,ae as loadPrincipal,Ta as lockAdvertisesUi,ha as lockBaseUrl,ga as lockFilePath,ea as loggerFactory,ze as loginShapedUserinfoUser,ia as logsCurrentPath,ca as logsPreviousPath,xe as makeLazyEmbeddingsKeyStore,ya as markServerLockDraining,ue as mountMcpAndApi,Gi as normalizeFsPath,tr as originGitHubHost,st as packageVersionMajorMinor,Ve as parseAuthRejectionWire,Ai as parseGitVersion,rr as parseHocuspocusAuthToken,jt as parseKeepaliveConnectionId,Vr as pathToDocName,ve as planSeed,Ur as prepareSingleFileOpen,lr as processCommand,oi as processUsage,I as readAllTargets,Be as readBundleDecision,Q as readOwnNativeRules,wa as readProcessLock,xa as readProcessLockDetailed,Et as readProjectHeadState,Yn as readProjectLocalSemanticConfig,fa as readServerLock,nr as readServerPackageVersion,b as readSkillInstallStateSnapshot,Ae as readStateManifest,Xn as readTargetRecordedAt,Oe as readTargetVersion,jr as reconcile,hn as recordContributor,Se as recordSkillInstallEvent,Dn as redactShareSubprocessStderr,Je as registerAllTools,Wn as registerWrite,va as releaseProcessLock,Ca as releaseServerLock,Qt as removeLastKnownHash,H as reportSkillInstall,pi as resetMetrics,mt as resolveBuiltinSkillHosts,a as resolveBundleEnabled,Ln as resolveBundledSkillDir,an as resolveContentDir,ie as resolveCursorBinaryDefault,bt as resolveCursorSpawnInvocation,wt as resolveEffectiveLinterConfig,w as resolveEmbeddingsCredential,Ie as resolveGitHubAccountFromUrl,Si as resolveLockDir,re as resolveNativeConfigForDoc,_e as resolveNativeMarkdownlintConfig,Zt as resolvePack,ti as resolvePackageVersion,q as resolveSkillInstallReportSettings,Hr as resolveUiInfo,En as restoreContributors,it as restoreLifecycleFromConflictsJson,_r as rewriteMarkdownLinksForDocumentRename,zr as rewriteWikiLinksForDocumentRename,Ar as runAuthReposSubprocess,pr as runAuthStatusSubprocess,un as runCloneSubprocess,Rn as runDeviceFlowSubprocess,Er as runWithMcpLogger,Cr as safeContentPath,rt as safeSubdir,jn as safetyCheckpoint,y as sameGitHubLogin,Jn as sanitizeClientName,Wt as saveInMemoryCheckpoint,ci as saveVersion,x as seedBasenameIndex,sn as seedEphemeralProjectDir,ir as serializeError,Pi as setActiveSpanAttributes,It as setupServerObservers,Ti as shadowGit,Zi as shutdownTelemetry,ta as spansCurrentPath,na as spansPreviousPath,At as spawnDetached,mr as splitMarkdownBlocks,Tr as startWatcher,Ye as streamingProblemEvent,kr as swapContributors,ut as teardownToleranceTelemetryWriter,N as toBroadcasterKey,Hi as tracedAppendFileSync,qi as tracedLinkSync,zi as tracedMkdir,Ui as tracedMkdirSync,Yi as tracedRename,Bi as tracedRenameSync,Ki as tracedRmSync,Wi as tracedRmdirSync,Vi as tracedUnlinkSync,Li as tracedWriteFile,Xi as tracedWriteFileSync,M as trustSystemCertificates,pn as untrackTrackedProjectSkillProjection,qr as updateLastKnownHash,_a as updateProcessLockPort,Ea as updateServerLockPort,Le as validateAgentId,sr as validateCloneInputs,Mn as validateSkillZip,ma as waitForServerLockDrain,C as withHiddenWindowsConsole,Ii as withSpan,Fi as withSpanSync,Pe as writeBundleDecision,nt as writeMarkdownlintRule,k as writeRootGitignoreForNewRepo,He as writeStateManifest,Ke as writeTargetVersion,dn as writeTracker};
@@ -0,0 +1 @@
1
+ import{S as e,m as t,p as n,r}from"./start-sZmCG1Do.mjs";export{r as bootStartServer,n as resolveBundledReactShellDir,t as resolveHost,e as startCommand};
@@ -1,5 +1,5 @@
1
- import{Gs as e,Is as t,Us as n,Ws as r,zs as i}from"./src-B2bAQ64a.mjs";import{L as a}from"./sleep-zea4v2sB.mjs";import{Ln as o,s,t as c,ti as l}from"./src-IiV9Xv8E.mjs";import{A as u,L as d}from"./fs-traced-DgX7lP1u.mjs";import{r as f}from"./server-lock-DKS1ePB3.mjs";import{C as p,S as m,x as h}from"./resolve-project-root-Cc2d51uk.mjs";import{c as g,f as _,g as v,l as y,n as b,o as x,p as S,r as C,s as w,t as T}from"./acp-harness-probe-VsY2MJm_.mjs";import{y as E}from"./init-CLtTEqbD.mjs";import{n as D}from"./constants-Dzh7neNo.mjs";import{spawn as O}from"node:child_process";import{basename as k,dirname as A,resolve as j}from"node:path";import{existsSync as M,realpathSync as N}from"node:fs";import{tmpdir as P}from"node:os";import{rm as F}from"node:fs/promises";import{setTimeout as I}from"node:timers/promises";function L(e,t){return e.bind?.[0]??t.HOST??`127.0.0.1`}function R(e){if(e===`server`)return e;throw new m(`--only must be 'server'`)}function z(e=M){let t=import.meta.dirname??new URL(`.`,import.meta.url).pathname;return[j(t,`public`),j(t,`../../app/dist`),j(t,`../../../app/dist`)].find(t=>e(t))}function B(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 V(e){if(e===`off`)return`off`;if(!a.test(e))throw new m(`--idle-shutdown must be 'off' or a duration like 90s, 30m, 2h`);return e}function H(e){return e===`localhost`||e===`::1`||e===`[::1]`||e.startsWith(`127.`)}function U(e){return!e.flagBindSet&&!e.okBindSet&&e.hostEnvSet&&e.fileBindCount>1}function W(e){return!e.openBrowser||e.ephemeral||e.only===`server`||!e.servesUi?!1:(e.explicitOn||H(e.host))&&e.isTTY}function ee(e,t){let n;try{n=new URL(t)}catch{throw new m(`${e} is not a valid URL: ${t}`)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new m(`${e} must be an http(s) origin (got: ${t})`);return t}function G(e){return ee(`--external-url`,e)}function K(e){let t=k(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var q=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}},J=class extends Error{projectDir;constructor(e){super(`--project-dir must be a throwaway ${c}* directory under the OS temp dir. Refusing to write ephemeral session state into ${e}. Omit --project-dir to let ok start create (and clean up) its own.`),this.name=`EphemeralProjectDirNotThrowawayError`,this.projectDir=e}};function Y(e,t={}){let n=t.tmpdirFn??P,r=t.realpathFn??N,i=e=>{try{return r(e)}catch(t){return t.code===`ENOENT`?j(e):null}},a=j(e),o;try{o=r(a)}catch(e){if(e.code===`ENOENT`){let e=i(A(a));o=e===null?null:j(e,k(a))}else o=null}if(o===null)return!1;let s=i(n());return s===null?!1:A(o)===s&&k(o).startsWith(`ok-ephemeral-`)}function X(e,t,n=e=>F(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{if(Y(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 ${c}* dirs under the OS temp dir are removed on ephemeral teardown\n`)}}}function Z(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{config:t,cwd:n,host:r}=e,i=e.skipAutoInit??!1,a=e.idleThresholdMs===void 0?18e5:e.idleThresholdMs,{existsSync:c,mkdirSync:u}=await import(`node:fs`),{basename:d,dirname:f,resolve:p}=await import(`node:path`),{bootServer:m,createEphemeralProjectDir:h,getLogger:g,resolveContentDir:y,resolveLockDir:x,seedEphemeralProjectDir:w,waitForServerLockDrain:D}=await import(`./src-BRvdXeYI.mjs`),O=e.log??g(`start`),k=e.singleFile!==void 0,A=k?s(e.singleFile).canonicalFilePath:void 0,j=A?f(A):void 0,M=A?d(A):void 0,N,P=!1;if(j!==void 0)if(e.projectDir!==void 0){if(N=e.projectDir,!Y(N))throw new J(N);c(p(N,`.ok`,`config.yml`))||w(N,j)}else N=h(j),P=!0;let I=async()=>{if(!(!P||N===void 0)){if(!Y(N)){O.warn({ephemeralProjectDir:N},`[start] refusing to reap self-provisioned ephemeral dir: no longer resolves to an ok-ephemeral-* temp dir`);return}try{await F(N,{recursive:!0,force:!0})}catch(e){O.warn({err:e,ephemeralProjectDir:N},`[start] failed to reap self-provisioned ephemeral temp dir`)}}},L=N;if(!k){if(!i&&!l(n))throw new q(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&O.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-DwXnnCf1.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-BauldshL.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-Cd0ulalA.mjs`)).repairSkills)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let R=j??y(t,n);!k&&!c(R)&&(u(R,{recursive:!0}),O.info({contentDir:R},`Created content directory`));let z=v(),B=o(),V;try{{let e=x(N??n),t=Date.now(),r=await D(e);r!==`no-drain`&&O.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`)}V=await m({config:t,contentDir:R,projectDir:N??n,contentRoot:k?void 0:t.content.dir,port:e.port,host:r,quiet:!1,detectGh:_,detectGhAccounts:S,tokenStore:z,embeddingsKeyStore:B,mcpTomlEditor:E(),...k?{ephemeral:!0,singleDocRelPath:M,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>T(e,t),probePiAcpBridge:e=>C(e),ensurePiAcpBridge:e=>b(e),idleShutdownMs:a,...e.serverRuntime===void 0?{}:{serverRuntime:e.serverRuntime},...e.bind===void 0?{}:{bind:e.bind},skipAutoInit:!0,idleShutdownHandler:t=>{let n=t;return Z(L===void 0?n:X(n,L),{log:O,exit:e.idleExit})},log:O,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}})}catch(e){throw await I(),e}let H=V.destroy,U=P?async()=>{try{await H()}finally{await I()}}:H;return{httpServer:V.httpServer,destroy:U,lockDir:V.lockDir,contentDir:R,port:V.port,ready:V.ready,degraded:V.degraded}}function $(e,t,n=()=>d({absPath:u(`user`,process.cwd()),sideline:!1,warn:()=>{}}).value){return t===void 0?e:n()}function te(e){if(e===`browser`||e===`app`)return e;throw new m(`--mode must be 'browser' or 'app'`)}function ne(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function re(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 ie(a,o){let s=$(a,o.singleFile),c=ne(process.env);c!==null&&(process.env.OK_CONSOLE_LEVEL=c);let{renderBanner:l}=await import(`./banner-B14xalho.mjs`),{accent:u,dim:d,error:f,warning:p}=await import(`./colors-CpP5E4wV.mjs`),m=process.cwd();process.title=K(m);let h;try{h=e(process.env)}catch(e){throw e instanceof n&&(console.error(f(e.message)),process.exit(78)),e}for(let e of h.diagnostics)console.warn(p(`[config] ${e.message}`));let g=r(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=i(g),S=v??(_||b===void 0?[...x.bind]:[b]);U({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=i(r(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(`
2
- `)))}let O=o.port===void 0?void 0:Number(o.port),k=h.overrides.find(e=>e.envVar===`PORT`)?.value,A=O??k??s.server?.port,j=B({explicitDir:o.reactShellDistDir,only:o.only,findBundledDir:z}),M=j.dir;j.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 N;try{N=await Q({config:s,cwd:m,host:C,port:A,bind:w,...o.serveContentAssets===void 0?{}:{serveContentAssets:o.serveContentAssets},...M?{reactShellDistDir:M}:{},idleThresholdMs:t(o.idleShutdown??E.idleShutdown),serverRuntime:E,...o.singleFile?{singleFile:o.singleFile}:{},...o.projectDir?{projectDir:o.projectDir}:{}})}catch(e){e instanceof q&&(console.error(f(e.message)),process.exit(1)),e instanceof J&&(console.error(f(e.message)),process.exit(1));let t=await import(`./src-BRvdXeYI.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&&(console.error(f(e.message)),process.exit(1)),se(e,t)){let e=t.resolveLockDir(m),n=null;try{n=await ae({readServerLock:()=>t.readServerLock(e),now:Date.now,sleep:e=>I(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]=oe(n);console.log(u(e));for(let e of t)console.log(d(e));process.exit(0)}}let n=ce(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 P=!1,F=async e=>{if(P)return;P=!0;let[t,...n]=re(e);console.log(u(`\n${t}`));for(let e of n)console.log(d(` ${e}`));try{await N.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`,()=>{F(`SIGINT`)}),process.once(`SIGTERM`,()=>{F(`SIGTERM`)});let L=`http://${C.includes(`:`)&&!C.startsWith(`[`)?`[${C}]`:C}:${N.port}`,R=C===`0.0.0.0`||C===`::`?`http://0.0.0.0:${N.port}`:void 0,V=L;console.log(l({name:`open-knowledge`,version:D,localUrl:V,networkUrl:R,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let H={"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`};N.ready.then(async()=>{if(N.degraded.length>0){console.log();for(let e of N.degraded){let t=H[e]??`${e} (check server logs for details)`;console.warn(` ${p(`⚠`)} ${p(e)}: ${d(t)}`)}console.log()}if(W({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:M!==void 0})){let{openBrowser:e}=await import(`./open-browser-7DkBQF9D.mjs`);e(V)}}).catch(e=>{console.error(` ${f(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}async function ae(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:f(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 oe(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 `ok stop` first if you want a fresh server."]}function se(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function ce(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=n.readServerLock(n.resolveLockDir(t));return e&&e.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`."}catch{return null}}function le(e){return new h(`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)`,R).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)`,V).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,te).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 p(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).hideHelp()).addOption(new p(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).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).`,G).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{Gs as e,Ks as t,Rs as n,Vs as r,qs as i}from"./src-BSHNcVXn.mjs";import{L as a}from"./sleep-zea4v2sB.mjs";import{Ln as o,s,t as c,ti as l}from"./src-BxqApSys.mjs";import{A as u,L as d}from"./fs-traced-DgX7lP1u.mjs";import{r as f}from"./server-lock-DMUPUL90.mjs";import{C as p,S as m,x as h}from"./resolve-project-root-BQmlxjbX.mjs";import{c as g,f as _,g as v,l as y,n as b,o as x,p as S,r as C,s as w,t as T}from"./acp-harness-probe-cDPpq4cK.mjs";import{y as E}from"./init-HwwBx7jE.mjs";import{n as D}from"./constants-veaDdIy0.mjs";import{spawn as O}from"node:child_process";import{basename as k,dirname as A,resolve as j}from"node:path";import{existsSync as M,realpathSync as N}from"node:fs";import{tmpdir as P}from"node:os";import{rm as F}from"node:fs/promises";import{setTimeout as I}from"node:timers/promises";function L(e,t){return e.bind?.[0]??t.HOST??`127.0.0.1`}function R(e){if(e===`server`)return e;throw new m(`--only must be 'server'`)}function z(e=M){let t=import.meta.dirname??new URL(`.`,import.meta.url).pathname;return[j(t,`public`),j(t,`../../app/dist`),j(t,`../../../app/dist`)].find(t=>e(t))}function B(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 V(e){if(e===`off`)return`off`;if(!a.test(e))throw new m(`--idle-shutdown must be 'off' or a duration like 90s, 30m, 2h`);return e}function H(e){return e===`localhost`||e===`::1`||e===`[::1]`||e.startsWith(`127.`)}function U(e){return!e.flagBindSet&&!e.okBindSet&&e.hostEnvSet&&e.fileBindCount>1}function W(e){return!e.openBrowser||e.ephemeral||e.only===`server`||!e.servesUi?!1:(e.explicitOn||H(e.host))&&e.isTTY}function ee(e,t){let n;try{n=new URL(t)}catch{throw new m(`${e} is not a valid URL: ${t}`)}if(n.protocol!==`http:`&&n.protocol!==`https:`)throw new m(`${e} must be an http(s) origin (got: ${t})`);return t}function G(e){return ee(`--external-url`,e)}function K(e){let t=k(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var q=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}},J=class extends Error{projectDir;constructor(e){super(`--project-dir must be a throwaway ${c}* directory under the OS temp dir. Refusing to write ephemeral session state into ${e}. Omit --project-dir to let ok start create (and clean up) its own.`),this.name=`EphemeralProjectDirNotThrowawayError`,this.projectDir=e}};function Y(e,t={}){let n=t.tmpdirFn??P,r=t.realpathFn??N,i=e=>{try{return r(e)}catch(t){return t.code===`ENOENT`?j(e):null}},a=j(e),o;try{o=r(a)}catch(e){if(e.code===`ENOENT`){let e=i(A(a));o=e===null?null:j(e,k(a))}else o=null}if(o===null)return!1;let s=i(n());return s===null?!1:A(o)===s&&k(o).startsWith(`ok-ephemeral-`)}function X(e,t,n=e=>F(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{if(Y(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 ${c}* dirs under the OS temp dir are removed on ephemeral teardown\n`)}}}function Z(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{config:t,cwd:n,host:r}=e,i=e.skipAutoInit??!1,a=e.idleThresholdMs===void 0?18e5:e.idleThresholdMs,{existsSync:c,mkdirSync:u}=await import(`node:fs`),{basename:d,dirname:f,resolve:p}=await import(`node:path`),{bootServer:m,createEphemeralProjectDir:h,getLogger:g,resolveContentDir:y,resolveLockDir:x,seedEphemeralProjectDir:w,waitForServerLockDrain:D}=await import(`./src-SbH90xWg.mjs`),O=e.log??g(`start`),k=e.singleFile!==void 0,A=k?s(e.singleFile).canonicalFilePath:void 0,j=A?f(A):void 0,M=A?d(A):void 0,N,P=!1;if(j!==void 0)if(e.projectDir!==void 0){if(N=e.projectDir,!Y(N))throw new J(N);c(p(N,`.ok`,`config.yml`))||w(N,j)}else N=h(j),P=!0;let I=async()=>{if(!(!P||N===void 0)){if(!Y(N)){O.warn({ephemeralProjectDir:N},`[start] refusing to reap self-provisioned ephemeral dir: no longer resolves to an ok-ephemeral-* temp dir`);return}try{await F(N,{recursive:!0,force:!0})}catch(e){O.warn({err:e,ephemeralProjectDir:N},`[start] failed to reap self-provisioned ephemeral temp dir`)}}},L=N;if(!k){if(!i&&!l(n))throw new q(n);let t=process.env.OK_RECLAIM_DISABLE??null,r=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&O.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-CY74SE23.mjs`)).repairMcpConfigs)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-DfVqqhks.mjs`)).repairLaunchJson)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-BJog_ZkO.mjs`)).repairSkills)({projectDir:n,reclaimDisableEnv:t,logger:r})}catch(e){O.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let R=j??y(t,n);!k&&!c(R)&&(u(R,{recursive:!0}),O.info({contentDir:R},`Created content directory`));let z=v(),B=o(),V;try{{let e=x(N??n),t=Date.now(),r=await D(e);r!==`no-drain`&&O.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`)}V=await m({config:t,contentDir:R,projectDir:N??n,contentRoot:k?void 0:t.content.dir,port:e.port,host:r,quiet:!1,detectGh:_,detectGhAccounts:S,tokenStore:z,embeddingsKeyStore:B,mcpTomlEditor:E(),...k?{ephemeral:!0,singleDocRelPath:M,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],probeHarnessManagedMcpEntry:(e,t)=>T(e,t),probePiAcpBridge:e=>C(e),ensurePiAcpBridge:e=>b(e),idleShutdownMs:a,...e.serverRuntime===void 0?{}:{serverRuntime:e.serverRuntime},...e.bind===void 0?{}:{bind:e.bind},skipAutoInit:!0,idleShutdownHandler:t=>{let n=t;return Z(L===void 0?n:X(n,L),{log:O,exit:e.idleExit})},log:O,...e.serveContentAssets===void 0?{}:{serveContentAssets:e.serveContentAssets},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}})}catch(e){throw await I(),e}let H=V.destroy,U=P?async()=>{try{await H()}finally{await I()}}:H;return{httpServer:V.httpServer,destroy:U,lockDir:V.lockDir,contentDir:R,port:V.port,ready:V.ready,degraded:V.degraded}}function $(e,t,n=()=>d({absPath:u(`user`,process.cwd()),sideline:!1,warn:()=>{}}).value){return t===void 0?e:n()}function te(e){if(e===`browser`||e===`app`)return e;throw new m(`--mode must be 'browser' or 'app'`)}function ne(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function re(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 ie(a,o){let s=$(a,o.singleFile),c=ne(process.env);c!==null&&(process.env.OK_CONSOLE_LEVEL=c);let{renderBanner:l}=await import(`./banner-B14xalho.mjs`),{accent:u,dim:d,error:f,warning:p}=await import(`./colors-CpP5E4wV.mjs`),m=process.cwd();process.title=K(m);let h;try{h=i(process.env)}catch(t){throw t instanceof e&&(console.error(f(t.message)),process.exit(78)),t}for(let e of h.diagnostics)console.warn(p(`[config] ${e.message}`));let g=t(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]);U({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(t(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(`
2
+ `)))}let O=o.port===void 0?void 0:Number(o.port),k=h.overrides.find(e=>e.envVar===`PORT`)?.value,A=O??k??s.server?.port,j=B({explicitDir:o.reactShellDistDir,only:o.only,findBundledDir:z}),M=j.dir;j.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 N;try{N=await Q({config:s,cwd:m,host:C,port:A,bind:w,...o.serveContentAssets===void 0?{}:{serveContentAssets:o.serveContentAssets},...M?{reactShellDistDir:M}:{},idleThresholdMs:n(o.idleShutdown??E.idleShutdown),serverRuntime:E,...o.singleFile?{singleFile:o.singleFile}:{},...o.projectDir?{projectDir:o.projectDir}:{}})}catch(e){e instanceof q&&(console.error(f(e.message)),process.exit(1)),e instanceof J&&(console.error(f(e.message)),process.exit(1));let t=await import(`./src-SbH90xWg.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&&(console.error(f(e.message)),process.exit(1)),se(e,t)){let e=t.resolveLockDir(m),n=null;try{n=await ae({readServerLock:()=>t.readServerLock(e),now:Date.now,sleep:e=>I(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]=oe(n);console.log(u(e));for(let e of t)console.log(d(e));process.exit(0)}}let n=ce(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 P=!1,F=async e=>{if(P)return;P=!0;let[t,...n]=re(e);console.log(u(`\n${t}`));for(let e of n)console.log(d(` ${e}`));try{await N.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`,()=>{F(`SIGINT`)}),process.once(`SIGTERM`,()=>{F(`SIGTERM`)});let L=`http://${C.includes(`:`)&&!C.startsWith(`[`)?`[${C}]`:C}:${N.port}`,R=C===`0.0.0.0`||C===`::`?`http://0.0.0.0:${N.port}`:void 0,V=L;console.log(l({name:`open-knowledge`,version:D,localUrl:V,networkUrl:R,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let H={"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`};N.ready.then(async()=>{if(N.degraded.length>0){console.log();for(let e of N.degraded){let t=H[e]??`${e} (check server logs for details)`;console.warn(` ${p(`⚠`)} ${p(e)}: ${d(t)}`)}console.log()}if(W({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:M!==void 0})){let{openBrowser:e}=await import(`./open-browser-DtPQklA3.mjs`);e(V)}}).catch(e=>{console.error(` ${f(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}async function ae(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:f(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 oe(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 `ok stop` first if you want a fresh server."]}function se(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function ce(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=n.readServerLock(n.resolveLockDir(t));return e&&e.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`."}catch{return null}}function le(e){return new h(`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)`,R).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)`,V).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,te).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 p(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).hideHelp()).addOption(new p(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).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).`,G).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'
3
3
  `),process.exit(2)),t.projectDir!==void 0&&t.singleFile===void 0&&(process.stderr.write(`error: option '--project-dir' requires '--single-file'
4
4
  `),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=w(x());if(n.available){g({spawn:O},n);return}console.error(y(n.reason)),process.exit(1)}await ie(n,t)})}export{ce as C,le as S,Z as T,ne as _,oe as a,W as b,Y as c,V as d,R as f,$ as g,ae as h,K as i,se as l,L as m,q as n,re as o,z as p,Q as r,H as s,J as t,G as u,B as v,X as w,U as x,ie as y};
5
- //# sourceMappingURL=start-BDxtXn92.mjs.map
5
+ //# sourceMappingURL=start-sZmCG1Do.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/open-knowledge",
3
- "version": "0.68.23",
3
+ "version": "0.68.25",
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",
@@ -71,10 +71,10 @@
71
71
  "ajv-formats": "^3.0.1",
72
72
  "tsdown": "^0.21.7",
73
73
  "typescript": "^5.9.3",
74
- "@inkeep/open-knowledge-app": "0.68.23",
75
- "@inkeep/open-knowledge-core": "0.68.23",
74
+ "@inkeep/open-knowledge-app": "0.68.25",
75
+ "@inkeep/open-knowledge-server": "0.68.25",
76
76
  "@inkeep/open-knowledge-native-config": "0.0.0",
77
- "@inkeep/open-knowledge-server": "0.68.23"
77
+ "@inkeep/open-knowledge-core": "0.68.25"
78
78
  },
79
79
  "scripts": {
80
80
  "build:cli": "rm -rf dist && tsdown",
@@ -1,2 +0,0 @@
1
- import"./src-B2bAQ64a.mjs";var e=`0.68.23`;const t=`config.yml`,n=e;export{n,t};
2
- //# sourceMappingURL=constants-Dzh7neNo.mjs.map
@@ -1 +0,0 @@
1
- import{i as e}from"./git-handle-C0onz3KH.mjs";export{e as createGitInstance};
@@ -1 +0,0 @@
1
- import"./src-IiV9Xv8E.mjs";import{g as e}from"./init-CLtTEqbD.mjs";export{e as runInit};
@@ -1 +0,0 @@
1
- import{n as e}from"./loader-BIIfAEjP.mjs";export{e as loadConfig};
@@ -1,2 +0,0 @@
1
- import{Ea as e,Eo as t,wo as n}from"./src-B2bAQ64a.mjs";const r=new e({extensions:n,deriveStructuralFreshness:!0}),i=t(n);export{i as n,r as t};
2
- //# sourceMappingURL=md-manager--OJ_B4tb.mjs.map
@@ -1 +0,0 @@
1
- import{n as e,t}from"./preview-CZKWPYO9.mjs";export{t as formatPreviewBlock,e as previewContent};