@inkeep/open-knowledge 0.30.0-beta.2 → 0.30.0-beta.3

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 (63) hide show
  1. package/dist/assets/skills/discovery/SKILL.md +1 -1
  2. package/dist/assets/skills/project/SKILL.md +1 -1
  3. package/dist/cli.mjs +10 -10
  4. package/dist/constants-CgHcIqh6.mjs +2 -0
  5. package/dist/index.mjs +1 -1
  6. package/dist/init-CNK7GfhY.mjs +1 -0
  7. package/dist/{init-E8FDYW-D.mjs → init-Cj3rYYNW.mjs} +3 -3
  8. package/dist/{launch-json-removal-ByWYRF7W.mjs → launch-json-removal-Bsd2If9V.mjs} +2 -2
  9. package/dist/loader-BkadQueQ.mjs +1 -0
  10. package/dist/{loader-Bi7zAoyk.mjs → loader-DBQRSW23.mjs} +2 -2
  11. package/dist/{preview-hq0cdoZw.mjs → preview-4_TQ2eLW.mjs} +2 -2
  12. package/dist/preview-4uaPC3tK.mjs +1 -0
  13. package/dist/public/assets/{ActivityModeContent-D1snXuNs.js → ActivityModeContent-gJPRToqC.js} +1 -1
  14. package/dist/public/assets/{CodeMirrorPropInput-C3FZ7AWB.js → CodeMirrorPropInput-A-b7Ox39.js} +1 -1
  15. package/dist/public/assets/{DocumentContext-CPgyt-fa.js → DocumentContext-Cf3xyIUc.js} +7 -7
  16. package/dist/public/assets/{EnableSyncConfirmDialog-a1BAa003.js → EnableSyncConfirmDialog-Ds9VzFz7.js} +1 -1
  17. package/dist/public/assets/{GraphPanel-Dqn1R3FA.js → GraphPanel-DticGDW4.js} +1 -1
  18. package/dist/public/assets/{ManagedArtifactProperties-D9gtQzwY.js → ManagedArtifactProperties-BG7ax3pN.js} +1 -1
  19. package/dist/public/assets/{McpConsentDialogBody-B3eYpOil.js → McpConsentDialogBody-jKfEiUIH.js} +1 -1
  20. package/dist/public/assets/{MermaidDocEditor-CZKy1wMI.js → MermaidDocEditor-B_WSq6De.js} +1 -1
  21. package/dist/public/assets/{PropertyPanel-k3LSAy4u.js → PropertyPanel-JSTiSMvX.js} +1 -1
  22. package/dist/public/assets/SettingsDialogBody-C4mvHDJH.js +7 -0
  23. package/dist/public/assets/{ShareBranchSwitchDialog-OJA4wjqQ.js → ShareBranchSwitchDialog-2z9NWmqe.js} +1 -1
  24. package/dist/public/assets/{ShareReceiveDialog-7EizE4VA.js → ShareReceiveDialog-CGSDsgBh.js} +1 -1
  25. package/dist/public/assets/{ShareReceiveMissDialog-D8Up16fz.js → ShareReceiveMissDialog-D7zjXalK.js} +1 -1
  26. package/dist/public/assets/{SkillEditorActions-B25PfvD1.js → SkillEditorActions-CxGse8tc.js} +1 -1
  27. package/dist/public/assets/{SourceEditor-D_fZ07fz.js → SourceEditor-B4hGDoTR.js} +1 -1
  28. package/dist/public/assets/{TerminalPanel-Dw3H1oil.js → TerminalPanel-B3CcTB8S.js} +1 -1
  29. package/dist/public/assets/{agent-presence-c_qxeP7e.js → agent-presence-DJQje6SV.js} +1 -1
  30. package/dist/public/assets/{auth-state-cache-D4z3eiMF.js → auth-state-cache-DyKWS3xm.js} +3 -3
  31. package/dist/public/assets/{config-provider-BONo47Qc.js → config-provider-D0CfBIwU.js} +1 -1
  32. package/dist/public/assets/{dist-CJfVM-iJ.js → dist-CJc7OX7s.js} +1 -1
  33. package/dist/public/assets/{dist-BDGd7UYM.js → dist-DoFKRM_F.js} +1 -1
  34. package/dist/public/assets/{doc-hash-BLS3MEoj.js → doc-hash-B7rSgZqz.js} +1 -1
  35. package/dist/public/assets/{documents-events-H4-z8Qjp.js → documents-events-Bit0pJeY.js} +1 -1
  36. package/dist/public/assets/{file-tree-adapter-B8tTfm_Y.js → file-tree-adapter--v55j77z.js} +1 -1
  37. package/dist/public/assets/{index-Ci4eWUi8.js → index--kgVY3Zd.js} +9 -9
  38. package/dist/public/assets/{keyboard-shortcuts-DnJWzgZ1.js → keyboard-shortcuts-CvYXgqK4.js} +1 -1
  39. package/dist/public/assets/{navigation-targets-DM3L8UZy.js → navigation-targets-D-taKoGj.js} +1 -1
  40. package/dist/public/assets/{open-managed-artifact-tab-NBmHUyDy.js → open-managed-artifact-tab-Da7L5wL4.js} +1 -1
  41. package/dist/public/assets/{pending-receive-nav-store-D7JjzV1n.js → pending-receive-nav-store-CAm5nHeI.js} +1 -1
  42. package/dist/public/assets/{prop-types-Cl1SYZho.js → prop-types-BwJNmxtq.js} +1 -1
  43. package/dist/public/assets/{receive-store-DWC9dc5j.js → receive-store-C72xSCDE.js} +1 -1
  44. package/dist/public/assets/{selection-context-DALYXIVY.js → selection-context-JPA-xW1g.js} +1 -1
  45. package/dist/public/assets/{skill-actions-BV30AE89.js → skill-actions-CMd77Yt2.js} +1 -1
  46. package/dist/public/assets/{skills-api-B0z9Mw2W.js → skills-api-UoasHTUi.js} +1 -1
  47. package/dist/public/assets/{src-DZ97WDxX.js → src-CXdmKAqZ.js} +1 -1
  48. package/dist/public/assets/{target-navigation-intent-CpKCAQDV.js → target-navigation-intent-C_Y-i35d.js} +1 -1
  49. package/dist/public/assets/{typing-burst-detector-ko_Nb-fG.js → typing-burst-detector-DLup_S3P.js} +1 -1
  50. package/dist/public/assets/{workspace-paths-CMbeqczX.js → workspace-paths-CYa5l8eZ.js} +1 -1
  51. package/dist/public/index.html +25 -25
  52. package/dist/{repair-launch-json-BdfDMobg.mjs → repair-launch-json-CtA3dzno.mjs} +2 -2
  53. package/dist/{repair-mcp-configs-DZMxi-7M.mjs → repair-mcp-configs-DP4ZjS6O.mjs} +2 -2
  54. package/dist/{src-Bi9Si6vM.mjs → src-Z7vZvOn3.mjs} +2 -2
  55. package/dist/{start-DqcZAaBv.mjs → start-B1VS-wwf.mjs} +2 -2
  56. package/dist/start-DGO0EIO_.mjs +1 -0
  57. package/package.json +1 -1
  58. package/dist/constants-BGBZW_Qv.mjs +0 -2
  59. package/dist/init-B02GcqsQ.mjs +0 -1
  60. package/dist/loader-CT3CzsPt.mjs +0 -1
  61. package/dist/preview-DtuXRRGi.mjs +0 -1
  62. package/dist/public/assets/SettingsDialogBody-do88Fri6.js +0 -7
  63. package/dist/start-CDJKwObu.mjs +0 -1
@@ -1 +1 @@
1
- import{o as e}from"./chunk-CFjPhJqf.js";import{n as t,r as n,t as r}from"./compiler-runtime-CVnuRdak.js";import{c as i,i as a,l as o,o as s}from"./button-cneJOVxD.js";import{t as c}from"./check-DRRCCRSs.js";import{t as l}from"./chevron-right-DSNnH-Vb.js";import{a as u,c as d,d as f,f as p,i as m,n as ee,o as h,r as g,t as _,u as v}from"./dist-BSkHa6UR.js";import{n as y,t as te}from"./dist-Dkr4jGYv.js";import{g as ne,h as re,m as ie,p as ae}from"./dialog-DdHaoAGK.js";import{a as b,i as x,n as oe,r as se,t as S}from"./dist-fpPv-rVb.js";import{n as ce,r as C,t as w}from"./dist-CyYz03up.js";import{t as T}from"./parse-api-error-CqtA8BcL.js";import{r as E}from"./documents-events-H4-z8Qjp.js";var D=e(t(),1),O=n(),k=[`Enter`,` `],A=[`ArrowDown`,`PageUp`,`Home`],le=[`ArrowUp`,`PageDown`,`End`],ue=[...A,...le],j={ltr:[...k,`ArrowRight`],rtl:[...k,`ArrowLeft`]},de={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},M=`Menu`,[N,fe,P]=y(M),[F,I]=v(M,[P,b,C]),L=b(),pe=C(),[me,R]=F(M),[he,z]=F(M),ge=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=L(t),[c,l]=D.useState(null),u=D.useRef(!1),d=g(a),f=te(i);return D.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,O.jsx)(x,{...s,children:(0,O.jsx)(me,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,O.jsx)(he,{scope:t,onClose:D.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};ge.displayName=M;var _e=`MenuAnchor`,B=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=L(n);return(0,O.jsx)(S,{...i,...r,ref:t})});B.displayName=_e;var ve=`MenuPortal`,[ye,be]=F(ve,{forceMount:void 0}),xe=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=R(ve,t);return(0,O.jsx)(ye,{scope:t,forceMount:n,children:(0,O.jsx)(u,{present:n||a.open,children:(0,O.jsx)(_,{asChild:!0,container:i,children:r})})})};xe.displayName=ve;var V=`MenuContent`,[Se,Ce]=F(V),we=D.forwardRef((e,t)=>{let n=be(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=R(V,e.__scopeMenu),o=z(V,e.__scopeMenu);return(0,O.jsx)(N.Provider,{scope:e.__scopeMenu,children:(0,O.jsx)(u,{present:r||a.open,children:(0,O.jsx)(N.Slot,{scope:e.__scopeMenu,children:o.modal?(0,O.jsx)(Te,{...i,ref:t}):(0,O.jsx)(Ee,{...i,ref:t})})})})}),Te=D.forwardRef((e,t)=>{let n=R(V,e.__scopeMenu),r=D.useRef(null),i=o(t,r);return D.useEffect(()=>{let e=r.current;if(e)return ae(e)},[]),(0,O.jsx)(Oe,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:d(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Ee=D.forwardRef((e,t)=>{let n=R(V,e.__scopeMenu);return(0,O.jsx)(Oe,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),De=s(`MenuContent.ScrollLock`),Oe=D.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:m,onDismiss:h,disableOutsideScroll:g,..._}=e,v=R(V,n),y=z(V,n),te=L(n),ae=pe(n),b=fe(n),[x,oe]=D.useState(null),S=D.useRef(null),C=o(t,S,v.onContentChange),w=D.useRef(0),T=D.useRef(``),E=D.useRef(0),k=D.useRef(null),A=D.useRef(`right`),j=D.useRef(0),de=g?ie:D.Fragment,M=g?{as:De,allowPinchZoom:!0}:void 0,N=e=>{let t=T.current+e,n=b().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=at(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){T.current=t,window.clearTimeout(w.current),t!==``&&(w.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};D.useEffect(()=>()=>window.clearTimeout(w.current),[]),re();let P=D.useCallback(e=>A.current===k.current?.side&&st(e,k.current?.area),[]);return(0,O.jsx)(Se,{scope:n,searchRef:T,onItemEnter:D.useCallback(e=>{P(e)&&e.preventDefault()},[P]),onItemLeave:D.useCallback(e=>{P(e)||(S.current?.focus(),oe(null))},[P]),onTriggerLeave:D.useCallback(e=>{P(e)&&e.preventDefault()},[P]),pointerGraceTimerRef:E,onPointerGraceIntentChange:D.useCallback(e=>{k.current=e},[]),children:(0,O.jsx)(de,{...M,children:(0,O.jsx)(ne,{asChild:!0,trapped:i,onMountAutoFocus:d(a,e=>{e.preventDefault(),S.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,O.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:m,onDismiss:h,children:(0,O.jsx)(ce,{asChild:!0,...ae,dir:y.dir,orientation:`vertical`,loop:r,currentTabStopId:x,onCurrentTabStopIdChange:oe,onEntryFocus:d(l,e=>{y.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,O.jsx)(se,{role:`menu`,"aria-orientation":`vertical`,"data-state":nt(v.open),"data-radix-menu-content":``,dir:y.dir,...te,..._,ref:C,style:{outline:`none`,..._.style},onKeyDown:d(_.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&N(e.key));let i=S.current;if(e.target!==i||!ue.includes(e.key))return;e.preventDefault();let a=b().filter(e=>!e.disabled).map(e=>e.ref.current);le.includes(e.key)&&a.reverse(),rt(a)}),onBlur:d(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(w.current),T.current=``)}),onPointerMove:d(e.onPointerMove,Y(e=>{let t=e.target,n=j.current!==e.clientX;e.currentTarget.contains(t)&&n&&(A.current=e.clientX>j.current?`right`:`left`,j.current=e.clientX)}))})})})})})})});we.displayName=V;var ke=`MenuGroup`,Ae=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{role:`group`,...r,ref:t})});Ae.displayName=ke;var je=`MenuLabel`,Me=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{...r,ref:t})});Me.displayName=je;var H=`MenuItem`,Ne=`menu.itemSelect`,U=D.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=D.useRef(null),s=z(H,e.__scopeMenu),c=Ce(H,e.__scopeMenu),l=o(t,a),u=D.useRef(!1),f=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Ne,{bubbles:!0,cancelable:!0});e.addEventListener(Ne,e=>r?.(e),{once:!0}),p(e,t),t.defaultPrevented?u.current=!1:s.onClose()}};return(0,O.jsx)(Pe,{...i,ref:l,disabled:n,onClick:d(e.onClick,f),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:d(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:d(e.onKeyDown,e=>{let t=c.searchRef.current!==``;n||t&&e.key===` `||k.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});U.displayName=H;var Pe=D.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,s=Ce(H,n),c=pe(n),l=D.useRef(null),u=o(t,l),[p,m]=D.useState(!1),[ee,h]=D.useState(``);return D.useEffect(()=>{let e=l.current;e&&h((e.textContent??``).trim())},[a.children]),(0,O.jsx)(N.ItemSlot,{scope:n,disabled:r,textValue:i??ee,children:(0,O.jsx)(w,{asChild:!0,...c,focusable:!r,children:(0,O.jsx)(f.div,{role:`menuitem`,"data-highlighted":p?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:d(e.onPointerMove,Y(e=>{r?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:d(e.onPointerLeave,Y(e=>s.onItemLeave(e))),onFocus:d(e.onFocus,()=>m(!0)),onBlur:d(e.onBlur,()=>m(!1))})})})}),Fe=`MenuCheckboxItem`,Ie=D.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,O.jsx)(Ue,{scope:e.__scopeMenu,checked:n,children:(0,O.jsx)(U,{role:`menuitemcheckbox`,"aria-checked":q(n)?`mixed`:n,...i,ref:t,"data-state":J(n),onSelect:d(i.onSelect,()=>r?.(q(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Ie.displayName=Fe;var Le=`MenuRadioGroup`,[Re,ze]=F(Le,{value:void 0,onValueChange:()=>{}}),Be=D.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=g(r);return(0,O.jsx)(Re,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,O.jsx)(Ae,{...i,ref:t})})});Be.displayName=Le;var Ve=`MenuRadioItem`,He=D.forwardRef((e,t)=>{let{value:n,...r}=e,i=ze(Ve,e.__scopeMenu),a=n===i.value;return(0,O.jsx)(Ue,{scope:e.__scopeMenu,checked:a,children:(0,O.jsx)(U,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":J(a),onSelect:d(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});He.displayName=Ve;var W=`MenuItemIndicator`,[Ue,We]=F(W,{checked:!1}),Ge=D.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=We(W,n);return(0,O.jsx)(u,{present:r||q(a.checked)||a.checked===!0,children:(0,O.jsx)(f.span,{...i,ref:t,"data-state":J(a.checked)})})});Ge.displayName=W;var Ke=`MenuSeparator`,qe=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});qe.displayName=Ke;var Je=`MenuArrow`,Ye=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=L(n);return(0,O.jsx)(oe,{...i,...r,ref:t})});Ye.displayName=Je;var G=`MenuSub`,[Xe,Ze]=F(G),Qe=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=R(G,t),o=L(t),[s,c]=D.useState(null),[l,u]=D.useState(null),d=g(i);return D.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,O.jsx)(x,{...o,children:(0,O.jsx)(me,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,O.jsx)(Xe,{scope:t,contentId:m(),triggerId:m(),trigger:s,onTriggerChange:c,children:n})})})};Qe.displayName=G;var K=`MenuSubTrigger`,$e=D.forwardRef((e,t)=>{let n=R(K,e.__scopeMenu),r=z(K,e.__scopeMenu),a=Ze(K,e.__scopeMenu),o=Ce(K,e.__scopeMenu),s=D.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=o,u={__scopeMenu:e.__scopeMenu},f=D.useCallback(()=>{s.current&&window.clearTimeout(s.current),s.current=null},[]);return D.useEffect(()=>f,[f]),D.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]),(0,O.jsx)(B,{asChild:!0,...u,children:(0,O.jsx)(Pe,{id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":a.contentId,"data-state":nt(n.open),...e,ref:i(t,a.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:d(e.onPointerMove,Y(t=>{o.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!s.current&&(o.onPointerGraceIntentChange(null),s.current=window.setTimeout(()=>{n.onOpenChange(!0),f()},100))})),onPointerLeave:d(e.onPointerLeave,Y(e=>{f();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,a=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];o.onPointerGraceIntentChange({area:[{x:e.clientX+a,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.onPointerGraceIntentChange(null),300)}else{if(o.onTriggerLeave(e),e.defaultPrevented)return;o.onPointerGraceIntentChange(null)}})),onKeyDown:d(e.onKeyDown,t=>{let i=o.searchRef.current!==``;e.disabled||i&&t.key===` `||j[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});$e.displayName=K;var et=`MenuSubContent`,tt=D.forwardRef((e,t)=>{let n=be(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=R(V,e.__scopeMenu),s=z(V,e.__scopeMenu),c=Ze(et,e.__scopeMenu),l=D.useRef(null),f=o(t,l);return(0,O.jsx)(N.Provider,{scope:e.__scopeMenu,children:(0,O.jsx)(u,{present:r||a.open,children:(0,O.jsx)(N.Slot,{scope:e.__scopeMenu,children:(0,O.jsx)(Oe,{id:c.contentId,"aria-labelledby":c.triggerId,...i,ref:f,align:`start`,side:s.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{s.isUsingKeyboardRef.current&&l.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:d(e.onFocusOutside,e=>{e.target!==c.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:d(e.onEscapeKeyDown,e=>{s.onClose(),e.preventDefault()}),onKeyDown:d(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=de[s.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),c.trigger?.focus(),e.preventDefault())})})})})})});tt.displayName=et;function nt(e){return e?`open`:`closed`}function q(e){return e===`indeterminate`}function J(e){return q(e)?`indeterminate`:e?`checked`:`unchecked`}function rt(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function it(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function at(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=it(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function ot(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function st(e,t){return t?ot({x:e.clientX,y:e.clientY},t):!1}function Y(e){return t=>t.pointerType===`mouse`?e(t):void 0}var ct=ge,lt=B,ut=xe,dt=we,ft=Ae,pt=Me,mt=U,ht=Ie,gt=Be,_t=He,vt=Ge,yt=qe,bt=Ye,xt=Qe,St=$e,Ct=tt,X=`DropdownMenu`,[wt,Tt]=v(X,[I]),Z=I(),[Et,Dt]=wt(X),Ot=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Z(t),l=D.useRef(null),[u,d]=h({prop:i,defaultProp:a??!1,onChange:o,caller:X});return(0,O.jsx)(Et,{scope:t,triggerId:m(),triggerRef:l,contentId:m(),open:u,onOpenChange:d,onOpenToggle:D.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,O.jsx)(ct,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};Ot.displayName=X;var kt=`DropdownMenuTrigger`,At=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...a}=e,o=Dt(kt,n),s=Z(n);return(0,O.jsx)(lt,{asChild:!0,...s,children:(0,O.jsx)(f.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...a,ref:i(t,o.triggerRef),onPointerDown:d(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:d(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});At.displayName=kt;var jt=`DropdownMenuPortal`,Mt=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Z(t);return(0,O.jsx)(ut,{...r,...n})};Mt.displayName=jt;var Nt=`DropdownMenuContent`,Pt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Dt(Nt,n),a=Z(n),o=D.useRef(!1);return(0,O.jsx)(dt,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:d(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:d(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Pt.displayName=Nt;var Ft=`DropdownMenuGroup`,It=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(ft,{...i,...r,ref:t})});It.displayName=Ft;var Lt=`DropdownMenuLabel`,Rt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(pt,{...i,...r,ref:t})});Rt.displayName=Lt;var zt=`DropdownMenuItem`,Bt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(mt,{...i,...r,ref:t})});Bt.displayName=zt;var Vt=`DropdownMenuCheckboxItem`,Ht=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(ht,{...i,...r,ref:t})});Ht.displayName=Vt;var Ut=`DropdownMenuRadioGroup`,Wt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(gt,{...i,...r,ref:t})});Wt.displayName=Ut;var Gt=`DropdownMenuRadioItem`,Kt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(_t,{...i,...r,ref:t})});Kt.displayName=Gt;var qt=`DropdownMenuItemIndicator`,Jt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(vt,{...i,...r,ref:t})});Jt.displayName=qt;var Yt=`DropdownMenuSeparator`,Xt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(yt,{...i,...r,ref:t})});Xt.displayName=Yt;var Zt=`DropdownMenuArrow`,Qt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(bt,{...i,...r,ref:t})});Qt.displayName=Zt;var $t=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Z(t),[s,c]=h({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,O.jsx)(xt,{...o,open:s,onOpenChange:c,children:n})},en=`DropdownMenuSubTrigger`,tn=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(St,{...i,...r,ref:t})});tn.displayName=en;var nn=`DropdownMenuSubContent`,rn=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(Ct,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});rn.displayName=nn;var an=Ot,on=At,sn=Mt,cn=Pt,ln=It,un=Rt,dn=Bt,fn=Ht,pn=Wt,mn=Kt,hn=Jt,gn=Xt,_n=$t,vn=tn,yn=rn,Q=r();function bn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(an,{"data-slot":`dropdown-menu`,...n}),t[2]=n,t[3]=r),r}function xn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(sn,{"data-slot":`dropdown-menu-portal`,...n}),t[2]=n,t[3]=r),r}function Sn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(on,{"data-slot":`dropdown-menu-trigger`,...n}),t[2]=n,t[3]=r),r}function Cn(e){let t=(0,Q.c)(12),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:n,align:i,sideOffset:o,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s=i===void 0?`start`:i,c=o===void 0?4:o,l;t[5]===n?l=t[6]:(l=a(`z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-[state=closed]:overflow-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none motion-reduce:duration-0 subtle-scrollbar`,n),t[5]=n,t[6]=l);let u;return t[7]!==s||t[8]!==r||t[9]!==c||t[10]!==l?(u=(0,O.jsx)(sn,{children:(0,O.jsx)(cn,{"data-slot":`dropdown-menu-content`,sideOffset:c,align:s,className:l,...r})}),t[7]=s,t[8]=r,t[9]=c,t[10]=l,t[11]=u):u=t[11],u}function wn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(ln,{"data-slot":`dropdown-menu-group`,...n}),t[2]=n,t[3]=r),r}function Tn(e){let t=(0,Q.c)(12),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:n,inset:r,variant:o,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s=o===void 0?`default`:o,c;t[5]===n?c=t[6]:(c=a(`group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,n),t[5]=n,t[6]=c);let l;return t[7]!==r||t[8]!==i||t[9]!==c||t[10]!==s?(l=(0,O.jsx)(dn,{"data-slot":`dropdown-menu-item`,"data-inset":r,"data-variant":s,className:c,...i}),t[7]=r,t[8]=i,t[9]=c,t[10]=s,t[11]=l):l=t[11],l}function En(e){let t=(0,Q.c)(15),n,r,i,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4],s=t[5]):({className:i,children:r,checked:n,inset:o,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=s);let l;t[6]===i?l=t[7]:(l=a(`relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,i),t[6]=i,t[7]=l);let u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,O.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`,"data-slot":`dropdown-menu-checkbox-item-indicator`,children:(0,O.jsx)(hn,{children:(0,O.jsx)(c,{})})}),t[8]=u):u=t[8];let d;return t[9]!==n||t[10]!==r||t[11]!==o||t[12]!==s||t[13]!==l?(d=(0,O.jsxs)(fn,{"data-slot":`dropdown-menu-checkbox-item`,"data-inset":o,className:l,checked:n,...s,children:[u,r]}),t[9]=n,t[10]=r,t[11]=o,t[12]=s,t[13]=l,t[14]=d):d=t[14],d}function Dn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(pn,{"data-slot":`dropdown-menu-radio-group`,...n}),t[2]=n,t[3]=r),r}function On(e){let t=(0,Q.c)(13),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:r,children:n,inset:i,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s;t[5]===r?s=t[6]:(s=a(`relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,r),t[5]=r,t[6]=s);let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,O.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`,"data-slot":`dropdown-menu-radio-item-indicator`,children:(0,O.jsx)(hn,{children:(0,O.jsx)(c,{})})}),t[7]=l):l=t[7];let u;return t[8]!==n||t[9]!==i||t[10]!==o||t[11]!==s?(u=(0,O.jsxs)(mn,{"data-slot":`dropdown-menu-radio-item`,"data-inset":i,className:s,...o,children:[l,n]}),t[8]=n,t[9]=i,t[10]=o,t[11]=s,t[12]=u):u=t[12],u}function kn(e){let t=(0,Q.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,inset:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let o;t[4]===n?o=t[5]:(o=a(`px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7`,n),t[4]=n,t[5]=o);let s;return t[6]!==r||t[7]!==i||t[8]!==o?(s=(0,O.jsx)(un,{"data-slot":`dropdown-menu-label`,"data-inset":r,className:o,...i}),t[6]=r,t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function An(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`-mx-1 my-1 h-px bg-border`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,O.jsx)(gn,{"data-slot":`dropdown-menu-separator`,className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function jn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(_n,{"data-slot":`dropdown-menu-sub`,...n}),t[2]=n,t[3]=r),r}function Mn(e){let t=(0,Q.c)(13),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:r,inset:i,children:n,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s;t[5]===r?s=t[6]:(s=a(`flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,r),t[5]=r,t[6]=s);let c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,O.jsx)(l,{className:`ml-auto`}),t[7]=c):c=t[7];let u;return t[8]!==n||t[9]!==i||t[10]!==o||t[11]!==s?(u=(0,O.jsxs)(vn,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":i,className:s,...o,children:[n,c]}),t[8]=n,t[9]=i,t[10]=o,t[11]=s,t[12]=u):u=t[12],u}function Nn(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 data-[state=closed]:overflow-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none motion-reduce:duration-0 subtle-scrollbar`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,O.jsx)(yn,{"data-slot":`dropdown-menu-sub-content`,className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}async function $(e){return T(await e.json().catch(()=>null))??`HTTP ${e.status}`}async function Pn(e){try{let t=await fetch(`/api/skill`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,created:n?.created??!1,warnings:n?.warnings??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Fn(e){try{let t=await fetch(`/api/skill-file`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,created:n?.created??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function In(){try{let e=await fetch(`/api/skills/management`);return e.ok?await e.json():null}catch{return null}}async function Ln(e){try{return(await fetch(`/api/skills/management`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manageEditorSkills:e})})).ok?(E(),!0):!1}catch{return!1}}function Rn(e,t){let n=`${e}-copy`;if(!t.has(n))return n;for(let n=2;n<1e3;n+=1){let r=`${e}-copy-${n}`;if(!t.has(r))return r}return`${e}-copy-${t.size+1}`}async function zn(e){try{let t=new URLSearchParams({name:e.name,scope:e.scope}),n=await fetch(`/api/skill?${t.toString()}`);if(!n.ok)return{ok:!1,error:await $(n)};let r=await n.json().catch(()=>null),i=typeof r?.skill?.frontmatter?.description==`string`?r.skill.frontmatter.description:``,a=typeof r?.skill?.body==`string`?r.skill.body:``,o=Rn(e.name,e.existingNames),s=await Pn({scope:e.scope,name:o,frontmatter:{name:o,description:i},body:a});return s.ok?{ok:!0,name:o}:{ok:!1,error:s.error}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Bn(e){let{name:t,fromScope:n,toScope:r}=e;if(n===r)return{ok:!0,scope:r};try{let e=await fetch(`/api/skill?name=${encodeURIComponent(t)}&scope=${n}`);if(!e.ok)return{ok:!1,error:await $(e)};let i=await e.json().catch(()=>null),a=typeof i?.skill?.frontmatter?.description==`string`?i.skill.frontmatter.description:``,o=typeof i?.skill?.body==`string`?i.skill.body:``,s=await fetch(`/api/skill?name=${encodeURIComponent(t)}&scope=${r}`);if(s.ok)return{ok:!1,error:`A ${r} skill named "${t}" already exists.`};if(s.status!==404)return{ok:!1,error:`Couldn't verify the ${r} destination "${t}" is free (HTTP ${s.status}); aborting before any write so an existing skill can't be overwritten. Retry in a moment.`};let c=await Pn({scope:r,name:t,frontmatter:{name:t,description:a},body:o});if(!c.ok)return c;let l=await Un(n,t);if(!l.ok)return{ok:!1,error:`Copied "${t}" to ${r}, but reading its bundle files failed (${l.error}); the ${n} original is intact. Delete the partial ${r} copy and retry.`};let u=[];for(let e of l.files){if(e.text===null){u.push(e.path);continue}let i=await Fn({scope:r,name:t,path:e.path,content:e.text});if(!i.ok)return{ok:!1,error:`Copied "${t}" to ${r}, but copying its bundle file "${e.path}" failed (${i.error}); the ${n} original is intact. Delete the partial ${r} copy and retry.`}}let d=await Hn(n,t);return d.ok?(E(),{ok:!0,scope:r,...u.length>0?{skippedBinaryFiles:u}:{}}):{ok:!1,error:`Copied to ${r}, but couldn't remove the ${n} copy: ${d.error}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Vn(e){try{let t=await fetch(`/api/skill`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,committed:n?.committed??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Hn(e,t){try{let n=`?name=${encodeURIComponent(t)}&scope=${encodeURIComponent(e)}`,r=await fetch(`/api/skill${n}`,{method:`DELETE`});if(!r.ok)return{ok:!1,error:await $(r)};let i=await r.json().catch(()=>null);return E(),{ok:!0,existed:i?.existed??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Un(e,t){try{let n=new URLSearchParams({name:t,scope:e}),r=await fetch(`/api/skill?${n.toString()}`);return r.ok?{ok:!0,files:(await r.json().catch(()=>null))?.skill?.files??[]}:{ok:!1,error:await $(r)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Wn(e){try{let t=new URLSearchParams({name:e.name,scope:e.scope,path:e.path}),n=await fetch(`/api/skill-file?${t.toString()}`,{signal:e.signal});if(!n.ok)return{ok:!1,status:n.status,error:await $(n)};let r=await n.json().catch(()=>null);return typeof r?.text==`string`?{ok:!0,text:r.text}:{ok:!1,status:n.status,error:`HTTP ${n.status}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function Gn(e,t){return Wn({...e,signal:t}).then(e=>e.ok?{ok:!0,text:e.text}:{ok:!1,status:e.status})}async function Kn(e){try{let t=await fetch(`/api/skill/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,hosts:n?.hosts??[],scripts:n?.scripts??!1,warnings:n?.warnings??[],warningCodes:n?.warningCodes??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function qn(e){try{let t=await fetch(`/api/skill/uninstall`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,uninstalled:n?.uninstalled??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Jn(e){try{let t=await fetch(`/api/skill/update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,version:n?.version??``,previousVersion:n?.previousVersion,checkpointRef:n?.checkpointRef}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}export{dt as A,xt as B,jn as C,lt as D,Sn as E,ut as F,St as H,gt as I,_t as L,mt as M,vt as N,bt as O,pt as P,ct as R,An as S,Mn as T,I as U,Ct as V,Tn as _,Kn as a,Dn as b,Bn as c,qn as d,Jn as f,wn as g,Cn as h,In as i,ft as j,ht as k,Pn as l,En as m,zn as n,Gn as o,bn as p,Un as r,Vn as s,Hn as t,Ln as u,kn as v,Nn as w,On as x,xn as y,yt as z};
1
+ import{o as e}from"./chunk-CFjPhJqf.js";import{n as t,r as n,t as r}from"./compiler-runtime-CVnuRdak.js";import{c as i,i as a,l as o,o as s}from"./button-cneJOVxD.js";import{t as c}from"./check-DRRCCRSs.js";import{t as l}from"./chevron-right-DSNnH-Vb.js";import{a as u,c as d,d as f,f as p,i as m,n as ee,o as h,r as g,t as _,u as v}from"./dist-BSkHa6UR.js";import{n as y,t as te}from"./dist-Dkr4jGYv.js";import{g as ne,h as re,m as ie,p as ae}from"./dialog-DdHaoAGK.js";import{a as b,i as x,n as oe,r as se,t as S}from"./dist-fpPv-rVb.js";import{n as ce,r as C,t as w}from"./dist-CyYz03up.js";import{t as T}from"./parse-api-error-CqtA8BcL.js";import{r as E}from"./documents-events-Bit0pJeY.js";var D=e(t(),1),O=n(),k=[`Enter`,` `],A=[`ArrowDown`,`PageUp`,`Home`],le=[`ArrowUp`,`PageDown`,`End`],ue=[...A,...le],j={ltr:[...k,`ArrowRight`],rtl:[...k,`ArrowLeft`]},de={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},M=`Menu`,[N,fe,P]=y(M),[F,I]=v(M,[P,b,C]),L=b(),pe=C(),[me,R]=F(M),[he,z]=F(M),ge=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=L(t),[c,l]=D.useState(null),u=D.useRef(!1),d=g(a),f=te(i);return D.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,O.jsx)(x,{...s,children:(0,O.jsx)(me,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,O.jsx)(he,{scope:t,onClose:D.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};ge.displayName=M;var _e=`MenuAnchor`,B=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=L(n);return(0,O.jsx)(S,{...i,...r,ref:t})});B.displayName=_e;var ve=`MenuPortal`,[ye,be]=F(ve,{forceMount:void 0}),xe=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=R(ve,t);return(0,O.jsx)(ye,{scope:t,forceMount:n,children:(0,O.jsx)(u,{present:n||a.open,children:(0,O.jsx)(_,{asChild:!0,container:i,children:r})})})};xe.displayName=ve;var V=`MenuContent`,[Se,Ce]=F(V),we=D.forwardRef((e,t)=>{let n=be(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=R(V,e.__scopeMenu),o=z(V,e.__scopeMenu);return(0,O.jsx)(N.Provider,{scope:e.__scopeMenu,children:(0,O.jsx)(u,{present:r||a.open,children:(0,O.jsx)(N.Slot,{scope:e.__scopeMenu,children:o.modal?(0,O.jsx)(Te,{...i,ref:t}):(0,O.jsx)(Ee,{...i,ref:t})})})})}),Te=D.forwardRef((e,t)=>{let n=R(V,e.__scopeMenu),r=D.useRef(null),i=o(t,r);return D.useEffect(()=>{let e=r.current;if(e)return ae(e)},[]),(0,O.jsx)(Oe,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:d(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Ee=D.forwardRef((e,t)=>{let n=R(V,e.__scopeMenu);return(0,O.jsx)(Oe,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),De=s(`MenuContent.ScrollLock`),Oe=D.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:s,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:m,onDismiss:h,disableOutsideScroll:g,..._}=e,v=R(V,n),y=z(V,n),te=L(n),ae=pe(n),b=fe(n),[x,oe]=D.useState(null),S=D.useRef(null),C=o(t,S,v.onContentChange),w=D.useRef(0),T=D.useRef(``),E=D.useRef(0),k=D.useRef(null),A=D.useRef(`right`),j=D.useRef(0),de=g?ie:D.Fragment,M=g?{as:De,allowPinchZoom:!0}:void 0,N=e=>{let t=T.current+e,n=b().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=at(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){T.current=t,window.clearTimeout(w.current),t!==``&&(w.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};D.useEffect(()=>()=>window.clearTimeout(w.current),[]),re();let P=D.useCallback(e=>A.current===k.current?.side&&st(e,k.current?.area),[]);return(0,O.jsx)(Se,{scope:n,searchRef:T,onItemEnter:D.useCallback(e=>{P(e)&&e.preventDefault()},[P]),onItemLeave:D.useCallback(e=>{P(e)||(S.current?.focus(),oe(null))},[P]),onTriggerLeave:D.useCallback(e=>{P(e)&&e.preventDefault()},[P]),pointerGraceTimerRef:E,onPointerGraceIntentChange:D.useCallback(e=>{k.current=e},[]),children:(0,O.jsx)(de,{...M,children:(0,O.jsx)(ne,{asChild:!0,trapped:i,onMountAutoFocus:d(a,e=>{e.preventDefault(),S.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:s,children:(0,O.jsx)(ee,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:f,onFocusOutside:p,onInteractOutside:m,onDismiss:h,children:(0,O.jsx)(ce,{asChild:!0,...ae,dir:y.dir,orientation:`vertical`,loop:r,currentTabStopId:x,onCurrentTabStopIdChange:oe,onEntryFocus:d(l,e=>{y.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,O.jsx)(se,{role:`menu`,"aria-orientation":`vertical`,"data-state":nt(v.open),"data-radix-menu-content":``,dir:y.dir,...te,..._,ref:C,style:{outline:`none`,..._.style},onKeyDown:d(_.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&N(e.key));let i=S.current;if(e.target!==i||!ue.includes(e.key))return;e.preventDefault();let a=b().filter(e=>!e.disabled).map(e=>e.ref.current);le.includes(e.key)&&a.reverse(),rt(a)}),onBlur:d(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(w.current),T.current=``)}),onPointerMove:d(e.onPointerMove,Y(e=>{let t=e.target,n=j.current!==e.clientX;e.currentTarget.contains(t)&&n&&(A.current=e.clientX>j.current?`right`:`left`,j.current=e.clientX)}))})})})})})})});we.displayName=V;var ke=`MenuGroup`,Ae=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{role:`group`,...r,ref:t})});Ae.displayName=ke;var je=`MenuLabel`,Me=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{...r,ref:t})});Me.displayName=je;var H=`MenuItem`,Ne=`menu.itemSelect`,U=D.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=D.useRef(null),s=z(H,e.__scopeMenu),c=Ce(H,e.__scopeMenu),l=o(t,a),u=D.useRef(!1),f=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Ne,{bubbles:!0,cancelable:!0});e.addEventListener(Ne,e=>r?.(e),{once:!0}),p(e,t),t.defaultPrevented?u.current=!1:s.onClose()}};return(0,O.jsx)(Pe,{...i,ref:l,disabled:n,onClick:d(e.onClick,f),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:d(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:d(e.onKeyDown,e=>{let t=c.searchRef.current!==``;n||t&&e.key===` `||k.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});U.displayName=H;var Pe=D.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,s=Ce(H,n),c=pe(n),l=D.useRef(null),u=o(t,l),[p,m]=D.useState(!1),[ee,h]=D.useState(``);return D.useEffect(()=>{let e=l.current;e&&h((e.textContent??``).trim())},[a.children]),(0,O.jsx)(N.ItemSlot,{scope:n,disabled:r,textValue:i??ee,children:(0,O.jsx)(w,{asChild:!0,...c,focusable:!r,children:(0,O.jsx)(f.div,{role:`menuitem`,"data-highlighted":p?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:d(e.onPointerMove,Y(e=>{r?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:d(e.onPointerLeave,Y(e=>s.onItemLeave(e))),onFocus:d(e.onFocus,()=>m(!0)),onBlur:d(e.onBlur,()=>m(!1))})})})}),Fe=`MenuCheckboxItem`,Ie=D.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,O.jsx)(Ue,{scope:e.__scopeMenu,checked:n,children:(0,O.jsx)(U,{role:`menuitemcheckbox`,"aria-checked":q(n)?`mixed`:n,...i,ref:t,"data-state":J(n),onSelect:d(i.onSelect,()=>r?.(q(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Ie.displayName=Fe;var Le=`MenuRadioGroup`,[Re,ze]=F(Le,{value:void 0,onValueChange:()=>{}}),Be=D.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=g(r);return(0,O.jsx)(Re,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,O.jsx)(Ae,{...i,ref:t})})});Be.displayName=Le;var Ve=`MenuRadioItem`,He=D.forwardRef((e,t)=>{let{value:n,...r}=e,i=ze(Ve,e.__scopeMenu),a=n===i.value;return(0,O.jsx)(Ue,{scope:e.__scopeMenu,checked:a,children:(0,O.jsx)(U,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":J(a),onSelect:d(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});He.displayName=Ve;var W=`MenuItemIndicator`,[Ue,We]=F(W,{checked:!1}),Ge=D.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=We(W,n);return(0,O.jsx)(u,{present:r||q(a.checked)||a.checked===!0,children:(0,O.jsx)(f.span,{...i,ref:t,"data-state":J(a.checked)})})});Ge.displayName=W;var Ke=`MenuSeparator`,qe=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,O.jsx)(f.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});qe.displayName=Ke;var Je=`MenuArrow`,Ye=D.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=L(n);return(0,O.jsx)(oe,{...i,...r,ref:t})});Ye.displayName=Je;var G=`MenuSub`,[Xe,Ze]=F(G),Qe=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=R(G,t),o=L(t),[s,c]=D.useState(null),[l,u]=D.useState(null),d=g(i);return D.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,O.jsx)(x,{...o,children:(0,O.jsx)(me,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,O.jsx)(Xe,{scope:t,contentId:m(),triggerId:m(),trigger:s,onTriggerChange:c,children:n})})})};Qe.displayName=G;var K=`MenuSubTrigger`,$e=D.forwardRef((e,t)=>{let n=R(K,e.__scopeMenu),r=z(K,e.__scopeMenu),a=Ze(K,e.__scopeMenu),o=Ce(K,e.__scopeMenu),s=D.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=o,u={__scopeMenu:e.__scopeMenu},f=D.useCallback(()=>{s.current&&window.clearTimeout(s.current),s.current=null},[]);return D.useEffect(()=>f,[f]),D.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]),(0,O.jsx)(B,{asChild:!0,...u,children:(0,O.jsx)(Pe,{id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":a.contentId,"data-state":nt(n.open),...e,ref:i(t,a.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:d(e.onPointerMove,Y(t=>{o.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!s.current&&(o.onPointerGraceIntentChange(null),s.current=window.setTimeout(()=>{n.onOpenChange(!0),f()},100))})),onPointerLeave:d(e.onPointerLeave,Y(e=>{f();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,a=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];o.onPointerGraceIntentChange({area:[{x:e.clientX+a,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.onPointerGraceIntentChange(null),300)}else{if(o.onTriggerLeave(e),e.defaultPrevented)return;o.onPointerGraceIntentChange(null)}})),onKeyDown:d(e.onKeyDown,t=>{let i=o.searchRef.current!==``;e.disabled||i&&t.key===` `||j[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});$e.displayName=K;var et=`MenuSubContent`,tt=D.forwardRef((e,t)=>{let n=be(V,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=R(V,e.__scopeMenu),s=z(V,e.__scopeMenu),c=Ze(et,e.__scopeMenu),l=D.useRef(null),f=o(t,l);return(0,O.jsx)(N.Provider,{scope:e.__scopeMenu,children:(0,O.jsx)(u,{present:r||a.open,children:(0,O.jsx)(N.Slot,{scope:e.__scopeMenu,children:(0,O.jsx)(Oe,{id:c.contentId,"aria-labelledby":c.triggerId,...i,ref:f,align:`start`,side:s.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{s.isUsingKeyboardRef.current&&l.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:d(e.onFocusOutside,e=>{e.target!==c.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:d(e.onEscapeKeyDown,e=>{s.onClose(),e.preventDefault()}),onKeyDown:d(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=de[s.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),c.trigger?.focus(),e.preventDefault())})})})})})});tt.displayName=et;function nt(e){return e?`open`:`closed`}function q(e){return e===`indeterminate`}function J(e){return q(e)?`indeterminate`:e?`checked`:`unchecked`}function rt(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function it(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function at(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=it(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function ot(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function st(e,t){return t?ot({x:e.clientX,y:e.clientY},t):!1}function Y(e){return t=>t.pointerType===`mouse`?e(t):void 0}var ct=ge,lt=B,ut=xe,dt=we,ft=Ae,pt=Me,mt=U,ht=Ie,gt=Be,_t=He,vt=Ge,yt=qe,bt=Ye,xt=Qe,St=$e,Ct=tt,X=`DropdownMenu`,[wt,Tt]=v(X,[I]),Z=I(),[Et,Dt]=wt(X),Ot=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=Z(t),l=D.useRef(null),[u,d]=h({prop:i,defaultProp:a??!1,onChange:o,caller:X});return(0,O.jsx)(Et,{scope:t,triggerId:m(),triggerRef:l,contentId:m(),open:u,onOpenChange:d,onOpenToggle:D.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,O.jsx)(ct,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};Ot.displayName=X;var kt=`DropdownMenuTrigger`,At=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...a}=e,o=Dt(kt,n),s=Z(n);return(0,O.jsx)(lt,{asChild:!0,...s,children:(0,O.jsx)(f.button,{type:`button`,id:o.triggerId,"aria-haspopup":`menu`,"aria-expanded":o.open,"aria-controls":o.open?o.contentId:void 0,"data-state":o.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...a,ref:i(t,o.triggerRef),onPointerDown:d(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(o.onOpenToggle(),o.open||e.preventDefault())}),onKeyDown:d(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&o.onOpenToggle(),e.key===`ArrowDown`&&o.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});At.displayName=kt;var jt=`DropdownMenuPortal`,Mt=e=>{let{__scopeDropdownMenu:t,...n}=e,r=Z(t);return(0,O.jsx)(ut,{...r,...n})};Mt.displayName=jt;var Nt=`DropdownMenuContent`,Pt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Dt(Nt,n),a=Z(n),o=D.useRef(!1);return(0,O.jsx)(dt,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:d(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:d(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});Pt.displayName=Nt;var Ft=`DropdownMenuGroup`,It=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(ft,{...i,...r,ref:t})});It.displayName=Ft;var Lt=`DropdownMenuLabel`,Rt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(pt,{...i,...r,ref:t})});Rt.displayName=Lt;var zt=`DropdownMenuItem`,Bt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(mt,{...i,...r,ref:t})});Bt.displayName=zt;var Vt=`DropdownMenuCheckboxItem`,Ht=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(ht,{...i,...r,ref:t})});Ht.displayName=Vt;var Ut=`DropdownMenuRadioGroup`,Wt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(gt,{...i,...r,ref:t})});Wt.displayName=Ut;var Gt=`DropdownMenuRadioItem`,Kt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(_t,{...i,...r,ref:t})});Kt.displayName=Gt;var qt=`DropdownMenuItemIndicator`,Jt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(vt,{...i,...r,ref:t})});Jt.displayName=qt;var Yt=`DropdownMenuSeparator`,Xt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(yt,{...i,...r,ref:t})});Xt.displayName=Yt;var Zt=`DropdownMenuArrow`,Qt=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(bt,{...i,...r,ref:t})});Qt.displayName=Zt;var $t=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Z(t),[s,c]=h({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,O.jsx)(xt,{...o,open:s,onOpenChange:c,children:n})},en=`DropdownMenuSubTrigger`,tn=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(St,{...i,...r,ref:t})});tn.displayName=en;var nn=`DropdownMenuSubContent`,rn=D.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=Z(n);return(0,O.jsx)(Ct,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})});rn.displayName=nn;var an=Ot,on=At,sn=Mt,cn=Pt,ln=It,un=Rt,dn=Bt,fn=Ht,pn=Wt,mn=Kt,hn=Jt,gn=Xt,_n=$t,vn=tn,yn=rn,Q=r();function bn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(an,{"data-slot":`dropdown-menu`,...n}),t[2]=n,t[3]=r),r}function xn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(sn,{"data-slot":`dropdown-menu-portal`,...n}),t[2]=n,t[3]=r),r}function Sn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(on,{"data-slot":`dropdown-menu-trigger`,...n}),t[2]=n,t[3]=r),r}function Cn(e){let t=(0,Q.c)(12),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:n,align:i,sideOffset:o,...r}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s=i===void 0?`start`:i,c=o===void 0?4:o,l;t[5]===n?l=t[6]:(l=a(`z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-[state=closed]:overflow-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none motion-reduce:duration-0 subtle-scrollbar`,n),t[5]=n,t[6]=l);let u;return t[7]!==s||t[8]!==r||t[9]!==c||t[10]!==l?(u=(0,O.jsx)(sn,{children:(0,O.jsx)(cn,{"data-slot":`dropdown-menu-content`,sideOffset:c,align:s,className:l,...r})}),t[7]=s,t[8]=r,t[9]=c,t[10]=l,t[11]=u):u=t[11],u}function wn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(ln,{"data-slot":`dropdown-menu-group`,...n}),t[2]=n,t[3]=r),r}function Tn(e){let t=(0,Q.c)(12),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:n,inset:r,variant:o,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s=o===void 0?`default`:o,c;t[5]===n?c=t[6]:(c=a(`group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,n),t[5]=n,t[6]=c);let l;return t[7]!==r||t[8]!==i||t[9]!==c||t[10]!==s?(l=(0,O.jsx)(dn,{"data-slot":`dropdown-menu-item`,"data-inset":r,"data-variant":s,className:c,...i}),t[7]=r,t[8]=i,t[9]=c,t[10]=s,t[11]=l):l=t[11],l}function En(e){let t=(0,Q.c)(15),n,r,i,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4],s=t[5]):({className:i,children:r,checked:n,inset:o,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o,t[5]=s);let l;t[6]===i?l=t[7]:(l=a(`relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,i),t[6]=i,t[7]=l);let u;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,O.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`,"data-slot":`dropdown-menu-checkbox-item-indicator`,children:(0,O.jsx)(hn,{children:(0,O.jsx)(c,{})})}),t[8]=u):u=t[8];let d;return t[9]!==n||t[10]!==r||t[11]!==o||t[12]!==s||t[13]!==l?(d=(0,O.jsxs)(fn,{"data-slot":`dropdown-menu-checkbox-item`,"data-inset":o,className:l,checked:n,...s,children:[u,r]}),t[9]=n,t[10]=r,t[11]=o,t[12]=s,t[13]=l,t[14]=d):d=t[14],d}function Dn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(pn,{"data-slot":`dropdown-menu-radio-group`,...n}),t[2]=n,t[3]=r),r}function On(e){let t=(0,Q.c)(13),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:r,children:n,inset:i,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s;t[5]===r?s=t[6]:(s=a(`relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,r),t[5]=r,t[6]=s);let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,O.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`,"data-slot":`dropdown-menu-radio-item-indicator`,children:(0,O.jsx)(hn,{children:(0,O.jsx)(c,{})})}),t[7]=l):l=t[7];let u;return t[8]!==n||t[9]!==i||t[10]!==o||t[11]!==s?(u=(0,O.jsxs)(mn,{"data-slot":`dropdown-menu-radio-item`,"data-inset":i,className:s,...o,children:[l,n]}),t[8]=n,t[9]=i,t[10]=o,t[11]=s,t[12]=u):u=t[12],u}function kn(e){let t=(0,Q.c)(10),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,inset:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let o;t[4]===n?o=t[5]:(o=a(`px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7`,n),t[4]=n,t[5]=o);let s;return t[6]!==r||t[7]!==i||t[8]!==o?(s=(0,O.jsx)(un,{"data-slot":`dropdown-menu-label`,"data-inset":r,className:o,...i}),t[6]=r,t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function An(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`-mx-1 my-1 h-px bg-border`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,O.jsx)(gn,{"data-slot":`dropdown-menu-separator`,className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function jn(e){let t=(0,Q.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,O.jsx)(_n,{"data-slot":`dropdown-menu-sub`,...n}),t[2]=n,t[3]=r),r}function Mn(e){let t=(0,Q.c)(13),n,r,i,o;t[0]===e?(n=t[1],r=t[2],i=t[3],o=t[4]):({className:r,inset:i,children:n,...o}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=o);let s;t[5]===r?s=t[6]:(s=a(`flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,r),t[5]=r,t[6]=s);let c;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,O.jsx)(l,{className:`ml-auto`}),t[7]=c):c=t[7];let u;return t[8]!==n||t[9]!==i||t[10]!==o||t[11]!==s?(u=(0,O.jsxs)(vn,{"data-slot":`dropdown-menu-sub-trigger`,"data-inset":i,className:s,...o,children:[n,c]}),t[8]=n,t[9]=i,t[10]=o,t[11]=s,t[12]=u):u=t[12],u}function Nn(e){let t=(0,Q.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=a(`z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 data-[state=closed]:overflow-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none motion-reduce:duration-0 subtle-scrollbar`,n),t[3]=n,t[4]=i);let o;return t[5]!==r||t[6]!==i?(o=(0,O.jsx)(yn,{"data-slot":`dropdown-menu-sub-content`,className:i,...r}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}async function $(e){return T(await e.json().catch(()=>null))??`HTTP ${e.status}`}async function Pn(e){try{let t=await fetch(`/api/skill`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,created:n?.created??!1,warnings:n?.warnings??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Fn(e){try{let t=await fetch(`/api/skill-file`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,created:n?.created??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function In(){try{let e=await fetch(`/api/skills/management`);return e.ok?await e.json():null}catch{return null}}async function Ln(e){try{return(await fetch(`/api/skills/management`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manageEditorSkills:e})})).ok?(E(),!0):!1}catch{return!1}}function Rn(e,t){let n=`${e}-copy`;if(!t.has(n))return n;for(let n=2;n<1e3;n+=1){let r=`${e}-copy-${n}`;if(!t.has(r))return r}return`${e}-copy-${t.size+1}`}async function zn(e){try{let t=new URLSearchParams({name:e.name,scope:e.scope}),n=await fetch(`/api/skill?${t.toString()}`);if(!n.ok)return{ok:!1,error:await $(n)};let r=await n.json().catch(()=>null),i=typeof r?.skill?.frontmatter?.description==`string`?r.skill.frontmatter.description:``,a=typeof r?.skill?.body==`string`?r.skill.body:``,o=Rn(e.name,e.existingNames),s=await Pn({scope:e.scope,name:o,frontmatter:{name:o,description:i},body:a});return s.ok?{ok:!0,name:o}:{ok:!1,error:s.error}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Bn(e){let{name:t,fromScope:n,toScope:r}=e;if(n===r)return{ok:!0,scope:r};try{let e=await fetch(`/api/skill?name=${encodeURIComponent(t)}&scope=${n}`);if(!e.ok)return{ok:!1,error:await $(e)};let i=await e.json().catch(()=>null),a=typeof i?.skill?.frontmatter?.description==`string`?i.skill.frontmatter.description:``,o=typeof i?.skill?.body==`string`?i.skill.body:``,s=await fetch(`/api/skill?name=${encodeURIComponent(t)}&scope=${r}`);if(s.ok)return{ok:!1,error:`A ${r} skill named "${t}" already exists.`};if(s.status!==404)return{ok:!1,error:`Couldn't verify the ${r} destination "${t}" is free (HTTP ${s.status}); aborting before any write so an existing skill can't be overwritten. Retry in a moment.`};let c=await Pn({scope:r,name:t,frontmatter:{name:t,description:a},body:o});if(!c.ok)return c;let l=await Un(n,t);if(!l.ok)return{ok:!1,error:`Copied "${t}" to ${r}, but reading its bundle files failed (${l.error}); the ${n} original is intact. Delete the partial ${r} copy and retry.`};let u=[];for(let e of l.files){if(e.text===null){u.push(e.path);continue}let i=await Fn({scope:r,name:t,path:e.path,content:e.text});if(!i.ok)return{ok:!1,error:`Copied "${t}" to ${r}, but copying its bundle file "${e.path}" failed (${i.error}); the ${n} original is intact. Delete the partial ${r} copy and retry.`}}let d=await Hn(n,t);return d.ok?(E(),{ok:!0,scope:r,...u.length>0?{skippedBinaryFiles:u}:{}}):{ok:!1,error:`Copied to ${r}, but couldn't remove the ${n} copy: ${d.error}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Vn(e){try{let t=await fetch(`/api/skill`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,committed:n?.committed??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Hn(e,t){try{let n=`?name=${encodeURIComponent(t)}&scope=${encodeURIComponent(e)}`,r=await fetch(`/api/skill${n}`,{method:`DELETE`});if(!r.ok)return{ok:!1,error:await $(r)};let i=await r.json().catch(()=>null);return E(),{ok:!0,existed:i?.existed??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Un(e,t){try{let n=new URLSearchParams({name:t,scope:e}),r=await fetch(`/api/skill?${n.toString()}`);return r.ok?{ok:!0,files:(await r.json().catch(()=>null))?.skill?.files??[]}:{ok:!1,error:await $(r)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Wn(e){try{let t=new URLSearchParams({name:e.name,scope:e.scope,path:e.path}),n=await fetch(`/api/skill-file?${t.toString()}`,{signal:e.signal});if(!n.ok)return{ok:!1,status:n.status,error:await $(n)};let r=await n.json().catch(()=>null);return typeof r?.text==`string`?{ok:!0,text:r.text}:{ok:!1,status:n.status,error:`HTTP ${n.status}`}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function Gn(e,t){return Wn({...e,signal:t}).then(e=>e.ok?{ok:!0,text:e.text}:{ok:!1,status:e.status})}async function Kn(e){try{let t=await fetch(`/api/skill/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,hosts:n?.hosts??[],scripts:n?.scripts??!1,warnings:n?.warnings??[],warningCodes:n?.warningCodes??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function qn(e){try{let t=await fetch(`/api/skill/uninstall`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,uninstalled:n?.uninstalled??!1}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Jn(e){try{let t=await fetch(`/api/skill/update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,error:await $(t)};let n=await t.json().catch(()=>null);return E(),{ok:!0,version:n?.version??``,previousVersion:n?.previousVersion,checkpointRef:n?.checkpointRef}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}export{dt as A,xt as B,jn as C,lt as D,Sn as E,ut as F,St as H,gt as I,_t as L,mt as M,vt as N,bt as O,pt as P,ct as R,An as S,Mn as T,I as U,Ct as V,Tn as _,Kn as a,Dn as b,Bn as c,qn as d,Jn as f,wn as g,Cn as h,In as i,ft as j,ht as k,Pn as l,En as m,zn as n,Gn as o,bn as p,Un as r,Vn as s,Hn as t,Ln as u,kn as v,Nn as w,On as x,xn as y,yt as z};
@@ -1,2 +1,2 @@
1
- import{J as e}from"./CodeMirrorPropInput-C3FZ7AWB.js";import{B as t,C as n,H as r,P as i,V as a,b as o,et as s,p as c,tt as l,w as u,y as d}from"./config-provider-BONo47Qc.js";import{$ as f,Et as p,J as m,Ot as h,Q as g,X as _,jt as v,xt as y}from"./dist-Dot7Y1W_.js";var b=class e{constructor(e,t){this.yanchor=e,this.yhead=t}toJSON(){return{yanchor:i(this.yanchor),yhead:i(this.yhead)}}static fromJSON(t){return new e(n(t.yanchor),n(t.yhead))}},x=class{constructor(e,t){this.ytext=e,this.awareness=t,this.undoManager=new c(e)}toYPos(e,t=0){return u(this.ytext,e,t)}fromYPos(e){let t=o(n(e),this.ytext.doc);if(t==null||t.type!==this.ytext)throw Error(`[y-codemirror] The position you want to retrieve was created by a different document`);return{pos:t.index,assoc:t.assoc}}toYRange(e){let t=e.assoc;return new b(this.toYPos(e.anchor,t),this.toYPos(e.head,t))}fromYRange(e){let t=this.fromYPos(e.yanchor),n=this.fromYPos(e.yhead);return t.pos===n.pos?p.cursor(n.pos,n.assoc):p.range(t.pos,n.pos)}},S=h.define({combine(e){return e[e.length-1]}}),C=y.define(),w=class{constructor(e){this.view=e,this.conf=e.state.facet(S),this._observer=(t,n)=>{if(n.origin!==this.conf){let n=t.delta,r=[],i=0;for(let e=0;e<n.length;e++){let t=n[e];t.insert==null?t.delete==null?i+=t.retain:(r.push({from:i,to:i+t.delete,insert:``}),i+=t.delete):r.push({from:i,to:i,insert:t.insert})}e.dispatch({changes:r,annotations:[C.of(this.conf)]})}},this._ytext=this.conf.ytext,this._ytext.observe(this._observer)}update(e){if(!e.docChanged||e.transactions.length>0&&e.transactions[0].annotation(C)===this.conf)return;let t=this.conf.ytext;t.doc.transact(()=>{let n=0;e.changes.iterChanges((e,r,i,a,o)=>{let s=o.sliceString(0,o.length,`
1
+ import{J as e}from"./CodeMirrorPropInput-A-b7Ox39.js";import{B as t,C as n,H as r,P as i,V as a,b as o,et as s,p as c,tt as l,w as u,y as d}from"./config-provider-D0CfBIwU.js";import{$ as f,Et as p,J as m,Ot as h,Q as g,X as _,jt as v,xt as y}from"./dist-Dot7Y1W_.js";var b=class e{constructor(e,t){this.yanchor=e,this.yhead=t}toJSON(){return{yanchor:i(this.yanchor),yhead:i(this.yhead)}}static fromJSON(t){return new e(n(t.yanchor),n(t.yhead))}},x=class{constructor(e,t){this.ytext=e,this.awareness=t,this.undoManager=new c(e)}toYPos(e,t=0){return u(this.ytext,e,t)}fromYPos(e){let t=o(n(e),this.ytext.doc);if(t==null||t.type!==this.ytext)throw Error(`[y-codemirror] The position you want to retrieve was created by a different document`);return{pos:t.index,assoc:t.assoc}}toYRange(e){let t=e.assoc;return new b(this.toYPos(e.anchor,t),this.toYPos(e.head,t))}fromYRange(e){let t=this.fromYPos(e.yanchor),n=this.fromYPos(e.yhead);return t.pos===n.pos?p.cursor(n.pos,n.assoc):p.range(t.pos,n.pos)}},S=h.define({combine(e){return e[e.length-1]}}),C=y.define(),w=class{constructor(e){this.view=e,this.conf=e.state.facet(S),this._observer=(t,n)=>{if(n.origin!==this.conf){let n=t.delta,r=[],i=0;for(let e=0;e<n.length;e++){let t=n[e];t.insert==null?t.delete==null?i+=t.retain:(r.push({from:i,to:i+t.delete,insert:``}),i+=t.delete):r.push({from:i,to:i,insert:t.insert})}e.dispatch({changes:r,annotations:[C.of(this.conf)]})}},this._ytext=this.conf.ytext,this._ytext.observe(this._observer)}update(e){if(!e.docChanged||e.transactions.length>0&&e.transactions[0].annotation(C)===this.conf)return;let t=this.conf.ytext;t.doc.transact(()=>{let n=0;e.changes.iterChanges((e,r,i,a,o)=>{let s=o.sliceString(0,o.length,`
2
2
  `);e!==r&&t.delete(e+n,r-e),s.length>0&&t.insert(e+n,s),n+=s.length-(r-e)})},this.conf)}destroy(){this._ytext.unobserve(this._observer)}},T=g.fromClass(w),E=_.baseTheme({".cm-ySelection":{},".cm-yLineSelection":{padding:0,margin:`0px 2px 0px 4px`},".cm-ySelectionCaret":{position:`relative`,borderLeft:`1px solid black`,borderRight:`1px solid black`,marginLeft:`-1px`,marginRight:`-1px`,boxSizing:`border-box`,display:`inline`},".cm-ySelectionCaretDot":{borderRadius:`50%`,position:`absolute`,width:`.4em`,height:`.4em`,top:`-.2em`,left:`-.2em`,backgroundColor:`inherit`,transition:`transform .3s ease-in-out`,boxSizing:`border-box`},".cm-ySelectionCaret:hover > .cm-ySelectionCaretDot":{transformOrigin:`bottom center`,transform:`scale(0)`},".cm-ySelectionInfo":{position:`absolute`,top:`-1.05em`,left:`-1px`,fontSize:`.75em`,fontFamily:`serif`,fontStyle:`normal`,fontWeight:`normal`,lineHeight:`normal`,userSelect:`none`,color:`white`,paddingLeft:`2px`,paddingRight:`2px`,zIndex:101,transition:`opacity .3s ease-in-out`,backgroundColor:`inherit`,opacity:0,transitionDelay:`0s`,whiteSpace:`nowrap`},".cm-ySelectionCaret:hover > .cm-ySelectionInfo":{opacity:1,transitionDelay:`0s`}}),D=y.define(),O=class extends f{constructor(e,t){super(),this.color=e,this.name=t}toDOM(){return t(`span`,[r(`class`,`cm-ySelectionCaret`),r(`style`,`background-color: ${this.color}; border-color: ${this.color}`)],[a(`⁠`),t(`div`,[r(`class`,`cm-ySelectionCaretDot`)]),a(`⁠`),t(`div`,[r(`class`,`cm-ySelectionInfo`)],[a(this.name)]),a(`⁠`)])}eq(e){return e.color===this.color}compare(e){return e.color===this.color}updateDOM(){return!1}get estimatedHeight(){return-1}ignoreEvent(){return!0}},k=class{constructor(e){this.conf=e.state.facet(S),this._listener=({added:t,updated:n,removed:r},i,a)=>{t.concat(n).concat(r).findIndex(e=>e!==this.conf.awareness.doc.clientID)>=0&&e.dispatch({annotations:[D.of([])]})},this._awareness=this.conf.awareness,this._awareness.on(`change`,this._listener),this.decorations=v.of([])}destroy(){this._awareness.off(`change`,this._listener)}update(e){let t=this.conf.ytext,r=t.doc,i=this.conf.awareness,a=[],c=this.conf.awareness.getLocalState();if(c!=null){let r=e.view.hasFocus&&e.view.dom.ownerDocument.hasFocus(),a=r?e.state.selection.main:null,o=c.cursor==null?null:n(c.cursor.anchor),s=c.cursor==null?null:n(c.cursor.head);if(a!=null){let e=u(t,a.anchor),n=u(t,a.head);(c.cursor==null||!d(o,e)||!d(s,n))&&i.setLocalStateField(`cursor`,{anchor:e,head:n})}else c.cursor!=null&&r&&i.setLocalStateField(`cursor`,null)}i.getStates().forEach((n,c)=>{if(c===i.doc.clientID)return;let u=n.cursor;if(u==null||u.anchor==null||u.head==null)return;let d=o(u.anchor,r),f=o(u.head,r);if(d==null||f==null||d.type!==t||f.type!==t)return;let{color:p=`#30bced`,name:h=`Anonymous`}=n.user||{},g=n.user&&n.user.colorLight||p+`33`,_=l(d.index,f.index),v=s(d.index,f.index),y=e.view.state.doc.lineAt(_),b=e.view.state.doc.lineAt(v);if(y.number===b.number)a.push({from:_,to:v,value:m.mark({attributes:{style:`background-color: ${g}`},class:`cm-ySelection`})});else{a.push({from:_,to:y.from+y.length,value:m.mark({attributes:{style:`background-color: ${g}`},class:`cm-ySelection`})}),a.push({from:b.from,to:v,value:m.mark({attributes:{style:`background-color: ${g}`},class:`cm-ySelection`})});for(let t=y.number+1;t<b.number;t++){let n=e.view.state.doc.line(t).from;a.push({from:n,to:n,value:m.line({attributes:{style:`background-color: ${g}`,class:`cm-yLineSelection`}})})}}a.push({from:f.index,to:f.index,value:m.widget({side:f.index-d.index>0?-1:1,block:!1,widget:new O(p,h)})})}),this.decorations=m.set(a,!0)}},A=g.fromClass(k,{decorations:e=>e.decorations}),j=class{constructor(e){this.undoManager=e}addTrackedOrigin(e){this.undoManager.addTrackedOrigin(e)}removeTrackedOrigin(e){this.undoManager.removeTrackedOrigin(e)}undo(){return this.undoManager.undo()!=null}redo(){return this.undoManager.redo()!=null}},M=h.define({combine(e){return e[e.length-1]}});y.define();var N=class{constructor(t){this.view=t,this.conf=t.state.facet(M),this._undoManager=this.conf.undoManager,this.syncConf=t.state.facet(S),this._beforeChangeSelection=null,this._mux=e(),this._onStackItemAdded=({stackItem:e,changedParentTypes:t})=>{t.has(this.syncConf.ytext)&&this._beforeChangeSelection&&!e.meta.has(this)&&e.meta.set(this,this._beforeChangeSelection)},this._onStackItemPopped=({stackItem:e})=>{let n=e.meta.get(this);if(n){let e=this.syncConf.fromYRange(n);t.dispatch(t.state.update({selection:e,effects:[_.scrollIntoView(e)]})),this._storeSelection()}},this._storeSelection=()=>{this._beforeChangeSelection=this.syncConf.toYRange(this.view.state.selection.main)},this._undoManager.on(`stack-item-added`,this._onStackItemAdded),this._undoManager.on(`stack-item-popped`,this._onStackItemPopped),this._undoManager.addTrackedOrigin(this.syncConf)}update(e){e.selectionSet&&(e.transactions.length===0||e.transactions[0].annotation(C)!==this.syncConf)&&this._storeSelection()}destroy(){this._undoManager.off(`stack-item-added`,this._onStackItemAdded),this._undoManager.off(`stack-item-popped`,this._onStackItemPopped),this._undoManager.removeTrackedOrigin(this.syncConf)}},P=g.fromClass(N),F=({state:e,dispatch:t})=>e.facet(M).undo()||!0,I=({state:e,dispatch:t})=>e.facet(M).redo()||!0,L=(e,t,{undoManager:n=new c(e)}={})=>{let r=new x(e,t),i=[S.of(r),T];return t&&i.push(E,A),n!==!1&&i.push(M.of(new j(n)),P,_.domEventHandlers({beforeinput(e,t){return e.inputType===`historyUndo`?F(t):e.inputType===`historyRedo`?I(t):!1}})),i};export{L as t};
@@ -1 +1 @@
1
- import{a as e}from"./navigation-targets-DM3L8UZy.js";import{l as t}from"./doc-hash-BLS3MEoj.js";function n(e){switch(e.kind){case`doc`:case`large-file`:return`doc`;case`skill-file`:return`doc`;case`folder`:case`folder-index`:return`folder`;case`missing`:case`asset`:return`missing`}}function r(r,i){let a=e(r,i);return{resolvedTarget:a,hashDocName:a.target,hash:a.kind===`skill-file`?t({scope:a.scope,name:a.name,path:a.path}):null,displayState:n(a)}}export{r as t};
1
+ import{a as e}from"./navigation-targets-D-taKoGj.js";import{l as t}from"./doc-hash-B7rSgZqz.js";function n(e){switch(e.kind){case`doc`:case`large-file`:return`doc`;case`skill-file`:return`doc`;case`folder`:case`folder-index`:return`folder`;case`missing`:case`asset`:return`missing`}}function r(r,i){let a=e(r,i);return{resolvedTarget:a,hashDocName:a.target,hash:a.kind===`skill-file`?t({scope:a.scope,name:a.name,path:a.path}):null,displayState:n(a)}}export{r as t};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-CFjPhJqf.js";import{n as t,r as n,t as r}from"./compiler-runtime-CVnuRdak.js";import{n as i}from"./DocumentContext-CPgyt-fa.js";import{n as a,r as o}from"./dist-CQw2y-s3.js";import{a as s,c,i as ee,n as te,o as ne,r as re,s as l,t as ie,u}from"./panel-BH2RZRZQ.js";import{Cr as d,Kn as ae,it as f,tt as p}from"./dist-CJfVM-iJ.js";import{i as oe}from"./button-cneJOVxD.js";import{B as m,I as h}from"./CodeMirrorPropInput-C3FZ7AWB.js";import{i as se}from"./prop-types-Cl1SYZho.js";import{t as g}from"./dist-BvBijIC5.js";import{i as _}from"./startup-marks-DDtA9pbt.js";var v=e(t(),1),y=r(),b=new Map;function x(e,t){b.set(e,t)}function S(e){let t=b.get(e)??null;return b.delete(e),t}function C(e){b.delete(e)}function w(e,t){let n=(0,y.c)(4),r=t===void 0?!1:t,[i,a]=(0,v.useState)(void 0),o=(0,v.useRef)(null),s,c;return n[0]!==r||n[1]!==e?(s=()=>{if(r||e.length===0){a(void 0);return}let t=function(){let t=window.innerHeight/2,n,r;for(let i of e){let e=document.getElementById(i);if(!e)continue;let a=e.getBoundingClientRect().top;a<0?n=i:r===void 0&&a<t&&(r=i)}a(r??n??e[0])},n=function(){o.current===null&&(o.current=requestAnimationFrame(()=>{o.current=null,t()}))};return document.addEventListener(`scroll`,n,{capture:!0,passive:!0}),t(),()=>{document.removeEventListener(`scroll`,n,{capture:!0}),o.current!==null&&(cancelAnimationFrame(o.current),o.current=null)}},c=[e,r],n[0]=r,n[1]=e,n[2]=s,n[3]=c):(s=n[2],c=n[3]),(0,v.useEffect)(s,c),i}var T=n(),ce=300;async function le(e){let t=await fetch(`/api/page-headings?docName=${encodeURIComponent(e)}`),n;try{n=await t.json()}catch(e){throw new m(g._({id:`qAQVSD`}),{cause:e,status:t.status})}if(!t.ok){let e=f.safeParse(n);throw e.success?Error(e.data.title):new m(g._({id:`zlErBl`}),{status:t.status})}let r=p.safeParse(n);if(!r.success)throw new m(g._({id:`XW18jo`}),{status:t.status});return r.data.headings??[]}var E=32,D=12,O=6,k=`open-knowledge:outline-nav`;function A(e){let t=(0,y.c)(2),n;return t[0]===e?n=t[1]:(n=(0,T.jsx)(_,{name:`outline-panel`,children:(0,T.jsx)(j,{...e})}),t[0]=e,t[1]=n),n}function j(e){let t=(0,y.c)(50),{docName:n,isSourceMode:r,className:d}=e,f=d===void 0?``:d,{_:p}=o(),{pages:m,loading:h}=se(),g=u(),{activeProvider:_,activeDocName:b}=i(),S,C;t[0]===n?(S=t[1],C=t[2]):(S=[`page-headings`,n],C=()=>le(n),t[0]=n,t[1]=S,t[2]=C);let A;t[3]!==n||t[4]!==h||t[5]!==m?(A=!h&&(m.has(n)||ae(n)),t[3]=n,t[4]=h,t[5]=m,t[6]=A):A=t[6];let j;t[7]!==S||t[8]!==C||t[9]!==A?(j={queryKey:S,queryFn:C,enabled:A,staleTime:1/0},t[7]=S,t[8]=C,t[9]=A,t[10]=j):j=t[10];let{data:N,isLoading:P,error:F}=c(j),I;t[11]===N?I=t[12]:(I=N===void 0?[]:N,t[11]=N,t[12]=I);let L=I,R,z;t[13]!==b||t[14]!==_||t[15]!==n||t[16]!==g?(R=()=>{if(!_||b!==n)return;let e=_.document,t=null,r=()=>{t!==null&&clearTimeout(t),t=setTimeout(()=>{t=null,g.invalidateQueries({queryKey:[`page-headings`,n]})},ce)};return e.on(`update`,r),()=>{e.off(`update`,r),t!==null&&clearTimeout(t)}},z=[_,b,n,g],t[13]=b,t[14]=_,t[15]=n,t[16]=g,t[17]=R,t[18]=z):(R=t[17],z=t[18]),(0,v.useEffect)(R,z);let B;t[19]===L?B=t[20]:(B=L.map(M),t[19]=L,t[20]=B);let V=w(B,r),H;t[21]!==V||t[22]!==L?(H=V?L.findIndex(e=>e.slug===V):-1,t[21]=V,t[22]=L,t[23]=H):H=t[23];let U=H,W;t[24]!==n||t[25]!==r?(W=function(e,t){let i={index:e,slug:t,mode:r?`source`:`wysiwyg`};i.mode===`source`&&x(n,{kind:`outline`,detail:i}),window.dispatchEvent(new CustomEvent(k,{detail:i}))},t[24]=n,t[25]=r,t[26]=W):W=t[26];let G=W,K=((U>=0?L[U].level:1)-1)*D+(D-O)/2,q=U*E+(E-O)/2,J;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,T.jsx)(l,{children:(0,T.jsx)(a,{id:`dD7NPy`})}),t[27]=J):J=t[27];let Y;t[28]!==L.length||t[29]!==P?(Y=!P&&(0,T.jsx)(re,{children:L.length}),t[28]=L.length,t[29]=P,t[30]=Y):Y=t[30];let X;t[31]===Y?X=t[32]:(X=(0,T.jsxs)(ne,{children:[J,Y]}),t[31]=Y,t[32]=X);let Z;t[33]!==p||t[34]!==U||t[35]!==V||t[36]!==F||t[37]!==G||t[38]!==L||t[39]!==P||t[40]!==K||t[41]!==q?(Z=F?(0,T.jsx)(s,{className:`px-2`,children:F instanceof Error?F.message:p({id:`GuqOb1`})}):L.length===0&&!P?(0,T.jsx)(ee,{className:`px-2`,children:(0,T.jsx)(a,{id:`0BB9ID`})}):(0,T.jsxs)(`nav`,{"aria-label":p({id:`BymzO4`}),className:`relative`,children:[U>=0&&(0,T.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute left-0 top-0 rounded-full bg-primary motion-safe:[transition:transform_0.25s_var(--ease-out-strong)]`,style:{width:O,height:O,transform:`translate(${K}px, ${q}px)`}}),L.map((e,t)=>{let n=e.slug===V;return(0,T.jsx)(`button`,{type:`button`,"aria-current":n?`location`:void 0,onClick:()=>G(t,e.slug),className:oe(`w-full cursor-pointer truncate py-1.5 pe-2 text-left text-sm transition-colors`,n?`font-medium text-primary`:`text-muted-foreground hover:text-foreground`),style:{paddingLeft:`${(e.level-1)*D+20}px`},title:e.text,children:e.text},t)})]}),t[33]=p,t[34]=U,t[35]=V,t[36]=F,t[37]=G,t[38]=L,t[39]=P,t[40]=K,t[41]=q,t[42]=Z):Z=t[42];let Q;t[43]!==P||t[44]!==Z?(Q=(0,T.jsx)(te,{className:`px-3 py-2`,"aria-busy":P,children:Z}),t[43]=P,t[44]=Z,t[45]=Q):Q=t[45];let $;return t[46]!==f||t[47]!==X||t[48]!==Q?($=(0,T.jsxs)(ie,{className:f,children:[X,Q]}),t[46]=f,t[47]=X,t[48]=Q,t[49]=$):$=t[49],$}function M(e){return e.slug}var N={words:0,chars:0,tokens:0},P=/[ -〿぀-ゟ゠-ヿ㐀-䶿一-鿿豈-﫿＀-￯฀-๿ក-៿]/,F=/[\p{L}\p{N}]/u,I=new Set([`text`,`inlineCode`,`code`,`tag`]),L=new Set([`html`,`definition`,`footnoteDefinition`,`yaml`,`toml`,`image`,`imageReference`,`mdxFlowExpression`,`mdxTextExpression`,`mdxjsEsm`,`rawMdxFallback`,`rawMdxFallbackMdast`]),R=new Set([`paragraph`,`heading`,`blockquote`,`list`,`listItem`,`thematicBreak`,`table`,`tableRow`,`tableCell`,`mdxJsxFlowElement`,`commentBlock`]);function z(e,t){if(!e)return;let n=e.type;if(!L.has(n)){if(I.has(n)){e.value&&(t.push(e.value),n===`code`&&t.push(`
1
+ import{o as e}from"./chunk-CFjPhJqf.js";import{n as t,r as n,t as r}from"./compiler-runtime-CVnuRdak.js";import{n as i}from"./DocumentContext-Cf3xyIUc.js";import{n as a,r as o}from"./dist-CQw2y-s3.js";import{a as s,c,i as ee,n as te,o as ne,r as re,s as l,t as ie,u}from"./panel-BH2RZRZQ.js";import{Cr as d,Kn as ae,it as f,tt as p}from"./dist-CJc7OX7s.js";import{i as oe}from"./button-cneJOVxD.js";import{B as m,I as h}from"./CodeMirrorPropInput-A-b7Ox39.js";import{i as se}from"./prop-types-BwJNmxtq.js";import{t as g}from"./dist-BvBijIC5.js";import{i as _}from"./startup-marks-DDtA9pbt.js";var v=e(t(),1),y=r(),b=new Map;function x(e,t){b.set(e,t)}function S(e){let t=b.get(e)??null;return b.delete(e),t}function C(e){b.delete(e)}function w(e,t){let n=(0,y.c)(4),r=t===void 0?!1:t,[i,a]=(0,v.useState)(void 0),o=(0,v.useRef)(null),s,c;return n[0]!==r||n[1]!==e?(s=()=>{if(r||e.length===0){a(void 0);return}let t=function(){let t=window.innerHeight/2,n,r;for(let i of e){let e=document.getElementById(i);if(!e)continue;let a=e.getBoundingClientRect().top;a<0?n=i:r===void 0&&a<t&&(r=i)}a(r??n??e[0])},n=function(){o.current===null&&(o.current=requestAnimationFrame(()=>{o.current=null,t()}))};return document.addEventListener(`scroll`,n,{capture:!0,passive:!0}),t(),()=>{document.removeEventListener(`scroll`,n,{capture:!0}),o.current!==null&&(cancelAnimationFrame(o.current),o.current=null)}},c=[e,r],n[0]=r,n[1]=e,n[2]=s,n[3]=c):(s=n[2],c=n[3]),(0,v.useEffect)(s,c),i}var T=n(),ce=300;async function le(e){let t=await fetch(`/api/page-headings?docName=${encodeURIComponent(e)}`),n;try{n=await t.json()}catch(e){throw new m(g._({id:`qAQVSD`}),{cause:e,status:t.status})}if(!t.ok){let e=f.safeParse(n);throw e.success?Error(e.data.title):new m(g._({id:`zlErBl`}),{status:t.status})}let r=p.safeParse(n);if(!r.success)throw new m(g._({id:`XW18jo`}),{status:t.status});return r.data.headings??[]}var E=32,D=12,O=6,k=`open-knowledge:outline-nav`;function A(e){let t=(0,y.c)(2),n;return t[0]===e?n=t[1]:(n=(0,T.jsx)(_,{name:`outline-panel`,children:(0,T.jsx)(j,{...e})}),t[0]=e,t[1]=n),n}function j(e){let t=(0,y.c)(50),{docName:n,isSourceMode:r,className:d}=e,f=d===void 0?``:d,{_:p}=o(),{pages:m,loading:h}=se(),g=u(),{activeProvider:_,activeDocName:b}=i(),S,C;t[0]===n?(S=t[1],C=t[2]):(S=[`page-headings`,n],C=()=>le(n),t[0]=n,t[1]=S,t[2]=C);let A;t[3]!==n||t[4]!==h||t[5]!==m?(A=!h&&(m.has(n)||ae(n)),t[3]=n,t[4]=h,t[5]=m,t[6]=A):A=t[6];let j;t[7]!==S||t[8]!==C||t[9]!==A?(j={queryKey:S,queryFn:C,enabled:A,staleTime:1/0},t[7]=S,t[8]=C,t[9]=A,t[10]=j):j=t[10];let{data:N,isLoading:P,error:F}=c(j),I;t[11]===N?I=t[12]:(I=N===void 0?[]:N,t[11]=N,t[12]=I);let L=I,R,z;t[13]!==b||t[14]!==_||t[15]!==n||t[16]!==g?(R=()=>{if(!_||b!==n)return;let e=_.document,t=null,r=()=>{t!==null&&clearTimeout(t),t=setTimeout(()=>{t=null,g.invalidateQueries({queryKey:[`page-headings`,n]})},ce)};return e.on(`update`,r),()=>{e.off(`update`,r),t!==null&&clearTimeout(t)}},z=[_,b,n,g],t[13]=b,t[14]=_,t[15]=n,t[16]=g,t[17]=R,t[18]=z):(R=t[17],z=t[18]),(0,v.useEffect)(R,z);let B;t[19]===L?B=t[20]:(B=L.map(M),t[19]=L,t[20]=B);let V=w(B,r),H;t[21]!==V||t[22]!==L?(H=V?L.findIndex(e=>e.slug===V):-1,t[21]=V,t[22]=L,t[23]=H):H=t[23];let U=H,W;t[24]!==n||t[25]!==r?(W=function(e,t){let i={index:e,slug:t,mode:r?`source`:`wysiwyg`};i.mode===`source`&&x(n,{kind:`outline`,detail:i}),window.dispatchEvent(new CustomEvent(k,{detail:i}))},t[24]=n,t[25]=r,t[26]=W):W=t[26];let G=W,K=((U>=0?L[U].level:1)-1)*D+(D-O)/2,q=U*E+(E-O)/2,J;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(J=(0,T.jsx)(l,{children:(0,T.jsx)(a,{id:`dD7NPy`})}),t[27]=J):J=t[27];let Y;t[28]!==L.length||t[29]!==P?(Y=!P&&(0,T.jsx)(re,{children:L.length}),t[28]=L.length,t[29]=P,t[30]=Y):Y=t[30];let X;t[31]===Y?X=t[32]:(X=(0,T.jsxs)(ne,{children:[J,Y]}),t[31]=Y,t[32]=X);let Z;t[33]!==p||t[34]!==U||t[35]!==V||t[36]!==F||t[37]!==G||t[38]!==L||t[39]!==P||t[40]!==K||t[41]!==q?(Z=F?(0,T.jsx)(s,{className:`px-2`,children:F instanceof Error?F.message:p({id:`GuqOb1`})}):L.length===0&&!P?(0,T.jsx)(ee,{className:`px-2`,children:(0,T.jsx)(a,{id:`0BB9ID`})}):(0,T.jsxs)(`nav`,{"aria-label":p({id:`BymzO4`}),className:`relative`,children:[U>=0&&(0,T.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute left-0 top-0 rounded-full bg-primary motion-safe:[transition:transform_0.25s_var(--ease-out-strong)]`,style:{width:O,height:O,transform:`translate(${K}px, ${q}px)`}}),L.map((e,t)=>{let n=e.slug===V;return(0,T.jsx)(`button`,{type:`button`,"aria-current":n?`location`:void 0,onClick:()=>G(t,e.slug),className:oe(`w-full cursor-pointer truncate py-1.5 pe-2 text-left text-sm transition-colors`,n?`font-medium text-primary`:`text-muted-foreground hover:text-foreground`),style:{paddingLeft:`${(e.level-1)*D+20}px`},title:e.text,children:e.text},t)})]}),t[33]=p,t[34]=U,t[35]=V,t[36]=F,t[37]=G,t[38]=L,t[39]=P,t[40]=K,t[41]=q,t[42]=Z):Z=t[42];let Q;t[43]!==P||t[44]!==Z?(Q=(0,T.jsx)(te,{className:`px-3 py-2`,"aria-busy":P,children:Z}),t[43]=P,t[44]=Z,t[45]=Q):Q=t[45];let $;return t[46]!==f||t[47]!==X||t[48]!==Q?($=(0,T.jsxs)(ie,{className:f,children:[X,Q]}),t[46]=f,t[47]=X,t[48]=Q,t[49]=$):$=t[49],$}function M(e){return e.slug}var N={words:0,chars:0,tokens:0},P=/[ -〿぀-ゟ゠-ヿ㐀-䶿一-鿿豈-﫿＀-￯฀-๿ក-៿]/,F=/[\p{L}\p{N}]/u,I=new Set([`text`,`inlineCode`,`code`,`tag`]),L=new Set([`html`,`definition`,`footnoteDefinition`,`yaml`,`toml`,`image`,`imageReference`,`mdxFlowExpression`,`mdxTextExpression`,`mdxjsEsm`,`rawMdxFallback`,`rawMdxFallbackMdast`]),R=new Set([`paragraph`,`heading`,`blockquote`,`list`,`listItem`,`thematicBreak`,`table`,`tableRow`,`tableCell`,`mdxJsxFlowElement`,`commentBlock`]);function z(e,t){if(!e)return;let n=e.type;if(!L.has(n)){if(I.has(n)){e.value&&(t.push(e.value),n===`code`&&t.push(`
2
2
  `));return}if(n===`wikiLink`||n===`wikiLinkEmbed`){let n=e.data?.alias??e.value??``;n&&t.push(n);return}if(Array.isArray(e.children)){for(let n of e.children)z(n,t);if(R.has(n)&&t.length>0){let e=t[t.length-1];e&&!e.endsWith(`
3
3
  `)&&t.push(`
4
4
  `)}}}}function B(e){try{let t=h().parseToMdast(e),n=[];return z(t,n),n.join(``).trim()}catch(t){return console.warn(`[document-stats] mdast parse failed, falling back to raw text`,t),e.trim()}}function V(e){if(!e)return 0;let t=0;for(let n of e.split(/\s+/))F.test(n)&&t++;return t}function H(e){let t=globalThis.Intl.Segmenter;if(!t)return V(e);let n=new t(void 0,{granularity:`word`}),r=0;for(let t of n.segment(e))t.isWordLike&&r++;return r}function U(e){let t=P.test(e)?1.5:4;return Math.ceil(e.length/t)}function W(e){return e?{words:P.test(e)?H(e):V(e),chars:e.length,tokens:U(e)}:{words:0,chars:0,tokens:0}}function G(e){if(!e)return{words:0,chars:0,tokens:0};let{body:t}=d(e);return t.trim()?W(B(t)):{words:0,chars:0,tokens:0}}function K(e,{isMarkdown:t}){let n=e.trim();return n?W(t?B(e):n):N}var q=new Map,J=new Set,Y=(e,t)=>`${t}:${e}`;function X(){for(let e of J)e()}function Z(e,t,n){let r=Y(e,t);if(n===null){q.delete(r)&&X();return}let i=q.get(r);i&&i.words===n.words&&i.chars===n.chars&&i.tokens===n.tokens||(q.set(r,n),X())}function Q(e,t){return e===null?null:q.get(Y(e,t))??null}function $(e){return J.add(e),()=>{J.delete(e)}}function ue(e){let{from:t,to:n,empty:r}=e.state.selection;if(r)return null;let i=e.state.doc.textBetween(t,n,`
@@ -1 +1 @@
1
- import{o as e}from"./chunk-CFjPhJqf.js";import{n as t}from"./compiler-runtime-CVnuRdak.js";import{r as n}from"./dist-CQw2y-s3.js";import{fn as r}from"./dist-CJfVM-iJ.js";import{u as i}from"./button-cneJOVxD.js";var a=i(`copy-plus`,[[`line`,{x1:`15`,x2:`15`,y1:`12`,y2:`18`,key:`1p7wdc`}],[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`,key:`1nscbv`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),o=i(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),s=i(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),c=i(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),l=[`global`,`project`];function u(e){return{project:new Set(e.filter(e=>e.scope===`project`).map(e=>e.name)),global:new Set(e.filter(e=>e.scope===`global`).map(e=>e.name))}}var d=`open-knowledge-pack-`;function f(e){return e.startsWith(d)?e.slice(20):e}function p(){let{_:e}=n();return{project:e({id:`e0NrBM`}),global:e({id:`2GT3Hf`})}}function m(){let{_:e}=n();return{project:e({id:`HyvSqq`}),global:e({id:`C7XjNB`})}}var h=e(t(),1);function g(){let[e]=(0,h.useState)(_);return e}function _(){return r()!=null}function v(e,t,n){let r=n===`\\`?t.replaceAll(`/`,`\\`):t;return`${e.endsWith(n)?e.slice(0,-1):e}${n}${r}`}var y=/\.(md|mdx)$/i;function b(e){return y.test(e)?e:`${e}.md`}export{f as a,m as c,o as d,a as f,l as i,c as l,v as n,u as o,g as r,p as s,b as t,s as u};
1
+ import{o as e}from"./chunk-CFjPhJqf.js";import{n as t}from"./compiler-runtime-CVnuRdak.js";import{r as n}from"./dist-CQw2y-s3.js";import{fn as r}from"./dist-CJc7OX7s.js";import{u as i}from"./button-cneJOVxD.js";var a=i(`copy-plus`,[[`line`,{x1:`15`,x2:`15`,y1:`12`,y2:`18`,key:`1p7wdc`}],[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`,key:`1nscbv`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),o=i(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),s=i(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),c=i(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),l=[`global`,`project`];function u(e){return{project:new Set(e.filter(e=>e.scope===`project`).map(e=>e.name)),global:new Set(e.filter(e=>e.scope===`global`).map(e=>e.name))}}var d=`open-knowledge-pack-`;function f(e){return e.startsWith(d)?e.slice(20):e}function p(){let{_:e}=n();return{project:e({id:`e0NrBM`}),global:e({id:`2GT3Hf`})}}function m(){let{_:e}=n();return{project:e({id:`HyvSqq`}),global:e({id:`C7XjNB`})}}var h=e(t(),1);function g(){let[e]=(0,h.useState)(_);return e}function _(){return r()!=null}function v(e,t,n){let r=n===`\\`?t.replaceAll(`/`,`\\`):t;return`${e.endsWith(n)?e.slice(0,-1):e}${n}${r}`}var y=/\.(md|mdx)$/i;function b(e){return y.test(e)?e:`${e}.md`}export{f as a,m as c,o as d,a as f,l as i,c as l,v as n,u as o,g as r,p as s,b as t,s as u};
@@ -48,7 +48,7 @@
48
48
  -->
49
49
  <script>(() => { let t = 'system'; try { const r = localStorage.getItem('ok-theme-v1'); if (r === 'light' || r === 'dark' || r === 'system') t = r; } catch {} let dark = t === 'dark'; if (t === 'system') { try { dark = window.matchMedia('(prefers-color-scheme: dark)').matches; } catch {} } if (dark) document.documentElement.classList.add('dark'); if (window.okDesktop) document.documentElement.classList.add('electron-mode'); })();</script>
50
50
  <style>html { background-color: #fafafa } html.dark { background-color: #171717 }</style>
51
- <script type="module" crossorigin src="./assets/index-Ci4eWUi8.js"></script>
51
+ <script type="module" crossorigin src="./assets/index--kgVY3Zd.js"></script>
52
52
  <link rel="modulepreload" crossorigin href="./assets/chunk-CFjPhJqf.js">
53
53
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-2ej06EnG.js">
54
54
  <link rel="modulepreload" crossorigin href="./assets/w3c-keyname-CHcJEDvG.js">
@@ -64,11 +64,11 @@
64
64
  <link rel="modulepreload" crossorigin href="./assets/stex-4t0JIuX_.js">
65
65
  <link rel="modulepreload" crossorigin href="./assets/floating-ui.dom-DVRWCLii.js">
66
66
  <link rel="modulepreload" crossorigin href="./assets/trace-api-D6fqC5Nw.js">
67
- <link rel="modulepreload" crossorigin href="./assets/dist-CJfVM-iJ.js">
67
+ <link rel="modulepreload" crossorigin href="./assets/dist-CJc7OX7s.js">
68
68
  <link rel="modulepreload" crossorigin href="./assets/compiler-runtime-CVnuRdak.js">
69
69
  <link rel="modulepreload" crossorigin href="./assets/dist-BVOt51sU.js">
70
70
  <link rel="modulepreload" crossorigin href="./assets/config-context-CE3SCVYc.js">
71
- <link rel="modulepreload" crossorigin href="./assets/config-provider-BONo47Qc.js">
71
+ <link rel="modulepreload" crossorigin href="./assets/config-provider-D0CfBIwU.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/dist-BvBijIC5.js">
73
73
  <link rel="modulepreload" crossorigin href="./assets/dist-CQw2y-s3.js">
74
74
  <link rel="modulepreload" crossorigin href="./assets/button-cneJOVxD.js">
@@ -76,14 +76,14 @@
76
76
  <link rel="modulepreload" crossorigin href="./assets/trash-2-Dcpo0Di-.js">
77
77
  <link rel="modulepreload" crossorigin href="./assets/triangle-alert-c3yCucJv.js">
78
78
  <link rel="modulepreload" crossorigin href="./assets/react-dom-C-oc-P2K.js">
79
- <link rel="modulepreload" crossorigin href="./assets/doc-hash-BLS3MEoj.js">
80
- <link rel="modulepreload" crossorigin href="./assets/navigation-targets-DM3L8UZy.js">
79
+ <link rel="modulepreload" crossorigin href="./assets/doc-hash-B7rSgZqz.js">
80
+ <link rel="modulepreload" crossorigin href="./assets/navigation-targets-D-taKoGj.js">
81
81
  <link rel="modulepreload" crossorigin href="./assets/documents-fetch-oup83IZh.js">
82
- <link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-C3FZ7AWB.js">
83
- <link rel="modulepreload" crossorigin href="./assets/dist-BDGd7UYM.js">
84
- <link rel="modulepreload" crossorigin href="./assets/documents-events-H4-z8Qjp.js">
82
+ <link rel="modulepreload" crossorigin href="./assets/CodeMirrorPropInput-A-b7Ox39.js">
83
+ <link rel="modulepreload" crossorigin href="./assets/dist-DoFKRM_F.js">
84
+ <link rel="modulepreload" crossorigin href="./assets/documents-events-Bit0pJeY.js">
85
85
  <link rel="modulepreload" crossorigin href="./assets/parse-api-error-CqtA8BcL.js">
86
- <link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-NBmHUyDy.js">
86
+ <link rel="modulepreload" crossorigin href="./assets/open-managed-artifact-tab-Da7L5wL4.js">
87
87
  <link rel="modulepreload" crossorigin href="./assets/dist-BSkHa6UR.js">
88
88
  <link rel="modulepreload" crossorigin href="./assets/dist-fpPv-rVb.js">
89
89
  <link rel="modulepreload" crossorigin href="./assets/propagation-api-BHhJitgG.js">
@@ -97,44 +97,44 @@
97
97
  <link rel="modulepreload" crossorigin href="./assets/chevron-down-BvNcCN1f.js">
98
98
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-DSNnH-Vb.js">
99
99
  <link rel="modulepreload" crossorigin href="./assets/startup-marks-DDtA9pbt.js">
100
- <link rel="modulepreload" crossorigin href="./assets/prop-types-Cl1SYZho.js">
101
- <link rel="modulepreload" crossorigin href="./assets/workspace-paths-CMbeqczX.js">
100
+ <link rel="modulepreload" crossorigin href="./assets/prop-types-BwJNmxtq.js">
101
+ <link rel="modulepreload" crossorigin href="./assets/workspace-paths-CYa5l8eZ.js">
102
102
  <link rel="modulepreload" crossorigin href="./assets/eye-WB1l5kVb.js">
103
103
  <link rel="modulepreload" crossorigin href="./assets/git-branch-q0qWPEwd.js">
104
104
  <link rel="modulepreload" crossorigin href="./assets/info-BlYnsVoP.js">
105
105
  <link rel="modulepreload" crossorigin href="./assets/loader-circle-B7Gv_Djz.js">
106
106
  <link rel="modulepreload" crossorigin href="./assets/file-tree-rename-validation-DeKIxKnc.js">
107
107
  <link rel="modulepreload" crossorigin href="./assets/input-tW78aNaR.js">
108
- <link rel="modulepreload" crossorigin href="./assets/DocumentContext-CPgyt-fa.js">
108
+ <link rel="modulepreload" crossorigin href="./assets/DocumentContext-Cf3xyIUc.js">
109
109
  <link rel="modulepreload" crossorigin href="./assets/checkbox-DurEHAAx.js">
110
110
  <link rel="modulepreload" crossorigin href="./assets/dist-CyYz03up.js">
111
- <link rel="modulepreload" crossorigin href="./assets/skills-api-B0z9Mw2W.js">
111
+ <link rel="modulepreload" crossorigin href="./assets/skills-api-UoasHTUi.js">
112
112
  <link rel="modulepreload" crossorigin href="./assets/label-DPn_C7ZD.js">
113
113
  <link rel="modulepreload" crossorigin href="./assets/radio-group-B0RG5um-.js">
114
- <link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-a1BAa003.js">
114
+ <link rel="modulepreload" crossorigin href="./assets/EnableSyncConfirmDialog-Ds9VzFz7.js">
115
115
  <link rel="modulepreload" crossorigin href="./assets/arrow-up-right-Crm0Btez.js">
116
116
  <link rel="modulepreload" crossorigin href="./assets/refresh-cw-CluaccKu.js">
117
117
  <link rel="modulepreload" crossorigin href="./assets/cursor-CjNH7VrK.js">
118
- <link rel="modulepreload" crossorigin href="./assets/skill-actions-BV30AE89.js">
118
+ <link rel="modulepreload" crossorigin href="./assets/skill-actions-CMd77Yt2.js">
119
119
  <link rel="modulepreload" crossorigin href="./assets/textarea-DtAQz2_P.js">
120
120
  <link rel="modulepreload" crossorigin href="./assets/external-link-BjECE2gH.js">
121
- <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-DnJWzgZ1.js">
122
- <link rel="modulepreload" crossorigin href="./assets/auth-state-cache-D4z3eiMF.js">
121
+ <link rel="modulepreload" crossorigin href="./assets/keyboard-shortcuts-CvYXgqK4.js">
122
+ <link rel="modulepreload" crossorigin href="./assets/auth-state-cache-DyKWS3xm.js">
123
123
  <link rel="modulepreload" crossorigin href="./assets/toggle-group-CXHn0FKi.js">
124
124
  <link rel="modulepreload" crossorigin href="./assets/panel-BH2RZRZQ.js">
125
125
  <link rel="modulepreload" crossorigin href="./assets/format-EMqSStmm.js">
126
- <link rel="modulepreload" crossorigin href="./assets/selection-context-DALYXIVY.js">
127
- <link rel="modulepreload" crossorigin href="./assets/PropertyPanel-k3LSAy4u.js">
126
+ <link rel="modulepreload" crossorigin href="./assets/selection-context-JPA-xW1g.js">
127
+ <link rel="modulepreload" crossorigin href="./assets/PropertyPanel-JSTiSMvX.js">
128
128
  <link rel="modulepreload" crossorigin href="./assets/miss-dialog-store-PJQ_kr0I.js">
129
- <link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-D7JjzV1n.js">
129
+ <link rel="modulepreload" crossorigin href="./assets/pending-receive-nav-store-CAm5nHeI.js">
130
130
  <link rel="modulepreload" crossorigin href="./assets/chevron-left-BEP8MhU3.js">
131
- <link rel="modulepreload" crossorigin href="./assets/agent-presence-c_qxeP7e.js">
132
- <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-ko_Nb-fG.js">
131
+ <link rel="modulepreload" crossorigin href="./assets/agent-presence-DJQje6SV.js">
132
+ <link rel="modulepreload" crossorigin href="./assets/typing-burst-detector-DLup_S3P.js">
133
133
  <link rel="modulepreload" crossorigin href="./assets/project-paths-Bdm7wr4i.js">
134
- <link rel="modulepreload" crossorigin href="./assets/file-tree-adapter-B8tTfm_Y.js">
135
- <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-CpKCAQDV.js">
134
+ <link rel="modulepreload" crossorigin href="./assets/file-tree-adapter--v55j77z.js">
135
+ <link rel="modulepreload" crossorigin href="./assets/target-navigation-intent-C_Y-i35d.js">
136
136
  <link rel="modulepreload" crossorigin href="./assets/mcp-consent-store-BxRtlIhJ.js">
137
- <link rel="modulepreload" crossorigin href="./assets/receive-store-DWC9dc5j.js">
137
+ <link rel="modulepreload" crossorigin href="./assets/receive-store-C72xSCDE.js">
138
138
  <link rel="stylesheet" crossorigin href="./assets/DocumentContext-B0sQn39F.css">
139
139
  <link rel="stylesheet" crossorigin href="./assets/index-Ba1S3D-p.css">
140
140
  </head>
@@ -1,2 +1,2 @@
1
- import{t as e}from"./launch-json-removal-ByWYRF7W.mjs";import{join as t}from"node:path";function n(n){let i=n.logger??r,a=t(n.projectDir,`.claude`,`launch.json`);if(n.reclaimDisableEnv===`1`)return i({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:a,outcome:`skipped-reclaim-disabled`},repairedCount:0};let o;try{o=e(n.projectDir)}catch(e){let t=e instanceof Error?e.message:String(e);return i({event:`launch-json-repair-write-failed`,configPath:a}),{outcome:{configPath:a,outcome:`write-failed`,error:t},repairedCount:0}}let s=o.kind===`removed`||o.kind===`removed-file`;return s&&i({event:`launch-json-repair-removed`,configPath:a}),{outcome:{configPath:a,outcome:o.kind},repairedCount:s?1:0}}function r(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{n as repairLaunchJson};
2
- //# sourceMappingURL=repair-launch-json-BdfDMobg.mjs.map
1
+ import{t as e}from"./launch-json-removal-Bsd2If9V.mjs";import{join as t}from"node:path";function n(n){let i=n.logger??r,a=t(n.projectDir,`.claude`,`launch.json`);if(n.reclaimDisableEnv===`1`)return i({event:`launch-json-repair-skipped`,reason:`reclaim-disabled`}),{outcome:{configPath:a,outcome:`skipped-reclaim-disabled`},repairedCount:0};let o;try{o=e(n.projectDir)}catch(e){let t=e instanceof Error?e.message:String(e);return i({event:`launch-json-repair-write-failed`,configPath:a}),{outcome:{configPath:a,outcome:`write-failed`,error:t},repairedCount:0}}let s=o.kind===`removed`||o.kind===`removed-file`;return s&&i({event:`launch-json-repair-removed`,configPath:a}),{outcome:{configPath:a,outcome:o.kind},repairedCount:s?1:0}}function r(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{n as repairLaunchJson};
2
+ //# sourceMappingURL=repair-launch-json-CtA3dzno.mjs.map
@@ -1,2 +1,2 @@
1
- import{d as e,v as t}from"./init-E8FDYW-D.mjs";import{_ as n,d as r,s as i}from"./write-project-skill-BzVHToYO.mjs";import{t as a}from"./mcp-migrate-event-CyH1VVyy.mjs";import{homedir as o}from"node:os";function s(e){let t=e.logger??u,n=e.home??o(),a=[];if(e.reclaimDisableEnv===`1`)return t({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of i){let i=r[o],s=c(()=>i.configPath(``,n));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:i,home:n,cwd:``,configPath:s,configPathOverride:void 0,logger:t})),i.projectConfigPath){let n=i.projectConfigPath,r=c(()=>n(e.projectDir));r!==null&&a.push(l({scope:`project`,editorId:o,target:i,home:void 0,cwd:e.projectDir,configPath:r,configPathOverride:r,logger:t}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(r){let i={scope:r.scope,editorId:r.editorId,configPath:r.configPath},o=e(r.target,r.cwd,r.home,r.configPathOverride);if(o===null)return{...i,outcome:`no-entry`};if(n(o))return{...i,outcome:`canonical`};r.logger(a({scope:r.scope,surface:`cli-repair`,editorId:r.editorId,configPath:r.configPath,priorEntry:o}));let s=t(r.target,r.cwd,{mode:`published`,skipAvailabilityCheck:!0},r.home,r.configPathOverride);if(s.action===`failed`){let e=s.error??`unknown write failure`;return r.logger({event:`mcp-config-repair-write-failed`,scope:r.scope,editorId:r.editorId,configPath:r.configPath,error:e}),{...i,outcome:`write-failed`,error:e}}return s.action===`declined`?(r.logger({event:`mcp-config-repair-declined`,scope:r.scope,editorId:r.editorId,configPath:r.configPath,reason:s.declineReason}),{...i,outcome:`declined`}):{...i,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
- //# sourceMappingURL=repair-mcp-configs-DZMxi-7M.mjs.map
1
+ import{d as e,v as t}from"./init-Cj3rYYNW.mjs";import{_ as n,d as r,s as i}from"./write-project-skill-BzVHToYO.mjs";import{t as a}from"./mcp-migrate-event-CyH1VVyy.mjs";import{homedir as o}from"node:os";function s(e){let t=e.logger??u,n=e.home??o(),a=[];if(e.reclaimDisableEnv===`1`)return t({event:`mcp-config-repair-skipped`,reason:`reclaim-disabled`}),{outcomes:a,repairedCount:0};for(let o of i){let i=r[o],s=c(()=>i.configPath(``,n));if(s!==null&&a.push(l({scope:`user`,editorId:o,target:i,home:n,cwd:``,configPath:s,configPathOverride:void 0,logger:t})),i.projectConfigPath){let n=i.projectConfigPath,r=c(()=>n(e.projectDir));r!==null&&a.push(l({scope:`project`,editorId:o,target:i,home:void 0,cwd:e.projectDir,configPath:r,configPathOverride:r,logger:t}))}}return{outcomes:a,repairedCount:a.filter(e=>e.outcome===`repaired`).length}}function c(e){try{return e()}catch{return null}}function l(r){let i={scope:r.scope,editorId:r.editorId,configPath:r.configPath},o=e(r.target,r.cwd,r.home,r.configPathOverride);if(o===null)return{...i,outcome:`no-entry`};if(n(o))return{...i,outcome:`canonical`};r.logger(a({scope:r.scope,surface:`cli-repair`,editorId:r.editorId,configPath:r.configPath,priorEntry:o}));let s=t(r.target,r.cwd,{mode:`published`,skipAvailabilityCheck:!0},r.home,r.configPathOverride);if(s.action===`failed`){let e=s.error??`unknown write failure`;return r.logger({event:`mcp-config-repair-write-failed`,scope:r.scope,editorId:r.editorId,configPath:r.configPath,error:e}),{...i,outcome:`write-failed`,error:e}}return s.action===`declined`?(r.logger({event:`mcp-config-repair-declined`,scope:r.scope,editorId:r.editorId,configPath:r.configPath,reason:s.declineReason}),{...i,outcome:`declined`}):{...i,outcome:`repaired`}}function u(e){process.stderr.write(`${JSON.stringify(e)}\n`)}export{s as repairMcpConfigs};
2
+ //# sourceMappingURL=repair-mcp-configs-DP4ZjS6O.mjs.map
@@ -1,4 +1,4 @@
1
- import{s as e}from"./chunk-C94x7I9S.mjs";import{Ko as t,c as n,l as r,s as i,u as a}from"./server-lock-iLcBw_q0-RDMfTH6b.mjs";import{Ar as o,Sn as s,ei as c,fa as l,kr as u,un as d,vn as f}from"./dist-DAVo_TRx.mjs";import{t as p}from"./esm-CsQUg9js.mjs";import"./gh-detect-BxDh8M_E.mjs";import{E as m,S as ee,T as h,_ as g,b as te,o as ne,v as re,w as _}from"./init-E8FDYW-D.mjs";import{_ as ie,d as ae,i as oe,v}from"./write-project-skill-BzVHToYO.mjs";import"./loader-Bi7zAoyk.mjs";import{c as y}from"./colors-8SzMRIVy.mjs";import"./preview-hq0cdoZw.mjs";import{dirname as b,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import{hostname as se}from"node:os";import{existsSync as T,lstatSync as ce,readFileSync as E,readlinkSync as le,rmSync as ue,statSync as de}from"node:fs";import{readFile as D,realpath as O}from"node:fs/promises";function k(e,t,o={}){let s=a(e,t);if(!T(s))return{status:`missing`,lockPath:s};let c;try{c=JSON.parse(E(s,`utf-8`))}catch{return{status:`corrupt`,lockPath:s}}if(!c||typeof c!=`object`||!r(c.pid))return{status:`corrupt`,lockPath:s};let l=c;if(!(o.isAlive??n)(l.pid))return{status:`dead-pid`,lockPath:s,lock:l};if(typeof l.machineId==`string`)return l.machineId===(o.machineId??i())?{status:`alive`,lockPath:s,lock:l}:{status:`foreign-host`,lockPath:s,lock:l};let u=o.host??se();return l.hostname===u?{status:`alive`,lockPath:s,lock:l}:{status:`foreign-host`,lockPath:s,lock:l}}function A(e){return e.replace(/:\d+$/,``)}function j(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^(?:[\w.-]+@)?([\w.-]+):([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e?.[1].includes(`.`)||e&&t.startsWith(`git@`))return{protocol:`ssh`,hostname:e[1],owner:e[2],name:e[3]}}{let e=/^git:([\w.-]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:e[1],owner:e[2],name:e[3]}}if(!t.includes(`://`)&&!t.includes(`@`)&&!t.startsWith(`/`)){let e=/^([\w.-]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e)return{protocol:`https`,hostname:`github.com`,owner:e[1],name:e[2]}}return null}function M(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`github.com`&&t.hostname!==`www.github.com`)return null;let n=t.pathname.split(`/`).filter(e=>e.length>0);if(n.length<5||n[2]!==`blob`)return null;let r,i,a,o;try{r=decodeURIComponent(n[0]),i=decodeURIComponent(n[1]),a=decodeURIComponent(n[3]),o=n.slice(4).map(e=>decodeURIComponent(e))}catch{return null}return!r||!i||!a||o.length===0||o.some(e=>e.length===0)?null:{owner:r,repo:i,branch:a,path:o.join(`/`)}}function N(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`github.com`&&t.hostname!==`www.github.com`)return null;let n=t.pathname.split(`/`);if(n.length<5||n[0]!==``||n[3]!==`tree`)return null;let r=n.slice(5);r.length===1&&r[0]===``&&r.pop();let i,a,o,s;try{i=decodeURIComponent(n[1]),a=decodeURIComponent(n[2]),o=decodeURIComponent(n[4]),s=r.map(e=>decodeURIComponent(e))}catch{return null}return!i||!a||!o||s.some(e=>e.length===0)?null:{owner:i,repo:a,branch:o,path:s.join(`/`)}}function P(e){let t=M(e);if(t)return{kind:`doc`,...t};let n=N(e);return n?{kind:`folder`,...n}:null}const F=`# >>> open-knowledge cli >>>`,I=`# <<< open-knowledge cli <<<`,L=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function R(e){return S(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const z={existsSync:e=>T(e),readFileSync:(e,t)=>E(e,t),lstatSync:e=>ce(e),readlinkSync:e=>le(e)};function B(e,t=z){let n=R(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 V(e){let t=e.replace(L,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function H(e,t,n=z){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}var fe=t();function pe(e){return ie(e)||v(e)||ee(e)}const U=10*1024*1024;function me(e,t,n,r){let i=ne(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(!pe(i.entry))return{kind:`left-foreign`};let a;try{a=r??e.configPath(t,n)}catch{return{kind:`not-present`}}let o=e.serverName(t);return e.format===`file`?(ue(a,{force:!0}),{kind:`removed`}):e.format===`toml`?_e(a,o):e.format===`yaml`?ge(a,e.topLevelKey,o):he(a,e.topLevelKey,e.serverMapSubKey,o)}function he(e,t,n,r){let i;try{i=E(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(i,`utf-8`)>U)return{kind:`declined`,reason:`oversize`};let{text:a,changed:o}=m(i,g(t,n,r));return o?(l(e,a,{mode:_(e)}),{kind:`removed`}):{kind:`not-present`}}function ge(e,t,n){let r;try{r=E(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(r,`utf-8`)>U)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(),u=h(a);a.trim()===``||a.endsWith(`
1
+ import{s as e}from"./chunk-C94x7I9S.mjs";import{Ko as t,c as n,l as r,s as i,u as a}from"./server-lock-iLcBw_q0-RDMfTH6b.mjs";import{Ar as o,Sn as s,ei as c,fa as l,kr as u,un as d,vn as f}from"./dist-DAVo_TRx.mjs";import{t as p}from"./esm-CsQUg9js.mjs";import"./gh-detect-BxDh8M_E.mjs";import{E as m,S as ee,T as h,_ as g,b as te,o as ne,v as re,w as _}from"./init-Cj3rYYNW.mjs";import{_ as ie,d as ae,i as oe,v}from"./write-project-skill-BzVHToYO.mjs";import"./loader-DBQRSW23.mjs";import{c as y}from"./colors-8SzMRIVy.mjs";import"./preview-4_TQ2eLW.mjs";import{dirname as b,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import{hostname as se}from"node:os";import{existsSync as T,lstatSync as ce,readFileSync as E,readlinkSync as le,rmSync as ue,statSync as de}from"node:fs";import{readFile as D,realpath as O}from"node:fs/promises";function k(e,t,o={}){let s=a(e,t);if(!T(s))return{status:`missing`,lockPath:s};let c;try{c=JSON.parse(E(s,`utf-8`))}catch{return{status:`corrupt`,lockPath:s}}if(!c||typeof c!=`object`||!r(c.pid))return{status:`corrupt`,lockPath:s};let l=c;if(!(o.isAlive??n)(l.pid))return{status:`dead-pid`,lockPath:s,lock:l};if(typeof l.machineId==`string`)return l.machineId===(o.machineId??i())?{status:`alive`,lockPath:s,lock:l}:{status:`foreign-host`,lockPath:s,lock:l};let u=o.host??se();return l.hostname===u?{status:`alive`,lockPath:s,lock:l}:{status:`foreign-host`,lockPath:s,lock:l}}function A(e){return e.replace(/:\d+$/,``)}function j(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:A(e[1]),owner:e[2],name:e[3]}}{let e=/^(?:[\w.-]+@)?([\w.-]+):([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e?.[1].includes(`.`)||e&&t.startsWith(`git@`))return{protocol:`ssh`,hostname:e[1],owner:e[2],name:e[3]}}{let e=/^git:([\w.-]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:e[1],owner:e[2],name:e[3]}}if(!t.includes(`://`)&&!t.includes(`@`)&&!t.startsWith(`/`)){let e=/^([\w.-]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e)return{protocol:`https`,hostname:`github.com`,owner:e[1],name:e[2]}}return null}function M(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`github.com`&&t.hostname!==`www.github.com`)return null;let n=t.pathname.split(`/`).filter(e=>e.length>0);if(n.length<5||n[2]!==`blob`)return null;let r,i,a,o;try{r=decodeURIComponent(n[0]),i=decodeURIComponent(n[1]),a=decodeURIComponent(n[3]),o=n.slice(4).map(e=>decodeURIComponent(e))}catch{return null}return!r||!i||!a||o.length===0||o.some(e=>e.length===0)?null:{owner:r,repo:i,branch:a,path:o.join(`/`)}}function N(e){let t;try{t=new URL(e)}catch{return null}if(t.hostname!==`github.com`&&t.hostname!==`www.github.com`)return null;let n=t.pathname.split(`/`);if(n.length<5||n[0]!==``||n[3]!==`tree`)return null;let r=n.slice(5);r.length===1&&r[0]===``&&r.pop();let i,a,o,s;try{i=decodeURIComponent(n[1]),a=decodeURIComponent(n[2]),o=decodeURIComponent(n[4]),s=r.map(e=>decodeURIComponent(e))}catch{return null}return!i||!a||!o||s.some(e=>e.length===0)?null:{owner:i,repo:a,branch:o,path:s.join(`/`)}}function P(e){let t=M(e);if(t)return{kind:`doc`,...t};let n=N(e);return n?{kind:`folder`,...n}:null}const F=`# >>> open-knowledge cli >>>`,I=`# <<< open-knowledge cli <<<`,L=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function R(e){return S(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const z={existsSync:e=>T(e),readFileSync:(e,t)=>E(e,t),lstatSync:e=>ce(e),readlinkSync:e=>le(e)};function B(e,t=z){let n=R(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 V(e){let t=e.replace(L,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function H(e,t,n=z){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}var fe=t();function pe(e){return ie(e)||v(e)||ee(e)}const U=10*1024*1024;function me(e,t,n,r){let i=ne(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(!pe(i.entry))return{kind:`left-foreign`};let a;try{a=r??e.configPath(t,n)}catch{return{kind:`not-present`}}let o=e.serverName(t);return e.format===`file`?(ue(a,{force:!0}),{kind:`removed`}):e.format===`toml`?_e(a,o):e.format===`yaml`?ge(a,e.topLevelKey,o):he(a,e.topLevelKey,e.serverMapSubKey,o)}function he(e,t,n,r){let i;try{i=E(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(i,`utf-8`)>U)return{kind:`declined`,reason:`oversize`};let{text:a,changed:o}=m(i,g(t,n,r));return o?(l(e,a,{mode:_(e)}),{kind:`removed`}):{kind:`not-present`}}function ge(e,t,n){let r;try{r=E(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(r,`utf-8`)>U)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(),u=h(a);a.trim()===``||a.endsWith(`
2
2
  `)?c.endsWith(`
3
3
  `)||(c=`${c}\n`):c=c.replace(/\n+$/,``),u&&(c=c.replace(/\r\n/g,`
4
4
  `).replace(/\n/g,`\r
@@ -8,4 +8,4 @@ import{s as e}from"./chunk-C94x7I9S.mjs";import{Ko as t,c as n,l as r,s as i,u a
8
8
  `).replace(/\n/g,`\r
9
9
  `));let d=`${i?``:``}${u}`;return d!==r&&l(e,d,{mode:_(e)}),{kind:`removed`}}const ve=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`deinit`]);function ye(e,t,n=s){if(e!==void 0&&!ve.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let W=null;function be(e){W=e}function xe(){return W??process.cwd()}var G=e(y(),1);function Se(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function Ce(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function we(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:f(r),command:r,isDesktop:Se(r)}}function Te(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function K(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&Te(e)?`ui-orphan`:`stale`}const Ee=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function De(e){switch(e){case`running`:return G.default.green(e);case`desktop`:return G.default.blue(e);case`foreign`:return G.default.cyan(e);case`ui-orphan`:return G.default.magenta(e);case`stale`:return G.default.yellow(e)}}function q(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function Oe(e){return`${q(e.server.usage)} | ${q(e.ui?.usage??null)}`}function ke(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function Ae(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=K(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,ke(e),Oe(e),t,String(n),Ce(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=De(K(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=G.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
10
10
  `)}async function J(e={}){let t=e.discover??d,n=e.inspect??k,r=e.log??(e=>console.log(e)),i=e.resolveCommand??u,a=e.resolveUsage??o,s=await t(),c=[];for(let e of s){let t=n(e,`server`),r=n(e,`ui`),o=we(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&c.push(o)}if(e.json){let e=c.map(e=>({...e,displayStatus:K(e)}));r(JSON.stringify(e,null,2));return}r(Ae(e.all?c:c.filter(e=>Ee.has(K(e)))))}function je(){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 J({all:t.all===!0||e===`all`,json:t.json===!0})})}function Me(e,t,r={}){let i=r.isAlive??n,a=[];for(let[n,r]of[[`server`,e],[`ui`,t]])(r.status===`alive`||r.status===`foreign-host`&&i(r.lock.pid))&&a.push({name:n,pid:r.lock.pid,port:r.lock.port});return{targets:a}}function Y(e){let t=e.inspect??(t=>k(e.lockDir,t)),n=e.kill??((e,t)=>process.kill(e,t)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Me(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function X(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function Ne(e,t=n){let r=await d(),i=null;for(let n of r){let r=k(n,`server`),a=k(n,`ui`);if(X(r,t)&&r.lock.port===e||X(a,t)&&a.lock.port===e)return n;i===null&&(X(r,t)&&r.lock.pid===e||X(a,t)&&a.lock.pid===e)&&(i=n)}return i}function Z(e){let t=Y({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function Pe(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"`).action(async t=>{let r=t.length===0?void 0:t.join(` `);if(r===void 0){e();let t=Y({lockDir:c(process.cwd()),log:()=>{}});if(t.hadTargets){if(t.stopped.length>0){let e=t.stopped.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `);console.log(`Stopped: ${e}`)}t.failed.length>0&&(process.exitCode=1)}else await J({});return}if(r===`all`){let e=await d();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let r of e){let e=k(r,`server`),i=k(r,`ui`);!X(e,n)&&!X(i,n)||(Z(r),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(r)){let e=Number.parseInt(r,10),t=await Ne(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}Z(t);return}Z(c(w(xe(),r)))})}function Fe(e){return{event:`mcp-config-decline`,scope:e.scope,surface:e.surface,editorId:e.editorId,reason:e.reason}}async function Q(e,t){let n,r;try{n=await O(w(e)),r=await O(w(b(e)))}catch{return{kind:`not-git`}}if(!$(n,r))return{kind:`symlink-escape`};let i=S(n,`.git`),a;try{a=de(i)}catch{return{kind:`not-git`}}let o;if(a.isDirectory()){let e;try{e=await O(i)}catch{return{kind:`not-git`}}if(!$(e,n))return{kind:`symlink-escape`};o=e}else if(a.isFile()){let e;try{e=await D(i,`utf-8`)}catch{return{kind:`not-git`}}let t=/^gitdir:\s*(.+)$/m.exec(e.trim());if(!t)return{kind:`not-git`};let r=t[1].trim(),a=x(r)?r:w(n,r);try{o=await O(a)}catch{return{kind:`not-git`}}}else return{kind:`not-git`};let s=S(await Ie(o),`config`),c;try{c=await D(s,`utf-8`)}catch{return{kind:`not-git`}}let l=Re(c);if(l===null)return{kind:`no-origin`};let u=j(l);if(u===null||u.hostname!==`github.com`)return{kind:`non-github`};let d=u.owner.toLowerCase()===t.owner.toLowerCase(),f=u.name.toLowerCase()===t.repo.toLowerCase();return!d||!f?{kind:`wrong-repo`,actualOwner:u.owner,actualRepo:u.name}:{kind:`ok`,gitRemoteUrl:`https://github.com/${u.owner}/${u.name}.git`}}async function Ie(e){let t;try{t=(await D(S(e,`commondir`),`utf-8`)).trim()}catch{return e}if(t.length===0)return e;let n=x(t)?t:w(e,t);try{return await O(n)}catch{return n}}function $(e,t){if(e===t)return!0;let n=C(t,e);return n.length>0&&!n.startsWith(`..`)&&!x(n)}function Le(e){let t=e.indexOf(`#`),n=e.indexOf(`;`),r=-1;return t>=0&&n>=0?r=Math.min(t,n):t>=0?r=t:n>=0&&(r=n),(r===-1?e:e.slice(0,r)).trim()}function Re(e){let t=!1;for(let n of e.split(/\r?\n/)){let e=Le(n);if(e.length===0)continue;if(e.startsWith(`[`)){t=/^\[\s*remote\s+["']origin["']\s*\]$/.test(e);continue}if(!t)continue;let r=/^url\s*=\s*(.+)$/.exec(e);if(r)return ze(r[1])}return null}function ze(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}const Be=[{id:`mcp-config`,write(e,t,n){let r=e.projectConfigPath?.(t);if(!r)return{integration:`mcp-config`,editorId:e.id,action:`skipped-unsupported`};try{let i=re(e,t,n,void 0,r);return i.action===`written`||i.action===`overwritten`?{integration:`mcp-config`,editorId:e.id,action:i.action,path:i.configPath}:i.action===`failed`?{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:i.error??`unknown failure`}:i.action===`declined`?{integration:`mcp-config`,editorId:e.id,action:`declined`,path:i.configPath,...i.declineReason===void 0?{}:{reason:i.declineReason}}:{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:`unexpected project-scope action: ${i.action}`}}catch(t){return{integration:`mcp-config`,editorId:e.id,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}},{id:`project-skill`,write(e,t,n){try{let n=oe(e,t);return{integration:`project-skill`,editorId:e.id,action:n.action,...n.path?{path:n.path}:{},...n.error?{error:n.error}:{}}}catch(t){return{integration:`project-skill`,editorId:e.id,action:`failed`,error:t instanceof Error?t.message:String(t)}}}}];function Ve(e,t,n={},r=Be){let i=[];for(let a of t){let t=ae[a];for(let a of r)i.push(a.write(t,e,n))}return i}function He(e,t,n={}){return{integrations:Ve(e,t,n)}}export{M as _,Pe as a,j as b,ye as c,L as d,I as f,V as g,B as h,Y as i,me as l,R as m,Q as n,je as o,H as p,Fe as r,be as s,He as t,F as u,P as v,k as x,N as y};
11
- //# sourceMappingURL=src-Bi9Si6vM.mjs.map
11
+ //# sourceMappingURL=src-Z7vZvOn3.mjs.map
@@ -1,3 +1,3 @@
1
- import{Mn as e,ht as t}from"./server-lock-iLcBw_q0-RDMfTH6b.mjs";import{Or as n,ar as r,vr as i}from"./dist-DAVo_TRx.mjs";import{n as a,t as o}from"./esm-CsQUg9js.mjs";import{i as s,t as c}from"./gh-detect-BxDh8M_E.mjs";import{n as l}from"./constants-BGBZW_Qv.mjs";import{spawn as u}from"node:child_process";import{basename as d,dirname as f,join as p}from"node:path";import{homedir as m}from"node:os";import{closeSync as h,existsSync as g,mkdirSync as _,openSync as v,statSync as y}from"node:fs";import{rm as b}from"node:fs/promises";import{setTimeout as x}from"node:timers/promises";const S=`OpenKnowledge.app`,C=`/Applications/${S}`;function w(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return y(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function T(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(E(e,C))return C;let t=p(e.homeDir??m(),`Applications`,S);return E(e,t)?t:null}function E(e,t){try{let n=p(t,`Contents`,`MacOS`,`OpenKnowledge`),r=e.statSync(n);return r&&typeof r.isFile==`function`?r.isFile():!1}catch{return!1}}function D(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`)return{available:!1,reason:`darwin-only`};let t;try{t=T(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:e.isTTY!==!0||e.env.SSH_CONNECTION||e.env.SSH_TTY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function O(e){(e.log??(e=>console.error(e)))("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)");let t={...process.env};delete t.ELECTRON_RUN_AS_NODE,e.spawn(`open`,[`-b`,`com.inkeep.open-knowledge`],{detached:!0,stdio:`ignore`,env:t}).unref()}function k(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found at ${C}. Install via DMG, or omit --mode for browser mode.`;case`darwin-only`:return`Desktop app is macOS-only on this release. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect desktop bundle at ${C} (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available at ${C} but launch dispatch did not fire (caller bug).`}}function A(e){return p(f(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const j=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function M(e){if(e.platform!==`darwin`||!j.test(e.execPath))return null;let t=A(e.execPath);return e.exists(t)?t:null}function N(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??g,a=r[1];return a?{command:M({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function P(e,t){return e.host??t.HOST??`127.0.0.1`}function F(e){let t=d(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var I=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function L(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function R(t){g(t.lockDir)||_(t.lockDir,{recursive:!0});let n=v(p(t.lockDir,e),`w`),r=t.spawn??u,{PORT:i,...a}=process.env,o=N();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{h(n)}catch{}}}function z(e,t,n){return e??(n===void 0?t:void 0)}function B(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function V(e,t,n){return e??(t!=null&&!n?1:0)}async function H(e){let t=e.spawn??u,n=N(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=V(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function U(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const W=t;function G(e,t,n=e=>b(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function K(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?1:0,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(i?1:0)}}}function q(e){let t=e.sigtermGraceMs??W,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>x(e));return async()=>{try{let i=e.readUiLock();if(i&&e.isAlive(i.pid))try{e.killPid(i.pid,`SIGTERM`),e.log?.info({pid:i.pid,port:i.port},`idle-shutdown: SIGTERM UI sibling`);let a=Date.now()+t;for(;Date.now()<a&&e.isAlive(i.pid);)await r(n);if(e.isAlive(i.pid))try{e.killPid(i.pid,`SIGKILL`),e.log?.warn({pid:i.pid,graceMs:t},`idle-shutdown: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:i.pid,err:t instanceof Error?t.message:String(t)},`idle-shutdown: SIGKILL failed`)}}catch(t){e.log?.warn({pid:i.pid,err:t instanceof Error?t.message:String(t)},`idle-shutdown: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t instanceof Error?t.message:String(t)},`idle-shutdown: UI lookup failed; proceeding with destroy`)}await e.destroy()}}async function J(e){let{config:t,cwd:a,host:o}=e,l=e.skipAutoInit??!1,u=e.skipUiAutoSpawn??!1,d=e.idleThresholdMs??18e5,{existsSync:f,mkdirSync:p}=await import(`node:fs`),{basename:m,dirname:h}=await import(`node:path`),{bootServer:g,getLogger:_,isProcessAlive:v,readUiLock:y,resolveContentDir:b,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./dist-DJ0wJimx.mjs`),w=e.log??_(`start`),T=e.singleFile!==void 0,E=e.projectDir??a,D=T?n(e.singleFile).canonicalFilePath:void 0,O=D?h(D):void 0,k=D?m(D):void 0;if(!T){if(!l&&!r(a))throw new I(a);let t=process.env.OK_RECLAIM_DISABLE??null,n=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-DZMxi-7M.mjs`)).repairMcpConfigs)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-BdfDMobg.mjs`)).repairLaunchJson)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-B0TdudPZ.mjs`)).repairSkills)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let A=O??b(t,a);!T&&!f(A)&&(p(A,{recursive:!0}),w.info({contentDir:A},`Created content directory`));let j=null,M=async({lockDir:t})=>{if(j=L({uiLock:y(t),isAlive:v}),j.action===`spawn`&&!u)try{let n=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];R({lockDir:t,cwd:a,spawn:e.spawn,args:n}),w.info({reason:j.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else j.action===`skip`&&w.info({port:j.port,pid:j.pid},`UI already running at port ${j.port}`)},N=e.reactShellDistDir===void 0,P=s(),F=i();{let e=S(T?E:a),t=Date.now(),n=await C(e);n!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:n,waitedMs:Date.now()-t,drainLockDir:e},n===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let z=await g({config:t,contentDir:A,projectDir:T?E:a,contentRoot:T?void 0:t.content.dir,port:e.port,host:o,quiet:!1,detectGh:c,tokenStore:P,embeddingsKeyStore:F,...T?{ephemeral:!0,singleDocRelPath:k,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],attachUiSibling:N,idleShutdownMs:d,skipAutoInit:!0,...N?{spawnUiSiblingFn:M}:{},idleShutdownHandler:t=>{let n=q({readUiLock:()=>y(z.lockDir),isAlive:v,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return K(T?G(n,E):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets?{serveContentAssets:!0}:{},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});j||={action:`skip`,reason:`alive`,pid:0,port:0};let B=j,V=null;if(B.action===`skip`)V=B.port>0?B.port:null;else if(!u){let t=e.uiBindTimeoutMs??3e3;V=await U({readUiLock:()=>y(z.lockDir),now:Date.now,sleep:e=>x(e),timeoutMs:t,pollIntervalMs:50}),V===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:z.httpServer,destroy:z.destroy,lockDir:z.lockDir,contentDir:A,port:z.port,ready:z.ready,degraded:z.degraded,uiSpawnDecision:j,resolvedUiPort:V}}function ee(e){if(e===`browser`||e===`app`)return e;throw new a(`--mode must be 'browser' or 'app'`)}function te(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new a(`--ui-port must be a port number between 1 and 65535`);return t}function Y(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function X(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 Z(e,t){let n=Y(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner-BLebOalA.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-CmkIIbww.mjs`),c=process.cwd(),u=e;process.title=F(c);let d=P(t,process.env),f=t.port===void 0?void 0:Number(t.port),p=process.env.PORT?Number(process.env.PORT):void 0,m=t.uiPort===void 0?void 0:Number(t.uiPort),h=z(f,p,m);if(m!==void 0){let{readServerLock:e,resolveLockDir:t}=await import(`./dist-DJ0wJimx.mjs`);if(B(m,e(t(c)))){await H({cwd:c,uiPort:m});return}}let g;try{g=await J({config:u,cwd:c,host:d,port:h,...m===void 0?{}:{uiPort:m},...t.serveContentAssets?{serveContentAssets:!0}:{},...t.reactShellDistDir?{reactShellDistDir:t.reactShellDistDir}:{},...t.singleFile?{singleFile:t.singleFile}:{},...t.projectDir?{projectDir:t.projectDir}:{}})}catch(e){e instanceof I&&(console.error(o(e.message)),process.exit(1));let t=await import(`./dist-DJ0wJimx.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(o(e.message)),process.exit(1)),m!==void 0&&Q(e,t)){await H({cwd:c,uiPort:m});return}let n=$(e,c,t);n!==null&&(console.error(o(n)),process.exit(1)),console.error(`${o(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let _=!1,v=async e=>{if(_)return;_=!0;let[t,...n]=X(e);console.log(i(`\n${t}`));for(let e of n)console.log(a(` ${e}`));try{await g.destroy()}catch(e){console.error(`${o(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{v(`SIGINT`)}),process.once(`SIGTERM`,()=>{v(`SIGTERM`)});let y=`http://${d}:${g.port}`,b=d===`0.0.0.0`||d===`::`?`http://0.0.0.0:${g.port}`:void 0,x=g.resolvedUiPort,S=x!==null&&x>0?`http://${d}:${x}`:y;console.log(r({name:`open-knowledge`,version:l,localUrl:S,apiUrl:S===y?void 0:y,networkUrl:b,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let C={"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`};g.ready.then(async()=>{if(g.degraded.length>0){console.log();for(let e of g.degraded){let t=C[e]??`${e} (check server logs for details)`;console.warn(` ${s(`⚠`)} ${s(e)}: ${a(t)}`)}console.log()}if(t.open){let{openBrowser:e}=await import(`./open-browser-6ztGUs93.mjs`);e(S)}}).catch(e=>{console.error(` ${o(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}function Q(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function $(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=p(t,`.ok`),r=n.readServerLock(e);return r?r.kind===`interactive`?`OpenKnowledge desktop is currently running on this project. Quit it or use --cwd to point elsewhere.`:r.kind===`mcp-spawned`?"An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`."}catch{return null}}function ne(e){return new o(`start`).description(`Start the knowledge base collab server`).option(`-p, --port <port>`,`Server port`,void 0).option(`--ui-port <port>`,`Pin the ok ui sibling to <port> and connect (not exit) if a server already runs here — the worktree-preview recipe path`,te).option(`-H, --host <host>`,`Server host`,void 0).option(`--open`,`Open browser after start`).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ee).option(`--serve-content-assets`,`Serve content assets from this server`).option(`--react-shell-dist-dir <path>`,`Serve React shell from <path> (suppresses ok ui sibling)`).option(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).option(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).action(async t=>{let n=e();if(t.mode===`app`){t.open&&(process.stderr.write(`error: option '--mode=app' cannot be combined with '--open' (--open opens a browser tab against the local server, which app mode does not boot)
1
+ import{Mn as e,ht as t}from"./server-lock-iLcBw_q0-RDMfTH6b.mjs";import{Or as n,ar as r,vr as i}from"./dist-DAVo_TRx.mjs";import{n as a,t as o}from"./esm-CsQUg9js.mjs";import{i as s,t as c}from"./gh-detect-BxDh8M_E.mjs";import{n as l}from"./constants-CgHcIqh6.mjs";import{spawn as u}from"node:child_process";import{basename as d,dirname as f,join as p}from"node:path";import{homedir as m}from"node:os";import{closeSync as h,existsSync as g,mkdirSync as _,openSync as v,statSync as y}from"node:fs";import{rm as b}from"node:fs/promises";import{setTimeout as x}from"node:timers/promises";const S=`OpenKnowledge.app`,C=`/Applications/${S}`;function w(){return{platform:process.platform,env:process.env,execPath:process.execPath,isTTY:process.stdout.isTTY,statSync:e=>{try{return y(e,{throwIfNoEntry:!1})??null}catch{return null}}}}function T(e){if(e.env.ELECTRON_RUN_AS_NODE===`1`){let t=/(.+?\.app)\/Contents\/MacOS\//.exec(e.execPath);if(t?.[1])return t[1]}if(E(e,C))return C;let t=p(e.homeDir??m(),`Applications`,S);return E(e,t)?t:null}function E(e,t){try{let n=p(t,`Contents`,`MacOS`,`OpenKnowledge`),r=e.statSync(n);return r&&typeof r.isFile==`function`?r.isFile():!1}catch{return!1}}function D(e){if(e.env.OK_FORCE_BROWSER===`1`)return{available:!1,reason:`force-browser`};if(e.platform!==`darwin`)return{available:!1,reason:`darwin-only`};let t;try{t=T(e)}catch{return{available:!1,reason:`stat-error`}}return t?e.env.OK_FORCE_DESKTOP===`1`?{available:!0,reason:`available`,bundlePath:t}:e.isTTY!==!0||e.env.SSH_CONNECTION||e.env.SSH_TTY?{available:!1,reason:`headless`,bundlePath:t}:{available:!0,reason:`available`,bundlePath:t}:{available:!1,reason:`no-bundle`}}function O(e){(e.log??(e=>console.error(e)))("Launching OpenKnowledge desktop (use `ok start` for the browser server, or `OK_FORCE_BROWSER=1` to always skip)");let t={...process.env};delete t.ELECTRON_RUN_AS_NODE,e.spawn(`open`,[`-b`,`com.inkeep.open-knowledge`],{detached:!0,stdio:`ignore`,env:t}).unref()}function k(e=`no-bundle`){switch(e){case`no-bundle`:return`Desktop app not found at ${C}. Install via DMG, or omit --mode for browser mode.`;case`darwin-only`:return`Desktop app is macOS-only on this release. Use --mode=browser, or omit --mode for the server fallback.`;case`headless`:return`Desktop launch is gated in headless contexts (CI, SSH, non-TTY stdout). Set OK_FORCE_DESKTOP=1 to override, or use --mode=browser.`;case`force-browser`:return`OK_FORCE_BROWSER=1 is set — desktop dispatch is disabled. Unset it to use --mode=app.`;case`stat-error`:return`Failed to inspect desktop bundle at ${C} (filesystem error). Check permissions or use --mode=browser.`;case`available`:return`Desktop app appears available at ${C} but launch dispatch did not fire (caller bug).`}}function A(e){return p(f(e),`..`,`Frameworks`,`OpenKnowledge Server.app`,`Contents`,`MacOS`,`OpenKnowledge Helper`)}const j=/\/[^/]+\.app\/Contents\/MacOS\/[^/]+$/;function M(e){if(e.platform!==`darwin`||!j.test(e.execPath))return null;let t=A(e.execPath);return e.exists(t)?t:null}function N(e={}){let t=e.execPath??process.execPath,n=e.platform??process.platform,r=e.argv??process.argv,i=e.exists??g,a=r[1];return a?{command:M({execPath:t,platform:n,exists:i})??t,prefixArgs:[a]}:(console.warn(`[self-spawn] process.argv[1] is empty — falling back to \`npx -y @inkeep/open-knowledge@latest\`. This re-introduces the registry-fetch surface that re-exec was fixing. Observed argv: ${JSON.stringify(r)}`),{command:`npx`,prefixArgs:[`-y`,`@inkeep/open-knowledge@latest`]})}function P(e,t){return e.host??t.HOST??`127.0.0.1`}function F(e){let t=d(e).replace(/[^\x20-\x7E]/g,``).trim().slice(0,64);return`open-knowledge-server ${t.length>0?t:`unknown`}`}var I=class extends Error{cwd;constructor(e){super("This directory isn't set up yet. Run `ok init` first, then `ok start` again."),this.name=`OkDirMissingError`,this.cwd=e}};function L(e){return e.uiLock?e.isAlive(e.uiLock.pid)?{action:`skip`,reason:`alive`,pid:e.uiLock.pid,port:e.uiLock.port}:{action:`spawn`,reason:`stale`,stalePid:e.uiLock.pid}:{action:`spawn`,reason:`absent`}}function R(t){g(t.lockDir)||_(t.lockDir,{recursive:!0});let n=v(p(t.lockDir,e),`w`),r=t.spawn??u,{PORT:i,...a}=process.env,o=N();try{let e=r(o.command,[...o.prefixArgs,...t.args??[`ui`]],{detached:!0,stdio:[`ignore`,`ignore`,n],windowsHide:!0,cwd:t.cwd,env:{...a,ELECTRON_RUN_AS_NODE:`1`}});return e.unref(),e}finally{try{h(n)}catch{}}}function z(e,t,n){return e??(n===void 0?t:void 0)}function B(e,t){return e!==void 0&&t!==null&&t.port>0&&t.draining!==!0}function V(e,t,n){return e??(t!=null&&!n?1:0)}async function H(e){let t=e.spawn??u,n=N(),{PORT:r,...i}=process.env,a=t(n.command,[...n.prefixArgs,`ui`,`--port`,String(e.uiPort)],{cwd:e.cwd,stdio:`inherit`,windowsHide:!0,env:{...i,ELECTRON_RUN_AS_NODE:`1`}}),o=!1,s=e=>{o=!0;try{a.kill(e)}catch{}},c=()=>s(`SIGINT`),l=()=>s(`SIGTERM`);process.once(`SIGINT`,c),process.once(`SIGTERM`,l),await new Promise(e=>{a.on(`exit`,(t,n)=>{process.exitCode=V(t,n,o),e()}),a.on(`error`,t=>{console.error(`[start] connect fallback: failed to spawn ok ui — ${t instanceof Error?t.message:String(t)}`),process.exitCode=1,e()})}),process.removeListener(`SIGINT`,c),process.removeListener(`SIGTERM`,l)}async function U(e){let t=e.now()+e.timeoutMs;for(;e.now()<t;){let t=e.readUiLock();if(t&&t.port>0)return t.port;await e.sleep(e.pollIntervalMs)}let n=e.readUiLock();return n&&n.port>0?n.port:null}const W=t;function G(e,t,n=e=>b(e,{recursive:!0,force:!0})){return async()=>{try{await e()}finally{try{await n(t)}catch(e){process.stderr.write(`[start] ephemeral temp dir reap failed for ${t}: ${e instanceof Error?e.message:String(e)}\n`)}}}}function K(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?1:0,openHandles:e??{},handlesAvailable:e!==null},`idle-shutdown: teardown finished — exiting process`),n(i?1:0)}}}function q(e){let t=e.sigtermGraceMs??W,n=e.sigtermPollIntervalMs??200,r=e.sleep??(e=>x(e));return async()=>{try{let i=e.readUiLock();if(i&&e.isAlive(i.pid))try{e.killPid(i.pid,`SIGTERM`),e.log?.info({pid:i.pid,port:i.port},`idle-shutdown: SIGTERM UI sibling`);let a=Date.now()+t;for(;Date.now()<a&&e.isAlive(i.pid);)await r(n);if(e.isAlive(i.pid))try{e.killPid(i.pid,`SIGKILL`),e.log?.warn({pid:i.pid,graceMs:t},`idle-shutdown: SIGTERM grace expired — escalated to SIGKILL`)}catch(t){e.log?.error({pid:i.pid,err:t instanceof Error?t.message:String(t)},`idle-shutdown: SIGKILL failed`)}}catch(t){e.log?.warn({pid:i.pid,err:t instanceof Error?t.message:String(t)},`idle-shutdown: failed to SIGTERM UI sibling`)}}catch(t){e.log?.warn({err:t instanceof Error?t.message:String(t)},`idle-shutdown: UI lookup failed; proceeding with destroy`)}await e.destroy()}}async function J(e){let{config:t,cwd:a,host:o}=e,l=e.skipAutoInit??!1,u=e.skipUiAutoSpawn??!1,d=e.idleThresholdMs??18e5,{existsSync:f,mkdirSync:p}=await import(`node:fs`),{basename:m,dirname:h}=await import(`node:path`),{bootServer:g,getLogger:_,isProcessAlive:v,readUiLock:y,resolveContentDir:b,resolveLockDir:S,waitForServerLockDrain:C}=await import(`./dist-DJ0wJimx.mjs`),w=e.log??_(`start`),T=e.singleFile!==void 0,E=e.projectDir??a,D=T?n(e.singleFile).canonicalFilePath:void 0,O=D?h(D):void 0,k=D?m(D):void 0;if(!T){if(!l&&!r(a))throw new I(a);let t=process.env.OK_RECLAIM_DISABLE??null,n=e=>{let t=typeof e.event==`string`?e.event:``;(t.endsWith(`-failed`)||t.endsWith(`-error`)||t.endsWith(`-missing`))&&w.warn({event:e},`[start] reclaim sweep reported a problem`)};try{(e.repairMcpConfigsFn??(await import(`./repair-mcp-configs-DP4ZjS6O.mjs`)).repairMcpConfigs)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] mcp-config repair sweep failed; continuing`)}try{(e.repairLaunchJsonFn??(await import(`./repair-launch-json-CtA3dzno.mjs`)).repairLaunchJson)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] launch.json repair sweep failed; continuing`)}try{await(e.repairSkillsFn??(await import(`./repair-skills-B0TdudPZ.mjs`)).repairSkills)({projectDir:a,reclaimDisableEnv:t,logger:n})}catch(e){w.warn({err:e},`[start] skill repair sweep failed; continuing`)}}let A=O??b(t,a);!T&&!f(A)&&(p(A,{recursive:!0}),w.info({contentDir:A},`Created content directory`));let j=null,M=async({lockDir:t})=>{if(j=L({uiLock:y(t),isAlive:v}),j.action===`spawn`&&!u)try{let n=e.uiPort===void 0?void 0:[`ui`,`--port`,String(e.uiPort)];R({lockDir:t,cwd:a,spawn:e.spawn,args:n}),w.info({reason:j.reason,uiPort:e.uiPort},`[start] auto-spawned ok ui sibling`)}catch(e){console.warn(`[start] failed to auto-spawn ok ui: ${e instanceof Error?e.message:String(e)}`)}else j.action===`skip`&&w.info({port:j.port,pid:j.pid},`UI already running at port ${j.port}`)},N=e.reactShellDistDir===void 0,P=s(),F=i();{let e=S(T?E:a),t=Date.now(),n=await C(e);n!==`no-drain`&&w.info({event:`start-waited-for-draining-predecessor`,outcome:n,waitedMs:Date.now()-t,drainLockDir:e},n===`released`?`[start] predecessor server finished draining — proceeding`:`[start] predecessor server still draining after wait — proceeding to collide`)}let z=await g({config:t,contentDir:A,projectDir:T?E:a,contentRoot:T?void 0:t.content.dir,port:e.port,host:o,quiet:!1,detectGh:c,tokenStore:P,embeddingsKeyStore:F,...T?{ephemeral:!0,singleDocRelPath:k,gitEnabled:!1,gitPreflight:()=>({ok:!0,version:`0.0.0`,resolvedPath:`git`,source:`PATH`})}:{},localOpCliArgs:[process.execPath,process.argv[1]],attachUiSibling:N,idleShutdownMs:d,skipAutoInit:!0,...N?{spawnUiSiblingFn:M}:{},idleShutdownHandler:t=>{let n=q({readUiLock:()=>y(z.lockDir),isAlive:v,killPid:(e,t)=>{process.kill(e,t)},destroy:t,log:w});return K(T?G(n,E):n,{log:w,exit:e.idleExit})},log:w,...e.serveContentAssets?{serveContentAssets:!0}:{},...e.reactShellDistDir?{reactShellDistDir:e.reactShellDistDir}:{}});j||={action:`skip`,reason:`alive`,pid:0,port:0};let B=j,V=null;if(B.action===`skip`)V=B.port>0?B.port:null;else if(!u){let t=e.uiBindTimeoutMs??3e3;V=await U({readUiLock:()=>y(z.lockDir),now:Date.now,sleep:e=>x(e),timeoutMs:t,pollIntervalMs:50}),V===null&&w.warn({timeoutMs:t},`[start] ok ui did not bind within timeout — banner falls back to API URL`)}return{httpServer:z.httpServer,destroy:z.destroy,lockDir:z.lockDir,contentDir:A,port:z.port,ready:z.ready,degraded:z.degraded,uiSpawnDecision:j,resolvedUiPort:V}}function ee(e){if(e===`browser`||e===`app`)return e;throw new a(`--mode must be 'browser' or 'app'`)}function te(e){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<1||t>65535)throw new a(`--ui-port must be a port number between 1 and 65535`);return t}function Y(e){return e.OK_CONSOLE_LEVEL!==void 0||e.LOG_LEVEL!==void 0?null:`warn`}function X(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 Z(e,t){let n=Y(process.env);n!==null&&(process.env.OK_CONSOLE_LEVEL=n);let{renderBanner:r}=await import(`./banner-BLebOalA.mjs`),{accent:i,dim:a,error:o,warning:s}=await import(`./colors-CmkIIbww.mjs`),c=process.cwd(),u=e;process.title=F(c);let d=P(t,process.env),f=t.port===void 0?void 0:Number(t.port),p=process.env.PORT?Number(process.env.PORT):void 0,m=t.uiPort===void 0?void 0:Number(t.uiPort),h=z(f,p,m);if(m!==void 0){let{readServerLock:e,resolveLockDir:t}=await import(`./dist-DJ0wJimx.mjs`);if(B(m,e(t(c)))){await H({cwd:c,uiPort:m});return}}let g;try{g=await J({config:u,cwd:c,host:d,port:h,...m===void 0?{}:{uiPort:m},...t.serveContentAssets?{serveContentAssets:!0}:{},...t.reactShellDistDir?{reactShellDistDir:t.reactShellDistDir}:{},...t.singleFile?{singleFile:t.singleFile}:{},...t.projectDir?{projectDir:t.projectDir}:{}})}catch(e){e instanceof I&&(console.error(o(e.message)),process.exit(1));let t=await import(`./dist-DJ0wJimx.mjs`);if((e instanceof t.GitNotAvailableError||e instanceof t.GitTooOldError)&&process.exit(78),(e instanceof t.SingleFileNotFoundError||e instanceof t.SingleFileNotAFileError||e instanceof t.SingleFileNotMarkdownError)&&(console.error(o(e.message)),process.exit(1)),m!==void 0&&Q(e,t)){await H({cwd:c,uiPort:m});return}let n=$(e,c,t);n!==null&&(console.error(o(n)),process.exit(1)),console.error(`${o(`Failed to start:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exit(1)}let _=!1,v=async e=>{if(_)return;_=!0;let[t,...n]=X(e);console.log(i(`\n${t}`));for(let e of n)console.log(a(` ${e}`));try{await g.destroy()}catch(e){console.error(`${o(`destroy() failed:`)} ${e instanceof Error?e.stack??e.message:String(e)}`),process.exitCode=1}process.exit(process.exitCode??0)};process.once(`SIGINT`,()=>{v(`SIGINT`)}),process.once(`SIGTERM`,()=>{v(`SIGTERM`)});let y=`http://${d}:${g.port}`,b=d===`0.0.0.0`||d===`::`?`http://0.0.0.0:${g.port}`:void 0,x=g.resolvedUiPort,S=x!==null&&x>0?`http://${d}:${x}`:y;console.log(r({name:`open-knowledge`,version:l,localUrl:S,apiUrl:S===y?void 0:y,networkUrl:b,nextSteps:[`Open the Editor URL in your browser to start editing.`]}));let C={"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`};g.ready.then(async()=>{if(g.degraded.length>0){console.log();for(let e of g.degraded){let t=C[e]??`${e} (check server logs for details)`;console.warn(` ${s(`⚠`)} ${s(e)}: ${a(t)}`)}console.log()}if(t.open){let{openBrowser:e}=await import(`./open-browser-6ztGUs93.mjs`);e(S)}}).catch(e=>{console.error(` ${o(`Server initialization failed:`)} ${e instanceof Error?e.message:String(e)}`)})}function Q(e,t){let n=t.ServerLockCollisionError;return n!==void 0&&e instanceof n}function $(e,t,n){let r=n.ServerLockCollisionError;if(r===void 0||!(e instanceof r))return null;try{let e=p(t,`.ok`),r=n.readServerLock(e);return r?r.kind===`interactive`?`OpenKnowledge desktop is currently running on this project. Quit it or use --cwd to point elsewhere.`:r.kind===`mcp-spawned`?"An MCP-spawned server holds this lock; it should release on idle-shutdown (~30 min). Or run `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`.":"OpenKnowledge server is already running on this project — check `ok status` or `ok stop`."}catch{return null}}function ne(e){return new o(`start`).description(`Start the knowledge base collab server`).option(`-p, --port <port>`,`Server port`,void 0).option(`--ui-port <port>`,`Pin the ok ui sibling to <port> and connect (not exit) if a server already runs here — the worktree-preview recipe path`,te).option(`-H, --host <host>`,`Server host`,void 0).option(`--open`,`Open browser after start`).option(`--mode <mode>`,`Force dispatch mode: 'browser' or 'app'`,ee).option(`--serve-content-assets`,`Serve content assets from this server`).option(`--react-shell-dist-dir <path>`,`Serve React shell from <path> (suppresses ok ui sibling)`).option(`--single-file <path>`,`No-project ephemeral single-file mode: scope the server to one markdown file (git + MCP off)`).option(`--project-dir <dir>`,`Throwaway project root for --single-file (where ephemeral .ok/ state lives)`).action(async t=>{let n=e();if(t.mode===`app`){t.open&&(process.stderr.write(`error: option '--mode=app' cannot be combined with '--open' (--open opens a browser tab against the local server, which app mode does not boot)
2
2
  `),process.exit(2));let e=[];if(t.port!==void 0&&e.push(`--port`),t.uiPort!==void 0&&e.push(`--ui-port`),t.host!==void 0&&e.push(`--host`),e.length>0){let t=process.env.OK_LOG_LEVEL??`info`;(t===`debug`||t===`trace`)&&console.error(`--mode=app: ignoring ${e.join(`, `)}`)}let n=D(w());if(n.available){O({spawn:u});return}console.error(k(n.reason)),process.exit(1)}await Z(n,t)})}export{D as C,w as S,ne as _,V as a,K as b,F as c,z as d,P as f,R as g,B as h,q as i,X as l,Z as m,U as n,H as o,Y as p,J as r,L as s,I as t,Q as u,$ as v,O as w,N as x,G as y};
3
- //# sourceMappingURL=start-DqcZAaBv.mjs.map
3
+ //# sourceMappingURL=start-B1VS-wwf.mjs.map
@@ -0,0 +1 @@
1
+ import{_ as e,f as t,r as n}from"./start-B1VS-wwf.mjs";export{n as bootStartServer,t as resolveHost,e as startCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/open-knowledge",
3
- "version": "0.30.0-beta.2",
3
+ "version": "0.30.0-beta.3",
4
4
  "license": "GPL-3.0-or-later",
5
5
  "private": false,
6
6
  "type": "module",
@@ -1,2 +0,0 @@
1
- import"./server-lock-iLcBw_q0-RDMfTH6b.mjs";var e=`0.30.0-beta.2`;const t=`config.yml`,n=e;export{n,t};
2
- //# sourceMappingURL=constants-BGBZW_Qv.mjs.map
@@ -1 +0,0 @@
1
- import{g as e}from"./init-E8FDYW-D.mjs";export{e as runInit};
@@ -1 +0,0 @@
1
- import{n as e}from"./loader-Bi7zAoyk.mjs";export{e as loadConfig};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./preview-hq0cdoZw.mjs";export{t as formatPreviewBlock,e as previewContent};