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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{acp-harness-probe-CAUPRqem.mjs → acp-harness-probe-Bun7bZox.mjs} +2 -2
  2. package/dist/assets/skills/discovery/SKILL.md +1 -1
  3. package/dist/assets/skills/project/SKILL.md +1 -1
  4. package/dist/assets/skills/write-skill/SKILL.md +1 -1
  5. package/dist/cli.mjs +7 -7
  6. package/dist/constants-CdWq5GKk.mjs +2 -0
  7. package/dist/index.mjs +1 -1
  8. package/dist/{init-D_IFjeNW.mjs → init-BYlWtfT3.mjs} +3 -3
  9. package/dist/init-CbpoKwQL.mjs +1 -0
  10. package/dist/{launch-json-removal-B205O3NA.mjs → launch-json-removal-DVEMBV0w.mjs} +2 -2
  11. package/dist/loader-C4u6kxAl.mjs +1 -0
  12. package/dist/{loader-bUo9oEom.mjs → loader-JYGWtw5V.mjs} +2 -2
  13. package/dist/{open-browser-DFtApOUW.mjs → open-browser-CB6y-11T.mjs} +2 -2
  14. package/dist/{preview-D1dWTQ8k.mjs → preview-BHePDzDX.mjs} +2 -2
  15. package/dist/preview-RoJWsuTR.mjs +1 -0
  16. package/dist/public/assets/{ActivityModeContent-D7IDAADR.js → ActivityModeContent-C16xzhnU.js} +1 -1
  17. package/dist/public/assets/{AgentDiffPane-CKdCEnqD.js → AgentDiffPane-uQ_jhHv3.js} +1 -1
  18. package/dist/public/assets/{CodeMirrorPropInput-DqNDfEnD.js → CodeMirrorPropInput-ufSDtUVB.js} +1 -1
  19. package/dist/public/assets/DocumentContext-CW-upTbE.js +38 -0
  20. package/dist/public/assets/{EnableSyncConfirmDialog-DrkGGVev.js → EnableSyncConfirmDialog-FWi5GxN5.js} +1 -1
  21. package/dist/public/assets/{FeedbackForm-CXXvUOWy.js → FeedbackForm-CTUqHrB3.js} +1 -1
  22. package/dist/public/assets/{ManagedArtifactProperties-C2eNyJKF.js → ManagedArtifactProperties-unR-MMXH.js} +1 -1
  23. package/dist/public/assets/{MermaidDocEditor-P9f8X7tU.js → MermaidDocEditor-D3vxfBbK.js} +1 -1
  24. package/dist/public/assets/{PropertyPanel-Bmem71bg.js → PropertyPanel-E5o87cnX.js} +1 -1
  25. package/dist/public/assets/{SettingsDialogBody-DzDGWXMf.js → SettingsDialogBody-Cp6WbByo.js} +2 -2
  26. package/dist/public/assets/{ShareReceiveMissDialog-ByUnHZEP.js → ShareReceiveMissDialog-C2H6ndKk.js} +1 -1
  27. package/dist/public/assets/{SourceEditor-HYrhk_fF.js → SourceEditor-R2mXCrh_.js} +1 -1
  28. package/dist/public/assets/{TerminalSessionsHost-DtGNhWg4.js → TerminalSessionsHost-B1jWnsIf.js} +2 -2
  29. package/dist/public/assets/{TerminalWindowApp-DWqRcNhK.js → TerminalWindowApp-DOrXb7xt.js} +1 -1
  30. package/dist/public/assets/{ThreadView-CHP5Ra30.js → ThreadView-CpND1HBw.js} +1 -1
  31. package/dist/public/assets/{TimelineDiffPane-Cc8rHqoV.js → TimelineDiffPane-CzKjZbR4.js} +1 -1
  32. package/dist/public/assets/{auth-state-cache-UUKRA6mi.js → auth-state-cache-BjvJOU9Y.js} +1 -1
  33. package/dist/public/assets/{client-version-Ti93fR_U.js → client-version-Bnwkfa5Z.js} +1 -1
  34. package/dist/public/assets/{config-provider-BMeRatQe.js → config-provider-B9YGwxSn.js} +1 -1
  35. package/dist/public/assets/{dist-2zkQMrQC.js → dist-CXCa-Cti.js} +1 -1
  36. package/dist/public/assets/index-HtxJOtEY.js +1995 -0
  37. package/dist/public/assets/{pending-receive-nav-store-XNS4eahL.js → pending-receive-nav-store-N7EQjZ6C.js} +1 -1
  38. package/dist/public/assets/{selection-context-z7qCoarT.js → selection-context-CJ98XEP0.js} +1 -1
  39. package/dist/public/assets/{src-BlUYczaV.js → src-BRv4Bv4N.js} +1 -1
  40. package/dist/public/assets/{telemetry-impl-ThDnRQ01.js → telemetry-impl-CVh9Cl5K.js} +1 -1
  41. package/dist/public/assets/{telemetry-startup-BYGi0S46.js → telemetry-startup-BhFiIILp.js} +1 -1
  42. package/dist/public/assets/{typing-burst-detector-BJJh89A5.js → typing-burst-detector-CE612bZJ.js} +1 -1
  43. package/dist/public/assets/{use-activity-panel-DddtATqP.js → use-activity-panel-Cb2gml2G.js} +1 -1
  44. package/dist/public/assets/{use-terminal-enabled-C0F3SkCA.js → use-terminal-enabled-BrSWg_ox.js} +1 -1
  45. package/dist/public/assets/{use-timeline-entry-diff-DTpDQjgI.js → use-timeline-entry-diff-C1k3sj4_.js} +1 -1
  46. package/dist/public/index.html +12 -12
  47. package/dist/{repair-launch-json-DzPuaSko.mjs → repair-launch-json-B3GSL_S6.mjs} +2 -2
  48. package/dist/{repair-mcp-configs-CiG5ovAF.mjs → repair-mcp-configs-DmACbm3w.mjs} +2 -2
  49. package/dist/repair-skills-BMGUyydL.mjs +1 -0
  50. package/dist/{repair-skills-El5WwJ1f.mjs → repair-skills-Cl1Ip2xg.mjs} +2 -2
  51. package/dist/{src-DskEi1G1.mjs → src-B6NlC6oi.mjs} +2 -2
  52. package/dist/{src-PY_3X_er.mjs → src-Di1OsFoS.mjs} +4 -4
  53. package/dist/{src-CAXZLaEf.mjs → src-DnfRngUF.mjs} +1 -1
  54. package/dist/start-BCnH8sOB.mjs +1 -0
  55. package/dist/{start-VX_dg_IU.mjs → start-DLAVWYtj.mjs} +2 -2
  56. package/dist/{write-project-skill-BxG7sNjS.mjs → write-project-skill-CFRmQkUP.mjs} +2 -2
  57. package/package.json +4 -4
  58. package/dist/constants-DjSx7Ebg.mjs +0 -2
  59. package/dist/init-vjEAl4lP.mjs +0 -1
  60. package/dist/loader-UVB6FfiI.mjs +0 -1
  61. package/dist/preview-16KBm3fQ.mjs +0 -1
  62. package/dist/public/assets/DocumentContext-C4Ar5jL6.js +0 -38
  63. package/dist/public/assets/index-WhmMzp-C.js +0 -1995
  64. package/dist/repair-skills-uKDdEY2S.mjs +0 -1
  65. package/dist/start-CLps31L_.mjs +0 -1
@@ -46,8 +46,8 @@ Karpathy's insight: "The tedious part of maintaining a knowledge base is not the
46
46
  `).map(e=>e.trim()).filter(Boolean),c=(s.length===0?[]:await Promise.all(s.map(e=>GD(a,e,t,i,n)))).flat().sort((e,t)=>t.date.localeCompare(e.date)).slice(0,n);if(c.length<n){let e=new Set(c.map(e=>e.hash)),r=await KD(a,i,t,n-c.length,e);r.length>0&&(c=[...c,...r].sort((e,t)=>t.date.localeCompare(e.date)).slice(0,n))}return{commits:c,source:`shadow-repo`}}function JD(e,t,n={}){let r=$D(t),i=r===``?[]:r.split(`/`),a=new Set,o=[];QD(e,r,`local`,a,o);for(let t=i.length-1;t>=1;t--)QD(e,i.slice(0,t).join(`/`),`inherited`,a,o);return i.length>0&&QD(e,``,`inherited`,a,o),o}function YD(e){let t=[],n=new Map,r=e=>{let t=n.get(e);return t||(t=new Set,n.set(e,t)),t},i=0,a=!1,o=[``];for(;o.length>0;){let n=o.shift()??``;if(i++>=XD){a=!0,I(`templates`).warn({projectDir:e,cap:XD,queueDepth:o.length},`project scan hit the ${XD}-directory cap at ${e}; deeper templates were not enumerated. Queue depth at break: ${o.length}.`);break}QD(e,n,`local`,r(n),t);let s=n?L(e,n):e,c;try{c=al(s).sort()}catch(e){if(Qo(e)!==`ENOENT`&&!eO.has(s)){eO.add(s);let t=e instanceof Error?e.message:String(e);I(`templates`).warn({dir:s,reason:t},`failed to read directory ${s} during project scan — skipped. Reason: ${t}`)}continue}for(let e of c){if(ZD.has(e)||e.startsWith(`.`))continue;let t=L(s,e),r;try{r=dl(t)}catch{continue}if(!r.isDirectory())continue;let i=n?Uc.join(n,e):e;o.push(i)}}return{templates:t,truncated:a}}const XD=2e3,ZD=new Set([`node_modules`,`dist`,`build`]);function QD(e,t,n,r,i){let a=t?L(e,t,`.ok`,`templates`):L(e,`.ok`,`templates`);if(!B(a))return;let o;try{o=al(a)}catch{return}for(let e of o){if(!e.endsWith(`.md`))continue;let o=e.slice(0,-3);if(r.has(o))continue;let s=L(a,e),c;try{c=dl(s)}catch{continue}if(!c.isFile())continue;let l=tO(s),u={name:o,path:t?Uc.join(t,`.ok`,`templates`,e):Uc.join(`.ok`,`templates`,e),source_folder:t,scope:n};l.title!==void 0&&(u.title=l.title),l.description!==void 0&&(u.description=l.description),r.add(o),i.push(u)}}function $D(e){return e.replace(/^\.\//,``).replace(/^\/+/,``).replace(/\/+$/,``).replace(/^\.$/,``)}const eO=new Set;function tO(e){let t;try{t=V(e,`utf-8`)}catch(t){if(Qo(t)!==`ENOENT`&&!eO.has(e)){eO.add(e);let n=t instanceof Error?t.message:String(t);I(`templates`).warn({path:e,reason:n},`failed to read template at ${e} — metadata skipped. Reason: ${n}`)}return{}}let{identity:n}=fn(t);typeof n.title!=`string`&&!eO.has(e)&&(eO.add(e),I(`templates`).warn({path:e},`template at ${e} has no title — YAML may be malformed or the title is missing.`));let r={};return typeof n.title==`string`&&(r.title=n.title),typeof n.description==`string`&&(r.description=n.description),r}const nO=1e3,rO=new Set([`.git`,`.ok`,`node_modules`,`.changeset`,`.claude`,`.agents`,`dist`,`build`]),iO=/\.(md|mdx)$/i;function aO(e,t){if(e===null||t===null)return null;let n=e,r=t;return n===0&&r===0?`orphan`:n>=5?`hub`:n>0&&r>0?`connector`:`leaf`}function oO(e){return e.replace(/\.md$/,``).replace(/\.mdx$/,``)}const sO=new Set;async function cO(e){try{return Xe(await wl(e,`utf-8`))??{}}catch(t){if(t?.code!==`ENOENT`&&!sO.has(e)){sO.add(e);let n=t instanceof Error?t.message:String(t);I(`enrichment`).warn({path:e,reason:n},`failed to read frontmatter at ${e} — enrichment degraded for this file. Reason: ${n}`)}return null}}async function lO(e,t){if(!e)return null;let n=await ED(e,`/api/backlinks?docName=${encodeURIComponent(t)}`);if(!n.ok)return null;let r=n.backlinks??n.results??n.links;if(!Array.isArray(r))return[];let i=[];for(let e of r){if(typeof e!=`object`||!e)continue;let t=e,n=typeof t.docName==`string`?t.docName:typeof t.source==`string`?t.source:typeof t.page==`string`?t.page:void 0;n&&i.push({source:n,title:typeof t.title==`string`?t.title:void 0,snippet:typeof t.snippet==`string`?t.snippet:null})}return i}async function uO(e,t){if(!e||t.length===0)return null;let n=[...new Set(t)],r=[];for(let e=0;e<n.length;e+=100)r.push(n.slice(e,e+100));let i=await Promise.all(r.map(async t=>{let n=await ED(e,`/api/backlink-counts?docNames=${encodeURIComponent(t.join(`,`))}`);return n.ok?n.counts??{}:null})),a=new Map,o=!1;for(let e of i)if(e){o=!0;for(let[t,n]of Object.entries(e))typeof n==`number`&&Number.isFinite(n)&&a.set(t,n)}return o?a:null}async function dO(e,t){if(!e)return null;let n=await ED(e,`/api/forward-links?docName=${encodeURIComponent(t)}`);if(!n.ok)return null;let r=n.forwardLinks??n.links??n.results;if(!Array.isArray(r))return[];let i=[];for(let e of r){if(typeof e!=`object`||!e)continue;let t=e;if(t.kind===`external`&&typeof t.url==`string`){i.push({kind:`external`,url:t.url,title:typeof t.title==`string`?t.title:void 0,snippet:typeof t.snippet==`string`?t.snippet:null});continue}let n=typeof t.docName==`string`?t.docName:void 0;n&&i.push({kind:`doc`,docName:n,title:typeof t.title==`string`?t.title:void 0,snippet:typeof t.snippet==`string`?t.snippet:null})}return i}function fO(e){let t=e??{};return{title:typeof t.title==`string`?t.title:void 0,description:typeof t.description==`string`?t.description:void 0,tags:Array.isArray(t.tags)?t.tags.filter(e=>typeof e==`string`):[],frontmatter:t}}async function pO(e,t,n={}){let r=rD(t.projectDir,e);if(!r.ok)throw Error(`enrichPath: ${r.reason}`);let i=r.rel,a=r.abs,o=t.historyDepth??5,s=n.includeRichFields===!0,c=cO(a);if(!s){let e=fO(await c);return{path:i,title:e.title,description:e.description,tags:e.tags,frontmatter:e.frontmatter,backlinkCount:null,backlinks:null,forwardLinkCount:null,forwardLinks:null,history:null,historySource:null,projectHistory:null,projectHistorySource:null,graphRole:null}}let[l,u,d,f,p]=await Promise.all([c,lO(t.serverUrl,oO(i)).catch(()=>null),dO(t.serverUrl,oO(i)).catch(()=>null),qD(t.projectDir,i,o).catch(()=>({commits:[],source:`shadow-repo`})),BD(t.projectDir,i,o).catch(()=>({commits:[],source:`git`}))]),m=fO(l);return{path:i,title:m.title,description:m.description,tags:m.tags,frontmatter:m.frontmatter,backlinkCount:u?.length??null,backlinks:u,forwardLinkCount:d?.length??null,forwardLinks:d,history:f.commits,historySource:f.source,projectHistory:p.commits,projectHistorySource:p.source,graphRole:aO(u?.length??null,d?.length??null)}}async function mO(e,t){let n={directMdCount:0,recursiveMdCount:0,childDirCount:0,mostRecent:null,truncated:!1},r=0,i=[{path:e,depth:0}];for(;i.length>0;){let e=i.shift();if(!e)break;if(r>=nO){n.truncated=!0;break}let a;try{a=await Tl(e.path,{withFileTypes:!0})}catch{continue}for(let o of a){if(r>=nO){n.truncated=!0;break}r++;let a=o.name;if(o.isDirectory()){if(rO.has(a)||a.startsWith(`.`))continue;e.depth===0&&n.childDirCount++,i.push({path:`${e.path}/${a}`,depth:e.depth+1})}else if(o.isFile()&&iO.test(a)){n.recursiveMdCount++,e.depth===0&&n.directMdCount++;let r=`${e.path}/${a}`;try{let e=await Dl(r);(!n.mostRecent||e.mtimeMs>n.mostRecent.mtimeMs)&&(n.mostRecent={absPath:r,relPath:R(t,r).split(/[\\/]/).filter(Boolean).join(`/`),mtimeMs:e.mtimeMs})}catch{}}}}return n}async function hO(e,t){let n=rD(t.projectDir,e);if(!n.ok)throw Error(`enrichDirectory: ${n.reason}`);let r=n.rel,i=n.abs,a=await mO(i,t.projectDir),o;if(a.mostRecent){let e=await cO(a.mostRecent.absPath),t=typeof e?.title==`string`?e.title:void 0;o={path:a.mostRecent.relPath,title:t??Lc(a.mostRecent.relPath),updatedAt:new Date(a.mostRecent.mtimeMs).toISOString()}}let s={path:r,type:`directory`,directMdCount:a.directMdCount,recursiveMdCount:a.recursiveMdCount,childDirCount:a.childDirCount,mostRecentMd:o,truncated:a.truncated},c=MD(t.projectDir,r);c.title!==void 0&&(s.title=c.title),c.description!==void 0&&(s.description=c.description),(c.tags?.length??0)>0&&(s.tags=c.tags);let l=JD(t.projectDir,r);return l.length>0&&(s.templates_available=l),s}async function gO(e,t,n){let r=await hO(e,n);if(t<=1)return r;let i=r.path,a=z(n.projectDir,i),o;try{o=await Tl(a,{withFileTypes:!0})}catch{return r}let s=[];for(let e of o){if(!e.isDirectory()||_O.has(e.name)||e.name.startsWith(`.`))continue;let r=await gO(i?`${i}/${e.name}`:e.name,t-1,n);s.push(r)}return s.length>0&&(r.subfolders=s),r}const _O=new Set([`.git`,`.ok`,`node_modules`,`.venv`,`venv`,`env`,`__pycache__`,`vendor`,`dist`,`build`,`out`,`output`,`.next`,`.nuxt`,`.svelte-kit`,`.astro`,`.turbo`,`.cache`,`.parcel-cache`,`coverage`]);function vO(e,t){let n={...e};for(let[e,r]of Object.entries(t))if(r!==void 0){if(yO(r)){delete n[e];continue}n[e]=r}return n}function yO(e){return $t(e)}function bO(e){if(!Vc(e.anchorDir))return{ok:!1,error:{code:`BAD_CONTENT_DIR`,message:`anchorDir must be absolute`}};let t=z(e.anchorDir),n=e.folderRel.replace(/^\.\//,``).replace(/^\/+/,``).replace(/\/+$/,``);if(n.split(`/`).some(e=>e===`..`))return{ok:!1,error:{code:`PATH_ESCAPE`,message:`Folder path escapes the content directory: ${e.folderRel}`}};let r=n===``?t:z(t,n);if(r!==t&&!r.startsWith(t+Wc))return{ok:!1,error:{code:`PATH_ESCAPE`,message:`Resolved folder escapes the content directory: ${r}`}};let i=L(r,`.ok`),a=L(i,`frontmatter.yml`);try{let n=xO(a),r=Object.keys(e.patch).length===0?{}:vO(n,e.patch);if(Object.keys(r).length===0)return B(a)?(fl(a),SO(i),{ok:!0,path:CO(t,a),action:`deleted`}):{ok:!0,path:CO(t,a),action:`noop`};el(i,{recursive:!0});let o=(0,CE.stringify)(r),s=`${a}.tmp.${process.pid}.${Date.now()}`;return pl(s,o,`utf-8`),cl(s,a),{ok:!0,path:CO(t,a),action:`written`}}catch(e){return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to write folder frontmatter for "${n||`.`}": ${e.message}`}}}}function xO(e){if(!B(e))return{};let t=(0,CE.parse)(V(e,`utf-8`));return typeof t!=`object`||!t||Array.isArray(t)?{}:{...t}}function SO(e){if(!B(e))return;let t;try{t=al(e)}catch{return}if(t.length===0)try{ul(e)}catch{}}function CO(e,t){return t.startsWith(e+Wc)?t.slice(e.length+1).split(Wc).join(`/`):t}const wO=1024,TO=[`anthropic`,`claude`],EO=`SKILL.md`;function DO(e){let t=IO(e.name);if(!t.ok)return{ok:!1,error:t.error};let n=LO(e.frontmatter,e.name);if(!n.ok)return{ok:!1,error:n.error};let r=`---\n${VO(e.frontmatter)}---\n${e.body}`,i=[],a=e.body.split(`
47
47
  `).length;return a>500&&i.push(`SKILL.md body is ${a} lines — keep it under 500 for performance (every line is a recurring token cost). Move detail into one-level-deep references/.`),{ok:!0,content:r,warnings:i}}function OO(e){let t=FO(e.skillsRoot);if(!t.ok)return{ok:!1,error:t.error};let n=DO({name:e.name,body:e.body,frontmatter:e.frontmatter});if(!n.ok)return{ok:!1,error:n.error};let{content:r,warnings:i}=n,{skillDir:a,filePath:o}=RO(e.skillsRoot,e.name);try{el(a,{recursive:!0})}catch(t){return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to create skill directory at ${BO(e.skillsRoot,a)}: ${t.message}`}}}let s=!B(o),c=`${o}.tmp.${process.pid}.${Date.now()}`;try{pl(c,r,`utf-8`),cl(c,o)}catch(t){try{fl(c)}catch{}return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to write skill at ${BO(e.skillsRoot,o)}: ${t.message}`}}}return{ok:!0,path:BO(e.skillsRoot,o),created:s,warnings:i}}function kO(e,t){if(typeof t!=`string`||t.length===0||t.includes(`\0`))return{ok:!1,error:{code:`BAD_FILE_PATH`,message:`Invalid skill file path.`}};let n=t.replace(/\\/g,`/`).split(`/`).filter(e=>e!==``&&e!==`.`);if(n.length<2||n.some(e=>e===`..`))return{ok:!1,error:{code:`BAD_FILE_PATH`,message:`Invalid skill file path: ${t}`}};if(n[0]!==`references`&&n[0]!==`scripts`)return{ok:!1,error:{code:`BAD_FILE_PATH`,message:`Skill file must be under references/ or scripts/: ${t}`}};let r=L(e,...n);return r!==e&&!r.startsWith(e+Wc)?{ok:!1,error:{code:`BAD_FILE_PATH`,message:`Skill file escapes the skill dir: ${t}`}}:{ok:!0,abs:r}}function AO(e){let t=0,n=r=>{let i;try{i=al(r)}catch{return}for(let a of i){let i=L(r,a),o;try{o=dl(i).isDirectory()}catch{continue}o?n(i):r===e&&a===EO||t++}};return n(e),t}function jO(e){let t=FO(e.skillsRoot);if(!t.ok)return{ok:!1,error:t.error};let n=IO(e.name);if(!n.ok)return{ok:!1,error:n.error};let{skillDir:r,filePath:i}=RO(e.skillsRoot,e.name);if(!B(i))return{ok:!1,error:{code:`SKILL_NOT_FOUND`,message:`No skill "${e.name}" — create it (write its SKILL.md) before adding bundle files.`}};let a=kO(r,e.relPath);if(!a.ok)return{ok:!1,error:a.error};let{abs:o}=a,s=Buffer.byteLength(e.content,`utf-8`);if(s>262144)return{ok:!1,error:{code:`FILE_TOO_LARGE`,message:`Skill file ${e.relPath} is ${s} bytes — the per-file cap is 262144.`}};let c=!B(o);if(c&&AO(r)>=50)return{ok:!1,error:{code:`TOO_MANY_FILES`,message:`Skill "${e.name}" already holds 50 bundle files (the cap) — delete one before adding another.`}};try{el(L(o,`..`),{recursive:!0})}catch(t){return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to create directory for ${e.relPath}: ${t.message}`}}}let l=`${o}.tmp.${process.pid}.${Date.now()}`;try{pl(l,e.content,`utf-8`),cl(l,o)}catch(t){try{fl(l)}catch{}return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to write skill file ${e.relPath}: ${t.message}`}}}return{ok:!0,path:BO(e.skillsRoot,o),created:c}}function MO(e){let t=FO(e.skillsRoot);if(!t.ok)return{ok:!1,error:t.error};let n=IO(e.name);if(!n.ok)return{ok:!1,error:n.error};let{skillDir:r}=RO(e.skillsRoot,e.name),i=kO(r,e.relPath);if(!i.ok)return{ok:!1,error:i.error};let{abs:a}=i,o=B(a);if(o){try{fl(a)}catch(t){return{ok:!1,error:{code:`UNLINK_FAILED`,message:`Failed to delete skill file ${e.relPath}: ${t.message}`}}}let t=L(a,`..`);if(t!==r&&HO(t))try{ul(t)}catch{}}return{ok:!0,path:BO(e.skillsRoot,a),existed:o}}function NO(e){let t=FO(e.skillsRoot);if(!t.ok)return{ok:!1,error:t.error};let n=IO(e.name);if(!n.ok)return{ok:!1,error:n.error};let{skillsRoot:r}=t,{skillDir:i}=RO(e.skillsRoot,e.name),a=B(i);if(a)try{ll(i,{recursive:!0,force:!0})}catch(t){return{ok:!1,error:{code:`UNLINK_FAILED`,message:`Failed to delete skill at ${BO(e.skillsRoot,i)}: ${t.message}`}}}return zO(r),{ok:!0,path:BO(e.skillsRoot,i),existed:a}}async function PO(e){let t=FO(e.skillsRoot);if(!t.ok)return{ok:!1,error:t.error};let n=IO(e.fromName);if(!n.ok)return{ok:!1,error:n.error};let r=IO(e.toName);if(!r.ok)return{ok:!1,error:r.error};let i=RO(e.skillsRoot,e.fromName),a=RO(e.skillsRoot,e.toName);if(i.skillDir===a.skillDir)return{ok:!1,error:{code:`NOOP`,message:`Source and destination are the same skill.`}};if(!B(i.skillDir))return{ok:!1,error:{code:`SKILL_NOT_FOUND`,message:`No skill at ${BO(e.skillsRoot,i.skillDir)}.`}};if(B(a.skillDir))return{ok:!1,error:{code:`SKILL_EXISTS`,message:`A skill already exists at ${BO(e.skillsRoot,a.skillDir)}.`}};let o;try{o=await e.relocate(i.skillDir,a.skillDir)}catch(e){return{ok:!1,error:{code:`MOVE_FAILED`,message:`Failed to move skill: ${e.message}`}}}return{ok:!0,fromPath:BO(e.skillsRoot,i.skillDir),toPath:BO(e.skillsRoot,a.skillDir),committed:o}}function FO(e){return Vc(e)?{ok:!0,skillsRoot:e}:{ok:!1,error:{code:`BAD_SKILLS_ROOT`,message:`skillsRoot must be absolute`}}}function IO(e){return typeof e!=`string`||e.length===0?{ok:!1,error:{code:`BAD_NAME`,message:`Skill name is required.`}}:e.length>64?{ok:!1,error:{code:`BAD_NAME`,message:`Skill name must be ≤64 characters.`}}:C.test(e)?TO.some(t=>e.includes(t))?{ok:!1,error:{code:`RESERVED_NAME`,message:`Skill name may not contain reserved words (${TO.join(`, `)}).`}}:{ok:!0}:{ok:!1,error:{code:`BAD_NAME`,message:`Skill name must match /^[a-z0-9-]+$/ (got: ${JSON.stringify(e)}). Lowercase letters, digits, hyphens — no slashes, dots, spaces, or uppercase.`}}}function LO(e,t){return!e||typeof e!=`object`?{ok:!1,error:{code:`BAD_FRONTMATTER`,message:`Skill frontmatter (name, description) is required.`}}:typeof e.name!=`string`||e.name.length===0?{ok:!1,error:{code:`SKILL_NAME_REQUIRED`,message:`Skill frontmatter.name is required.`}}:e.name===t?wr(e.name)?{ok:!1,error:{code:`XML_TAG_IN_NAME`,message:"Skill frontmatter.name may not contain XML tags (`<...>`)."}}:typeof e.description!=`string`||e.description.length===0?{ok:!1,error:{code:`SKILL_DESCRIPTION_REQUIRED`,message:`Skill frontmatter.description is required — it is the primary triggering surface (when to use the skill).`}}:e.description.length>wO?{ok:!1,error:{code:`DESCRIPTION_TOO_LONG`,message:`Skill frontmatter.description must be ≤${wO} characters (got ${e.description.length}).`}}:wr(e.description)?{ok:!1,error:{code:`XML_TAG_IN_DESCRIPTION`,message:"Skill frontmatter.description may not contain XML tags (`<...>`) — they break the Cowork parser and skill loader."}}:{ok:!0}:{ok:!1,error:{code:`NAME_DIR_MISMATCH`,message:`Skill frontmatter.name (${JSON.stringify(e.name)}) must equal the skill directory name (${JSON.stringify(t)}).`}}}function RO(e,t){let n=L(e,t);return{skillDir:n,filePath:L(n,EO)}}function zO(e){if(B(e)&&HO(e))try{ul(e)}catch{}let t=Hc(L(e,`..`));if(t.endsWith(`${Wc}.ok`)&&B(t)&&HO(t))try{ul(t)}catch{}}function BO(e,t){return Hc(t.startsWith(e+Wc)?t.slice(e.length+1):t).split(Wc).join(`/`)}function VO(e){return(0,CE.stringify)({name:e.name,description:e.description})}function HO(e){try{return al(e).length===0}catch{return!1}}const UO=[`date`,`user`],WO=/\{\{([^{}\n]+?)\}\}/g;function GO(e){let t=[];for(let n of e.matchAll(WO)){let e=(n[1]??``).trim();qO(e)||t.push({token:e,offset:n.index??0})}return t}function KO(e,t){return e.replace(WO,(e,n)=>{let r=n.trim();return qO(r)?t[r]:e})}function qO(e){return UO.includes(e)}function JO(e=new Date){return`${e.getUTCFullYear().toString().padStart(4,`0`)}-${(e.getUTCMonth()+1).toString().padStart(2,`0`)}-${e.getUTCDate().toString().padStart(2,`0`)}`}const YO=dn;function XO(e){if(!YO.test(e.name))return{ok:!1,error:{code:`BAD_NAME`,message:`Template name must match /^[A-Za-z0-9_-]+$/ (got: ${JSON.stringify(e.name)}). Use letters, digits, underscores, or hyphens — no slashes, dots, or spaces.`}};let t=nk(e.frontmatter.title);if(!t.ok)return{ok:!1,error:t.error};let n=rk(e.body);if(!n.ok)return{ok:!1,error:n.error};let r=ok(e.body);if(!r.ok)return{ok:!1,error:r.error};let i={};e.frontmatter.title!==void 0&&(i.title=e.frontmatter.title),e.frontmatter.description!==void 0&&(i.description=e.frontmatter.description),Array.isArray(e.frontmatter.tags)&&e.frontmatter.tags.length>0&&(i.tags=e.frontmatter.tags);let a=$n(i,e.body),o=[];return(e.frontmatter.description===void 0||typeof e.frontmatter.description!=`string`||e.frontmatter.description.length===0)&&o.push("Template frontmatter.description is missing — `description` disambiguates between similarly-named templates in the menu. Recommended but not required."),{ok:!0,content:a,warnings:o}}function ZO(e){let t=tk(e.projectDir,e.folder,e.name);if(!t.ok)return{ok:!1,error:t.error};let n=XO({name:e.name,body:e.body,frontmatter:e.frontmatter});if(!n.ok)return{ok:!1,error:n.error};let{content:r,warnings:i}=n,{templatesDir:a,filePath:o}=ik(e.projectDir,t.folderRel,e.name);try{el(a,{recursive:!0})}catch(t){return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to create template directory at ${ak(e.projectDir,a)}: ${t.message}`}}}let s=!B(o),c=`${o}.tmp.${process.pid}.${Date.now()}`;try{pl(c,r,`utf-8`),cl(c,o)}catch(t){try{fl(c)}catch{}return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to write template at ${ak(e.projectDir,o)}: ${t.message}`}}}return{ok:!0,path:ak(e.projectDir,o),created:s,warnings:i}}function QO(e){let t=tk(e.projectDir,e.folder,e.name);if(!t.ok)return{ok:!1,error:t.error};let{templatesDir:n,okDir:r,filePath:i}=ik(e.projectDir,t.folderRel,e.name),a=B(i);if(a)try{fl(i)}catch(t){return{ok:!1,error:{code:`UNLINK_FAILED`,message:`Failed to delete template at ${ak(e.projectDir,i)}: ${t.message}`}}}return{ok:!0,path:ak(e.projectDir,i),existed:a,cleanedEmpty:$O(n,r)}}function $O(e,t){let n=!1,r=!1;if(B(e)&&sk(e))try{ul(e),n=!0}catch{}if(B(t)&&sk(t))try{ul(t),r=!0}catch{}return{templatesDir:n,okDir:r}}async function ek(e){let t=tk(e.projectDir,e.fromFolder,e.fromName);if(!t.ok)return{ok:!1,error:t.error};let n=tk(e.projectDir,e.toFolder,e.toName);if(!n.ok)return{ok:!1,error:n.error};let r=ik(e.projectDir,t.folderRel,e.fromName),i=ik(e.projectDir,n.folderRel,e.toName);if(r.filePath===i.filePath)return{ok:!1,error:{code:`NOOP`,message:`Source and destination are the same template.`}};if(!B(r.filePath))return{ok:!1,error:{code:`TEMPLATE_NOT_FOUND`,message:`No template at ${ak(e.projectDir,r.filePath)}.`}};if(B(i.filePath))return{ok:!1,error:{code:`TEMPLATE_EXISTS`,message:`A template already exists at ${ak(e.projectDir,i.filePath)}.`}};try{el(i.templatesDir,{recursive:!0})}catch(t){return{ok:!1,error:{code:`WRITE_ERROR`,message:`Failed to create destination template directory at ${ak(e.projectDir,i.templatesDir)}: ${t.message}`}}}let a;try{a=await e.relocate(r.filePath,i.filePath)}catch(e){return{ok:!1,error:{code:`MOVE_FAILED`,message:`Failed to move template: ${e.message}`}}}let o=$O(r.templatesDir,r.okDir);return{ok:!0,fromPath:ak(e.projectDir,r.filePath),toPath:ak(e.projectDir,i.filePath),committed:a,cleanedEmpty:o}}function tk(e,t,n){if(!Vc(e))return{ok:!1,error:{code:`BAD_PROJECT_DIR`,message:`projectDir must be absolute`}};if(!YO.test(n))return{ok:!1,error:{code:`BAD_NAME`,message:`Template name must match /^[A-Za-z0-9_-]+$/ (got: ${JSON.stringify(n)}). Use letters, digits, underscores, or hyphens — no slashes, dots, or spaces.`}};let r=t.replace(/^\.\//,``).replace(/^\/+/,``).replace(/\/+$/,``).replace(/^\.$/,``);if(r.includes(`..`))return{ok:!1,error:{code:`PATH_TRAVERSAL`,message:`Folder path may not contain "..": ${JSON.stringify(t)}`}};let i=r?z(e,r):e,a=z(e);return!i.startsWith(a+Wc)&&i!==a?{ok:!1,error:{code:`PATH_ESCAPE`,message:`Resolved folder path escapes projectDir: ${i}`}}:{ok:!0,folderRel:r}}function nk(e){return typeof e!=`string`||e.length===0?{ok:!1,error:{code:`TEMPLATE_TITLE_REQUIRED`,message:"Template frontmatter.title is required. `title` is the menu surface — agents pick templates by name+title; a title-less template is effectively invisible. Set a non-empty `title` and retry."}}:{ok:!0}}function rk(e){let t=GO(e);return t.length===0?{ok:!0}:{ok:!1,error:{code:`TEMPLATE_UNKNOWN_VARIABLE`,message:`Template body contains unknown substitution token(s): ${t.map(e=>`\`{{${e.token}}}\` at offset ${e.offset}`).join(`, `)}. v1 allowlist: \`{{date}}\`, \`{{user}}\`. Remove or rename the offending tokens and retry.`}}}function ik(e,t,n){let r=t?L(e,t,`.ok`):L(e,`.ok`),i=L(r,`templates`);return{okDir:r,templatesDir:i,filePath:L(i,`${n}.md`)}}function ak(e,t){return Hc(t.startsWith(e+Wc)?t.slice(e.length+1):t).split(Wc).join(`/`)}function ok(e){let{frontmatter:t}=cn(e);if(t===``)return{ok:!0};let n=mt(t);return RegExp(`^template:`,`m`).test(n)?{ok:!1,error:{code:`TEMPLATE_RESERVED_KEY`,message:`Template starter content may not declare a top-level \`${Dr}:\` frontmatter key — it is reserved for the template's identity.`}}:{ok:!0}}function sk(e){try{return al(e).length===0}catch{return!1}}let ck=new Map;function lk(e,t,n,r,i,a,o,s){let c=ck.get(t);if(c||(c={writerId:t,displayName:n,colorSeed:r??n,docs:new Set,subjectOverride:i,actor:a,summaries:[],previousPaths:[]},ck.set(t,c)),c.docs.add(e),i!==void 0&&(c.subjectOverride=i),a!==void 0){let e=c.actor??{};a.principalId!==void 0&&(e.principalId=a.principalId),a.agentType!==void 0&&(e.agentType=a.agentType),a.clientName!==void 0&&(e.clientName=a.clientName),a.clientVersion!==void 0&&(e.clientVersion=a.clientVersion),a.label!==void 0&&(e.label=a.label),c.actor=e}if(typeof o==`string`&&o.length>0&&c.summaries.push(o),s&&s.length>0)for(let e of s)c.previousPaths.push(e)}function uk(e){let t=e instanceof Set?e:new Set(e);if(t.size!==0)for(let[e,n]of ck){for(let e of t)n.docs.delete(e);n.docs.size===0&&ck.delete(e)}}function dk(){let e=ck;return ck=new Map,e}function fk(e){for(let[t,n]of e){let e=ck.get(t);e||(e={writerId:t,displayName:n.displayName,colorSeed:n.colorSeed,docs:new Set,actor:n.actor,summaries:[],previousPaths:[]},ck.set(t,e));for(let t of n.docs)e.docs.add(t);n.summaries.length>0&&(e.summaries=[...n.summaries,...e.summaries]),n.previousPaths.length>0&&(e.previousPaths=[...n.previousPaths,...e.previousPaths])}}function pk(e){if(e.size===0)return``;let t=[``];for(let n of e.values()){let e={v:1,id:n.writerId,name:n.displayName,colorSeed:n.colorSeed,docs:[...n.docs]};n.summaries.length>0&&(e.summaries=[...n.summaries]),t.push(`ok-contributors: ${JSON.stringify(e)}`)}return t.join(`
48
48
  `)}function mk(){return pk(ck)}function hk(e,t){let n=ck.get(e);n||(n={writerId:e,displayName:t.displayName,colorSeed:t.colorSeed,docs:new Set,actor:t.actor,summaries:[],previousPaths:[]},ck.set(e,n));for(let e of t.docs)n.docs.add(e);t.summaries.length>0&&(n.summaries=[...t.summaries,...n.summaries]),t.previousPaths.length>0&&(n.previousPaths=[...t.previousPaths,...n.previousPaths])}function gk(){ck.clear()}function _k(){return ck.size}function vk(e){return ck.has(e)}const yk=new class{capacity;store;writeIndex=0;filled=!1;constructor(e){if(!Number.isInteger(e)||e<=0)throw RangeError(`RingBuffer capacity must be a positive integer, got ${e}`);this.capacity=e,this.store=Array(e)}push(e){this.store[this.writeIndex]=e,this.writeIndex=(this.writeIndex+1)%this.capacity,this.writeIndex===0&&(this.filled=!0)}read(){let e=[],t=this.filled?this.capacity:this.writeIndex;for(let n=1;n<=t;n++){let t=(this.writeIndex-n+this.capacity)%this.capacity,r=this.store[t];r!==void 0&&e.push(r)}return e}get size(){return this.filled?this.capacity:this.writeIndex}}(256);function bk(e){yk.push(e)}const xk=Ur.cursor,Sk=Ur.codex,Ck=Ur[`claude-desktop`],wk={app:null,signals_fired:[]};function Tk(e){if(!e)return{...wk};let t=[],n=e.ua,r=e.referer,i=!!n&&xk.test(n),a=!!r&&r.includes(`?strategy=C_iframe`);if(i&&t.push(`cursor_ua_regex`),a&&t.push(`cursor_referer_strategy_iframe`),i||a)return{app:`cursor`,signals_fired:t};let o=!!n&&Sk.test(n);if(o&&t.push(`codex_ua_regex`),o)return{app:`codex`,signals_fired:t};let s=!!n&&Ck.test(n);return s&&t.push(`claude_ua_regex`),s?{app:`claude`,signals_fired:t}:{...wk}}const Ek=I(`embeddings`);let Dk=null,Ok=null,kk=null,Ak=null,jk=null;function Mk(){return Dk||=bo().createCounter(`ok.embeddings.tokens_total`,{description:`Embeddings tokens billed, by role. Bounded label: role ∈ {query, document}. Makes spend legible; never includes content.`}),Dk}function Nk(){return Ok||=bo().createCounter(`ok.embeddings.provider_errors_total`,{description:`Embeddings provider failures, by reason. Bounded label: reason ∈ {rate_limit, timeout, http_error, network, dims_mismatch, malformed_response}.`}),Ok}function Pk(){return kk||=bo().createHistogram(`ok.embeddings.request_duration_ms`,{description:`Wall-clock duration of one embeddings API request. Bounded label: role.`,unit:`ms`}),kk}function Fk(){return Ak||=bo().createCounter(`ok.search.semantic_query_total`,{description:`Semantic-requested searches, by outcome and caller surface. Bounded labels: outcome ∈ {applied, no_match, warming, incapable, provider_error}, source ∈ {omnibar, mcp, http}. The omnibar/mcp split separates interactive cost from agent cost.`}),Ak}function Ik(){return jk||=bo().createHistogram(`ok.search.semantic_query_embed_ms`,{description:`Wall-clock latency of the per-query embed on the semantic search path.`,unit:`ms`}),jk}function Lk(e,t){t>0&&Mk().add(t,{role:e})}function Rk(e){Nk().add(1,{reason:e})}function zk(e,t){Pk().record(Math.max(0,t),{role:e})}function Bk(e){Fk().add(1,{outcome:e.outcome,source:e.source}),e.queryEmbedMs!==null&&Ik().record(Math.max(0,e.queryEmbedMs)),Ek.debug({outcome:e.outcome,source:e.source,capable:e.capable,embedded:e.embedded,total:e.total,coverage:e.total>0?e.embedded/e.total:0,queryEmbedMs:e.queryEmbedMs,vectorContributors:e.vectorContributors},`[search] semantic query`)}const Vk=1536,Hk=`OK_EMBEDDINGS_API_KEY`;var Uk=class extends Error{name=`EmbeddingDimsMismatchError`;constructor(e,t){super(`embeddings provider returned ${t}-dim vectors, expected ${e}. Set search.semantic.dimensions to ${t} (or point at the right model).`),this.expected=e,this.got=t}},Wk=class extends Error{name=`MalformedEmbeddingResponseError`;constructor(e,t){super(`embeddings response had ${t} vectors, expected ${e}`)}};function Gk(e,t){let n=0,r=Math.min(e.length,t.length);for(let i=0;i<r;i++)n+=e[i]*t[i];return n}function Kk(e){let t=0;for(let n=0;n<e.length;n++)t+=e[n]*e[n];if(t=Math.sqrt(t),t>0)for(let n=0;n<e.length;n++)e[n]/=t;return e}const qk={maxBatchSize:96,maxBatchChars:96e3,docTimeoutMs:3e4,queryTimeoutMs:8e3,maxRetries:4,backoffBaseMs:500};function Jk(e){try{let t=new URL(e),n=t.pathname.replace(/\/+$/,``);return`${t.protocol}//${t.host.toLowerCase()}${n}`}catch{return e.trim().replace(/\/+$/,``)}}function Yk(e){let t=Hi(e);if(t===null)return;if(t===`invalid-url`)throw Error(`embeddings baseUrl is not a valid URL: ${e}`);let n=new URL(e);throw Error(`refusing to send the embeddings API key to a non-HTTPS endpoint (${n.protocol}//${n.host}); use https:// (http:// is allowed only for localhost)`)}const Xk=new Set([408,409,429,500,502,503,504]);function Zk(e,t={}){let n=t.fetchImpl??fetch,r=t.sleep??Ea,i=t.maxBatchSize??qk.maxBatchSize,a=t.maxBatchChars??qk.maxBatchChars,o=t.maxRetries??qk.maxRetries,s=t.backoffBaseMs??qk.backoffBaseMs,c=t.docTimeoutMs??qk.docTimeoutMs,l=t.queryTimeoutMs??qk.queryTimeoutMs;Yk(e.baseUrl);let u=e.dimensions??1536,d=`${e.baseUrl.replace(/\/+$/,``)}/embeddings`;function f(e){let t=[],n=[],r=0;for(let o of e)n.length>0&&(n.length>=i||r+o.length>a)&&(t.push(n),n=[],r=0),n.push(o),r+=o.length;return n.length>0&&t.push(n),t}async function p(t,r,i,a){let o=new AbortController,s=setTimeout(()=>o.abort(),a),c=performance.now();try{let a=await n(d,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${e.apiKey}`},body:t,signal:o.signal});if(zk(i,performance.now()-c),!a.ok){await a.text().catch(()=>``);let e=a.status===429?`rate_limit`:`http_error`,t=Error(`embeddings request failed: HTTP ${a.status}`);return Xk.has(a.status)?{kind:`retry`,reason:e,error:t}:{kind:`fatal`,reason:e,error:t}}let s=await a.json(),l=h(s,r,u);return Lk(i,s.usage?.total_tokens??0),{kind:`ok`,vectors:l}}catch(e){if(e instanceof Uk)return{kind:`fatal`,reason:`dims_mismatch`,error:e};if(e instanceof Wk)return{kind:`fatal`,reason:`malformed_response`,error:e};let t=e instanceof Error&&e.name===`AbortError`,n=e instanceof Error?e:Error(String(e));return{kind:`retry`,reason:t?`timeout`:`network`,error:n}}finally{clearTimeout(s)}}async function m(t,n){let i=n===`query`?l:c,a=n===`query`?`query`:`document`,u=JSON.stringify({model:e.model,input:t,encoding_format:`float`,...e.dimensions===void 0?{}:{dimensions:e.dimensions}}),d=0;for(;;){let e=await p(u,t.length,a,i);if(e.kind===`ok`)return e.vectors;if(Rk(e.reason),e.kind===`fatal`||d>=o)throw e.error;d+=1;let n=s*2**(d-1);await r(Math.round(n/2+n/2*Math.random()))}}function h(e,t,n){let r=e.data;if(!Array.isArray(r)||r.length!==t)throw new Wk(t,r?.length??0);let i=[...r].sort((e,t)=>(e.index??0)-(t.index??0)),a=[];for(let e of i){let r=e.embedding;if(!Array.isArray(r))throw new Wk(t,0);if(r.length!==n)throw new Uk(n,r.length);a.push(Kk(Float32Array.from(r)))}return a}return{providerId:Jk(e.baseUrl),modelId:e.model,dims:u,async embed(e,{role:t}){if(e.length===0)return[];let n=[];for(let r of f(e))n.push(...await m(r,t));return n}}}async function Qk(e){let t=(e.keyStore?await e.keyStore.get().catch(()=>null):null)??process.env.OK_EMBEDDINGS_API_KEY??null;return t?Zk({...e.config,apiKey:t},e.options):null}const $k=`OPENAI_API_KEY`,eA=`embeddings`;function tA(e){return L(e??gl(),`.ok`,`secrets.yml`)}var nA=class{backend=`file`;secretsFile;constructor(e){this.secretsFile=e??tA()}tightenPermsIfLoose(){let e;try{e=dl(this.secretsFile).mode&511}catch{return}if(e&63)try{Jc(this.secretsFile,384),process.stderr.write(`[embeddings] ${this.secretsFile} was readable beyond your user account (mode ${e.toString(8)}); tightened to 600. It stores an API key.\n`)}catch(t){let n=t instanceof Error?t.message:`unknown error`;process.stderr.write(`[embeddings] ${this.secretsFile} is readable beyond your user account (mode ${e.toString(8)}) and could not be tightened (${n}); your API key remains exposed — run: chmod 600 ${this.secretsFile}\n`)}}read(){if(!B(this.secretsFile))return{};this.tightenPermsIfLoose();try{return(0,CE.parse)(V(this.secretsFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[embeddings] Failed to parse ${this.secretsFile}: ${t}. Starting with empty secrets.\n`),{}}}write(e){let t=zc(this.secretsFile);B(t)||so(t,{recursive:!0,mode:448}),_o(this.secretsFile,(0,CE.stringify)(e),{mode:384}),Jc(this.secretsFile,384)}get(){let e=this.read(),t=e[$k]??e[eA];return Promise.resolve(typeof t==`string`&&t!==``?t:null)}set(e){let t=this.read();return delete t[eA],t[$k]=e,this.write(t),Promise.resolve()}clear(){let e=this.read();if($k in e||eA in e)if(delete e[$k],delete e[eA],Object.keys(e).length===0)try{no(this.secretsFile)}catch{}else this.write(e);return Promise.resolve()}};function rA(e){return new nA(e)}function iA(e){return new nA(e)}async function aA(e){return{file:await new nA(e).get()!=null}}async function oA(e){let t=[],n=new nA(e);return await n.get()!=null&&(await n.clear(),t.push(`file`)),{touched:t}}function sA(e,t){let n=Wa({absPath:qa(`project-local`,e,t?.configHomedirOverride),sideline:!1,warn:t?.onWarn??(()=>{})}).value.search?.semantic;return{enabled:n?.enabled===!0,baseUrl:n?.baseUrl??`https://api.openai.com/v1`,model:n?.model??`text-embedding-3-small`,dimensions:n?.dimensions??void 0,similarityFloor:n?.similarityFloor??void 0}}function cA(e,t={}){let n=Math.max(1,t.targetChars??8e3),r=Math.max(0,Math.min(t.overlapChars??400,n-1)),i=t.maxChunks??80;if(e.trim().length===0)return[];if(e.length<=n)return[e.trim()];let a=[],o=0;for(;o<e.length&&a.length<i;){let t=Math.min(e.length,o+n);if(t<e.length){let r=Math.max(e.lastIndexOf(` `,t),e.lastIndexOf(`
49
- `,t));r>o+Math.floor(n/2)&&(t=r)}let i=e.slice(o,t).trim();if(i&&a.push(i),t>=e.length)break;let s=t-r;o=s>o?s:t}return a}const lA=I(`embeddings`);function uA(e){return Il(`sha256`).update(e,`utf-8`).digest(`hex`)}function dA(e){let t=0;for(let n of e)t+=n.length;let n=new Float32Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}function fA(e,t){let n=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),r=new Float32Array(n);if(r.length%t!==0)throw Error(`vector blob length ${r.length} is not a multiple of dims ${t}`);let i=[];for(let e=0;e<r.length;e+=t)i.push(r.slice(e,e+t));return i}var pA=class{cacheDir;vecDir;manifestPath;providerId;modelId;dims;chunkConfigId;entries=new Map;vectorsByHash=new Map;persistedHashes=new Set;dirty=!1;constructor(e){this.cacheDir=e.cacheDir,this.vecDir=e.cacheDir?L(e.cacheDir,`vec`):null,this.manifestPath=e.cacheDir?L(e.cacheDir,`manifest.json`):null,this.providerId=e.providerId,this.modelId=e.modelId,this.dims=e.dims,this.chunkConfigId=e.chunkConfigId}async init(){if(!this.cacheDir||!this.manifestPath||!this.vecDir)return;let e=null;try{B(this.manifestPath)&&(e=JSON.parse(await wl(this.manifestPath,`utf-8`)))}catch(t){lA.warn({err:t},`[embeddings] unreadable cache manifest — rebuilding`),e=null}if(!(e!==null&&e.schemaVersion===1&&e.providerId===this.providerId&&e.modelId===this.modelId&&e.dims===this.dims&&e.chunkConfigId===this.chunkConfigId)){e!==null&&lA.info({hadModel:e.modelId,wantModel:this.modelId},`[embeddings] cache identity changed (provider/model/dims/chunking) — invalidating`),this.wipeDisk();return}if(e){for(let[t,n]of Object.entries(e.entries))if(n?.contentHash&&(this.entries.set(t,{contentHash:n.contentHash,mtimeMs:n.mtimeMs??0}),!this.vectorsByHash.has(n.contentHash)))try{let e=L(this.vecDir,`${n.contentHash}.bin`);if(B(e)){let t=await wl(e);this.vectorsByHash.set(n.contentHash,fA(t,this.dims)),this.persistedHashes.add(n.contentHash)}}catch(e){lA.warn({hash:n.contentHash,err:e},`[embeddings] corrupt vector blob — will re-embed`)}}}isFresh(e,t){let n=this.entries.get(e);return n!==void 0&&n.mtimeMs===t&&this.vectorsByHash.has(n.contentHash)}link(e,t,n){if(!this.vectorsByHash.has(t))return!1;let r=this.entries.get(e);return(!r||r.contentHash!==t||r.mtimeMs!==n)&&(this.dirty=!0),this.entries.set(e,{contentHash:t,mtimeMs:n}),!0}store(e,t,n,r){this.vectorsByHash.set(t,r),this.entries.set(e,{contentHash:t,mtimeMs:n}),this.dirty=!0}getVectors(e){let t=this.entries.get(e);if(t)return this.vectorsByHash.get(t.contentHash)}get embeddedCount(){let e=0;for(let t of this.entries.values()){let n=this.vectorsByHash.get(t.contentHash);n&&n.length>0&&(e+=1)}return e}retain(e){for(let t of this.entries.keys())e.has(t)||(this.entries.delete(t),this.dirty=!0);let t=new Set;for(let e of this.entries.values())t.add(e.contentHash);for(let e of this.vectorsByHash.keys())t.has(e)||this.vectorsByHash.delete(e)}clearMemory(){this.entries.clear(),this.vectorsByHash.clear(),this.persistedHashes.clear(),this.dirty=!1}async persist(){if(!(!this.cacheDir||!this.manifestPath||!this.vecDir)&&this.dirty)try{await $a(this.vecDir,{recursive:!0});let e=new Set;for(let t of this.entries.values())e.add(t.contentHash);for(let t of e){if(this.persistedHashes.has(t))continue;let e=this.vectorsByHash.get(t);e&&(await Xa(L(this.vecDir,`${t}.bin`),dA(e)),this.persistedHashes.add(t))}let t={schemaVersion:1,providerId:this.providerId,modelId:this.modelId,dims:this.dims,chunkConfigId:this.chunkConfigId,entries:Object.fromEntries(this.entries)},n=`${this.manifestPath}.tmp`;await Xa(n,JSON.stringify(t)),await go(n,this.manifestPath);for(let t of al(this.vecDir)){if(!t.endsWith(`.bin`))continue;let n=t.slice(0,-4);e.has(n)||(no(L(this.vecDir,t)),this.persistedHashes.delete(n))}this.dirty=!1}catch(e){lA.warn({err:e},`[embeddings] failed to persist vector cache`)}}wipeDisk(){if(this.cacheDir)try{fo(this.cacheDir,{recursive:!0,force:!0})}catch(e){lA.warn({err:e},`[embeddings] failed to wipe stale cache`)}}};const mA=I(`embeddings`);function hA(e){return e instanceof Error?e.message:String(e)}var gA=class{loadEmbedder;cacheDir;enabled;providerFingerprint;capable=!1;ready=!1;embedder=null;cache=null;warmPromise=null;embedChain=Promise.resolve();queuedDocs=null;constructor(e){this.loadEmbedder=e.loadEmbedder,this.cacheDir=e.cacheDir,this.enabled=e.enabled??!1,this.providerFingerprint=e.providerFingerprint??``}isEnabled(){return this.enabled}getStatus(){return{enabled:this.enabled,capable:this.capable,ready:this.ready,embeddedCount:this.cache?.embeddedCount??0}}applyConfig(e){e.providerFingerprint!==this.providerFingerprint&&(this.providerFingerprint=e.providerFingerprint,this.resetWarm()),e.enabled!==this.enabled&&(this.enabled=e.enabled,e.enabled||(this.cache?.clearMemory(),this.resetWarm()))}resetWarm(){this.warmPromise=null,this.ready=!1,this.capable=!1,this.embedder=null,this.cache=null}ensureWarm(){return!this.enabled||this.ready?Promise.resolve():(this.warmPromise||=this.warm(),this.warmPromise)}async warm(){try{let e=await this.loadEmbedder();if(!e){this.capable=!1,this.ready=!0,mA.info({},`[embeddings] no embeddings key configured — semantic search degrades to lexical`);return}this.embedder=e,this.cache=new pA({cacheDir:this.cacheDir,providerId:e.providerId,modelId:e.modelId,dims:e.dims,chunkConfigId:`c8000-o400-m80`}),await this.cache.init(),this.capable=!0,this.ready=!0}catch(e){this.capable=!1,this.ready=!0,mA.warn({err:e},`[embeddings] warm failed`)}}embedCorpus(e){return this.enabled?(this.queuedDocs=e,this.embedChain=this.embedChain.then(async()=>{let e=this.queuedDocs;if(e){this.queuedDocs=null;try{await this.runEmbedPass(e)}catch(e){mA.warn({err:e},`[embeddings] embed pass failed`)}}}),this.embedChain):Promise.resolve()}async runEmbedPass(e){if(await this.ensureWarm(),!this.enabled||!this.embedder||!this.cache)return;let t=this.cache,n=this.embedder,r=e.filter(e=>e.kind===`page`),i=new Set(r.map(e=>e.id)),a=[];for(let e of r){if(!this.enabled)return;let n=e.modifiedTs;if(t.isFresh(e.id,n))continue;let r=uA(e.content);t.link(e.id,r,n)||a.push({doc:e,contentHash:r,chunks:cA(e.content)})}let o=0,s=(e,n)=>{t.store(e.doc.id,e.contentHash,e.doc.modifiedTs,n)},c=async e=>{let t=e.flatMap(e=>e.chunks);try{let r=t.length?await n.embed(t,{role:`document`}):[],i=0;for(let t of e)s(t,r.slice(i,i+t.chunks.length)),i+=t.chunks.length;return o=0,!0}catch(t){if(e.length===1)return mA.warn({docId:e[0].doc.id,err:hA(t)},`[embeddings] failed to embed document`),o+=1,o<5;for(let t of e){if(!this.enabled)return!1;try{s(t,t.chunks.length?await n.embed(t.chunks,{role:`document`}):[]),o=0}catch(e){if(mA.warn({docId:t.doc.id,err:hA(e)},`[embeddings] failed to embed document`),o+=1,o>=5)return!1}}return!0}},l=[],u=0;for(let e of a){if(!this.enabled)break;if(l.push(e),u+=Math.max(1,e.chunks.length),u>=96){let e=await c(l);if(l=[],u=0,!e)break}}l.length>0&&this.enabled&&await c(l),!(!this.enabled||this.cache!==t)&&(t.retain(i),await t.persist())}async queryScores(e,t){if(!this.enabled||!this.capable||!this.ready||!this.embedder||!this.cache||this.cache.embeddedCount===0)return null;let n=e.trim();if(!n)return null;let r;try{[r]=await this.embedder.embed([n],{role:`query`})}catch(e){return mA.warn({err:e},`[embeddings] query embed failed — degrading to lexical`),null}if(!r)return null;let i=new Map;for(let e of t){let t=this.cache.getVectors(e.id);if(!t||t.length===0)continue;let n=-1/0;for(let e of t){let t=Gk(r,e);t>n&&(n=t)}n>-1/0&&i.set(e.id,n)}return i}};function _A(e){return{...e,windowsHide:!0}}const vA=()=>I(`http`);function q(e,t,n,r,i={}){if(e.headersSent||e.writableEnded||e.destroyed){vA().error({event:`api.success.double-write`,status:t,handler:i.handler},`successResponse called after headers already sent — suppressed`),Qx().add(1,{type:`urn:ok:error:internal-server-error`,...i.handler?{handler:i.handler}:{}});return}let a=n.safeParse(r);if(!a.success){vA().error({event:`api.success.malformed-body`,issues:a.error.issues,bodyKeys:typeof r==`object`&&r?Object.keys(r):null,handler:i.handler,originalStatus:t},`successResponse produced an invalid body for the supplied schema — emitting fallback`),G(e,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:i.handler});return}let o;try{o=JSON.stringify(a.data)}catch(n){vA().error({event:`api.success.unserializable-body`,bodyKeys:typeof a.data==`object`&&a.data!==null?Object.keys(a.data):null,handler:i.handler,originalStatus:t,err:n},`successResponse parsed body is not JSON-serializable — emitting fallback`),G(e,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:i.handler});return}e.writeHead(t,{...i.extraHeaders,"Content-Type":`application/json`,"X-Content-Type-Options":`nosniff`}),e.end(o)}const yA=[`claude`,`codex`,`cursor`],bA=2e3,xA={claude:[`Claude`],codex:[`Codex`,`OpenAI Codex`],cursor:[`Cursor`]};function SA(e){let t=new Map,n=e.now??Date.now,r=e.ttlMs??6e4;async function i(i){let a=t.get(i);if(a?.status===`resolved`&&a.expiresAt>n())return a.installed;if(a?.status===`inflight`)return a.promise;let o=(async()=>{try{let a=await e.probe(i);return t.set(i,{status:`resolved`,installed:a,expiresAt:n()+r}),a}catch{return t.set(i,{status:`resolved`,installed:!1,expiresAt:n()+r}),!1}})();return t.set(i,{status:`inflight`,promise:o}),o}async function a(){let e=await Promise.all(yA.map(async e=>[e,await i(e)]));return Object.fromEntries(e)}return{probeAll:a,probeWithCache:i}}function CA(e){let t=e.headers.host;if(typeof t==`string`&&t.length>0)try{let{hostname:e}=new URL(`http://${t}/`);return wA(e)}catch{}let n=e.headers.origin;if(typeof n==`string`&&n.length>0)try{return wA(new URL(n).hostname)}catch{return!1}return!0}function wA(e){return e===`localhost`||e===`127.0.0.1`||e===`[::1]`||e===`::1`}async function TA(e,t,n){if(e.method!==`GET`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:`installed-agents`,extraHeaders:{Allow:`GET`}});return}try{q(t,200,Ie,CA(e)?await n():Object.fromEntries(yA.map(e=>[e,!0])),{handler:`installed-agents`})}catch(e){I(`handoff`).error({err:e},`[installed-agents] handler failed`),G(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`installed-agents`,cause:e})}}function EA(e,t=Nc){return n=>e===`darwin`?DA(n,t):e===`win32`?OA(n,t):kA(n,t)}function DA(e,t){let n=xA[e];function r(e){return new Promise(n=>{t(`osascript`,[`-e`,`id of app "${e}"`],_A({timeout:bA,encoding:`utf-8`}),(e,t)=>{if(e){n(!1);return}n(t.trim().length>0)})})}return(async()=>{for(let e of n)if(await r(e))return!0;return!1})()}function OA(e,t){return new Promise(n=>{t(`reg`,[`query`,`HKCR\\${e}`,`/ve`],_A({timeout:bA,encoding:`utf-8`}),e=>{n(!e)})})}function kA(e,t){return new Promise(n=>{t(`xdg-mime`,[`query`,`default`,`x-scheme-handler/${e}`],_A({timeout:bA,encoding:`utf-8`}),(e,t)=>{if(e){n(!1);return}n(t.trim().length>0)})})}function AA(e){return jA(e,{maxBytes:1048576,timeoutMs:3e4})}async function jA(e,t){let n=[],r=0,i=AbortSignal.timeout(t.timeoutMs),a=()=>e.destroy(new NA(t.timeoutMs));i.addEventListener(`abort`,a,{once:!0});try{for await(let i of e){if(r+=i.length,r>t.maxBytes)throw new MA(t.maxBytes);n.push(i)}return Buffer.concat(n)}finally{i.removeEventListener(`abort`,a)}}var MA=class extends Error{maxBytes;constructor(e){super(e===void 0?`Request body exceeded cap`:`Request body exceeded ${PA(e)} cap`),this.name=`PayloadTooLargeError`,this.maxBytes=e}},NA=class extends Error{timeoutMs;constructor(e){super(e===void 0?`Request body read exceeded timeout`:`Request body read exceeded ${e}ms timeout`),this.name=`RequestBodyTimeoutError`,this.timeoutMs=e}};function PA(e){return e>=1048576?`${(e/1048576).toFixed(0)} MB`:e>=1024?`${(e/1024).toFixed(0)} KB`:`${e} B`}function FA(e,t,n,r={}){let i=e.safeParse(t);if(i.success)return{ok:!0,value:i.data};let a=i.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`; `);return G(n,400,`urn:ok:error:invalid-request`,`Request body is invalid.`,{handler:r.handler,detail:a}),{ok:!1}}function J(e,t,n={}){return async(r,i)=>{if(n.method!==void 0&&r.method!==n.method){G(i,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:n.handler,extraHeaders:{Allow:n.method}});return}if(n.preBodyGate!==void 0&&!n.preBodyGate(r,i)){!i.headersSent&&!i.writableEnded&&!i.destroyed&&G(i,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:n.handler,cause:Error(`preBodyGate returned false without writing a response`)});return}if(n.skipBodyParse){let a=FA(e,{},i,n);if(!a.ok)return;await t(r,i,a.value);return}let a;try{a=await AA(r)}catch(e){if(e instanceof MA){G(i,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:n.handler,cause:e});return}if(e instanceof NA){G(i,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:n.handler,cause:e});return}G(i,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:n.handler,cause:e});return}let o;try{o=a.length===0?{}:JSON.parse(a.toString(`utf8`))}catch(e){G(i,400,`urn:ok:error:invalid-request`,`Request body is not valid JSON.`,{handler:n.handler,cause:e});return}let s=FA(e,o,i,n);s.ok&&await t(r,i,s.value)}}const IA={detached:!0,stdio:`ignore`,shell:!1};function LA(e){let t=e instanceof Error?e.message:String(e);return/ENOENT|EACCES|EPERM/.test(t)?{ok:!1,reason:`not-installed`}:{ok:!1,reason:`spawn-error`}}function RA(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,r(e))},o=setTimeout(()=>a({ok:!1,reason:`timeout`}),n);try{let n=Pc(e,[...t],_A(IA));n.once(`error`,e=>{clearTimeout(o),a(LA(e))}),n.once(`spawn`,()=>{if(!i){try{n.unref()}catch{}clearTimeout(o),a({ok:!0})}})}catch(e){I(`spawn-detached`).warn({err:e},`synchronous spawn throw`),clearTimeout(o),a(LA(e))}})}const zA=`spawn-cursor`;function BA(e){throw Error(`Unhandled spawn-cursor outcome.reason: ${String(e)}`)}async function VA(e,t,n){if(e.method!==`POST`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:zA,extraHeaders:{Allow:`POST`}});return}let r;try{r=await jA(e,{maxBytes:4096,timeoutMs:5e3})}catch(e){if(e instanceof MA){G(t,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:zA,cause:e});return}if(e instanceof NA){G(t,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:zA,cause:e});return}G(t,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:zA,cause:e});return}let i;try{i=JSON.parse(r.toString(`utf-8`))}catch(e){G(t,400,`urn:ok:error:invalid-request`,`Malformed JSON body.`,{handler:zA,cause:e});return}let a=typeof i.path==`string`?i.path:``;if(!a){G(t,400,`urn:ok:error:invalid-request`,"Missing or empty `path` field.",{handler:zA});return}if(!GA(a,n.contentDir,n.platform)){G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:zA});return}let o=await(n.resolveCursorBinary??UA)(500);if(!o){G(t,422,`urn:ok:error:cursor-not-installed`,`Cursor CLI not found on this machine.`,{handler:zA});return}let s=WA(o,a,n.platform),c=await(n.spawnDetached??RA)(s.exec,s.args,2e3);if(c.ok){q(t,200,ht,{},{handler:zA});return}switch(c.reason){case`not-installed`:G(t,422,`urn:ok:error:cursor-not-installed`,`Cursor CLI not found on this machine.`,{handler:zA});return;case`timeout`:G(t,504,`urn:ok:error:cursor-spawn-timeout`,`Cursor spawn exceeded the deadline.`,{handler:zA});return;case`spawn-error`:G(t,502,`urn:ok:error:cursor-spawn-failed`,`Cursor spawn failed.`,{handler:zA});return;case`invalid-path`:G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:zA});return;default:return BA(c.reason)}}const HA={darwin:[()=>`/Applications/Cursor.app/Contents/Resources/app/bin/cursor`,e=>`${e}/Applications/Cursor.app/Contents/Resources/app/bin/cursor`],win32:[e=>`${e}\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin\\cursor.cmd`,()=>`C:\\Program Files\\Cursor\\resources\\app\\bin\\cursor.cmd`]};async function UA(e){let t=HA[process.platform];if(t&&t.length>0){let e=gl();for(let n of t){let t=n(e);try{return await bl(t,Sl.X_OK),t}catch(e){let n=e?.code;n!==`ENOENT`&&n!==`EACCES`&&n!==`EPERM`&&I(`spawn-cursor`).warn({code:n,candidate:t},`unexpected fs.access error on bundle probe`)}}}return new Promise(t=>{Nc(process.platform===`win32`?`where`:`which`,[`cursor`],_A({timeout:e,encoding:`utf-8`}),(e,n)=>{if(e){t(null);return}let r=n.split(/\r?\n/)[0]?.trim();t(r&&r.length>0?r:null)})})}function WA(e,t,n){return n===`darwin`&&/\.app\/?$/.test(e)?{exec:`/usr/bin/open`,args:[`-a`,e.replace(/\/$/,``),t]}:n===`win32`&&/\.(cmd|bat)$/i.test(e)?{exec:process.env.ComSpec||`cmd.exe`,args:[`/d`,`/c`,e,t]}:{exec:e,args:[t]}}function GA(e,t,n){if(!e||typeof e!=`string`||e.includes(`\0`)||!t||typeof t!=`string`)return!1;if(n===`win32`){if(!/^([a-zA-Z]:[\\/]|\\\\)/.test(e)||!/^([a-zA-Z]:[\\/]|\\\\)/.test(t))return!1}else if(!e.startsWith(`/`)||!t.startsWith(`/`))return!1;let r=n===`win32`?Gc:Uc;try{let i=r.resolve(e),a=r.resolve(t);if(n===`win32`){let e=r.parse(i).root.toLowerCase(),t=r.parse(a).root.toLowerCase();if(!e||!t||e!==t)return!1}if(i===a)return!0;let o=r.relative(a,i);return o===``||o===`.`?!0:!(o===`..`||o.startsWith(`..${r.sep}`)||n===`win32`&&(/^[a-zA-Z]:[\\/]/.test(o)||o.startsWith(`\\\\`))||n!==`win32`&&o.startsWith(`/`))}catch(e){return I(`spawn-cursor`).warn({err:e},`unexpected path-resolution error`),!1}}const KA=`handoff`,qA=2e3,JA={"claude-cowork":{type:`app-bundle`,appName:`Claude`,urlScheme:`claude:`,probeScheme:`claude`,quitFirst:!1},"claude-code":{type:`app-bundle`,appName:`Claude`,urlScheme:`claude:`,probeScheme:`claude`,quitFirst:!1},codex:{type:`app-bundle`,appName:`Codex`,urlScheme:`codex:`,probeScheme:`codex`,quitFirst:!0},cursor:{type:`cli-binary`,binaryName:`cursor`,urlScheme:`cursor:`}},YA=A({target:Yi(Object.keys(JA)),url:P().min(1).max(4096),workspacePath:P().optional()}),XA=A({}).loose();async function ZA(e,t,n){if(e.method!==`POST`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:KA,extraHeaders:{Allow:`POST`}});return}let r;try{r=await jA(e,{maxBytes:4096,timeoutMs:5e3})}catch(e){if(e instanceof MA){G(t,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:KA,cause:e});return}if(e instanceof NA){G(t,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:KA,cause:e});return}G(t,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:KA,cause:e});return}let i;try{i=JSON.parse(r.toString(`utf-8`))}catch(e){G(t,400,`urn:ok:error:invalid-request`,`Malformed JSON body.`,{handler:KA,cause:e});return}let a=YA.safeParse(i);if(!a.success){G(t,400,`urn:ok:error:invalid-request`,`Invalid request body.`,{handler:KA});return}let{target:o,url:s,workspacePath:c}=a.data,l=JA[o];if(!s.startsWith(l.urlScheme)){G(t,400,`urn:ok:error:invalid-request`,`URL scheme must be ${l.urlScheme} for target ${o}.`,{handler:KA});return}let u=n.sleep??Ea,d=n.spawnDetached??RA,f=n.isSchemeRegistered??EA(n.platform);if(l.type===`app-bundle`){if(n.platform===`darwin`){l.quitFirst&&(await d(`/usr/bin/osascript`,[`-e`,`tell application "${l.appName}" to quit`],qA).catch(()=>void 0),await u(3e3));let e=await d(`/usr/bin/open`,[`-a`,l.appName],qA);if(!e.ok){$A(t,o,e.reason);return}await u(5e3)}else if(!await f(l.probeScheme)){G(t,422,`urn:ok:error:handoff-target-not-installed`,`Required binary or application not found.`,{handler:KA,extensions:{target:o}});return}let e=QA(s,n.platform),r=await d(e.exec,e.args,qA);if(!r.ok){$A(t,o,r.reason);return}q(t,200,XA,{},{handler:KA});return}if(!c){G(t,400,`urn:ok:error:invalid-request`,`workspacePath is required for cursor handoff.`,{handler:KA});return}if(!GA(c,n.contentDir,n.platform)){G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:KA});return}let p=await(n.resolveCursorBinary??UA)(500);if(!p){G(t,422,`urn:ok:error:handoff-target-not-installed`,`Cursor CLI not found on this machine.`,{handler:KA,extensions:{target:`cursor`}});return}let m=WA(p,c,n.platform),h=await d(m.exec,m.args,qA);if(!h.ok){$A(t,o,h.reason);return}await u(1500);let g=QA(s,n.platform),_=await d(g.exec,g.args,qA);if(!_.ok){$A(t,o,_.reason);return}q(t,200,XA,{},{handler:KA})}function QA(e,t){return t===`darwin`?{exec:`/usr/bin/open`,args:[e]}:t===`win32`?{exec:`rundll32.exe`,args:[`url.dll,FileProtocolHandler`,e]}:{exec:`xdg-open`,args:[e]}}function $A(e,t,n){switch(n){case`not-installed`:G(e,422,`urn:ok:error:handoff-target-not-installed`,`Required binary or application not found.`,{handler:KA,extensions:{target:t}});return;case`timeout`:G(e,504,`urn:ok:error:handoff-spawn-timeout`,`Handoff spawn exceeded the deadline.`,{handler:KA,extensions:{target:t}});return;case`spawn-error`:G(e,502,`urn:ok:error:handoff-spawn-failed`,`Handoff spawn failed.`,{handler:KA,extensions:{target:t}});return;default:ej(n)}}function ej(e){throw Error(`Unhandled spawn reason: ${String(e)}`)}const tj=[`INDEX`,`README`,`REPORT`,`SPEC`];function nj(e,t){let n=[],r=new Set,i=t=>{!t||r.has(t)||t!==e&&(r.add(t),n.push(t))},a=ij(t),o=aj(e);for(;;){for(let e of tj)if(i(rj(t,a,sj(o,e))),n.length>=3)return n;let e=o===``?null:oj(o);if(e&&(i(rj(t,a,sj(o,e))),n.length>=3))return n;if(o===``)break;o=aj(o)}return n}function rj(e,t,n){return e.has(n)?n:t.get(n.toLowerCase())??null}function ij(e){let t=new Map;for(let n of e.keys()){let e=n.toLowerCase();t.has(e)||t.set(e,n)}return t}function aj(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}function oj(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function sj(e,t){return e===``?t:`${e}/${t}`}const cj=I(`installed-skills-marker`),lj={writeFile:(e,t,n)=>Xa(e,t,n),rename:(e,t)=>go(e,t)};function uj(e){return L(e,...nt)}const dj=new Map;function fj(e,t){let n=uj(e),r=(dj.get(n)??Promise.resolve()).then(t,t);return dj.set(n,r.then(()=>void 0,()=>void 0)),r}function pj(e){let t=uj(e);if(!B(t))return s();try{return lr(V(t,`utf-8`))??s()}catch(e){return cj.warn({err:e,path:t},`installed-skills marker unreadable`),s()}}async function mj(e,t){let n=hr.safeParse(t);if(!n.success)throw Error(`Refusing to write invalid installed-skills marker: ${n.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`; `)}`);let r=uj(e);await $a(zc(r),{recursive:!0}),await Ka(r,`${JSON.stringify(n.data,null,2)}\n`,{fs:lj})}async function hj(e,t,n){return fj(e,async()=>{let r=pj(e);await mj(e,{...r,skills:{...r.skills,[t]:n}})})}async function gj(e,t){return fj(e,async()=>{let n=pj(e),r=n.skills[t]??null;if(r===null)return null;let{[t]:i,...a}=n.skills;return await mj(e,{...n,skills:a}),r})}function _j(e){let t=/^\s{0,3}([`~]{3,})/.exec(e);if(!t)return null;let n=t[1],r=n[0];return r!=="`"&&r!==`~`?null:{char:r,length:n.length}}function vj(e,t){return RegExp(`^\\s{0,3}\\${t.char}{${t.length},}\\s*$`).test(e)}function yj(e){let t=/^\s{0,3}(?:#{1,6}\s+|>\s+|(?:[-+*]|\d+[.)])\s+)/.exec(e);return t?t[0].length:0}function bj(e,t){let n=0;for(;e[t+n]==="`";)n++;if(n===0)return null;let r=t+n,i=r;for(;i<e.length;){if(e[i]!=="`"){i++;continue}let t=0;for(;e[i+t]==="`";)t++;if(t===n)return{nextIndex:i+n};i+=t}return{nextIndex:r}}function xj(e,t){let n=UE(e,t);return n?{target:n.target,alias:n.alias,anchor:n.anchor,nextIndex:n.end}:null}function Sj(e,t){let n=UE(e,t);return n?{target:n.target,alias:n.alias,anchor:n.anchor,nextIndex:n.end,embed:n.embed}:null}function Cj(e,t){let n=WE(e,t);return!n||n.image?null:{text:n.label,hrefRaw:n.hrefRaw,href:n.href,titleSuffix:n.titleSuffix,nextIndex:n.end}}function wj(e,t){let n=WE(e,t);return n?.image?{alt:n.label,hrefRaw:n.hrefRaw,href:n.href,titleSuffix:n.titleSuffix,nextIndex:n.end}:null}function Tj(e){let t=e.split(/(\r\n|\r|\n)/),n=[];for(let e=0;e<t.length;e+=2)n.push({line:t[e]??``,ending:t[e+1]??``});return n}function Ej(e,t,n){let r=``,i=0,a=0,o=yj(e);for(o>0&&(r+=e.slice(0,o),a=o);a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`&&e[a+1]===`[`){let o=xj(e,a);if(o){o.target===t?(r+=`[[${n}${o.anchor?`#${o.anchor}`:``}${o.alias?`|${o.alias}`:``}]]`,i++):r+=e.slice(a,o.nextIndex),a=o.nextIndex;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Dj(e,t,n){let r=e.indexOf(`#`),i=r>=0?e.slice(r):``,a=r>=0?e.slice(0,r):e,o=a.indexOf(`?`),s=o>=0?a.slice(o):``,c=o>=0?a.slice(0,o):a;if(c.startsWith(`/`)||c.startsWith(`//`)||/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(c))return null;let l=Uc.dirname(t),u=Uc.dirname(n);if(l===u)return null;let d=l===`.`?`/`:`/${l}/`,f=Uc.resolve(d,c).slice(1),p=Uc.relative(u===`.`?``:u,f);return p||=Uc.basename(f),c.startsWith(`./`)&&!p.startsWith(`./`)&&!p.startsWith(`../`)&&(p=`./${p}`),`${p}${s}${i}`}function Oj(e){try{return decodeURI(e)}catch{return e}}function kj(e){let t=e.indexOf(`#`),n=t>=0?e.slice(t):``,r=t>=0?e.slice(0,t):e,i=r.indexOf(`?`),a=i>=0?r.slice(i):``;return{pathPart:i>=0?r.slice(0,i):r,suffix:`${a}${n}`}}function Aj(e,t,n,r={}){let i=r.encodePath??!0,a=e=>i?encodeURI(e):e,{pathPart:o,suffix:s}=kj(e);if(o.startsWith(`/`))return`/${a(n)}${s}`;let c=Uc.dirname(t),l=Uc.relative(c===`.`?``:c,n);return l||=Uc.basename(n),o.startsWith(`./`)&&!l.startsWith(`./`)&&!l.startsWith(`../`)&&(l=`./${l}`),`${a(l)}${s}`}function jj(e,t,n,r,i={}){return Lr(Oj(e),t)===n?Aj(e,t,r,i):null}function Mj(e,t,n){let r=e.indexOf(`#`),i=r>=0?e.slice(r):``,a=r>=0?e.slice(0,r):e,o=a.indexOf(`?`),s=o>=0?a.slice(o):``,c=o>=0?a.slice(0,o):a,l=c.startsWith(`/`),u=Uc.dirname(t),d=l?`/${n}`:Uc.relative(u===`.`?``:u,n);return d||=Uc.basename(n),c.endsWith(`.mdx`)?d+=`.mdx`:c.endsWith(`.md`)&&(d+=`.md`),!l&&c.startsWith(`./`)&&!d.startsWith(`./`)&&!d.startsWith(`../`)&&(d=`./${d}`),`${d}${s}${i}`}function Nj(e,t,n,r){let i=``,a=0,o=0,s=yj(e);for(s>0&&(i+=e.slice(0,s),o=s);o<e.length;){if(e[o]===`\\`&&o+1<e.length){i+=e.slice(o,o+2),o+=2;continue}if(e[o]==="`"){let t=bj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}if(e[o]===`[`&&e[o+1]===`[`){let t=xj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}if(e[o]===`!`&&e[o+1]===`[`){let s=wj(e,o);if(s){let c=t===n&&n!==r?Dj(s.href,n,r):null;if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`![${s.alt}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}if(e[o]===`[`){let s=Cj(e,o);if(s){if(ri(s.href,t)?.docName===n){let e=Mj(s.href,t,r),n=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${e}>`:e;i+=`[${s.text}](${n}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}i+=e[o],o++}return{markdown:i,rewrites:a}}function Pj(e,t){return`${e.embed?`!`:``}[[${t}${e.anchor?`#${e.anchor}`:``}${e.alias?`|${e.alias}`:``}]]`}const Fj=/(\s(?:href|src)\s*=\s*)(?:"([^"\n]*)"|'([^'\n]*)'|“([^”\n]*)”|([^\s"'=<>`]+))/gi;function Ij(e,t,n,r){let i=0;return{markdown:e.replace(Fj,(e,a,o,s,c,l)=>{let u=o??s??c??l;if(typeof u!=`string`)return e;let d=jj(u,t,n,r);return d===null?e:(i++,o===void 0?s===void 0?c===void 0?`${a}${d}`:`${a}“${d}”`:`${a}'${d}'`:`${a}"${d}"`)}),rewrites:i}}function Lj(e,t,n,r){let i=``,a=0,o=0,s=yj(e);for(s>0&&(i+=e.slice(0,s),o=s);o<e.length;){if(e[o]===`\\`&&o+1<e.length){i+=e.slice(o,o+2),o+=2;continue}if(e[o]==="`"){let t=bj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}let s=Sj(e,o);if(s){let c=jj(s.target,t,n,r,{encodePath:!1});c===null?i+=e.slice(o,s.nextIndex):(i+=Pj(s,c),a++),o=s.nextIndex;continue}if(e.startsWith(`<!--`,o)){let t=e.indexOf(`-->`,o+4);if(t===-1){i+=e.slice(o);break}i+=e.slice(o,t+3),o=t+3;continue}if(e[o]===`<`){let s=e.indexOf(`>`,o+1);if(s!==-1){let c=Ij(e.slice(o,s+1),t,n,r);if(c.rewrites>0){i+=c.markdown,a+=c.rewrites,o=s+1;continue}}}if(e[o]===`!`&&e[o+1]===`[`){let s=wj(e,o);if(s){let c=jj(s.href,t,n,r);if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`![${s.alt}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}if(e[o]===`[`){let s=Cj(e,o);if(s){let c=jj(s.href,t,n,r);if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`[${s.text}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}i+=e[o],o++}return{markdown:i,rewrites:a}}const Rj=/<Mirror\b([^>]*)\/>/g,zj=/(\bsrc=)(["'])([^"']*)\2/g;function Bj(e,t,n){let r=``,i=0,a=0;for(;a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`<`){let o=new RegExp(Rj.source),s=e.slice(a),c=o.exec(s);if(c&&c.index===0){let[e,o]=c,s=new RegExp(zj.source,zj.flags),l=o.replace(s,(e,r,a,o)=>o===t?(i++,`${r}${a}${n}${a}`):e);r+=`<Mirror${l}/>`,a+=e.length;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Vj(e,t,n){let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Bj(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}function Hj(e,t,n){let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Ej(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}function Uj(e,t,n,r){let i=null,a=0;return{markdown:Tj(e).map(({line:e,ending:o})=>{if(i)return vj(e,i)&&(i=null),`${e}${o}`;let s=_j(e);if(s)return i=s,`${e}${o}`;let c=Nj(e,t,n,r);return a+=c.rewrites,`${c.markdown}${o}`}).join(``),rewrites:a}}function Wj(e,t,n,r){let i=null,a=0;return{markdown:Tj(e).map(({line:e,ending:o})=>{if(i)return vj(e,i)&&(i=null),`${e}${o}`;let s=_j(e);if(s)return i=s,`${e}${o}`;let c=Lj(e,t,n,r);return a+=c.rewrites,`${c.markdown}${o}`}).join(``),rewrites:a}}function Gj(e,t,n){let r=``,i=0,a=0,o=yj(e);for(o>0&&(r+=e.slice(0,o),a=o);a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`&&e[a+1]===`[`){let t=xj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`!`&&e[a+1]===`[`){let t=wj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`){let o=Cj(e,a);if(o){let s=ri(o.href,t);if(s!==null){let t=Mj(o.href,n,s.docName);if(t!==o.href){let e=o.hrefRaw.startsWith(`<`)&&o.hrefRaw.endsWith(`>`)?`<${t}>`:t;r+=`[${o.text}](${e}${o.titleSuffix})`,i++}else r+=e.slice(a,o.nextIndex)}else r+=e.slice(a,o.nextIndex);a=o.nextIndex;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Kj(e,t,n){if(Uc.dirname(t)===Uc.dirname(n))return{markdown:e,rewrites:0};let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Gj(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}var qj=class extends Error{colliding;constructor(e){super(`Managed rename collision: ${e.map(e=>`'${e.existing}' and '${e.incoming}' both target '${e.to}'`).join(`; `)}`),this.name=`ManagedRenameCollisionError`,this.colliding=e}},Jj=class extends Error{kind;constructor(e,t=`${e} does not exist`){super(t),this.name=`ManagedRenameSourceNotFoundError`,this.kind=e}},Yj=class extends Error{constructor(){super(`Destination already exists`),this.name=`ManagedRenameDestinationExistsError`}},Xj=class extends Error{kind;constructor(e,t=`Source path is not a ${e}`){super(t),this.name=`ManagedRenameSourceTypeMismatchError`,this.kind=e}},Zj=class extends Error{constructor(e){super(e),this.name=`ManagedRenameInvalidRequestError`}},Qj=class extends Error{constructor(e){super(e),this.name=`ManagedRenameReservedPathError`}},$j=class extends Error{constructor(e){super(`symlink-escape: ${e}`),this.name=`SymlinkEscapeError`}},eM=class extends Error{constructor(){super(`Managed rename requires backlink index support`),this.name=`BacklinkIndexRequiredError`}},tM=class extends Error{docName;constructor(e){super(`Cannot snapshot missing document: ${e}`),this.name=`ManagedRenameSnapshotMissingError`,this.docName=e}},nM=class extends Error{docName;constructor(e){super(`Cannot rename missing document: ${e}`),this.name=`ManagedRenameMissingDocumentError`,this.docName=e}};function rM(e){let t=new Map,n=[];for(let{from:r,to:i}of e){for(let[e,a]of t)e!==r&&a===i&&n.push({existing:e,incoming:r,to:i});t.set(r,i)}if(n.length>0)throw new qj(n);return t}function iM(e,t,n,r){let{frontmatter:i,body:a}=cn(e),o=Hj(a,n,r),s=Uj(o.markdown,t,n,r),c=Vj(s.markdown,n,r);return{markdown:Zt(i,c.markdown),rewrites:o.rewrites+s.rewrites+c.rewrites}}function aM(e,t,n){let r=e,i=0,a,o=[];for(let[e,r]of n)e!==r&&(e===t?a=r:o.push([e,r]));if(a!==void 0){let e=iM(r,t,t,a);r=e.markdown,i+=e.rewrites;let{frontmatter:n,body:o}=cn(r),s=Kj(o,t,a);r=Zt(n,s.markdown),i+=s.rewrites}let s=a??t,c=new Map;for(let[e,t]of o){let n=`__OK_RENAME_${Ll().replaceAll(`-`,``)}__`,a=iM(r,s,e,n);a.rewrites>0&&(r=a.markdown,i+=a.rewrites,c.set(n,t))}for(let[e,t]of c)r=iM(r,s,e,t).markdown;return{markdown:r,rewrites:i}}var oM=t(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.*\/|^\.+$/,l=`node-ignore`;typeof Symbol<`u`&&(l=Symbol.for(`node-ignore`));let u=l,d=(e,t,n)=>Object.defineProperty(e,t,{value:n}),f=/([0-z])-([0-z])/g,p=()=>!1,m=e=>e.replace(f,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),h=e=>{let{length:t}=e;return e.slice(0,t-t%2)},g=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${h(r)}${i}`:i===`]`&&r.length%2==0?`[${m(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(e,t)=>`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`]],_=Object.create(null),v=(e,t)=>{let n=_[e];return n||(n=g.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),_[e]=n),t?new RegExp(n,`i`):new RegExp(n)},y=e=>typeof e==`string`,b=e=>e&&y(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,x=e=>e.split(s);var S=class{constructor(e,t,n,r){this.origin=e,this.pattern=t,this.negative=n,this.regex=r}};let C=(e,t)=>{let n=e,r=!1;e.indexOf(`!`)===0&&(r=!0,e=e.substr(1)),e=e.replace(a,`!`).replace(o,`#`);let i=v(e,t);return new S(n,e,r,i)},w=(e,t)=>{throw new t(e)},T=(e,t,n)=>y(e)?e?T.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),ee=e=>c.test(e);T.isNotRelative=ee,T.convert=e=>e;var te=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){d(this,u,!0),this._rules=[],this._ignoreCase=t,this._allowRelativePaths=n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[u]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(b(e)){let t=C(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(y(e)?x(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let n=!1,r=!1;return this._rules.forEach(i=>{let{negative:a}=i;r===a&&n!==r||a&&!n&&!r&&!t||i.regex.test(e)&&(n=!a,r=a)}),{ignored:n,unignored:r}}_test(e,t,n,r){let i=e&&T.convert(e);return T(i,e,this._allowRelativePaths?p:w),this._t(i,t,n,r)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`),r.pop(),!r.length)return t[e]=this._testOne(e,n);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._testOne(e,n)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let ne=e=>new te(e);if(ne.isPathValid=e=>T(e&&T.convert(e),e,p),ne.default=ne,t.exports=ne,typeof process<`u`&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform===`win32`)){T.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;T.isNotRelative=t=>e.test(t)||ee(t)}}))(),1);const sM=I(`content-filter`),cM=Ul(Nc),lM=new Set(`node_modules,.venv,venv,env,__pycache__,vendor,dist,build,out,output,.next,.nuxt,.svelte-kit,.astro,.turbo,.cache,.parcel-cache,coverage,.git,.ok,.open-knowledge,.openknowledge,.claude,.cursor,.codex,.agents,.opencode,.pi,Library,Applications,.Trash`.split(`,`)),uM=new Set([`.git`,`node_modules`,`.ok`,`.open-knowledge`,`.openknowledge`,`.claude`,`.cursor`,`.codex`,`.agents`,`.opencode`,`.pi`]),dM=new Set([`worktrees`,`local`]);function fM(e,t){let n=e.split(`/`);for(let e=0;e<n.length;e++){let r=n[e];if(uM.has(r)&&!(t&&r===`.ok`&&!dM.has((n[e+1]??``).toLowerCase())))return!0}return!1}function pM(e){return e.startsWith(`${ct}/`)}function mM(e){return e===`.ok`||e===`.ok/skills`||e.startsWith(`.ok/skills/`)}function hM(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``).trim();return t===`.ok`||t===`.ok/**`||t===`**/.ok`||t===`**/.ok/**`}const gM=new Set([`.DS_Store`,`.localized`]);function _M(e){return gM.has(e.slice(e.lastIndexOf(`/`)+1))}const vM=new Set([`.ssh`,`.aws`,`.gnupg`,`.kube`,`.docker`]);function yM(e){for(let t of e.split(`/`))if(vM.has(t.toLowerCase()))return!0;return!1}const bM=new Set([`credentials`,`.netrc`,`.npmrc`,`.pgpass`,`.git-credentials`]),xM=[`.pem`,`.key`,`.p12`,`.pfx`,`.keystore`,`.jks`,`.ppk`];function SM(e){let t=e.slice(e.lastIndexOf(`/`)+1).toLowerCase();if(t===`.env`||t.startsWith(`.env.`)||bM.has(t)||t.startsWith(`id_rsa`)||t.startsWith(`id_ed25519`)||t.startsWith(`id_ecdsa`)||t.startsWith(`id_dsa`))return!0;for(let e of xM)if(t.endsWith(e))return!0;return!1}function CM(e,t){return t===e||t.startsWith(`${e}/`)}const wM=[`.gitignore`,`.okignore`];function TM(e,t){let n=DM(e);if(n===null)return[];let r=[];MM(L(n,`info`,`exclude`),t,r,`info/exclude`);let i=kM(e);return i&&MM(i,t,r,`global excludesfile`),r}async function EM(e,t){let n=await OM(e);if(n===null)return[];let r=[];await NM(L(n,`info`,`exclude`),t,r,`info/exclude`);let i=await AM(e);return i&&await NM(i,t,r,`global excludesfile`),r}function DM(e){let t=Fc(`git`,[`rev-parse`,`--git-common-dir`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));return t.status!==0||!t.stdout?null:z(e,t.stdout.trim())}async function OM(e){try{let{stdout:t}=await cM(`git`,[`rev-parse`,`--git-common-dir`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));return t?z(e,t.trim()):null}catch{return null}}function kM(e){let t=Fc(`git`,[`config`,`--get`,`--type=path`,`core.excludesfile`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));if(t.status===0&&t.stdout){let e=t.stdout.trim();if(e)return e}return jM()}async function AM(e){try{let{stdout:t}=await cM(`git`,[`config`,`--get`,`--type=path`,`core.excludesfile`],_A({cwd:e,encoding:`utf-8`,timeout:5e3})),n=t.trim();if(n)return n}catch{}return jM()}function jM(){let e=process.env.XDG_CONFIG_HOME?.trim();return L(e&&e.length>0?e:L(gl(),`.config`),`git`,`ignore`)}function MM(e,t,n,r){if(B(e))try{let r=V(e,`utf-8`);t.value+=r.length,n.push(...IM(r))}catch(t){sM.warn({path:e,err:t},`Failed to read ${r} at ${e}`)}}async function NM(e,t,n,r){if(B(e))try{let r=await wl(e,`utf-8`);t.value+=r.length,n.push(...IM(r))}catch(t){sM.warn({path:e,err:t},`Failed to read ${r} at ${e}`)}}function PM(e){let{projectDir:t,contentDir:n,onAfterRebuild:r,singleDocRelPath:i}=e,a=jE(R(t,n)),o=a.startsWith(`..`),s,c,l,u=0,d=0,f=0;function p(){let e=(0,oM.default)();e.add(`.git`);let r=[],i=0,p=0;for(let n of wM){let a=L(t,n);if(B(a))try{let t=V(a,`utf-8`);i+=t.length;let n=IM(t);r.push(...n),e.add(n)}catch(e){sM.warn({path:a,err:e},`Failed to read ${n} at ${a}`)}}if(a&&!o)for(let t of wM){let r=L(n,t);if(B(r))try{let t=V(r,`utf-8`);i+=t.length,p++;let n=IM(t).map(e=>LM(e,a));e.add(n)}catch(e){sM.warn({path:r,err:e},`Failed to read ${t} at ${r}`)}}let m={value:i};p+=RM(n,t,e,m),i=m.value;let h=TM(t,m);i=m.value,h.length>0&&(r.push(...h),e.add(h));let g=r.filter(e=>e.length>0&&!e.startsWith(`!`)&&!e.startsWith(`#`)&&!hM(e));return s=e,c=r,l=g,u=r.length,d=p,f=i,{patternCount:u,nestedFileCount:d,bytes:f}}p();let m=new Map;function h(e){if(o)return!1;let t=a?`${a}/${e}`:e;return s.ignores(t)}let g=()=>{i===void 0&&FM(n,``,h,m)};g();function _(e){return Nx(zx(e))}function v(e){for(let t of e.split(`/`))if(lM.has(t))return!0;return o?!1:h(e)}return{isExcluded(e,t){if(_(e)||SM(e)||yM(e))return!0;if(!t?.bypassFilters&&pM(e)){if(i!==void 0)return e!==i;if(Lx(e))return!1;let t=Bc(e).slice(1).toLowerCase();return!Xi.has(t)}if(fM(e,t?.showOk)||_M(e))return!0;if(i!==void 0)return e!==i;if(t?.bypassFilters)return!1;if(v(e))return!0;if(Lx(e))return!1;let n=Bc(e).slice(1).toLowerCase();if(Xi.has(n)){let t=zc(e),n=t===`.`?``:t;if((m.get(n)??0)>0)return!1}return!0},isDirExcluded(e,t){if(yM(e))return!0;if(!t?.bypassFilters&&mM(e))return!1;if(fM(e,t?.showOk))return!0;if(i!==void 0)return!CM(e,i);if(t?.bypassFilters)return!1;for(let t of e.split(`/`))if(lM.has(t))return!0;if(o)return!1;let n=a?`${a}/${e}`:e;return s.ignores(n)||s.ignores(`${n}/`)},isPathIgnored(e,t){return _(e)||SM(e)||yM(e)?!0:pM(e)?!1:fM(e)||_M(e)?!0:t?.bypassFilters?!1:v(e)},getWatcherIgnoreGlobs(){return l},incrementMdDir(e){let t=e===`.`?``:e;m.set(t,(m.get(t)??0)+1)},decrementMdDir(e){let t=e===`.`?``:e,n=m.get(t)??0;n<=1?m.delete(t):m.set(t,n-1)},rebuildDirCount(){let e=new Map(m);m.clear();try{g()}catch(t){for(let[t,n]of e)m.set(t,n);sM.warn({err:t instanceof Error?t:Error(String(t))},`content-filter rebuildDirCount walk failed — retaining previous counts`)}},async rebuildIgnorePatterns(){let e=s,t=c,n=l,i=u,a=d,o=f,h=Date.now();return Ya(`config.ignore.rebuild`,{attributes:{}},async _=>{try{let e=p();m.clear(),g();let t=Date.now()-h;if(_.setAttributes({"ok.ignore.pattern_count":e.patternCount,"ok.ignore.nested_file_count":e.nestedFileCount,"ok.ignore.bytes":e.bytes}),sM.info({patternCount:e.patternCount,nestedFileCount:e.nestedFileCount,bytes:e.bytes,durationMs:t},`content-filter rebuild succeeded`),r)try{r()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter onAfterRebuild callback threw — derived views may be stale`)}return{ok:!0,patternCount:e.patternCount,nestedFileCount:e.nestedFileCount,bytes:e.bytes,durationMs:t}}catch(r){s=e,c=t,l=n,u=i,d=a,f=o,m.clear();try{g()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter rollback dirCount re-walk failed — sibling-asset counts may be stale until next rebuild`)}let p=r instanceof Error?r.message:String(r);return sM.warn({err:r instanceof Error?r:Error(p)},`content-filter rebuild failed — rolled back to previous state`),{ok:!1,error:{message:p}}}})}}}function FM(e,t,n,r){let i;try{i=al(e,{withFileTypes:!0})}catch(t){sM.warn({dir:e,err:t},`Failed to read directory for dir-count: ${e}`);return}for(let a of i){let i=t?`${t}/${a.name}`:a.name;if(a.isDirectory()){if(lM.has(a.name)||n(i)||n(`${i}/`))continue;FM(L(e,a.name),i,n,r)}else a.isFile()&&Lx(a.name)&&!n(i)&&r.set(t,(r.get(t)??0)+1)}}function IM(e){return e.split(`
50
- `).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`))}function LM(e,t){let n=e.startsWith(`!`),r=n?e.slice(1):e,i=r.startsWith(`/`)?r.slice(1):r,a=i.endsWith(`/`)?i.slice(0,-1):i,o=r.startsWith(`/`)||a.includes(`/`)?`${t}/${i}`:`${t}/**/${i}`;return n?`!${o}`:o}function RM(e,t,n,r){let i;try{i=al(e,{withFileTypes:!0})}catch(t){return sM.warn({dir:e,err:t},`Failed to read directory ${e}`),0}let a=0;for(let o of i){if(!o.isDirectory()||lM.has(o.name))continue;let i=L(e,o.name),s=jE(R(t,i));if(!s.startsWith(`..`)&&!(n.ignores(s)||n.ignores(`${s}/`))){for(let e of wM){let t=L(i,e);if(B(t))try{let e=V(t,`utf-8`);r.value+=e.length;let i=IM(e).map(e=>LM(e,s));n.add(i),a++}catch(n){sM.warn({path:t,err:n},`Failed to read nested ${e} at ${t}`)}}a+=RM(i,t,n,r)}}return a}async function zM(e,t,n,r,i,a,o){let s;try{s=await Tl(e,{withFileTypes:!0})}catch(t){sM.warn({dir:e,err:t},`Failed to read directory ${e}`);return}for(let c of s){let s=t?`${t}/${c.name}`:c.name;if(c.isDirectory()){if(lM.has(c.name))continue;let t=L(e,c.name);if(!a){let e=jE(R(n,t));if(e.startsWith(`..`)||r.ignores(e)||r.ignores(`${e}/`))continue;for(let n of wM){let i=L(t,n);if(B(i))try{let t=IM(await wl(i,`utf-8`));r.add(t.map(t=>LM(t,e)))}catch(e){sM.warn({path:i,err:e},`Failed to read nested ${n} at ${i}`)}}}await zM(t,s,n,r,i,a,o)}else if(c.isFile()&&Lx(c.name)){if(!a){let e=i?`${i}/${s}`:s;if(r.ignores(e))continue}o.set(t,(o.get(t)??0)+1)}}}async function BM(e){let{projectDir:t,contentDir:n,onAfterRebuild:r,singleDocRelPath:i}=e,a=jE(R(t,n)),o=a.startsWith(`..`),s=(0,oM.default)(),c=[],l=new Map,u=()=>{i===void 0&&FM(n,``,d,l)};function d(e){if(o)return!1;let t=a?`${a}/${e}`:e;return s.ignores(t)}function f(e){return Nx(zx(e))}function p(e){for(let t of e.split(`/`))if(lM.has(t))return!0;return o?!1:d(e)}async function m(){let e=(0,oM.default)();e.add(`.git`);let r=[];for(let n of wM){let i=L(t,n);if(B(i))try{let t=IM(await wl(i,`utf-8`));r.push(...t),e.add(t)}catch(e){sM.warn({path:i,err:e},`Failed to read ${n} at ${i}`)}}if(a&&!o)for(let t of wM){let r=L(n,t);if(B(r))try{let t=IM(await wl(r,`utf-8`));e.add(t.map(e=>LM(e,a)))}catch(e){sM.warn({path:r,err:e},`Failed to read ${t} at ${r}`)}}let u=await EM(t,{value:0});u.length>0&&(r.push(...u),e.add(u));let d=new Map;i===void 0&&await zM(n,``,t,e,a,o,d),s=e,c=r.filter(e=>e.length>0&&!e.startsWith(`!`)&&!e.startsWith(`#`)&&!hM(e)),l.clear();for(let[e,t]of d)l.set(e,t)}return await m(),{isExcluded(e,t){if(f(e)||SM(e)||yM(e))return!0;if(!t?.bypassFilters&&pM(e)){if(i!==void 0)return e!==i;if(Lx(e))return!1;let t=Bc(e).slice(1).toLowerCase();return!Xi.has(t)}if(fM(e,t?.showOk)||_M(e))return!0;if(i!==void 0)return e!==i;if(t?.bypassFilters)return!1;if(p(e))return!0;if(Lx(e))return!1;let n=Bc(e).slice(1).toLowerCase();if(Xi.has(n)){let t=zc(e),n=t===`.`?``:t;if((l.get(n)??0)>0)return!1}return!0},isDirExcluded(e,t){if(yM(e))return!0;if(!t?.bypassFilters&&mM(e))return!1;if(fM(e,t?.showOk))return!0;if(i!==void 0)return!CM(e,i);if(t?.bypassFilters)return!1;for(let t of e.split(`/`))if(lM.has(t))return!0;if(o)return!1;let n=a?`${a}/${e}`:e;return s.ignores(n)||s.ignores(`${n}/`)},isPathIgnored(e,t){return f(e)||SM(e)||yM(e)?!0:pM(e)?!1:fM(e)||_M(e)?!0:t?.bypassFilters?!1:p(e)},getWatcherIgnoreGlobs(){return c},incrementMdDir(e){let t=e===`.`?``:e;l.set(t,(l.get(t)??0)+1)},decrementMdDir(e){let t=e===`.`?``:e,n=l.get(t)??0;n<=1?l.delete(t):l.set(t,n-1)},rebuildDirCount(){let e=new Map(l);l.clear();try{u()}catch(t){for(let[t,n]of e)l.set(t,n);sM.warn({err:t instanceof Error?t:Error(String(t))},`content-filter rebuildDirCount walk failed — retaining previous counts`)}},async rebuildIgnorePatterns(){let e=s,t=c,n=new Map(l),i=Date.now();return Ya(`config.ignore.rebuild`,{attributes:{}},async a=>{try{await m();let e=Date.now()-i;if(a.setAttributes({"ok.ignore.pattern_count":c.length,"ok.ignore.nested_file_count":0,"ok.ignore.bytes":0}),sM.info({durationMs:e},`content-filter async rebuild succeeded`),r)try{r()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter onAfterRebuild callback threw — derived views may be stale`)}return{ok:!0,patternCount:c.length,nestedFileCount:0,bytes:0,durationMs:e}}catch(r){s=e,c=t,l.clear();for(let[e,t]of n)l.set(e,t);let i=r instanceof Error?r.message:String(r);return sM.warn({err:r instanceof Error?r:Error(i)},`content-filter async rebuild failed — rolled back`),{ok:!1,error:{message:i}}}})}}}function VM(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t||!n;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&WM(e.charCodeAt(r)))for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r);let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&WM(e.charCodeAt(r))){for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
49
+ `,t));r>o+Math.floor(n/2)&&(t=r)}let i=e.slice(o,t).trim();if(i&&a.push(i),t>=e.length)break;let s=t-r;o=s>o?s:t}return a}const lA=I(`embeddings`);function uA(e){return Il(`sha256`).update(e,`utf-8`).digest(`hex`)}function dA(e){let t=0;for(let n of e)t+=n.length;let n=new Float32Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}function fA(e,t){let n=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),r=new Float32Array(n);if(r.length%t!==0)throw Error(`vector blob length ${r.length} is not a multiple of dims ${t}`);let i=[];for(let e=0;e<r.length;e+=t)i.push(r.slice(e,e+t));return i}var pA=class{cacheDir;vecDir;manifestPath;providerId;modelId;dims;chunkConfigId;entries=new Map;vectorsByHash=new Map;persistedHashes=new Set;dirty=!1;constructor(e){this.cacheDir=e.cacheDir,this.vecDir=e.cacheDir?L(e.cacheDir,`vec`):null,this.manifestPath=e.cacheDir?L(e.cacheDir,`manifest.json`):null,this.providerId=e.providerId,this.modelId=e.modelId,this.dims=e.dims,this.chunkConfigId=e.chunkConfigId}async init(){if(!this.cacheDir||!this.manifestPath||!this.vecDir)return;let e=null;try{B(this.manifestPath)&&(e=JSON.parse(await wl(this.manifestPath,`utf-8`)))}catch(t){lA.warn({err:t},`[embeddings] unreadable cache manifest — rebuilding`),e=null}if(!(e!==null&&e.schemaVersion===1&&e.providerId===this.providerId&&e.modelId===this.modelId&&e.dims===this.dims&&e.chunkConfigId===this.chunkConfigId)){e!==null&&lA.info({hadModel:e.modelId,wantModel:this.modelId},`[embeddings] cache identity changed (provider/model/dims/chunking) — invalidating`),this.wipeDisk();return}if(e){for(let[t,n]of Object.entries(e.entries))if(n?.contentHash&&(this.entries.set(t,{contentHash:n.contentHash,mtimeMs:n.mtimeMs??0}),!this.vectorsByHash.has(n.contentHash)))try{let e=L(this.vecDir,`${n.contentHash}.bin`);if(B(e)){let t=await wl(e);this.vectorsByHash.set(n.contentHash,fA(t,this.dims)),this.persistedHashes.add(n.contentHash)}}catch(e){lA.warn({hash:n.contentHash,err:e},`[embeddings] corrupt vector blob — will re-embed`)}}}isFresh(e,t){let n=this.entries.get(e);return n!==void 0&&n.mtimeMs===t&&this.vectorsByHash.has(n.contentHash)}link(e,t,n){if(!this.vectorsByHash.has(t))return!1;let r=this.entries.get(e);return(!r||r.contentHash!==t||r.mtimeMs!==n)&&(this.dirty=!0),this.entries.set(e,{contentHash:t,mtimeMs:n}),!0}store(e,t,n,r){this.vectorsByHash.set(t,r),this.entries.set(e,{contentHash:t,mtimeMs:n}),this.dirty=!0}getVectors(e){let t=this.entries.get(e);if(t)return this.vectorsByHash.get(t.contentHash)}get embeddedCount(){let e=0;for(let t of this.entries.values()){let n=this.vectorsByHash.get(t.contentHash);n&&n.length>0&&(e+=1)}return e}retain(e){for(let t of this.entries.keys())e.has(t)||(this.entries.delete(t),this.dirty=!0);let t=new Set;for(let e of this.entries.values())t.add(e.contentHash);for(let e of this.vectorsByHash.keys())t.has(e)||this.vectorsByHash.delete(e)}clearMemory(){this.entries.clear(),this.vectorsByHash.clear(),this.persistedHashes.clear(),this.dirty=!1}async persist(){if(!(!this.cacheDir||!this.manifestPath||!this.vecDir)&&this.dirty)try{await $a(this.vecDir,{recursive:!0});let e=new Set;for(let t of this.entries.values())e.add(t.contentHash);for(let t of e){if(this.persistedHashes.has(t))continue;let e=this.vectorsByHash.get(t);e&&(await Xa(L(this.vecDir,`${t}.bin`),dA(e)),this.persistedHashes.add(t))}let t={schemaVersion:1,providerId:this.providerId,modelId:this.modelId,dims:this.dims,chunkConfigId:this.chunkConfigId,entries:Object.fromEntries(this.entries)},n=`${this.manifestPath}.tmp`;await Xa(n,JSON.stringify(t)),await go(n,this.manifestPath);for(let t of al(this.vecDir)){if(!t.endsWith(`.bin`))continue;let n=t.slice(0,-4);e.has(n)||(no(L(this.vecDir,t)),this.persistedHashes.delete(n))}this.dirty=!1}catch(e){lA.warn({err:e},`[embeddings] failed to persist vector cache`)}}wipeDisk(){if(this.cacheDir)try{fo(this.cacheDir,{recursive:!0,force:!0})}catch(e){lA.warn({err:e},`[embeddings] failed to wipe stale cache`)}}};const mA=I(`embeddings`);function hA(e){return e instanceof Error?e.message:String(e)}var gA=class{loadEmbedder;cacheDir;enabled;providerFingerprint;capable=!1;ready=!1;embedder=null;cache=null;warmPromise=null;embedChain=Promise.resolve();queuedDocs=null;constructor(e){this.loadEmbedder=e.loadEmbedder,this.cacheDir=e.cacheDir,this.enabled=e.enabled??!1,this.providerFingerprint=e.providerFingerprint??``}isEnabled(){return this.enabled}getStatus(){return{enabled:this.enabled,capable:this.capable,ready:this.ready,embeddedCount:this.cache?.embeddedCount??0}}applyConfig(e){e.providerFingerprint!==this.providerFingerprint&&(this.providerFingerprint=e.providerFingerprint,this.resetWarm()),e.enabled!==this.enabled&&(this.enabled=e.enabled,e.enabled||(this.cache?.clearMemory(),this.resetWarm()))}resetWarm(){this.warmPromise=null,this.ready=!1,this.capable=!1,this.embedder=null,this.cache=null}ensureWarm(){return!this.enabled||this.ready?Promise.resolve():(this.warmPromise||=this.warm(),this.warmPromise)}async warm(){try{let e=await this.loadEmbedder();if(!e){this.capable=!1,this.ready=!0,mA.info({},`[embeddings] no embeddings key configured — semantic search degrades to lexical`);return}this.embedder=e,this.cache=new pA({cacheDir:this.cacheDir,providerId:e.providerId,modelId:e.modelId,dims:e.dims,chunkConfigId:`c8000-o400-m80`}),await this.cache.init(),this.capable=!0,this.ready=!0}catch(e){this.capable=!1,this.ready=!0,mA.warn({err:e},`[embeddings] warm failed`)}}embedCorpus(e){return this.enabled?(this.queuedDocs=e,this.embedChain=this.embedChain.then(async()=>{let e=this.queuedDocs;if(e){this.queuedDocs=null;try{await this.runEmbedPass(e)}catch(e){mA.warn({err:e},`[embeddings] embed pass failed`)}}}),this.embedChain):Promise.resolve()}async runEmbedPass(e){if(await this.ensureWarm(),!this.enabled||!this.embedder||!this.cache)return;let t=this.cache,n=this.embedder,r=e.filter(e=>e.kind===`page`),i=new Set(r.map(e=>e.id)),a=[];for(let e of r){if(!this.enabled)return;let n=e.modifiedTs;if(t.isFresh(e.id,n))continue;let r=uA(e.content);t.link(e.id,r,n)||a.push({doc:e,contentHash:r,chunks:cA(e.content)})}let o=0,s=(e,n)=>{t.store(e.doc.id,e.contentHash,e.doc.modifiedTs,n)},c=async e=>{let t=e.flatMap(e=>e.chunks);try{let r=t.length?await n.embed(t,{role:`document`}):[],i=0;for(let t of e)s(t,r.slice(i,i+t.chunks.length)),i+=t.chunks.length;return o=0,!0}catch(t){if(e.length===1)return mA.warn({docId:e[0].doc.id,err:hA(t)},`[embeddings] failed to embed document`),o+=1,o<5;for(let t of e){if(!this.enabled)return!1;try{s(t,t.chunks.length?await n.embed(t.chunks,{role:`document`}):[]),o=0}catch(e){if(mA.warn({docId:t.doc.id,err:hA(e)},`[embeddings] failed to embed document`),o+=1,o>=5)return!1}}return!0}},l=[],u=0;for(let e of a){if(!this.enabled)break;if(l.push(e),u+=Math.max(1,e.chunks.length),u>=96){let e=await c(l);if(l=[],u=0,!e)break}}l.length>0&&this.enabled&&await c(l),!(!this.enabled||this.cache!==t)&&(t.retain(i),await t.persist())}async queryScores(e,t){if(!this.enabled||!this.capable||!this.ready||!this.embedder||!this.cache||this.cache.embeddedCount===0)return null;let n=e.trim();if(!n)return null;let r;try{[r]=await this.embedder.embed([n],{role:`query`})}catch(e){return mA.warn({err:e},`[embeddings] query embed failed — degrading to lexical`),null}if(!r)return null;let i=new Map;for(let e of t){let t=this.cache.getVectors(e.id);if(!t||t.length===0)continue;let n=-1/0;for(let e of t){let t=Gk(r,e);t>n&&(n=t)}n>-1/0&&i.set(e.id,n)}return i}};function _A(e){return{...e,windowsHide:!0}}const vA=()=>I(`http`);function q(e,t,n,r,i={}){if(e.headersSent||e.writableEnded||e.destroyed){vA().error({event:`api.success.double-write`,status:t,handler:i.handler},`successResponse called after headers already sent — suppressed`),Qx().add(1,{type:`urn:ok:error:internal-server-error`,...i.handler?{handler:i.handler}:{}});return}let a=n.safeParse(r);if(!a.success){vA().error({event:`api.success.malformed-body`,issues:a.error.issues,bodyKeys:typeof r==`object`&&r?Object.keys(r):null,handler:i.handler,originalStatus:t},`successResponse produced an invalid body for the supplied schema — emitting fallback`),G(e,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:i.handler});return}let o;try{o=JSON.stringify(a.data)}catch(n){vA().error({event:`api.success.unserializable-body`,bodyKeys:typeof a.data==`object`&&a.data!==null?Object.keys(a.data):null,handler:i.handler,originalStatus:t,err:n},`successResponse parsed body is not JSON-serializable — emitting fallback`),G(e,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:i.handler});return}e.writeHead(t,{...i.extraHeaders,"Content-Type":`application/json`,"X-Content-Type-Options":`nosniff`}),e.end(o)}const yA=[`claude`,`codex`,`cursor`],bA=2e3,xA={claude:[`Claude`],codex:[`Codex`,`OpenAI Codex`],cursor:[`Cursor`]};function SA(e){let t=new Map,n=e.now??Date.now,r=e.ttlMs??6e4;async function i(i){let a=t.get(i);if(a?.status===`resolved`&&a.expiresAt>n())return a.installed;if(a?.status===`inflight`)return a.promise;let o=(async()=>{try{let a=await e.probe(i);return t.set(i,{status:`resolved`,installed:a,expiresAt:n()+r}),a}catch{return t.set(i,{status:`resolved`,installed:!1,expiresAt:n()+r}),!1}})();return t.set(i,{status:`inflight`,promise:o}),o}async function a(){let e=await Promise.all(yA.map(async e=>[e,await i(e)]));return Object.fromEntries(e)}return{probeAll:a,probeWithCache:i}}function CA(e){let t=e.headers.host;if(typeof t==`string`&&t.length>0)try{let{hostname:e}=new URL(`http://${t}/`);return wA(e)}catch{}let n=e.headers.origin;if(typeof n==`string`&&n.length>0)try{return wA(new URL(n).hostname)}catch{return!1}return!0}function wA(e){return e===`localhost`||e===`127.0.0.1`||e===`[::1]`||e===`::1`}async function TA(e,t,n){if(e.method!==`GET`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:`installed-agents`,extraHeaders:{Allow:`GET`}});return}try{q(t,200,Ie,CA(e)?await n():Object.fromEntries(yA.map(e=>[e,!0])),{handler:`installed-agents`})}catch(e){I(`handoff`).error({err:e},`[installed-agents] handler failed`),G(t,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`installed-agents`,cause:e})}}function EA(e,t=Nc){return n=>e===`darwin`?DA(n,t):e===`win32`?OA(n,t):kA(n,t)}function DA(e,t){let n=xA[e];function r(e){return new Promise(n=>{t(`osascript`,[`-e`,`id of app "${e}"`],_A({timeout:bA,encoding:`utf-8`}),(e,t)=>{if(e){n(!1);return}n(t.trim().length>0)})})}return(async()=>{for(let e of n)if(await r(e))return!0;return!1})()}function OA(e,t){return new Promise(n=>{t(`reg`,[`query`,`HKCR\\${e}`,`/ve`],_A({timeout:bA,encoding:`utf-8`}),e=>{n(!e)})})}function kA(e,t){return new Promise(n=>{t(`xdg-mime`,[`query`,`default`,`x-scheme-handler/${e}`],_A({timeout:bA,encoding:`utf-8`}),(e,t)=>{if(e){n(!1);return}n(t.trim().length>0)})})}function AA(e){return jA(e,{maxBytes:1048576,timeoutMs:3e4})}async function jA(e,t){let n=[],r=0,i=AbortSignal.timeout(t.timeoutMs),a=()=>e.destroy(new NA(t.timeoutMs));i.addEventListener(`abort`,a,{once:!0});try{for await(let i of e){if(r+=i.length,r>t.maxBytes)throw new MA(t.maxBytes);n.push(i)}return Buffer.concat(n)}finally{i.removeEventListener(`abort`,a)}}var MA=class extends Error{maxBytes;constructor(e){super(e===void 0?`Request body exceeded cap`:`Request body exceeded ${PA(e)} cap`),this.name=`PayloadTooLargeError`,this.maxBytes=e}},NA=class extends Error{timeoutMs;constructor(e){super(e===void 0?`Request body read exceeded timeout`:`Request body read exceeded ${e}ms timeout`),this.name=`RequestBodyTimeoutError`,this.timeoutMs=e}};function PA(e){return e>=1048576?`${(e/1048576).toFixed(0)} MB`:e>=1024?`${(e/1024).toFixed(0)} KB`:`${e} B`}function FA(e,t,n,r={}){let i=e.safeParse(t);if(i.success)return{ok:!0,value:i.data};let a=i.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`; `);return G(n,400,`urn:ok:error:invalid-request`,`Request body is invalid.`,{handler:r.handler,detail:a}),{ok:!1}}function J(e,t,n={}){return async(r,i)=>{if(n.method!==void 0&&r.method!==n.method){G(i,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:n.handler,extraHeaders:{Allow:n.method}});return}if(n.preBodyGate!==void 0&&!n.preBodyGate(r,i)){!i.headersSent&&!i.writableEnded&&!i.destroyed&&G(i,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:n.handler,cause:Error(`preBodyGate returned false without writing a response`)});return}if(n.skipBodyParse){let a=FA(e,{},i,n);if(!a.ok)return;await t(r,i,a.value);return}let a;try{a=await AA(r)}catch(e){if(e instanceof MA){G(i,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:n.handler,cause:e});return}if(e instanceof NA){G(i,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:n.handler,cause:e});return}G(i,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:n.handler,cause:e});return}let o;try{o=a.length===0?{}:JSON.parse(a.toString(`utf8`))}catch(e){G(i,400,`urn:ok:error:invalid-request`,`Request body is not valid JSON.`,{handler:n.handler,cause:e});return}let s=FA(e,o,i,n);s.ok&&await t(r,i,s.value)}}const IA={detached:!0,stdio:`ignore`,shell:!1};function LA(e){let t=e instanceof Error?e.message:String(e);return/ENOENT|EACCES|EPERM/.test(t)?{ok:!1,reason:`not-installed`}:{ok:!1,reason:`spawn-error`}}function RA(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,r(e))},o=setTimeout(()=>a({ok:!1,reason:`timeout`}),n);try{let n=Pc(e,[...t],_A(IA));n.once(`error`,e=>{clearTimeout(o),a(LA(e))}),n.once(`spawn`,()=>{if(!i){try{n.unref()}catch{}clearTimeout(o),a({ok:!0})}})}catch(e){I(`spawn-detached`).warn({err:e},`synchronous spawn throw`),clearTimeout(o),a(LA(e))}})}const zA=`spawn-cursor`;function BA(e){throw Error(`Unhandled spawn-cursor outcome.reason: ${String(e)}`)}async function VA(e,t,n){if(e.method!==`POST`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:zA,extraHeaders:{Allow:`POST`}});return}let r;try{r=await jA(e,{maxBytes:4096,timeoutMs:5e3})}catch(e){if(e instanceof MA){G(t,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:zA,cause:e});return}if(e instanceof NA){G(t,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:zA,cause:e});return}G(t,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:zA,cause:e});return}let i;try{i=JSON.parse(r.toString(`utf-8`))}catch(e){G(t,400,`urn:ok:error:invalid-request`,`Malformed JSON body.`,{handler:zA,cause:e});return}let a=typeof i.path==`string`?i.path:``;if(!a){G(t,400,`urn:ok:error:invalid-request`,"Missing or empty `path` field.",{handler:zA});return}if(!GA(a,n.contentDir,n.platform)){G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:zA});return}let o=await(n.resolveCursorBinary??UA)(500);if(!o){G(t,422,`urn:ok:error:cursor-not-installed`,`Cursor CLI not found on this machine.`,{handler:zA});return}let s=WA(o,a,n.platform),c=await(n.spawnDetached??RA)(s.exec,s.args,2e3);if(c.ok){q(t,200,ht,{},{handler:zA});return}switch(c.reason){case`not-installed`:G(t,422,`urn:ok:error:cursor-not-installed`,`Cursor CLI not found on this machine.`,{handler:zA});return;case`timeout`:G(t,504,`urn:ok:error:cursor-spawn-timeout`,`Cursor spawn exceeded the deadline.`,{handler:zA});return;case`spawn-error`:G(t,502,`urn:ok:error:cursor-spawn-failed`,`Cursor spawn failed.`,{handler:zA});return;case`invalid-path`:G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:zA});return;default:return BA(c.reason)}}const HA={darwin:[()=>`/Applications/Cursor.app/Contents/Resources/app/bin/cursor`,e=>`${e}/Applications/Cursor.app/Contents/Resources/app/bin/cursor`],win32:[e=>`${e}\\AppData\\Local\\Programs\\cursor\\resources\\app\\bin\\cursor.cmd`,()=>`C:\\Program Files\\Cursor\\resources\\app\\bin\\cursor.cmd`]};async function UA(e){let t=HA[process.platform];if(t&&t.length>0){let e=gl();for(let n of t){let t=n(e);try{return await bl(t,Sl.X_OK),t}catch(e){let n=e?.code;n!==`ENOENT`&&n!==`EACCES`&&n!==`EPERM`&&I(`spawn-cursor`).warn({code:n,candidate:t},`unexpected fs.access error on bundle probe`)}}}return new Promise(t=>{Nc(process.platform===`win32`?`where`:`which`,[`cursor`],_A({timeout:e,encoding:`utf-8`}),(e,n)=>{if(e){t(null);return}let r=n.split(/\r?\n/)[0]?.trim();t(r&&r.length>0?r:null)})})}function WA(e,t,n){return n===`darwin`&&/\.app\/?$/.test(e)?{exec:`/usr/bin/open`,args:[`-a`,e.replace(/\/$/,``),t]}:n===`win32`&&/\.(cmd|bat)$/i.test(e)?{exec:process.env.ComSpec||`cmd.exe`,args:[`/d`,`/c`,e,t]}:{exec:e,args:[t]}}function GA(e,t,n){if(!e||typeof e!=`string`||e.includes(`\0`)||!t||typeof t!=`string`)return!1;if(n===`win32`){if(!/^([a-zA-Z]:[\\/]|\\\\)/.test(e)||!/^([a-zA-Z]:[\\/]|\\\\)/.test(t))return!1}else if(!e.startsWith(`/`)||!t.startsWith(`/`))return!1;let r=n===`win32`?Gc:Uc;try{let i=r.resolve(e),a=r.resolve(t);if(n===`win32`){let e=r.parse(i).root.toLowerCase(),t=r.parse(a).root.toLowerCase();if(!e||!t||e!==t)return!1}if(i===a)return!0;let o=r.relative(a,i);return o===``||o===`.`?!0:!(o===`..`||o.startsWith(`..${r.sep}`)||n===`win32`&&(/^[a-zA-Z]:[\\/]/.test(o)||o.startsWith(`\\\\`))||n!==`win32`&&o.startsWith(`/`))}catch(e){return I(`spawn-cursor`).warn({err:e},`unexpected path-resolution error`),!1}}const KA=`handoff`,qA=2e3,JA={"claude-cowork":{type:`app-bundle`,appName:`Claude`,urlScheme:`claude:`,probeScheme:`claude`,quitFirst:!1},"claude-code":{type:`app-bundle`,appName:`Claude`,urlScheme:`claude:`,probeScheme:`claude`,quitFirst:!1},codex:{type:`app-bundle`,appName:`Codex`,urlScheme:`codex:`,probeScheme:`codex`,quitFirst:!0},cursor:{type:`cli-binary`,binaryName:`cursor`,urlScheme:`cursor:`}},YA=A({target:Yi(Object.keys(JA)),url:P().min(1).max(4096),workspacePath:P().optional()}),XA=A({}).loose();async function ZA(e,t,n){if(e.method!==`POST`){G(t,405,`urn:ok:error:method-not-allowed`,`Method not allowed.`,{handler:KA,extraHeaders:{Allow:`POST`}});return}let r;try{r=await jA(e,{maxBytes:4096,timeoutMs:5e3})}catch(e){if(e instanceof MA){G(t,413,`urn:ok:error:payload-too-large`,`Payload too large.`,{handler:KA,cause:e});return}if(e instanceof NA){G(t,408,`urn:ok:error:request-timeout`,`Request body read timed out.`,{handler:KA,cause:e});return}G(t,500,`urn:ok:error:internal-server-error`,`Failed to read request body.`,{handler:KA,cause:e});return}let i;try{i=JSON.parse(r.toString(`utf-8`))}catch(e){G(t,400,`urn:ok:error:invalid-request`,`Malformed JSON body.`,{handler:KA,cause:e});return}let a=YA.safeParse(i);if(!a.success){G(t,400,`urn:ok:error:invalid-request`,`Invalid request body.`,{handler:KA});return}let{target:o,url:s,workspacePath:c}=a.data,l=JA[o];if(!s.startsWith(l.urlScheme)){G(t,400,`urn:ok:error:invalid-request`,`URL scheme must be ${l.urlScheme} for target ${o}.`,{handler:KA});return}let u=n.sleep??Ea,d=n.spawnDetached??RA,f=n.isSchemeRegistered??EA(n.platform);if(l.type===`app-bundle`){if(n.platform===`darwin`){l.quitFirst&&(await d(`/usr/bin/osascript`,[`-e`,`tell application "${l.appName}" to quit`],qA).catch(()=>void 0),await u(3e3));let e=await d(`/usr/bin/open`,[`-a`,l.appName],qA);if(!e.ok){$A(t,o,e.reason);return}await u(5e3)}else if(!await f(l.probeScheme)){G(t,422,`urn:ok:error:handoff-target-not-installed`,`Required binary or application not found.`,{handler:KA,extensions:{target:o}});return}let e=QA(s,n.platform),r=await d(e.exec,e.args,qA);if(!r.ok){$A(t,o,r.reason);return}q(t,200,XA,{},{handler:KA});return}if(!c){G(t,400,`urn:ok:error:invalid-request`,`workspacePath is required for cursor handoff.`,{handler:KA});return}if(!GA(c,n.contentDir,n.platform)){G(t,403,`urn:ok:error:path-escape`,`Path escapes the content directory.`,{handler:KA});return}let p=await(n.resolveCursorBinary??UA)(500);if(!p){G(t,422,`urn:ok:error:handoff-target-not-installed`,`Cursor CLI not found on this machine.`,{handler:KA,extensions:{target:`cursor`}});return}let m=WA(p,c,n.platform),h=await d(m.exec,m.args,qA);if(!h.ok){$A(t,o,h.reason);return}await u(1500);let g=QA(s,n.platform),_=await d(g.exec,g.args,qA);if(!_.ok){$A(t,o,_.reason);return}q(t,200,XA,{},{handler:KA})}function QA(e,t){return t===`darwin`?{exec:`/usr/bin/open`,args:[e]}:t===`win32`?{exec:`rundll32.exe`,args:[`url.dll,FileProtocolHandler`,e]}:{exec:`xdg-open`,args:[e]}}function $A(e,t,n){switch(n){case`not-installed`:G(e,422,`urn:ok:error:handoff-target-not-installed`,`Required binary or application not found.`,{handler:KA,extensions:{target:t}});return;case`timeout`:G(e,504,`urn:ok:error:handoff-spawn-timeout`,`Handoff spawn exceeded the deadline.`,{handler:KA,extensions:{target:t}});return;case`spawn-error`:G(e,502,`urn:ok:error:handoff-spawn-failed`,`Handoff spawn failed.`,{handler:KA,extensions:{target:t}});return;default:ej(n)}}function ej(e){throw Error(`Unhandled spawn reason: ${String(e)}`)}const tj=[`INDEX`,`README`,`REPORT`,`SPEC`];function nj(e,t){let n=[],r=new Set,i=t=>{!t||r.has(t)||t!==e&&(r.add(t),n.push(t))},a=ij(t),o=aj(e);for(;;){for(let e of tj)if(i(rj(t,a,sj(o,e))),n.length>=3)return n;let e=o===``?null:oj(o);if(e&&(i(rj(t,a,sj(o,e))),n.length>=3))return n;if(o===``)break;o=aj(o)}return n}function rj(e,t,n){return e.has(n)?n:t.get(n.toLowerCase())??null}function ij(e){let t=new Map;for(let n of e.keys()){let e=n.toLowerCase();t.has(e)||t.set(e,n)}return t}function aj(e){let t=e.lastIndexOf(`/`);return t<0?``:e.slice(0,t)}function oj(e){let t=e.lastIndexOf(`/`);return t<0?e:e.slice(t+1)}function sj(e,t){return e===``?t:`${e}/${t}`}const cj=I(`installed-skills-marker`),lj={writeFile:(e,t,n)=>Xa(e,t,n),rename:(e,t)=>go(e,t)};function uj(e){return L(e,...nt)}const dj=new Map;function fj(e,t){let n=uj(e),r=(dj.get(n)??Promise.resolve()).then(t,t);return dj.set(n,r.then(()=>void 0,()=>void 0)),r}function pj(e){let t=uj(e);if(!B(t))return s();try{return lr(V(t,`utf-8`))??s()}catch(e){return cj.warn({err:e,path:t},`installed-skills marker unreadable`),s()}}async function mj(e,t){let n=hr.safeParse(t);if(!n.success)throw Error(`Refusing to write invalid installed-skills marker: ${n.error.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`; `)}`);let r=uj(e);await $a(zc(r),{recursive:!0}),await Ka(r,`${JSON.stringify(n.data,null,2)}\n`,{fs:lj})}async function hj(e,t,n){return fj(e,async()=>{let r=pj(e);await mj(e,{...r,skills:{...r.skills,[t]:n}})})}async function gj(e,t){return fj(e,async()=>{let n=pj(e),r=n.skills[t]??null;if(r===null)return null;let{[t]:i,...a}=n.skills;return await mj(e,{...n,skills:a}),r})}function _j(e){let t=/^\s{0,3}([`~]{3,})/.exec(e);if(!t)return null;let n=t[1],r=n[0];return r!=="`"&&r!==`~`?null:{char:r,length:n.length}}function vj(e,t){return RegExp(`^\\s{0,3}\\${t.char}{${t.length},}\\s*$`).test(e)}function yj(e){let t=/^\s{0,3}(?:#{1,6}\s+|>\s+|(?:[-+*]|\d+[.)])\s+)/.exec(e);return t?t[0].length:0}function bj(e,t){let n=0;for(;e[t+n]==="`";)n++;if(n===0)return null;let r=t+n,i=r;for(;i<e.length;){if(e[i]!=="`"){i++;continue}let t=0;for(;e[i+t]==="`";)t++;if(t===n)return{nextIndex:i+n};i+=t}return{nextIndex:r}}function xj(e,t){let n=UE(e,t);return n?{target:n.target,alias:n.alias,anchor:n.anchor,nextIndex:n.end}:null}function Sj(e,t){let n=UE(e,t);return n?{target:n.target,alias:n.alias,anchor:n.anchor,nextIndex:n.end,embed:n.embed}:null}function Cj(e,t){let n=WE(e,t);return!n||n.image?null:{text:n.label,hrefRaw:n.hrefRaw,href:n.href,titleSuffix:n.titleSuffix,nextIndex:n.end}}function wj(e,t){let n=WE(e,t);return n?.image?{alt:n.label,hrefRaw:n.hrefRaw,href:n.href,titleSuffix:n.titleSuffix,nextIndex:n.end}:null}function Tj(e){let t=e.split(/(\r\n|\r|\n)/),n=[];for(let e=0;e<t.length;e+=2)n.push({line:t[e]??``,ending:t[e+1]??``});return n}function Ej(e,t,n){let r=``,i=0,a=0,o=yj(e);for(o>0&&(r+=e.slice(0,o),a=o);a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`&&e[a+1]===`[`){let o=xj(e,a);if(o){o.target===t?(r+=`[[${n}${o.anchor?`#${o.anchor}`:``}${o.alias?`|${o.alias}`:``}]]`,i++):r+=e.slice(a,o.nextIndex),a=o.nextIndex;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Dj(e,t,n){let r=e.indexOf(`#`),i=r>=0?e.slice(r):``,a=r>=0?e.slice(0,r):e,o=a.indexOf(`?`),s=o>=0?a.slice(o):``,c=o>=0?a.slice(0,o):a;if(c.startsWith(`/`)||c.startsWith(`//`)||/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(c))return null;let l=Uc.dirname(t),u=Uc.dirname(n);if(l===u)return null;let d=l===`.`?`/`:`/${l}/`,f=Uc.resolve(d,c).slice(1),p=Uc.relative(u===`.`?``:u,f);return p||=Uc.basename(f),c.startsWith(`./`)&&!p.startsWith(`./`)&&!p.startsWith(`../`)&&(p=`./${p}`),`${p}${s}${i}`}function Oj(e){try{return decodeURI(e)}catch{return e}}function kj(e){let t=e.indexOf(`#`),n=t>=0?e.slice(t):``,r=t>=0?e.slice(0,t):e,i=r.indexOf(`?`),a=i>=0?r.slice(i):``;return{pathPart:i>=0?r.slice(0,i):r,suffix:`${a}${n}`}}function Aj(e,t,n,r={}){let i=r.encodePath??!0,a=e=>i?encodeURI(e):e,{pathPart:o,suffix:s}=kj(e);if(o.startsWith(`/`))return`/${a(n)}${s}`;let c=Uc.dirname(t),l=Uc.relative(c===`.`?``:c,n);return l||=Uc.basename(n),o.startsWith(`./`)&&!l.startsWith(`./`)&&!l.startsWith(`../`)&&(l=`./${l}`),`${a(l)}${s}`}function jj(e,t,n,r,i={}){return Lr(Oj(e),t)===n?Aj(e,t,r,i):null}function Mj(e,t,n){let r=e.indexOf(`#`),i=r>=0?e.slice(r):``,a=r>=0?e.slice(0,r):e,o=a.indexOf(`?`),s=o>=0?a.slice(o):``,c=o>=0?a.slice(0,o):a,l=c.startsWith(`/`),u=Uc.dirname(t),d=l?`/${n}`:Uc.relative(u===`.`?``:u,n);return d||=Uc.basename(n),c.endsWith(`.mdx`)?d+=`.mdx`:c.endsWith(`.md`)&&(d+=`.md`),!l&&c.startsWith(`./`)&&!d.startsWith(`./`)&&!d.startsWith(`../`)&&(d=`./${d}`),`${d}${s}${i}`}function Nj(e,t,n,r){let i=``,a=0,o=0,s=yj(e);for(s>0&&(i+=e.slice(0,s),o=s);o<e.length;){if(e[o]===`\\`&&o+1<e.length){i+=e.slice(o,o+2),o+=2;continue}if(e[o]==="`"){let t=bj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}if(e[o]===`[`&&e[o+1]===`[`){let t=xj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}if(e[o]===`!`&&e[o+1]===`[`){let s=wj(e,o);if(s){let c=t===n&&n!==r?Dj(s.href,n,r):null;if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`![${s.alt}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}if(e[o]===`[`){let s=Cj(e,o);if(s){if(ri(s.href,t)?.docName===n){let e=Mj(s.href,t,r),n=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${e}>`:e;i+=`[${s.text}](${n}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}i+=e[o],o++}return{markdown:i,rewrites:a}}function Pj(e,t){return`${e.embed?`!`:``}[[${t}${e.anchor?`#${e.anchor}`:``}${e.alias?`|${e.alias}`:``}]]`}const Fj=/(\s(?:href|src)\s*=\s*)(?:"([^"\n]*)"|'([^'\n]*)'|“([^”\n]*)”|([^\s"'=<>`]+))/gi;function Ij(e,t,n,r){let i=0;return{markdown:e.replace(Fj,(e,a,o,s,c,l)=>{let u=o??s??c??l;if(typeof u!=`string`)return e;let d=jj(u,t,n,r);return d===null?e:(i++,o===void 0?s===void 0?c===void 0?`${a}${d}`:`${a}“${d}”`:`${a}'${d}'`:`${a}"${d}"`)}),rewrites:i}}function Lj(e,t,n,r){let i=``,a=0,o=0,s=yj(e);for(s>0&&(i+=e.slice(0,s),o=s);o<e.length;){if(e[o]===`\\`&&o+1<e.length){i+=e.slice(o,o+2),o+=2;continue}if(e[o]==="`"){let t=bj(e,o);if(t){i+=e.slice(o,t.nextIndex),o=t.nextIndex;continue}}let s=Sj(e,o);if(s){let c=jj(s.target,t,n,r,{encodePath:!1});c===null?i+=e.slice(o,s.nextIndex):(i+=Pj(s,c),a++),o=s.nextIndex;continue}if(e.startsWith(`<!--`,o)){let t=e.indexOf(`-->`,o+4);if(t===-1){i+=e.slice(o);break}i+=e.slice(o,t+3),o=t+3;continue}if(e[o]===`<`){let s=e.indexOf(`>`,o+1);if(s!==-1){let c=Ij(e.slice(o,s+1),t,n,r);if(c.rewrites>0){i+=c.markdown,a+=c.rewrites,o=s+1;continue}}}if(e[o]===`!`&&e[o+1]===`[`){let s=wj(e,o);if(s){let c=jj(s.href,t,n,r);if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`![${s.alt}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}if(e[o]===`[`){let s=Cj(e,o);if(s){let c=jj(s.href,t,n,r);if(c!==null){let e=s.hrefRaw.startsWith(`<`)&&s.hrefRaw.endsWith(`>`)?`<${c}>`:c;i+=`[${s.text}](${e}${s.titleSuffix})`,a++}else i+=e.slice(o,s.nextIndex);o=s.nextIndex;continue}}i+=e[o],o++}return{markdown:i,rewrites:a}}const Rj=/<Mirror\b([^>]*)\/>/g,zj=/(\bsrc=)(["'])([^"']*)\2/g;function Bj(e,t,n){let r=``,i=0,a=0;for(;a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`<`){let o=new RegExp(Rj.source),s=e.slice(a),c=o.exec(s);if(c&&c.index===0){let[e,o]=c,s=new RegExp(zj.source,zj.flags),l=o.replace(s,(e,r,a,o)=>o===t?(i++,`${r}${a}${n}${a}`):e);r+=`<Mirror${l}/>`,a+=e.length;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Vj(e,t,n){let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Bj(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}function Hj(e,t,n){let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Ej(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}function Uj(e,t,n,r){let i=null,a=0;return{markdown:Tj(e).map(({line:e,ending:o})=>{if(i)return vj(e,i)&&(i=null),`${e}${o}`;let s=_j(e);if(s)return i=s,`${e}${o}`;let c=Nj(e,t,n,r);return a+=c.rewrites,`${c.markdown}${o}`}).join(``),rewrites:a}}function Wj(e,t,n,r){let i=null,a=0;return{markdown:Tj(e).map(({line:e,ending:o})=>{if(i)return vj(e,i)&&(i=null),`${e}${o}`;let s=_j(e);if(s)return i=s,`${e}${o}`;let c=Lj(e,t,n,r);return a+=c.rewrites,`${c.markdown}${o}`}).join(``),rewrites:a}}function Gj(e,t,n){let r=``,i=0,a=0,o=yj(e);for(o>0&&(r+=e.slice(0,o),a=o);a<e.length;){if(e[a]===`\\`&&a+1<e.length){r+=e.slice(a,a+2),a+=2;continue}if(e[a]==="`"){let t=bj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`&&e[a+1]===`[`){let t=xj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`!`&&e[a+1]===`[`){let t=wj(e,a);if(t){r+=e.slice(a,t.nextIndex),a=t.nextIndex;continue}}if(e[a]===`[`){let o=Cj(e,a);if(o){let s=ri(o.href,t);if(s!==null){let t=Mj(o.href,n,s.docName);if(t!==o.href){let e=o.hrefRaw.startsWith(`<`)&&o.hrefRaw.endsWith(`>`)?`<${t}>`:t;r+=`[${o.text}](${e}${o.titleSuffix})`,i++}else r+=e.slice(a,o.nextIndex)}else r+=e.slice(a,o.nextIndex);a=o.nextIndex;continue}}r+=e[a],a++}return{markdown:r,rewrites:i}}function Kj(e,t,n){if(Uc.dirname(t)===Uc.dirname(n))return{markdown:e,rewrites:0};let r=null,i=0;return{markdown:Tj(e).map(({line:e,ending:a})=>{if(r)return vj(e,r)&&(r=null),`${e}${a}`;let o=_j(e);if(o)return r=o,`${e}${a}`;let s=Gj(e,t,n);return i+=s.rewrites,`${s.markdown}${a}`}).join(``),rewrites:i}}var qj=class extends Error{colliding;constructor(e){super(`Managed rename collision: ${e.map(e=>`'${e.existing}' and '${e.incoming}' both target '${e.to}'`).join(`; `)}`),this.name=`ManagedRenameCollisionError`,this.colliding=e}},Jj=class extends Error{kind;constructor(e,t=`${e} does not exist`){super(t),this.name=`ManagedRenameSourceNotFoundError`,this.kind=e}},Yj=class extends Error{constructor(){super(`Destination already exists`),this.name=`ManagedRenameDestinationExistsError`}},Xj=class extends Error{kind;constructor(e,t=`Source path is not a ${e}`){super(t),this.name=`ManagedRenameSourceTypeMismatchError`,this.kind=e}},Zj=class extends Error{constructor(e){super(e),this.name=`ManagedRenameInvalidRequestError`}},Qj=class extends Error{constructor(e){super(e),this.name=`ManagedRenameReservedPathError`}},$j=class extends Error{constructor(e){super(`symlink-escape: ${e}`),this.name=`SymlinkEscapeError`}},eM=class extends Error{constructor(){super(`Managed rename requires backlink index support`),this.name=`BacklinkIndexRequiredError`}},tM=class extends Error{docName;constructor(e){super(`Cannot snapshot missing document: ${e}`),this.name=`ManagedRenameSnapshotMissingError`,this.docName=e}},nM=class extends Error{docName;constructor(e){super(`Cannot rename missing document: ${e}`),this.name=`ManagedRenameMissingDocumentError`,this.docName=e}};function rM(e){let t=new Map,n=[];for(let{from:r,to:i}of e){for(let[e,a]of t)e!==r&&a===i&&n.push({existing:e,incoming:r,to:i});t.set(r,i)}if(n.length>0)throw new qj(n);return t}function iM(e,t,n,r){let{frontmatter:i,body:a}=cn(e),o=Hj(a,n,r),s=Uj(o.markdown,t,n,r),c=Vj(s.markdown,n,r);return{markdown:Zt(i,c.markdown),rewrites:o.rewrites+s.rewrites+c.rewrites}}function aM(e,t,n){let r=e,i=0,a,o=[];for(let[e,r]of n)e!==r&&(e===t?a=r:o.push([e,r]));if(a!==void 0){let e=iM(r,t,t,a);r=e.markdown,i+=e.rewrites;let{frontmatter:n,body:o}=cn(r),s=Kj(o,t,a);r=Zt(n,s.markdown),i+=s.rewrites}let s=a??t,c=new Map;for(let[e,t]of o){let n=`__OK_RENAME_${Ll().replaceAll(`-`,``)}__`,a=iM(r,s,e,n);a.rewrites>0&&(r=a.markdown,i+=a.rewrites,c.set(n,t))}for(let[e,t]of c)r=iM(r,s,e,t).markdown;return{markdown:r,rewrites:i}}var oM=t(n(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.*\/|^\.+$/,l=`node-ignore`;typeof Symbol<`u`&&(l=Symbol.for(`node-ignore`));let u=l,d=(e,t,n)=>Object.defineProperty(e,t,{value:n}),f=/([0-z])-([0-z])/g,p=()=>!1,m=e=>e.replace(f,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),h=e=>{let{length:t}=e;return e.slice(0,t-t%2)},g=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${h(r)}${i}`:i===`]`&&r.length%2==0?`[${m(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(e,t)=>`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`]],_=Object.create(null),v=(e,t)=>{let n=_[e];return n||(n=g.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),_[e]=n),t?new RegExp(n,`i`):new RegExp(n)},y=e=>typeof e==`string`,b=e=>e&&y(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,x=e=>e.split(s);var S=class{constructor(e,t,n,r){this.origin=e,this.pattern=t,this.negative=n,this.regex=r}};let C=(e,t)=>{let n=e,r=!1;e.indexOf(`!`)===0&&(r=!0,e=e.substr(1)),e=e.replace(a,`!`).replace(o,`#`);let i=v(e,t);return new S(n,e,r,i)},w=(e,t)=>{throw new t(e)},T=(e,t,n)=>y(e)?e?T.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),ee=e=>c.test(e);T.isNotRelative=ee,T.convert=e=>e;var te=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){d(this,u,!0),this._rules=[],this._ignoreCase=t,this._allowRelativePaths=n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[u]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(b(e)){let t=C(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(y(e)?x(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let n=!1,r=!1;return this._rules.forEach(i=>{let{negative:a}=i;r===a&&n!==r||a&&!n&&!r&&!t||i.regex.test(e)&&(n=!a,r=a)}),{ignored:n,unignored:r}}_test(e,t,n,r){let i=e&&T.convert(e);return T(i,e,this._allowRelativePaths?p:w),this._t(i,t,n,r)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`),r.pop(),!r.length)return t[e]=this._testOne(e,n);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._testOne(e,n)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let ne=e=>new te(e);if(ne.isPathValid=e=>T(e&&T.convert(e),e,p),ne.default=ne,t.exports=ne,typeof process<`u`&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform===`win32`)){T.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;T.isNotRelative=t=>e.test(t)||ee(t)}}))(),1);const sM=I(`content-filter`),cM=Ul(Nc),lM=new Set(`node_modules,.venv,venv,env,__pycache__,vendor,dist,build,out,output,.next,.nuxt,.svelte-kit,.astro,.turbo,.cache,.parcel-cache,coverage,.git,.ok,.open-knowledge,.openknowledge,.claude,.cursor,.codex,.agents,.opencode,.pi,Library,Applications,.Trash`.split(`,`)),uM=new Set([`.git`,`node_modules`,`.ok`,`.open-knowledge`,`.openknowledge`,`.claude`,`.cursor`,`.codex`,`.agents`,`.opencode`,`.pi`]),dM=new Set([`worktrees`,`local`]);function fM(e,t){let n=e.split(`/`);for(let e=0;e<n.length;e++){let r=n[e];if(uM.has(r)&&!(t&&r===`.ok`&&!dM.has((n[e+1]??``).toLowerCase())))return!0}return!1}function pM(e){return e.startsWith(`${ct}/`)}function mM(e){return e===`.ok`||e===`.ok/skills`||e.startsWith(`.ok/skills/`)}function hM(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``).trim();return t===`.ok`||t===`.ok/**`||t===`**/.ok`||t===`**/.ok/**`}const gM=new Set([`.DS_Store`,`.localized`]);function _M(e){return gM.has(e.slice(e.lastIndexOf(`/`)+1))}const vM=new Set([`.ssh`,`.aws`,`.gnupg`,`.kube`,`.docker`]);function yM(e){for(let t of e.split(`/`))if(vM.has(t.toLowerCase()))return!0;return!1}const bM=new Set([`credentials`,`.netrc`,`.npmrc`,`.pgpass`,`.git-credentials`]),xM=[`.pem`,`.key`,`.p12`,`.pfx`,`.keystore`,`.jks`,`.ppk`];function SM(e){let t=e.slice(e.lastIndexOf(`/`)+1).toLowerCase();if(t===`.env`||t.startsWith(`.env.`)||bM.has(t)||t.startsWith(`id_rsa`)||t.startsWith(`id_ed25519`)||t.startsWith(`id_ecdsa`)||t.startsWith(`id_dsa`))return!0;for(let e of xM)if(t.endsWith(e))return!0;return!1}function CM(e,t){return t===e||t.startsWith(`${e}/`)}const wM=[`.gitignore`,`.okignore`];function TM(e,t){let n=DM(e);if(n===null)return[];let r=[];MM(L(n,`info`,`exclude`),t,r,`info/exclude`);let i=kM(e);return i&&MM(i,t,r,`global excludesfile`),r}async function EM(e,t){let n=await OM(e);if(n===null)return[];let r=[];await NM(L(n,`info`,`exclude`),t,r,`info/exclude`);let i=await AM(e);return i&&await NM(i,t,r,`global excludesfile`),r}function DM(e){let t=Fc(`git`,[`rev-parse`,`--git-common-dir`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));return t.status!==0||!t.stdout?null:z(e,t.stdout.trim())}async function OM(e){try{let{stdout:t}=await cM(`git`,[`rev-parse`,`--git-common-dir`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));return t?z(e,t.trim()):null}catch{return null}}function kM(e){let t=Fc(`git`,[`config`,`--get`,`--type=path`,`core.excludesfile`],_A({cwd:e,encoding:`utf-8`,timeout:5e3}));if(t.status===0&&t.stdout){let e=t.stdout.trim();if(e)return e}return jM()}async function AM(e){try{let{stdout:t}=await cM(`git`,[`config`,`--get`,`--type=path`,`core.excludesfile`],_A({cwd:e,encoding:`utf-8`,timeout:5e3})),n=t.trim();if(n)return n}catch{}return jM()}function jM(){let e=process.env.XDG_CONFIG_HOME?.trim();return L(e&&e.length>0?e:L(gl(),`.config`),`git`,`ignore`)}function MM(e,t,n,r){if(B(e))try{let r=V(e,`utf-8`);t.value+=r.length,n.push(...IM(r))}catch(t){sM.warn({path:e,err:t},`Failed to read ${r} at ${e}`)}}async function NM(e,t,n,r){if(B(e))try{let r=await wl(e,`utf-8`);t.value+=r.length,n.push(...IM(r))}catch(t){sM.warn({path:e,err:t},`Failed to read ${r} at ${e}`)}}function PM(e){let{projectDir:t,contentDir:n,onAfterRebuild:r,singleDocRelPath:i}=e,a=jE(R(t,n)),o=a.startsWith(`..`),s,c,l,u,d=0,f=0,p=0;function m(){let e=(0,oM.default)(),r=(0,oM.default)();e.add(`.git`);let i=[],m=0,h=0;for(let n of wM){let a=L(t,n);if(B(a))try{let t=V(a,`utf-8`);m+=t.length;let o=IM(t);i.push(...o),e.add(o),n===`.okignore`&&r.add(o)}catch(e){sM.warn({path:a,err:e},`Failed to read ${n} at ${a}`)}}if(a&&!o)for(let t of wM){let i=L(n,t);if(B(i))try{let n=V(i,`utf-8`);m+=n.length,h++;let o=IM(n).map(e=>LM(e,a));e.add(o),t===`.okignore`&&r.add(o)}catch(e){sM.warn({path:i,err:e},`Failed to read ${t} at ${i}`)}}let g={value:m};h+=RM(n,t,e,r,g),m=g.value;let _=TM(t,g);m=g.value,_.length>0&&(i.push(..._),e.add(_));let v=i.filter(e=>e.length>0&&!e.startsWith(`!`)&&!e.startsWith(`#`)&&!hM(e));return s=e,c=r,l=i,u=v,d=i.length,f=h,p=m,{patternCount:d,nestedFileCount:f,bytes:p}}m();let h=new Map;function g(e){if(o)return!1;let t=a?`${a}/${e}`:e;return s.ignores(t)}function _(e){if(o)return!1;let t=a?`${a}/${e}`:e;return c.ignores(t)}let v=()=>{i===void 0&&FM(n,``,g,h)};v();function y(e){return Nx(zx(e))}function b(e){for(let t of e.split(`/`))if(lM.has(t))return!0;return o?!1:g(e)}return{isExcluded(e,t){if(y(e)||SM(e)||yM(e))return!0;if(!t?.bypassFilters&&pM(e)){if(i!==void 0)return e!==i;if(Lx(e))return!1;let t=Bc(e).slice(1).toLowerCase();return!Xi.has(t)}if(fM(e,t?.showOk)||_M(e))return!0;if(i!==void 0)return e!==i;if(t?.bypassFilters)return t.respectOkignore===!0&&_(e);if(b(e))return!0;if(Lx(e))return!1;let n=Bc(e).slice(1).toLowerCase();if(Xi.has(n)){let t=zc(e),n=t===`.`?``:t;if((h.get(n)??0)>0)return!1}return!0},isDirExcluded(e,t){if(yM(e))return!0;if(!t?.bypassFilters&&mM(e))return!1;if(fM(e,t?.showOk))return!0;if(i!==void 0)return!CM(e,i);if(t?.bypassFilters)return t.respectOkignore===!0&&(_(e)||_(`${e}/`));for(let t of e.split(`/`))if(lM.has(t))return!0;if(o)return!1;let n=a?`${a}/${e}`:e;return s.ignores(n)||s.ignores(`${n}/`)},isPathIgnored(e,t){return y(e)||SM(e)||yM(e)?!0:pM(e)?!1:fM(e)||_M(e)?!0:t?.bypassFilters?!1:b(e)},getWatcherIgnoreGlobs(){return u},incrementMdDir(e){let t=e===`.`?``:e;h.set(t,(h.get(t)??0)+1)},decrementMdDir(e){let t=e===`.`?``:e,n=h.get(t)??0;n<=1?h.delete(t):h.set(t,n-1)},rebuildDirCount(){let e=new Map(h);h.clear();try{v()}catch(t){for(let[t,n]of e)h.set(t,n);sM.warn({err:t instanceof Error?t:Error(String(t))},`content-filter rebuildDirCount walk failed — retaining previous counts`)}},async rebuildIgnorePatterns(){let e=s,t=c,n=l,i=u,a=d,o=f,g=p,_=Date.now();return Ya(`config.ignore.rebuild`,{attributes:{}},async y=>{try{let e=m();h.clear(),v();let t=Date.now()-_;if(y.setAttributes({"ok.ignore.pattern_count":e.patternCount,"ok.ignore.nested_file_count":e.nestedFileCount,"ok.ignore.bytes":e.bytes}),sM.info({patternCount:e.patternCount,nestedFileCount:e.nestedFileCount,bytes:e.bytes,durationMs:t},`content-filter rebuild succeeded`),r)try{r()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter onAfterRebuild callback threw — derived views may be stale`)}return{ok:!0,patternCount:e.patternCount,nestedFileCount:e.nestedFileCount,bytes:e.bytes,durationMs:t}}catch(r){s=e,c=t,l=n,u=i,d=a,f=o,p=g,h.clear();try{v()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter rollback dirCount re-walk failed — sibling-asset counts may be stale until next rebuild`)}let m=r instanceof Error?r.message:String(r);return sM.warn({err:r instanceof Error?r:Error(m)},`content-filter rebuild failed — rolled back to previous state`),{ok:!1,error:{message:m}}}})}}}function FM(e,t,n,r){let i;try{i=al(e,{withFileTypes:!0})}catch(t){sM.warn({dir:e,err:t},`Failed to read directory for dir-count: ${e}`);return}for(let a of i){let i=t?`${t}/${a.name}`:a.name;if(a.isDirectory()){if(lM.has(a.name)||n(i)||n(`${i}/`))continue;FM(L(e,a.name),i,n,r)}else a.isFile()&&Lx(a.name)&&!n(i)&&r.set(t,(r.get(t)??0)+1)}}function IM(e){return e.split(`
50
+ `).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`))}function LM(e,t){let n=e.startsWith(`!`),r=n?e.slice(1):e,i=r.startsWith(`/`)?r.slice(1):r,a=i.endsWith(`/`)?i.slice(0,-1):i,o=r.startsWith(`/`)||a.includes(`/`)?`${t}/${i}`:`${t}/**/${i}`;return n?`!${o}`:o}function RM(e,t,n,r,i){let a;try{a=al(e,{withFileTypes:!0})}catch(t){return sM.warn({dir:e,err:t},`Failed to read directory ${e}`),0}let o=0;for(let s of a){if(!s.isDirectory()||lM.has(s.name))continue;let a=L(e,s.name),c=jE(R(t,a));if(!c.startsWith(`..`)&&!(n.ignores(c)||n.ignores(`${c}/`))){for(let e of wM){let t=L(a,e);if(B(t))try{let a=V(t,`utf-8`);i.value+=a.length;let s=IM(a).map(e=>LM(e,c));n.add(s),e===`.okignore`&&r.add(s),o++}catch(n){sM.warn({path:t,err:n},`Failed to read nested ${e} at ${t}`)}}o+=RM(a,t,n,r,i)}}return o}async function zM(e,t,n,r,i,a,o,s){let c;try{c=await Tl(e,{withFileTypes:!0})}catch(t){sM.warn({dir:e,err:t},`Failed to read directory ${e}`);return}for(let l of c){let c=t?`${t}/${l.name}`:l.name;if(l.isDirectory()){if(lM.has(l.name))continue;let t=L(e,l.name);if(!o){let e=jE(R(n,t));if(e.startsWith(`..`)||r.ignores(e)||r.ignores(`${e}/`))continue;for(let n of wM){let a=L(t,n);if(B(a))try{let t=IM(await wl(a,`utf-8`)).map(t=>LM(t,e));r.add(t),n===`.okignore`&&i.add(t)}catch(e){sM.warn({path:a,err:e},`Failed to read nested ${n} at ${a}`)}}}await zM(t,c,n,r,i,a,o,s)}else if(l.isFile()&&Lx(l.name)){if(!o){let e=a?`${a}/${c}`:c;if(r.ignores(e))continue}s.set(t,(s.get(t)??0)+1)}}}async function BM(e){let{projectDir:t,contentDir:n,onAfterRebuild:r,singleDocRelPath:i}=e,a=jE(R(t,n)),o=a.startsWith(`..`),s=(0,oM.default)(),c=(0,oM.default)(),l=[],u=new Map,d=()=>{i===void 0&&FM(n,``,f,u)};function f(e){if(o)return!1;let t=a?`${a}/${e}`:e;return s.ignores(t)}function p(e){if(o)return!1;let t=a?`${a}/${e}`:e;return c.ignores(t)}function m(e){return Nx(zx(e))}function h(e){for(let t of e.split(`/`))if(lM.has(t))return!0;return o?!1:f(e)}async function g(){let e=(0,oM.default)(),r=(0,oM.default)();e.add(`.git`);let d=[];for(let n of wM){let i=L(t,n);if(B(i))try{let t=IM(await wl(i,`utf-8`));d.push(...t),e.add(t),n===`.okignore`&&r.add(t)}catch(e){sM.warn({path:i,err:e},`Failed to read ${n} at ${i}`)}}if(a&&!o)for(let t of wM){let i=L(n,t);if(B(i))try{let n=IM(await wl(i,`utf-8`)).map(e=>LM(e,a));e.add(n),t===`.okignore`&&r.add(n)}catch(e){sM.warn({path:i,err:e},`Failed to read ${t} at ${i}`)}}let f=await EM(t,{value:0});f.length>0&&(d.push(...f),e.add(f));let p=new Map;i===void 0&&await zM(n,``,t,e,r,a,o,p),s=e,c=r,l=d.filter(e=>e.length>0&&!e.startsWith(`!`)&&!e.startsWith(`#`)&&!hM(e)),u.clear();for(let[e,t]of p)u.set(e,t)}return await g(),{isExcluded(e,t){if(m(e)||SM(e)||yM(e))return!0;if(!t?.bypassFilters&&pM(e)){if(i!==void 0)return e!==i;if(Lx(e))return!1;let t=Bc(e).slice(1).toLowerCase();return!Xi.has(t)}if(fM(e,t?.showOk)||_M(e))return!0;if(i!==void 0)return e!==i;if(t?.bypassFilters)return t.respectOkignore===!0&&p(e);if(h(e))return!0;if(Lx(e))return!1;let n=Bc(e).slice(1).toLowerCase();if(Xi.has(n)){let t=zc(e),n=t===`.`?``:t;if((u.get(n)??0)>0)return!1}return!0},isDirExcluded(e,t){if(yM(e))return!0;if(!t?.bypassFilters&&mM(e))return!1;if(fM(e,t?.showOk))return!0;if(i!==void 0)return!CM(e,i);if(t?.bypassFilters)return t.respectOkignore===!0&&(p(e)||p(`${e}/`));for(let t of e.split(`/`))if(lM.has(t))return!0;if(o)return!1;let n=a?`${a}/${e}`:e;return s.ignores(n)||s.ignores(`${n}/`)},isPathIgnored(e,t){return m(e)||SM(e)||yM(e)?!0:pM(e)?!1:fM(e)||_M(e)?!0:t?.bypassFilters?!1:h(e)},getWatcherIgnoreGlobs(){return l},incrementMdDir(e){let t=e===`.`?``:e;u.set(t,(u.get(t)??0)+1)},decrementMdDir(e){let t=e===`.`?``:e,n=u.get(t)??0;n<=1?u.delete(t):u.set(t,n-1)},rebuildDirCount(){let e=new Map(u);u.clear();try{d()}catch(t){for(let[t,n]of e)u.set(t,n);sM.warn({err:t instanceof Error?t:Error(String(t))},`content-filter rebuildDirCount walk failed — retaining previous counts`)}},async rebuildIgnorePatterns(){let e=s,t=c,n=l,i=new Map(u),a=Date.now();return Ya(`config.ignore.rebuild`,{attributes:{}},async o=>{try{await g();let e=Date.now()-a;if(o.setAttributes({"ok.ignore.pattern_count":l.length,"ok.ignore.nested_file_count":0,"ok.ignore.bytes":0}),sM.info({durationMs:e},`content-filter async rebuild succeeded`),r)try{r()}catch(e){sM.warn({err:e instanceof Error?e:Error(String(e))},`content-filter onAfterRebuild callback threw — derived views may be stale`)}return{ok:!0,patternCount:l.length,nestedFileCount:0,bytes:0,durationMs:e}}catch(r){s=e,c=t,l=n,u.clear();for(let[e,t]of i)u.set(e,t);let a=r instanceof Error?r.message:String(r);return sM.warn({err:r instanceof Error?r:Error(a)},`content-filter async rebuild failed — rolled back`),{ok:!1,error:{message:a}}}})}}}function VM(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t||!n;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&WM(e.charCodeAt(r)))for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r);let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&WM(e.charCodeAt(r))){for(r++;r<e.length&&WM(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
51
51
  `;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4,!0);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31)if(UM(a)){t+=e.substring(i,r),d=2;break}else d=6;r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(HM(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(HM(t));return o=15}if(UM(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
52
52
  `),s++,l=r,o=14;switch(t){case 123:return r++,o=1;case 125:return r++,o=2;case 91:return r++,o=3;case 93:return r++,o=4;case 58:return r++,o=6;case 44:return r++,o=5;case 34:return r++,i=h(),o=10;case 47:let c=r-1;if(e.charCodeAt(r+1)===47){for(r+=2;r<n&&!UM(e.charCodeAt(r));)r++;return i=e.substring(c,r),o=12}if(e.charCodeAt(r+1)===42){r+=2;let t=n-1,a=!1;for(;r<t;){let t=e.charCodeAt(r);if(t===42&&e.charCodeAt(r+1)===47){r+=2,a=!0;break}r++,UM(t)&&(t===13&&e.charCodeAt(r)===10&&r++,s++,l=r)}return a||(r++,d=1),i=e.substring(c,r),o=13}return i+=String.fromCharCode(t),r++,o=16;case 45:if(i+=String.fromCharCode(t),r++,r===n||!WM(e.charCodeAt(r)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=m(),o=11;default:for(;r<n&&_(t);)r++,t=e.charCodeAt(r);if(a!==r){switch(i=e.substring(a,r),i){case`true`:return o=8;case`false`:return o=9;case`null`:return o=7}return o=16}return i+=String.fromCharCode(t),r++,o=16}}function _(e){if(HM(e)||UM(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}function v(){let e;do e=g();while(e>=12&&e<=15);return e}return{setPosition:p,getPosition:()=>r,scan:t?v:g,getToken:()=>o,getTokenValue:()=>i,getTokenOffset:()=>a,getTokenLength:()=>r-a,getTokenStartLine:()=>c,getTokenStartCharacter:()=>a-u,getTokenError:()=>d}}function HM(e){return e===32||e===9}function UM(e){return e===10||e===13}function WM(e){return e>=48&&e<=57}var GM;(function(e){e[e.lineFeed=10]=`lineFeed`,e[e.carriageReturn=13]=`carriageReturn`,e[e.space=32]=`space`,e[e._0=48]=`_0`,e[e._1=49]=`_1`,e[e._2=50]=`_2`,e[e._3=51]=`_3`,e[e._4=52]=`_4`,e[e._5=53]=`_5`,e[e._6=54]=`_6`,e[e._7=55]=`_7`,e[e._8=56]=`_8`,e[e._9=57]=`_9`,e[e.a=97]=`a`,e[e.b=98]=`b`,e[e.c=99]=`c`,e[e.d=100]=`d`,e[e.e=101]=`e`,e[e.f=102]=`f`,e[e.g=103]=`g`,e[e.h=104]=`h`,e[e.i=105]=`i`,e[e.j=106]=`j`,e[e.k=107]=`k`,e[e.l=108]=`l`,e[e.m=109]=`m`,e[e.n=110]=`n`,e[e.o=111]=`o`,e[e.p=112]=`p`,e[e.q=113]=`q`,e[e.r=114]=`r`,e[e.s=115]=`s`,e[e.t=116]=`t`,e[e.u=117]=`u`,e[e.v=118]=`v`,e[e.w=119]=`w`,e[e.x=120]=`x`,e[e.y=121]=`y`,e[e.z=122]=`z`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.asterisk=42]=`asterisk`,e[e.backslash=92]=`backslash`,e[e.closeBrace=125]=`closeBrace`,e[e.closeBracket=93]=`closeBracket`,e[e.colon=58]=`colon`,e[e.comma=44]=`comma`,e[e.dot=46]=`dot`,e[e.doubleQuote=34]=`doubleQuote`,e[e.minus=45]=`minus`,e[e.openBrace=123]=`openBrace`,e[e.openBracket=91]=`openBracket`,e[e.plus=43]=`plus`,e[e.slash=47]=`slash`,e[e.formFeed=12]=`formFeed`,e[e.tab=9]=`tab`})(GM||={});const KM=Array(20).fill(0).map((e,t)=>` `.repeat(t)),qM={" ":{"\n":Array(200).fill(0).map((e,t)=>`
53
53
  `+` `.repeat(t)),"\r":Array(200).fill(0).map((e,t)=>`\r`+` `.repeat(t)),"\r\n":Array(200).fill(0).map((e,t)=>`\r
@@ -1212,7 +1212,7 @@ tags: [lore, history]
1212
1212
  `).filter(e=>e.length===40)}catch{}try{let e=(await S.raw(`for-each-ref`,`--format=%(refname)`,`refs/wip/${i}/`)).trim().split(`
1213
1213
  `).filter(Boolean);w.push(...e)}catch{}if(T&&w.length===0)try{let e=(await S.raw(`for-each-ref`,`--format=%(refname)`,`refs/wip/main/`)).trim().split(`
1214
1214
  `).filter(Boolean);w.push(...e)}catch{}if(w.length===0&&C.length===0&&ee.length===0)return kU;let te=[...C,...ee],ne=[];if(te.length>0){let t=NU(await S.raw(`log`,`--no-walk`,`--author-date-order`,`--format=${OU}`,...te)).map(e=>({...e,type:`checkpoint`}));if(b&&(t=await VU(e,t,c,i,g,x,v)),T&&C.length>0&&ee.length>0){let e=new Set(C),n=t.filter(t=>e.has(t.sha)),r=t.filter(t=>!e.has(t.sha)),i=n.reduce((e,t)=>{let n=new Date(t.timestamp).getTime();return n<e?n:e},1/0);ne=[...n,...r.filter(e=>new Date(e.timestamp).getTime()<i)]}else ne=t}let E=[...w];for(let e of te)E.push(e);let re=[];if(E.length>0&&(re=NU(await S.raw(`log`,`--full-history`,`--author-date-order`,`--format=${OU}`,`-n`,String(s),...E,...b?[`--`,b]:[])),re.length>=s&&(l=!0),_))for(let t=0;t<c.length-1;t++){let n=c[t];if(n.renameCommit!==null)try{let t=await WV(e,n.renameCommit,i,v);if(t.length===0)continue;let r=g(n.path),a=NU(await YV(e,[`--full-history`,`--author-date-order`,`--format=${OU}`,`-n`,String(s)],t,r));a.length>=s&&(l=!0),re=[...re,...a]}catch(e){EU.warn({step:t,path:n.path,err:e},`predecessor walk failed for step ${t} (${n.path}); skipping`)}}let ie=[...ne,...re],ae=new Set,oe=[];for(let e of ie)ae.has(e.sha)||(ae.add(e.sha),oe.push(e));let se=oe,ce=[];oe.length>0&&c.length>0&&(ce=await Promise.all(c.map(async t=>{if(t.renameCommit===null)return null;let n=await WV(e,t.renameCommit,i,v);return n.length===0?new Set:XV(e,n,i,x)})),se=BU(oe,c,ce)),se.sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime());let le=se;le=le.filter(e=>e.type!==`park`),m||(le=le.filter(e=>e.checkpoint?.kind!==`auto-consolidation`)),b&&le.length>1&&(le=await HU(e,le,c,ce,g)),d.length>0&&(le=le.filter(e=>d.includes(e.type))),f.length>0&&(le=le.filter(e=>zU(e,f))),p.length>0&&(le=le.filter(e=>!zU(e,p)));let ue=null;for(let e=le.length-1;e>=0;e--)le[e].parentSha=ue,le[e].type!==`checkpoint`&&(ue=le[e].sha);let de=le.length,D=le.slice(o,o+a),fe=D.map(({rawBody:e,...t})=>t);return u(E.length,oe.length),{entries:fe,total:de,hasMore:l&&D.length>0||o+a<de}}catch(e){return EU.warn({err:e},`getDocumentHistory failed, returning empty result`),u(0,0,!0),kU}}async function WU(e,t,n=`.`,r){if(!B(e.workTree)||!B(e.gitDir)||t.includes(`..`)||t.includes(`\0`))return kU;let i=r?.branch??`main`,a=Math.max(1,r?.limit??50),o=Math.max(0,r?.offset??0),s=n===`.`?``:n.replace(/^\.\//,``),c=t.replace(/^\.?\/+/,``).replace(/\/+$/,``),l=[s,c,`.ok`].filter(Boolean).join(`/`),u=YI(e);try{let e=[];for(let t of[`refs/wip/${i}/`,`refs/checkpoints/${i}/`])try{let n=(await u.raw(`for-each-ref`,`--format=%(refname)`,t)).trim().split(`
1215
- `).filter(Boolean);e.push(...n)}catch{}if(e.length===0)return kU;let t=DU(o,a),n=NU(await u.raw(`log`,`--full-history`,`--author-date-order`,`--format=${OU}`,`-n`,String(t),...e,`--`,l)),r=n.length>=t,s=c?`${c}/.ok/`:`.ok/`,d=new Set,f=[];for(let e of n){if(d.has(e.sha)||!jU(e.message)||!e.contributors.some(e=>e.docs.some(e=>e.startsWith(s))))continue;d.add(e.sha);let{rawBody:t,...n}=e;f.push(n)}let p=f.length,m=f.slice(o,o+a);return{entries:m,total:p,hasMore:r&&m.length>0||o+a<p}}catch(e){return EU.warn({err:e},`getFolderTimeline failed, returning empty result`),kU}}let GU=null;function KU(){return GU||=bo().createHistogram(`http.server.request.duration`,{description:`HTTP server request duration in seconds`,unit:`s`}),GU}let qU=null;function JU(){return qU||=bo().createCounter(`ok.preview_attach.hint_emitted`,{description:`Count of preview-attach hints emitted on write-tool responses when no editor is attached to __system__. Covers both attach-preview-once (URL exists, no browser) and start-ui (no UI running anywhere) variants — the tool side disambiguates via the warning action; the metric name is retained as-is so existing dashboards keep working.`}),qU}let YU=null;function XU(){return YU||=bo().createCounter(`ok.frontmatter.agent_patch_fm_touch_total`,{description:`Count of agent-patch calls whose find string targets the frontmatter region. Measures incidence during the soft-deprecation window before agent-patch FM-intersecting calls are enforced as 400. Bounded label: result ∈ {rejected, pre_deprecation_passthrough}.`}),YU}function ZU(e){return!!(/(^|\n)---(\s|\n|$)/.test(e)||/^\s*[\w-]+:\s+\S/.test(e))}let QU=null;function $U(){return QU||=bo().createCounter(`ok.rename.attribution_kind`,{description:`Count of rename and rollback handler dispatches by attribution kind (agent | principal | anonymous)`}),QU}let eW=null;function tW(){return eW||=bo().createCounter(`ok.agent_write.gate_fired_total`,{description:`Count of agent writes that ran the Site A content-divergence gate (denominator for the divergence rate). Bounded label: handler ∈ {agent-write-md, agent-write-batch, agent-patch, rollback}.`}),eW}let nW=null;function rW(){return nW||=bo().createCounter(`ok.agent_write.content_divergence_total`,{description:`Count of agent writes whose converged Y.Text diverged from the composed intent (numerator for the divergence rate). Bounded labels: handler ∈ {agent-write-md, agent-write-batch, agent-patch, rollback}, divergence_type.`}),nW}let iW=null;function aW(){return iW||=bo().createCounter(`ok.search.corpus_truncated_total`,{description:`Count of search-corpus rebuilds where the name-only file tier hit OK_SEARCH_MAX_ENTRIES and dropped deepest-tail paths. One increment per truncated build; non-truncated builds do not increment.`}),iW}let oW=null;function sW(){return oW||=bo().createCounter(`ok.search.corpus_update_total`,{description:`Count of workspace search corpus builds, by mode (cold | incremental | rebuild) and, for rebuilds, the bounded fallback reason.`}),oW}function cW(e,t){tW().add(1,{handler:e}),t!==void 0&&rW().add(1,{handler:e,divergence_type:t.divergenceType})}function lW(e){let t=e?.();t&&(t.notifyCredentialsChanged().catch(()=>{}),t.refreshPushPermission().catch(()=>{}))}function uW(e,t){e.type===`complete`&&lW(t)}const dW={source:`local`,skipStoreHooks:!1,context:{origin:`rollback-apply`,paired:!0}},fW={source:`local`,skipStoreHooks:!1,context:{origin:`managed-rename`,paired:!0}},Y=I(`api`);function pW(e){return/^<{7} /m.test(e)&&/^={7}$/m.test(e)&&/^>{7} /m.test(e)}function mW(e,t){if(!e||e.includes(`..`)||e.includes(`\0`))return{error:`Invalid document name.`};let n=t===`.`?``:t.replace(/^\.\//,``),r=WB(e);if(r.managed&&r.versioned)return{path:n?`${n}/${r.filePath}`:r.filePath};let i=Wx(e);return{path:n?`${n}/${e}${i}`:`${e}${i}`}}const hW=/^(image\.(png|jpe?g|gif|webp)|Clipboard.*|Untitled.*)$/i,gW=/[^\p{L}\p{N}\p{M}\p{Extended_Pictographic}.\-_ ]/gu,_W=/[/\\\x00-\x1f\x7f]/g;function vW(e){let t=e.replace(_W,``);if(t=t.replace(gW,`_`),t=t.replace(/_+/g,`_`).replace(/\.{2,}/g,`.`),t=t.replace(/^[._]+/,``),t=t.replace(/\.+$/,``),t===``)return`upload`;let n=new TextEncoder;if(n.encode(t).length>255){let e=t.lastIndexOf(`.`),r=e>=0?t.slice(e):``,i=e>=0?t.slice(0,e):t;for(;n.encode(i+r).length>255&&i.length>0;)i=i.slice(0,-1);t=(i||`upload`)+r,n.encode(t).length>255&&(t=`upload`)}return t}function yW(e,t,n){let r=t.trim();return r===``||r===`./`?z(n,zc(e)):r===`/`?n:r.startsWith(`./`)?z(n,zc(e),r.slice(2)):z(n,r)}function bW(e,t){let n=nl(e,`r`);try{let e=Buffer.alloc(t),r=il(n,e,0,t,0);return e.subarray(0,r)}finally{Yc(n)}}const xW=1e3;async function SW(e){let t=Il(`sha256`);return await Vl(Zc(e),t),t.digest(`hex`)}async function CW(e,t,n){let r;try{r=await Tl(e)}catch{return null}let i=I(`upload`),a=0;for(let o of r){let r=Bc(o).slice(1).toLowerCase();if(!Vi.has(r))continue;let s=z(e,o),c;try{c=await Dl(s)}catch{continue}if(!c.isFile()||c.size!==n)continue;if(a++,a>xW)return i.warn({event:`upload-dedup-skip`,reason:`scan-cap-exceeded`,destDir:e,scanned:xW,expectedSize:n},`[upload-dedup] candidate scan exceeded ${xW} same-size siblings — degrading to no-dedup for this upload`),null;let l;try{l=await SW(s)}catch(e){let t=Qo(e);t!==`ENOENT`&&i.warn({event:`upload-dedup-skip`,reason:`read-failed`,code:t,entry:o},`[upload-dedup] skipped candidate — read failed`);continue}if(l===t)return o}return null}function wW(e,t){return new Promise((n,r)=>{let i;try{i=(0,bie.default)({headers:e.headers,limits:{files:1,fields:10,fieldSize:2*1024}})}catch(e){r(new tI(`urn:ok:error:malformed-upload`,e));return}let a=!1,o=`upload`,s=``,c=``,l=``,u,d,f=!1,p=(e,t)=>{if(!a){if(a=!0,u)try{fl(u)}catch{}r(t instanceof tI?t:new tI(e,t))}},m=rI;i.on(`field`,(e,t)=>{e===`parentDocName`&&(c=t),e===`placement`&&(l=t)}),i.on(`file`,(e,r,i)=>{f=!0,o=i.filename||`upload`,s=i.mimeType||``;let h;try{h=Ioe(t)}catch(e){p(m(e),e),r.resume();return}u=h;let g=new Foe;Vl(r,g,Qc(h)).then(()=>{a||(a=!0,n({filename:o,mimeType:s,parentDocName:c,placement:l,tempPath:h,sha:g.digest(),byteLength:g.byteLength()}))}).catch(e=>{d=e,p(m(e),e)})}),i.on(`error`,e=>{p(`urn:ok:error:malformed-upload`,e)}),i.on(`close`,()=>{a||d||f||(a=!0,n({filename:``,mimeType:``,parentDocName:c,placement:l,tempPath:``,sha:``,byteLength:0}))}),e.on(`close`,()=>{a||d||e.complete||p(`urn:ok:error:malformed-upload`,Error(`client disconnected`))}),e.pipe(i)})}function TW(e,t){let n=z(e,t);if(!ME(n,e))throw Error(`Invalid directory: ${t}`);return n}function EW(e){let t=Bc(e);return t?t.slice(1).toLowerCase():e.startsWith(`.`)&&e.length>1?e.slice(1).toLowerCase():`file`}const DW=5e4;function OW(){let e=process.env.OK_SHOWALL_MAX_ENTRIES;if(e===void 0)return DW;let t=Number(e);return Number.isInteger(t)&&t>0?t:DW}const kW=5e4;function AW(){let e=process.env.OK_SEARCH_MAX_ENTRIES;if(e===void 0)return kW;let t=Number(e);return Number.isInteger(t)&&t>0?t:kW}let jW=0,MW=0;function NW(){return{invocations:jW,aborts:MW}}function PW(){jW=0,MW=0}function FW(e){let t=e.headers.accept;return typeof t==`string`&&t.includes(`application/x-ndjson`)}async function*IW(e){let{contentDir:t,contentFilter:n,dirFilter:r,maxEntries:i,signal:a,showOk:o}=e,s=e.maxDepth??1/0,c={bypassFilters:!0,showOk:o};jW+=1;let l=0,u=!1,d=!1,f=e=>r?e===r||e.startsWith(`${r}/`):!0,p;try{p=await El(t)}catch{p=t}let m=e=>ME(e,p),h=async(e,t,r)=>{let i=new Map;for(let t of e){if(!t.isFile()&&!t.isSymbolicLink()||!Lx(t.name))continue;let e=zx(r?`${r}/${t.name}`:t.name);i.set(e,(i.get(e)??0)+1)}let a=new Set([...i].filter(([,e])=>e>1).map(([e])=>e));if(a.size===0)return new Map;let o=new Map;for(let i of e){if(!i.isFile()&&!i.isSymbolicLink()||!Lx(i.name))continue;let e=r?`${r}/${i.name}`:i.name,s=zx(e);if(a.has(s)&&!n.isExcluded(e,{bypassFilters:!0})&&f(e)){if(i.isSymbolicLink()){let e=L(t,i.name),n;try{n=await El(e)}catch{continue}if(!m(n))continue;let r;try{r=await Dl(n)}catch{continue}if(!r.isFile())continue}else try{await Dl(L(t,i.name))}catch{continue}o.set(s,(o.get(s)??0)+1)}}return o},g=(e,t)=>{let n=zx(e);return(t.get(n)??0)>1?e:n};async function _(e,t){let r;try{r=await Tl(e,{withFileTypes:!0})}catch(t){return Y.warn({dir:e,err:t},`[document-list][showAll] probe readdir failed for ${e}`),!1}for(let i of r){let r=t?`${t}/${i.name}`:i.name;if(i.isDirectory()){if(n.isDirExcluded(r,c))continue;try{if(!m(await El(L(e,i.name))))continue}catch(t){Y.warn({path:`${e}/${i.name}`,err:t},`[document-list][showAll] probe realpath failed for ${e}/${i.name}`);continue}return!0}if(i.isFile()&&!n.isExcluded(r,c))return!0}return!1}async function*v(e,r,o){let p=[{absDir:e,relDir:r,depth:o}];for(let e=0;e<p.length;e++){if(a?.aborted){d=!0;return}let{absDir:r,relDir:o,depth:v}=p[e],y;try{y=await Tl(r,{withFileTypes:!0})}catch(e){Y.warn({dir:r,err:e},`[document-list][showAll] readdir failed for ${r}`);continue}let b=await h(y,r,o);for(let e of y){if(a?.aborted){d=!0;return}if(l>=i){u=!0;return}let h=o?`${o}/${e.name}`:e.name;if(e.isDirectory()){if(n.isDirExcluded(h,c))continue;let t=L(r,e.name),i;try{i=await El(t)}catch(e){Y.warn({path:t,err:e},`[document-list][showAll] realpath failed for ${t}`);continue}if(!m(i)){Y.warn({path:t,canonical:i},`[document-list][showAll] refusing symlink-escape ${t} -> ${i}`);continue}if(f(h)){let e=null;try{e=await Dl(t)}catch(e){Y.warn({path:t,err:e},`[document-list][showAll] stat failed for ${t}`)}l+=1;let n=v>=s?await _(t,h):void 0;yield{kind:`folder`,path:h,size:0,modified:e?e.mtime.toISOString():``,docExt:`.md`,isSymlink:!1,canonicalDocName:null,targetPath:null,...n===void 0?{}:{hasChildren:n}}}v<s&&p.push({absDir:t,relDir:h,depth:v+1});continue}if(e.isSymbolicLink()){let i=L(r,e.name),a;try{a=await El(i)}catch(e){Y.warn({path:i,err:e},`[document-list][showAll] symlink realpath failed for ${i}`);continue}if(!m(a)){Y.warn({path:i,canonical:a},`[document-list][showAll] refusing symlink-escape ${i} -> ${a}`);continue}let o;try{o=await Dl(a)}catch(e){Y.warn({path:i,err:e},`[document-list][showAll] symlink target stat failed for ${i}`);continue}let s=jE(R(t,a));if(o.isDirectory()){if(n.isDirExcluded(h,c)||!f(h))continue;l+=1,yield{kind:`folder`,path:h,size:0,modified:o.mtime.toISOString(),docExt:`.md`,isSymlink:!0,canonicalDocName:s,targetPath:s,hasChildren:await _(a,h)};continue}if(!o.isFile()||n.isExcluded(h,c)||!f(h))continue;if(l+=1,Lx(e.name))yield{kind:`document`,docName:g(h,b),docExt:Bc(e.name),size:o.size,modified:o.mtime.toISOString(),isSymlink:!0,canonicalDocName:s.replace(/\.(md|mdx)$/i,``),targetPath:s};else{let t=EW(e.name);yield{kind:`asset`,docName:h,docExt:t,path:h,assetExt:t,mediaKind:qi(t),referencedBy:[],size:o.size,modified:o.mtime.toISOString(),isSymlink:!0,canonicalDocName:null,targetPath:s}}continue}if(!e.isFile()||n.isExcluded(h,c)||!f(h))continue;let y=null;try{y=await Dl(L(r,e.name))}catch(t){Y.warn({path:`${r}/${e.name}`,err:t},`[document-list][showAll] stat failed for ${r}/${e.name}`);continue}if(Lx(e.name)){let t=g(h,b),n=Bc(e.name);l+=1,yield{kind:`document`,docName:t,docExt:n,size:y.size,modified:y.mtime.toISOString(),isSymlink:!1,canonicalDocName:null,targetPath:null};continue}let x=EW(e.name),S=qi(x);l+=1,yield{kind:`asset`,docName:h,docExt:x,path:h,assetExt:x,mediaKind:S,referencedBy:[],size:y.size,modified:y.mtime.toISOString(),isSymlink:!1,canonicalDocName:null,targetPath:null}}}}return yield*v(r?L(t,r):t,r??``,1),d&&(MW+=1),{truncated:u}}async function LW(e){let{documents:t,...n}=e,r=IW(n),i=await r.next();for(;!i.done;)t.push(i.value),i=await r.next();return i.value}function RW(e){return!e||e.startsWith(`/`)||e.includes(`\\`)||e.includes(`\0`)?!1:e.split(`/`).every(e=>e&&e!==`.`&&e!==`..`)}function zW(e){return e.split(`/`).some(e=>{let t=e.toLowerCase();return t===`.ok`||t===`.git`})}function BW(e){return e===`__system__`||e===`__config__`||e===`__user__`||e===`__local__`||e.startsWith(`__system__/`)||e.startsWith(`__config__/`)||e.startsWith(`__user__/`)||e.startsWith(`__local__/`)}function VW(e,t,n){let r=[...e.keys()].filter(e=>t===`file`?e===n:e===n||e.startsWith(`${n}/`));return r.sort((e,t)=>e.localeCompare(t)),r}function HW(e,t,n,r){return t===`file`||e===n?r:`${r}${e.slice(n.length)}`}function UW(e,t,n){return e!==void 0&&e.length>0?e:(G(t,400,`urn:ok:error:invalid-request`,"`docName` must be a non-empty document name.",{handler:n}),null)}function WW(e,t){let n;try{n=sl(t)}catch(e){throw Qo(e)===`ENOENT`?new $j(`content directory does not exist`):e}let r=e;for(;;)try{if(!PE(sl(r),n))throw new $j(`path resolves outside content directory`);return}catch(e){let n=Qo(e);if(n===`ELOOP`)throw new $j(`symlink cycle in path`);if(n!==`ENOENT`)throw e;let i=zc(r);if(i===r||i!==t&&!i.startsWith(`${t}${Wc}`))throw e;r=i}}function GW(e,t,n){if(!RW(n))throw Error(`path must be a relative content path`);let r=z(e),i=z(r,t===`file`?Gx(n):n);if(i!==r&&!i.startsWith(`${r}${Wc}`))throw Error(`path must not escape content directory`);return WW(i,r),i}function KW(e){let t=e.lastIndexOf(`/`);return t===-1?{parent:``,basename:e}:{parent:e.slice(0,t),basename:e.slice(t+1)}}function qW(e,t){return e?`${e}/${t}`:t}function JW(e,t){return t===1?`${e} copy`:`${e} copy ${t}`}var YW=class extends Error{constructor(e){super(`Could not find an available duplicate name for ${e}`),this.sourcePath=e,this.name=`DuplicateNameExhaustedError`}};function XW(e){let t=Qo(e);return t===`EEXIST`||t===`ERR_FS_CP_EEXIST`||t===`ERR_FS_CP_DIR_TO_NON_DIR`||t===`ERR_FS_CP_NON_DIR_TO_DIR`}function ZW(e){let t=Qo(e);return t===`ENOSPC`||t===`EDQUOT`?{status:507,type:`urn:ok:error:storage-full`,title:`Could not duplicate path because storage is full.`}:t===`EPERM`||t===`EACCES`||t===`EROFS`?{status:500,type:`urn:ok:error:storage-readonly`,title:`Could not duplicate path because storage is not writable.`}:null}function QW(e,t){return $W(e,t)!==null}function $W(e,t){if(Lx(t))return B(z(e,t))?t:null;for(let n of yi)if(B(z(e,`${t}${n}`)))return`${t}${n}`;return null}function eG(e,t){if(!Lx(t))return!1;let n=zx(t),r=Bc(t).toLowerCase();return yi.some(t=>t.toLowerCase()===r?!1:B(z(e,`${n}${t}`)))}function tG(e,t){let n=zx(t);return Lx(t)&&eG(e,t)?t:n}function nG(e,t,n){if(!RW(t))throw Error(`path must be a relative content path`);let r=z(e),i=z(r,`${t}${n}`);if(i!==r&&!i.startsWith(`${r}${Wc}`))throw Error(`path must not escape content directory`);return WW(i,r),i}function rG(e,t){let{parent:n,basename:r}=KW(t);for(let t=1;t<=1e4;t+=1){let i=qW(n,JW(r,t));if(!QW(e,i))return{docName:i,attempt:t}}throw new YW(t)}function iG(e,t){let{parent:n,basename:r}=KW(t);for(let t=1;t<=1e4;t+=1){let i=qW(n,JW(r,t));if(!B(GW(e,`folder`,i)))return{folderPath:i,attempt:t}}throw new YW(t)}function aG(e,t){let n=GW(e,`folder`,t),r=[];function i(t,n){for(let a of al(t,{withFileTypes:!0})){let o=z(t,a.name),s=n?`${n}/${a.name}`:a.name;if(a.isDirectory()){i(o,s);continue}!a.isFile()||!Lx(s)||r.push({docName:tG(e,s),fullPath:o,content:V(o,`utf-8`)})}}return i(n,t),r.sort((e,t)=>e.docName.localeCompare(t.docName)),r}function oG(e,t){let n=GW(e,`folder`,t),r=[t];function i(e,t){for(let n of al(e,{withFileTypes:!0})){if(!n.isDirectory())continue;let a=z(e,n.name),o=t?`${t}/${n.name}`:n.name;r.push(o),i(a,o)}}return i(n,t),r.sort((e,t)=>e.localeCompare(t)),r}function sG(e,t){if(!RW(t))return;let n=z(e);if(Lx(t)){let e=zx(t);for(let t of yi){let r=z(n,`${e}${t}`);r!==n&&!r.startsWith(`${n}${Wc}`)||B(r)&&Ux(e,t)}let r=z(n,t);r!==n&&r.startsWith(`${n}${Wc}`)&&B(r)&&Ux(e,Bc(t));return}for(let e of yi){let r=z(n,`${t}${e}`);if(!(r!==n&&!r.startsWith(`${n}${Wc}`))&&B(r)){Ux(t,e);return}}}function cG(e,t){let n=z(e),r=z(t);return r!==n&&!r.startsWith(`${n}${Wc}`)?null:R(n,r).split(Wc).join(`/`)}function lG(e,t){return e!==t&&e.toLowerCase()===t.toLowerCase()}function uG(e,t){return lG(z(e),z(t))}function dG(e,t){if(!uG(e,t)||!B(e)||!B(t))return!1;try{let n=dl(e),r=dl(t);return n.dev===r.dev&&n.ino===r.ino}catch{return!1}}function fG(e){let t=zc(e);for(let e=0;e<10;e+=1){let e=z(t,`.ok-case-rename-${Ll()}`);if(!B(e))return e}throw Error(`Unable to allocate temporary path for case-only rename`)}function pG(e,t){(B(e)?V(e,`utf-8`):null)!==t&&_o(e,t,`utf-8`)}function mG(e,t){if(so(zc(t),{recursive:!0}),!uG(e,t)){eo(e,t);return}let n=fG(e);eo(e,n);try{eo(n,t)}catch(t){try{let t=B(n),r=B(e);t&&!r?eo(n,e):Y.warn({tempExists:t,sourceExists:r},`[renamePathOnDisk] skipped case-only rollback due to unexpected state`)}catch(e){Y.warn({err:e},`[renamePathOnDisk] failed to roll back temporary case-only rename`)}throw t}}async function hG(e,t,n){if(!e)return!1;let r=cG(e,t),i=cG(e,n);return!r||!i?!1:await Mo(async()=>{let a=jo({baseDir:e,timeout:{block:15e3}}),o=``;try{o=(await a.raw(`ls-files`,`--`,r)).trim()}catch(e){return Y.warn({err:e},`[renameTrackedPathInGit] git ls-files failed, falling back to fs rename`),!1}if(!o)return!1;el(zc(n),{recursive:!0});let s=!1;try{if(uG(t,n)){let n=cG(e,fG(t));if(!n)return!1;await a.raw(`mv`,`--`,r,n);try{await a.raw(`mv`,`--`,n,i)}catch(e){try{await a.raw(`mv`,`--`,n,r)}catch(e){Y.warn({err:e},`[renameTrackedPathInGit] case-only git rename failed and rollback also failed; git index and disk may have diverged`),s=!0}throw e}}else await a.raw(`mv`,`--`,r,i);return!0}catch(e){if(s)throw e;return Y.warn({err:e},`[renameTrackedPathInGit] git mv failed, falling back to fs rename`),!1}})}const gG=new Map;function _G(e){let{body:t}=cn(e),n=[],r=new Map,i=Hn();for(let e of t.split(`
1215
+ `).filter(Boolean);e.push(...n)}catch{}if(e.length===0)return kU;let t=DU(o,a),n=NU(await u.raw(`log`,`--full-history`,`--author-date-order`,`--format=${OU}`,`-n`,String(t),...e,`--`,l)),r=n.length>=t,s=c?`${c}/.ok/`:`.ok/`,d=new Set,f=[];for(let e of n){if(d.has(e.sha)||!jU(e.message)||!e.contributors.some(e=>e.docs.some(e=>e.startsWith(s))))continue;d.add(e.sha);let{rawBody:t,...n}=e;f.push(n)}let p=f.length,m=f.slice(o,o+a);return{entries:m,total:p,hasMore:r&&m.length>0||o+a<p}}catch(e){return EU.warn({err:e},`getFolderTimeline failed, returning empty result`),kU}}let GU=null;function KU(){return GU||=bo().createHistogram(`http.server.request.duration`,{description:`HTTP server request duration in seconds`,unit:`s`}),GU}let qU=null;function JU(){return qU||=bo().createCounter(`ok.preview_attach.hint_emitted`,{description:`Count of preview-attach hints emitted on write-tool responses when no editor is attached to __system__. Covers both attach-preview-once (URL exists, no browser) and start-ui (no UI running anywhere) variants — the tool side disambiguates via the warning action; the metric name is retained as-is so existing dashboards keep working.`}),qU}let YU=null;function XU(){return YU||=bo().createCounter(`ok.frontmatter.agent_patch_fm_touch_total`,{description:`Count of agent-patch calls whose find string targets the frontmatter region. Measures incidence during the soft-deprecation window before agent-patch FM-intersecting calls are enforced as 400. Bounded label: result ∈ {rejected, pre_deprecation_passthrough}.`}),YU}function ZU(e){return!!(/(^|\n)---(\s|\n|$)/.test(e)||/^\s*[\w-]+:\s+\S/.test(e))}let QU=null;function $U(){return QU||=bo().createCounter(`ok.rename.attribution_kind`,{description:`Count of rename and rollback handler dispatches by attribution kind (agent | principal | anonymous)`}),QU}let eW=null;function tW(){return eW||=bo().createCounter(`ok.agent_write.gate_fired_total`,{description:`Count of agent writes that ran the Site A content-divergence gate (denominator for the divergence rate). Bounded label: handler ∈ {agent-write-md, agent-write-batch, agent-patch, rollback}.`}),eW}let nW=null;function rW(){return nW||=bo().createCounter(`ok.agent_write.content_divergence_total`,{description:`Count of agent writes whose converged Y.Text diverged from the composed intent (numerator for the divergence rate). Bounded labels: handler ∈ {agent-write-md, agent-write-batch, agent-patch, rollback}, divergence_type.`}),nW}let iW=null;function aW(){return iW||=bo().createCounter(`ok.search.corpus_truncated_total`,{description:`Count of search-corpus rebuilds where the name-only file tier hit OK_SEARCH_MAX_ENTRIES and dropped deepest-tail paths. One increment per truncated build; non-truncated builds do not increment.`}),iW}let oW=null;function sW(){return oW||=bo().createCounter(`ok.search.corpus_update_total`,{description:`Count of workspace search corpus builds, by mode (cold | incremental | rebuild) and, for rebuilds, the bounded fallback reason.`}),oW}function cW(e,t){tW().add(1,{handler:e}),t!==void 0&&rW().add(1,{handler:e,divergence_type:t.divergenceType})}function lW(e){let t=e?.();t&&(t.notifyCredentialsChanged().catch(()=>{}),t.refreshPushPermission().catch(()=>{}))}function uW(e,t){e.type===`complete`&&lW(t)}const dW={source:`local`,skipStoreHooks:!1,context:{origin:`rollback-apply`,paired:!0}},fW={source:`local`,skipStoreHooks:!1,context:{origin:`managed-rename`,paired:!0}},Y=I(`api`);function pW(e){return/^<{7} /m.test(e)&&/^={7}$/m.test(e)&&/^>{7} /m.test(e)}function mW(e,t){if(!e||e.includes(`..`)||e.includes(`\0`))return{error:`Invalid document name.`};let n=t===`.`?``:t.replace(/^\.\//,``),r=WB(e);if(r.managed&&r.versioned)return{path:n?`${n}/${r.filePath}`:r.filePath};let i=Wx(e);return{path:n?`${n}/${e}${i}`:`${e}${i}`}}const hW=/^(image\.(png|jpe?g|gif|webp)|Clipboard.*|Untitled.*)$/i,gW=/[^\p{L}\p{N}\p{M}\p{Extended_Pictographic}.\-_ ]/gu,_W=/[/\\\x00-\x1f\x7f]/g;function vW(e){let t=e.replace(_W,``);if(t=t.replace(gW,`_`),t=t.replace(/_+/g,`_`).replace(/\.{2,}/g,`.`),t=t.replace(/^[._]+/,``),t=t.replace(/\.+$/,``),t===``)return`upload`;let n=new TextEncoder;if(n.encode(t).length>255){let e=t.lastIndexOf(`.`),r=e>=0?t.slice(e):``,i=e>=0?t.slice(0,e):t;for(;n.encode(i+r).length>255&&i.length>0;)i=i.slice(0,-1);t=(i||`upload`)+r,n.encode(t).length>255&&(t=`upload`)}return t}function yW(e,t,n){let r=t.trim();return r===``||r===`./`?z(n,zc(e)):r===`/`?n:r.startsWith(`./`)?z(n,zc(e),r.slice(2)):z(n,r)}function bW(e,t){let n=nl(e,`r`);try{let e=Buffer.alloc(t),r=il(n,e,0,t,0);return e.subarray(0,r)}finally{Yc(n)}}const xW=1e3;async function SW(e){let t=Il(`sha256`);return await Vl(Zc(e),t),t.digest(`hex`)}async function CW(e,t,n){let r;try{r=await Tl(e)}catch{return null}let i=I(`upload`),a=0;for(let o of r){let r=Bc(o).slice(1).toLowerCase();if(!Vi.has(r))continue;let s=z(e,o),c;try{c=await Dl(s)}catch{continue}if(!c.isFile()||c.size!==n)continue;if(a++,a>xW)return i.warn({event:`upload-dedup-skip`,reason:`scan-cap-exceeded`,destDir:e,scanned:xW,expectedSize:n},`[upload-dedup] candidate scan exceeded ${xW} same-size siblings — degrading to no-dedup for this upload`),null;let l;try{l=await SW(s)}catch(e){let t=Qo(e);t!==`ENOENT`&&i.warn({event:`upload-dedup-skip`,reason:`read-failed`,code:t,entry:o},`[upload-dedup] skipped candidate — read failed`);continue}if(l===t)return o}return null}function wW(e,t){return new Promise((n,r)=>{let i;try{i=(0,bie.default)({headers:e.headers,limits:{files:1,fields:10,fieldSize:2*1024}})}catch(e){r(new tI(`urn:ok:error:malformed-upload`,e));return}let a=!1,o=`upload`,s=``,c=``,l=``,u,d,f=!1,p=(e,t)=>{if(!a){if(a=!0,u)try{fl(u)}catch{}r(t instanceof tI?t:new tI(e,t))}},m=rI;i.on(`field`,(e,t)=>{e===`parentDocName`&&(c=t),e===`placement`&&(l=t)}),i.on(`file`,(e,r,i)=>{f=!0,o=i.filename||`upload`,s=i.mimeType||``;let h;try{h=Ioe(t)}catch(e){p(m(e),e),r.resume();return}u=h;let g=new Foe;Vl(r,g,Qc(h)).then(()=>{a||(a=!0,n({filename:o,mimeType:s,parentDocName:c,placement:l,tempPath:h,sha:g.digest(),byteLength:g.byteLength()}))}).catch(e=>{d=e,p(m(e),e)})}),i.on(`error`,e=>{p(`urn:ok:error:malformed-upload`,e)}),i.on(`close`,()=>{a||d||f||(a=!0,n({filename:``,mimeType:``,parentDocName:c,placement:l,tempPath:``,sha:``,byteLength:0}))}),e.on(`close`,()=>{a||d||e.complete||p(`urn:ok:error:malformed-upload`,Error(`client disconnected`))}),e.pipe(i)})}function TW(e,t){let n=z(e,t);if(!ME(n,e))throw Error(`Invalid directory: ${t}`);return n}function EW(e){let t=Bc(e);return t?t.slice(1).toLowerCase():e.startsWith(`.`)&&e.length>1?e.slice(1).toLowerCase():`file`}const DW=5e4;function OW(){let e=process.env.OK_SHOWALL_MAX_ENTRIES;if(e===void 0)return DW;let t=Number(e);return Number.isInteger(t)&&t>0?t:DW}const kW=5e4;function AW(){let e=process.env.OK_SEARCH_MAX_ENTRIES;if(e===void 0)return kW;let t=Number(e);return Number.isInteger(t)&&t>0?t:kW}let jW=0,MW=0;function NW(){return{invocations:jW,aborts:MW}}function PW(){jW=0,MW=0}function FW(e){let t=e.headers.accept;return typeof t==`string`&&t.includes(`application/x-ndjson`)}async function*IW(e){let{contentDir:t,contentFilter:n,dirFilter:r,maxEntries:i,signal:a,showOk:o}=e,s=e.maxDepth??1/0,c={bypassFilters:!0,respectOkignore:!0,showOk:o};jW+=1;let l=0,u=!1,d=!1,f=e=>r?e===r||e.startsWith(`${r}/`):!0,p;try{p=await El(t)}catch{p=t}let m=e=>ME(e,p),h=async(e,t,r)=>{let i=new Map;for(let t of e){if(!t.isFile()&&!t.isSymbolicLink()||!Lx(t.name))continue;let e=zx(r?`${r}/${t.name}`:t.name);i.set(e,(i.get(e)??0)+1)}let a=new Set([...i].filter(([,e])=>e>1).map(([e])=>e));if(a.size===0)return new Map;let o=new Map;for(let i of e){if(!i.isFile()&&!i.isSymbolicLink()||!Lx(i.name))continue;let e=r?`${r}/${i.name}`:i.name,s=zx(e);if(a.has(s)&&!n.isExcluded(e,c)&&f(e)){if(i.isSymbolicLink()){let e=L(t,i.name),n;try{n=await El(e)}catch{continue}if(!m(n))continue;let r;try{r=await Dl(n)}catch{continue}if(!r.isFile())continue}else try{await Dl(L(t,i.name))}catch{continue}o.set(s,(o.get(s)??0)+1)}}return o},g=(e,t)=>{let n=zx(e);return(t.get(n)??0)>1?e:n};async function _(e,t){let r;try{r=await Tl(e,{withFileTypes:!0})}catch(t){return Y.warn({dir:e,err:t},`[document-list][showAll] probe readdir failed for ${e}`),!1}for(let i of r){let r=t?`${t}/${i.name}`:i.name;if(i.isDirectory()){if(n.isDirExcluded(r,c))continue;try{if(!m(await El(L(e,i.name))))continue}catch(t){Y.warn({path:`${e}/${i.name}`,err:t},`[document-list][showAll] probe realpath failed for ${e}/${i.name}`);continue}return!0}if(i.isFile()&&!n.isExcluded(r,c))return!0}return!1}async function*v(e,r,o){let p=[{absDir:e,relDir:r,depth:o}];for(let e=0;e<p.length;e++){if(a?.aborted){d=!0;return}let{absDir:r,relDir:o,depth:v}=p[e],y;try{y=await Tl(r,{withFileTypes:!0})}catch(e){Y.warn({dir:r,err:e},`[document-list][showAll] readdir failed for ${r}`);continue}let b=await h(y,r,o);for(let e of y){if(a?.aborted){d=!0;return}if(l>=i){u=!0;return}let h=o?`${o}/${e.name}`:e.name;if(e.isDirectory()){if(n.isDirExcluded(h,c))continue;let t=L(r,e.name),i;try{i=await El(t)}catch(e){Y.warn({path:t,err:e},`[document-list][showAll] realpath failed for ${t}`);continue}if(!m(i)){Y.warn({path:t,canonical:i},`[document-list][showAll] refusing symlink-escape ${t} -> ${i}`);continue}if(f(h)){let e=null;try{e=await Dl(t)}catch(e){Y.warn({path:t,err:e},`[document-list][showAll] stat failed for ${t}`)}l+=1;let n=v>=s?await _(t,h):void 0;yield{kind:`folder`,path:h,size:0,modified:e?e.mtime.toISOString():``,docExt:`.md`,isSymlink:!1,canonicalDocName:null,targetPath:null,...n===void 0?{}:{hasChildren:n}}}v<s&&p.push({absDir:t,relDir:h,depth:v+1});continue}if(e.isSymbolicLink()){let i=L(r,e.name),a;try{a=await El(i)}catch(e){Y.warn({path:i,err:e},`[document-list][showAll] symlink realpath failed for ${i}`);continue}if(!m(a)){Y.warn({path:i,canonical:a},`[document-list][showAll] refusing symlink-escape ${i} -> ${a}`);continue}let o;try{o=await Dl(a)}catch(e){Y.warn({path:i,err:e},`[document-list][showAll] symlink target stat failed for ${i}`);continue}let s=jE(R(t,a));if(o.isDirectory()){if(n.isDirExcluded(h,c)||!f(h))continue;l+=1,yield{kind:`folder`,path:h,size:0,modified:o.mtime.toISOString(),docExt:`.md`,isSymlink:!0,canonicalDocName:s,targetPath:s,hasChildren:await _(a,h)};continue}if(!o.isFile()||n.isExcluded(h,c)||!f(h))continue;if(l+=1,Lx(e.name))yield{kind:`document`,docName:g(h,b),docExt:Bc(e.name),size:o.size,modified:o.mtime.toISOString(),isSymlink:!0,canonicalDocName:s.replace(/\.(md|mdx)$/i,``),targetPath:s};else{let t=EW(e.name);yield{kind:`asset`,docName:h,docExt:t,path:h,assetExt:t,mediaKind:qi(t),referencedBy:[],size:o.size,modified:o.mtime.toISOString(),isSymlink:!0,canonicalDocName:null,targetPath:s}}continue}if(!e.isFile()||n.isExcluded(h,c)||!f(h))continue;let y=null;try{y=await Dl(L(r,e.name))}catch(t){Y.warn({path:`${r}/${e.name}`,err:t},`[document-list][showAll] stat failed for ${r}/${e.name}`);continue}if(Lx(e.name)){let t=g(h,b),n=Bc(e.name);l+=1,yield{kind:`document`,docName:t,docExt:n,size:y.size,modified:y.mtime.toISOString(),isSymlink:!1,canonicalDocName:null,targetPath:null};continue}let x=EW(e.name),S=qi(x);l+=1,yield{kind:`asset`,docName:h,docExt:x,path:h,assetExt:x,mediaKind:S,referencedBy:[],size:y.size,modified:y.mtime.toISOString(),isSymlink:!1,canonicalDocName:null,targetPath:null}}}}return yield*v(r?L(t,r):t,r??``,1),d&&(MW+=1),{truncated:u}}async function LW(e){let{documents:t,...n}=e,r=IW(n),i=await r.next();for(;!i.done;)t.push(i.value),i=await r.next();return i.value}function RW(e){return!e||e.startsWith(`/`)||e.includes(`\\`)||e.includes(`\0`)?!1:e.split(`/`).every(e=>e&&e!==`.`&&e!==`..`)}function zW(e){return e.split(`/`).some(e=>{let t=e.toLowerCase();return t===`.ok`||t===`.git`})}function BW(e){return e===`__system__`||e===`__config__`||e===`__user__`||e===`__local__`||e.startsWith(`__system__/`)||e.startsWith(`__config__/`)||e.startsWith(`__user__/`)||e.startsWith(`__local__/`)}function VW(e,t,n){let r=[...e.keys()].filter(e=>t===`file`?e===n:e===n||e.startsWith(`${n}/`));return r.sort((e,t)=>e.localeCompare(t)),r}function HW(e,t,n,r){return t===`file`||e===n?r:`${r}${e.slice(n.length)}`}function UW(e,t,n){return e!==void 0&&e.length>0?e:(G(t,400,`urn:ok:error:invalid-request`,"`docName` must be a non-empty document name.",{handler:n}),null)}function WW(e,t){let n;try{n=sl(t)}catch(e){throw Qo(e)===`ENOENT`?new $j(`content directory does not exist`):e}let r=e;for(;;)try{if(!PE(sl(r),n))throw new $j(`path resolves outside content directory`);return}catch(e){let n=Qo(e);if(n===`ELOOP`)throw new $j(`symlink cycle in path`);if(n!==`ENOENT`)throw e;let i=zc(r);if(i===r||i!==t&&!i.startsWith(`${t}${Wc}`))throw e;r=i}}function GW(e,t,n){if(!RW(n))throw Error(`path must be a relative content path`);let r=z(e),i=z(r,t===`file`?Gx(n):n);if(i!==r&&!i.startsWith(`${r}${Wc}`))throw Error(`path must not escape content directory`);return WW(i,r),i}function KW(e){let t=e.lastIndexOf(`/`);return t===-1?{parent:``,basename:e}:{parent:e.slice(0,t),basename:e.slice(t+1)}}function qW(e,t){return e?`${e}/${t}`:t}function JW(e,t){return t===1?`${e} copy`:`${e} copy ${t}`}var YW=class extends Error{constructor(e){super(`Could not find an available duplicate name for ${e}`),this.sourcePath=e,this.name=`DuplicateNameExhaustedError`}};function XW(e){let t=Qo(e);return t===`EEXIST`||t===`ERR_FS_CP_EEXIST`||t===`ERR_FS_CP_DIR_TO_NON_DIR`||t===`ERR_FS_CP_NON_DIR_TO_DIR`}function ZW(e){let t=Qo(e);return t===`ENOSPC`||t===`EDQUOT`?{status:507,type:`urn:ok:error:storage-full`,title:`Could not duplicate path because storage is full.`}:t===`EPERM`||t===`EACCES`||t===`EROFS`?{status:500,type:`urn:ok:error:storage-readonly`,title:`Could not duplicate path because storage is not writable.`}:null}function QW(e,t){return $W(e,t)!==null}function $W(e,t){if(Lx(t))return B(z(e,t))?t:null;for(let n of yi)if(B(z(e,`${t}${n}`)))return`${t}${n}`;return null}function eG(e,t){if(!Lx(t))return!1;let n=zx(t),r=Bc(t).toLowerCase();return yi.some(t=>t.toLowerCase()===r?!1:B(z(e,`${n}${t}`)))}function tG(e,t){let n=zx(t);return Lx(t)&&eG(e,t)?t:n}function nG(e,t,n){if(!RW(t))throw Error(`path must be a relative content path`);let r=z(e),i=z(r,`${t}${n}`);if(i!==r&&!i.startsWith(`${r}${Wc}`))throw Error(`path must not escape content directory`);return WW(i,r),i}function rG(e,t){let{parent:n,basename:r}=KW(t);for(let t=1;t<=1e4;t+=1){let i=qW(n,JW(r,t));if(!QW(e,i))return{docName:i,attempt:t}}throw new YW(t)}function iG(e,t){let{parent:n,basename:r}=KW(t);for(let t=1;t<=1e4;t+=1){let i=qW(n,JW(r,t));if(!B(GW(e,`folder`,i)))return{folderPath:i,attempt:t}}throw new YW(t)}function aG(e,t){let n=GW(e,`folder`,t),r=[];function i(t,n){for(let a of al(t,{withFileTypes:!0})){let o=z(t,a.name),s=n?`${n}/${a.name}`:a.name;if(a.isDirectory()){i(o,s);continue}!a.isFile()||!Lx(s)||r.push({docName:tG(e,s),fullPath:o,content:V(o,`utf-8`)})}}return i(n,t),r.sort((e,t)=>e.docName.localeCompare(t.docName)),r}function oG(e,t){let n=GW(e,`folder`,t),r=[t];function i(e,t){for(let n of al(e,{withFileTypes:!0})){if(!n.isDirectory())continue;let a=z(e,n.name),o=t?`${t}/${n.name}`:n.name;r.push(o),i(a,o)}}return i(n,t),r.sort((e,t)=>e.localeCompare(t)),r}function sG(e,t){if(!RW(t))return;let n=z(e);if(Lx(t)){let e=zx(t);for(let t of yi){let r=z(n,`${e}${t}`);r!==n&&!r.startsWith(`${n}${Wc}`)||B(r)&&Ux(e,t)}let r=z(n,t);r!==n&&r.startsWith(`${n}${Wc}`)&&B(r)&&Ux(e,Bc(t));return}for(let e of yi){let r=z(n,`${t}${e}`);if(!(r!==n&&!r.startsWith(`${n}${Wc}`))&&B(r)){Ux(t,e);return}}}function cG(e,t){let n=z(e),r=z(t);return r!==n&&!r.startsWith(`${n}${Wc}`)?null:R(n,r).split(Wc).join(`/`)}function lG(e,t){return e!==t&&e.toLowerCase()===t.toLowerCase()}function uG(e,t){return lG(z(e),z(t))}function dG(e,t){if(!uG(e,t)||!B(e)||!B(t))return!1;try{let n=dl(e),r=dl(t);return n.dev===r.dev&&n.ino===r.ino}catch{return!1}}function fG(e){let t=zc(e);for(let e=0;e<10;e+=1){let e=z(t,`.ok-case-rename-${Ll()}`);if(!B(e))return e}throw Error(`Unable to allocate temporary path for case-only rename`)}function pG(e,t){(B(e)?V(e,`utf-8`):null)!==t&&_o(e,t,`utf-8`)}function mG(e,t){if(so(zc(t),{recursive:!0}),!uG(e,t)){eo(e,t);return}let n=fG(e);eo(e,n);try{eo(n,t)}catch(t){try{let t=B(n),r=B(e);t&&!r?eo(n,e):Y.warn({tempExists:t,sourceExists:r},`[renamePathOnDisk] skipped case-only rollback due to unexpected state`)}catch(e){Y.warn({err:e},`[renamePathOnDisk] failed to roll back temporary case-only rename`)}throw t}}async function hG(e,t,n){if(!e)return!1;let r=cG(e,t),i=cG(e,n);return!r||!i?!1:await Mo(async()=>{let a=jo({baseDir:e,timeout:{block:15e3}}),o=``;try{o=(await a.raw(`ls-files`,`--`,r)).trim()}catch(e){return Y.warn({err:e},`[renameTrackedPathInGit] git ls-files failed, falling back to fs rename`),!1}if(!o)return!1;el(zc(n),{recursive:!0});let s=!1;try{if(uG(t,n)){let n=cG(e,fG(t));if(!n)return!1;await a.raw(`mv`,`--`,r,n);try{await a.raw(`mv`,`--`,n,i)}catch(e){try{await a.raw(`mv`,`--`,n,r)}catch(e){Y.warn({err:e},`[renameTrackedPathInGit] case-only git rename failed and rollback also failed; git index and disk may have diverged`),s=!0}throw e}}else await a.raw(`mv`,`--`,r,i);return!0}catch(e){if(s)throw e;return Y.warn({err:e},`[renameTrackedPathInGit] git mv failed, falling back to fs rename`),!1}})}const gG=new Map;function _G(e){let{body:t}=cn(e),n=[],r=new Map,i=Hn();for(let e of t.split(`
1216
1216
  `)){if(i(e))continue;let t=e.match(/^(#{1,6})\s+(.+)$/);if(t){let e=t[2].trim(),i=Bn(e,r);i&&n.push({level:t[1].length,text:e,slug:i})}}return n}function vG(e){return!(e.includes(`..`)||e.startsWith(`/`)||e.includes(`\0`)||e.includes(`\\`))}function yG(e,t){let n=t();n instanceof Map&&fR(e,n)}function bG(e){let{durabilityState:t}=e,{hocuspocus:n,sessionManager:a,contentDir:s,serverInstanceId:c,getFileIndex:p,getAttachmentFolderPath:m,getAllFilesIndex:h=p,mutateFileIndex:y=e=>yG(e,h),getFileIndexGeneration:b,getFolderIndex:ie,onReferencedAssetsCacheInvalidator:le,getAliasMap:ue,getFolderAliasIndex:fe,rescanFiles:me,enableTestRoutes:ge=!1,shadowRef:be,flushGitCommit:xe,flushContributors:Ae,getCurrentBranch:je,getDiskAckSVs:Fe,contentRoot:Ie,backlinkIndex:Le,tagIndex:ze,signalChannel:We,agentFocusBroadcaster:Ze,agentPresenceBroadcaster:nt,onAgentWrite:rt,getSyncEngine:it,localOpCliArgs:ct=[`open-knowledge`],projectDir:pt,getPrincipal:ht,homeDirOverride:gt,acpRegistry:vt,loadAcpCustomAgents:yt,acpHarnessAvailability:wt=Oie(),contentFilter:Tt,installedAgentsProbe:jt,forceUnloadDocument:Ft,ready:Vt,recentlyRemovedDocs:Ut,serializeDoc:qt,evictManagedArtifactLkg:Xt,semanticSearch:$t,getSemanticSimilarityFloor:tn,embeddingsSecretsFile:nn,getLinterBaseConfig:an,ephemeral:sn=!1,linkPreviewFetch:un,getLinkPreviewsEnabled:dn}=e,mn=fB(),gn=new Map,_n=WH(),vn=null;function yn(){let e=ie?.();return e instanceof Map?e:null}function bn(e){let t=yn();if(t)try{rR(t,s,e,dl(e),e)}catch(t){Y.warn({path:e,err:t},`folder index stat failed for ${e}`)}}function Cn(e){let t=e.split(`/`).filter(Boolean);for(let e=1;e<=t.length;e+=1)bn(z(s,t.slice(0,e).join(`/`)))}function wn(e){let t=yn();t&&iR(t,e)}function Tn(e,t){let n=yn();if(!n)return;let r=[];for(let[i,a]of n.entries()){if(i!==e&&!i.startsWith(`${e}/`))continue;n.delete(i);let o=i.slice(e.length);r.push([`${t}${o}`,a])}if(r.length===0){let e=GW(s,`folder`,t);B(e)&&bn(e);return}for(let[e,t]of r)n.set(e,{...t,modified:new Date().toISOString(),canonicalPath:z(s,e)})}function jn(e){return[...e.entries()].map(([e,t])=>`${e}\0${t.canonicalPath}\0${t.size}\0${t.modified}\0${t.aliases.join(`\0`)}`).sort().join(`
1217
1217
  `)}function Pn(){vn=null}le?.(Pn);let In=SA({probe:jt??EA(process.platform)});function Rn(e){if(Te(e))try{return KB(e,{projectDir:pt??s,homedirOverride:gt})}catch{return null}if(!vG(e))return null;let t=z(s),n=z(t,Gx(e));return ME(n,t)?n:null}function zn(e){let t=Rn(e);if(!t||!B(t))return e;try{return aP(V(t,`utf-8`),e)}catch{return e}}function Bn(e,t){return t.has(e)?zn(e):e}let Hn={cluster:void 0,category:void 0,tags:void 0};function Un(e){try{let t=n.documents.get(e);if(t){let e=dee(t.getText(`source`).toString());if(Object.keys(e).length>0){let t=typeof e.cluster==`string`?e.cluster:void 0,n=typeof e.category==`string`?e.category:void 0,r;if(Array.isArray(e.tags)){let t=e.tags.filter(e=>typeof e==`string`);r=t.length>0?t:void 0}else typeof e.tags==`string`&&e.tags&&(r=[e.tags]);return{cluster:t,category:n,tags:r}}}}catch{}try{let t=Rn(e);if(!t||!B(t))return Hn;let{frontmatter:n}=cn(V(t,`utf-8`));return n?dae(n):Hn}catch{return Hn}}function Wn(e,t){return t.has(e)?Un(e):Hn}function Kn(e){if(Le)try{if(Le.getBacklinks(e).length>0)return;let t=performance.now(),n=nj(e,p()),r=performance.now()-t;return r>5&&Y.debug({docName:e,elapsedMs:r,candidateCount:n.length},`[orphan-hint] findHubCandidates slow`),n.length===0?void 0:[{type:`orphan`,parentCandidates:n,message:`This doc has no backlinks yet. To make it discoverable, consider linking from a parent hub doc (index/overview files in the folder tree): ${n.map(e=>`[[${e}]]`).join(`, `)}.`}]}catch(e){Y.warn({err:e},`[orphan-hint] computeOrphanHints failed`);return}}function Jn(e){return ue?.().get(e)??e}function Yn(e){try{return n.documents.get(e)?.connections.size??0}catch{return 0}}function Qn(){try{return n.documents.get(`__system__`)?.connections.size??0}catch{return 0}}function $n(e,t){let r=`onStoreDocument-${e}`;(n.debouncer.isDebounced(r)?n.debouncer.executeNow(r):Promise.resolve()).then(()=>xe?.()).catch(e=>{Y.warn({err:e},`[${t}] post-write flush failed`)})}function nr(e,t){let r=`onStoreDocument-${e}`;n.debouncer.isDebounced(r)&&n.debouncer.executeNow(r).catch(e=>{Y.warn({err:e},`[${t}] post-write disk flush failed`)})}async function rr(e){let r=`onStoreDocument-${e}`;n.debouncer.isDebounced(r)&&(t.markAgentWriteStore(e),await n.debouncer.executeNow(r));let i=t.takeStoreFailure(e);return i?{kind:`failure`,failure:i}:t.takeStoreDivergence(e)?{kind:`divergence`}:null}function ir(e,t,n){let r=rI({code:t.code});G(e,nI(r),r,`Write applied in memory but failed to persist to disk (${t.code??`unknown error`}): ${t.message}. The content was NOT saved and will be lost if the server restarts.`,{handler:n})}function ar(e,t){G(e,409,`urn:ok:error:disk-divergence`,`The document changed on disk after your edit was prepared; your edit was NOT applied, to avoid overwriting the newer on-disk content. Re-read the document and retry.`,{handler:t})}function cr(e){if(e.reconciled)return{kind:`disk-edit-reconciled`,intendedBytes:e.baseBytes,actualBytes:e.diskBytes,byteDelta:e.diskBytes-e.baseBytes,...e.mergeOutcome?{mergeOutcome:e.mergeOutcome}:{},hint:e.mergeOutcome===`merged`?'An out-of-band edit was three-way merged into this document before your edit was applied on top; the merge may have interleaved content blocks. Re-read it (e.g. `exec("cat <path>")`) and review the combined result carefully before continuing.':'An out-of-band edit was reconciled into this document before your edit was applied on top; the document now reflects that edit plus yours. Re-read it (e.g. `exec("cat <path>")`) to see the combined result before continuing.'}}function lr(e){if(!Tt)return!1;let t=Gx(e);return Tt.isExcluded(t)}function hr(){let e=new Set;for(let[t,n]of p()){e.add(t);for(let t of n.aliases)e.add(t)}try{for(let t of[`project`,`global`]){let n=z(t===`global`?Cs:s,`.ok`,`skills`);for(let r of Ps(n,t).skills)e.add(`${ur}${t}/${r.name}`)}for(let t of YD(z(s)).templates)e.add(ks(t.source_folder,t.name))}catch(e){Y.warn({err:e},`[collectAdmittedDocNames] managed-artifact enumeration failed`)}for(let t of Le?.getIndexedDocNames()??[])e.has(t)||lr(t)||e.add(t);return e}let gr=e=>B(z(s,e));function wr(e,t){lr(e)||y?.({kind:p().has(e)?`update`:`create`,path:GW(s,`file`,e),docName:e,content:t})}function Er(){let e=Promise.resolve();return async function(t){let n=e,r=()=>{};e=new Promise(e=>{r=e}),await n;try{return await t()}finally{r()}}}let Dr=Er(),Or=e=>e.endsWith(`.`)?e:`${e}.`;function jr(e){return e instanceof Error?e instanceof Jj?{status:404,type:`urn:ok:error:doc-not-found`,error:Or(e.message)}:e instanceof Yj?{status:409,type:`urn:ok:error:doc-already-exists`,error:Or(e.message)}:e instanceof Xj||e instanceof Zj?{status:400,type:`urn:ok:error:invalid-request`,error:Or(e.message)}:e instanceof Qj?{status:400,type:`urn:ok:error:reserved-doc-name`,error:Or(e.message)}:e instanceof nM||e instanceof tM?{status:404,type:`urn:ok:error:doc-not-found`,error:Or(e.message)}:e instanceof $j?{status:400,type:`urn:ok:error:path-escape`,error:Or(e.message)}:e instanceof eM?{status:503,type:`urn:ok:error:backlink-index-not-configured`,error:Or(e.message)}:{status:500,type:`urn:ok:error:internal-server-error`,error:`Failed to rename document.`}:{status:500,type:`urn:ok:error:internal-server-error`,error:`Failed to rename document.`}}async function Mr(e,r){let i=new Map;for(let t of e){let e=n.documents.get(t);e&&i.set(t,e.getText(`source`).toString())}for(let t of e){let e=n.documents.get(t);e&&e.getMap(`lifecycle`).set(`status`,r)}for(let t of e)await a.closeAllForDoc(t).catch(e=>{Y.warn({docName:t,err:e},`[file-ops] Failed to close agent session for ${t}`)});for(let r of e){let e=n.documents.get(r);t.deleteReconciledBase(r),Xt?.(r),e&&(n.closeConnections(r),await(Ft??n.unloadDocument.bind(n))(e))}return i}function Nr(e,t){for(let{fromDocName:n,toDocName:r}of e){let e=NE(r,s),i=t.get(n);typeof i==`string`&&pG(e,i);let a=typeof i==`string`?i:B(e)?V(e,`utf-8`):null;typeof a==`string`&&HL(e,WL(a))}}function Ir(e,t){return e.map(e=>{let n=t.get(e);if(typeof n==`string`)return{docName:e,content:n};let r=NE(e,s);if(!B(r))throw new tM(e);return{docName:e,content:V(r,`utf-8`)}})}function Lr(e){let t=n.documents.get(e);if(t)return t.getText(`source`).toString();let r=GW(s,`file`,e);return B(r)?V(r,`utf-8`):null}function Rr(e,n){let r=GW(s,`file`,e);so(zc(r),{recursive:!0}),pG(r,n),HL(r,WL(n)),t.setReconciledBase(e,n),y?.({kind:`update`,path:r,docName:e,content:n})}function Hr(e,t,r=[]){let i=n.documents.get(e);if(!i)throw Error(`Document is not loaded: ${e}`);let a={markdown:``,rewrites:0};return i.transact(()=>{a=Gr(i.getText(`source`).toString(),e,t.get(e)??e,t,r),a.rewrites!==0&&cx(i,a.markdown,`managed-rename`,!1)},fW),a}function Ur(e,t,n){let r=e,i=0;for(let{fromPath:e,toPath:a}of n){let n=Wj(r,t,e,a);r=n.markdown,i+=n.rewrites}return{markdown:r,rewrites:i}}function Gr(e,t,n,r,i){let a=aM(e,t,r),o=Ur(a.markdown,n,i);return{markdown:o.markdown,rewrites:o.markdown===e?0:a.rewrites+o.rewrites}}function qr(e,t){let r=n.documents.get(e);if(!r)throw Error(`Document is not loaded: ${e}`);let i={markdown:``,rewrites:0};return r.transact(()=>{i=Ur(r.getText(`source`).toString(),e,t),i.rewrites!==0&&cx(r,i.markdown,`managed-rename`,!1)},fW),i}function Jr(e){let t=[];if(e.length===0)return t;let n=[...p().keys()].sort((e,t)=>e.localeCompare(t));for(let r of n){let n=Lr(r);if(typeof n!=`string`)continue;let i=Ur(n,r,e);i.rewrites!==0&&t.push({docName:r,markdown:i.markdown,rewrites:i.rewrites})}return t}function Qr(e){let t=it?.(),r=new Set(t?t.getConflicts().map(e=>e.file):[]);for(let t of e){let e=n.documents.get(t),i=Gx(t),a=e!==void 0&&tS(e),o=r.has(i);if(a||o)throw new rS({file:i})}}function ni(e,t){let r=[];for(let i of e){let e=n.documents.get(i.docName)?qr(i.docName,t):i;e.rewrites!==0&&(Rr(i.docName,e.markdown),Le?.updateDocumentFromMarkdown(i.docName,e.markdown),r.push({docName:i.docName,rewrites:e.rewrites}))}return r}function ri(e){if(Bc(e))return{path:e,ambiguous:!1};let t=e.lastIndexOf(`/`),n=t===-1?``:e.slice(0,t),r=t===-1?e:e.slice(t+1),i=n?GW(s,`folder`,n):s,a;try{a=al(i,{withFileTypes:!0})}catch(t){let n=Qo(t);if(n===`ENOENT`||n===`ENOTDIR`)return{path:e,ambiguous:!1};throw t}let o=a.filter(e=>e.isFile()&&e.name.startsWith(`${r}.`)).map(e=>n?`${n}/${e.name}`:e.name).filter(e=>Rx(e,Xi));return o.length===1?{path:o[0],ambiguous:!1}:{path:e,ambiguous:o.length>1}}function ii(e){let t=[];try{if(!dl(e).isDirectory())return t}catch(e){let n=Qo(e);if(n===`ENOENT`||n===`ENOTDIR`)return t;throw e}function n(e){for(let r of al(e,{withFileTypes:!0})){let i=z(e,r.name),a=R(s,i).split(Wc).join(`/`);if(zW(a))continue;if(r.isDirectory()){if(Tt?.isDirExcluded(a))continue;n(i);continue}if(!r.isFile()||!Lx(a)||Tt?.isExcluded(a))continue;let o=tG(s,a);Ux(zx(a),Bc(a)),t.push(o)}}return n(e),t.sort((e,t)=>e.localeCompare(t)),t}function oi(e,t,n){let r=[];function i(e){for(let a of al(e,{withFileTypes:!0})){let o=z(e,a.name),c=R(s,o).split(Wc).join(`/`);if(!zW(c)){if(a.isDirectory()){if(Tt?.isDirExcluded(c))continue;i(o);continue}!a.isFile()||Lx(c)||Tt?.isExcluded(c)||(c===t?r.push({fromPath:c,toPath:n}):c.startsWith(`${t}/`)&&r.push({fromPath:c,toPath:`${n}${c.slice(t.length)}`}))}}}return i(e),r.sort((e,t)=>e.fromPath.localeCompare(t.fromPath)),r}async function si(e,t){return Dr(async()=>Ya(`rename.executeAssetRewrites`,{attributes:{"rename.kind":`asset`}},async n=>{if(!Le)throw new eM;let r=Bc(t)?t:`${t}${Bc(e)}`;if(zW(e)||zW(r))throw new Qj(`.ok and .git are reserved directories.`);if(Tt?.isPathIgnored(r))throw new Zj(`Destination asset is excluded by the project content config.`);let i=GW(s,`folder`,e),a=GW(s,`folder`,r);if(i===a)return{renamedAssets:[],rewrittenDocs:[]};if(lG(e,r))throw new Zj(`Case-only renames are not supported.`);if(!B(i))throw new Jj(`asset`,`Asset does not exist.`);if(B(a))throw new Yj;if(!dl(i).isFile())throw new Xj(`asset`,`Source path is not an asset file.`);let o=[{fromPath:e,toPath:r}],c=Jr(o);n.setAttribute(`rename.rewrite_candidates`,c.length),Qr(c.map(e=>e.docName)),await hG(pt,i,a)||mG(i,a);let l=ni(c,o);return Le.saveToDisk().catch(t=>{Y.warn({fromPath:e,toPath:r,err:t},`[backlinks] Failed to persist asset rename cache for ${e} -> ${r}`)}),We?.(`files`),l.length>0&&(We?.(`backlinks`),We?.(`graph`)),l.sort((e,t)=>e.docName.localeCompare(t.docName)),n.setAttribute(`rename.rewrite_count`,l.length),{renamedAssets:o,rewrittenDocs:l}}))}async function ci(e,r){return Dr(async()=>Ya(`rename.executeDocumentToFileRewrites`,{attributes:{"rename.kind":`asset`,"rename.transition":`document-to-file`}},async i=>{if(!Le)throw new eM;if(!Lx(e)||Lx(r))throw new Zj(`Document-to-file rename requires a markdown source and non-markdown destination.`);let a=zx(e);if(kx(a)||Ax(a))throw new Qj(`Reserved document names cannot be renamed.`);if(zW(e)||zW(r))throw new Qj(`.ok and .git are reserved directories.`);if(Tt?.isPathIgnored(r))throw new Zj(`Destination file is excluded by the project content config.`);let o=GW(s,`folder`,e),c=GW(s,`folder`,r);if(o===c)return{renamedAssets:[],rewrittenDocs:[]};if(lG(e,r))throw new Zj(`Case-only renames are not supported.`);if(!B(o))throw new Jj(`file`);if(B(c))throw new Yj;if(!dl(o).isFile())throw new Xj(`file`,`Source path is not a document file.`);let l=it?.(),u=new Set(l?l.getConflicts().map(e=>e.file):[]),d=n.documents.get(a);if(d!==void 0&&tS(d)||u.has(e))throw new rS({file:e});let f=[{fromPath:e,toPath:r}],p=Jr(f).filter(e=>e.docName!==a);i.setAttribute(`rename.rewrite_candidates`,p.length),Qr(p.map(e=>e.docName)),PL(t,n,a,s),Ut&&!kx(a)&&!Ax(a)&&Ut.setDeleted(a);let m=(await Mr([a],`renamed`)).get(a),h=typeof m==`string`?m:V(o,`utf-8`),g=nV({fromPath:e,toPath:r,affectedDocs:[{from:a,to:a}],snapshots:[{docName:a,content:h}],cleanupPaths:[r]}),_=[];return await pV(pt??s,g,async()=>{pG(o,h),HL(o,WL(h)),await hG(pt,o,c)||mG(o,c),Le.deleteDocument(a),Kx(a),y?.({kind:`delete`,path:o,docName:a});let t=dl(c);y?.({kind:`file-create`,path:c,relativePath:r,size:t.size,modifiedTs:t.mtimeMs,inode:t.ino}),_=ni(p,f),Le.saveToDisk().catch(t=>{Y.warn({fromPath:e,toPath:r,err:t},`[backlinks] Failed to persist document-to-file rename cache for ${e} -> ${r}`)}),We?.(`files`),_.length>0&&(We?.(`backlinks`),We?.(`graph`))}),_.sort((e,t)=>e.docName.localeCompare(t.docName)),i.setAttribute(`rename.rewrite_count`,_.length),{renamedAssets:f,rewrittenDocs:_}}))}async function li(e,r,i,a){return Dr(async()=>Ya(`rename.executeRewrites`,{attributes:{"rename.kind":i}},async o=>{if(!Le)throw new eM;let c=GW(s,i,e),l=GW(s,i,r);if(c===l)return{renamed:[],renamedAssets:[],rewrittenDocs:[]};if(!B(c))throw new Jj(i);if(B(l)&&!dG(c,l))throw new Yj;let u=dl(c);if(i===`file`&&!u.isFile()||i===`folder`&&!u.isDirectory())throw new Xj(i);let d=i===`folder`?oi(c,e,r):[];o.setAttribute(`rename.affected_assets`,d.length);let f=(i===`file`?[tG(s,e)]:ii(c)).map(t=>({from:t,to:i===`file`?tG(s,r):HW(t,i,e,r)}));if(o.setAttribute(`rename.affected_docs`,f.length),f.length===0){let t=Jr(d);Qr(t.map(e=>e.docName));let n=[];return i===`folder`&&(await hG(pt,c,l)||mG(c,l),Tn(e,r),We?.(`files`)),n.push(...ni(t,d)),n.length>0&&(Le.saveToDisk().catch(t=>{Y.warn({fromPath:e,toPath:r,err:t},`[backlinks] Failed to persist managed rename cache for ${e} -> ${r}`)}),We?.(`backlinks`),We?.(`graph`)),n.sort((e,t)=>e.docName.localeCompare(t.docName)),{renamed:[],renamedAssets:d,rewrittenDocs:n}}let m=rM(f),h=f.map(({from:e,to:t})=>({fromDocName:e,toDocName:t})),g=new Set;for(let{from:e}of f)for(let t of Le.getBacklinks(e))m.has(t.source)||g.add(t.source);let _=[...g].sort((e,t)=>e.localeCompare(t)),v=new Map,b=new Set,x=new Set,S=[];for(let e of[...m.keys(),..._]){if(v.has(e))continue;if(!m.has(e)&&!B(GW(s,`file`,e))){S.push(e);continue}PL(t,n,e,s);let r=Lr(e);typeof r==`string`?(v.set(e,r),m.has(e)||b.add(e)):m.has(e)||S.push(e)}if(d.length>0){let e=[...p().keys()].sort((e,t)=>e.localeCompare(t));for(let t of e){let e=v.get(t)??Lr(t);typeof e==`string`&&Gr(e,t,m.get(t)??t,m,d).rewrites!==0&&(v.has(t)||v.set(t,e),x.add(t),m.has(t)||b.add(t))}}Qr(x);for(let{from:e}of f)if(typeof v.get(e)!=`string`)throw new nM(e);let C=nV({fromPath:e,toPath:r,affectedDocs:[...f],snapshots:Ir([...v.keys()],v)}),w=[],T=[...b].sort((e,t)=>e.localeCompare(t));return await pV(pt??s,C,async()=>{for(let e of S)Le.deleteDocument(e);for(let e of T){let t=n.documents.get(e)?Hr(e,m,d):Gr(v.get(e)??``,e,e,m,d);t.rewrites>0&&(Rr(e,t.markdown),w.push({docName:e,rewrites:t.rewrites})),Le.updateDocumentFromMarkdown(e,t.markdown)}if(Ut)for(let{from:e,to:t}of f)kx(e)||Ax(e)||(Ut.setRenamed(e,t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,from:e,to:t,kind:`renamed`,source:`spine`})));let o=GW(s,i,e),c=GW(s,i,r);await hG(pt,o,c)||mG(o,c),i===`folder`&&Tn(e,r);let l=await Mr([...m.keys()],`renamed`);if(process.env.NODE_ENV===`test`&&process.env.OK_TEST_RENAME_FAULT===`pre-append`)throw Error(`OK_TEST_RENAME_FAULT=pre-append`);if(be?.current){let e=be.current,t=f.filter(({from:e,to:t})=>zx(e)!==zx(t));t.length>0&&Ga(`rename.appendLog`,{attributes:{"rename.kind":i}},n=>{let r=Ll(),o=new Date().toISOString(),s=je?.()??`main`,c=RV(e.gitDir),l=a?.actor?{writerId:a.actor.writerId,displayName:a.actor.displayName}:{writerId:fL.id,displayName:fL.name},u=0;for(let{from:n,to:d}of t){let t={v:1,from:n,to:d,at:o,commitSha:``,branch:s,groupId:r,kind:i,actor:l};NV(e.gitDir,t,c,e),u+=1,a?.actor?lk(d,a.actor.writerId,a.actor.displayName,a.actor.colorSeed,gu(n,d),a.actor.actorMetadata,void 0,[{from:n,to:d}]):lk(d,fL.id,fL.name,fL.id,gu(n,d),void 0,void 0,[{from:n,to:d}])}n.setAttribute(`rename.entries_appended`,u)})}let u=i===`file`&&Lx(r)?Bc(r):null;for(let{from:e,to:t}of f){let n=Lx(e)?Bc(e):Wx(e);Kx(e),Ux(t,u??n)}let p=[...f].sort((e,t)=>e.from.localeCompare(t.from));for(let{from:e,to:n}of p){let r=GW(s,`file`,e),i=GW(s,`file`,n),a=Gr(l.get(e)??v.get(e)??V(i,`utf-8`),e,n,m,d);Nr([{fromDocName:e,toDocName:n}],new Map([[e,a.markdown]])),t.setReconciledBase(n,a.markdown),y?.({kind:`rename`,oldPath:r,newPath:i,oldDocName:e,newDocName:n,content:a.markdown}),Le.renameDocument(e,n,a.markdown),a.rewrites>0&&w.push({docName:n,rewrites:a.rewrites})}if(process.env.NODE_ENV===`test`&&process.env.OK_TEST_RENAME_FAULT===`pre-journal-clear`)throw Error(`OK_TEST_RENAME_FAULT=pre-journal-clear`)}),Le.saveToDisk().catch(t=>{Y.warn({fromPath:e,toPath:r,err:t},`[backlinks] Failed to persist managed rename cache for ${e} -> ${r}`)}),We?.(`files`),We?.(`backlinks`),We?.(`graph`),w.sort((e,t)=>e.docName.localeCompare(t.docName)),o.setAttribute(`rename.rewrite_count`,w.length),{renamed:h,renamedAssets:d,rewrittenDocs:w}}))}function di(e){let t=Xm(e),n=t.writerId??`claude-1`;return{rawAgentId:t.rawAgentId,agentId:n,agentName:t.displayName,colorSeed:t.colorSeed??t.rawAgentId??n,clientName:t.clientName,clientVersion:t.clientVersion,label:t.label}}function pi(e){return{principalId:ht?.()?.id,agentType:Ym(e.clientName),clientName:e.clientName,clientVersion:e.clientVersion,label:e.label}}function mi(e){return e.kind===`value`?e.truncatedFrom===void 0?{response:{value:e.value},stored:e.value}:{response:{value:e.value,truncatedFrom:e.truncatedFrom,hint:`Summary truncated from ${e.truncatedFrom} chars to 80 (max 80).`},stored:e.value}:{stored:void 0}}function vi(e){return{value:e.value}}function wi(e,t=!1){e.kind===`value`&&($ne(),e.truncatedFrom!==void 0&&!t&&ere())}function Ti(e,t,n,r){if(n.length!==0)switch(e.kind){case`agent`:{let r=e.summary.kind===`value`,i=r?e.summary:kE(t),a=mi(i),o=r||!a.response?a.response:vi(a.response);for(let t=0;t<n.length;t++){let{docName:r,subject:i}=n[t];lk(r,e.writerId,e.displayName,e.colorSeed,i,e.actor,t===0?a.stored:void 0)}yx(),wi(i,!r);for(let{docName:e}of n)$n(e,`rename-path`);return o}case`principal`:{let t=mi(e.summary);for(let r=0;r<n.length;r++){let{docName:i,subject:a}=n[r];lk(i,e.writerId,e.displayName,e.colorSeed,a,e.actor,r===0?t.stored:void 0)}wi(e.summary,!1);for(let{docName:e}of n)$n(e,`rename-path`);return t.response}case`anonymous`:r.onAnonymous?.();return;default:{let t=e;throw Error(`Unhandled actor kind in ${r.context}: ${String(t.kind)}`)}}}function Ai(e,t,n){let r=t.replace(/\/$/,``),i=r===``?``:`${r}/`;return e===`template`?`${i}.ok/templates/${n}`:e===`skill`?`${i}.ok/skills/${n}`:e===`folder-frontmatter`?`${i}.ok/frontmatter`:r===``?`.`:r}function Mi(e,t,n,r){if(e.kind!==`agent`&&e.kind!==`principal`)return;let i=mi(e.summary);lk(t,e.writerId,e.displayName,e.colorSeed,n,e.actor,i.stored,r)}async function Pi(e){if(Ae)try{await Ae()}catch(t){Y.warn({context:e,err:t},`[${e}] flushContributors failed; attribution stays queued for the next flush`)}}let Fi=J(tee,async(r,i,o)=>{try{let r=UW(o.docName,i,`agent-write`);if(r===null)return;let c=Jn(r),{agentId:l,agentName:u,colorSeed:d,clientName:f,clientVersion:p,label:m}=di(o);if(kx(c)||Ax(c)){G(i,400,`urn:ok:error:reserved-doc-name`,`'${c}' is a reserved document name.`,{handler:`agent-write`});return}let h=kE(o.summary),g=await a.getSession(c,l,{displayName:u,colorSeed:d,clientName:f}),_=PL(t,n,c,s,e.resolveEmbed),v=new Date().toISOString(),y=typeof o.content==`string`?o.content:`Hello from the agent! ${v}`,{response:b,stored:x}=mi(h);try{let t=Nn(f),n=An[t]??xr(d??l);nt?.setPresence(l,{displayName:u,icon:t,color:n,currentDoc:c,mode:`writing`,ts:Date.now()}),TE(g.dc.document.getText(`source`),l,d,f),g.dc.document.transact(()=>{let t=zS(g.dc.document);RS(g.dc.document,`${y}\n`,`append`,e.resolveEmbed?{resolveEmbed:e.resolveEmbed,sourcePath:c}:void 0);let n=Jt(t,zS(g.dc.document))??void 0;g.dc.document.getMap(`agent-flash`).set(l,{agentId:l,timestamp:Date.now(),type:`insert`,description:`Added (${u}): ${y.slice(0,50)}`,...n===void 0?{}:{changedBlocks:n}})},g.origin),lk(c,l,u,d,void 0,pi({clientName:f,clientVersion:p,label:m}),x),yx(),wi(h)}finally{nt?.touchMode(l,`idle`)}let S=await rr(c);if(S?.kind===`failure`){ir(i,S.failure,`agent-write`);return}if(S?.kind===`divergence`){ar(i,`agent-write`);return}nr(c,`agent-write`),rt?.();let C=cr(_);q(i,200,ve,{timestamp:v,...b?{summary:b}:{},...C?{warning:C,warnings:[C]}:{}},{handler:`agent-write`})}catch(e){if(e instanceof rS){iS(i,e,`agent-write`);return}if(e instanceof cS){uS(i,e,`agent-write`);return}if(e instanceof qS){G(i,503,`urn:ok:error:too-many-agent-sessions`,`Too many agent sessions.`,{handler:`agent-write`,cause:e,extraHeaders:{"Retry-After":`10`}});return}Y.error({err:e,requestId:Yx(r)},`[agent-write] handler failed`),G(i,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`agent-write`,cause:e})}},{handler:`agent-write`,method:`POST`}),Ii=J(Ce,async(r,i,o)=>{try{let r=o.position??`append`,c=UW(o.docName,i,`agent-write-md`);if(c===null)return;let l=Jn(c),{agentId:u,agentName:d,colorSeed:f,clientName:p,clientVersion:m,label:h}=di(o);if(kx(l)||Ax(l)){G(i,400,`urn:ok:error:reserved-doc-name`,`'${l}' is a reserved document name.`,{handler:`agent-write-md`});return}o.extension!==void 0&&!QW(s,l)&&Ux(l,o.extension);let g=kE(o.summary),{response:_,stored:v}=mi(g),y=await a.getSession(l,u,{displayName:d,colorSeed:f,clientName:p}),b=PL(t,n,l,s,e.resolveEmbed),x=e.resolveEmbed?{resolveEmbed:e.resolveEmbed,sourcePath:l}:void 0,S=await LS(y.dc.document,o.markdown,r,x),C=new Date().toISOString(),w;try{let e=Nn(p),t=An[e]??xr(f??u);nt?.setPresence(u,{displayName:d,icon:e,color:t,currentDoc:l,mode:`writing`,ts:Date.now()}),TE(y.dc.document.getText(`source`),u,f,p),y.dc.document.transact(()=>{let e=zS(y.dc.document);w=RS(y.dc.document,o.markdown,r,x,S);let t=Jt(e,zS(y.dc.document))??void 0;y.dc.document.getMap(`agent-flash`).set(u,{agentId:u,timestamp:Date.now(),type:`insert`,description:`Added (${d}): ${o.markdown.trim().slice(0,50)}`,...t===void 0?{}:{changedBlocks:t}})},y.origin),w!==void 0&&console.warn(JSON.stringify({event:`agent-write-content-divergence`,"doc.name":l,position:r,intendedBytes:w.intendedBytes,actualBytes:w.actualBytes,byteDelta:w.byteDelta,"agent.id":u,"agent.client_name":p})),cW(`agent-write-md`,w),lk(l,u,d,f,void 0,pi({clientName:p,clientVersion:m,label:h}),v),yx(),wi(g)}finally{nt?.touchMode(u,`idle`)}let T=await rr(l);if(T?.kind===`failure`){ir(i,T.failure,`agent-write-md`);return}if(T?.kind===`divergence`){ar(i,`agent-write-md`);return}nr(l,`agent-write-md`),Ze?.setFocus(u,{agentName:d,currentDoc:l,writeKind:`write`,ts:Date.now()}),rt?.();let ee=Kn(l),te=y.dc.document.getText(`source`).toString();wr(l,te);let ne=await $N(te,l),E=hr();E.add(l);let re=kI(te,l,E,gr),ie=Yn(l),ae=Qn();ae===0&&JU().add(1,{"shadow.writer":`agent`,"agent.type":Ym(p)});let oe=cr(b),se=w===void 0?void 0:sS(w),ce=[...se?[se]:[],...oe?[oe]:[],...ne??[],...await Kc(y.dc.document.getText(`source`).toString(),l)];q(i,200,zt,{timestamp:C,subscriberCount:ie,systemSubscriberCount:ae,...ee?{hints:ee}:{},..._?{summary:_}:{},...se?{warning:se}:oe?{warning:oe}:{},...ce.length>0?{warnings:ce}:{},brokenLinks:re},{handler:`agent-write-md`})}catch(e){if(e instanceof rS){iS(i,e,`agent-write-md`);return}if(e instanceof cS){uS(i,e,`agent-write-md`);return}if(e instanceof qS){G(i,503,`urn:ok:error:too-many-agent-sessions`,`Too many agent sessions.`,{handler:`agent-write-md`,cause:e,extraHeaders:{"Retry-After":`10`}});return}Y.error({err:e,requestId:Yx(r)},`[agent-write-md] handler failed`),G(i,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`agent-write-md`,cause:e})}},{handler:`agent-write-md`,method:`POST`}),Bi=J(_,async(r,i,o)=>{try{let{agentId:c,agentName:l,colorSeed:u,clientName:d,clientVersion:f,label:p}=di(o),m=new Date().toISOString(),h=(e,t,n,r)=>({status:`error`,docName:e,error:{type:t,title:n,...r===void 0?{}:{detail:r}}}),g=(e,t)=>t instanceof rS?(console.warn(JSON.stringify({event:`doc-in-conflict-write-refused`,handler:`agent-write-batch`,"doc.name":e})),h(e,`urn:ok:error:doc-in-conflict`,`Document is in conflict.`,`The document is in a merge-conflict state. Call conflicts({ kind: "content" }) + resolve_conflict before retrying.`)):t instanceof cS?(console.warn(JSON.stringify({event:`frontmatter-malformed-write-refused`,handler:`agent-write-batch`,class:lS(t.parseError),"doc.name":e,parseError:t.parseError})),h(e,`urn:ok:error:frontmatter-malformed`,`Frontmatter YAML is malformed.`,t.parseError)):t instanceof qS?h(e,`urn:ok:error:too-many-agent-sessions`,`Too many agent sessions.`):(Y.error({err:t,docName:e,requestId:Yx(r)},`[agent-write-batch] entry failed`),h(e,`urn:ok:error:internal-server-error`,`Internal server error.`)),_=Array(o.docs.length),v=[];try{let r=Nn(d),i=An[r]??xr(u??c);nt?.setPresence(c,{displayName:l,icon:r,color:i,currentDoc:Jn(o.docs[0].docName),mode:`writing`,ts:Date.now()});for(let r=0;r<o.docs.length;r++){let i=o.docs[r],m=Jn(i.docName);if(kx(m)||Ax(m)){_[r]=h(m,`urn:ok:error:reserved-doc-name`,`'${m}' is a reserved document name.`);continue}try{i.extension!==void 0&&!QW(s,m)&&Ux(m,i.extension);let o=kE(i.summary),{response:h,stored:g}=mi(o),_=await a.getSession(m,c,{displayName:l,colorSeed:u,clientName:d}),y=PL(t,n,m,s,e.resolveEmbed),b=e.resolveEmbed?{resolveEmbed:e.resolveEmbed,sourcePath:m}:void 0,x=await LS(_.dc.document,i.markdown,i.position??`append`,b),S;TE(_.dc.document.getText(`source`),c,u,d),_.dc.document.transact(()=>{let e=zS(_.dc.document);S=RS(_.dc.document,i.markdown,i.position??`append`,b,x);let t=Jt(e,zS(_.dc.document))??void 0;_.dc.document.getMap(`agent-flash`).set(c,{agentId:c,timestamp:Date.now(),type:`insert`,description:`Added (${l}): ${i.markdown.trim().slice(0,50)}`,...t===void 0?{}:{changedBlocks:t}})},_.origin),cW(`agent-write-batch`,S),lk(m,c,l,u,void 0,pi({clientName:d,clientVersion:f,label:p}),g),yx(),wi(o);let C=cr(y),w=[...S===void 0?[]:[sS(S)],...C?[C]:[]];v.push({index:r,docName:m,session:_,summaryResponse:h,warnings:w})}catch(e){_[r]=g(m,e)}}let m=new Map;for(let e of v){if(m.has(e.docName))continue;let t=await rr(e.docName);if(t?.kind===`failure`){let n=rI({code:t.failure.code});m.set(e.docName,{type:n,title:`Write applied in memory but failed to persist to disk.`,detail:`${t.failure.code??`unknown error`}: ${t.failure.message}. The content was NOT saved and will be lost if the server restarts.`})}else t?.kind===`divergence`?m.set(e.docName,{type:`urn:ok:error:disk-divergence`,title:`The document changed on disk after your edit was prepared; your edit was NOT applied. Re-read the document and retry.`}):m.set(e.docName,void 0)}let y=hr();for(let e of v)m.get(e.docName)===void 0&&y.add(e.docName);let b;for(let e of v){let t=m.get(e.docName);if(t!==void 0){_[e.index]={status:`error`,docName:e.docName,error:t};continue}let n=e.session.dc.document.getText(`source`).toString();wr(e.docName,n);let r=kI(n,e.docName,y,gr);_[e.index]={status:`written`,docName:e.docName,...e.summaryResponse?{summary:e.summaryResponse}:{},...e.warnings.length>0?{warnings:e.warnings}:{},brokenLinks:r},b=e.docName}b!==void 0&&(Ze?.setFocus(c,{agentName:l,currentDoc:b,writeKind:`write`,ts:Date.now()}),rt?.())}finally{nt?.touchMode(c,`idle`)}let y=_.map((e,t)=>e??h(o.docs[t].docName,`urn:ok:error:internal-server-error`,`Internal server error.`)),b=y.filter(e=>e.status===`written`).length;q(i,200,Gt,{timestamp:m,results:y,written:b,failed:y.length-b},{handler:`agent-write-batch`})}catch(e){Y.error({err:e,requestId:Yx(r)},`[agent-write-batch] handler failed`),G(i,500,`urn:ok:error:internal-server-error`,`Internal server error.`,{handler:`agent-write-batch`,cause:e})}},{handler:`agent-write-batch`,method:`POST`}),Hi=J(Xr,async(i,o,c)=>{try{let i=UW(c.docName,o,`frontmatter-patch`);if(i===null)return;let l=Jn(i),{agentId:u,agentName:d,colorSeed:f,clientName:p,clientVersion:m,label:h}=di(c);if(kx(l)||Ax(l)){G(o,400,`urn:ok:error:reserved-doc-name`,`'${l}' is a reserved document name.`,{handler:`frontmatter-patch`});return}let g=c.patch??{},_=Object.keys(g),v=kE(c.summary),{response:y,stored:b}=mi(v),x=await a.getSession(l,u,{displayName:d,colorSeed:f,clientName:p}),S=PL(t,n,l,s,e.resolveEmbed),C=await Qre(x.dc.document,g),w=new Date().toISOString(),T,ee=!1,te=!1,ne=[];try{let e=Nn(p),t=An[e]??xr(f??u);nt?.setPresence(u,{displayName:d,icon:e,color:t,currentDoc:l,mode:`writing`,ts:Date.now()}),Ga(`ok.frontmatter_patch`,{attributes:{"doc.name":l,"frontmatter_patch.keys":_.length}},()=>{x.dc.document.transact(()=>{let{fenced:e,body:t}=Vn(x.dc.document.getText(`source`).toString()),n=r(e,g);if(!n.ok){T=n.error;return}for(let e of Object.keys(g))ne.push(e);if(n.nextFenced!==e){let r=e===``&&t!==``&&!t.startsWith(`
1218
1218
  `),i=n.nextFenced+(r?`
@@ -3261,4 +3261,4 @@ native-divergence-injected
3261
3261
  `)){let r=n.trim();if(r===``)continue;if(r.startsWith(`C\0`)){let[,e,t]=r.split(`\0`);o=e&&t?{name:e,email:t}:null;continue}if(!o||!r.endsWith(`.md`)&&!r.endsWith(`.mdx`))continue;let a=z(e,r);if(!PE(a,t))continue;let s=tR(a,t);i.has(s)||B(a)&&i.set(s,o)}return i}function w9(e){C9();let{contentDir:t,projectDir:n=t,quiet:r=!0,debounce:i=2e3,maxDebounce:a=1e4,gitEnabled:o=!0,commitDebounceMs:s=3e4,wipRef:l=`refs/wip/main`,configHomedirOverride:u,enableTestRoutes:d=!1,shadowRepo:f,contentRoot:p,destroyTimeoutMs:m=1e4,localOpCliArgs:h,skipStateManifestCheck:g=!1,singleDocRelPath:_,ephemeral:v=!1}=e,y=I(`server`),b=new O5,x=()=>b.getActiveBranch(),S=e=>b.getReconciledBase(e),C=(e,t)=>b.setReconciledBase(e,t),w=e=>b.deleteReconciledBase(e),ee=e=>b.switchReconciledBaseScope(e),te=e=>b.setBatchInProgress(e),ne=()=>b.isBatchInProgress();function E(){let e=Wa({absPath:qa(`project`,n),sideline:!1,warn:e=>y.warn({message:e},`[config] could not read project config`)});if(!e.valid){let t=Da(e.error)&&e.error.code===`SCHEMA_INVALID`?e.error.issues.filter(e=>e.path.map(String).join(`.`)===`content.attachmentFolderPath`):[];if(t.length>0){let e=t.map(e=>e.message).join(`; `);throw Error(`Invalid content.attachmentFolderPath in project config: ${e}`)}y.warn({},`[config] committed content.attachmentFolderPath unavailable (project config invalid) — using default attachment placement`)}return e.value.content.attachmentFolderPath??`./`}function re(){let e=Wa({absPath:qa(`project-local`,n),sideline:!1,warn:e=>y.warn({message:e},`[config] could not read project-local config`)}),t=e.value.autoSync?.enabled;if(t!=null)return t===!0;e.valid||y.warn({},`[config] project-local autoSync.enabled unavailable (config invalid) — falling back to the committed project default`);let r=Wa({absPath:qa(`project`,n),sideline:!1,warn:e=>y.warn({message:e},`[config] could not read project config`)});return r.valid||y.warn({},`[config] committed autoSync.default unavailable (project config invalid) — defaulting to disabled`),r.value.autoSync?.default===!0}function ae(){let e=Wa({absPath:qa(`project`,n),sideline:!1,warn:e=>y.warn({message:e},`[config] could not read project config for linter`)}).value.contentRules;return e?Un(e):Wr}function oe(){return sA(n,{configHomedirOverride:u,onWarn:e=>y.warn({message:e},`[config] could not read project-local config`)})}function se(){let e=Wa({absPath:qa(`project-local`,n,u),sideline:!1,warn:e=>y.warn({message:e},`[config] could not read project-local config`)});return e.valid?e.value.linkPreviews?.enabled===!0:!1}function ce(e){return`${Jk(e.baseUrl)}|${e.model}|${e.dimensions??1536}`}function le(e){let t;(e===`__config__/project`||e===`__local__/project`)&&(t=re(),mt?.setEnabled(t).catch(n=>{y.warn({err:n,enabled:t,docName:e},`[sync] failed to apply autoSync.enabled from config`)}));let n=oe();je.applyConfig({enabled:n.enabled,providerFingerprint:ce(n)}),y.info({docName:e,autoSyncEnabled:t,semanticEnabled:n.enabled},`[config] applied persisted config to in-process consumers`)}yo();let de=Ll(),D=$E(n),fe=new Ou({localDir:D,log:I(`acp-registry`)}),pe=new xu(D,I(`acp-permissions`));if(Yo(D,{port:e.port??0,worktreeRoot:n,kind:e.lockKind??`interactive`,capabilities:[`http`,`ws`]}),!g)try{a9({lockDir:D,shadowRepoDir:eu(n)})}catch(e){throw Bo(D),e}let me=Qr(),he=(e,t)=>me.resolveEmbed(e,t),ge=(e,n)=>{let r=me.resolveEmbed(e,n);if(!r&&e.includes(`/`)&&(r=e.replace(/^\.?\//,``)),!r)return null;let i=z(t,r);if(!ME(i,z(t)))return null;try{let e=dl(i);return e.isFile()?e.size:null}catch{return null}},_e,ve,ye,be,xe,Se,Ce,we,Te=null,Ee=null,De=null,Oe=null,ke=null,Ae=oe(),je=new gA({loadEmbedder:e.embedderLoader??(()=>{let t=oe();return Qk({keyStore:e.embeddingsKeyStore??null,config:{baseUrl:t.baseUrl,model:t.model,dimensions:t.dimensions}})}),cacheDir:L($E(n),`embeddings`),enabled:Ae.enabled,providerFingerprint:ce(Ae)}),Me=null,Ne=new Set,Pe=!1,Fe=[],Ie,Le,Re,ze=new Promise((e,t)=>{Le=e,Re=t});function Be(e){Te?.signal(e)}let Ve=null;function He(){Ve!==null&&clearTimeout(Ve),Ve=setTimeout(()=>{Ve=null,ve.saveToDisk().catch(e=>{I(`backlinks`).warn({err:e},`Failed to persist debounced cache`)}),ye.saveToDisk().catch(e=>{I(`tag-index`).warn({err:e},`Failed to persist debounced tag snapshot`)})},2e3)}let Ue=null,We=!1,Ge=()=>{try{X7(n,Ke.entries())}catch(e){y.warn({err:e},`[removed-docs-journal] failed to persist removal journal`)}},Ke=new Bhe(void 0,{onEviction:()=>Ore(),onSizeChange:e=>kre(e),onMutate:()=>{!We||Ue!==null||(Ue=setTimeout(()=>{Ue=null,Ge()},2e3))}});for(let[e,r]of Uhe(n))Nx(e)||vG(e)&&([`.md`,`.mdx`].some(n=>{let r=z(t,`${e}${n}`);return ME(r,z(t))&&B(r)})||Ke.restore(e,r));We=!0;let qe=(e,t)=>{Nx(e)||Ke.setRenamed(e,t)},Je=e=>{if(!Nx(e)){if(Ke.peek(e)?.kind===`renamed`){console.info(JSON.stringify({event:`recently-removed-docs-unpaired-delete-suppressed`,docName:e,source:`watcher-delete`}));return}Ke.setDeleted(e)}},Ye=e=>{Nx(e)||Ke.delete(e)};try{_e=PM({projectDir:n,contentDir:t,singleDocRelPath:_,onAfterRebuild:()=>{ve.rebuildFromDisk(x()).catch(e=>{I(`server-factory`).warn({err:e},`[content-filter] backlink-index rebuild failed after onAfterRebuild`)}),ye.init().catch(e=>{I(`server-factory`).warn({err:e},`[content-filter] tag-index rebuild failed after onAfterRebuild`)}),CR(ft).then(({prunedFiles:e,prunedFolders:t})=>{let n=e+t;n>0?I(`server-factory`).info({pruned:n,prunedFiles:e,prunedFolders:t},`[content-filter] reconciled file indexes after onAfterRebuild`):I(`server-factory`).debug({prunedFiles:e,prunedFolders:t},`[content-filter] file index reconcile completed after onAfterRebuild (no entries pruned; rescan may have added entries)`)}).catch(e=>{I(`server-factory`).warn({err:e},`[content-filter] file index reconcile failed after onAfterRebuild`)})}}),ve=new AI({projectDir:n,contentDir:t,contentFilter:_e}),ye=new x9({projectDir:n,contentDir:t,contentFilter:_e}),(async()=>{await ye.loadFromDisk()?await ye.reconcileWithDisk():await ye.init()})().catch(e=>{I(`server-factory`).warn({err:e},`[server-factory] tag-index warm boot failed; continuing with empty index`)}),be={current:f},xe=o?Yme({getShadow:()=>be.current??null,getCurrentBranch:()=>pt?.getLastKnownBranch()??null,contentRoot:p??``,projectGitDir:$l(n)??void 0,isWriterLive:e=>{if(!De&&!we)return I(`server-factory`).debug({writerId:e},`[server-factory] isWriterLive called before liveness deps populated — treating writer as dead`),!1;if(De?.getPresenceMap()[e])return!0;let t=e.startsWith(`agent-`)?e.slice(6):e;for(let e of we?.sessionsForConnection(t)??[])return!0;return!1}}):void 0,Se=U7({contentDir:t,projectDir:n,gitEnabled:o,commitDebounceMs:s,wipRef:l,shadowRef:be,ephemeral:v,contentRoot:p,backlinkIndex:ve,configHomedirOverride:u,getCurrentBranch:()=>pt?.getLastKnownBranch()??null,resolveEmbed:he,resolveSize:ge,getPrincipal:()=>Me,onAgentCommit:()=>Te?.signal(`session-activity`),onFlushCommit:()=>xe?.noteFlushCommit(),onDiskFlush:(e,t,n,r)=>{Te?.emitDiskAck(e,t),!Nx(e)&&Kie(r,n)&&(Oe?.(),Be(`files`))},onConfigRejected:(e,t)=>Te?.emitConfigValidationRejected(e,t),onConfigPersisted:le,isRecentlyRemoved:e=>Ke.has(e),mdManager:e.mdManager,durabilityState:b}),Ce=new lme({quiet:r,debounce:i,maxDebounce:a,extensions:[Se.extension]});let c=Ce;Fe.push(yhe(()=>c.documents.size),bhe(()=>Se.getQueueDepths()),She(()=>{let e=0;for(let t of c.documents.values())e+=t.directConnectionsCount;return{websocket:c.getConnectionsCount()-e,direct:e}})),whe(),v||(ke=Rhe({getLoadedDocuments:()=>c.documents,forceStore:(e,t)=>Se.forceStore(e,t),getBase:e=>b.getReconciledBase(e),isBatchActive:()=>b.isBatchInProgress(),peekInFlight:e=>b.peekInFlightFlush(e),readDiskBytes:e=>{let n=NE(e,t),r,i;try{r=sl(n),i=dl(r).size}catch(t){let n=Qo(t);if(n===`ENOENT`)return null;throw n===`ELOOP`?new G7(`symlink cycle at content path: ${e}`):t}if(!PE(r,t))throw new G7(`symlink-escape: ${n} resolves outside the content dir`);if(i>524288)throw new G7(`document exceeds the open byte limit: ${e}`);try{return V(r,`utf-8`)}catch(e){if(Qo(e)===`ENOENT`)return null;throw e}},graceMs:e.stalenessGraceMs,sweepIntervalMs:e.stalenessSweepIntervalMs}));let m=Ce.shouldUnloadDocument.bind(Ce);Ce.shouldUnloadDocument=e=>{if(Ne.has(e)||Pe&&m(e))return!0;let t=e.name;return Nx(t)||S(t)!==void 0||e.getXmlFragment(`default`).length!==0||e.getText(`source`).length!==0?!1:m(e)},Ie=async e=>{Ne.add(e);try{await Ce.unloadDocument(e)}finally{Ne.delete(e)}},Te=new Ix(Ce),Ee=new hw(Ce),De=new gw(Ce),we=new YS(Ce);let g=we;Fe.push(Che(()=>({active:g.liveSessionCount,limit:g.sessionLimit})));let y=M5({backlinkIndex:ve,tagIndex:ye,signalChannel:Be});Ce.configuration.extensions.push(y),Ce.configuration.extensions.push({__kind:`principal-auth`,async onAuthenticate(e){let t=e.token,n=AG(t),r=n?.expectedServerInstanceId;if(typeof r==`string`&&r.length>0&&r!==de)throw new kG(`server-instance-mismatch`,`server instance mismatch: client claimed ${r}, this server is ${de}`);let i=n?.expectedBranch,a=x();if(typeof i==`string`&&i.length>0&&i!==a)throw new kG(`branch-mismatch`,`branch mismatch: client claimed ${i}, server is on ${a}`);if(!n)return;let o=e.context;typeof n.principalId==`string`&&(Me&&n.principalId===Me.id?o.principalId=Me.id:Me?console.warn(JSON.stringify({event:`principal-token-mismatch`,claimed:n.principalId,loaded:Me.id})):o.principalId=n.principalId),typeof n.tabSessionId==`string`&&(o.tabSessionId=n.tabSessionId),o.kind=`human`}}),Ce.configuration.extensions.push({__kind:`config-doc-admission-guard`,async onAuthenticate(e){if(!Ax(e.documentName)&&!jx(e.documentName))return;let t=e.request,n=t.socket?.remoteAddress;if(n!==void 0&&!zB(n))throw Error(`config-doc admission requires loopback peer (peer=${n}, doc=${e.documentName})`);let r=e.requestHeaders,i=(r&&typeof r.get==`function`?r.get(`host`):null)??t.headers?.host??void 0;if(!BB(i))throw Error(`config-doc admission requires loopback Host header (host=${i??`<absent>`}, doc=${e.documentName})`)}});let C=z(t);function w(e){if(!vG(e))return null;let t=z(C,Gx(e));return ME(t,C)?t:null}Ce.configuration.extensions.push({__kind:`removal-redirect-guard`,async onAuthenticate(e){await Vhe(e.documentName,{recentlyRemovedDocs:Ke,resolveFilePath:w,fileExists:B})}}),Ce.configuration.extensions.push({__kind:`doc-lineage-guard`,async onAuthenticate(e){let t=AG(e.token);Dme(e.documentName,t?.expectedDocLineageEpoch,{getLoadedDoc:e=>Ce.documents.get(e)})}}),Ce.configuration.extensions.push({__kind:`system-doc-broadcast-guard`,async beforeHandleMessage(e){if(e.documentName!==`__system__`)return;let t=new J8(e.update);if(t.readVarString(),t.readVarUint()===a5.BroadcastStateless)throw Error(`inbound BroadcastStateless on ${ue} rejected — server-only channel`)}});let T=bG({hocuspocus:Ce,durabilityState:b,sessionManager:we,contentDir:t,contentFilter:_e,serverInstanceId:de,getFileIndex:()=>ft?ft.getFileIndex():new Map,getAttachmentFolderPath:E,getAllFilesIndex:()=>ft?ft.getAllFilesIndex():new Map,getFileIndexGeneration:()=>ft?.getFileIndexGeneration()??0,mutateFileIndex:e=>ft?.mutateFileIndex(e),getFolderIndex:()=>ft?ft.getFolderIndex():new Map,getAliasMap:()=>ft?ft.getAliasMap():new Map,getFolderAliasIndex:()=>ft?ft.getFolderAliasIndex():new Map,rescanFiles:()=>ft?.rescanFromDisk(),enableTestRoutes:d,shadowRef:be,flushGitCommit:()=>Se.flushPendingGitCommit(),flushContributors:()=>Se.flushContributors(),getCurrentBranch:()=>pt?.getLastKnownBranch()??null,getDiskAckSVs:()=>Te?.getLatestDiskAckSVsAsBase64()??{},contentRoot:p,backlinkIndex:ve,tagIndex:ye,signalChannel:Be,agentFocusBroadcaster:Ee,agentPresenceBroadcaster:De,onAgentWrite:e.onAgentWrite,getSyncEngine:()=>mt,localOpCliArgs:h,projectDir:n,resolveEmbed:he,getPrincipal:()=>Me,acpRegistry:fe,loadAcpCustomAgents:()=>ku(D,I(`acp-registry`)),homeDirOverride:u,forceUnloadDocument:Ie,ready:ze,recentlyRemovedDocs:Ke,serializeDoc:et,evictManagedArtifactLkg:e=>{Se.managedArtifactCtx.lkgCache.delete(e)},semanticSearch:je,getSemanticSimilarityFloor:()=>oe().similarityFloor,getLinterBaseConfig:()=>ae(),getLinkPreviewsEnabled:se,embeddingsSecretsFile:tA(u),ephemeral:v,onReferencedAssetsCacheInvalidator:e=>{Oe=e}});Ce.configuration.extensions.push(T),Ce.configuration.extensions.push(Q7({mdManager:Va,schema:Ba,shadowRef:be,contentRoot:p,getCurrentBranch:()=>pt?.getLastKnownBranch()??null,resolveEmbed:he,resolveSize:ge})),Ce.configuration.extensions.push(wge()),Ce.configuration.extensions.push(Eme({getSyncEngine:()=>mt,projectDir:n,contentDir:t}))}catch(e){for(let e of Fe.splice(0))e();throw ke?.dispose(),ke=null,Bo(D),e}let Xe=null,Ze=new Map,Qe=[];function $e(e,t){let n=z(e,`rescue`),r=z(n,Gx(t));return ME(r,n)?r:null}function et(e){let t=Ce.documents.get(e);return t?NL(t):null}let tt=(e,t)=>AL(b,Ce,e,t,he,ge);function nt(e){if(!tS(e))return;let t=e.getMap(`lifecycle`);t.delete(`status`),t.delete(`reason`)}let it=e=>{if(!e)return;let t=`[[${e}]]`;for(let[n]of Ce.documents){if(Nx(n))continue;let r=Ce.documents.get(n);if(!r)continue;let i=r.getText(`source`).toString();if(i.includes(t))try{r.transact(()=>{II(r,i,he,n)},FI)}catch(t){y.error({err:t,docName:n,assetBasename:e},`[asset-event] failed to re-render ${n} for asset basename ${e}`)}}},at=null,ot=e=>{e&&(at===null&&(at=new Set,setImmediate(()=>{let e=at;if(at=null,e)try{for(let t of e)it(t)}catch(t){y.error({err:t,basenames:[...e]},`[asset-event] dedup rerender pass crashed`)}})),at.add(e))};function st(e){switch(e.kind){case`rename`:return e.newDocName;case`asset-create`:case`asset-delete`:case`folder-create`:case`folder-delete`:case`file-create`:case`file-update`:case`file-delete`:return e.relativePath;case`create`:case`update`:case`delete`:case`conflict`:return e.docName;default:return LL(e)}}async function ct(e){try{switch(e.kind){case`create`:y.info({docName:e.docName},`[reconcile] create: ${e.docName}`),ve.updateDocumentFromMarkdown(e.docName,e.content),He(),ye.updateDocumentFromMarkdown(e.docName,e.content),Be(`files`),Be(`backlinks`),Be(`graph`),Be(`tags`),Ye(e.docName);break;case`update`:{let{docName:t,content:n}=e,r=Ce.documents.get(t);if(!r){ve.updateDocumentFromMarkdown(t,n),He(),ye.updateDocumentFromMarkdown(t,n),Be(`backlinks`),Be(`graph`),Be(`tags`);return}let i=S(t)??``,a=et(t)??i,o=BI({docName:t,base:i,ours:a,theirs:n}),s=WL(i).slice(0,6),c=WL(a).slice(0,6),l=WL(n).slice(0,6);switch(y.info({docName:t,base:s,ours:c,theirs:l,result:o.kind},`[reconcile] ${t} base=${s} ours=${c} theirs=${l} result=${o.kind}`),o.kind){case`noop`:nt(r),ve.updateDocumentFromMarkdown(t,n),He(),ye.updateDocumentFromMarkdown(t,n),Be(`backlinks`),Be(`graph`),Be(`tags`);break;case`clean`:try{tt(t,o.newContent),C(t,o.newContent),ux(),nt(r),ve.updateDocumentFromMarkdown(t,n),He(),ye.updateDocumentFromMarkdown(t,n),Be(`backlinks`),Be(`graph`),Be(`tags`)}catch(e){y.error({err:e,docName:t},`[reconcile] failed to apply clean content to Y.Doc for ${t}`),C(t,n),nt(r)}break;case`merged`:try{tt(t,o.newContent),C(t,n),ux(),nt(r),ve.updateDocumentFromMarkdown(t,n),He(),ye.updateDocumentFromMarkdown(t,n),Be(`backlinks`),Be(`graph`),Be(`tags`)}catch(e){y.error({err:e,docName:t},`[reconcile] failed to apply merged content to Y.Doc for ${t}`),C(t,n),nt(r)}break;case`conflicts`:try{tt(t,o.newContent),C(t,o.newContent),ux(),dx(),ve.updateDocumentFromMarkdown(t,n),He(),ye.updateDocumentFromMarkdown(t,n),Be(`backlinks`),Be(`graph`),Be(`tags`)}catch(e){y.error({err:e,docName:t},`[reconcile] failed to apply conflict content to Y.Doc for ${t}`),C(t,n)}{let e=r.getMap(`lifecycle`);e.set(`status`,`conflict`),e.set(`reason`,`merged-with-markers`)}break;case`refused`:{dx();let e=r.getMap(`lifecycle`);e.set(`status`,`conflict`),e.set(`reason`,o.reason);break}}break}case`delete`:{let{docName:t}=e,n=Ce.documents.get(t);if(!n){ve.deleteDocument(t),He(),ye.deleteDocument(t),Be(`files`),Be(`backlinks`),Be(`graph`),Be(`tags`),Je(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));return}let r=S(t)??``,i=et(t)??``,a=i!==r;if(a&&be.current){let e=be.current,n=pt?.getLastKnownBranch()??`main`;queueMicrotask(()=>{vL(e,p??``,{kind:`external-change-rescue`,docName:t,contents:i,label:`External change recovered @ ${new Date().toISOString()}`,branch:n,metadata:{incomingDiskSha:``}}).then(()=>{px(),y.info({docName:t},`[reconcile] rescue checkpoint saved (delete): ${t}`)}).catch(e=>{y.error({docName:t,err:e},`[reconcile] rescue checkpoint write failed: ${t}`)})})}n.getMap(`lifecycle`).set(`status`,`deleted-upstream`),w(t),ve.deleteDocument(t),He(),ye.deleteDocument(t),y.info({docName:t,isDirty:a},`[reconcile] delete: ${t} (dirty=${a})`),Ce.closeConnections(t),await Ie(n),Be(`files`),Be(`backlinks`),Be(`graph`),Be(`tags`),Je(t),console.info(JSON.stringify({event:`recently-removed-docs-populate`,docName:t,kind:`deleted`,source:`watcher-delete`}));break}case`rename`:{let{oldDocName:t,newDocName:n,content:r}=e,i=Ce.documents.get(t);if(w(t),C(n,r),ve.renameDocument(t,n,r),He(),ye.renameDocument(t,n,r),i){let e=i.getMap(`lifecycle`);e.set(`status`,`renamed`),e.set(`newPath`,n)}y.info({oldDocName:t,newDocName:n},`[reconcile] rename: ${t} → ${n}`),Be(`files`),Be(`backlinks`),Be(`graph`),Be(`tags`),qe(t,n),console.info(JSON.stringify({event:`recently-removed-docs-populate`,from:t,to:n,kind:`renamed`,source:`watcher-rename`}));break}case`conflict`:{let{docName:t}=e,n=Ce.documents.get(t);if(!n)return;let r=et(t);r===null?y.warn({docName:t},`[reconcile] case 'conflict': serializeDoc returned null for ${t}; reconciledBase snapshot skipped — post-resolution reconcile may degrade to 3-way merge`):C(t,r);let i=n.getMap(`lifecycle`);i.set(`status`,`conflict`),i.set(`reason`,`conflict-markers`),y.info({docName:t},`[reconcile] conflict markers detected: ${t}`);break}case`asset-create`:me.add(e.relativePath),Be(`files`),ot(Lc(e.relativePath));break;case`asset-delete`:me.remove(e.relativePath),Be(`files`),ot(Lc(e.relativePath));break;case`folder-create`:case`folder-delete`:Be(`files`);break;case`file-create`:case`file-update`:case`file-delete`:Be(`files`);break;default:LL(e)}}catch(t){let n=st(e);y.error({err:t,kind:e.kind,label:n},`[reconcile] failed to handle ${e.kind} for ${n}`)}}let lt=[];async function ut(e){if(ne()){lt.push(e);return}await ct(e)}async function dt(){let e=lt.splice(0,lt.length);for(let t of e)await ct(t)}let ft=null,pt=null,mt=null,ht=null;async function gt(e){if(Ce.documents.size===0)return;let t=!1,n=new Promise(e=>{Ce.configuration.extensions.push({async afterUnloadDocument({instance:n}){!t&&n.getDocumentsCount()===0&&(t=!0,e())}})}),r=Array.from(Ce.documents.keys());Ce.closeConnections(),Ce.flushPendingStores();for(let e of Ce.documents.values())e.getConnectionsCount()===0&&Ce.unloadDocument(e).catch(t=>{console.warn(JSON.stringify({event:`ok-shutdown-unload-document-failed`,docName:e.name,reason:t instanceof Error?t.message:String(t)}))});let i,a=new Promise((n,a)=>{i=setTimeout(()=>{t=!0;let n=Array.from(Ce.documents.keys()),i=[],o=[];if(be.current){for(let e of n)if(!Nx(e))try{let t=et(e);if(t===null){y.warn({docName:e},`[rescue] skipping ${e} — document dropped from map mid-rescue`),o.push(e);continue}let n=$e(be.current.gitDir,e);if(!n){y.warn({docName:e,gitDir:be.current.gitDir},`[rescue] path-traversal guard rejected docName: ${e}`),o.push(e);continue}el(zc(n),{recursive:!0}),pl(n,t,`utf-8`),px(),i.push(e),y.info({docName:e},`[rescue] rescue buffer saved on flush timeout: ${e}`)}catch(t){o.push(e),y.error({err:t,docName:e},`[rescue] failed to write rescue buffer for ${e}`)}}else y.warn({stillLoadedCount:n.length},`[rescue] shadow repo unavailable at flush timeout — ${n.length} doc(s) will be lost: [${n.join(`, `)}]`),o.push(...n);let s=i.length>0||o.length>0?` — rescued [${i.join(`, `)}]${o.length>0?`, lost [${o.join(`, `)}]`:``}`:``;a(Error(`flushAllStoresAndWait timeout after ${e}ms — ${n.length}/${r.length} docs did not unload: [${n.join(`, `)}]${s}`))},e)});try{await Promise.race([n,a])}finally{i!==void 0&&clearTimeout(i)}}async function _t(){return ht||(ht=(async()=>{let e=Date.now(),t=[];Pe=!0;for(let e of Fe.splice(0))e();try{await ke?.dispose()}catch(e){y.warn({err:e},`[server] staleness watchdog drain failed during destroy`)}ke=null;try{Xo(D)}catch(e){y.warn({err:e},`[server] failed to mark server.lock draining`)}if(Ve!==null&&(clearTimeout(Ve),Ve=null),ye.close(),Ue!==null&&(clearTimeout(Ue),Ue=null),We)try{X7(n,Ke.entries())}catch(e){y.warn({err:e},`[removed-docs-journal] failed to persist removal journal during shutdown`),t.push({phase:`removed-docs-journal-flush`,error:String(e)})}let r,i=await Promise.race([ze.then(()=>`completed`,e=>(y.debug({err:e},`[server] init incomplete during shutdown`),`failed`)),new Promise(e=>{r=setTimeout(()=>e(`timeout`),5e3)})]);r!==void 0&&clearTimeout(r),i===`timeout`&&y.warn({},`[server] init did not complete within 5s during shutdown`);let a=Ce.documents.size;xe?.destroy();try{try{try{pt&&=(await pt.unsubscribe(),null),ft&&=(await ft.unsubscribe(),null);for(let{docName:e,cleanup:t}of Qe)try{await t()}catch(t){y.warn({err:t,docName:e},`[server] failed to stop config-file-watcher for ${e}`)}Qe.length=0}catch(e){t.push({phase:`watcher-unsubscribe`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-1 watcher unsubscribe failed`)}try{Te?.destroy(),De?.destroy(),Xe&&=(await Xe.disconnect(),null);for(let[e,t]of Ze)try{await t.disconnect()}catch(t){y.warn({err:t,docName:e},`[server] failed to disconnect ${e} during shutdown`)}Ze.clear()}catch(e){t.push({phase:`cc1-teardown`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-1b CC1 teardown failed`)}try{await we.closeAll()}catch(e){t.push({phase:`agent-session-drain`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-2 agent session drain failed`)}try{await Yre()}catch(e){t.push({phase:`parse-pool-teardown`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-2b parse pool teardown failed`)}try{await gt(m)}catch(e){t.push({phase:`flush-all-stores`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-3 flush failed`)}let e;try{await Promise.race([(async()=>{await Se.flushPendingGitCommit(),await Se.waitForPendingCommits()})(),new Promise((t,n)=>{e=setTimeout(()=>n(Error(`L2 git flush timeout`)),m)})])}catch(e){t.push({phase:`git-commit-flush`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-4 git commit flush failed`)}finally{e!==void 0&&clearTimeout(e)}try{mt&&=(await mt.destroy(),null)}catch(e){t.push({phase:`sync-engine-stop`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown sync-engine-stop failed`)}}finally{if(be.current){try{let e=(await jo({baseDir:n,timeout:{block:5e3}}).revparse(`HEAD`)).trim();e&&pl(z(be.current.gitDir,`last-known-head`),e,`utf-8`)}catch{}try{$I(be.current)}catch(e){t.push({phase:`shadow-repo-release`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-5 destroyShadowRepo failed`)}}let r=Date.now()-e;t.length===0?y.info({documentCount:a,durationMs:r},`[server] shutdown flushed ${a} documents in ${r}ms`):y.warn({documentCount:a,durationMs:r,phaseErrors:t},`[server] shutdown flushed ${a} documents in ${r}ms with ${t.length} phase error(s)`)}}finally{try{Bo(D,{deferUnlinkToExit:!0})}catch(e){t.push({phase:`server-lock-release`,error:e instanceof Error?e.message:String(e)}),y.error({err:e},`[server] shutdown phase-6 releaseServerLock failed`)}try{await vo()}catch(e){t.push({phase:`telemetry-shutdown`,error:e instanceof Error?e.message:String(e)})}}})(),ht)}let vt=[];async function bt(){try{Me=await K7(n),y.info({principalId:Me.id},`[server] principal loaded`)}catch(e){y.warn({err:e},`[server] principal load failed — browser writes will use SERVICE_WRITER`)}if(!be.current)try{be.current=await QI(n),y.info({gitDir:be.current.gitDir},`[server] history repo initialized at ${be.current.gitDir}`)}catch(e){y.error({err:e},`[server] history repo init failed`),vt.push(`shadow-repo`)}if(be.current){let e=null;try{e=MV(be.current.gitDir),tH(be.current.gitDir,e),LV(be.current.gitDir,e),y.info({entries:e.byTo.size},`[server] rename log loaded (${e.byTo.size} entries)`)}catch(e){y.warn({err:e},`[rename-log] boot-time load/sweep failed; rename history unavailable`)}if(e){let t=1e4;try{await Promise.race([nH(be.current,e,{rebuild:!0}),new Promise((e,n)=>setTimeout(()=>n(Error(`boot-time GC exceeded ${t}ms`)),t))])}catch(e){y.warn({err:e},`[rename-log] boot-time GC/rebuild failed; index loaded without GC`)}}try{await xe?.runBootMaintenance()}catch(e){y.warn({err:e},`[shadow-maintenance] boot maintenance failed (non-fatal)`)}}if(be.current)try{await YI(be.current).raw(`rev-parse`,`--git-dir`)}catch(e){let t=e instanceof Error?e.message:String(e);if(t.includes(`not a git repository`)||t.includes(`invalid object`)){y.warn({},`[server] history repo appears corrupted — reinitializing`);try{be.current=await QI(n)}catch(e){y.error({err:e},`[server] history repo reinit failed`),be.current=void 0,vt.includes(`shadow-repo`)||vt.push(`shadow-repo`)}}else y.error({err:e},`[server] history repo check failed (transient?)`)}if(be.current)try{let e=z(be.current.gitDir,`last-known-head`),t=null;try{t=V(e,`utf-8`).trim()||null}catch{}let r=null;try{r=(await jo({baseDir:n,timeout:{block:1e4}}).revparse(`HEAD`)).trim()||null}catch{}if(r!==null){if(r!==t){let e=`main`;try{let t=(await jo({baseDir:n,timeout:{block:1e4}}).raw(`rev-parse`,`--abbrev-ref`,`HEAD`)).trim();t&&t!==`HEAD`&&(e=t)}catch{}y.info({lastKnownHead:t,currentHead:r,branch:e},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${r}, action=import`);try{await mL(be.current,p??``,t,r,e),fx()}catch(e){y.warn({err:e},`[head-drift] commitUpstreamImport failed — continuing`)}}else y.info({currentHead:r},`[head-drift] lastKnownHead=${t??`null`}, currentHead=${r}, action=noop`);try{pl(e,r,`utf-8`)}catch(e){y.warn({err:e},`[head-drift] failed to write last-known-head`)}}}catch(e){y.warn({err:e},`[head-drift] check failed — continuing`)}try{let e=vV(t,n);if(e.recovered&&e.journal){let t=e.journal.version===2?e.journal.fromPath:e.journal.sourceDocName,n=e.journal.version===2?e.journal.toPath:e.journal.destinationDocName;y.warn({journalVersion:e.journal.version,fromPath:t,toPath:n,restoredDocNames:e.restoredDocNames},`[managed-rename] recovered pending rename ${t} -> ${n}`)}}catch(e){y.error({err:e},`[server] managed rename recovery failed`),vt.push(`managed-rename-recovery`)}try{let e=Roe(n);(e.deleted>0||e.errors>0)&&y.info({scanned:e.scanned,deleted:e.deleted,errors:e.errors},`[upload-tempfile-sweep] swept ${e.deleted} orphan tempfile(s)`)}catch(e){y.error({err:e},`[server] upload-tempfile sweep failed`),vt.push(`upload-tempfile-sweep`)}try{Xe=await Ce.openDirectConnection(ue),Te?.emitServerInfo(de,x())}catch(e){y.error({err:e},`[server] failed to open __system__ direct connection — CC1 push disabled`),vt.push(`cc1-push`)}let r=v?[]:ie;for(let e of r)try{let t=await Ce.openDirectConnection(e);Ze.set(e,t)}catch(t){y.error({err:t,docName:e},`[server] failed to open ${e} direct connection — config bind degraded`),vt.push(`config-doc:${e}`)}let i=new Map([[rt,qa(`project`,n)],[gr,qa(`project-local`,n)],[c,qa(`user`,n,u)]]);for(let e of r){let t=i.get(e);if(t)try{y.info({docName:e,path:t},`[config-file-watcher] starting`);let n=await hme(t,t=>{let n=Ce.documents.get(e);y.info({docName:e,hasDocument:n!==void 0,contentLength:t.length},`[config-file-watcher] file changed`);let r=D5(n??null,e,t,Se.configPersistenceCtx);y.info({docName:e,outcome:r},`[config-file-watcher] applyExternalConfigChange outcome`),le(e)});Qe.push({docName:e,cleanup:n}),y.info({docName:e,path:t},`[config-file-watcher] started`)}catch(n){y.warn({err:n,docName:e,path:t},`[config-file-watcher] failed to start for ${e}`),vt.push(`config-file-watcher:${e}`)}}if(!v){let e=(e,t)=>{let n=YB(e,Se.managedArtifactCtx);if(!n)return;let r=QB(Ce.documents.get(n)??null,n,t,Se.managedArtifactCtx);y.info({docName:n,outcome:r},`[managed-artifact-watcher] external change`),yt(n)&&ve.ingestGlobalSkillBundles(GB(Se.managedArtifactCtx),x()).then(()=>{Be(`backlinks`),Be(`graph`)}).catch(e=>{y.warn({err:e,docName:n},`[backlinks] global skill bundle re-ingest failed`)})};try{let t=GB(Se.managedArtifactCtx),n=await W5(t,e);Qe.push({docName:`__skill-files__`,cleanup:n}),y.info({roots:t},`[managed-artifact-watcher] skills started`)}catch(e){y.warn({err:e},`[managed-artifact-watcher] skills failed to start`),vt.push(`managed-artifact-watcher:skills`)}try{let t=new Set([``]);try{for(let e of YD(n).templates)t.add(e.source_folder)}catch(e){y.warn({err:e},`[managed-artifact-watcher] template enumeration failed; root only`)}let r=[...t].map(e=>e?z(n,e,`.ok`,`templates`):z(n,`.ok`,`templates`)),i=await W5(r,e,Zme);Qe.push({docName:`__template-files__`,cleanup:i}),y.info({rootCount:r.length},`[managed-artifact-watcher] templates started`)}catch(e){y.warn({err:e},`[managed-artifact-watcher] templates failed to start`),vt.push(`managed-artifact-watcher:templates`)}}try{let e=z(t,`.okignore`),r=z(n,`.gitignore`),i=null;try{let e=Fc(`git`,[`rev-parse`,`--git-common-dir`],_A({cwd:n,encoding:`utf-8`,timeout:5e3}));if(e.status===0&&e.stdout){let t=L(z(n,e.stdout.trim()),`info`,`exclude`);B(zc(t))&&(i=t)}}catch{}let a=i?[e,r,i]:[e,r],o=y;o.info({okignorePath:e,gitignorePath:r,gitInfoExcludePath:i,ephemeral:v},`[ignore-watcher] starting multi-path watcher for .okignore + .gitignore (+ .git/info/exclude when present)`);let s=v?null:await gme(a,(t,r)=>{(async()=>{if(t===e)try{let e=D5(Ce.documents.get(`__config__/okignore`)??null,T,r,Se.configPersistenceCtx);o.info({docName:T,outcome:e},`[ignore-watcher] applyExternalConfigChange outcome`)}catch(e){o.error({err:e,changedPath:R(n,t)},`[ignore-watcher] applyExternalConfigChange failed; rebuild proceeds independently`)}let i=await _e.rebuildIgnorePatterns();if(i.ok)o.info({changedPath:R(n,t),patternCount:i.patternCount,nestedFileCount:i.nestedFileCount,durationMs:i.durationMs},`[ignore-watcher] rebuild succeeded — broadcasting files channel`),Te?.signal(`files`);else{let e=R(n,t)||`.`;o.warn({changedPath:e,error:i.error.message},`[ignore-watcher] rebuild failed — emitting config-ignore-nested-error`),Te?.emitConfigIgnoreNestedError(e,i.error.message)}})().catch(e=>{o.error({err:e,changedPath:R(n,t)||`.`},`[ignore-watcher] handler threw`)})});s&&(Qe.push({docName:`__ignore-files__`,cleanup:s}),o.info({okignorePath:e,gitignorePath:r},`[ignore-watcher] multi-path watcher started`))}catch(e){y.warn({err:e,projectDir:n,contentDir:t},`[ignore-watcher] failed to start multi-path watcher`),vt.push(`ignore-files-watcher`)}let a=j5(n).branch??`main`;ee(a),ve.switchBranch(a);let o=performance.now();try{await Ya(`ok.boot.indexes`,void 0,async()=>{let e=x();try{if(await ve.loadFromDisk(e)){let t=await ve.reconcileWithDisk(e);(t.added>0||t.updated>0||t.deleted>0)&&y.info({added:t.added,updated:t.updated,deleted:t.deleted},`[backlinks] startup reconcile: offline changes applied`);let n=0;for(let e of t.deletedDocNames)Nx(e)||Ke.peek(e)?.kind!==`renamed`&&(Ke.setDeleted(e),n++);n>0&&y.info({count:n},`[removal-guard] tombstoned docs deleted while the server was down`)}else await ve.rebuildFromDisk(e);try{await ve.ingestGlobalSkillBundles(GB(Se.managedArtifactCtx),e)}catch(t){y.warn({err:t,branch:e},`[backlinks] global skill bundle ingest failed`)}ve.saveToDisk().catch(t=>{I(`backlinks`).warn({branch:e,err:t},`Failed to persist startup cache for ${e}`)})}catch(t){y.error({err:t,branch:e},`[backlinks] startup init failed; index will populate incrementally via watcher`)}let n=performance.now();ft=await Ya(`ok.boot.seed-walk`,void 0,async()=>SR(t,ut,_e)),PI(`seedWalkMs`,Math.round(performance.now()-n));{let e=z(t),n=0;for(let[t]of Ke.entries()){if(!vG(t))continue;let r=z(e,`${t}${Wx(t)}`);ME(r,e)&&B(r)&&(Ke.delete(t),n++)}n>0&&y.info({count:n},`[removal-guard] dropped journaled removal entries whose file re-appeared while the server was down`)}try{let e=await ye.reconcileWithDisk();(e.added>0||e.updated>0||e.deleted>0)&&y.info(e,`[tag-index] startup reconcile: offline changes applied`),ye.saveToDisk().catch(e=>{I(`tag-index`).warn({err:e},`Failed to persist startup tag snapshot`)})}catch(e){y.error({err:e},`[tag-index] startup reconcile failed; tag index updates incrementally via watcher events`),vt.push(`tag-index`)}let r=0;try{_===void 0?await CG({contentDir:t,contentFilter:_e,basenameIndex:me,onSkip:(e,t,n)=>{r++,y.warn({reason:e,code:t,path:n},`[basename-index] skipped entry during seed (${e}${t?` ${t}`:``})`)}}):SG({contentDir:t,basenameIndex:me,onSkip:(e,t,n)=>{r++,y.warn({reason:e,code:t,path:n},`[basename-index] skipped entry during single-file seed (${e}${t?` ${t}`:``})`)}}),r>0&&(y.warn({count:r},`[basename-index] startup seed completed with ${r} skipped entries — embeds under inaccessible subtrees will not resolve`),vt.push(`basename-index-partial`))}catch(e){y.error({err:e},`[basename-index] startup seed failed`),vt.push(`basename-index`)}})}catch(e){y.error({err:e},`[server] disk bridge watcher failed to start`),vt.push(`file-watcher`)}finally{PI(`indexesMs`,Math.round(performance.now()-o)),ft&&Yoe(`fileCount`,ft.getFileIndex().size)}try{pt=await Mme(n,async({trigger:e})=>{if(y.info({trigger:e},`[batch] begin trigger=${e}`),Une(),Ce.flushPendingStores(),await Se.flushPendingGitCommit(),te(!0),be.current){let e=x(),t=j5(n).branch??e,r=[];for(let[e,t]of Ce.documents){if(Nx(e))continue;let n=null;if(t.transact(()=>{n=et(e)},Oge),n===null)continue;let i=S(e)??n;r.push({docName:e,markdown:n,diskSnapshot:i})}if(r.length>0)try{let n=await wL(be.current,e,fL.id,r,t);n&&(Kne(),y.info({count:r.length,branch:e,sha:n.slice(0,8)},`[history] parked ${r.length} docs on ${e} → ${n.slice(0,8)}`))}catch(e){y.error({err:e},`[shadow] park failed`)}}},async e=>{let r=lt.length,i=e.newBranch??`main`;if(y.info({kind:e.batchKind,headMoved:e.headMoved,docs:r,timeout:!!e.timeout},`[batch] end kind=${e.batchKind} headMoved=${e.headMoved} docs=${r}${e.timeout?` timeout`:``}`),e.batchKind===`within-branch`){if(te(!1),await dt(),e.headMoved&&e.newHead){let r=Age(n,z(t),e.oldHead,e.newHead);if(r.size>0){uk(r.keys());for(let[e,t]of r)lk(e,Fee(t.email),t.name,t.email,mu(e));await Se.flushContributors()}}if(await Se.flushDeferredStores(`within-branch`),mt!==null)try{await mt.reconcileConflictsFromGit()}catch(e){y.warn({err:e},`[head-watcher] sync engine conflict reconcile failed`)}}else{Gne(),lt.splice(0,lt.length),ee(i),Ve!==null&&(clearTimeout(Ve),Ve=null),ve.switchBranch(i),_e.rebuildDirCount();try{let e=0;me.clear(),await CG({contentDir:t,contentFilter:_e,basenameIndex:me,onSkip:(t,n,r)=>{e++,y.warn({reason:t,code:n,path:r,branch:i},`[basename-index] skipped entry during branch-switch reseed (${t}${n?` ${n}`:``})`)}}),e>0&&(y.warn({count:e,branch:i},`[basename-index] branch-switch reseed completed with ${e} skipped entries — embeds under inaccessible subtrees will not resolve on this branch`),vt.includes(`basename-index-partial`)||vt.push(`basename-index-partial`))}catch(e){y.error({err:e,branch:i},`[basename-index] branch-switch reseed failed`)}for(let[e,n]of Ce.documents)if(!Nx(e))try{let r=NE(e,t);if(!B(r)){let t=S(e)??``,r=et(e)??``;if(r!==t&&be.current){let t=be.current;queueMicrotask(()=>{vL(t,p??``,{kind:`external-change-rescue`,docName:e,contents:r,label:`External change recovered @ ${new Date().toISOString()}`,branch:i,metadata:{incomingDiskSha:``}}).then(()=>{px(),y.info({docName:e},`[reconcile] rescue checkpoint saved on branch switch: ${e}`)}).catch(t=>{y.error({docName:e,err:t},`[reconcile] rescue checkpoint write failed: ${e}`)})})}n.getMap(`lifecycle`).set(`status`,`deleted-upstream`),y.info({docName:e,branch:i},`[branch-switch] tombstone: ${e} (not on ${i})`);continue}let a=V(r,`utf-8`);tt(e,a),C(e,a),y.info({docName:e},`[branch-switch] reset: ${e}`)}catch(t){y.error({err:t,docName:e},`[branch-switch] failed to reset ${e}`)}y.info({branch:i,docCount:Ce.documents.size},`[branch-switch] loaded branch ${i} (${Ce.documents.size} docs)`);try{if(await ve.loadFromDisk(i)){let e=await ve.reconcileWithDisk(i);(e.added>0||e.updated>0||e.deleted>0)&&y.info(e,`[backlinks] branch-switch reconcile for ${i}`)}else await ve.rebuildFromDisk(i);try{await ve.ingestGlobalSkillBundles(GB(Se.managedArtifactCtx),i)}catch(e){y.warn({err:e,branch:i},`[backlinks] branch-switch global skill bundle ingest failed`)}ve.saveToDisk(i).catch(e=>{I(`backlinks`).warn({branch:i,err:e},`Failed to persist branch cache for ${i}`)})}catch(e){y.error({err:e,branch:i},`[backlinks] branch-switch rebuild failed; backlinks may be stale`)}try{let e=await ye.reconcileWithDisk();(e.added>0||e.updated>0||e.deleted>0)&&y.info(e,`[tag-index] branch-switch reconcile for ${i}`)}catch(e){y.warn({err:e,branch:i},`[tag-index] branch-switch reconcile failed; falling back to full rebuild`),await ye.init()}if(ye.saveToDisk().catch(e=>{I(`tag-index`).warn({branch:i,err:e},`Failed to persist tag snapshot after branch switch`)}),be.current&&e.batchKind===`cross-branch`){let e=0;for(let[t]of Ce.documents)if(!Nx(t))try{let n=await EL(be.current,i,fL.id,t);if(!n||n.markdown===n.diskSnapshot)continue;let r=S(t);if(!r)continue;let a=BI({docName:t,base:n.diskSnapshot,ours:n.markdown,theirs:r});switch(a.kind){case`merged`:case`clean`:tt(t,a.newContent),C(t,a.newContent),e++;break;case`conflicts`:tt(t,a.newContent),C(t,a.newContent),dx(),e++;{let e=Ce.documents.get(t);if(e){let t=e.getMap(`lifecycle`);t.set(`status`,`conflict`),t.set(`reason`,`merged-with-markers`)}}break;case`noop`:case`refused`:break}}catch(e){y.error({err:e,docName:t},`[branch-switch] restore WIP failed for ${t}`)}e>0&&y.info({count:e,branch:i},`[branch-switch] restored ${e} parked docs on ${i}`)}if(e.oldBranch?.startsWith(`detached-`)&&be.current)try{let t=YI(be.current),n=(await t.raw(`for-each-ref`,`refs/wip/${e.oldBranch}/`,`--format=%(refname)`)).trim();n&&(await WI(be.current).withMutator(async()=>{for(let e of n.split(`
3262
3262
  `))e&&await t.raw(`update-ref`,`-d`,e)}),y.info({context:e.oldBranch},`[branch-switch] cleaned up detached context ${e.oldBranch}`))}catch(e){y.error({err:e},`[branch-switch] detached cleanup failed`)}te(!1),await Se.flushDeferredStores(`discard-stale`),Te?.emitBranchSwitched(i)}if(e.headMoved&&e.newHead&&be.current&&r>0){let t=p??`.`;try{let n=await mL(be.current,t,e.oldHead,e.newHead,i);fx(),y.info({oldHead:e.oldHead?.slice(0,8)??`null`,newHead:e.newHead.slice(0,8),sha:n.slice(0,8)},`[history] upstream-import from ${e.oldHead?.slice(0,8)??`null`}..${e.newHead.slice(0,8)} → ${n.slice(0,8)}`)}catch(e){y.error({err:e},`[shadow] upstream-import failed`)}}})}catch(e){y.error({err:e},`[server] HEAD watcher failed to start`),vt.push(`head-watcher`)}function s(e){for(let r of e)try{let e=jE(R(t,L(n,r)));if(e.startsWith(`..`))continue;let i=zx(e),a=Ce.documents.get(i);if(!a)continue;let o=et(i);o===null?y.warn({docName:i,file:r},`[sync] content conflict: serializeDoc returned null; reconciledBase snapshot skipped`):C(i,o);let s=a.getMap(`lifecycle`);s.set(`status`,`conflict`),s.set(`reason`,`sync-merge-conflict`),y.info({docName:i,file:r},`[sync] marked loaded content conflict`)}catch(e){y.warn({err:e,file:r},`[sync] failed to mark loaded content conflict`)}}let l=kge(h);try{mt=new Sge({projectDir:n,contentDir:t,contentFilter:_e,contentRoot:p,syncEnabled:re(),credentialArgs:l,cc1Broadcaster:Te,detectGh:e.detectGh,tokenStore:e.tokenStore,checkPushPermissionFn:e.checkPushPermissionFn,setBatchInProgress:e=>{te(e),e||Se.flushDeferredStores(`within-branch`).catch(e=>{y.error({err:e},`[persistence] deferred store drain failed after sync batch`)})},onStateChange:e=>{y.info({state:e},`[sync] state → ${e}`)},onContentConflictsDetected:s,onAutoDisable:async e=>{y.warn({reason:e},`[sync] auto-disabled — persisting to project-local config`);let t=await oo({cwd:n,scope:`project-local`,patch:{autoSync:{enabled:!1}}});t.ok||y.error({result:t,reason:e,humanError:ga(t.error),configPath:qa(`project-local`,n)},`[sync] failed to persist auto-disable — next restart WILL re-enable sync and re-trigger the same failure. Check permissions on the config path.`)}}),await mt.start()}catch(e){y.warn({err:e},`[server] SyncEngine failed to start — sync disabled`),mt=null}Be(`files`),Be(`backlinks`),Be(`graph`),Be(`tags`);let d=NI();d!==void 0&&PI(`readyMs`,d)}return bt().then(Le,Re),{hocuspocus:Ce,durabilityState:b,sessionManager:we,cc1Broadcaster:Te,agentFocusBroadcaster:Ee,agentPresenceBroadcaster:De,maintenanceCoordinator:xe,contentFilter:_e,basenameIndex:me,serverInstanceId:de,destroy:_t,ready:ze,degraded:vt,lockDir:D,get syncEngine(){return mt},resolveEmbed:he,acpRegistry:fe,acpPermissions:pe}}function T9(e){return e/1048576}function jge(){let e=process.memoryUsage();return{schemaVersion:1,capturedAt:new Date().toISOString(),snapshot:{rssMb:T9(e.rss),heapTotalMb:T9(e.heapTotal),heapUsedMb:T9(e.heapUsed),externalMb:T9(e.external),arrayBuffersMb:T9(e.arrayBuffers)}}}let E9=null,D9=null,O9=null;const k9=1e6;let A9=null,j9=null;Ja(()=>{E9=null,D9=null,O9=null,A9?.disable(),A9=null,j9=null});function Mge(){if(E9)return;let e=bo().createObservableGauge(`ok.server.memory.usage_megabytes`,{description:`Server process memory by section. Bounded labels: section ∈ {heap_used, heap_total, rss, external, array_buffers}.`,unit:`MB`});e.addCallback(e=>{let{snapshot:t}=jge();e.observe(t.heapUsedMb,{section:`heap_used`}),e.observe(t.heapTotalMb,{section:`heap_total`}),e.observe(t.rssMb,{section:`rss`}),e.observe(t.externalMb,{section:`external`}),e.observe(t.arrayBuffersMb,{section:`array_buffers`})}),E9=e}function Nge(){if(!D9){let e=bo().createObservableGauge(`ok.server.event_loop.delay_ms`,{description:`Event-loop delay percentiles over the last export window. Bounded labels: stat ∈ {p50, p99}.`,unit:`ms`});e.addCallback(e=>{if(!A9){A9=yee({resolution:20}),A9.enable();return}e.observe(A9.percentile(50)/k9,{stat:`p50`}),e.observe(A9.percentile(99)/k9,{stat:`p99`}),A9.reset()}),D9=e}if(!O9){let e=bo().createObservableGauge(`ok.server.cpu.utilization`,{description:`Process CPU time as a fraction of wall time since the previous export. Bounded labels: mode ∈ {user, system}.`,unit:`1`});e.addCallback(e=>{let t=process.cpuUsage(),n=process.hrtime.bigint(),r=j9;if(j9={cpu:t,hrtimeNs:n},!r)return;let i=Number(n-r.hrtimeNs)/1e3;i<=0||(e.observe((t.user-r.cpu.user)/i,{mode:`user`}),e.observe((t.system-r.cpu.system)/i,{mode:`system`}))}),O9=e}}let M9=null,N9=!1;function P9(e=process.env){return e.OK_BRIDGE_TOLERANCE_TELEMETRY===`1`}function F9(e){if(!P9())return;let t=$E(e);M9=new Oo({currentPath:z(t,`tolerance-telemetry.jsonl`),previousPath:z(t,`tolerance-telemetry.prev.jsonl`),maxBytes:8388608}),Fi(e=>{let t={event:`bridge-tolerance-fire`,timestamp:e.timestamp,class:e.className,document:e.documentName??null,codeUnitPosition:e.codeUnitPosition,severity:e.severity};M9?.append(`${JSON.stringify(t)}\n`).catch(e=>{N9||(N9=!0,I(`tolerance-telemetry`).warn({err:e instanceof Error?e:Error(String(e))},`append failed; further failures are silent`))})})}async function I9(){Fi(null),await M9?.drain(),M9=null,N9=!1}Ra();const Pge=[`server.lock`,`ui.lock`,`state.json`,`principal.json`,`sync-state.json`,`conflicts.json`,`last-spawn-error.log`],Fge=[`cache`,`tmp`];function Ige(e){let t=z(e,ya);if(!(()=>{if(!B(t))return!0;try{return al(t).length===0}catch{return!0}})())return[];let n=[];for(let t of Pge)B(z(e,t))&&n.push(t);for(let t of Fge){let r=z(e,t);try{B(r)&&dl(r).isDirectory()&&n.push(`${t}/`)}catch{}}return n}function Lge(e){let t=Ql(e);switch(t.kind){case`directory`:return{kind:`main`,gitdir:t.path};case`linked`:return{kind:`linked`,gitdir:t.path};case`malformed-pointer`:return{kind:`linked`,gitdir:null};case`inaccessible`:case`absent`:return{kind:`main`,gitdir:null}}}const L9=Number(process.env.OK_DESTROY_STEP_TIMEOUT_MS)||5e3;async function Rge(e){Joe();let t=e.projectDir??e.contentDir,n=qG({projectDir:t});if(n){let e=n.telemetry.attributeDenylist,t=[];for(let n of e){t.push(n);for(let e=1;e<=5;e++)t.push(`${`*.`.repeat(e)}${n}`)}wo.configure({pinoConfig:{fileSink:n.logs,redactPaths:t}})}yo({localSink:n?.telemetry}),F9(t),Mge(),Nge();let{kind:r,gitdir:i}=Lge(e.projectDir??e.contentDir),a={"ok.worktree.kind":r};i!==null&&(a[`ok.worktree.gitdir`]=lo(i));let o=zG(t),s=process.env.OK_STARTUP_TRACEPARENT,c=()=>Ya(`ok.boot`,{attributes:a},async()=>zge(e)),l=()=>{if(s)try{let e=Ia.extract(za.active(),{traceparent:s});return za.with(e,c)}catch(e){I(`boot`).warn({err:e},`ok.boot trace-join failed — starting unparented boot`)}return c()},u;try{u=await l()}catch(e){throw o.uninstall(),e}let d=u.destroy;return u.destroy=async()=>{try{await d()}finally{o.uninstall()}},u}async function zge(e){let t=e.skipAutoInit??!1,n=e.attachUiSibling??!0,r=e.idleShutdownMs,i=e.log??I(`boot`),a=process.env.OK_LOCK_KIND===`mcp-spawned`||process.env.OK_LOCK_KIND===`interactive`?process.env.OK_LOCK_KIND:void 0,o=e.lockKind??a??`interactive`,{createServer:s}=await import(`node:http`),{markServerLockDraining:c,releaseServerLock:l,updateServerLockPort:u}=await import(`./server-lock-CmiibuTm.mjs`),d=!1;if(!t&&e.autoInitFn)try{d=!!await e.autoInitFn()}catch(e){i.warn({err:e},`autoInitFn failed`)}let f=e.projectDir??e.contentDir,p=z(f,`.ok`);if(!B(z(p,`config.yml`)))throw new _8(B(p)?`config`:`okdir`,f);let m=z(p,`.gitignore`);B(m)||I(`boot`).warn({path:m},"Note: .ok/.gitignore is missing — per-machine state files in .ok/ may show up as untracked changes. Run `ok init` to add the recommended ignore entries.");let h=e.gitPreflight??pF;try{e.gitEnabled!==!1&&h()}catch(e){if(e instanceof uF||e instanceof dF){let t=e instanceof dF?e.detected:``,n=e instanceof dF?`too_old`:`not_available`;CB(e),i.warn({event:`git_preflight_fail`,platform:e.platform,reason:n,detectedVersion:t},n===`not_available`?`git binary not found`:`git binary too old`),process.stderr.write(`${e.message}\n`)}throw await vo(),await Promise.race([I9(),new Promise(e=>setTimeout(e,L9))]),e}let g=Ige(p);g.length>0&&I(`boot`).warn({files:g},`Found legacy runtime files at .ok/${g.join(`, `)}. Delete .ok/ and re-init — these files moved to .ok/${ya}/.`);let _=w9({contentDir:e.contentDir,projectDir:e.projectDir,contentRoot:e.contentRoot,port:e.port,host:e.host,quiet:e.quiet??!1,debounce:e.debounce,maxDebounce:e.maxDebounce,gitEnabled:e.gitEnabled,commitDebounceMs:e.commitDebounceMs,wipRef:e.wipRef,enableTestRoutes:e.enableTestRoutes,shadowRepo:e.shadowRepo,destroyTimeoutMs:e.destroyTimeoutMs,localOpCliArgs:e.localOpCliArgs,onAgentWrite:e.onAgentWrite,lockKind:o,skipStateManifestCheck:e.skipStateManifestCheck,detectGh:e.detectGh,tokenStore:e.tokenStore,embeddingsKeyStore:e.embeddingsKeyStore,singleDocRelPath:e.singleDocRelPath,ephemeral:e.ephemeral}),{hocuspocus:v,destroy:y,ready:b,degraded:x,lockDir:S,sessionManager:C,agentFocusBroadcaster:w,agentPresenceBroadcaster:T,maintenanceCoordinator:ee}=_,te=(()=>{let t=e.host??`localhost`;return t===`0.0.0.0`||t===`::`?`localhost`:t.includes(`:`)&&!t.startsWith(`[`)?`[${t}]`:t})(),ne=e.port??0,E=e.ephemeral?void 0:d8({contentDir:e.contentDir,projectDir:e.projectDir??e.contentDir,config:e.config,getServerUrl:()=>`http://${te}:${ne}`,log:i}),re=s();re.headersTimeout=3e4,re.requestTimeout=6e4;let ie=e.serveContentAssets===!1?void 0:ZE({contentFilter:_.contentFilter,contentSirv:zo(e.contentDir,{dev:!0,dotfiles:!1}),inlineExtensions:Ji,assetExtensions:Vi,blocklistExtensions:Zi}),ae=!1;if(e.reactShellDistDir)try{ZF(S,{port:0,worktreeRoot:e.projectDir??e.contentDir}),ae=!0}catch(e){if(e instanceof XF)i.info({event:`ui-lock-yielded-to-live-holder`,pid:process.pid,existingPid:e.existing.pid,existingPort:e.existing.port,lockDir:S},`ui.lock already held by a live process — yielding (advertisement is fulfilled)`);else throw await y().catch(()=>{}),l(S),e}let oe=e.reactShellDistDir?zo(e.reactShellDistDir,{single:!0,gzip:!0,immutable:!0}):void 0,se=e.ephemeral?null:new fw({contentDir:e.contentDir,localDir:S,registry:_.acpRegistry,permissions:_.acpPermissions,sessionManager:C,agentPresenceBroadcaster:T,resolveEmbed:_.resolveEmbed,isExcludedPath:e=>_.contentFilter.isExcluded(e),isIgnoredPath:e=>_.contentFilter.isPathIgnored(e),getLoadedDocText:e=>v.documents.get(e)?.getText(`source`).toString()??null,getServerUrl:()=>`http://${te}:${ne}`,getMcpStdioCommand:()=>dw(e.localOpCliArgs,ne),probeHarnessManagedMcpEntry:e.probeHarnessManagedMcpEntry,log:i});se!==null&&await se.init();let ce=p8({httpServer:re,hocuspocus:v,mcpHttpHandler:E,log:i,sessionManager:C,agentFocusBroadcaster:w,agentPresenceBroadcaster:T,maintenanceCoordinator:ee,keepaliveGraceMs:e.keepaliveGraceMs,contentAssetMiddleware:ie,reactShellMiddleware:oe,ephemeral:e.ephemeral,acpThreadManager:se}),le=async()=>{throw Error(`bootServer: destroy() invoked before initialization — boot did not complete`)},ue=null;r!==null&&(ue=BG({httpServer:re,thresholdMs:r??18e5,log:i,onShutdown:(e.idleShutdownHandler??(e=>async()=>{await e()}))(async()=>{await le()})})),await R9({hocuspocus:v,projectDir:e.projectDir??e.contentDir,log:i});try{await new Promise((t,n)=>{let r=e=>n(e);re.once(`error`,r),re.listen(e.port,e.host,()=>{re.removeListener(`error`,r),t()})})}catch(e){if(ae)try{eI(S)}catch(e){i.warn({err:e},`releaseUiLock failed during listen-error cleanup`)}throw await y().catch(()=>{}),l(S),e}let de=NI();de!==void 0&&PI(`httpListenMs`,de);let D=re.address(),fe=typeof D==`object`&&D?D.port:e.port??0;if(ne=fe,u(S,fe),ae&&QF(S,fe),n&&e.spawnUiSiblingFn)try{await e.spawnUiSiblingFn({lockDir:S,log:i})}catch(e){i.warn({err:e},`spawnUiSiblingFn failed`)}let pe=!1,me=async(e,t)=>{let n;try{await Promise.race([t(),new Promise((t,r)=>{n=setTimeout(()=>{r(Error(`${e} timed out after ${L9}ms`))},L9),n.unref?.()})])}finally{n!==void 0&&clearTimeout(n)}};le=async()=>{if(pe)return;pe=!0;let e=[],t=async(t,n)=>{try{await me(t,n)}catch(n){e.push(n),i.warn({err:n,step:t},`bootServer destroy step failed`)}};try{c(S),ae&&Poe(S)}catch(e){i.warn({err:e,step:`markLocksDraining`},`bootServer destroy step failed`)}try{ue?.detach()}catch(t){e.push(t),i.warn({err:t,step:`idleHandle.detach`},`bootServer destroy step failed`)}if(se!==null&&await t(`acpThreads.destroy`,()=>se.destroy()),await t(`mount.shutdown`,()=>ce.shutdown()),E!==void 0&&await t(`mcpHttpHandler.close`,()=>E.close()),await t(`mount.wss.close`,()=>new Promise((e,t)=>{ce.wss.close(n=>n?t(n):e())})),await t(`httpServer.closeAllConnections`,async()=>{re.closeAllConnections?.()}),await t(`httpServer.close`,()=>new Promise((e,t)=>{re.close(n=>n&&n.code!==`ERR_SERVER_NOT_RUNNING`?t(n):e())})),await t(`destroyHocuspocus`,()=>y()),ae&&await t(`releaseUiLock`,async()=>eI(S,{deferUnlinkToExit:!0})),await t(`shutdownTelemetry`,()=>vo()),await t(`teardownToleranceTelemetry`,()=>I9()),await t(`flushLogFileSinks`,()=>wo.flushAllFileSinks()),e.length>0)throw AggregateError(e,`bootServer destroy completed with errors`)};try{let t=await KF({projectDir:f,skillsRoot:z(e.contentDir,`.ok`,`skills`)}),n=t.healed.length+t.adopted.length+t.replaced.length+t.collided.length+t.orphansRemoved.length;n>0&&i.info?.({event:`installed-skills-reconciled`,healed:t.healed.length,adopted:t.adopted.length,replaced:t.replaced.length,collided:t.collided.length,orphansRemoved:t.orphansRemoved.length},`Reconciled ${n} editor skill entr${n===1?`y`:`ies`} to the symlink model.`)}catch(e){i.warn?.({event:`installed-skills-reconcile-failed`,err:e},`Installed-skills reconcile failed (non-fatal).`)}return{httpServer:re,destroy:le,lockDir:S,contentDir:e.contentDir,port:fe,ready:b,degraded:x,didAutoInit:d,serverInstance:_,acpThreadManager:se}}async function R9(e){let{hocuspocus:t,projectDir:n,log:r}=e,i,a;try{i=new NG(n),a=i.list()}catch(e){r.warn({err:e,projectDir:n},`[boot] lifecycle restore: failed to read conflicts.json — skipping`);return}if(a.length===0)return;let o=null;try{let e=$l(n),t=e?L(e,`MERGE_HEAD`):null;if(!t||!B(t)){i.clear(),console.warn(JSON.stringify({event:`lifecycle-restore-cleared-stale-conflicts`,reason:`no-merge-head`,count:a.length}));return}let r=No({baseDir:n,timeout:{block:5e3}});o=new Set(await TP(r,[`diff`,`--name-only`,`--diff-filter=U`]))}catch(e){r.warn({err:e,projectDir:n},`[boot] lifecycle restore: git unmerged probe failed — restoring all entries`)}if(o!==null){let e=0;for(let t of a)o.has(t.file)||(i.removeConflict(t.file),e++);if(e>0&&console.warn(JSON.stringify({event:`lifecycle-restore-pruned-resolved-entries`,pruned:e,remaining:a.length-e})),a=a.filter(e=>o?.has(e.file)),a.length===0)return}for(let e of a){let n=zx(e.file),i=null,a=!1;try{i=await t.openDirectConnection(n);let e=i.document;if(!e)continue;let r=e.getMap(`lifecycle`);r.set(`status`,`conflict`),r.set(`reason`,`conflict-markers`),a=!0,console.warn(JSON.stringify({event:`lifecycle-restored-from-conflicts-json`,"doc.name":n}))}catch(e){r.warn({err:e,docName:n},`[boot] lifecycle restore: failed to set lifecycle for doc — skipping`)}finally{if(i)try{await i.disconnect()}catch(e){r.warn({err:e,docName:n,restored:a},`[boot] lifecycle restore: disconnect failed after lifecycle write`)}}}}const Bge=ca;function Vge(e={}){let t=e.home??gl(),n=e.platformName??process.platform,r=e.env??process.env;return n===`darwin`?B(L(t,`Library`,`Application Support`,`Claude`)):n===`win32`?B(L(r.APPDATA??L(t,`AppData`,`Roaming`),`Claude`)):!1}var z9=t(Do(),1);const B9=L(gl(),`.ok`,`logs`),Hge=[`authorization`,`password`,`token`,`apiKey`,`secret`,`*.authorization`,`*.password`,`*.token`,`*.apiKey`,`*.secret`];function Uge(){let e=process.env.OK_LOG_LEVEL??process.env.LOG_LEVEL;if(e){let t=[`fatal`,`error`,`warn`,`info`,`debug`],n=e.toLowerCase();if(t.includes(n))return n}return process.env.NODE_ENV===`test`?`silent`:`info`}function Wge(e){el(e,{recursive:!0})}function V9(){return new Date().toISOString().slice(0,10)}function Gge(e){try{if(dl(e).size<5242880)return}catch{return}for(let t=2;t>=1;t--){let n=t===1?e:`${e}.${t-1}`,r=`${e}.${t}`;try{cl(n,r)}catch{}}try{fl(`${e}.3`)}catch{}}function Kge(e){try{let t=Date.now(),n=10080*60*1e3,r=al(e).filter(e=>e.endsWith(`.log`)||/\.log\.\d+$/.test(e)).map(t=>{try{let n=dl(L(e,t));return{name:t,mtime:n.mtimeMs,size:n.size}}catch{return null}}).filter(Boolean);for(let i of r)if(t-i.mtime>n)try{fl(L(e,i.name))}catch{}let i=r.filter(e=>t-e.mtime<=n).sort((e,t)=>e.mtime-t.mtime),a=i.reduce((e,t)=>e+t.size,0);for(let t of i){if(a<=47185920)break;try{fl(L(e,t.name)),a-=t.size}catch{}}}catch{}}function qge(e){Wge(B9);let t=V9(),n=e.filePath??L(B9,`${e.name}.${t}.log`);Gge(n),(e._setTimeout??setTimeout)(()=>Kge(B9),5e3).unref();let r=z9.default.destination({dest:n,append:!0,sync:!0});return(0,z9.default)({level:Uge(),name:e.name,redact:{paths:Hge,censor:`[REDACTED]`},base:{pid:process.pid,hostname:void 0,runtime:`cli`,project:e.project??`<no-project>`},timestamp:z9.default.stdTimeFunctions.isoTime,...e.additionalOptions},r)}function Jge(e,t=250){return new Promise(n=>{if(!e){n();return}let r=e[z9.default.symbols.streamSym],i=!1,a=()=>{i||(i=!0,n())};if(!r||typeof r.flushSync!=`function`){a();return}let o=()=>{try{r.flushSync?.()}catch{}a()},s=setTimeout(a,t);typeof s.unref==`function`&&s.unref(),typeof r.fd==`number`&&r.fd>=0?(clearTimeout(s),o()):typeof r.once==`function`?r.once(`ready`,()=>{clearTimeout(s),o()}):(clearTimeout(s),o())})}function Yge(e){return L(B9,`${e}.${V9()}.log`)}function Xge(){return B9}function Zge(e){let t=z(e),n=0;for(;n<30;){let e=!1;try{e=B(z(t,`.git`))}catch{e=!1}if(e)return{gitRoot:t,distance:n};let r=zc(t);if(r===t)return null;t=r,n+=1}return null}const H9=Ul(Nc),U9=I(`project-git`);var W9=class extends Error{stderr;constructor(e,t=``,n){super(e,n),this.name=`ProjectGitInitError`,this.stderr=t}};async function Qge(e,t){try{let{stdout:n}=await H9(e,[`rev-parse`,`--is-inside-work-tree`],_A({cwd:t,encoding:`utf-8`}));return n.trim()===`true`}catch{return!1}}async function $ge(e){let t=z(e),n=z(t,`.git`),r=z(n,`HEAD`),i=!1;if(B(n)){if(!dl(n).isDirectory()||B(r))return{didInit:!1};U9.info({},`detected partial .git/ — running git init to repair`),i=!0}let a;try{a=pF()}catch(e){throw e instanceof uF||e instanceof dF?(CB(e),U9.warn({event:`git_preflight_fail`,platform:e.platform,reason:e instanceof dF?`too_old`:`not_available`,detectedVersion:e instanceof dF?e.detected:``},e instanceof dF?`git binary too old`:`git binary not found`)):U9.warn({event:`git_preflight_unexpected_error`,err:e},`unexpected error during git preflight`),e}let o=a.resolvedPath;if(!i&&await Qge(o,t))return{didInit:!1};let s=``;try{s=(await H9(o,[`init`,`--initial-branch=main`,t],_A({encoding:`utf-8`}))).stderr??``}catch(e){let n=typeof e==`object`&&e&&`stderr`in e?String(e.stderr??``):``;throw new W9(`git init failed at ${t}: ${e instanceof Error?e.message:String(e)}`,n,{cause:e})}if(!B(r))throw new W9(`git init reported success but ${n}/HEAD is missing (partial init detected)`,s);return i?(U9.info({path:t},`backfilled missing .git/HEAD`),{didInit:!0,repaired:!0}):(U9.info({path:t,branch:`main`},`initialized .git/`),{didInit:!0})}const G9=I(`project-skill-git`),K9=/^[0-9a-f]{40}$/,e_e=Tn.map(e=>e.replace(/\/$/,``));async function t_e(e){let t=$l(e);if(t===null)return{kind:`skipped`,reason:`no-git`};if(a_e(t))return{kind:`skipped`,reason:`operation-in-progress`};let n=Po(e);if((await q9(n)).length===0)return{kind:`nothing-tracked`};try{return await Mo(async()=>{let t=await n_e(n);if(t===null)return{kind:`skipped`,reason:`detached-head`};let r=await r_e(n);if(r===null)return{kind:`skipped`,reason:`unborn-head`};let i=await q9(n);if(i.length===0)return{kind:`nothing-tracked`};let a=Po(e,{gitIndexFile:L(yl(),`ok-untrack-idx-${process.pid}-${Date.now()}.idx`)});await a.git.raw([`read-tree`,r]),await a.git.raw([`rm`,`--cached`,`-r`,`--ignore-unmatch`,`--`,...i]);let o=(await a.git.raw([`write-tree`])).trim(),s=await i_e(n,r);if(s!==null&&s===o)return{kind:`nothing-tracked`};let c=await VR(e),l=c?.name??`OpenKnowledge`,u=c?.email??`sync@open-knowledge.local`;Io(a,{GIT_AUTHOR_NAME:l,GIT_AUTHOR_EMAIL:u,GIT_COMMITTER_NAME:l,GIT_COMMITTER_EMAIL:u});let d=`Stop tracking the OpenKnowledge project skill\n\nThe \`${Ti}\` skill is regenerated per machine and version-stamped per app build, so tracking it causes recurring sync conflicts. It is now git-ignored.`,f=(await a.git.raw([`commit-tree`,o,`-p`,r,`-m`,d])).trim();if(!K9.test(f))return G9.warn({raw:f},`commit-tree returned invalid SHA — aborting untrack`),{kind:`failed`,error:`commit-tree returned invalid SHA`};try{await n.git.raw([`update-ref`,`refs/heads/${t}`,f,r])}catch(e){return G9.info({branch:t,err:J9(e)},`update-ref CAS failed — ref moved, retry next open`),{kind:`skipped`,reason:`ref-race`}}try{await n.git.raw([`reset`,`-q`,f,`--`,...i])}catch(e){G9.info({err:J9(e)},`real-index reset after untrack failed (cosmetic)`)}return G9.info({dirs:i,commitSha:f},`untracked project-skill projection`),{kind:`untracked`,dirs:i,commitSha:f}})}catch(e){return{kind:`failed`,error:J9(e)}}}async function q9(e){let t=[];for(let n of e_e){let r=``;try{r=(await e.git.raw([`ls-files`,`--`,n])).trim()}catch{r=``}r.length>0&&t.push(n)}return t}async function n_e(e){try{let t=(await e.git.raw([`rev-parse`,`--abbrev-ref`,`HEAD`])).trim();return t.length===0||t===`HEAD`?null:t}catch{return null}}async function r_e(e){try{let t=(await e.git.raw([`rev-parse`,`--verify`,`HEAD`])).trim();return K9.test(t)?t:null}catch{return null}}async function i_e(e,t){try{let n=(await e.git.raw([`rev-parse`,`${t}^{tree}`])).trim();return K9.test(n)?n:null}catch{return null}}function a_e(e){return B(L(e,`MERGE_HEAD`))||B(L(e,`rebase-merge`))||B(L(e,`rebase-apply`))||B(L(e,`CHERRY_PICK_HEAD`))||B(L(e,`REVERT_HEAD`))}function J9(e){return e instanceof Error?e.message:String(e)}async function o_e(e,t){let n;try{n=Mc(t).resolve(e)}catch(e){if(e?.code===`MODULE_NOT_FOUND`)return;throw e}for(let t=zc(n),r=0;r<32;r+=1){let n=L(t,`package.json`);if(B(n))try{let t=JSON.parse(await wl(n,`utf-8`));if(t.name===e&&typeof t.version==`string`)return t.version}catch{}let r=zc(t);if(r===t)return;t=r}}const s_e=[{regex:/\/Users\/[^/]+\//g,replacement:`~/`},{regex:/\/home\/[^/]+\//g,replacement:`~/`},{regex:/C:\\\\Users\\\\[^\\\\]+\\\\/g,replacement:`~\\`},{regex:/C:\\Users\\[^\\]+\\/g,replacement:`~\\`}];function Y9(e){if(e===void 0)return;let t=e;for(let{regex:e,replacement:n}of s_e)t=t.replace(e,n);return t}function X9(e,t=0,n=new WeakSet){if(t>=5)return{name:`SerializedError.CauseDepthExceeded`,message:`cause chain depth > 5; truncated`};if(typeof e==`object`&&e){if(n.has(e))return{name:`SerializedError.CauseCycle`,message:`cyclic cause; truncated`};n.add(e)}if(e instanceof Error)return{name:e.name,message:Y9(e.message)??``,stack:Y9(e.stack),code:e.code,cause:e.cause===void 0?void 0:X9(e.cause,t+1,n)};if(e==null)return{name:`UnknownError`,message:String(e)};if(typeof e==`string`)return{name:`StringError`,message:Y9(e)??e};if(typeof e==`object`){let r=e;return{name:String(r.name??`ObjectError`),message:Y9(String(r.message??``))??``,stack:Y9(r.stack),code:r.code,cause:r.cause===void 0?void 0:X9(r.cause,t+1,n)}}return{name:`UnknownError`,message:String(e)}}var Z9=class extends Error{constructor(e){super(`File not found: ${e}`),this.filePath=e,this.name=`SingleFileNotFoundError`}},Q9=class extends Error{constructor(e){super(`Not a file: ${e}. \`ok <file>\` opens a single markdown file.`),this.filePath=e,this.name=`SingleFileNotAFileError`}},$9=class extends Error{constructor(e){super(`OpenKnowledge edits markdown files (.md / .mdx): ${e}`),this.filePath=e,this.name=`SingleFileNotMarkdownError`}};function c_e(e){if(!Lx(e))throw new $9(e);let t;try{t=sl(z(e))}catch(t){throw t.code===`ENOENT`?new Z9(e):t}if(!dl(t).isFile())throw new Q9(e);let n=zc(t),r=TR(n);if(r){let e=r.rootPath;return{mode:`project`,projectRoot:e,docName:zx(R(l_e(e),t).split(Wc).join(`/`)),canonicalFilePath:t}}let i=Lc(t);return{mode:`ephemeral`,canonicalFilePath:t,contentDir:n,singleDocRelPath:i,docName:zx(i)}}function l_e(e){return z(e,Wa({absPath:qa(`project`,e),sideline:!1,warn:()=>{}}).value.content?.dir??`.`)}function u_e(e){let t=tl(z(yl(),`ok-ephemeral-`)),n=z(t,`.ok`);return el(n,{recursive:!0}),pl(z(n,`config.yml`),`# Ephemeral single-file session (\`ok <file>\`). Throwaway — safe to delete.\ncontent:\n dir: ${JSON.stringify(e)}\n`,`utf-8`),pl(z(n,`.gitignore`),`local/
3263
3263
  `,`utf-8`),t}export{E0 as $,wx as $i,XF as $n,Hj as $r,zB as $t,r9 as A,gw as Ai,jL as An,IP as Ar,dW as At,B5 as B,KS as Bi,QI as Bn,AN as Br,OH as Bt,w9 as C,dk as Ci,tR as Cn,KP as Cr,wG as Ct,n9 as D,ZE as Di,sR as Dn,zP as Dr,AG as Dt,$7 as E,eD as Ei,SR as En,RP as Er,OG as Et,O7 as F,dw as Fi,aL as Fn,Vae as Fr,UH as Ft,O5 as G,Ix as Gi,YI as Gn,bN as Gr,MH as Gt,Nme as H,eS as Hi,_L as Hn,SN as Hr,bH as Ht,k7 as I,Zre as Ii,mL as In,pP as Ir,BH as It,p8 as J,jx as Ji,BI as Jn,pN as Jr,EH as Jt,g8 as K,Ax as Ki,LI as Kn,hN as Kr,wH as Kt,R7 as L,qS as Li,tL as Ln,KN as Lr,FH as Lt,Q7 as M,mw as Mi,uL as Mn,jP as Mr,PW as Mt,K7 as N,fw as Ni,dL as Nn,DP as Nr,bG as Nt,a9 as O,NE as Oi,BL as On,LP as Or,CG as Ot,U7 as P,cie as Pi,fL as Pn,Bae as Pr,TW as Pt,X6 as Q,Ex as Qi,EI as Qn,Uj as Qr,BB as Qt,R5 as R,YS as Ri,cL as Rn,jN as Rr,gH as Rt,I9 as S,fk as Si,oR as Sn,qP as Sr,kG as St,x9 as T,QE as Ti,cR as Tn,JP as Tr,EG as Tt,M5 as U,G as Ui,vL as Un,TN as Ur,xH as Ut,z5 as V,RS as Vi,bL as Vn,CN as Vr,jH as Vt,j5 as W,$x as Wi,DL as Wn,wN as Wr,kH as Wt,d8 as X,kx as Xi,FI as Xn,PM as Xr,fH as Xt,m8 as Y,Nx as Yi,zI as Yn,mN as Yr,SH as Yt,c8 as Z,Ox as Zi,AI as Zn,BM as Zr,pH as Zt,Bge as _,gk as _i,LL as _n,toe as _r,aJ as _t,c_e as a,Km as aa,RA as ai,vB as an,dF as ar,J1 as at,F9 as b,pk as bi,UL as bn,YP as br,jG as bt,t_e as c,ku as ca,_A as ci,$R as cn,xF as cr,O1 as ct,Zge as d,nu as da,oA as di,iz as dn,hF as dr,m1 as dt,_x as ea,HA as ei,DB as en,ZF as er,D0 as et,qge as f,ou as fa,rA as fi,tz as fn,sF as fr,h1 as ft,Vge as g,Hk as gi,wR as gn,nF as gr,AJ as gt,Xge as h,Kl as ha,Vk as hi,TR as hn,oF as hr,Vq as ht,u_e as i,qm as ia,WA as ii,yB as in,uF as ir,Y1 as it,i9 as j,hw as ji,xL as jn,AP as jr,NW as jt,e9 as k,AE as ki,AL as kn,PP as kr,fW as kt,W9 as l,xu as la,sA as li,ez as ln,fF as lr,k1 as lt,Yge as m,ql as ma,iA as mi,nz as mn,iF as mr,pJ as mt,Z9 as n,Gm as na,GA as ni,SB as nn,eI as nr,N0 as nt,X9 as o,Ou as oa,yA as oi,hB as on,cF as or,F1 as ot,Jge as p,eu as pa,aA as pi,qR as pn,aF as pr,v$ as pt,_8 as q,Px as qi,RI as qn,yN as qr,CH as qt,$9 as r,Wm as ra,UA as ri,CB as rn,QF as rr,q1 as rt,o_e as s,Su as sa,EA as si,GR as sn,pF as sr,D1 as st,Q9 as t,Ire as ta,VA as ti,TB as tn,$F as tr,O0 as tt,$ge as u,ru as ua,nA as ui,YR as un,vF as ur,g1 as ut,Rge as v,_k as vi,lR as vn,ZP as vr,lJ as vt,C9 as w,$E as wi,HL as wn,Yae as wr,DG as wt,P9 as x,lk as xi,uR as xn,XP as xr,TG as xt,R9 as y,mk as yi,WL as yn,Jae as yr,BG as yt,Gme as z,GS as zi,SL as zn,MN as zr,AH as zt};
3264
- //# sourceMappingURL=src-PY_3X_er.mjs.map
3264
+ //# sourceMappingURL=src-Di1OsFoS.mjs.map