@inkeep/open-knowledge 0.35.1-beta.5 → 0.35.1-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/skills/discovery/SKILL.md +1 -1
- package/dist/assets/skills/project/SKILL.md +1 -1
- package/dist/cli.mjs +57 -57
- package/dist/constants-CIPwjYvb.mjs +2 -0
- package/dist/{gh-detect-sjzh2ZLB.mjs → gh-detect-D21DaYXA.mjs} +2 -2
- package/dist/{git-handle-CpHtlro0.mjs → git-handle-C-78iRUR.mjs} +2 -2
- package/dist/git-handle-Cm2rQ_SB.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{init-DSGoU7s8.mjs → init-CyoYb1pQ.mjs} +4 -4
- package/dist/init-DqRJOP_K.mjs +1 -0
- package/dist/{launch-json-removal-ByztiF2y.mjs → launch-json-removal-Dgu7KolA.mjs} +2 -2
- package/dist/{lib-CsZlOZVg.mjs → lib-CW6dpYSh.mjs} +8 -8
- package/dist/{loader-PASNx-GN.mjs → loader-BOy4NGBp.mjs} +2 -2
- package/dist/loader-CtGaThuY.mjs +1 -0
- package/dist/{open-browser-D-PuwGFp.mjs → open-browser-CO5MRLMI.mjs} +2 -2
- package/dist/{preview-DzxMxKjX.mjs → preview-BDhV-rtm.mjs} +2 -2
- package/dist/preview-JvnYBZy9.mjs +1 -0
- package/dist/public/assets/{ActivityModeContent-Bb_9SBwL.js → ActivityModeContent-V_zAw2Cp.js} +1 -1
- package/dist/public/assets/{AgentDiffPane-B58_IeWO.js → AgentDiffPane-CVTl1yHd.js} +1 -1
- package/dist/public/assets/{CodeMirrorPropInput-Bqy90c-v.js → CodeMirrorPropInput-BbZYh8z8.js} +1 -1
- package/dist/public/assets/{DocumentContext-DTN1oVEu.js → DocumentContext-DdPNvhCs.js} +2 -2
- package/dist/public/assets/{EnableSyncConfirmDialog-cztPH24v.js → EnableSyncConfirmDialog-YbXwL0lV.js} +1 -1
- package/dist/public/assets/{GraphPanel-BVQvaUEA.js → GraphPanel-C_f_Xd2V.js} +5 -5
- package/dist/public/assets/{ManagedArtifactProperties-DIo2u2MY.js → ManagedArtifactProperties-DlJgeeBW.js} +1 -1
- package/dist/public/assets/{McpConsentDialogBody-MWFa6hL-.js → McpConsentDialogBody-DWMKC7U_.js} +1 -1
- package/dist/public/assets/{MermaidDocEditor-DMLRe7kf.js → MermaidDocEditor-ChTa4qji.js} +1 -1
- package/dist/public/assets/{PropertyPanel-DzBaIRl7.js → PropertyPanel-CGrfp7KX.js} +1 -1
- package/dist/public/assets/{ReportBugDialogBody-CatE51p5.js → ReportBugDialogBody-DO-LsEqg.js} +1 -1
- package/dist/public/assets/{SettingsDialogBody-C04-Rlvj.js → SettingsDialogBody-Dqdq8UCp.js} +1 -1
- package/dist/public/assets/{ShareBranchSwitchDialog-JC3ssCG1.js → ShareBranchSwitchDialog-CtWDd4RN.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-Bv4NmuUd.js → ShareReceiveDialog-DHN60dEn.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-DCuf6F3E.js → ShareReceiveMissDialog-BPZPyDcg.js} +1 -1
- package/dist/public/assets/{SkillEditorActions-Edciau_D.js → SkillEditorActions-D0qSUb6F.js} +1 -1
- package/dist/public/assets/{SourceEditor-CLD-sb0k.js → SourceEditor-CiiGGjlz.js} +1 -1
- package/dist/public/assets/{TerminalPanel-4-XK5RI5.js → TerminalPanel-DipsMDbQ.js} +1 -1
- package/dist/public/assets/{TimelineDiffPane-ZlzsNQ6w.js → TimelineDiffPane-CCoQyhfx.js} +1 -1
- package/dist/public/assets/{agent-presence-aWLDoz77.js → agent-presence-DB_yc77e.js} +1 -1
- package/dist/public/assets/auth-state-cache-Bm2yGEzY.js +11 -0
- package/dist/public/assets/{config-provider-BndKfIQn.js → config-provider-TXwl7IKA.js} +1 -1
- package/dist/public/assets/{dist-B2EDiaY_.js → dist-D--vIb9_.js} +1 -1
- package/dist/public/assets/{dist-BKmPXTTI.js → dist-DAFoMRai.js} +1 -1
- package/dist/public/assets/{doc-hash-DMNk5rpw.js → doc-hash-BNPgzBjA.js} +1 -1
- package/dist/public/assets/{documents-events-DXJkkSko.js → documents-events-BOt1_9Hf.js} +1 -1
- package/dist/public/assets/{file-tree-adapter-CKQwswy3.js → file-tree-adapter-C2NHvUNc.js} +1 -1
- package/dist/public/assets/{index-BQaQovXc.js → index-Dqu53vRM.js} +91 -91
- package/dist/public/assets/lint-config-client-DfHR5qma.js +1 -0
- package/dist/public/assets/{navigation-targets-DK_JH7Tb.js → navigation-targets-Dp0ljlND.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-BT96NXgW.js → open-managed-artifact-tab-SLDmUABC.js} +1 -1
- package/dist/public/assets/{pending-receive-nav-store-CtinJwXM.js → pending-receive-nav-store-DjOWVQpM.js} +1 -1
- package/dist/public/assets/prop-types-D27bl_X-.js +1 -0
- package/dist/public/assets/{receive-store-CkUOBZ5-.js → receive-store-CqCttQos.js} +1 -1
- package/dist/public/assets/{selection-context-j5QW8iZP.js → selection-context-VCaFOVcH.js} +1 -1
- package/dist/public/assets/{skill-actions-BffiTy28.js → skill-actions-2X4vusgg.js} +1 -1
- package/dist/public/assets/{skills-api-DjDFbpaJ.js → skills-api-Zn9HHSnp.js} +1 -1
- package/dist/public/assets/{src-Bg8dr3SE.js → src-DOsxfOd0.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-zbxkZi4l.js → target-navigation-intent-gXTtsPCh.js} +1 -1
- package/dist/public/assets/{typing-burst-detector-C8g1J2Wa.js → typing-burst-detector-xnXm4fKL.js} +1 -1
- package/dist/public/assets/{use-activity-panel-B2dGbqlu.js → use-activity-panel-Bw3nEPtk.js} +1 -1
- package/dist/public/assets/{use-apply-config-color-theme-U4kAm-FK.js → use-apply-config-color-theme-B7VneWrH.js} +1 -1
- package/dist/public/assets/{use-timeline-entry-diff-er0OzL5P.js → use-timeline-entry-diff-BlAVrAam.js} +1 -1
- package/dist/public/assets/{workspace-paths-CCP6lJKi.js → workspace-paths-DFIcBLaH.js} +1 -1
- package/dist/public/index.html +26 -26
- package/dist/{repair-launch-json-dJDitma0.mjs → repair-launch-json-CmCCmAJv.mjs} +2 -2
- package/dist/{repair-mcp-configs-C67-bVqc.mjs → repair-mcp-configs-d3ypUlcB.mjs} +2 -2
- package/dist/repair-skills-B_LT6KmX.mjs +1 -0
- package/dist/{repair-skills-BCyNfi-J.mjs → repair-skills-D7OqUhR5.mjs} +2 -2
- package/dist/server-lock-B4ji1_12.mjs +1 -0
- package/dist/{server-lock-CqieF_wm.mjs → server-lock-B_XsVesk.mjs} +2 -2
- package/dist/src-CS54K9uB.mjs +21 -0
- package/dist/{src-CHgigP4i.mjs → src-CgIX2vtn.mjs} +39 -39
- package/dist/{src-iBJ8-UwF.mjs → src-PsxMXz66.mjs} +1 -1
- package/dist/src-i2Sa6WJ8.mjs +3310 -0
- package/dist/{start-D_5TfXcR.mjs → start-BFz8mNMt.mjs} +2 -2
- package/dist/start-DSgr4S7F.mjs +1 -0
- package/dist/{write-project-skill-cDXEyRpr.mjs → write-project-skill-BZ1Qx_Fc.mjs} +2 -2
- package/package.json +5 -5
- package/dist/constants-CqbycpZx.mjs +0 -2
- package/dist/git-handle-DFEbLV_G.mjs +0 -1
- package/dist/init-BAbQhQLo.mjs +0 -1
- package/dist/loader-CyMqTG8o.mjs +0 -1
- package/dist/preview-BUwdFYLY.mjs +0 -1
- package/dist/public/assets/auth-state-cache-Zvboee_f.js +0 -11
- package/dist/public/assets/lint-config-client-C8q65Ycw.js +0 -1
- package/dist/public/assets/prop-types-B3K32NJg.js +0 -1
- package/dist/repair-skills-CtCQWVgx.mjs +0 -1
- package/dist/server-lock-DaLWkSjq.mjs +0 -1
- package/dist/src-BnjVL3Qp.mjs +0 -3310
- package/dist/src-CP_1F9IZ.mjs +0 -21
- package/dist/start-DegZQxKG.mjs +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as e,v as t}from"./init-
|
|
2
|
-
//# sourceMappingURL=repair-mcp-configs-
|
|
1
|
+
import{d as e,v as t}from"./init-CyoYb1pQ.mjs";import{_ as n,d as r,s as i}from"./write-project-skill-BZ1Qx_Fc.mjs";import{t as a}from"./mcp-migrate-event-C35ikoh2.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-d3ypUlcB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./repair-skills-D7OqUhR5.mjs";export{e as repairSkills};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{C as e}from"./src-CgIX2vtn.mjs";import{An as t,Bn as n,Dn as r,En as i,In as a,Mn as o,Pn as s,Vn as c,jn as l}from"./src-i2Sa6WJ8.mjs";import{t as u}from"./esm-EvSEzE_V.mjs";import{a as d,d as f,f as p,t as m}from"./write-project-skill-BZ1Qx_Fc.mjs";import{dirname as h,join as g,resolve as _}from"node:path";import{existsSync as v,mkdirSync as y,readFileSync as b,readdirSync as x,rmSync as S,statSync as C,writeFileSync as w}from"node:fs";import{homedir as T}from"node:os";const E={existsSync:e=>v(e),isDirectory:e=>{try{return C(e).isDirectory()}catch(e){if(e.code===`ENOENT`)return!1;throw e}},readdirSync:e=>x(e),readFileSync:e=>b(e),writeFileSync:(e,t)=>{w(e,t)},mkdirSync:(e,t)=>{y(e,t)},rmSync:(e,t)=>{S(e,t)}},D={resolveProjectBundledSkillDir:()=>a(`project`,{checkDesktop:!1}),resolveUserBundledSkillDir:e=>a(e,{checkDesktop:!1}),readBundledVersion:()=>r(),readRecordedVersion:e=>t(e,`cli-hosts`),writeRecordedVersion:(e,t)=>o(e,`cli-hosts`,t,`cli-start`),recordEvent:e=>s(e),readBundleDecision:(e,t)=>i(e,t),writeBundleDecision:(e,t,n)=>l(e,t,n),removeBundleFromDisk:(e,t)=>d(e,t)};function O(e){process.stderr.write(`${JSON.stringify(e)}\n`)}function k(e,t,n){n.rmSync(t,{recursive:!0,force:!0}),n.mkdirSync(h(t),{recursive:!0}),A(e,t,n)}function A(e,t,n){n.mkdirSync(t,{recursive:!0});for(let r of n.readdirSync(e)){let i=g(e,r),a=g(t,r);n.isDirectory(i)?A(i,a,n):n.writeFileSync(a,n.readFileSync(i))}}function j(e,t,n,r,i,a){let o=[],s=g(e,`.agents`,`skills`,t),c=r.existsSync(s),l=!1;try{k(n,s,r),l=!0,o.push({kind:`central`,path:s,outcome:c?`overwritten`:`written`}),i({event:`user-skill-reclaim-central-written`,scope:`user`,path:s,preexisting:c,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`central`,path:s,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-central-failed`,scope:`user`,path:s,error:t})}for(let c of p){let l=g(e,c.hostDir),u=g(l,`skills`,t);if(u===s){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-collapsed-with-central`});continue}if(!r.existsSync(l)){o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`skipped-host-absent`});continue}let d=r.existsSync(u);try{k(n,u,r),o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:d?`overwritten`:`written`}),i({event:`user-skill-reclaim-host-written`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,preexisting:d,version:a})}catch(e){let t=e instanceof Error?e.message:String(e);o.push({kind:`host`,editorId:c.editorId,hostDir:c.hostDir,path:u,outcome:`failed`,error:t}),i({event:`user-skill-reclaim-host-failed`,scope:`user`,editorId:c.editorId,hostDir:c.hostDir,path:u,error:t})}}return{entries:o,centralWritten:l}}function M(e,t){if(!e)return!1;try{if(!t.existsSync(e))return!1;let n=t.readFileSync(e).toString(`utf8`);return n.includes(`# ok-mcp-v1`)||n.includes(`# ok-mcp-win-v1`)}catch{return!1}}function N(e,t,n,r){let i;try{i=t.resolveProjectBundledSkillDir()}catch(e){return r({event:`project-skill-reclaim-bundle-missing`,scope:`project`,error:e instanceof Error?e.message:String(e)}),{outcome:`skipped`,reason:`bundle-missing`}}let a=[];for(let t of p){let o=g(e,t.hostDir,`skills`,`open-knowledge`),s=g(o,`SKILL.md`),c=n.existsSync(s),l=f[t.editorId]?.projectConfigPath?.(e),u=!c&&M(l,n);if(!c&&!u){a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`no-token`}),r({event:`project-skill-reclaim-no-token`,scope:`project`,editorId:t.editorId,path:o});continue}try{m(o,e),k(i,o,n);let s=c?`reclaimed`:`created`;a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:s}),r({event:c?`project-skill-reclaim-reclaimed`:`project-skill-reclaim-created`,scope:`project`,editorId:t.editorId,path:o})}catch(e){let n=e instanceof Error?e.message:String(e);a.push({editorId:t.editorId,hostDir:t.hostDir,path:o,outcome:`failed`,error:n}),r({event:`project-skill-reclaim-failed`,scope:`project`,editorId:t.editorId,path:o,error:n})}}return{outcome:`done`,entries:a}}async function P(t,r,i,a){let o=e=>{r.recordEvent(e).catch(()=>{})},s=()=>new Date().toISOString(),l;try{l=await r.readBundledVersion()}catch(e){let t=e instanceof Error?e.message:String(e);return a({event:`user-skill-reclaim-version-read-failed`,scope:`user`,error:t}),o({ts:s(),surface:`cli-start`,target:`cli-hosts`,bundle:`discovery`,outcome:`failed`,reason:`version-read-failed:${t}`}),{outcome:`skipped`,reason:`version-read-failed`}}let u;try{u=await r.readRecordedVersion(t)}catch(e){a({event:`user-skill-reclaim-version-read-error`,scope:`user`,error:e instanceof Error?e.message:String(e)}),u=null}let d=[],f=null;for(let e of c)try{d.push({id:e,sourceDir:r.resolveUserBundledSkillDir(e)})}catch(e){f=e instanceof Error?e.message:String(e)}if(d.length===0)return a({event:`user-skill-reclaim-bundle-missing`,scope:`user`,error:f??`no user-global bundles`}),o({ts:s(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,reason:`bundle-missing:${f}`}),{outcome:`skipped`,reason:`bundle-missing`};let p=[];for(let o of d){let s=n[o.id],c=i.existsSync(g(t,`.agents`,`skills`,s)),l=await r.readBundleDecision(t,s).catch(()=>null);if(!e(l,{installedOnDisk:c})){if(c)try{r.removeBundleFromDisk(t,o.id),a({event:`user-skill-reclaim-bundle-declined-removed`,scope:`user`,bundle:o.id})}catch(e){a({event:`user-skill-reclaim-bundle-remove-failed`,scope:`user`,bundle:o.id,error:e instanceof Error?e.message:String(e)})}continue}if(l===null&&c)try{await r.writeBundleDecision(t,s,!0)}catch(e){a({event:`user-skill-reclaim-grandfather-write-failed`,scope:`user`,bundle:o.id,error:e instanceof Error?e.message:String(e)})}p.push(o)}if(p.length===0)return{outcome:`skipped`,reason:`all-bundles-declined`};let m=p.every(e=>i.existsSync(g(t,`.agents`,`skills`,n[e.id])));if(u!==null&&u===l&&m)return a({event:`user-skill-reclaim-skipped-version-current`,scope:`user`,version:l}),{outcome:`skipped`,reason:`version-current`};let h=[],_=d.length===c.length,v=!0;for(let{id:e,sourceDir:r}of p){let o=j(t,n[e],r,i,a,l);h.push(...o.entries),o.centralWritten||(v=!1)}let y=h.some(e=>e.kind===`central`&&(e.outcome===`written`||e.outcome===`overwritten`));if(_&&v&&y){let e=null;try{await r.writeRecordedVersion(t,l),a({event:`user-skill-reclaim-version-recorded`,scope:`user`,version:l})}catch(t){e=t instanceof Error?t.message:String(t),a({event:`user-skill-reclaim-version-record-failed`,scope:`user`,version:l,error:e})}for(let{id:t}of p)o({ts:s(),surface:`cli-start`,target:`cli-hosts`,bundle:t,outcome:e===null?`installed`:`failed`,version:l,...e===null?{}:{reason:`state-write-failed:${e}`}})}else{let e=h.some(e=>e.kind===`host`&&e.outcome===`failed`);o({ts:s(),surface:`cli-start`,target:`cli-hosts`,outcome:`failed`,version:l,reason:e?`all-writes-failed`:`no-hosts-installed`})}return{outcome:`done`,version:l,entries:h}}async function F(e){let t=e.logger??O,n=e.fs??E,r=e.home??T(),i={...D,...e.deps};return e.reclaimDisableEnv===`1`?(t({event:`skill-repair-skipped`,reason:`reclaim-disabled`}),{status:`skipped`,reason:`reclaim-disabled`}):{status:`done`,project:N(e.projectDir,i,n,t),user:await P(r,i,n,t)}}function I(e){return e.status===`skipped`?e.reason===`reclaim-disabled`?0:1:e.project.outcome===`skipped`||e.user.outcome===`skipped`&&e.user.reason!==`version-current`&&e.user.reason!==`all-bundles-declined`||e.project.entries.some(e=>e.outcome===`failed`)||e.user.outcome===`done`&&e.user.entries.some(e=>e.outcome===`failed`)?1:0}function L(e){if(e.status===`skipped`)return`Skipped: ${e.reason}`;let t=[`Skill reclaim complete.`];if(e.project.outcome===`done`){let n=e.project.entries.filter(e=>e.outcome===`reclaimed`).length,r=e.project.entries.filter(e=>e.outcome===`created`).length,i=e.project.entries.filter(e=>e.outcome===`no-token`).length,a=e.project.entries.filter(e=>e.outcome===`failed`).length;t.push(` Project: ${n} reclaimed, ${r} created, ${i} no-token, ${a} failed.`)}else t.push(` Project: skipped (${e.project.reason}).`);if(e.user.outcome===`done`){let n=e.user.entries.filter(e=>e.outcome===`written`||e.outcome===`overwritten`).length,r=e.user.entries.filter(e=>e.outcome===`skipped-host-absent`||e.outcome===`skipped-collapsed-with-central`).length,i=e.user.entries.filter(e=>e.outcome===`failed`).length;t.push(` User (${e.user.version}): ${n} written, ${r} skipped, ${i} failed.`)}else t.push(` User: skipped (${e.user.reason}).`);return t.join(`
|
|
2
2
|
`)}function R(){return new u(`repair-skills`).description("Refresh bundled SKILL.md files for installed AI editors (project-local + user-global). Runs automatically during `ok start`; this command forces an explicit sweep.").action(async()=>{let e=await F({projectDir:_(process.cwd()),reclaimDisableEnv:process.env.OK_RECLAIM_DISABLE??null});process.stdout.write(`${L(e)}\n`),process.exitCode=I(e)})}export{R as n,F as t};
|
|
3
|
-
//# sourceMappingURL=repair-skills-
|
|
3
|
+
//# sourceMappingURL=repair-skills-D7OqUhR5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,o as t,r as n}from"./server-lock-B_XsVesk.mjs";export{n as markServerLockDraining,e as releaseServerLock,t as updateServerLockPort};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./src-
|
|
2
|
-
//# sourceMappingURL=server-lock-
|
|
1
|
+
import"./src-CgIX2vtn.mjs";import{dirname as e,join as t,resolve as n}from"node:path";import{closeSync as r,existsSync as i,mkdirSync as a,openSync as o,readFileSync as s,unlinkSync as c,writeFileSync as l,writeSync as u}from"node:fs";import{homedir as d,hostname as f}from"node:os";import{fileURLToPath as p}from"node:url";import{randomUUID as m}from"node:crypto";function h(e){try{return process.kill(e,0),!0}catch(e){return!!(e&&typeof e==`object`&&`code`in e&&e.code===`EPERM`)}}function g(e){return!(typeof e!=`number`||!Number.isInteger(e)||e<2||e>2147483647)}const _=/^[A-Za-z0-9-]{8,64}$/;let v=null;function y(e){return t(e??d(),`.ok`,`machine-id`)}function b(t){if(t===void 0&&v!==null)return v;let n=y(t),r=null;try{let e=s(n,`utf-8`).trim();_.test(e)&&(r=e)}catch{}if(r===null){r=m();try{a(e(n),{recursive:!0}),l(n,`${r}\n`,{encoding:`utf-8`,mode:384})}catch(e){console.warn(`[machine-id] Failed to persist ${n} — using an ephemeral per-process id; lock ownership checks will fail closed (collision) instead of recognizing this machine: ${e instanceof Error?e.message:String(e)}`)}}return t===void 0&&(v=r),r}function x(){try{let t=n(e(p(import.meta.url)),`..`,`package.json`),r=JSON.parse(s(t,`utf-8`));if(typeof r.version==`string`&&r.version.length>0)return r.version}catch{}return`0.0.0-unknown`}const S=x(),C=1;var w=class extends Error{existing;lockPath;lockName;constructor(e,t,n){super(`OpenKnowledge ${n} already running on port ${e.port} (pid ${e.pid}, started ${e.startedAt}). Stop it first or use a different directory. Lock: ${t}`),this.name=`ProcessLockCollisionError`,this.existing=e,this.lockPath=t,this.lockName=n}};function T(e,t){return n(e,`${t}.lock`)}const E=new Map;function D(e){E.set(e,(E.get(e)??0)+1)}function O(e){let t=E.get(e);return t===void 0||t<=1?(E.delete(e),!0):(E.set(e,t-1),!1)}function k(e){return typeof e.machineId==`string`?e.machineId===b():e.hostname===f()}const A=new Set;let j=!1;function M(e){A.add(e),!j&&(j=!0,process.on(`exit`,()=>{for(let e of A)try{let t=JSON.parse(s(e,`utf-8`));if(t?.pid!==process.pid||typeof t.machineId==`string`&&t.machineId!==b()||t.machineId===void 0&&typeof t.hostname==`string`&&t.hostname!==f())continue;c(e)}catch{}}))}function N(e,t){try{let n=JSON.parse(s(e,`utf-8`));return n&&typeof n==`object`&&g(n.pid)?n:(console.warn(`${t} Corrupt lock file at ${e} — replacing`),null)}catch{return console.warn(`${t} Corrupt lock file at ${e} — replacing`),null}}function P(e){let{lockName:t,lockDir:n,metadata:s}=e,d=`[${t}-lock]`;a(n,{recursive:!0});let p=T(n,t),m={pid:process.pid,hostname:f(),port:s.port,startedAt:new Date().toISOString(),worktreeRoot:s.worktreeRoot,machineId:b(),...s.kind!==void 0&&{kind:s.kind},...s.parentPid!==void 0&&{parentPid:s.parentPid},...s.capabilities!==void 0&&{capabilities:s.capabilities},protocolVersion:s.protocolVersion??1,runtimeVersion:s.runtimeVersion??S},g=JSON.stringify(m,null,2);for(let e=0;e<3;e++){if(!i(p))try{let e=o(p,`wx`,384);try{u(e,g)}finally{r(e)}return D(p),M(p),F({lockName:t,lockDir:n,lockPath:p})}catch(e){if(e.code!==`EEXIST`)throw e}let e=N(p,d);if(e){if(k(e)&&e.pid===process.pid)return l(p,g,{encoding:`utf-8`,mode:384}),D(p),M(p),F({lockName:t,lockDir:n,lockPath:p});if(h(e.pid))throw new w(e,p,t);console.warn(`${d} Stale lock detected (pid=${e.pid}, host=${e.hostname}) — replacing`)}try{c(p)}catch{}}throw Error(`${d} Failed to acquire ${p} after 3 attempts (concurrent acquire contention).`)}function F(e){let{lockName:t,lockDir:n,lockPath:r}=e;return{lockPath:r,release:()=>V({lockName:t,lockDir:n}),updatePort:e=>I({lockName:t,lockDir:n,port:e})}}function I(e){let{lockName:t,lockDir:n,port:r}=e,a=`[${t}-lock]`,o=T(n,t);if(!i(o)){console.warn(`${a} Lock file missing at ${o} during port update — skipping`);return}let c;try{let e=JSON.parse(s(o,`utf-8`));if(!e||typeof e!=`object`||!g(e.pid)){console.warn(`${a} Corrupt lock at ${o} during port update — skipping`);return}c=e}catch{console.warn(`${a} Unreadable lock at ${o} during port update — skipping`);return}if(c.pid===process.pid&&k(c)){c.port=r;try{l(o,JSON.stringify(c,null,2),{encoding:`utf-8`,mode:384})}catch(e){console.warn(`${a} Failed to update port in ${o}: ${e instanceof Error?e.message:String(e)}`)}}}function L(e){let{lockName:t,lockDir:n}=e,r=`[${t}-lock]`,i=T(n,t);if((E.get(i)??0)>1)return;let a;try{let e=JSON.parse(s(i,`utf-8`));if(!e||typeof e!=`object`||!g(e.pid)){console.warn(`${r} Corrupt lock at ${i} during draining mark — skipping`);return}a=e}catch(e){e.code!==`ENOENT`&&console.warn(`${r} Unreadable lock at ${i} during draining mark — skipping: ${e instanceof Error?e.message:String(e)}`);return}if(a.pid===process.pid&&k(a)&&a.draining!==!0){a.draining=!0;try{l(i,JSON.stringify(a,null,2),{encoding:`utf-8`,mode:384})}catch(e){console.warn(`${r} Failed to mark ${i} draining: ${e instanceof Error?e.message:String(e)}`)}}}function R(e){let{lockName:t,lockDir:n}=e,r=T(n,t);if(!i(r))return null;let a;try{let e=JSON.parse(s(r,`utf-8`));if(!e||typeof e!=`object`||!g(e.pid))return null;a=e}catch{return null}if(!k(a))return null;if(!h(a.pid)){try{c(r)}catch{}return null}return a}function z(e){let{lockName:t,lockDir:n}=e,r=T(n,t);if(!i(r))return{status:`absent`};let a;try{a=JSON.parse(s(r,`utf-8`))}catch{return{status:`incompatible`,reason:`corrupt`,raw:void 0}}if(!a||typeof a!=`object`)return{status:`incompatible`,reason:`corrupt`,raw:a};let o=a;if(!g(o.pid)||typeof o.hostname!=`string`||typeof o.port!=`number`||typeof o.startedAt!=`string`||typeof o.worktreeRoot!=`string`)return{status:`incompatible`,reason:`corrupt`,raw:a};let l={pid:o.pid,hostname:o.hostname,port:o.port,startedAt:o.startedAt,worktreeRoot:o.worktreeRoot,machineId:typeof o.machineId==`string`?o.machineId:void 0,draining:o.draining===!0?!0:void 0,protocolVersion:typeof o.protocolVersion==`number`?o.protocolVersion:void 0,runtimeVersion:typeof o.runtimeVersion==`string`?o.runtimeVersion:void 0};if(!k(l))return{status:`stale`,lock:l};if(!h(l.pid)){try{c(r)}catch{}return{status:`stale`,lock:l}}return l.protocolVersion===void 0||l.runtimeVersion===void 0?{status:`incompatible`,reason:`missing-fields`,raw:a}:{status:`live`,lock:l}}async function B(e){let{lockName:t,lockDir:n}=e,r=e.timeoutMs??1e4,i=e.pollIntervalMs??100,a=e.readLock??(()=>R({lockName:t,lockDir:n})),o=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),s=a();if(s===null||s.draining!==!0)return`no-drain`;let c=Date.now()+r;for(;Date.now()<c;){await o(i);let e=a();if(e===null)return`released`;if(e.draining!==!0)return`no-drain`}return`timeout`}function V(e){let{lockName:t,lockDir:n,deferUnlinkToExit:r=!1}=e,a=`[${t}-lock]`,o=T(n,t);if(O(o)){if(r){L({lockName:t,lockDir:n});return}if(i(o))try{let e=JSON.parse(s(o,`utf-8`));if(!e||typeof e!=`object`||typeof e.pid!=`number`||e.pid!==process.pid||!k(e))return;c(o),A.delete(o)}catch(e){console.warn(`${a} Failed to release ${o}: ${e instanceof Error?e.message:String(e)}`)}}}var H=class extends w{constructor(e,t){super(e,t,`server`),this.name=`ServerLockCollisionError`}};function U(e,t){try{return P({lockName:`server`,lockDir:e,metadata:t}).lockPath}catch(e){throw e instanceof w&&e.lockName===`server`?new H(e.existing,e.lockPath):e}}function W(e,t){I({lockName:`server`,lockDir:e,port:t})}function G(e){return R({lockName:`server`,lockDir:e})}function K(e,t){V({lockName:`server`,lockDir:e,...t})}function q(e){L({lockName:`server`,lockDir:e})}function J(e,t){return B({lockName:`server`,lockDir:e,...t})}export{C as _,K as a,g as b,w as c,L as d,R as f,S as g,I as h,G as i,P as l,V as m,U as n,W as o,z as p,q as r,J as s,H as t,T as u,b as v,h as y};
|
|
2
|
+
//# sourceMappingURL=server-lock-B_XsVesk.mjs.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{N as t,P as n,qo as r}from"./src-CgIX2vtn.mjs";import{Mr as i,Tr as a,et as o,fa as s,la as c,nn as l,nt as u,rt as d,tt as f}from"./src-i2Sa6WJ8.mjs";import{b as p,u as m,v as h,y as g}from"./server-lock-B_XsVesk.mjs";import{t as _}from"./yazl-BucAN8Ez.mjs";import{t as v}from"./esm-EvSEzE_V.mjs";import"./gh-detect-D21DaYXA.mjs";import{E as y,S as b,T as x,_ as ee,b as S,o as C,v as te,w}from"./init-CyoYb1pQ.mjs";import{n as T}from"./constants-CIPwjYvb.mjs";import{t as E}from"./is-object-DYBErO9v.mjs";import{_ as ne,d as re,i as D,v as ie}from"./write-project-skill-BZ1Qx_Fc.mjs";import"./loader-BOy4NGBp.mjs";import{c as ae}from"./colors-B_qgKwrk.mjs";import"./preview-BDhV-rtm.mjs";import{execSync as oe,spawnSync as O}from"node:child_process";import{basename as k,dirname as A,isAbsolute as j,join as M,relative as N,resolve as P,sep as se}from"node:path";import{cpSync as ce,createWriteStream as le,existsSync as F,lstatSync as ue,mkdirSync as I,mkdtempSync as de,readFileSync as L,readdirSync as R,readlinkSync as fe,rmSync as pe,statSync as me,writeFileSync as z}from"node:fs";import{arch as he,freemem as ge,homedir as _e,hostname as ve,platform as ye,release as be,tmpdir as xe,totalmem as Se,type as Ce,uptime as we}from"node:os";import{readFile as B,realpath as V}from"node:fs/promises";import{createHash as H}from"node:crypto";const Te=[{name:`macos-home-path`,regex:/\/Users\/[^/]+\//g,replacement:`~/`},{name:`linux-home-path`,regex:/\/home\/[^/]+\//g,replacement:`~/`},{name:`github-pat`,regex:/\b(ghp_|gho_|ghu_|ghs_|ghr_)[A-Za-z0-9]{36,}\b/g,replacement:`[REDACTED-GH-PAT]`},{name:`aws-access-key`,regex:/\b(AKIA|ASIA|ABIA)[A-Z2-7]{16}\b/g,replacement:`[REDACTED-AWS-KEY]`},{name:`anthropic-key`,regex:/\bsk-ant-api03-[A-Za-z0-9_-]{20,}\b/g,replacement:`[REDACTED-ANTHROPIC]`},{name:`openai-key`,regex:/\bsk-[A-Za-z0-9]{20,}\b/g,replacement:`[REDACTED-OPENAI]`},{name:`bearer-token`,regex:/([Aa]uthorization:\s*[Bb]earer\s+)\S+/g,replacement:`$1[REDACTED]`},{name:`jwt`,regex:/eyJ[A-Za-z0-9_-]{8,}\.eyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,replacement:`[REDACTED-JWT]`},{name:`url-credentials`,regex:/:\/\/[^/\s:@]+:[^/\s:@]+@/g,replacement:`://[REDACTED]@`}],Ee=Te.map(e=>e.name);function U(e){let t=new Set,n=0;return{redacted:e.split(`
|
|
2
|
+
`).map(e=>{let r=e;for(let{name:e,regex:i,replacement:a}of Te)i.lastIndex=0,i.test(r)&&(t.add(e),n++,i.lastIndex=0,r=r.replace(i,a));return r}).join(`
|
|
3
|
+
`),patterns:[...t],lineCount:n}}function De(){return M(_e(),`.ok`,`bug-reports`)}function Oe(e=new Date){let t=e.toISOString().replace(/[:.]/g,`-`);return M(De(),`${t}-bugreport.zip`)}function ke(e,t){let n=M(e,`.ok`,`config.yml`);if(F(n))try{let e=L(n,`utf8`).match(/^\s*name:\s*['"]?(.+?)['"]?\s*$/m);if(e?.[1])return e[1]}catch(e){t?.warn({configPath:n,err:e instanceof Error?e.message:String(e)},`bug-report: failed to read .ok/config.yml for project slug; using path-hash fallback`)}return F(M(e,`.ok`))?H(`sha256`).update(P(e)).digest(`hex`).slice(0,12):null}function Ae(){let e={timestamp:new Date().toISOString(),platform:ye(),osType:Ce(),osRelease:be(),hostname:`[redacted]`,uptime:we(),freeMem:ge(),totalMem:Se(),nodeVersion:process.version,bunVersion:process.versions.bun??null,v8Version:process.versions.v8??null,pid:process.pid};try{e.macosVersion=oe(`sw_vers -productVersion 2>/dev/null`,i({encoding:`utf8`})).trim()}catch{}try{let t=M(__dirname,`..`,`..`,`package.json`);F(t)&&(e.okVersion=JSON.parse(L(t,`utf8`)).version)}catch{}return e}function je(e,t){if(!F(t))return{files:[]};let n=R(t).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(e=>M(t,e));if(e&&n.length>0){let t=n.filter(t=>{try{return L(t,`utf8`).includes(`"project":"${e}"`)}catch{return!0}});t.length>0&&(n=t)}return{files:n}}function Me(e){let n=M(e,`.ok`,`local`);return F(n)?{files:[`server.lock`,`last-spawn-error.log`,t].map(e=>M(n,e)).filter(e=>F(e))}:{files:[]}}function Ne(e){let t=M(e,`.ok`,`local`,`logs`);return F(t)?{files:[`server-current.jsonl`,`server-prev.jsonl`].map(e=>M(t,e)).filter(e=>F(e))}:{files:[]}}function Pe(e){if(e.redact){let{redacted:t,patterns:n,lineCount:r}=U(e.content);e.zipfile.addBuffer(Buffer.from(t,`utf8`),e.name),e.bundleFiles.push(e.name),n.length>0&&e.redactions.push({file:e.name,lineCount:r,patterns:n})}else e.zipfile.addBuffer(Buffer.from(e.content,`utf8`),e.name),e.bundleFiles.push(e.name)}function W(e){for(let t of e.files)try{Pe({zipfile:e.zipfile,name:`${e.prefix}/${k(t)}`,content:L(t,`utf8`),redact:e.redact,bundleFiles:e.bundleFiles,redactions:e.redactions})}catch(n){e.logger?.warn({file:t,prefix:e.prefix,err:n instanceof Error?n.message:String(n)},`bug-report: skipped unreadable file`)}}async function Fe(t){let{redact:n,outputPath:r,logger:i}=t,a=t.userLogsDir??M(_e(),`.ok`,`logs`),o=t.projectDir?ke(t.projectDir,i):null;I(A(r),{recursive:!0}),i?.info({projectSlug:o},`gathering diagnostic data`);let s=Ae();s.desktop=t.desktop??null;let{files:c}=je(o,a),{files:l}=t.projectDir?Me(t.projectDir):{files:[]},{files:u}=t.projectDir?Ne(t.projectDir):{files:[]};i?.info({logFileCount:c.length,lockFileCount:l.length,localSinkFileCount:u.length},`files collected`);let d=[],f=[],{ZipFile:p}=await import(`./yazl-DvlathRc.mjs`).then(t=>e(t.default,1)),m=new p;W({zipfile:m,files:c,prefix:`logs`,redact:n,bundleFiles:f,redactions:d,logger:i}),W({zipfile:m,files:l,prefix:`lockdir`,redact:n,bundleFiles:f,redactions:d,logger:i}),W({zipfile:m,files:u,prefix:`local-logs`,redact:n,bundleFiles:f,redactions:d,logger:i});for(let e of t.extraFiles??[])try{let t=L(e.sourcePath),n=`extra/${e.zipName??k(e.sourcePath)}`;m.addBuffer(t,n),f.push(n)}catch(t){i?.warn({sourcePath:e.sourcePath,err:t},`extra file unreadable; omitted from bundle`)}t.note&&Pe({zipfile:m,name:`note.txt`,content:t.note,redact:n,bundleFiles:f,redactions:d});let h=JSON.stringify(s,null,2);m.addBuffer(Buffer.from(h,`utf8`),`sysinfo.json`),f.push(`sysinfo.json`);let g={generatedAt:new Date().toISOString(),disciplineVersion:`1.0.0`,projectSlug:o,files:f,redactions:d,sysinfo:s};m.addBuffer(Buffer.from(JSON.stringify(g,null,2),`utf8`),`MANIFEST.json`);let _=d.reduce((e,t)=>e+t.lineCount,0),v=[`# Bug Report Bundle`,``,`Generated: ${g.generatedAt}`,`Project: ${o??`(unscoped)`}`,`Discipline version: ${g.disciplineVersion}`,``,`## Contents`,``,...f.map(e=>`- ${e}`),``,`## Privacy`,``,...n?[`This bundle was auto-redacted before packaging.`,`Patterns checked: ${Ee.join(`, `)}`,_>0?`${_} line(s) were scrubbed across ${d.length} file(s).`:`No redactions were needed.`,`See MANIFEST.json for the full redaction audit report.`,``,`This bundle is safe to attach to a GitHub issue.`]:[`Redaction was disabled for this bundle; file contents are unmodified.`]].join(`
|
|
4
|
+
`);m.addBuffer(Buffer.from(v,`utf8`),`README.md`),m.end();let y=le(r);return m.outputStream.pipe(y),await new Promise((e,t)=>{y.on(`close`,e),y.on(`error`,t)}),i?.info({bundlePath:r,fileCount:f.length,redactionCount:_},`bundle written`),{zipPath:r,summary:{projectSlug:o,files:f,redactions:d,redactedLineCount:_,generatedAt:g.generatedAt}}}var G=r(),Ie=e(_(),1);const Le=new Set([`doc.name`,`currentDoc`]);function Re(e){return`doc:${H(`sha256`).update(e).digest(`hex`).slice(0,8)}`}function ze(e,t,n){let r=e.docNameMap[n];if(r===void 0){e.docNameMap[n]=t;return}if(r===t)return;let i=e.docNameCollisions[n];i?i.includes(t)||i.push(t):e.docNameCollisions[n]=[t]}function Be(e,t){let n=t.originalToHashed.get(e);if(n!==void 0)return n;let r=Re(e);return t.originalToHashed.set(e,r),ze(t,e,r),r}function Ve(e,t){return t.length===0||!e.includes(t)?e:e.split(t).join(`<CONTENT_DIR>`)}function He(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function K(e,t){if(typeof e==`string`)return Ve(e,t.contentDir);if(Array.isArray(e))return e.map(e=>K(e,t));if(!He(e))return e;let n=typeof e.key==`string`&&Le.has(e.key)&&He(e.value)&&typeof e.value.stringValue==`string`?e.value.stringValue:null,r={};for(let[i,a]of Object.entries(e))if(n!==null&&i===`value`&&He(a)){let e=Be(n,t);r[i]={...a,stringValue:e}}else Le.has(i)&&typeof a==`string`?r[i]=Be(a,t):r[i]=K(a,t);return r}function Ue(e,t){if(t.originalToHashed.size===0)return e;let n=Array.from(t.originalToHashed.entries()).sort(([e],[t])=>t.length-e.length),r=e;for(let[e,t]of n)e.length!==0&&r.includes(e)&&(r=r.split(e).join(t));return r}function We(e,t){let n=L(e,`utf-8`);if(n.length===0)return;let r=n.endsWith(`
|
|
5
|
+
`),i=n.split(`
|
|
6
|
+
`),a=[];for(let e=0;e<i.length;e++){let n=i[e]??``;if(!(e===i.length-1&&n===``)){if(n.length===0){a.push(``);continue}try{let e=K(JSON.parse(n),t);a.push(JSON.stringify(e))}catch{a.push(n)}}}z(e,r?`${a.join(`
|
|
7
|
+
`)}\n`:a.join(`
|
|
8
|
+
`))}function Ge(e,t){let n=L(e,`utf-8`);if(n.trim().length!==0)try{let r=K(JSON.parse(n),t),i=n.endsWith(`
|
|
9
|
+
`)?`
|
|
10
|
+
`:``;z(e,`${JSON.stringify(r,null,2)}${i}`)}catch{let r=Ue(Ve(n,t.contentDir),t);r!==n&&z(e,r)}}function Ke(e,t){let n=L(e,`utf-8`),r=Ve(n,t.contentDir);r!==n&&z(e,r)}function qe(e){try{return R(e,{withFileTypes:!0}).filter(e=>e.isFile()).map(t=>M(e,t.name))}catch{return[]}}const Je=new Set([`agent-presence.json`,`agent-effects.json`,`runtime.json`]);function Ye(e){let t={contentDir:e.contentDir,docNameMap:{},originalToHashed:new Map,docNameCollisions:{}};for(let n of[`telemetry`,`logs`,`process`])for(let r of qe(M(e.stagingDir,n)))r.endsWith(`.jsonl`)?We(r,t):r.endsWith(`.json`)?Ge(r,t):Ke(r,t);for(let n of qe(M(e.stagingDir,`state`))){let e=k(n);Je.has(e)?Ge(n,t):Ke(n,t)}return{docNameMap:t.docNameMap,docNameCollisions:t.docNameCollisions}}const Xe=[`.ok`,`local`,`telemetry`],Ze=[`.ok`,`local`,`logs`],Qe=`spans-current.jsonl`,$e=`spans-prev.jsonl`,et=`server-current.jsonl`,tt=`server-prev.jsonl`;function nt(e){return M(e,...Xe,Qe)}function rt(e){return M(e,...Xe,$e)}function it(e){return M(e,...Ze,et)}function at(e){return M(e,...Ze,tt)}const ot=1e3;async function st(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-presence`,{signal:AbortSignal.timeout(ot)});return t.ok?await t.text():null}catch{return null}}async function ct(e){try{let t=await fetch(`http://127.0.0.1:${e}/api/metrics/agent-effects`,{signal:AbortSignal.timeout(ot)});return t.ok?await t.text():null}catch{return null}}function lt(e){let t=M(e,`.git`,`ok`);if(!F(t))return null;let n=O(`git`,[`-C`,t,`log`,`--oneline`,`-50`],i({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function ut(e){let t=M(e,`.git`,`ok`);if(!F(t))return null;let n=O(`git`,[`-C`,t,`for-each-ref`,`--sort=-creatordate`,`--count=50`,`--format=%(refname)%09%(creatordate:iso-strict)%09%(contents:subject)`,`refs/checkpoints/`],i({encoding:`utf-8`,timeout:2e3}));return n.error||n.status!==0?null:n.stdout??``}function dt(){let e=process.env.OK_DESKTOP_VERSION,t=process.env.OK_DESKTOP_PACKAGED,n=process.env.OK_DESKTOP_CHANNEL;return e===void 0||t===void 0||n===void 0?null:{electronVersion:e,packaged:t===`1`||t.toLowerCase()===`true`,channel:n}}function ft(){return{nodeVersion:process.version,platform:ye(),arch:he()}}function pt(){return process.env.OTEL_SDK_DISABLED===`false`}function q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function mt(e){if(!F(e))return{};let t;try{t=(0,G.parse)(L(e,`utf-8`))}catch(t){return console.warn(`[ok diagnose bundle] failed to parse ${e} for manifest config; manifest will report schema defaults. Reason: ${t instanceof Error?t.message:String(t)}`),{}}if(!q(t))return{};let n=t.telemetry;if(!q(n))return{};let r=n.localSink;return q(r)?r:{}}function ht(e){return typeof e==`boolean`?e:void 0}function gt(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?e:void 0}function J(e){if(q(e))return gt(e.maxBytes)}function _t(e){let t=mt(c(`project`,e)),n=mt(c(`project-local`,e));return{enabled:ht(n.enabled)??ht(t.enabled)??!0,spansMaxBytes:J(n.spans)??J(t.spans)??52428800,logsMaxBytes:J(n.logs)??J(t.logs)??26214400}}function vt(e){return H(`sha256`).update(e).digest(`hex`)}function yt(e){let t=L(e),n=0;for(let e=0;e<t.length;e++)t[e]===10&&n++;return n}function bt(e){let t=L(e,`utf-8`),n=`"doc.name"`,r=0,i=t.indexOf(n);for(;i!==-1;)r++,i=t.indexOf(n,i+10);return r}function Y(e,t){return F(e)?(I(A(t),{recursive:!0}),ce(e,t),!0):!1}function xt(e){let t=[],n=e=>{let r=R(e,{withFileTypes:!0});for(let i of r){let r=M(e,i.name);i.isDirectory()?n(r):i.isFile()&&t.push(r)}};return n(e),t.sort()}const St=new Set([`.jsonl`]);function Ct(e){let t=e.lastIndexOf(`.`);return t===-1?!1:St.has(e.slice(t))}const wt=new Set([`.jsonl`,`.json`,`.txt`,`.log`,`.lock`]);function Tt(e){let t=e.lastIndexOf(`.`);return t===-1?!1:wt.has(e.slice(t))}function Et(e){let t=[];for(let n of xt(e)){let r=Dt(e,n);if(!Tt(r))continue;let{redacted:i,patterns:a,lineCount:o}=U(L(n,`utf-8`));a.length!==0&&(z(n,i),t.push({file:r,lineCount:o,patterns:a}))}return{redactions:t,redactedLineCount:t.reduce((e,t)=>e+t.lineCount,0)}}function Dt(e,t){return N(e,t).split(se).join(`/`)}async function Ot(e){let r=P(e.contentDir),i=P(e.projectDir??e.contentDir),a=e.deps??{},o=a.fetchAgentPresence??st,s=a.fetchAgentEffects??ct,c=a.readShadowHead??lt,l=a.readCheckpointRefs??ut,u=a.now??(()=>new Date),d=a.okVersion??(()=>T),f=a.readDesktopEnv??dt,p=a.readRuntime??ft,m=a.isOtlpPushEnabled??pt,h=de(M(xe(),`ok-bundle-`));try{I(M(h,`telemetry`),{recursive:!0}),I(M(h,`logs`),{recursive:!0}),I(M(h,`state`),{recursive:!0}),Y(nt(i),M(h,`telemetry`,Qe)),Y(rt(i),M(h,`telemetry`,$e)),Y(it(i),M(h,`logs`,et)),Y(at(i),M(h,`logs`,tt));let g=M(i,`.ok`,`local`),_=M(g,`server.lock`),v=`not-running`,y=`no server.lock`,b=null;if(F(_)){Y(_,M(h,`state`,`server.lock`));try{let e=L(_,`utf-8`),t=JSON.parse(e);typeof t.port==`number`?b=t.port:y=`lock present but no port`}catch{y=`lock present but unparseable`}}if(b!==null){let e=await o(b);e===null?y=`agent-presence endpoint at :${b} unreachable`:(z(M(h,`state`,`agent-presence.json`),e),v=`running`,y=``);let t=await s(b);t!==null&&z(M(h,`state`,`agent-effects.json`),t)}let x=c(r);x!==null&&z(M(h,`state`,`shadow-head.txt`),x);let ee=l(r);ee!==null&&z(M(h,`state`,`checkpoint-refs.txt`),ee),Y(M(g,`last-spawn-error.log`),M(h,`state`,`last-spawn-error.log`)),Y(M(g,n),M(h,`state`,n)),Y(M(g,t),M(h,`state`,t));let S=p(),C=f(),te={ok:{version:d(),nodeVersion:S.nodeVersion,platform:S.platform,arch:S.arch},host:{desktop:C}};z(M(h,`state`,`runtime.json`),`${JSON.stringify(te,null,2)}\n`);let w=v===`running`?`running
|
|
11
|
+
`:`not-running (${y})\n`;if(z(M(h,`state`,`server-status.txt`),w),e.processDir&&F(e.processDir)){let t=M(h,`process`);I(t,{recursive:!0}),ce(e.processDir,t,{recursive:!0})}let T=null;e.redact===!0&&(T=Ye({stagingDir:h,contentDir:r})),e.note&&z(M(h,`note.txt`),e.note);let E=null;e.scrubSecrets===!0&&(E=Et(h));for(let t of e.extraFiles??[])Y(t.sourcePath,M(h,`extra`,t.zipName??k(t.sourcePath)))||a.logger?.warn({sourcePath:t.sourcePath},`extra file missing; omitted from bundle`);let ne=_t(i),re=xt(h),D=[],ie=0,ae=0;for(let e of re){let t=Dt(h,e),n=me(e).size,r=Ct(t)?yt(e):0;D.push({path:t,bytes:n,lines:r}),ie+=n,t.startsWith(`telemetry/`)&&Ct(t)&&(ae+=bt(e))}let oe=T===null?{applied:!1,docNameMapSidecar:null}:Object.keys(T.docNameCollisions).length>0?{applied:!0,docNameMapSidecar:null,docNameCollisions:T.docNameCollisions}:{applied:!0,docNameMapSidecar:null};E!==null&&(oe.secretScrub=E);let O={schemaVersion:1,createdAt:u().toISOString(),ok:{version:d(),nodeVersion:S.nodeVersion,platform:S.platform,arch:S.arch},host:{desktop:C},contentDir:{pathSha256:vt(r),absolutePath:T===null?r:`<CONTENT_DIR>`},telemetry:{localSink:ne,otlpPushEnabled:m()},redaction:oe,serverStatus:v,files:D};z(M(h,`manifest.json`),`${JSON.stringify(O,null,2)}\n`);let A=re.some(e=>{try{return L(e,`utf-8`).includes(r)}catch{return!1}}),j={totalBytes:ie,fileCount:D.length,docNameCount:ae,contentDirVisible:A,redacted:T!==null},N=!1;return{stagingDir:h,manifest:O,summary:j,redactionMapPayload:T===null?null:{docNameMap:T.docNameMap,docNameCollisions:T.docNameCollisions},cleanup:()=>{N||(N=!0,pe(h,{recursive:!0,force:!0}))}}}catch(e){throw pe(h,{recursive:!0,force:!0}),e}}async function kt(e){let{collected:t,outputPath:n}=e,r=A(n);if(!F(r))throw Error(`ok diagnose bundle: parent directory does not exist: ${r}. Create it or pass --out with an existing parent.`);if(t.redactionMapPayload!==null){let e=`${k(n,`.zip`)}.docnames.json`,r={...t.manifest,redaction:{...t.manifest.redaction,applied:!0,docNameMapSidecar:e}};z(M(t.stagingDir,`manifest.json`),`${JSON.stringify(r,null,2)}\n`)}let i=new Ie.ZipFile,a=xt(t.stagingDir);for(let e of a){let n=Dt(t.stagingDir,e);i.addFile(e,n)}i.end(),t.redactionMapPayload!==null&&z(M(r,`${k(n,`.zip`)}.docnames.json`),`${JSON.stringify({docNameMap:t.redactionMapPayload.docNameMap,docNameCollisions:t.redactionMapPayload.docNameCollisions},null,2)}\n`,{mode:384});let o=le(n);return i.outputStream.pipe(o),await new Promise((e,t)=>{o.on(`close`,e),o.on(`error`,t),i.outputStream.on(`error`,t)}),n}function At(e,t){let n=M(e,`.ok`,`config.yml`);if(F(n))try{let t=(0,G.parse)(L(n,`utf-8`)),r=E(t)?t.content:void 0,i=E(r)?r.dir:void 0;if(typeof i==`string`&&i.length>0)return P(e,i)}catch(e){t?.warn({configPath:n,err:e instanceof Error?e.message:String(e)},`bug-report: failed to read .ok/config.yml; falling back to project root as content dir`)}return P(e)}async function jt(e,t,n){let r=await Ot({contentDir:At(t,e.logger),projectDir:t,redact:e.redact,scrubSecrets:e.redact,note:e.note,extraFiles:e.extraFiles,deps:{readDesktopEnv:n,logger:e.logger}});try{I(A(e.outputPath),{recursive:!0}),await kt({collected:r,outputPath:e.outputPath});let n=r.manifest.redaction.secretScrub;return{zipPath:e.outputPath,summary:{level:`full`,systemWide:!1,projectSlug:ke(t,e.logger),files:r.manifest.files.map(e=>e.path),redactions:n?.redactions??[],redactedLineCount:n?.redactedLineCount??0,generatedAt:r.manifest.createdAt}}}finally{r.cleanup()}}async function Mt(e){let{projectDir:t}=e,n=e.readDesktopEnv??dt;if(e.level===`full`&&t!==void 0)return jt(e,t,n);let{zipPath:r,summary:i}=await Fe({projectDir:t,redact:e.redact,outputPath:e.outputPath,userLogsDir:e.userLogsDir,logger:e.logger,note:e.note,extraFiles:e.extraFiles,desktop:n()});return{zipPath:r,summary:{level:e.level,systemWide:t===void 0,projectSlug:i.projectSlug,files:i.files,redactions:i.redactions,redactedLineCount:i.redactedLineCount,generatedAt:i.generatedAt}}}function X(e,t,n={}){let r=m(e,t);if(!F(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(L(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!p(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??g)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};if(typeof a.machineId==`string`)return a.machineId===(n.machineId??h())?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a};let o=n.host??ve();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Nt(e){return e.replace(/:\d+$/,``)}function Pt(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:Nt(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:Nt(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:Nt(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 Ft(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 It(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 Lt(e){let t=Ft(e);if(t)return{kind:`doc`,...t};let n=It(e);return n?{kind:`folder`,...n}:null}var Z=e(ae(),1);const Rt=`# >>> open-knowledge cli >>>`,zt=`# <<< open-knowledge cli <<<`,Bt=/^# >>> open-knowledge cli >>>\n[\s\S]*?^# <<< open-knowledge cli <<<\n?/m;function Vt(e){return M(e,`Library`,`Application Support`,`OpenKnowledge`,`path-install.json`)}const Ht={existsSync:e=>F(e),readFileSync:(e,t)=>L(e,t),lstatSync:e=>ue(e),readlinkSync:e=>fe(e)};function Ut(e,t=Ht){let n=Vt(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 Wt(e){let t=e.replace(Bt,``);return{text:t,changed:t!==e,emptyAfter:t.trim()===``}}function Gt(e,t,n=Ht){try{return n.lstatSync(e).isSymbolicLink()?n.readlinkSync(e)===t:!1}catch{return!1}}function Kt(e){return ne(e)||ie(e)||b(e)}const qt=10*1024*1024;function Jt(e,t,n,r){let i=C(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(!Kt(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`?(pe(a,{force:!0}),{kind:`removed`}):e.format===`toml`?Zt(a,o):e.format===`yaml`?Xt(a,e.topLevelKey,o):Yt(a,e.topLevelKey,e.serverMapSubKey,o)}function Yt(e,t,n,r){let i;try{i=L(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(i,`utf-8`)>qt)return{kind:`declined`,reason:`oversize`};let{text:a,changed:o}=y(i,ee(t,n,r));return o?(s(e,a,{mode:w(e)}),{kind:`removed`}):{kind:`not-present`}}function Xt(e,t,n){let r;try{r=L(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}if(Buffer.byteLength(r,`utf-8`)>qt)return{kind:`declined`,reason:`oversize`};let i=r.charCodeAt(0)===65279,a=i?r.slice(1):r,o=(0,G.parseDocument)(a);if(o.errors.length>0)return{kind:`declined`,reason:`unparseable`};let c=[t,n];if(!o.hasIn(c))return{kind:`not-present`};o.deleteIn(c);let l=o.toString(),u=x(a);a.trim()===``||a.endsWith(`
|
|
12
|
+
`)?l.endsWith(`
|
|
13
|
+
`)||(l=`${l}\n`):l=l.replace(/\n+$/,``),u&&(l=l.replace(/\r\n/g,`
|
|
14
|
+
`).replace(/\n/g,`\r
|
|
15
|
+
`));let d=`${i?``:``}${l}`;return d!==r&&s(e,d,{mode:w(e)}),{kind:`removed`}}function Zt(e,t){let n=S();if(n.backend===`fallback`)return{kind:`declined`,reason:`no-native-writer`};let r;try{r=L(e,`utf-8`)}catch{return{kind:`declined`,reason:`unparseable`}}let i=r.charCodeAt(0)===65279,a=i?r.slice(1):r,o=x(a),c=a.trim()===``||a.endsWith(`
|
|
16
|
+
`),l;try{l=n.removeEntry(a,t)}catch{return{kind:`declined`,reason:`unparseable`}}if(!l.existed)return{kind:`not-present`};let u=l.text;c?u.endsWith(`
|
|
17
|
+
`)||(u=`${u}\n`):u=u.replace(/\n+$/,``),o&&(u=u.replace(/\r\n/g,`
|
|
18
|
+
`).replace(/\n/g,`\r
|
|
19
|
+
`));let d=`${i?``:``}${u}`;return d!==r&&s(e,d,{mode:w(e)}),{kind:`removed`}}const Qt=new Set([`start`,`stop`,`status`,`clean`,`ui`,`mcp`,`preview`,`lint`,`deinit`,`auth`]);function $t(e,t,n=l){if(e!==void 0&&!Qt.has(e))return null;let r=n(t);return r===null||r.distance===0?null:r.rootPath}let en=null;function tn(e){en=e}function nn(){return en??process.cwd()}function rn(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function an(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 on(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:rn(r)}}function sn(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function Q(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&sn(e)?`ui-orphan`:`stale`}const cn=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function ln(e){switch(e){case`running`:return Z.default.green(e);case`desktop`:return Z.default.blue(e);case`foreign`:return Z.default.cyan(e);case`ui-orphan`:return Z.default.magenta(e);case`stale`:return Z.default.yellow(e)}}function un(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function dn(e){return`${un(e.server.usage)} | ${un(e.ui?.usage??null)}`}function fn(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function pn(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=Q(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,fn(e),dn(e),t,String(n),an(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=ln(Q(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=Z.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
|
|
20
|
+
`)}async function mn(e={}){let t=e.discover??o,n=e.inspect??X,r=e.log??(e=>console.log(e)),i=e.resolveCommand??u,a=e.resolveUsage??d,s=await t(),c=[];for(let e of s){let t=n(e,`server`),r=n(e,`ui`),o=on(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:Q(e)}));r(JSON.stringify(e,null,2));return}r(pn(e.all?c:c.filter(e=>cn.has(Q(e)))))}function hn(){return new v(`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 mn({all:t.all===!0||e===`all`,json:t.json===!0})})}function gn(e,t,n={}){let r=n.isAlive??g,i=[];for(let[n,a]of[[`server`,e],[`ui`,t]])(a.status===`alive`||a.status===`foreign-host`&&r(a.lock.pid))&&i.push({name:n,pid:a.lock.pid,port:a.lock.port});return{targets:i}}function _n(e){let t=e.inspect??(t=>X(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=gn(t(`server`),t(`ui`),{isAlive:e.isAlive});if(a.targets.length===0)return r(`No running open-knowledge processes.`),{stopped:[],failed:[],hadTargets:!1};let o=[],s=[];for(let e of a.targets)try{n(e.pid,`SIGTERM`),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}return o.length>0&&r(`Stopped: ${o.map(e=>`${e.name} (pid=${e.pid}, port=${e.port})`).join(`, `)}`),s.length>0&&i(`Failed to stop: ${s.map(({target:e,error:t})=>`${e.name} (pid=${e.pid}): ${t}`).join(`; `)}`),{stopped:o,failed:s,hadTargets:!0}}function $(e,t){return e.status===`alive`?!0:e.status===`foreign-host`?t(e.lock.pid):!1}async function vn(e,t=g){let n=await o(),r=null;for(let i of n){let n=X(i,`server`),a=X(i,`ui`);if($(n,t)&&n.lock.port===e||$(a,t)&&a.lock.port===e)return i;r===null&&($(n,t)&&n.lock.pid===e||$(a,t)&&a.lock.pid===e)&&(r=i)}return r}function yn(e){let t=_n({lockDir:e});return t.failed.length>0&&(process.exitCode=1),t}function bn(e){return new v(`stop`).description(`Stop open-knowledge server(s). With no argument: stops the server for the current directory. Pass a port number, a directory path, or "all" to target globally.`).argument(`[target...]`,`port number, directory path (spaces OK), or "all"`).action(async t=>{let n=t.length===0?void 0:t.join(` `);if(n===void 0){e();let t=_n({lockDir:a(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 mn({});return}if(n===`all`){let e=await o();if(e.length===0){console.log(`No running open-knowledge servers found.`);return}let t=0;for(let n of e){let e=X(n,`server`),r=X(n,`ui`);!$(e,g)&&!$(r,g)||(yn(n),t++)}t===0&&console.log(`No running open-knowledge servers found.`);return}if(/^\d+$/.test(n)){let e=Number.parseInt(n,10),t=await vn(e);if(t===null){console.log(`No running open-knowledge server found with port or PID ${e}.`);return}yn(t);return}yn(a(P(nn(),n)))})}function xn(e){return{event:`mcp-config-decline`,scope:e.scope,surface:e.surface,editorId:e.editorId,reason:e.reason}}async function Sn(e,t){let n,r;try{n=await V(P(e)),r=await V(P(A(e)))}catch{return{kind:`not-git`}}if(!wn(n,r))return{kind:`symlink-escape`};let i=M(n,`.git`),a;try{a=me(i)}catch{return{kind:`not-git`}}let o;if(a.isDirectory()){let e;try{e=await V(i)}catch{return{kind:`not-git`}}if(!wn(e,n))return{kind:`symlink-escape`};o=e}else if(a.isFile()){let e;try{e=await B(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=j(r)?r:P(n,r);try{o=await V(a)}catch{return{kind:`not-git`}}}else return{kind:`not-git`};let s=M(await Cn(o),`config`),c;try{c=await B(s,`utf-8`)}catch{return{kind:`not-git`}}let l=En(c);if(l===null)return{kind:`no-origin`};let u=Pt(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 Cn(e){let t;try{t=(await B(M(e,`commondir`),`utf-8`)).trim()}catch{return e}if(t.length===0)return e;let n=j(t)?t:P(e,t);try{return await V(n)}catch{return n}}function wn(e,t){if(e===t)return!0;let n=N(t,e);return n.length>0&&!n.startsWith(`..`)&&!j(n)}function Tn(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 En(e){let t=!1;for(let n of e.split(/\r?\n/)){let e=Tn(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 Dn(r[1])}return null}function Dn(e){let t=e.trim();return t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`)?t.slice(1,-1):t}const On=[{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=te(e,t,n,void 0,r);return i.action===`written`||i.action===`overwritten`?{integration:`mcp-config`,editorId:e.id,action:i.action,path:i.configPath}:i.action===`failed`?{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:i.error??`unknown failure`}:i.action===`declined`?{integration:`mcp-config`,editorId:e.id,action:`declined`,path:i.configPath,...i.declineReason===void 0?{}:{reason:i.declineReason}}:{integration:`mcp-config`,editorId:e.id,action:`failed`,path:i.configPath,error:`unexpected project-scope action: ${i.action}`}}catch(t){return{integration:`mcp-config`,editorId:e.id,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}},{id:`project-skill`,write(e,t,n){try{let r=D(e,t,{home:n.home});return{integration:`project-skill`,editorId:e.id,action:r.action,...r.path?{path:r.path}:{},...r.error?{error:r.error}:{}}}catch(t){return{integration:`project-skill`,editorId:e.id,action:`failed`,error:t instanceof Error?t.message:String(t)}}}}];function kn(e,t,n={},r=On){let i=[];for(let a of t){let t=re[a];for(let a of r)i.push(a.write(t,e,n))}return i}function An(e,t,n={}){return{integrations:kn(e,t,n)}}export{Mt as C,U as D,Oe as E,X as S,kt as T,Wt as _,bn as a,It as b,tn as c,Rt as d,Bt as f,Ut as g,Vt as h,_n as i,$t as l,Gt as m,Sn as n,hn as o,zt as p,xn as r,nn as s,An as t,Jt as u,Ft as v,Ot as w,Pt as x,Lt as y};
|
|
21
|
+
//# sourceMappingURL=src-CS54K9uB.mjs.map
|