@inkeep/open-knowledge 0.5.0-beta.16 → 0.5.0-beta.17

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.
@@ -3,7 +3,7 @@ name: open-knowledge
3
3
  description: "MUST invoke when the project contains a .ok/ directory — before any read or edit of .md / .mdx files, any mcp__open-knowledge__ tool call, and any write_document / edit_document. Skip if no .ok/ — not an Open Knowledge project. Carries preview-attach (open preview browser at session start; one-shot on `action: attach-preview-once`), STOP rules for native Read/Grep/Edit on in-scope markdown, grounding rules (every factual claim needs a source), standard markdown linking with get_dead_links verification, image sourcing + alt-text + source-citation rules, folder-first organization with opt-in nested .ok/ frontmatter + templates, and the anti-pattern table. Authoritative — MCP server instructions and AGENTS.md overlap but do not substitute for the full attach rule, grounding rule, media rules, dead-link verification, and failure-mode guidance carried only here."
4
4
  compatibility: "Claude Code, Claude Desktop, Claude Cowork, Claude.ai web. Requires Open Knowledge MCP server + code execution."
5
5
  metadata:
6
- version: "0.5.0-beta.16"
6
+ version: "0.5.0-beta.17"
7
7
  author: "Inkeep"
8
8
  repository: "https://github.com/inkeep/open-knowledge"
9
9
  ---
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{o as e}from"./chunk-FK9Q3tQk.mjs";import{t}from"./esm-CEs3LWY3.mjs";import{$ as n,Ai as r,Bn as i,Ci as a,D as o,Di as s,E as c,Ei as l,G as u,Gr as d,H as f,Hr as p,Jr as m,Kn as h,Kr as g,Kt as ee,Lr as _,Oi as te,On as v,Si as y,Ti as b,Ur as ne,V as x,Vr as S,Wr as re,Yn as ie,Yr as ae,_i as oe,bi as se,cr as ce,fi as le,it as ue,ji as de,ki as fe,m as pe,ot as me,pn as he,wi as ge,xi as C,yi as _e}from"./dist-V31CRf7D.mjs";import{n as ve,r as ye,t as w}from"./dist-bundle-BSdjl7Rj.mjs";import{C as be,E as xe,S as Se,T as Ce,_ as we,b as Te,g as Ee,r as De,u as Oe,v as ke,w as Ae,x as je,y as Me}from"./init-Db-MJvF_.mjs";import{c as Ne,f as Pe,l as Fe,n as Ie,s as T}from"./server-lock-D7DXNVql-BRVVzA6T.mjs";import{i as Le}from"./git-handle-DwfYp_z--CfyPz4Dz.mjs";import{n as Re}from"./constants-XCszYh-u.mjs";import{n as ze,t as Be}from"./loader-BF1HVIAE.mjs";import{d as Ve,f as He,l as Ue,m as We,p as Ge,s as Ke}from"./start-DivgyWbO.mjs";import{c as qe,i as E,n as D,o as O,r as k,s as A,t as j}from"./colors-BNufdynn.mjs";import"./src-DzWkP5Kf.mjs";import{execFileSync as Je,spawn as Ye,spawnSync as M}from"node:child_process";import Xe,{basename as Ze,dirname as Qe,isAbsolute as $e,join as N,relative as et,resolve as P}from"node:path";import{closeSync as tt,existsSync as F,mkdirSync as nt,mkdtempSync as rt,openSync as it,readFileSync as I,readdirSync as at,rmSync as ot,unlinkSync as st,writeFileSync as ct}from"node:fs";import lt from"node:process";import{homedir as ut,hostname as dt,tmpdir as ft}from"node:os";import{fileURLToPath as pt}from"node:url";import{AsyncLocalStorage as mt,AsyncResource as ht}from"node:async_hooks";import{stripVTControlCharacters as gt,styleText as L}from"node:util";import*as _t from"node:readline";import{randomUUID as vt}from"node:crypto";import{realpath as yt}from"node:fs/promises";import{setTimeout as bt}from"node:timers/promises";import{createInterface as xt}from"node:readline/promises";var St=de();const Ct=`open-knowledge`;var wt=class{backend=`keyring`;async get(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{let n=new t(Ct,e).getPassword();return n==null?null:JSON.parse(n)}catch{return null}}async set(e,t,n,r){let{Entry:i}=await import(`@napi-rs/keyring`),a=new i(Ct,e),o={login:t,token:n,...r};a.setPassword(JSON.stringify(o))}async clear(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{new t(Ct,e).deletePassword()}catch{}}},Tt=class{backend=`file`;authFile;constructor(e){this.authFile=e??N(ut(),`.ok`,`auth.yml`)}read(){if(!F(this.authFile))return{};try{return(0,St.parse)(I(this.authFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[auth] Failed to parse ${this.authFile}: ${t}. Starting with empty credentials.\n`),{}}}write(e){let t=Qe(this.authFile);F(t)||nt(t,{recursive:!0,mode:448}),ct(this.authFile,(0,St.stringify)(e),{mode:384})}async get(e){return this.read()[e]??null}async set(e,t,n,r){let i=this.read();i[e]={login:t,token:n,...r},this.write(i)}async clear(e){let t=this.read();delete t[e],this.write(t)}};async function Et(e){try{let{Entry:e}=await import(`@napi-rs/keyring`);return new e(Ct,`__probe__`),process.stderr.write(`[auth] token storage: OS keychain
2
+ import{o as e}from"./chunk-FK9Q3tQk.mjs";import{t}from"./esm-CEs3LWY3.mjs";import{$ as n,Ai as r,Bn as i,Ci as a,D as o,Di as s,E as c,Ei as l,G as u,Gr as d,H as f,Hr as p,Jr as m,Kn as h,Kr as g,Kt as ee,Lr as _,Oi as te,On as v,Si as y,Ti as b,Ur as ne,V as x,Vr as S,Wr as re,Yn as ie,Yr as ae,_i as oe,bi as se,cr as ce,fi as le,it as ue,ji as de,ki as fe,m as pe,ot as me,pn as he,wi as ge,xi as C,yi as _e}from"./dist-V31CRf7D.mjs";import{n as ve,r as ye,t as w}from"./dist-bundle-BSdjl7Rj.mjs";import{C as be,E as xe,S as Se,T as Ce,_ as we,b as Te,g as Ee,r as De,u as Oe,v as ke,w as Ae,x as je,y as Me}from"./init-CTIvDudd.mjs";import{c as Ne,f as Pe,l as Fe,n as Ie,s as T}from"./server-lock-D7DXNVql-BRVVzA6T.mjs";import{i as Le}from"./git-handle-DwfYp_z--CfyPz4Dz.mjs";import{n as Re}from"./constants-C7p5YUDU.mjs";import{n as ze,t as Be}from"./loader-DtWxxtIg.mjs";import{d as Ve,f as He,l as Ue,m as We,p as Ge,s as Ke}from"./start-Dn5ErPhn.mjs";import{c as qe,i as E,n as D,o as O,r as k,s as A,t as j}from"./colors-BNufdynn.mjs";import"./src-ChHpOaMx.mjs";import{execFileSync as Je,spawn as Ye,spawnSync as M}from"node:child_process";import Xe,{basename as Ze,dirname as Qe,isAbsolute as $e,join as N,relative as et,resolve as P}from"node:path";import{closeSync as tt,existsSync as F,mkdirSync as nt,mkdtempSync as rt,openSync as it,readFileSync as I,readdirSync as at,rmSync as ot,unlinkSync as st,writeFileSync as ct}from"node:fs";import lt from"node:process";import{homedir as ut,hostname as dt,tmpdir as ft}from"node:os";import{fileURLToPath as pt}from"node:url";import{AsyncLocalStorage as mt,AsyncResource as ht}from"node:async_hooks";import{stripVTControlCharacters as gt,styleText as L}from"node:util";import*as _t from"node:readline";import{randomUUID as vt}from"node:crypto";import{realpath as yt}from"node:fs/promises";import{setTimeout as bt}from"node:timers/promises";import{createInterface as xt}from"node:readline/promises";var St=de();const Ct=`open-knowledge`;var wt=class{backend=`keyring`;async get(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{let n=new t(Ct,e).getPassword();return n==null?null:JSON.parse(n)}catch{return null}}async set(e,t,n,r){let{Entry:i}=await import(`@napi-rs/keyring`),a=new i(Ct,e),o={login:t,token:n,...r};a.setPassword(JSON.stringify(o))}async clear(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{new t(Ct,e).deletePassword()}catch{}}},Tt=class{backend=`file`;authFile;constructor(e){this.authFile=e??N(ut(),`.ok`,`auth.yml`)}read(){if(!F(this.authFile))return{};try{return(0,St.parse)(I(this.authFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[auth] Failed to parse ${this.authFile}: ${t}. Starting with empty credentials.\n`),{}}}write(e){let t=Qe(this.authFile);F(t)||nt(t,{recursive:!0,mode:448}),ct(this.authFile,(0,St.stringify)(e),{mode:384})}async get(e){return this.read()[e]??null}async set(e,t,n,r){let i=this.read();i[e]={login:t,token:n,...r},this.write(i)}async clear(e){let t=this.read();delete t[e],this.write(t)}};async function Et(e){try{let{Entry:e}=await import(`@napi-rs/keyring`);return new e(Ct,`__probe__`),process.stderr.write(`[auth] token storage: OS keychain
3
3
  `),new wt}catch{return process.stderr.write(`[auth] token storage: file (~/.ok/auth.yml)
4
4
  `),new Tt(e)}}async function Dt(e,t,n){let r=Ot(await kt(e)).host??``;if(!r)return 1;let i=await n.get(r);if(i==null)return 1;let a=e=>e.replace(/[\r\n]/g,``);return t.write(`username=${a(i.login)}\npassword=${a(i.token)}\n`),0}function Ot(e){let t={};for(let n of e.split(`
5
5
  `)){let e=n.trim();if(e===``)continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r)]=e.slice(r+1))}return t}function kt(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>r.push(e)),e.on(`end`,()=>t(Buffer.concat(r).toString(`utf-8`))),e.on(`error`,n)})}function At(e){let n=new t(`git-credential`);return n.description(`Git credential helper (git credential-helper protocol)`),n.command(`get`).description(`Lookup credentials from TokenStore (called by git)`).action(async()=>{let t=await e(),n=await Dt(process.stdin,process.stdout,t);process.exit(n)}),n}function jt(e){let t=e.endpoint.DEFAULTS;return/^https:\/\/(api\.)?github\.com$/.test(t.baseUrl)?`https://github.com`:t.baseUrl.replace(`/api/v3`,``)}async function Mt(e,t,n){let r={baseUrl:jt(e),headers:{accept:`application/json`},...n},i=await e(t,r);if(`error`in i.data){let n=new ve(`${i.data.error_description} (${i.data.error}, ${i.data.error_uri})`,400,{request:e.endpoint.merge(t,r)});throw n.response=i,n}return i}async function Nt(e){let t=e.request||w,n={client_id:e.clientId};return`scopes`in e&&Array.isArray(e.scopes)&&(n.scope=e.scopes.join(` `)),Mt(t,`POST /login/device/code`,n)}async function Pt(e){let t=await Mt(e.request||w,`POST /login/oauth/access_token`,{client_id:e.clientId,device_code:e.code,grant_type:`urn:ietf:params:oauth:grant-type:device_code`}),n={clientType:e.clientType,clientId:e.clientId,token:t.data.access_token,scopes:t.data.scope.split(/\s+/).filter(Boolean)};if(`clientSecret`in e&&(n.clientSecret=e.clientSecret),e.clientType===`github-app`){if(`refresh_token`in t.data){let e=new Date(t.headers.date).getTime();n.refreshToken=t.data.refresh_token,n.expiresAt=Ft(e,t.data.expires_in),n.refreshTokenExpiresAt=Ft(e,t.data.refresh_token_expires_in)}delete n.scopes}return{...t,authentication:n}}function Ft(e,t){return new Date(e+t*1e3).toISOString()}async function It(e,t){let n=Lt(e,t.auth);if(n)return n;let{data:r}=await Nt({clientType:e.clientType,clientId:e.clientId,request:t.request||e.request,scopes:t.auth.scopes||e.scopes});await e.onVerification(r);let i=await zt(t.request||e.request,e.clientId,e.clientType,r);return e.authentication=i,i}function Lt(e,t){if(t.refresh===!0||!e.authentication)return!1;if(e.clientType===`github-app`)return e.authentication;let n=e.authentication;return(`scopes`in t&&t.scopes||e.scopes).join(` `)===n.scopes.join(` `)?n:!1}async function Rt(e){await new Promise(t=>setTimeout(t,e*1e3))}async function zt(e,t,n,r){try{let i={clientId:t,request:e,code:r.device_code},{authentication:a}=n===`oauth-app`?await Pt({...i,clientType:`oauth-app`}):await Pt({...i,clientType:`github-app`});return{type:`token`,tokenType:`oauth`,...a}}catch(i){if(!i.response)throw i;let a=i.response.data.error;if(a===`authorization_pending`)return await Rt(r.interval),zt(e,t,n,r);if(a===`slow_down`)return await Rt(r.interval+7),zt(e,t,n,r);throw i}}async function Bt(e,t){return It(e,{auth:t})}async function Vt(e,t,n,r){let i=t.endpoint.merge(n,r);if(/\/login\/(oauth\/access_token|device\/code)$/.test(i.url))return t(i);let{token:a}=await It(e,{request:t,auth:{type:`oauth`}});return i.headers.authorization=`token ${a}`,t(i)}var Ht=`0.0.0-development`;function Ut(e){let t=e.request||w.defaults({headers:{"user-agent":`octokit-auth-oauth-device.js/${Ht} ${ye()}`}}),{request:n=t,...r}=e,i=e.clientType===`github-app`?{...r,clientType:`github-app`,request:n}:{...r,clientType:`oauth-app`,request:n,scopes:e.scopes||[]};if(!e.clientId)throw Error(`[@octokit/auth-oauth-device] "clientId" option must be set (https://github.com/octokit/auth-oauth-device.js#usage)`);if(!e.onVerification)throw Error(`[@octokit/auth-oauth-device] "onVerification" option must be a function (https://github.com/octokit/auth-oauth-device.js#usage)`);return Object.assign(Bt.bind(null,i),{hook:Vt.bind(null,i)})}async function Wt(e){let{clientId:t,scopes:n=[`repo`,`read:user`,`user:email`],onVerification:r,host:i}=e,a=i&&i!==`github.com`?`https://${i}/api/v3`:`https://api.github.com`,o=Ut({clientType:`oauth-app`,clientId:t,scopes:n,onVerification:async e=>{await r({verificationUri:e.verification_uri,userCode:e.user_code,expiresIn:e.expires_in,interval:e.interval})},request:a===`https://api.github.com`?void 0:(await import(`./dist-bundle-BmF5_Mcp.mjs`)).request.defaults({baseUrl:a})}),s;try{s=await o({type:`oauth`})}catch(e){if(e instanceof Error){let t=e.message.toLowerCase();throw t.includes(`access_denied`)?Error(`Device-flow authorization was denied.`):t.includes(`expired_token`)||t.includes(`timeout`)||t.includes(`timed out`)?Error(`Device-flow code expired before authorization — please try again.`):Error(`GitHub sign-in failed: ${e.message}`)}throw e}return{token:s.token,tokenType:s.tokenType,scopes:s.scopes??[]}}const Gt={invalid_type:`invalid_type`,too_big:`too_big`,too_small:`too_small`,invalid_format:`invalid_format`,not_multiple_of:`not_multiple_of`,unrecognized_keys:`unrecognized_keys`,invalid_union:`invalid_union`,invalid_key:`invalid_key`,invalid_element:`invalid_element`,invalid_value:`invalid_value`,custom:`custom`};var Kt;(function(e){})(Kt||={});function qt(e){return fe(_e,e)}function Jt(){return process.env.OPEN_KNOWLEDGE_GITHUB_CLIENT_ID??`Ov23liqlSd0V1MwR6rhI`}const Yt=new Set([`gitlab.com`,`bitbucket.org`,`codeberg.org`,`gitea.com`,`sr.ht`,`sourcehut.org`]);function Xt(e){let t=e.toLowerCase().replace(/:\d+$/,``);Yt.has(t)&&(process.stderr.write(`Error: ${e} is not a GitHub host. Only GitHub and GitHub Enterprise Server are supported.\n`),process.exit(1))}function Zt(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function Qt(e,t,n=Wt){let r=Jt(),{host:i,json:a}=e;Xt(i),a||process.stderr.write(`Logging in to ${i}\n`);let o=await n({clientId:r,host:i===`github.com`?void 0:i,onVerification:e=>{e.userCode,e.verificationUri,a?Zt(!0,{type:`verification`,user_code:e.userCode,verification_uri:e.verificationUri,expires_in:e.expiresIn}):process.stderr.write(`Open: ${e.verificationUri}\nEnter code: ${e.userCode}\n`)}}),s=`unknown`,c,l;try{let e=i===`github.com`?`https://api.github.com`:`https://${i}/api/v3`,t=await fetch(`${e}/user`,{headers:{Authorization:`Bearer ${o.token}`,"User-Agent":`open-knowledge-cli`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();s=e.login??s,c=e.name??void 0,l=e.email??void 0}}catch{}await t.set(i,s,o.token,{gitProtocol:`https`,name:c,email:l}),a?Zt(!0,{type:`complete`,host:i,login:s}):process.stderr.write(`✓ Logged in as ${s} on ${i}\n`)}function $t(e){return new t(`login`).description(`Authenticate with GitHub via Device Flow`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{await Qt(t,await e())})}const en=e=>e.name===`enter`||e.name===`return`;var tn=class extends Error{name=`AbortPromptError`;message=`Prompt was aborted`;constructor(e){super(),this.cause=e?.cause}},nn=class extends Error{name=`CancelPromptError`;message=`Prompt was canceled`},rn=class extends Error{name=`ExitPromptError`},an=class extends Error{name=`HookError`},on=class extends Error{name=`ValidationError`};const sn=new mt;function cn(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function ln(e,t){let n=cn(e);return sn.run(n,()=>{function e(e){n.handleChange=()=>{n.index=0,e()},n.handleChange()}return t(e)})}function R(){let e=sn.getStore();if(!e)throw new an(`[Inquirer] Hook functions can only be called from within a prompt`);return e}function un(){return R().rl}function dn(e){return ht.bind((...t)=>{let n=R(),r=!1,i=n.handleChange;n.handleChange=()=>{r=!0};let a=e(...t);return r&&i(),n.handleChange=i,a})}function fn(e){let t=R(),{index:n}=t,r=e({get(){return t.hooks[n]},set(e){t.hooks[n]=e},initialized:n in t.hooks});return t.index++,r}function pn(){R().handleChange()}const mn={queue(e){let t=R(),{index:n}=t;t.hooksEffect.push(()=>{t.hooksCleanup[n]?.();let r=e(un());if(r!=null&&typeof r!=`function`)throw new on(`useEffect return value must be a cleanup function or nothing.`);t.hooksCleanup[n]=r})},run(){let e=R();dn(()=>{e.hooksEffect.forEach(e=>{e()}),e.hooksEffect.length=0})()},clearAll(){let e=R();e.hooksCleanup.forEach(e=>{e?.()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}};function hn(e){return typeof e==`function`}function z(e){return fn(t=>{let n=ht.bind(function(e){t.get()!==e&&(t.set(e),pn())});if(t.initialized)return[t.get(),n];let r=hn(e)?e():e;return t.set(r),[r,n]})}function gn(e,t){fn(n=>{let r=n.get();(!Array.isArray(r)||t.some((e,t)=>!Object.is(e,r[t])))&&mn.queue(e),n.set(t)})}const _n={prefix:{idle:L(`blue`,`?`),done:L(`green`,xe.tick)},spinner:{interval:80,frames:[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`].map(e=>L(`yellow`,e))},style:{answer:e=>L(`cyan`,e),message:e=>L(`bold`,e),error:e=>L(`red`,`> ${e}`),defaultAnswer:e=>L(`dim`,`(${e})`),help:e=>L(`dim`,e),highlight:e=>L(`cyan`,e),key:e=>L(`cyan`,L(`bold`,`<${e}>`))}};function vn(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function yn(...e){let t={};for(let n of e)for(let[e,r]of Object.entries(n)){let n=t[e];t[e]=vn(n)&&vn(r)?yn(n,r):r}return t}function bn(...e){return yn(_n,...e.filter(e=>e!=null))}function xn({status:e=`idle`,theme:t}){let[n,r]=z(!1),[i,a]=z(0),{prefix:o,spinner:s}=bn(t);return gn(()=>{if(e===`loading`){let e,t=-1,n=setTimeout(()=>{r(!0),e=setInterval(()=>{t+=1,a(t%s.frames.length)},s.interval)},300);return()=>{clearTimeout(n),clearInterval(e)}}else r(!1)},[e]),n?s.frames[i]:typeof o==`string`?o:o[e===`loading`?`idle`:e]??o.idle}function Sn(e){return z({current:e})[0]}function Cn(e){let t=Sn(e);t.current=e,gn(e=>{let n=!1,r=dn((r,i)=>{n||t.current(i,e)});return e.input.on(`keypress`,r),()=>{n=!0,e.input.removeListener(`keypress`,r)}},[])}var wn=e(Ce(),1);function Tn(e,t){return e.split(`
@@ -17,10 +17,10 @@ import{o as e}from"./chunk-FK9Q3tQk.mjs";import{t}from"./esm-CEs3LWY3.mjs";impor
17
17
  `),process.exit(1)}await t.set(r,c,a,{gitProtocol:`https`,name:l,email:u}),i?process.stdout.write(`${JSON.stringify({type:`complete`,host:r,login:c})}\n`):process.stderr.write(`✓ PAT stored for ${c} on ${r}\n`)}function Mr(e){return new t(`pat`).description(`Store a Personal Access Token`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await jr(t,await e())})}async function Nr(e,t){let{host:n,json:r}=e;Xt(n);let i=await t.get(n);i??(process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new Ar({auth:i.token,...a?{baseUrl:a}:{}}),s=[];for await(let e of o.paginate.iterator(o.repos.listForAuthenticatedUser,{per_page:100,sort:`updated`}))for(let t of e.data)s.push({full_name:t.full_name,clone_url:t.clone_url,private:t.private});if(r)process.stdout.write(`${JSON.stringify({type:`repos`,host:n,repos:s})}\n`);else for(let e of s)process.stdout.write(`${e.full_name} ${e.clone_url}\n`)}function Pr(e){return new t(`repos`).description(`List accessible repositories`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await Nr(t,await e())})}async function Fr(e,t){let{host:n}=e;await t.clear(n),process.stderr.write(`✓ Signed out from ${n}\n`)}function Ir(e){return new t(`signout`).description(`Remove stored credentials`).option(`--host <host>`,`GitHub hostname`,`github.com`).action(async t=>{await Fr(t,await e())})}async function Lr(e,t){let{host:n,json:r}=e;Xt(n);let i=await t.get(n);i??(r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!1})}\n`):process.stderr.write(`Not logged in to ${n}\n`),process.exit(1));let a=n===`github.com`?void 0:`https://${n}/api/v3`,o=new Ar({auth:i.token,...a?{baseUrl:a}:{}});try{let{data:e}=await o.users.getAuthenticated();r?process.stdout.write(`${JSON.stringify({type:`status`,host:n,authenticated:!0,login:e.login,name:e.name,email:e.email})}\n`):process.stderr.write(`✓ Logged in as ${e.login} on ${n}\n`)}catch{r?process.stdout.write(JSON.stringify({type:`status`,host:n,authenticated:!1,error:`token invalid`})+`
18
18
  `):process.stderr.write(`✗ Token invalid for ${n}\n`),process.exit(1)}}function Rr(e){return new t(`status`).description(`Show authentication status`).option(`--host <host>`,`GitHub or GitHub Enterprise hostname`,`github.com`).option(`--json`,`Output JSON`,!1).action(async t=>{await Lr(t,await e())})}function zr(){let e=new t(`auth`);e.description(`GitHub authentication management`);let n=()=>Et();return e.addCommand($t(n)),e.addCommand(Rr(n)),e.addCommand(Pr(n)),e.addCommand(Ir(n)),e.addCommand(Mr(n)),e.addCommand(At(n)),e}function V(e,t,n={}){let r=Fe(e,t);if(!F(r))return{status:`missing`,lockPath:r};let i;try{i=JSON.parse(I(r,`utf-8`))}catch{return{status:`corrupt`,lockPath:r}}if(!i||typeof i!=`object`||!Ne(i.pid))return{status:`corrupt`,lockPath:r};let a=i;if(!(n.isAlive??T)(a.pid))return{status:`dead-pid`,lockPath:r,lock:a};let o=n.host??dt();return a.hostname===o?{status:`alive`,lockPath:r,lock:a}:{status:`foreign-host`,lockPath:r,lock:a}}function Br(e,t){let n=[];for(let[r,i]of[[`server`,e],[`ui`,t]])(i.status===`dead-pid`||i.status===`corrupt`)&&n.push({name:r,lockPath:i.lockPath,reason:i.status});return{prune:n}}function Vr(e){let t=e.inspect??(t=>V(e.lockDir,t)),n=e.unlink??(e=>st(e)),r=e.log??(e=>console.log(e)),i=e.error??(e=>console.error(e)),a=Br(t(`server`),t(`ui`));if(a.prune.length===0)return r(`No stale locks.`),{pruned:[],failed:[]};let o=[],s=[];for(let e of a.prune)try{n(e.lockPath),o.push(e)}catch(t){s.push({target:e,error:t instanceof Error?t.message:String(t)})}if(o.length>0){let e=o.map(e=>`${e.name} (${e.reason})`).join(`, `);r(`Pruned ${o.length} stale lock${o.length===1?``:`s`}: ${e}`)}return s.length>0&&i(`Failed to prune: ${s.map(({target:e,error:t})=>`${e.name} (${e.lockPath}): ${t}`).join(`; `)}`),{pruned:o,failed:s}}function Hr(e){return new t(`clean`).description(`Prune stale / corrupt open-knowledge lock files (never touches live locks)`).action(()=>{e(),Vr({lockDir:ie(process.cwd())}).failed.length>0&&(process.exitCode=1)})}function Ur(){try{let e=Je(`gh`,[`auth`,`token`],{encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3}).trim();return e.length===0?{available:!1}:{available:!0,token:e}}catch{return{available:!1}}}async function Wr(e,t,n={},r=Ur){if(!n.skipGhDetect&&r().available)return{tier:`A`,credentialArgs:[`-c`,`credential.helper=!gh auth git-credential`]};let i=await t.get(e);return i==null?{tier:`none`,credentialArgs:[]}:{tier:i.gitProtocol===`ssh`?`C`:`B`,credentialArgs:[`-c`,`credential.helper=!open-knowledge auth git-credential`]}}function Gr(e){return e.replace(/:\d+$/,``)}function Kr(e){let t=e.trim();if(!t)return null;{let e=/^https?:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`https`,hostname:Gr(e[1]),owner:e[2],name:e[3]}}{let e=/^ssh:\/\/(?:[\w.-]+@)?([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`ssh`,hostname:Gr(e[1]),owner:e[2],name:e[3]}}{let e=/^git:\/\/([^/?#]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:Gr(e[1]),owner:e[2],name:e[3]}}{let e=/^(?:[\w.-]+@)?([\w.-]+):([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e?.[1].includes(`.`)||e&&t.startsWith(`git@`))return{protocol:`ssh`,hostname:e[1],owner:e[2],name:e[3]}}{let e=/^git:([\w.-]+)\/([\w.\-~%]+)\/([\w.\-~%]+?)(?:\.git)?\/?$/.exec(t);if(e)return{protocol:`git`,hostname:e[1],owner:e[2],name:e[3]}}if(!t.includes(`://`)&&!t.includes(`@`)&&!t.startsWith(`/`)){let e=/^([\w.-]+)\/([\w.\-~%]+?)(?:\.git)?$/.exec(t);if(e)return{protocol:`https`,hostname:`github.com`,owner:e[1],name:e[2]}}return null}const qr=[[`count`,0,10],[`compress`,10,20],[`receiv`,20,60],[`resolv`,60,100]];function Jr(e){let t=/^([\w ]+):\s+(\d+)%/.exec(e.trim());if(!t)return null;let n=t[1].toLowerCase(),r=Number(t[2]);for(let[e,i,a]of qr)if(n.includes(e))return{stage:t[1],pct:Math.round(i+r/100*(a-i))};return null}function H(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function Yr(e,t,n,r=process.cwd()){let i=Kr(e);if(!i)throw Error(`Invalid git URL: ${e}`);let a=t.dir?P(r,t.dir):P(r,i.name);if(F(a)&&at(a).length>0)throw Error(`Target directory is not empty: ${a}`);let o=await Et(),s=await Wr(i.hostname,o,{}),c=Le({baseDir:r,config:s.credentialArgs.length>=2?[s.credentialArgs[1]]:[],unsafe:{allowUnsafeCredentialHelper:!0}}).env({GIT_TERMINAL_PROMPT:`0`}),l=-1;c.outputHandler((e,n,r)=>{r.on(`data`,e=>{let n=e.toString(`utf-8`);for(let e of n.split(`
19
19
  `)){let n=Jr(e);n&&n.pct!==l&&(l=n.pct,H(t.json,{type:`progress`,pct:n.pct,stage:n.stage}),t.json||process.stderr.write(`\r Cloning ${n.pct}%`))}})}),await c.clone(e,a,[`--progress`]),t.json||process.stderr.write(`
20
- `);try{let{runInit:e}=await import(`./init-De5O5Atd.mjs`),n=await e({cwd:a,mcp:!1});if(n.contentUpdated.length>0){let e=`auto-init: updated ${n.contentUpdated.join(`, `)}`;t.json?H(!0,{type:`warning`,message:e}):process.stderr.write(` ${e}\n`)}}catch(e){let n=e instanceof Error?e.message:String(e);t.json?H(!0,{type:`warning`,message:`auto-init: ${n}`}):process.stderr.write(` auto-init: ${n}\n`)}try{Xr(a)}catch(e){let n=e instanceof Error?e.message:String(e);t.json?H(!0,{type:`warning`,message:`git-exclude: ${n}`}):process.stderr.write(` git-exclude: ${n}\n`)}return a}function Xr(e){let t=N(e,`.git`,`info`,`exclude`);if(!F(t))return`no-exclude`;let n=I(t,`utf-8`),r=new Set([`.ok`,`.ok/`,`/.ok`,`/.ok/`]);return n.split(`
20
+ `);try{let{runInit:e}=await import(`./init-dWpTUh9M.mjs`),n=await e({cwd:a,mcp:!1});if(n.contentUpdated.length>0){let e=`auto-init: updated ${n.contentUpdated.join(`, `)}`;t.json?H(!0,{type:`warning`,message:e}):process.stderr.write(` ${e}\n`)}}catch(e){let n=e instanceof Error?e.message:String(e);t.json?H(!0,{type:`warning`,message:`auto-init: ${n}`}):process.stderr.write(` auto-init: ${n}\n`)}try{Xr(a)}catch(e){let n=e instanceof Error?e.message:String(e);t.json?H(!0,{type:`warning`,message:`git-exclude: ${n}`}):process.stderr.write(` git-exclude: ${n}\n`)}return a}function Xr(e){let t=N(e,`.git`,`info`,`exclude`);if(!F(t))return`no-exclude`;let n=I(t,`utf-8`),r=new Set([`.ok`,`.ok/`,`/.ok`,`/.ok/`]);return n.split(`
21
21
  `).map(e=>e.trim()).some(e=>r.has(e))?`already-present`:(ct(t,`${n}${n.length===0||n.endsWith(`
22
22
  `)?``:`
23
- `}.ok/\n`,`utf-8`),`appended`)}function Zr(e){return new t(`clone`).description(`Clone a git repository and open it`).argument(`<url>`,`Repository URL or owner/repo shorthand`).argument(`[dir]`,`Target directory (default: ./<repo-name>)`).option(`--json`,`Output JSONL progress events`,!1).action(async(t,n,r)=>{let i=e();try{let a=await Yr(t,{json:r.json,dir:n},i);if(r.json)H(!0,{type:`complete`,dir:a});else{process.stderr.write(`✓ Cloned to ${a}\n`),process.chdir(a);let{startCommand:t}=await import(`./start-D6YbKWO-.mjs`);await t(e).parseAsync([],{from:`user`})}}catch(e){let t=e instanceof Error?e.message:String(e);r.json?H(!0,{type:`error`,message:t}):process.stderr.write(`✗ ${t}\n`),process.exitCode=1}})}const Qr=[[`sync`],[`persistence`,`debounceMs`],[`persistence`,`maxDebounceMs`],[`server`,`port`],[`content`,`include`],[`content`,`exclude`]];function $r(e={}){let t=e.log??(e=>console.error(e)),n=e.error??(e=>console.error(e)),r=e.loadConfigFn??ze;try{let{sources:n}=r(e.cwd);return t(`✓ Configuration valid (sources: ${n.length===0?`defaults only`:n.join(`, `)})`),{ok:!0}}catch(e){return n(e instanceof Error?e.message:String(e)),{ok:!1}}}function ei(e){let t=(0,St.parseDocument)(I(e,`utf-8`));if(t.errors.length>0)throw Error(`Could not parse ${e}: ${t.errors.map(e=>e.message).join(`; `)}`);let n=[];for(let e of Qr)t.hasIn(e)&&n.push(e.join(`.`));return n}function ti(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ni(e){let t={};for(let n of e){let e=t;for(let t=0;t<n.length-1;t++){let r=n[t],i=e[r],a=ti(i)?i:{};e[r]=a,e=a}e[n[n.length-1]]=null}return t}async function ri(e={}){let t=e.log??(e=>console.log(e)),n=e.error??(e=>console.error(e)),r=e.scope??`both`,i=e.dryRun??!1,a=e.cwd??process.cwd(),o=e.writeConfigPatchFn??ae,s=[];(r===`project`||r===`both`)&&s.push({scope:`project`,absPath:m(`project`,a,e.homedirOverride)}),(r===`user`||r===`both`)&&s.push({scope:`user`,absPath:m(`user`,a,e.homedirOverride)});let c=[],l=!0;for(let{scope:t,absPath:n}of s){if(!F(n)){c.push({path:n,scope:t,found:[],removed:[]});continue}let r;try{r=ei(n)}catch(e){let r=e instanceof Error?e.message:String(e);c.push({path:n,scope:t,found:[],removed:[],error:r}),l=!1;continue}if(r.length===0||i){c.push({path:n,scope:t,found:r,removed:[]});continue}let s=await o({cwd:a,scope:t,patch:ni(Qr.filter(e=>r.includes(e.join(`.`)))),homedirOverride:e.homedirOverride});if(!s.ok){c.push({path:n,scope:t,found:r,removed:[],error:le(s.error)}),l=!1;continue}c.push({path:n,scope:t,found:r,removed:r})}for(let e of c)e.error&&n(`✗ ${e.path}: ${e.error}`);let u=c.some(e=>e.error!==void 0),d=c.reduce((e,t)=>e+t.found.length,0);if(d===0&&!u)t(`No deprecated fields found.`);else if(d>0)for(let e of c)e.error||(e.found.length===0?t(` ${e.path}: no deprecated fields`):t(i?`[dry-run] ${e.path}: would remove ${e.found.length} field(s): ${e.found.join(`, `)}`:`✓ ${e.path}: removed ${e.removed.length} field(s): ${e.removed.join(`, `)}`));return{outcomes:c,ok:l}}function ii(){let e=new t(`config`).description(`Inspect and maintain Open Knowledge configuration files`);return e.command(`validate`).description(`Validate the merged config (defaults → user → project)`).action(()=>{$r({}).ok||(process.exitCode=1)}),e.command(`migrate`).description(`Remove deprecated config fields (sync.*, persistence.{debounceMs,maxDebounceMs}, server.port, content.{include,exclude}) idempotently`).option(`--scope <scope>`,`Which scope to migrate: project | user | both`,`both`).option(`--dry-run`,`Preview without writing`,!1).action(async e=>{let t=e.scope;if(t!==`project`&&t!==`user`&&t!==`both`){console.error(`Invalid --scope: ${t}. Expected: project | user | both`),process.exitCode=2;return}(await ri({scope:t,dryRun:e.dryRun})).ok||(process.exitCode=1)}),e}var U=e(qe(),1);const W=2e3,ai=[/cli\.mjs/,/(^|[\s/])(open-knowledge|ok)\s+(start|mcp|ui)(\s|$)/,/(^|[\s/])bun([\s/]).*?(run dev|packages\/app|vite|hocuspocus)/,/(^|[\s/])node([\s/]).*?(packages\/(cli|app)|vite|hocuspocus)/,/(^|\s)--ok-lock-dir-b64=/];function oi(e){return ai.some(t=>t.test(e))}function si(e){let t=e.trim().split(/\s+/).find(e=>e.startsWith(`--ok-lock-dir-b64=`));if(t==null)return null;let n=t.slice(18);if(!n)return null;try{let e=Buffer.from(n,`base64url`).toString(`utf8`);return $e(e)?e:null}catch{return null}}function ci(e){let t=[];for(let n of e.split(`
23
+ `}.ok/\n`,`utf-8`),`appended`)}function Zr(e){return new t(`clone`).description(`Clone a git repository and open it`).argument(`<url>`,`Repository URL or owner/repo shorthand`).argument(`[dir]`,`Target directory (default: ./<repo-name>)`).option(`--json`,`Output JSONL progress events`,!1).action(async(t,n,r)=>{let i=e();try{let a=await Yr(t,{json:r.json,dir:n},i);if(r.json)H(!0,{type:`complete`,dir:a});else{process.stderr.write(`✓ Cloned to ${a}\n`),process.chdir(a);let{startCommand:t}=await import(`./start-DQMdsVPS.mjs`);await t(e).parseAsync([],{from:`user`})}}catch(e){let t=e instanceof Error?e.message:String(e);r.json?H(!0,{type:`error`,message:t}):process.stderr.write(`✗ ${t}\n`),process.exitCode=1}})}const Qr=[[`sync`],[`persistence`,`debounceMs`],[`persistence`,`maxDebounceMs`],[`server`,`port`],[`content`,`include`],[`content`,`exclude`]];function $r(e={}){let t=e.log??(e=>console.error(e)),n=e.error??(e=>console.error(e)),r=e.loadConfigFn??ze;try{let{sources:n}=r(e.cwd);return t(`✓ Configuration valid (sources: ${n.length===0?`defaults only`:n.join(`, `)})`),{ok:!0}}catch(e){return n(e instanceof Error?e.message:String(e)),{ok:!1}}}function ei(e){let t=(0,St.parseDocument)(I(e,`utf-8`));if(t.errors.length>0)throw Error(`Could not parse ${e}: ${t.errors.map(e=>e.message).join(`; `)}`);let n=[];for(let e of Qr)t.hasIn(e)&&n.push(e.join(`.`));return n}function ti(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ni(e){let t={};for(let n of e){let e=t;for(let t=0;t<n.length-1;t++){let r=n[t],i=e[r],a=ti(i)?i:{};e[r]=a,e=a}e[n[n.length-1]]=null}return t}async function ri(e={}){let t=e.log??(e=>console.log(e)),n=e.error??(e=>console.error(e)),r=e.scope??`both`,i=e.dryRun??!1,a=e.cwd??process.cwd(),o=e.writeConfigPatchFn??ae,s=[];(r===`project`||r===`both`)&&s.push({scope:`project`,absPath:m(`project`,a,e.homedirOverride)}),(r===`user`||r===`both`)&&s.push({scope:`user`,absPath:m(`user`,a,e.homedirOverride)});let c=[],l=!0;for(let{scope:t,absPath:n}of s){if(!F(n)){c.push({path:n,scope:t,found:[],removed:[]});continue}let r;try{r=ei(n)}catch(e){let r=e instanceof Error?e.message:String(e);c.push({path:n,scope:t,found:[],removed:[],error:r}),l=!1;continue}if(r.length===0||i){c.push({path:n,scope:t,found:r,removed:[]});continue}let s=await o({cwd:a,scope:t,patch:ni(Qr.filter(e=>r.includes(e.join(`.`)))),homedirOverride:e.homedirOverride});if(!s.ok){c.push({path:n,scope:t,found:r,removed:[],error:le(s.error)}),l=!1;continue}c.push({path:n,scope:t,found:r,removed:r})}for(let e of c)e.error&&n(`✗ ${e.path}: ${e.error}`);let u=c.some(e=>e.error!==void 0),d=c.reduce((e,t)=>e+t.found.length,0);if(d===0&&!u)t(`No deprecated fields found.`);else if(d>0)for(let e of c)e.error||(e.found.length===0?t(` ${e.path}: no deprecated fields`):t(i?`[dry-run] ${e.path}: would remove ${e.found.length} field(s): ${e.found.join(`, `)}`:`✓ ${e.path}: removed ${e.removed.length} field(s): ${e.removed.join(`, `)}`));return{outcomes:c,ok:l}}function ii(){let e=new t(`config`).description(`Inspect and maintain Open Knowledge configuration files`);return e.command(`validate`).description(`Validate the merged config (defaults → user → project)`).action(()=>{$r({}).ok||(process.exitCode=1)}),e.command(`migrate`).description(`Remove deprecated config fields (sync.*, persistence.{debounceMs,maxDebounceMs}, server.port, content.{include,exclude}) idempotently`).option(`--scope <scope>`,`Which scope to migrate: project | user | both`,`both`).option(`--dry-run`,`Preview without writing`,!1).action(async e=>{let t=e.scope;if(t!==`project`&&t!==`user`&&t!==`both`){console.error(`Invalid --scope: ${t}. Expected: project | user | both`),process.exitCode=2;return}(await ri({scope:t,dryRun:e.dryRun})).ok||(process.exitCode=1)}),e}var U=e(qe(),1);const W=2e3,ai=[/cli\.mjs/,/(^|[\s/])(open-knowledge|ok)\s+(start|mcp|ui)(\s|$)/,/(^|[\s/])bun([\s/]).*?(run dev|packages\/app|vite|hocuspocus)/,/(^|[\s/])node([\s/]).*?(packages\/(cli|app)|vite|hocuspocus)/,/(^|\s)--ok-lock-dir-b64=/];function oi(e){return ai.some(t=>t.test(e))}function si(e){let t=e.trim().split(/\s+/).find(e=>e.startsWith(`--ok-lock-dir-b64=`));if(t==null)return null;let n=t.slice(18);if(!n)return null;try{let e=Buffer.from(n,`base64url`).toString(`utf8`);return $e(e)?e:null}catch{return null}}function ci(e){let t=[];for(let n of e.split(`
24
24
  `)){let e=n.trim();if(!e)continue;let r=e.indexOf(` `);if(r===-1)continue;let i=e.slice(0,r),a=e.slice(r+1),o=Number.parseInt(i,10);!Number.isNaN(o)&&oi(a)&&t.push({pid:o,command:a})}return t}function li(e){let t=[],n=e.split(`
25
25
  `);for(let e=1;e<n.length;e++){let r=n[e]?.trim();if(!r)continue;let i=r.indexOf(` `);if(i===-1)continue;let a=r.slice(0,i),o=r.slice(i+1).trim(),s=Number.parseInt(a,10);!Number.isNaN(s)&&oi(o)&&t.push({pid:s,command:o})}return t}async function ui(){let e=M(`pgrep`,[`-a`,`-f`,`cli\\.mjs|open-knowledge|--ok-lock-dir-b64=|(^|[ /])ok[ ]+(start|mcp|ui)([ ]|$)|packages/(cli|app)|hocuspocus|vite`],{encoding:`utf-8`,timeout:W});if(!(e.error!=null&&e.error.code===`ENOENT`)){let t=e.stdout??``,n=ci(t);if(n.length>0||t.trim()===``)return n}let t=M(`ps`,[`-axo`,`pid,command`],{encoding:`utf-8`,timeout:W});return t.error!=null||!t.stdout?[]:li(t.stdout)}function di(e){let t=e.trim().split(/\s+/).filter(Boolean);for(let e of t){if(e.startsWith(`@`))continue;let t=Ze(e);if(t===`open-knowledge`||t===`ok`||e.endsWith(`/packages/cli/src/cli.ts`)||e.endsWith(`/packages/cli/dist/cli.mjs`)||t===`cli.mjs`||t===`cli.ts`)return e}return null}function fi(e){let t=M(`ps`,[`-p`,String(e),`-o`,`command=`],{encoding:`utf-8`,timeout:W});return t.error!=null||!t.stdout?null:t.stdout.trim()||null}function pi(e){let t=M(`ps`,[`-p`,String(e),`-o`,`%cpu=,%mem=`],{encoding:`utf-8`,timeout:W});if(t.error!=null||!t.stdout)return null;let[n,r]=t.stdout.trim().split(/\s+/),i=Number.parseFloat(n??``),a=Number.parseFloat(r??``);return Number.isNaN(i)||Number.isNaN(a)?null:{cpuPercent:i,memPercent:a}}async function mi(e){let t=M(`lsof`,[`-p`,String(e),`-a`,`-d`,`cwd`,`-Fn`],{encoding:`utf-8`,timeout:W});if(t.error!=null)return null;let n=t.stdout??``;for(let e of n.split(`
26
26
  `))if(e.startsWith(`n`)&&e.length>1)return e.slice(1);return null}function hi(e){let t=[],n=e.split(`
@@ -56,7 +56,7 @@ setTimeout(() => process.exit(2), ${t+1e4});
56
56
  `)?c.slice(0,-1):c}),s=void 0,c=``,l=``}function m(e={}){a&&e.consume&&d(a),o=!0,s=void 0,c=``,l=``,a=``}return{feed:u,reset:m}}function eo(e){let t=[],n=``,r=0;for(;r<e.length;){let i=e.indexOf(`\r`,r),a=e.indexOf(`
57
57
  `,r),o=-1;if(i!==-1&&a!==-1?o=Math.min(i,a):i===-1?a!==-1&&(o=a):o=i===e.length-1?-1:i,o===-1){n=e.slice(r);break}else{let n=e.slice(r,o);t.push(n),r=o+1,e[r-1]===`\r`&&e[r]===`
58
58
  `&&r++}}return[t,n]}var to=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=$a({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}};const no={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2};var Y=class extends Error{constructor(e,t){super(`Streamable HTTP error: ${t}`),this.code=e}},ro=class{constructor(e,t){this._hasCompletedAuthFlow=!1,this._url=e,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=t?.requestInit,this._authProvider=t?.authProvider,this._fetch=t?.fetch,this._fetchWithInit=Bi(t?.fetch,t?.requestInit),this._sessionId=t?.sessionId,this._reconnectionOptions=t?.reconnectionOptions??no}async _authThenStart(){if(!this._authProvider)throw new J(`No auth provider`);let e;try{e=await Aa(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(e){throw this.onerror?.(e),e}if(e!==`AUTHORIZED`)throw new J;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let e={};if(this._authProvider){let t=await this._authProvider.tokens();t&&(e.Authorization=`Bearer ${t.access_token}`)}this._sessionId&&(e[`mcp-session-id`]=this._sessionId),this._protocolVersion&&(e[`mcp-protocol-version`]=this._protocolVersion);let t=zi(this._requestInit?.headers);return new Headers({...e,...t})}async _startOrAuthSse(e){let{resumptionToken:t}=e;try{let n=await this._commonHeaders();n.set(`Accept`,`text/event-stream`),t&&n.set(`last-event-id`,t);let r=await(this._fetch??fetch)(this._url,{method:`GET`,headers:n,signal:this._abortController?.signal});if(!r.ok){if(await r.body?.cancel(),r.status===401&&this._authProvider)return await this._authThenStart();if(r.status===405)return;throw new Y(r.status,`Failed to open SSE stream: ${r.statusText}`)}this._handleSseStream(r.body,e,!0)}catch(e){throw this.onerror?.(e),e}}_getNextReconnectionDelay(e){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let t=this._reconnectionOptions.initialReconnectionDelay,n=this._reconnectionOptions.reconnectionDelayGrowFactor,r=this._reconnectionOptions.maxReconnectionDelay;return Math.min(t*n**+e,r)}_scheduleReconnection(e,t=0){let n=this._reconnectionOptions.maxRetries;if(t>=n){this.onerror?.(Error(`Maximum reconnection attempts (${n}) exceeded.`));return}let r=this._getNextReconnectionDelay(t);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse(e).catch(n=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${n instanceof Error?n.message:String(n)}`)),this._scheduleReconnection(e,t+1)})},r)}_handleSseStream(e,t,n){if(!e)return;let{onresumptiontoken:r,replayMessageId:i}=t,a,o=!1,s=!1;(async()=>{try{let t=e.pipeThrough(new TextDecoderStream).pipeThrough(new to({onRetry:e=>{this._serverRetryMs=e}})).getReader();for(;;){let{value:e,done:n}=await t.read();if(n)break;if(e.id&&(a=e.id,o=!0,r?.(e.id)),e.data&&(!e.event||e.event===`message`))try{let t=p.parse(JSON.parse(e.data));g(t)&&(s=!0,i!==void 0&&(t.id=i)),this.onmessage?.(t)}catch(e){this.onerror?.(e)}}(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted&&this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){if(this.onerror?.(Error(`SSE stream disconnected: ${e}`)),(n||o)&&!s&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:a,onresumptiontoken:r,replayMessageId:i},0)}catch(e){this.onerror?.(Error(`Failed to reconnect: ${e instanceof Error?e.message:String(e)}`))}}})()}async start(){if(this._abortController)throw Error(`StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.`);this._abortController=new AbortController}async finishAuth(e){if(!this._authProvider)throw new J(`No auth provider`);if(await Aa(this._authProvider,{serverUrl:this._url,authorizationCode:e,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new J(`Failed to authorize`)}async close(){this._reconnectionTimeout&&=(clearTimeout(this._reconnectionTimeout),void 0),this._abortController?.abort(),this.onclose?.()}async send(e,t){try{let{resumptionToken:n,onresumptiontoken:r}=t||{};if(n){this._startOrAuthSse({resumptionToken:n,replayMessageId:d(e)?e.id:void 0}).catch(e=>this.onerror?.(e));return}let i=await this._commonHeaders();i.set(`content-type`,`application/json`),i.set(`accept`,`application/json, text/event-stream`);let a={...this._requestInit,method:`POST`,headers:i,body:JSON.stringify(e),signal:this._abortController?.signal},o=await(this._fetch??fetch)(this._url,a),s=o.headers.get(`mcp-session-id`);if(s&&(this._sessionId=s),!o.ok){let t=await o.text().catch(()=>null);if(o.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new Y(401,`Server returned 401 after successful authentication`);let{resourceMetadataUrl:t,scope:n}=Pa(o);if(this._resourceMetadataUrl=t,this._scope=n,await Aa(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!==`AUTHORIZED`)throw new J;return this._hasCompletedAuthFlow=!0,this.send(e)}if(o.status===403&&this._authProvider){let{resourceMetadataUrl:t,scope:n,error:r}=Pa(o);if(r===`insufficient_scope`){let r=o.headers.get(`WWW-Authenticate`);if(this._lastUpscopingHeader===r)throw new Y(403,`Server returned 403 after trying upscoping`);if(n&&(this._scope=n),t&&(this._resourceMetadataUrl=t),this._lastUpscopingHeader=r??void 0,await Aa(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!==`AUTHORIZED`)throw new J;return this.send(e)}}throw new Y(o.status,`Error POSTing to endpoint: ${t}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,o.status===202){await o.body?.cancel(),re(e)&&this._startOrAuthSse({resumptionToken:void 0}).catch(e=>this.onerror?.(e));return}let c=(Array.isArray(e)?e:[e]).filter(e=>`method`in e&&`id`in e&&e.id!==void 0).length>0,l=o.headers.get(`content-type`);if(c)if(l?.includes(`text/event-stream`))this._handleSseStream(o.body,{onresumptiontoken:r},!1);else if(l?.includes(`application/json`)){let e=await o.json(),t=Array.isArray(e)?e.map(e=>p.parse(e)):[p.parse(e)];for(let e of t)this.onmessage?.(e)}else throw await o.body?.cancel(),new Y(-1,`Unexpected content type: ${l}`);else await o.body?.cancel()}catch(e){throw this.onerror?.(e),e}}get sessionId(){return this._sessionId}async terminateSession(){if(this._sessionId)try{let e=await this._commonHeaders(),t={...this._requestInit,method:`DELETE`,headers:e,signal:this._abortController?.signal},n=await(this._fetch??fetch)(this._url,t);if(await n.body?.cancel(),!n.ok&&n.status!==405)throw new Y(n.status,`Failed to terminate session: ${n.statusText}`);this._sessionId=void 0}catch(e){throw this.onerror?.(e),e}}setProtocolVersion(e){this._protocolVersion=e}get protocolVersion(){return this._protocolVersion}async resumeStream(e,t){await this._startOrAuthSse({resumptionToken:e,onresumptiontoken:t?.onresumptiontoken})}};function io(e){return(t,n)=>{if((n?.method??`GET`).toUpperCase()===`GET`)return globalThis.fetch(t,n);let r=new AbortController,i=setTimeout(()=>r.abort(Error(`MCP request timed out after ${e}ms`)),e),a=n?.signal instanceof AbortSignal?AbortSignal.any([n.signal,r.signal]):r.signal;return globalThis.fetch(t,{...n,signal:a}).finally(()=>clearTimeout(i))}}function ao(e){if(e===void 0||e===``)return;let t=Number.parseInt(e,10);if(!(Number.isNaN(t)||t<=0))return t}function oo(e){return e===`0.0.0.0`||e===`::`?`localhost`:e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}function so(e,t){return`http://${oo(e)}:${t}/mcp`}function co(e,t){return`ws://${oo(e)}:${t}`}function lo(e){let t=new URL(e);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=``,t.search=``,t.hash=``,t.toString().replace(/\/$/,``)}function uo(e,t){if(!(!e||e.port<=0)&&t(e.pid))return e.port}function fo(e){return F(e)?I(e,`utf-8`).trim():``}function po(e,t){return`server did not start within ${e}ms${t?` stderr:\n${t}`:``}`}function mo(e){if(e&&typeof e==`object`&&`method`in e&&`id`in e)return e.id}function ho(e){if(!e||typeof e!=`object`||!(`result`in e))return;let t=e.result;if(!t||typeof t!=`object`||!(`protocolVersion`in t))return;let n=t.protocolVersion;return typeof n==`string`?n:void 0}function go(e,t){return{jsonrpc:`2.0`,id:e,error:{code:-32e3,message:t instanceof Error?t.message:String(t)}}}async function _o(e){let t=e.readLock??(()=>Pe(e.lockDir)),n=e.isAlive??T,r=e.sleep??(e=>bt(e)),i=e.spawn??Ye,a=e.readErrorLog??fo,o=e.openErrorLog??(e=>it(e,`w`)),s=e.closeFd??tt,c=e.timeoutMs??5e3,l=e.pollIntervalMs??100;if(e.portOverride!==void 0){let t=Number.parseInt(e.portOverride,10);if(Number.isNaN(t)||t<=0)throw Error(`invalid --port value '${e.portOverride}' — HTTP MCP shim requires a positive port`);return so(`localhost`,t)}let u=uo(t(),n);if(u!==void 0)return so(`localhost`,u);if(e.envAutoStart===`0`)throw Error(`Open Knowledge server is not running and OK_MCP_AUTOSTART=0 disables auto-start.`);F(e.lockDir)||nt(e.lockDir,{recursive:!0});let d=N(e.lockDir,`last-spawn-error.log`),f=o(d),p,m,h=Ve();try{try{p=i(h.command,[...h.prefixArgs,`start`],{detached:!0,stdio:[`ignore`,`ignore`,f],cwd:e.contentDir,env:{...process.env,OK_LOCK_KIND:`mcp-spawned`}}),p.on(`error`,e=>{m=e instanceof Error?e.message:String(e)}),p.unref()}catch(e){m=e instanceof Error?e.message:String(e)}}finally{try{s(f)}catch{}}let g=Date.now()+c;for(;Date.now()<g;){if(m){let e=a(d),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${m}${t}`)}await r(l);let e=uo(t(),n);if(e!==void 0)return so(`localhost`,e)}if(m){let e=a(d),t=e?` stderr:\n${e}`:``;throw Error(`spawn failed: ${m}${t}`)}throw Error(po(c,a(d)))}function vo(e,t){if(e.portOverride!==void 0)return lo(t);let n=e.readLock??(()=>Pe(e.lockDir)),r=e.isAlive??T,i=uo(n(),r);if(i!==void 0)return co(`localhost`,i)}async function yo(e,t={}){let n=t.stderr??process.stderr,r=t.requestTimeoutMs??12e4,i=t.createStdioTransport?t.createStdioTransport(t.stdin,t.stdout):new Li(t.stdin,t.stdout),a=t.createHttpTransport?t.createHttpTransport(new URL(e)):new ro(new URL(e),{fetch:io(r),...t.connectionId===void 0?{}:{requestInit:{headers:{[c]:t.connectionId}}}}),o=!1,s=async()=>{o||(o=!0,t.onclose?.(),await Promise.allSettled([i.close(),a.close()]))};i.onerror=e=>{n.write(`[mcp-shim] stdio error: ${e.message}\n`)},a.onerror=e=>{n.write(`[mcp-shim] HTTP transport error: ${e.message}\n`)},i.onclose=()=>{s()},a.onclose=()=>{s()};let l=Promise.resolve();i.onmessage=e=>{l=l.then(async()=>{try{await a.send(e)}catch(t){let r=mo(e);if(r===void 0){n.write(`[mcp-shim] failed to forward stdio notification: ${t instanceof Error?t.message:String(t)}\n`);return}await i.send(go(r,t)).catch(e=>{n.write(`[mcp-shim] failed to write stdio error response: ${e instanceof Error?e.message:String(e)}\n`)})}}).catch(e=>{n.write(`[mcp-shim] unexpected stdio forwarding failure: ${e instanceof Error?e.message:String(e)}\n`)})},a.onmessage=e=>{let t=ho(e);t&&a.setProtocolVersion?.(t),i.send(e).catch(e=>{n.write(`[mcp-shim] failed to write stdio response: ${e instanceof Error?e.message:String(e)}\n`)})};try{await a.start(),await i.start()}catch(e){throw await s(),e}return{close:s}}async function bo(e){let t=e.stderr??process.stderr,n=e.bridgeFn??yo,r=await _o(e),i=e.createConnectionId?.()??vt(),a=!1,o=(e.startKeepalive??Ri)({connectionId:i,resolveWsUrl:async()=>vo(e,r),log:e=>t.write(`[mcp-shim] keepalive: ${e}\n`)});t.write(`[mcp-shim] proxying stdio to ${r}\n`);let s;try{s=await n(r,{stderr:t,connectionId:i,onclose:()=>{a||(o.close(),process.exit(0))}})}catch(e){throw o.close(),e}let c=()=>{a=!0,o.close(),s.close().finally(()=>{process.exit(0)})};process.once(`SIGINT`,c),process.once(`SIGTERM`,c)}function xo(e){let t=P(e);for(;;){if(he(t))return t;let n=Qe(t);if(n===t)throw Error(`No Open Knowledge project found at or above ${e}. Pass an explicit \`cwd\` argument that points inside an OK project (a directory with a \`${oe}\`).`);t=n}}function So(e){try{let t=new URL(e);return t.protocol===`file:`?pt(t):void 0}catch{return}}async function Co(e){if(!e.getClientCapabilities()?.roots)return;let t;try{t=await e.listRoots()}catch(t){e.log?.(`listRoots fallback failed: ${t instanceof Error?t.message:String(t)}`);return}let n=t.roots??[];if(n.length!==1)return;let r=So(n[0].uri);return r===void 0&&e.log?.(`single root URI not usable as fs path: ${n[0].uri}`),r}async function wo(e,t){if(e!==void 0)return xo(e);let n=await t();if(n!==void 0)return xo(n);throw Error("`cwd` is required for tool calls against the global MCP server. Pass an absolute path inside an Open Knowledge project, or have the MCP client advertise a single root.")}async function To(e){let t=process.stderr,n=e.spawnTimeoutMs??ao(process.env.OK_MCP_SPAWN_TIMEOUT_MS),r=e.envAutoStart??process.env.OK_MCP_AUTOSTART,a=Be({startupCwd:e.startupCwd,startupConfig:e.startupConfig}),s=new S({name:o,version:Ie},{instructions:me({dir:`.`})}),c=vt(),l={current:{connectionId:c,displayName:c,colorSeed:c}},u=new Map,d=e=>{if(u.has(e))return;let n=ee(e),r=l.current,i=Ri({connectionId:c,displayName:r.displayName,clientName:r.clientInfo?.name??r.displayName,colorSeed:r.colorSeed,resolveWsUrl:async()=>vo({lockDir:n,contentDir:e},``),log:n=>t.write(`[mcp] keepalive[${e}]: ${n}\n`)});u.set(e,i)},f=()=>Co({getClientCapabilities:()=>s.server.getClientCapabilities(),listRoots:()=>s.server.listRoots(),log:e=>t.write(`[mcp] ${e}\n`)}),p=e=>wo(e,f),m=async e=>{let t;if(e===void 0){let e=await f();if(e===void 0)return;t=xo(e)}else t=xo(e);let i=await a(t),o=await _o({lockDir:ee(t),contentDir:h(i,t),envAutoStart:r,...n===void 0?{}:{timeoutMs:n}});return d(t),o.replace(/\/mcp$/,``)};s.server.oninitialized=()=>{let e=s.server.getClientVersion(),t=ce(e?.name,c);l.current={connectionId:c,clientInfo:e?{name:t,version:e.version}:void 0,displayName:t,colorSeed:t}},i(s,{serverUrl:m,resolveCwd:p,config:a,identityRef:l});let g=new Li,_=!1,te=async()=>{if(_)return;_=!0;for(let e of u.values())try{e.close()}catch(e){t.write(`[mcp] keepalive close error: ${e instanceof Error?e.message:String(e)}\n`)}u.clear();let e=await Promise.allSettled([s.close(),g.close()]);for(let n of e)if(n.status===`rejected`){let e=n.reason;t.write(`[mcp] shutdown close error: ${e instanceof Error?e.message:String(e)}\n`)}};await s.connect(g),t.write(`[mcp] global stdio server ready (per-call project routing)
59
- `);let v=()=>{te().finally(()=>{process.exit(0)})};return process.once(`SIGINT`,v),process.once(`SIGTERM`,v),{close:te}}function Eo(e){return new t(`mcp`).description(`Start MCP stdio server for project knowledge base`).option(`-p, --port <port>`,`Override per-call routing and proxy stdio to this HTTP MCP port`,void 0).action(async t=>{try{let n=e(),r=process.cwd();if(t.port!==void 0){let e=ao(process.env.OK_MCP_SPAWN_TIMEOUT_MS);await bo({lockDir:``,contentDir:``,portOverride:t.port,envAutoStart:process.env.OK_MCP_AUTOSTART,timeoutMs:e});return}await To({startupCwd:r,startupConfig:n})}catch(e){process.stderr.write(`MCP server failed to start: ${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}})}function Do(e){return new t(`preview`).description(`Show what content the watcher will track (read-only)`).action(async()=>{let{previewContent:t,formatPreviewBlock:n}=await import(`./preview-N6-E_vFx.mjs`),r=e(),i=process.cwd(),a=h(r,i),o;try{o=t({projectDir:i,contentDir:a})}catch(e){console.error(`Content preview failed: ${e instanceof Error?e.message:String(e)}`),process.exitCode=1;return}process.stdout.write(`${n(o,i)}\n`),o.totalCount===0&&o.warnings.length>0&&(process.exitCode=1)})}function Oo(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function ko(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function Ao(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:di(r),command:r,isDesktop:Oo(r)}}function jo(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function Mo(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&jo(e)?`ui-orphan`:`stale`}const No=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function Po(e){switch(e){case`running`:return U.default.green(e);case`desktop`:return U.default.blue(e);case`foreign`:return U.default.cyan(e);case`ui-orphan`:return U.default.magenta(e);case`stale`:return U.default.yellow(e)}}function Fo(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function Io(e){return`${Fo(e.server.usage)} | ${Fo(e.ui?.usage??null)}`}function Lo(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function Ro(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=Mo(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,Lo(e),Io(e),t,String(n),ko(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=Po(Mo(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=U.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
59
+ `);let v=()=>{te().finally(()=>{process.exit(0)})};return process.once(`SIGINT`,v),process.once(`SIGTERM`,v),{close:te}}function Eo(e){return new t(`mcp`).description(`Start MCP stdio server for project knowledge base`).option(`-p, --port <port>`,`Override per-call routing and proxy stdio to this HTTP MCP port`,void 0).action(async t=>{try{let n=e(),r=process.cwd();if(t.port!==void 0){let e=ao(process.env.OK_MCP_SPAWN_TIMEOUT_MS);await bo({lockDir:``,contentDir:``,portOverride:t.port,envAutoStart:process.env.OK_MCP_AUTOSTART,timeoutMs:e});return}await To({startupCwd:r,startupConfig:n})}catch(e){process.stderr.write(`MCP server failed to start: ${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}})}function Do(e){return new t(`preview`).description(`Show what content the watcher will track (read-only)`).action(async()=>{let{previewContent:t,formatPreviewBlock:n}=await import(`./preview-DXNW4qs9.mjs`),r=e(),i=process.cwd(),a=h(r,i),o;try{o=t({projectDir:i,contentDir:a})}catch(e){console.error(`Content preview failed: ${e instanceof Error?e.message:String(e)}`),process.exitCode=1;return}process.stdout.write(`${n(o,i)}\n`),o.totalCount===0&&o.warnings.length>0&&(process.exitCode=1)})}function Oo(e){return e==null?!1:e.includes(`--type=utility`)&&e.includes(`--utility-sub-type=node.mojom.NodeService`)}function ko(e,t=Date.now()){let n=new Date(e).getTime();if(Number.isNaN(n))return`—`;let r=t-n,i=Math.floor(r/1e3);if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m ago`;let o=Math.floor(a/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`}function Ao(e,t,n,r,i,a){if(t.status===`missing`||t.status===`corrupt`)return null;let o=t.lock,s=null;if(n.status!==`missing`&&n.status!==`corrupt`){let e=n.lock;s={port:e.port,status:n.status,pid:e.pid,startedAt:e.startedAt,usage:a}}return{directory:o.worktreeRoot,server:{port:o.port,status:t.status,pid:o.pid,startedAt:o.startedAt,usage:i},ui:s,hostname:o.hostname,lockPath:t.lockPath,binary:r==null?null:di(r),command:r,isDesktop:Oo(r)}}function jo(e){return e.ui==null?!1:e.ui.status===`alive`||e.ui.status===`foreign-host`}function Mo(e){let t=e.server.status;return t===`alive`||t===`foreign-host`?e.isDesktop?`desktop`:t===`alive`?`running`:`foreign`:t===`dead-pid`&&jo(e)?`ui-orphan`:`stale`}const No=new Set([`running`,`desktop`,`foreign`,`ui-orphan`]);function Po(e){switch(e){case`running`:return U.default.green(e);case`desktop`:return U.default.blue(e);case`foreign`:return U.default.cyan(e);case`ui-orphan`:return U.default.magenta(e);case`stale`:return U.default.yellow(e)}}function Fo(e){return e==null?`—`:`${e.cpuPercent.toFixed(1)}% / ${e.memPercent.toFixed(1)}%`}function Io(e){return`${Fo(e.server.usage)} | ${Fo(e.ui?.usage??null)}`}function Lo(e){return`${e.server.port===0?`(starting)`:String(e.server.port)} / ${e.ui==null||e.ui.status===`dead-pid`?`—`:String(e.ui.port)}`}function Ro(e){if(e.length===0)return`No open-knowledge servers found.`;let t=[`DIRECTORY`,`PORTS (API/UI)`,`CPU/MEM (API | UI)`,`STATUS`,`PID`,`STARTED`,`BINARY`],n=e.map(e=>{let t=Mo(e),n=t===`ui-orphan`&&e.ui!=null?e.ui.pid:e.server.pid;return[e.directory,Lo(e),Io(e),t,String(n),ko(e.server.startedAt),e.binary??`—`]}),r=t.length,i=t.map(e=>e.length);for(let e of n)for(let t=0;t<r;t++)i[t]=Math.max(i[t]??0,(e[t]??``).length);let a=t.map((e,t)=>e.padEnd(i[t]??0)).join(` `).trimEnd(),o=e.map((e,t)=>{let a=n[t]??[],o=[];for(let t=0;t<r;t++){let n=(a[t]??``).padEnd(i[t]??0);if(t===3){let r=a[t]??``;n=Po(Mo(e))+` `.repeat(Math.max(0,(i[t]??0)-r.length))}o.push(n)}return o.join(` `).trimEnd()}),s=U.default.dim(`To stop a server: ok stop <port|pid|directory|all>`);return[a,...o,``,s].join(`
60
60
  `)}async function zo(e={}){let t=e.discover??gi,n=e.inspect??V,r=e.log??(e=>console.log(e)),i=e.resolveCommand??fi,a=e.resolveUsage??pi,o=await t(),s=[];for(let e of o){let t=n(e,`server`),r=n(e,`ui`),o=Ao(e,t,r,t.status===`missing`||t.status===`corrupt`?null:i(t.lock.pid),t.status===`missing`||t.status===`corrupt`?null:a(t.lock.pid),r.status===`missing`||r.status===`corrupt`?null:a(r.lock.pid));o!=null&&s.push(o)}if(e.json){let e=s.map(e=>({...e,displayStatus:Mo(e)}));r(JSON.stringify(e,null,2));return}r(Ro(e.all?s:s.filter(e=>No.has(Mo(e)))))}function Bo(){return new t(`ps`).description(`List all running open-knowledge servers`).argument(`[modifier]`,`"all" to include stale (dead-pid) entries`).option(`--all`,`Include stale (dead-pid) entries (foreign-host shows by default)`).option(`--json`,`Emit structured JSON (always includes all statuses)`).action(async(e,t)=>{await zo({all:t.all===!0||e===`all`,json:t.json===!0})})}function X(e,t){e&&process.stdout.write(`${JSON.stringify(t)}\n`)}async function Vo(e,t,n=process.cwd()){let r=e.op??`sync`,i=Pe(ie(n));if(i&&i.port>0){let t=`http://127.0.0.1:${i.port}/api/sync/trigger`;e.json||process.stderr.write(`Triggering ${r} via running server (port ${i.port})\n`);try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({op:r})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.title??e.error??e.message??`Server responded with ${n.status}`)}X(e.json,{type:`triggered`,op:r,port:i.port}),e.json||process.stderr.write(`✓ ${r} triggered\n`);return}catch(t){let n=t instanceof Error?t.message:String(t);e.json||process.stderr.write(`Server trigger failed (${n}), running directly\n`)}}e.json||process.stderr.write(`Running ${r} directly (no live server)\n`);let a=Le({baseDir:n});if(r===`sync`||r===`pull`){X(e.json,{type:`step`,step:`pull`});let t=await a.pull();X(e.json,{type:`pull`,summary:t.summary}),e.json||process.stderr.write(` pull: ${t.summary.changes} changes\n`)}(r===`sync`||r===`push`)&&(X(e.json,{type:`step`,step:`push`}),await a.push(),X(e.json,{type:`push`,ok:!0}),e.json||process.stderr.write(` push: ok
61
61
  `)),X(e.json,{type:`complete`,op:r}),e.json||process.stderr.write(`✓ ${r} complete\n`)}function Ho(e){return new t(`sync`).description(`Commit, pull, and push to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await Vo({json:t.json,op:`sync`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ sync failed: ${n}\n`),process.exit(1)}})}function Uo(e){return new t(`pull`).description(`Pull changes from the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await Vo({json:t.json,op:`pull`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ pull failed: ${n}\n`),process.exit(1)}})}function Wo(e){return new t(`push`).description(`Push commits to the remote`).option(`--json`,`Output JSONL progress events`,!1).action(async t=>{try{await Vo({json:t.json,op:`push`},e())}catch(e){let n=e instanceof Error?e.message:String(e);t.json?process.stdout.write(`${JSON.stringify({type:`error`,message:n})}\n`):process.stderr.write(`✗ push failed: ${n}\n`),process.exit(1)}})}function Go(e){return typeof e==`string`&&f.includes(e)}async function Ko(e={}){let t=P(e.cwd??process.cwd()),r=e.pack??`knowledge-base`;if(!x[r])return{status:`failed`,message:`${k(`Error:`)} Unknown pack "${r}". Available: ${f.join(`, `)}`,exitCode:1};let i;try{i=await v({projectDir:t,rootDir:e.root,packId:r})}catch(e){return e instanceof u?{status:`prerequisite-missing`,message:`${k(`Error:`)} ${e.message}`,exitCode:1}:{status:`failed`,message:`${k(`Error:`)} ${e instanceof Error?e.message:String(e)}`,exitCode:1}}if(i.created.length===0){let t=x[r].name;if(e.personalTemplates&&!e.dryRun){let e=_();if(e.errors.length>0){let n=e.errors.map(e=>` ${A(`!`)} ${e.path}: ${e.error}`);return{status:`failed`,message:[`${O(`Your ${t} pack is already seeded.`)}`,`${A(`Personal templates: some writes failed:`)}`,...n].join(`
62
62
  `),plan:i,exitCode:1}}let n=e.written.length;if(n>0)return{status:`applied`,message:`${O(`Your ${t} pack is already seeded.`)}\n${O(`✓ Wrote ${n} personal template${n===1?``:`s`}`)} ${D(`to ~/.ok/templates/`)}`,plan:i,exitCode:0}}return{status:`no-op`,message:`${O(`Your ${t} pack is already seeded.`)}\n${D(`Nothing to do.`)}`,plan:i,exitCode:0}}if(e.dryRun)return{status:`dry-run`,message:`${j(`Plan (dry-run — no changes made):`)}\n\n${Jo(i,t)}`,plan:i,exitCode:0};if(!e.yes&&!await Yo(`${j(`Plan:`)}\n\n${Jo(i,t)}\n\n${j(`Apply?`)} ${D(`[Y/n] `)}`,e.confirmStream))return{status:`cancelled`,message:D(`Cancelled.`),plan:i,exitCode:0};let a=await n(i,{projectDir:t,packId:r});if(a.errors.length>0){let e=a.errors.map(e=>` ${k(`✗`)} ${e.path}: ${e.error}`);return{status:`failed`,message:[`${A(`Applied`)} ${a.applied} entries, ${A(String(a.errors.length))} error(s):`,...e].join(`
@@ -0,0 +1,2 @@
1
+ import"./dist-V31CRf7D.mjs";var e=`0.5.0-beta.17`;const t=`config.yml`,n=e;export{n,t};
2
+ //# sourceMappingURL=constants-C7p5YUDU.mjs.map
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{c as e,d as t,f as n,h as r,i,l as a,m as o,p as s,t as c}from"./init-Db-MJvF_.mjs";import{n as l}from"./loader-BF1HVIAE.mjs";import{n as u}from"./preview-qR7FFUro.mjs";import{t as d}from"./src-DzWkP5Kf.mjs";export{t as ALL_EDITOR_IDS,n as EDITOR_LABELS,s as EDITOR_TARGETS,c as detectInstalledEditors,r as initContent,l as loadConfig,u as previewContent,i as readExistingMcpEntry,o as resolveProjectRoot,e as writeEditorMcpConfig,d as writeProjectAiIntegrations,a as writeUserMcpConfigs};
1
+ import{c as e,d as t,f as n,h as r,i,l as a,m as o,p as s,t as c}from"./init-CTIvDudd.mjs";import{n as l}from"./loader-DtWxxtIg.mjs";import{n as u}from"./preview-C6CMQBVH.mjs";import{t as d}from"./src-ChHpOaMx.mjs";export{t as ALL_EDITOR_IDS,n as EDITOR_LABELS,s as EDITOR_TARGETS,c as detectInstalledEditors,r as initContent,l as loadConfig,u as previewContent,i as readExistingMcpEntry,o as resolveProjectRoot,e as writeEditorMcpConfig,d as writeProjectAiIntegrations,a as writeUserMcpConfigs};
@@ -1,4 +1,4 @@
1
- import{i as e,o as t,t as n}from"./chunk-FK9Q3tQk.mjs";import{r,t as i}from"./esm-CEs3LWY3.mjs";import{$r as a,D as o,F as s,Gn as c,It as l,Pt as u,Qr as d,ai as f,an as p,di as m,gi as h,hi as g,ii as _,in as v,on as y,pn as b,ri as x,si as S,un as C}from"./dist-V31CRf7D.mjs";import{n as w,t as ee}from"./constants-XCszYh-u.mjs";import{t as T}from"./is-object-DF0ZeuvD.mjs";import{i as E,o as D,r as te,s as ne,t as O}from"./colors-BNufdynn.mjs";import{t as re}from"./preview-qR7FFUro.mjs";import{execFileSync as ie}from"node:child_process";import k,{basename as A,dirname as j,isAbsolute as ae,join as M,posix as oe,relative as N,resolve as P,sep as se,win32 as ce}from"node:path";import{cpSync as le,existsSync as F,lstatSync as ue,mkdirSync as I,readFileSync as de,realpathSync as fe,rmSync as pe,writeFileSync as L}from"node:fs";import R from"node:process";import{homedir as z}from"node:os";import{AsyncLocalStorage as me,AsyncResource as he}from"node:async_hooks";import{stripVTControlCharacters as ge,styleText as B}from"node:util";import*as _e from"node:readline";import{randomUUID as ve}from"node:crypto";import{createServer as ye,request as be}from"node:http";function xe(){return R.platform.startsWith(`win`)?!!R.env.CI||!!R.env.WT_SESSION||!!R.env.TERMINUS_SUBLIME||R.env.ConEmuTask===`{cmd::Cmder}`||R.env.TERM_PROGRAM===`Terminus-Sublime`||R.env.TERM_PROGRAM===`vscode`||R.env.TERM===`xterm-256color`||R.env.TERM===`alacritty`||R.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:R.env.TERM!==`linux`}const Se={circleQuestionMark:`(?)`,questionMarkPrefix:`(?)`,square:`█`,squareDarkShade:`▓`,squareMediumShade:`▒`,squareLightShade:`░`,squareTop:`▀`,squareBottom:`▄`,squareLeft:`▌`,squareRight:`▐`,squareCenter:`■`,bullet:`●`,dot:`․`,ellipsis:`…`,pointerSmall:`›`,triangleUp:`▲`,triangleUpSmall:`▴`,triangleDown:`▼`,triangleDownSmall:`▾`,triangleLeftSmall:`◂`,triangleRightSmall:`▸`,home:`⌂`,heart:`♥`,musicNote:`♪`,musicNoteBeamed:`♫`,arrowUp:`↑`,arrowDown:`↓`,arrowLeft:`←`,arrowRight:`→`,arrowLeftRight:`↔`,arrowUpDown:`↕`,almostEqual:`≈`,notEqual:`≠`,lessOrEqual:`≤`,greaterOrEqual:`≥`,identical:`≡`,infinity:`∞`,subscriptZero:`₀`,subscriptOne:`₁`,subscriptTwo:`₂`,subscriptThree:`₃`,subscriptFour:`₄`,subscriptFive:`₅`,subscriptSix:`₆`,subscriptSeven:`₇`,subscriptEight:`₈`,subscriptNine:`₉`,oneHalf:`½`,oneThird:`⅓`,oneQuarter:`¼`,oneFifth:`⅕`,oneSixth:`⅙`,oneEighth:`⅛`,twoThirds:`⅔`,twoFifths:`⅖`,threeQuarters:`¾`,threeFifths:`⅗`,threeEighths:`⅜`,fourFifths:`⅘`,fiveSixths:`⅚`,fiveEighths:`⅝`,sevenEighths:`⅞`,line:`─`,lineBold:`━`,lineDouble:`═`,lineDashed0:`┄`,lineDashed1:`┅`,lineDashed2:`┈`,lineDashed3:`┉`,lineDashed4:`╌`,lineDashed5:`╍`,lineDashed6:`╴`,lineDashed7:`╶`,lineDashed8:`╸`,lineDashed9:`╺`,lineDashed10:`╼`,lineDashed11:`╾`,lineDashed12:`−`,lineDashed13:`–`,lineDashed14:`‐`,lineDashed15:`⁃`,lineVertical:`│`,lineVerticalBold:`┃`,lineVerticalDouble:`║`,lineVerticalDashed0:`┆`,lineVerticalDashed1:`┇`,lineVerticalDashed2:`┊`,lineVerticalDashed3:`┋`,lineVerticalDashed4:`╎`,lineVerticalDashed5:`╏`,lineVerticalDashed6:`╵`,lineVerticalDashed7:`╷`,lineVerticalDashed8:`╹`,lineVerticalDashed9:`╻`,lineVerticalDashed10:`╽`,lineVerticalDashed11:`╿`,lineDownLeft:`┐`,lineDownLeftArc:`╮`,lineDownBoldLeftBold:`┓`,lineDownBoldLeft:`┒`,lineDownLeftBold:`┑`,lineDownDoubleLeftDouble:`╗`,lineDownDoubleLeft:`╖`,lineDownLeftDouble:`╕`,lineDownRight:`┌`,lineDownRightArc:`╭`,lineDownBoldRightBold:`┏`,lineDownBoldRight:`┎`,lineDownRightBold:`┍`,lineDownDoubleRightDouble:`╔`,lineDownDoubleRight:`╓`,lineDownRightDouble:`╒`,lineUpLeft:`┘`,lineUpLeftArc:`╯`,lineUpBoldLeftBold:`┛`,lineUpBoldLeft:`┚`,lineUpLeftBold:`┙`,lineUpDoubleLeftDouble:`╝`,lineUpDoubleLeft:`╜`,lineUpLeftDouble:`╛`,lineUpRight:`└`,lineUpRightArc:`╰`,lineUpBoldRightBold:`┗`,lineUpBoldRight:`┖`,lineUpRightBold:`┕`,lineUpDoubleRightDouble:`╚`,lineUpDoubleRight:`╙`,lineUpRightDouble:`╘`,lineUpDownLeft:`┤`,lineUpBoldDownBoldLeftBold:`┫`,lineUpBoldDownBoldLeft:`┨`,lineUpDownLeftBold:`┥`,lineUpBoldDownLeftBold:`┩`,lineUpDownBoldLeftBold:`┪`,lineUpDownBoldLeft:`┧`,lineUpBoldDownLeft:`┦`,lineUpDoubleDownDoubleLeftDouble:`╣`,lineUpDoubleDownDoubleLeft:`╢`,lineUpDownLeftDouble:`╡`,lineUpDownRight:`├`,lineUpBoldDownBoldRightBold:`┣`,lineUpBoldDownBoldRight:`┠`,lineUpDownRightBold:`┝`,lineUpBoldDownRightBold:`┡`,lineUpDownBoldRightBold:`┢`,lineUpDownBoldRight:`┟`,lineUpBoldDownRight:`┞`,lineUpDoubleDownDoubleRightDouble:`╠`,lineUpDoubleDownDoubleRight:`╟`,lineUpDownRightDouble:`╞`,lineDownLeftRight:`┬`,lineDownBoldLeftBoldRightBold:`┳`,lineDownLeftBoldRightBold:`┯`,lineDownBoldLeftRight:`┰`,lineDownBoldLeftBoldRight:`┱`,lineDownBoldLeftRightBold:`┲`,lineDownLeftRightBold:`┮`,lineDownLeftBoldRight:`┭`,lineDownDoubleLeftDoubleRightDouble:`╦`,lineDownDoubleLeftRight:`╥`,lineDownLeftDoubleRightDouble:`╤`,lineUpLeftRight:`┴`,lineUpBoldLeftBoldRightBold:`┻`,lineUpLeftBoldRightBold:`┷`,lineUpBoldLeftRight:`┸`,lineUpBoldLeftBoldRight:`┹`,lineUpBoldLeftRightBold:`┺`,lineUpLeftRightBold:`┶`,lineUpLeftBoldRight:`┵`,lineUpDoubleLeftDoubleRightDouble:`╩`,lineUpDoubleLeftRight:`╨`,lineUpLeftDoubleRightDouble:`╧`,lineUpDownLeftRight:`┼`,lineUpBoldDownBoldLeftBoldRightBold:`╋`,lineUpDownBoldLeftBoldRightBold:`╈`,lineUpBoldDownLeftBoldRightBold:`╇`,lineUpBoldDownBoldLeftRightBold:`╊`,lineUpBoldDownBoldLeftBoldRight:`╉`,lineUpBoldDownLeftRight:`╀`,lineUpDownBoldLeftRight:`╁`,lineUpDownLeftBoldRight:`┽`,lineUpDownLeftRightBold:`┾`,lineUpBoldDownBoldLeftRight:`╂`,lineUpDownLeftBoldRightBold:`┿`,lineUpBoldDownLeftBoldRight:`╃`,lineUpBoldDownLeftRightBold:`╄`,lineUpDownBoldLeftBoldRight:`╅`,lineUpDownBoldLeftRightBold:`╆`,lineUpDoubleDownDoubleLeftDoubleRightDouble:`╬`,lineUpDoubleDownDoubleLeftRight:`╫`,lineUpDownLeftDoubleRightDouble:`╪`,lineCross:`╳`,lineBackslash:`╲`,lineSlash:`╱`},Ce={tick:`✔`,info:`ℹ`,warning:`⚠`,cross:`✘`,squareSmall:`◻`,squareSmallFilled:`◼`,circle:`◯`,circleFilled:`◉`,circleDotted:`◌`,circleDouble:`◎`,circleCircle:`ⓞ`,circleCross:`ⓧ`,circlePipe:`Ⓘ`,radioOn:`◉`,radioOff:`◯`,checkboxOn:`☒`,checkboxOff:`☐`,checkboxCircleOn:`ⓧ`,checkboxCircleOff:`Ⓘ`,pointer:`❯`,triangleUpOutline:`△`,triangleLeft:`◀`,triangleRight:`▶`,lozenge:`◆`,lozengeOutline:`◇`,hamburger:`☰`,smiley:`㋡`,mustache:`෴`,star:`★`,play:`▶`,nodejs:`⬢`,oneSeventh:`⅐`,oneNinth:`⅑`,oneTenth:`⅒`},we={tick:`√`,info:`i`,warning:`‼`,cross:`×`,squareSmall:`□`,squareSmallFilled:`■`,circle:`( )`,circleFilled:`(*)`,circleDotted:`( )`,circleDouble:`( )`,circleCircle:`(○)`,circleCross:`(×)`,circlePipe:`(│)`,radioOn:`(*)`,radioOff:`( )`,checkboxOn:`[×]`,checkboxOff:`[ ]`,checkboxCircleOn:`(×)`,checkboxCircleOff:`( )`,pointer:`>`,triangleUpOutline:`∆`,triangleLeft:`◄`,triangleRight:`►`,lozenge:`♦`,lozengeOutline:`◊`,hamburger:`≡`,smiley:`☺`,mustache:`┌─┐`,star:`✶`,play:`►`,nodejs:`♦`,oneSeventh:`1/7`,oneNinth:`1/9`,oneTenth:`1/10`},Te={...Se,...Ce},Ee={...Se,...we},V=xe()?Te:Ee;Object.entries(Ce);var De=n(((t,n)=>{n.exports=i;function r(t){let n={defaultWidth:0,output:process.stdout,tty:e(`tty`)};return t?(Object.keys(n).forEach(function(e){t[e]||(t[e]=n[e])}),t):n}function i(e){let t=r(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let e=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(e)&&e!==0)return e}return t.defaultWidth}}));const Oe=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),ke=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,Ae=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,je=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Me=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ne=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,Pe=/\t{1,1000}/y,Fe=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,Ie=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Le=/\p{M}+/gu,Re={limit:1/0,ellipsis:``},ze=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?ze(i,Re,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[Ie,l],[je,0],[Me,o],[Pe,s],[Fe,c],[Ne,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,S=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(Le,``)){let t=e.codePointAt(0)||0;if(S=ke(t)?2:Ae(t)?u:l,x+S>v&&(_=Math.min(_,Math.max(y,f)+h)),x+S>r){g=!0;break outer}h+=e.length,x+=S}y=b=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===Ne?Oe(e.slice(p,n.lastIndex)):n===Fe?1:n.lastIndex-p,S=h*i,x+S>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+S>r){g=!0;break outer}x+=S,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},Be={limit:1/0,ellipsis:``,ellipsisWidth:0},H=(e,t={})=>ze(e,Be,t).width,Ve=`]8;;`,He=RegExp(`(?:\\[(?<code>\\d+)m|\\${Ve}(?<uri>.*))`,`y`),Ue=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},We=e=>`[${e}m`,Ge=e=>`${Ve}${e}`,Ke=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:H(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=H(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(Ve,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},qe=e=>{let t=e.split(` `),n=t.length;for(;n&&!H(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Je=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=H(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=H(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),Ke(s,r,t),c=H(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){Ke(s,r,t),c=H(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){Ke(s,r,t),c=H(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>qe(e)));let l=s.join(`
1
+ import{i as e,o as t,t as n}from"./chunk-FK9Q3tQk.mjs";import{r,t as i}from"./esm-CEs3LWY3.mjs";import{$r as a,D as o,F as s,Gn as c,It as l,Pt as u,Qr as d,ai as f,an as p,di as m,gi as h,hi as g,ii as _,in as v,on as y,pn as b,ri as x,si as S,un as C}from"./dist-V31CRf7D.mjs";import{n as w,t as ee}from"./constants-C7p5YUDU.mjs";import{t as T}from"./is-object-DF0ZeuvD.mjs";import{i as E,o as D,r as te,s as ne,t as O}from"./colors-BNufdynn.mjs";import{t as re}from"./preview-C6CMQBVH.mjs";import{execFileSync as ie}from"node:child_process";import k,{basename as A,dirname as j,isAbsolute as ae,join as M,posix as oe,relative as N,resolve as P,sep as se,win32 as ce}from"node:path";import{cpSync as le,existsSync as F,lstatSync as ue,mkdirSync as I,readFileSync as de,realpathSync as fe,rmSync as pe,writeFileSync as L}from"node:fs";import R from"node:process";import{homedir as z}from"node:os";import{AsyncLocalStorage as me,AsyncResource as he}from"node:async_hooks";import{stripVTControlCharacters as ge,styleText as B}from"node:util";import*as _e from"node:readline";import{randomUUID as ve}from"node:crypto";import{createServer as ye,request as be}from"node:http";function xe(){return R.platform.startsWith(`win`)?!!R.env.CI||!!R.env.WT_SESSION||!!R.env.TERMINUS_SUBLIME||R.env.ConEmuTask===`{cmd::Cmder}`||R.env.TERM_PROGRAM===`Terminus-Sublime`||R.env.TERM_PROGRAM===`vscode`||R.env.TERM===`xterm-256color`||R.env.TERM===`alacritty`||R.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:R.env.TERM!==`linux`}const Se={circleQuestionMark:`(?)`,questionMarkPrefix:`(?)`,square:`█`,squareDarkShade:`▓`,squareMediumShade:`▒`,squareLightShade:`░`,squareTop:`▀`,squareBottom:`▄`,squareLeft:`▌`,squareRight:`▐`,squareCenter:`■`,bullet:`●`,dot:`․`,ellipsis:`…`,pointerSmall:`›`,triangleUp:`▲`,triangleUpSmall:`▴`,triangleDown:`▼`,triangleDownSmall:`▾`,triangleLeftSmall:`◂`,triangleRightSmall:`▸`,home:`⌂`,heart:`♥`,musicNote:`♪`,musicNoteBeamed:`♫`,arrowUp:`↑`,arrowDown:`↓`,arrowLeft:`←`,arrowRight:`→`,arrowLeftRight:`↔`,arrowUpDown:`↕`,almostEqual:`≈`,notEqual:`≠`,lessOrEqual:`≤`,greaterOrEqual:`≥`,identical:`≡`,infinity:`∞`,subscriptZero:`₀`,subscriptOne:`₁`,subscriptTwo:`₂`,subscriptThree:`₃`,subscriptFour:`₄`,subscriptFive:`₅`,subscriptSix:`₆`,subscriptSeven:`₇`,subscriptEight:`₈`,subscriptNine:`₉`,oneHalf:`½`,oneThird:`⅓`,oneQuarter:`¼`,oneFifth:`⅕`,oneSixth:`⅙`,oneEighth:`⅛`,twoThirds:`⅔`,twoFifths:`⅖`,threeQuarters:`¾`,threeFifths:`⅗`,threeEighths:`⅜`,fourFifths:`⅘`,fiveSixths:`⅚`,fiveEighths:`⅝`,sevenEighths:`⅞`,line:`─`,lineBold:`━`,lineDouble:`═`,lineDashed0:`┄`,lineDashed1:`┅`,lineDashed2:`┈`,lineDashed3:`┉`,lineDashed4:`╌`,lineDashed5:`╍`,lineDashed6:`╴`,lineDashed7:`╶`,lineDashed8:`╸`,lineDashed9:`╺`,lineDashed10:`╼`,lineDashed11:`╾`,lineDashed12:`−`,lineDashed13:`–`,lineDashed14:`‐`,lineDashed15:`⁃`,lineVertical:`│`,lineVerticalBold:`┃`,lineVerticalDouble:`║`,lineVerticalDashed0:`┆`,lineVerticalDashed1:`┇`,lineVerticalDashed2:`┊`,lineVerticalDashed3:`┋`,lineVerticalDashed4:`╎`,lineVerticalDashed5:`╏`,lineVerticalDashed6:`╵`,lineVerticalDashed7:`╷`,lineVerticalDashed8:`╹`,lineVerticalDashed9:`╻`,lineVerticalDashed10:`╽`,lineVerticalDashed11:`╿`,lineDownLeft:`┐`,lineDownLeftArc:`╮`,lineDownBoldLeftBold:`┓`,lineDownBoldLeft:`┒`,lineDownLeftBold:`┑`,lineDownDoubleLeftDouble:`╗`,lineDownDoubleLeft:`╖`,lineDownLeftDouble:`╕`,lineDownRight:`┌`,lineDownRightArc:`╭`,lineDownBoldRightBold:`┏`,lineDownBoldRight:`┎`,lineDownRightBold:`┍`,lineDownDoubleRightDouble:`╔`,lineDownDoubleRight:`╓`,lineDownRightDouble:`╒`,lineUpLeft:`┘`,lineUpLeftArc:`╯`,lineUpBoldLeftBold:`┛`,lineUpBoldLeft:`┚`,lineUpLeftBold:`┙`,lineUpDoubleLeftDouble:`╝`,lineUpDoubleLeft:`╜`,lineUpLeftDouble:`╛`,lineUpRight:`└`,lineUpRightArc:`╰`,lineUpBoldRightBold:`┗`,lineUpBoldRight:`┖`,lineUpRightBold:`┕`,lineUpDoubleRightDouble:`╚`,lineUpDoubleRight:`╙`,lineUpRightDouble:`╘`,lineUpDownLeft:`┤`,lineUpBoldDownBoldLeftBold:`┫`,lineUpBoldDownBoldLeft:`┨`,lineUpDownLeftBold:`┥`,lineUpBoldDownLeftBold:`┩`,lineUpDownBoldLeftBold:`┪`,lineUpDownBoldLeft:`┧`,lineUpBoldDownLeft:`┦`,lineUpDoubleDownDoubleLeftDouble:`╣`,lineUpDoubleDownDoubleLeft:`╢`,lineUpDownLeftDouble:`╡`,lineUpDownRight:`├`,lineUpBoldDownBoldRightBold:`┣`,lineUpBoldDownBoldRight:`┠`,lineUpDownRightBold:`┝`,lineUpBoldDownRightBold:`┡`,lineUpDownBoldRightBold:`┢`,lineUpDownBoldRight:`┟`,lineUpBoldDownRight:`┞`,lineUpDoubleDownDoubleRightDouble:`╠`,lineUpDoubleDownDoubleRight:`╟`,lineUpDownRightDouble:`╞`,lineDownLeftRight:`┬`,lineDownBoldLeftBoldRightBold:`┳`,lineDownLeftBoldRightBold:`┯`,lineDownBoldLeftRight:`┰`,lineDownBoldLeftBoldRight:`┱`,lineDownBoldLeftRightBold:`┲`,lineDownLeftRightBold:`┮`,lineDownLeftBoldRight:`┭`,lineDownDoubleLeftDoubleRightDouble:`╦`,lineDownDoubleLeftRight:`╥`,lineDownLeftDoubleRightDouble:`╤`,lineUpLeftRight:`┴`,lineUpBoldLeftBoldRightBold:`┻`,lineUpLeftBoldRightBold:`┷`,lineUpBoldLeftRight:`┸`,lineUpBoldLeftBoldRight:`┹`,lineUpBoldLeftRightBold:`┺`,lineUpLeftRightBold:`┶`,lineUpLeftBoldRight:`┵`,lineUpDoubleLeftDoubleRightDouble:`╩`,lineUpDoubleLeftRight:`╨`,lineUpLeftDoubleRightDouble:`╧`,lineUpDownLeftRight:`┼`,lineUpBoldDownBoldLeftBoldRightBold:`╋`,lineUpDownBoldLeftBoldRightBold:`╈`,lineUpBoldDownLeftBoldRightBold:`╇`,lineUpBoldDownBoldLeftRightBold:`╊`,lineUpBoldDownBoldLeftBoldRight:`╉`,lineUpBoldDownLeftRight:`╀`,lineUpDownBoldLeftRight:`╁`,lineUpDownLeftBoldRight:`┽`,lineUpDownLeftRightBold:`┾`,lineUpBoldDownBoldLeftRight:`╂`,lineUpDownLeftBoldRightBold:`┿`,lineUpBoldDownLeftBoldRight:`╃`,lineUpBoldDownLeftRightBold:`╄`,lineUpDownBoldLeftBoldRight:`╅`,lineUpDownBoldLeftRightBold:`╆`,lineUpDoubleDownDoubleLeftDoubleRightDouble:`╬`,lineUpDoubleDownDoubleLeftRight:`╫`,lineUpDownLeftDoubleRightDouble:`╪`,lineCross:`╳`,lineBackslash:`╲`,lineSlash:`╱`},Ce={tick:`✔`,info:`ℹ`,warning:`⚠`,cross:`✘`,squareSmall:`◻`,squareSmallFilled:`◼`,circle:`◯`,circleFilled:`◉`,circleDotted:`◌`,circleDouble:`◎`,circleCircle:`ⓞ`,circleCross:`ⓧ`,circlePipe:`Ⓘ`,radioOn:`◉`,radioOff:`◯`,checkboxOn:`☒`,checkboxOff:`☐`,checkboxCircleOn:`ⓧ`,checkboxCircleOff:`Ⓘ`,pointer:`❯`,triangleUpOutline:`△`,triangleLeft:`◀`,triangleRight:`▶`,lozenge:`◆`,lozengeOutline:`◇`,hamburger:`☰`,smiley:`㋡`,mustache:`෴`,star:`★`,play:`▶`,nodejs:`⬢`,oneSeventh:`⅐`,oneNinth:`⅑`,oneTenth:`⅒`},we={tick:`√`,info:`i`,warning:`‼`,cross:`×`,squareSmall:`□`,squareSmallFilled:`■`,circle:`( )`,circleFilled:`(*)`,circleDotted:`( )`,circleDouble:`( )`,circleCircle:`(○)`,circleCross:`(×)`,circlePipe:`(│)`,radioOn:`(*)`,radioOff:`( )`,checkboxOn:`[×]`,checkboxOff:`[ ]`,checkboxCircleOn:`(×)`,checkboxCircleOff:`( )`,pointer:`>`,triangleUpOutline:`∆`,triangleLeft:`◄`,triangleRight:`►`,lozenge:`♦`,lozengeOutline:`◊`,hamburger:`≡`,smiley:`☺`,mustache:`┌─┐`,star:`✶`,play:`►`,nodejs:`♦`,oneSeventh:`1/7`,oneNinth:`1/9`,oneTenth:`1/10`},Te={...Se,...Ce},Ee={...Se,...we},V=xe()?Te:Ee;Object.entries(Ce);var De=n(((t,n)=>{n.exports=i;function r(t){let n={defaultWidth:0,output:process.stdout,tty:e(`tty`)};return t?(Object.keys(n).forEach(function(e){t[e]||(t[e]=n[e])}),t):n}function i(e){let t=r(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let e=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(e)&&e!==0)return e}return t.defaultWidth}}));const Oe=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let n=0;for(e.lastIndex=0;e.test(t);)n+=1;return t.length-n}})(),ke=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,Ae=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141,je=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Me=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,Ne=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/uy,Pe=/\t{1,1000}/y,Fe=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/uy,Ie=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Le=/\p{M}+/gu,Re={limit:1/0,ellipsis:``},ze=(e,t={},n={})=>{let r=t.limit??1/0,i=t.ellipsis??``,a=t?.ellipsisWidth??(i?ze(i,Re,n).width:0),o=n.controlWidth??0,s=n.tabWidth??8,c=n.emojiWidth??2,l=n.regularWidth??1,u=n.wideWidth??2,d=[[Ie,l],[je,0],[Me,o],[Pe,s],[Fe,c],[Ne,u]],f=0,p=0,m=e.length,h=0,g=!1,_=m,v=Math.max(0,r-a),y=0,b=0,x=0,S=0;outer:for(;;){if(b>y||p>=m&&p>f){let t=e.slice(y,b)||e.slice(f,p);h=0;for(let e of t.replaceAll(Le,``)){let t=e.codePointAt(0)||0;if(S=ke(t)?2:Ae(t)?u:l,x+S>v&&(_=Math.min(_,Math.max(y,f)+h)),x+S>r){g=!0;break outer}h+=e.length,x+=S}y=b=0}if(p>=m)break outer;for(let t=0,n=d.length;t<n;t++){let[n,i]=d[t];if(n.lastIndex=p,n.test(e)){if(h=n===Ne?Oe(e.slice(p,n.lastIndex)):n===Fe?1:n.lastIndex-p,S=h*i,x+S>v&&(_=Math.min(_,p+Math.floor((v-x)/i))),x+S>r){g=!0;break outer}x+=S,y=f,b=p,p=f=n.lastIndex;continue outer}}p+=1}return{width:g?v:x,index:g?_:m,truncated:g,ellipsed:g&&r>=a}},Be={limit:1/0,ellipsis:``,ellipsisWidth:0},H=(e,t={})=>ze(e,Be,t).width,Ve=`]8;;`,He=RegExp(`(?:\\[(?<code>\\d+)m|\\${Ve}(?<uri>.*))`,`y`),Ue=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},We=e=>`[${e}m`,Ge=e=>`${Ve}${e}`,Ke=(e,t,n)=>{let r=t[Symbol.iterator](),i=!1,a=!1,o=e.at(-1),s=o===void 0?0:H(o),c=r.next(),l=r.next(),u=0;for(;!c.done;){let o=c.value,d=H(o);s+d<=n?e[e.length-1]+=o:(e.push(o),s=0),(o===`\x1B`||o===`›`)&&(i=!0,a=t.startsWith(Ve,u+1)),i?a?o===`\x07`&&(i=!1,a=!1):o===`m`&&(i=!1):(s+=d,s===n&&!l.done&&(e.push(``),s=0)),c=l,l=r.next(),u+=o.length}o=e.at(-1),!s&&o!==void 0&&o.length&&e.length>1&&(e[e.length-2]+=e.pop())},qe=e=>{let t=e.split(` `),n=t.length;for(;n&&!H(t[n-1]);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Je=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=e.split(` `),s=[``],c=0;for(let e=0;e<o.length;e++){let r=o[e];if(n.trim!==!1){let e=s.at(-1)??``,t=e.trimStart();e.length!==t.length&&(s[s.length-1]=t,c=H(t))}e!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),c=0),(c||n.trim===!1)&&(s[s.length-1]+=` `,c++));let i=H(r);if(n.hard&&i>t){let e=t-c,n=1+Math.floor((i-e-1)/t);Math.floor((i-1)/t)<n&&s.push(``),Ke(s,r,t),c=H(s.at(-1)??``);continue}if(c+i>t&&c&&i){if(n.wordWrap===!1&&c<t){Ke(s,r,t),c=H(s.at(-1)??``);continue}s.push(``),c=0}if(c+i>t&&n.wordWrap===!1){Ke(s,r,t),c=H(s.at(-1)??``);continue}s[s.length-1]+=r,c+=i}n.trim!==!1&&(s=s.map(e=>qe(e)));let l=s.join(`
2
2
  `),u=!1;for(let e=0;e<l.length;e++){let t=l[e];if(r+=t,u)u=!1;else if(u=t>=`\ud800`&&t<=`\udbff`,u)continue;if(t===`\x1B`||t===`›`){He.lastIndex=e+1;let t=He.exec(l)?.groups;if(t?.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t?.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}if(l[e+1]===`
3
3
  `){a&&(r+=Ge(``));let e=i?Ue(i):void 0;i&&e&&(r+=We(e))}else t===`
4
4
  `&&(i&&Ue(i)&&(r+=We(i)),a&&(r+=Ge(a)))}return r},Ye=/\r?\n/;function Xe(e,t,n){return String(e).normalize().split(Ye).map(e=>Je(e,t,n)).join(`
@@ -404,5 +404,5 @@ last-spawn-error.log
404
404
  `)?n:`${n}\n`,`utf-8`)}function Lr(e,t){let n;try{n=fe(t)}catch{n=P(t)}let r;try{r=ue(e)}catch(e){if(e.code!==`ENOENT`)throw e}if(r?.isSymbolicLink())throw Error(`Refusing to write through a symbolic link at ${e}. Remove the symlink and re-run \`ok init\`, or pass \`--no-mcp\` to skip MCP config writes.`);let i=j(e);for(;i.length>1&&i!==se;){let t;try{t=fe(i)}catch(e){if(e.code===`ENOENT`){i=j(i);continue}throw e}let r=N(n,t);if(r===``||!r.startsWith(`..`)&&!ae(r))return;throw Error(`Refusing to write at ${e}: ancestor ${i} resolves to ${t}, which is outside the project directory ${n}. A symbolic link in the path likely escapes the project. Remove the symlink and re-run, or pass \`--no-mcp\`.`)}}const Rr=e=>e!==`project`,zr=e=>e!==`user`;async function Br(){let e=await fn({message:`Where should the MCP server be configured?
405
405
  `,required:!1,theme:{icon:{checked:`[x]`,unchecked:`[ ]`}},choices:[{name:`User-level (~/.claude.json, ~/.cursor/mcp.json, …)`,value:`user`,checked:!0},{name:`Project-level (.mcp.json, .cursor/mcp.json, …)`,value:`project`,checked:!0}]});return e.includes(`user`)&&e.includes(`project`)?`both`:e.includes(`user`)?`user`:e.includes(`project`)?`project`:null}async function Vr(e){return e.mcp===!1?null:e.scope?e.scope:e.isTTY??process.stdout.isTTY?(e.promptFn??Br)():`both`}const Hr=`0.0.1`,Ur=`open-knowledge-ui`;function Wr(e,t={}){let n=M(e,`.claude`,`launch.json`),r=t.mode===`dev`?{name:Ur,runtimeExecutable:`node`,runtimeArgs:[ar(),`ui`],port:Er,autoPort:!0}:{name:Ur,runtimeExecutable:`npx`,runtimeArgs:[`@inkeep/open-knowledge`,`ui`],port:Er,autoPort:!0};try{if(Lr(n,e),!F(n))return I(j(n),{recursive:!0}),L(n,`${JSON.stringify({version:Hr,configurations:[r]},null,2)}\n`,`utf-8`),{action:`created`,configPath:n};let t=de(n,`utf-8`).trim(),i=t?JSON.parse(t):{};if(!T(i))return{action:`failed`,configPath:n,error:`launch.json root is not an object`};let a=Array.isArray(i.configurations)?i.configurations:[],o=a.findIndex(e=>T(e)&&e.name===Ur);o>=0?a[o]=r:a.push(r);let s={...i,version:i.version??Hr,configurations:a};return L(n,`${JSON.stringify(s,null,2)}\n`,`utf-8`),{action:o>=0?`merged`:`created`,configPath:n}}catch(e){return{action:`failed`,configPath:n,error:e instanceof Error?e.message:String(e)}}}function Gr(e,t,n){try{return F(e.detectPath?.(t,n)??j(e.configPath(t,n)))}catch{return!1}}function Kr(e,t,n,r,i){let a=e.serverName(t),o;try{o=i??e.configPath(t,r)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:``,serverName:a,error:t instanceof Error?t.message:String(t)}}if(!i&&!n.skipAvailabilityCheck&&!Gr(e,t,r))return{editorId:e.id,label:e.label,action:`skipped-missing`,configPath:o,serverName:a};if(i!==void 0)try{Lr(o,t)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t),configScope:`project`}}let s;try{s=e.format===`toml`?Pr(o):Nr(o)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t)}}let c=s[e.topLevelKey]??{},l=c[a],u;try{u=e.buildEntry(t,n)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t)}}let d={...s,[e.topLevelKey]:{...c,[a]:u}};try{e.format===`toml`?Ir(o,d):Fr(o,d)}catch(t){return{editorId:e.id,label:e.label,action:`failed`,configPath:o,serverName:a,error:t instanceof Error?t.message:String(t)}}return{editorId:e.id,label:e.label,action:l===void 0?`written`:`overwritten`,configPath:o,serverName:a,...i===void 0?{}:{configScope:`project`}}}function qr(e,t){let n=e.projectSkillPath?.(t);if(!n)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};try{let r=c(),i=j(n);Lr(i,t);let a=F(n)?`overwritten`:`written`;return pe(i,{recursive:!0,force:!0}),I(j(i),{recursive:!0}),le(r,i,{recursive:!0}),{editorId:e.id,label:e.label,action:a,path:n}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:n,error:t instanceof Error?t.message:String(t)}}}function Jr(e,t){let n=e.projectConfigPath?.(t);if(!(!n||!F(n)))return{editorId:e.id,label:e.label,path:n}}async function Yr(e){let t=_r(e.editors),n={mode:`published`,cliPath:e.cliPath,skipAvailabilityCheck:!0};return t.map(t=>Kr(t,``,n,e.home))}function Xr(e,t,n,r){let i;try{i=r??e.configPath(t,n)}catch{return null}let a;try{a=e.format===`toml`?Pr(i):Nr(i)}catch{return null}let o=a[e.topLevelKey];if(!T(o))return null;let s=o[e.serverName(t)];return T(s)?s:null}async function Zr(e={}){let t=P(e.cwd??process.cwd()),n=tr(t,{homeDir:e.home}),r=n.projectRoot,i=!F(M(r,`.ok`));n.ancestorPromoted?console.log(`[ok] Opened existing project at ${r}`):n.gitRootPromoted&&i&&console.log(`[ok] Initialized OK at ${r} — opened parent of ${N(r,t)} because it contains a .git folder`);let a={mode:e.devMcp?`dev`:`published`},o=await l(r),s;try{s=Qn(r,{contentDir:n.defaultContentDir})}catch(t){let n=Q.claude.configPath(r,e.home);return{projectRoot:r,contentCreated:[],contentUpdated:[],contentSkipped:[],editors:[],projectSkills:[],legacyProjectConfigs:[],didGitInit:o.didInit,claudeDesktopDetected:!1,mcpAction:`failed`,mcpPath:n,mcpError:`Content scaffolding failed: ${t instanceof Error?t.message:String(t)}`}}let c=await Vr({scope:e.scope,mcp:e.mcp,isTTY:e.isTTY,promptFn:e.promptFn}),d=e.editors??$r(r,e.home),f=e.editors??nr.filter(e=>Q[e].projectConfigPath!==void 0),p=_r(d),m=_r(f),h=e.mcp===!1||c===null,g=Array.from(new Map([...p,...h?[]:m].map(e=>[e.id,e])).values()),_=p.filter(t=>Gr(t,r,e.home)),y=[],b=[],x=new Set;for(let t of g){if(h){let n=``;try{n=t.configPath(r,e.home)}catch{}y.push({editorId:t.id,label:t.label,action:`skipped-flag`,configPath:n,serverName:t.serverName(r)});continue}if(Rr(c)&&p.includes(t)&&y.push(Kr(t,r,a,e.home)),zr(c)&&m.includes(t)&&t.projectConfigPath){let n=t.projectConfigPath(r),i=Kr(t,r,a,e.home,n);y.push(i),(i.action===`written`||i.action===`overwritten`)&&(x.add(n),b.push(qr(t,r)))}}let S=!h&&c!==null&&zr(c)?m.filter(e=>!e.projectConfigPath).map(e=>e.label):void 0,C=h?[]:_.map(e=>Jr(e,r)).filter(e=>e!==void 0).filter(e=>!x.has(e.path)),w=_.some(e=>e.id===`claude`)&&!h?Wr(r,a):void 0,ee=await(e.installUserSkill??v)({home:e.home}),T=u({home:e.home}),E=h?`skipped-flag`:`skipped-missing`,D=y.find(e=>e.editorId===`claude`)??y[0]??{action:E,configPath:Q.claude.configPath(r,e.home)};return{projectRoot:r,contentCreated:s.created,contentUpdated:s.updated,contentSkipped:s.skipped,editors:y,projectSkills:b,legacyProjectConfigs:C,launchJson:w,skillInstall:ee,didGitInit:o.didInit,claudeDesktopDetected:T,mcpAction:D.action,mcpPath:D.configPath,mcpError:`error`in D?D.error:void 0,projectScopeUnsupportedLabels:S}}function Qr(e,t){let n=[],r=e.editors.some(e=>e.action===`written`||e.action===`overwritten`),i=e.editors.some(e=>e.action===`failed`)||e.projectSkills.some(e=>e.action===`failed`),a=e.editors.length>0&&e.editors.every(e=>e.action===`skipped-flag`),o=e.editors.length>0&&e.editors.every(e=>e.action===`skipped-missing`),s=e=>{let n=e.configPath.startsWith(t)?N(t,e.configPath):e.configPath;switch(e.action){case`created`:return` app preview server ${n} configured for Claude Code Desktop embedded browser`;case`merged`:return` app preview server ${n} updated for Claude Code Desktop embedded browser`;case`failed`:return` app preview server ${n} FAILED: ${e.error}`}};e.didGitInit&&n.push(`Initialized git repo at ${t}/.git/ (default branch: main)`);let c=M(t,`.ok`);if(e.contentCreated.length>0||e.contentUpdated.length>0?(n.push(O(`Content scaffolded at ${c}/`)),e.contentCreated.length>0&&n.push(` Created: ${e.contentCreated.join(`, `)}`),e.contentUpdated.length>0&&n.push(` Updated: ${e.contentUpdated.join(`, `)}`)):n.push(O(`Content already present at ${c}/`)),e.contentSkipped.length>0&&n.push(` Skipped (already exist): ${e.contentSkipped.join(`, `)}`),n.push(``),e.mcpError&&e.editors.length===0)n.push(`Warning: ${e.mcpError}`);else if(e.editors.length===0)if(n.push(O(`MCP server configuration:`)),e.mcpAction===`skipped-flag`)n.push(` MCP config not written — use without --no-mcp to configure editors`);else if(e.projectScopeUnsupportedLabels&&e.projectScopeUnsupportedLabels.length>0){let t=e.projectScopeUnsupportedLabels.join(`, `),r=e.projectScopeUnsupportedLabels.length===1?`does`:`do`;n.push(` ${t} ${r} not support project-level config; skipped`)}else n.push(` No supported editor config directories detected; skipped MCP registration`);else if(a)n.push(`MCP config not written — use without --no-mcp to configure editors`);else if(o)n.push(O(`MCP server configuration:`)),n.push(` No supported editor config directories detected; skipped MCP registration`);else{n.push(O(`MCP server configuration:`));for(let r of e.editors){let i=r.configPath.startsWith(t)?N(t,r.configPath):r.configPath.replace(/^\/Users\/[^/]+/,`~`),a=r.serverName===`open-knowledge`?``:` (${r.serverName})`,o=r.configScope===`project`?` (project)`:``,c=`${r.label}${o}`,l=` `.repeat(Math.max(1,20-c.length)),u=r.editorId===`claude-desktop`&&(r.action===`written`||r.action===`overwritten`)?` — quit and relaunch Claude Desktop to activate`:``;switch(r.action){case`written`:n.push(` ${c}${l}${i} ${D(`registered`)}${a}${u}`);break;case`overwritten`:n.push(` ${c}${l}${i} ${D(`updated`)}${a}${u}`);break;case`skipped-missing`:n.push(` ${c}${l}${i} config root missing; skipped`);break;case`failed`:n.push(` ${c}${l}${i} ${te(`FAILED`)}: ${r.error}`);break;case`skipped-flag`:break}r.editorId===`claude`&&e.launchJson&&n.push(s(e.launchJson))}if(e.projectScopeUnsupportedLabels&&e.projectScopeUnsupportedLabels.length>0){let t=e.projectScopeUnsupportedLabels.join(`, `),r=e.projectScopeUnsupportedLabels.length===1?`does`:`do`;n.push(` ${t} ${r} not support project-level config; skipped`)}}if(e.projectSkills.length>0){n.push(``),n.push(O(`Project-local skills:`));for(let r of e.projectSkills){let e=`${r.label} (project)`,i=` `.repeat(Math.max(1,20-e.length)),a=r.path?N(t,r.path):``;switch(r.action){case`written`:n.push(` ${e}${i}${a} ${D(`installed`)}`);break;case`overwritten`:n.push(` ${e}${i}${a} ${D(`updated`)}`);break;case`skipped-unsupported`:n.push(` ${e}${i}no known project skill surface; skipped`);break;case`failed`:n.push(` ${e}${i}${a} ${te(`FAILED`)}: ${r.error}`);break}}}if(i&&(n.push(``),n.push(`For failed editors, add the MCP server entry or project skill manually. See:`),n.push(` https://github.com/inkeep/open-knowledge#mcp-setup`)),e.legacyProjectConfigs.length>0){n.push(``),n.push(`Project MCP configs found:`);for(let r of e.legacyProjectConfigs)n.push(` ${r.label} ${N(t,r.path)}`);n.push(` These project-local files may override the global config. Remove them if you want fully user-scoped MCP setup in this project.`)}if(e.skillInstall)switch(n.push(``),n.push(O(`User-global skill:`)),e.skillInstall){case`installed`:n.push(` open-knowledge ${D(`installed to detected agent hosts`)} via \`npx skills\``);break;case`skip-current`:n.push(` open-knowledge ${D(`already installed at current version`)}`);break;case`failed`:n.push(` ${ne(`open-knowledge install failed — MCP still configured; run manually:`)}`),n.push(` ${ne(` npx skills@~1.5.0 add <bundled-path> --agent '*' -g -y --copy`)}`);break}if(e.claudeDesktopDetected&&(n.push(``),n.push(`Claude Desktop App detected. To enable in Claude Chat & Cowork, run: ${O(`ok install-skill`)}`)),e.preview?(n.push(``),n.push(re(e.preview,t))):e.previewWarning&&(n.push(``),n.push(`Content preview unavailable: ${e.previewWarning}`)),r){let t=new Set,r=e.editors.filter(e=>e.action===`written`||e.action===`overwritten`).filter(e=>!t.has(e.editorId)&&t.add(e.editorId)).map(e=>e.label);n.push(``),n.push(`${D(`✓`)} ${O(`Next steps:`)}`),n.push(` 1. Open your editor (${E(r.join(` / `))})`),n.push(` 2. Approve the MCP server when prompted`),n.push(` 3. (Optional) scaffold the starter knowledge-base structure:`),n.push(` - ${E(`ok seed`)} — empty repo, Karpathy 3-layer`),n.push(` - ${E(`mcp__open-knowledge__discover`)} — existing repo, extract conventions`),n.push(` 4. Use the MCP workflow tools as you build the wiki:`),n.push(` - ${E(`mcp__open-knowledge__ingest`)} — capture an external source`),n.push(` - ${E(`mcp__open-knowledge__research`)} — gather sources and write findings`),n.push(` - ${E(`mcp__open-knowledge__consolidate`)} — promote research to canonical articles`)}return n.join(`
406
406
  `)}function $r(e,t){let n=[];for(let r of nr)Gr(Q[r],e,t)&&n.push(r);return n}function ei(){return new i(`init`).description(`Scaffold .ok/ in the current directory and register the MCP server for your editor(s)`).option(`--mcp`,`Register the MCP server for selected editors (default: true)`,!0).option(`--no-mcp`,`Scaffold the .ok/ directory but do not touch MCP config`).option(`--dev-mcp`,`Register a local dev MCP entry using node + packages/cli/dist/cli.mjs with debug logging`).addOption(new r(`--scope <scope>`,`Write MCP config at user level, project level, or both`).choices([`user`,`project`,`both`])).action(async e=>{let t=process.cwd(),n;try{n=await Zr({cwd:t,mcp:e.mcp,devMcp:e.devMcp,scope:e.scope})}catch(e){if(e instanceof s){process.stderr.write(`open-knowledge requires git to initialize a parent repo. Install git or run 'git init' yourself, then re-run.
407
- `),e.stderr&&process.stderr.write(`${e.stderr.trim()}\n`),process.exitCode=1;return}throw e}try{let{previewContent:e}=await import(`./preview-N6-E_vFx.mjs`),{loadConfig:t}=await import(`./loader-C1hxiMbK.mjs`),{resolveContentDir:r}=await import(`./dist-D5J2z1mI.mjs`),{config:i}=t(n.projectRoot),a=r(i,n.projectRoot);n.preview=e({projectDir:n.projectRoot,contentDir:a})}catch(e){n.previewWarning=e instanceof Error?e.message:String(e)}process.stdout.write(`${Qr(n,n.projectRoot)}\n`),(n.editors.some(e=>e.action===`failed`)||n.mcpAction===`failed`)&&(process.exitCode=1)})}export{Ze as C,V as E,ct as S,De as T,dt as _,Vr as a,pt as b,Kr as c,nr as d,Z as f,mt as g,Qn as h,Xr as i,Yr as l,tr as m,Qr as n,Zr as o,Q as p,ei as r,Wr as s,$r as t,Mr as u,ft as v,Xe as w,_t as x,ht as y};
408
- //# sourceMappingURL=init-Db-MJvF_.mjs.map
407
+ `),e.stderr&&process.stderr.write(`${e.stderr.trim()}\n`),process.exitCode=1;return}throw e}try{let{previewContent:e}=await import(`./preview-DXNW4qs9.mjs`),{loadConfig:t}=await import(`./loader-CjHtqud-.mjs`),{resolveContentDir:r}=await import(`./dist-D5J2z1mI.mjs`),{config:i}=t(n.projectRoot),a=r(i,n.projectRoot);n.preview=e({projectDir:n.projectRoot,contentDir:a})}catch(e){n.previewWarning=e instanceof Error?e.message:String(e)}process.stdout.write(`${Qr(n,n.projectRoot)}\n`),(n.editors.some(e=>e.action===`failed`)||n.mcpAction===`failed`)&&(process.exitCode=1)})}export{Ze as C,V as E,ct as S,De as T,dt as _,Vr as a,pt as b,Kr as c,nr as d,Z as f,mt as g,Qn as h,Xr as i,Yr as l,tr as m,Qr as n,Zr as o,Q as p,ei as r,Wr as s,$r as t,Mr as u,ft as v,Xe as w,_t as x,ht as y};
408
+ //# sourceMappingURL=init-CTIvDudd.mjs.map
@@ -0,0 +1 @@
1
+ import{o as e}from"./init-CTIvDudd.mjs";export{e as runInit};
@@ -0,0 +1 @@
1
+ import{n as e}from"./loader-DtWxxtIg.mjs";export{e as loadConfig};
@@ -1,4 +1,4 @@
1
- import{Jr as e,f as t,fi as n,ji as r,qr as i,vi as a}from"./dist-V31CRf7D.mjs";import{t as o}from"./constants-XCszYh-u.mjs";import{t as s}from"./is-object-DF0ZeuvD.mjs";import{resolve as c}from"node:path";import{existsSync as l,readFileSync as u}from"node:fs";import{realpath as d}from"node:fs/promises";async function f(e){let t=c(e);try{return await d(t)}catch(e){if(e.code!==`ENOENT`){let n=e instanceof Error?e.message:String(e);console.warn(`[normalize-cwd] realpath failed for ${t}: ${n}`)}return t}}var p=r();function m(e,t){let n={...e};for(let r of Object.keys(t)){let i=e[r],a=t[r];s(a)&&s(i)?n[r]=m(i,a):a!==void 0&&(n[r]=a)}return n}function h(e){if(!l(e))return{value:null,path:e,source:null,doc:null};let t;try{t=u(e,`utf-8`)}catch(t){return console.warn(`[config] Failed to read ${e}: ${t instanceof Error?t.message:t}`),{value:null,path:e,source:null,doc:null}}let n=(0,p.parseDocument)(t);if(n.errors.length>0)return console.warn(`[config] Failed to parse ${e}: ${n.errors.map(e=>e.message).join(`; `)}`),{value:null,path:e,source:t,doc:null};let r=n.toJSON();return s(r)?{value:r,path:e,source:t,doc:n}:{value:null,path:e,source:t,doc:n}}const g=[`include`,`exclude`];function _(e){let t="Run `ok config migrate` to strip the obsolete key from config.yml automatically, or remove it by hand.";return e===`exclude`?[`Move these patterns to .okignore at the project root (gitignore syntax, 1:1 migration).`,t].join(` `):[`content.include has been removed.`,`For subdirectory scoping, set content.dir in .ok/config.yml instead.`,`For pattern-based filtering, use .okignore (gitignore syntax — exclude-only; do not copy include patterns directly).`,t].join(` `)}function v(e){let t=e.value;if(!s(t))return[];let n=t.content;if(!s(n))return[];let r=[];for(let t of g)if(t in n){let n=[`content`,t],i;e.doc!==null&&e.source!==null&&(i=a({file:e.path,source:e.source,doc:e.doc,path:n})),r.push({code:`REMOVED_KEY`,path:n,redirect:_(t),...i===void 0?{}:{source:i}})}return r}function y(e,t){return e.map(e=>{let n=e.path.map(e=>typeof e==`symbol`?String(e):e),r={path:n,message:e.message,issueCode:e.code};if(t.doc!==null&&t.source!==null){let e=a({file:t.path,source:t.source,doc:t.doc,path:n});if(e!==void 0)return{...r,source:e}}return r})}function b(r){let a=r??process.cwd(),s=[],l=e(`user`,a),u=i({absPath:l}),d={};u.valid&&u.source!==void 0?(d=m(d,u.value),s.push(l)):u.valid;let f=c(a,`.ok`,o),p=h(f);if(p.value!==null){let e=v(p);if(e.length>0)throw Error(e.map(n).join(`
1
+ import{Jr as e,f as t,fi as n,ji as r,qr as i,vi as a}from"./dist-V31CRf7D.mjs";import{t as o}from"./constants-C7p5YUDU.mjs";import{t as s}from"./is-object-DF0ZeuvD.mjs";import{resolve as c}from"node:path";import{existsSync as l,readFileSync as u}from"node:fs";import{realpath as d}from"node:fs/promises";async function f(e){let t=c(e);try{return await d(t)}catch(e){if(e.code!==`ENOENT`){let n=e instanceof Error?e.message:String(e);console.warn(`[normalize-cwd] realpath failed for ${t}: ${n}`)}return t}}var p=r();function m(e,t){let n={...e};for(let r of Object.keys(t)){let i=e[r],a=t[r];s(a)&&s(i)?n[r]=m(i,a):a!==void 0&&(n[r]=a)}return n}function h(e){if(!l(e))return{value:null,path:e,source:null,doc:null};let t;try{t=u(e,`utf-8`)}catch(t){return console.warn(`[config] Failed to read ${e}: ${t instanceof Error?t.message:t}`),{value:null,path:e,source:null,doc:null}}let n=(0,p.parseDocument)(t);if(n.errors.length>0)return console.warn(`[config] Failed to parse ${e}: ${n.errors.map(e=>e.message).join(`; `)}`),{value:null,path:e,source:t,doc:null};let r=n.toJSON();return s(r)?{value:r,path:e,source:t,doc:n}:{value:null,path:e,source:t,doc:n}}const g=[`include`,`exclude`];function _(e){let t="Run `ok config migrate` to strip the obsolete key from config.yml automatically, or remove it by hand.";return e===`exclude`?[`Move these patterns to .okignore at the project root (gitignore syntax, 1:1 migration).`,t].join(` `):[`content.include has been removed.`,`For subdirectory scoping, set content.dir in .ok/config.yml instead.`,`For pattern-based filtering, use .okignore (gitignore syntax — exclude-only; do not copy include patterns directly).`,t].join(` `)}function v(e){let t=e.value;if(!s(t))return[];let n=t.content;if(!s(n))return[];let r=[];for(let t of g)if(t in n){let n=[`content`,t],i;e.doc!==null&&e.source!==null&&(i=a({file:e.path,source:e.source,doc:e.doc,path:n})),r.push({code:`REMOVED_KEY`,path:n,redirect:_(t),...i===void 0?{}:{source:i}})}return r}function y(e,t){return e.map(e=>{let n=e.path.map(e=>typeof e==`symbol`?String(e):e),r={path:n,message:e.message,issueCode:e.code};if(t.doc!==null&&t.source!==null){let e=a({file:t.path,source:t.source,doc:t.doc,path:n});if(e!==void 0)return{...r,source:e}}return r})}function b(r){let a=r??process.cwd(),s=[],l=e(`user`,a),u=i({absPath:l}),d={};u.valid&&u.source!==void 0?(d=m(d,u.value),s.push(l)):u.valid;let f=c(a,`.ok`,o),p=h(f);if(p.value!==null){let e=v(p);if(e.length>0)throw Error(e.map(n).join(`
2
2
 
3
3
  `));d=m(d,p.value),s.push(f)}x(d,[`upload`,`maxBytes`],`streaming uploads have no user-facing cap`),x(d,[`github`,`oauthAppClientId`],`use the OPEN_KNOWLEDGE_GITHUB_CLIENT_ID env var instead`),x(d,[`server`,`host`],`use the --host flag or HOST env var instead`),x(d,[`server`,`openOnAgentEdit`]),x(d,[`mcp`,`autoStart`],`to disable auto-start, set OK_MCP_AUTOSTART=0`),x(d,[`mcp`,`tools`,`read_document`,`historyDepth`]),x(d,[`mcp`,`tools`,`grep`,`maxResults`]),x(d,[`mcp`,`tools`,`search`,`maxResults`]),x(d,[`preview`,`baseUrl`],"preview URLs now resolve only to the running UI process — start one with `ok ui`");let g=t.safeParse(d);if(!g.success){let e={code:`SCHEMA_INVALID`,issues:y(g.error.issues,p)};throw Error(n(e))}return{config:g.data,sources:s}}function x(e,t,n){let r=e;for(let e=0;e<t.length-1;e++){if(!s(r))return;r=r[t[e]]}if(!s(r))return;let i=t[t.length-1];if(r[i]===void 0)return;let a=t.join(`.`);console.warn(`[config] ${a} is no longer user-configurable; ${n??`the value is hardcoded in @inkeep/open-knowledge-core`}. Remove the key to silence this warning.`)}function S(e){let t=e.cacheMs??1e3,n=e.loadConfigFn??b,r=new Map,i=new Map,a=f(e.startupCwd);return async o=>{let s=await f(o??e.startupCwd),c=Date.now(),l=r.get(s);if(l&&l.expiresAt>c)return l.config;let u=i.get(s);if(u)return await u;let d=(async()=>{if(s===await a)return r.set(s,{config:e.startupConfig,expiresAt:Date.now()+t}),e.startupConfig;let i=n(s).config;return r.set(s,{config:i,expiresAt:Date.now()+t}),i})();i.set(s,d);try{return await d}finally{i.delete(s)}}}export{b as n,S as t};
4
- //# sourceMappingURL=loader-BF1HVIAE.mjs.map
4
+ //# sourceMappingURL=loader-DtWxxtIg.mjs.map
@@ -1,3 +1,3 @@
1
- import{Ct as e}from"./dist-V31CRf7D.mjs";import"./constants-XCszYh-u.mjs";import{join as t,relative as n}from"node:path";import{existsSync as r,lstatSync as i,readdirSync as a,realpathSync as o,statSync as s}from"node:fs";function c(r){let{projectDir:c,contentDir:l,sampleCap:u=5}=r,d=[],f=[];try{i(l)}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[`cannot access content directory ${l}: ${e instanceof Error?e.message:String(e)}`]}}let p;try{p=e({projectDir:c,contentDir:l})}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[e instanceof Error?e.message:String(e)]}}function m(e){let r;try{r=a(e,{withFileTypes:!0})}catch(t){let r=t instanceof Error?t.message:String(t);d.push(`could not read directory ${n(l,e)||`.`}: ${r}`);return}for(let i of r){let r=t(e,i.name);if(i.isSymbolicLink()){let e;try{e=o(r)}catch(e){let t=e.code;t===`ENOENT`||t===`ELOOP`?d.push(`broken or cyclic symlink: ${n(l,r)}`):d.push(`cannot resolve symlink ${n(l,r)}: ${t??`unknown error`}`);continue}let t;try{t=s(e)}catch{continue}if(t.isDirectory()){let e=n(l,r);if(p.isDirExcluded(e))continue;m(r)}else if(t.isFile()){let e=n(l,r);if(p.isExcluded(e))continue;f.push(e)}}else if(i.isDirectory()){let e=n(l,r);if(p.isDirExcluded(e))continue;m(r)}else if(i.isFile()){let e=n(l,r);if(p.isExcluded(e))continue;f.push(e)}}}return m(l),{totalCount:f.length,sample:f.slice(0,u),contentDir:l,warnings:d}}function l(e,i){let a=[],o=n(i,e.contentDir),s=o===``?`./`:`./${o}`;if(a.push(`Content:`),a.push(` Found ${e.totalCount} markdown files in ${s}`),e.sample.length>0){let t=e.sample.join(`, `),n=e.totalCount>e.sample.length?`, …`:``;a.push(` Sample: ${t}${n}`)}if(e.warnings.length>0)for(let t of e.warnings)a.push(` Warning: ${t}`);return a.push(``),r(t(i,`.ok`,`config.yml`))?(a.push(` To adjust scope, add patterns to .okignore at the project root.`),a.push(` To change the content root, edit .ok/config.yml → content.dir.`)):a.push(" Run `open-knowledge init` to scaffold config + .okignore."),a.push(``),a.push(` Re-check anytime: open-knowledge preview`),a.join(`
1
+ import{Ct as e}from"./dist-V31CRf7D.mjs";import"./constants-C7p5YUDU.mjs";import{join as t,relative as n}from"node:path";import{existsSync as r,lstatSync as i,readdirSync as a,realpathSync as o,statSync as s}from"node:fs";function c(r){let{projectDir:c,contentDir:l,sampleCap:u=5}=r,d=[],f=[];try{i(l)}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[`cannot access content directory ${l}: ${e instanceof Error?e.message:String(e)}`]}}let p;try{p=e({projectDir:c,contentDir:l})}catch(e){return{totalCount:0,sample:[],contentDir:l,warnings:[e instanceof Error?e.message:String(e)]}}function m(e){let r;try{r=a(e,{withFileTypes:!0})}catch(t){let r=t instanceof Error?t.message:String(t);d.push(`could not read directory ${n(l,e)||`.`}: ${r}`);return}for(let i of r){let r=t(e,i.name);if(i.isSymbolicLink()){let e;try{e=o(r)}catch(e){let t=e.code;t===`ENOENT`||t===`ELOOP`?d.push(`broken or cyclic symlink: ${n(l,r)}`):d.push(`cannot resolve symlink ${n(l,r)}: ${t??`unknown error`}`);continue}let t;try{t=s(e)}catch{continue}if(t.isDirectory()){let e=n(l,r);if(p.isDirExcluded(e))continue;m(r)}else if(t.isFile()){let e=n(l,r);if(p.isExcluded(e))continue;f.push(e)}}else if(i.isDirectory()){let e=n(l,r);if(p.isDirExcluded(e))continue;m(r)}else if(i.isFile()){let e=n(l,r);if(p.isExcluded(e))continue;f.push(e)}}}return m(l),{totalCount:f.length,sample:f.slice(0,u),contentDir:l,warnings:d}}function l(e,i){let a=[],o=n(i,e.contentDir),s=o===``?`./`:`./${o}`;if(a.push(`Content:`),a.push(` Found ${e.totalCount} markdown files in ${s}`),e.sample.length>0){let t=e.sample.join(`, `),n=e.totalCount>e.sample.length?`, …`:``;a.push(` Sample: ${t}${n}`)}if(e.warnings.length>0)for(let t of e.warnings)a.push(` Warning: ${t}`);return a.push(``),r(t(i,`.ok`,`config.yml`))?(a.push(` To adjust scope, add patterns to .okignore at the project root.`),a.push(` To change the content root, edit .ok/config.yml → content.dir.`)):a.push(" Run `open-knowledge init` to scaffold config + .okignore."),a.push(``),a.push(` Re-check anytime: open-knowledge preview`),a.join(`
2
2
  `)}export{c as n,l as t};
3
- //# sourceMappingURL=preview-qR7FFUro.mjs.map
3
+ //# sourceMappingURL=preview-C6CMQBVH.mjs.map
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./preview-C6CMQBVH.mjs";export{t as formatPreviewBlock,e as previewContent};
@@ -0,0 +1,11 @@
1
+ import{o as e,t}from"./chunk-CFjPhJqf.js";import{n,r,t as i}from"./compiler-runtime-CVnuRdak.js";import{an as a,dn as o,in as s,j as c,n as l,nt as u,zt as d}from"./DocumentContext-BIHXIA3J.js";import{Br as f,Kt as p,Ln as m,Rr as h,Sn as g,Wr as _,et as v,nt as y,s as b,zr as x}from"./doc-hash-kxo-uZOQ.js";import{C as S,_ as C,r as w,t as T}from"./button-C1nwPVFQ.js";import{A as E,C as D,D as O,Dt as k,E as A,Et as j,F as M,G as N,M as P,N as F,O as ee,P as te,S as ne,T as re,Tt as ie,U as I,W as ae,X as oe,Y as se,_ as ce,a as le,at as L,b as ue,c as de,d as fe,f as pe,g as me,h as he,i as ge,it as _e,j as ve,k as ye,l as be,m as xe,n as Se,o as Ce,p as we,s as Te,u as Ee,v as De,w as Oe}from"./config-validation-events-MJXadIVB.js";import{n as ke}from"./dist-Bej94Urx.js";import{S as Ae,a as je,c as Me,i as Ne,t as Pe,x as Fe}from"./dialog-Blv3p5PJ.js";import{n as Ie,t as Le}from"./toggle-group-KbPGx9kK.js";import{t as Re}from"./label-Dv_9VZWz.js";import{i as ze,n as Be,t as Ve}from"./tooltip-C-s5R-Gs.js";import{t as He}from"./input-hZk8Tm0e.js";var Ue=S(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),R=i(),z=e(n(),1),We=e=>e.type===`checkbox`,Ge=e=>e instanceof Date,B=e=>e==null,Ke=e=>typeof e==`object`,V=e=>!B(e)&&!Array.isArray(e)&&Ke(e)&&!Ge(e),qe=e=>V(e)&&e.target?We(e.target)?e.target.checked:e.target.value:e,Je=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Ye=e=>{let t=e.constructor&&e.constructor.prototype;return V(t)&&t.hasOwnProperty(`isPrototypeOf`)},Xe=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function H(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(Xe&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(V(e)&&Ye(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=H(e[t]));return r}var Ze=e=>/^\w*$/.test(e),U=e=>e===void 0,Qe=e=>Array.isArray(e)?e.filter(Boolean):[],$e=e=>Qe(e.replace(/["|']|\]/g,``).split(/\.|\[/)),W=(e,t,n)=>{if(!t||!V(e))return n;let r=(Ze(t)?[t]:$e(t)).reduce((e,t)=>B(e)?void 0:e[t],e);return U(r)||r===e?U(e[t])?n:e[t]:r},G=e=>typeof e==`boolean`,K=e=>typeof e==`function`,q=(e,t,n)=>{let r=-1,i=Ze(t)?[t]:$e(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=V(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(t===`__proto__`||t===`constructor`||t===`prototype`)return;e[t]=a,e=e[t]}},et={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},tt={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},J={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},nt=`form`,rt=`root`,it=z.createContext(null);it.displayName=`HookFormControlContext`;var at=()=>z.useContext(it),ot=(e,t,n,r=!0)=>{let i={defaultValues:t._defaultValues};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==tt.all&&(t._proxyFormState[i]=!r||tt.all),n&&(n[i]=!0),e[i]}});return i},st=typeof window<`u`?z.useLayoutEffect:z.useEffect;function ct(e){let t=at(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[o,s]=z.useState(n._formState),c=z.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return st(()=>n._subscribe({name:i,formState:c.current,exact:a,callback:e=>{!r&&s({...n._formState,...e})}}),[i,r,a]),z.useEffect(()=>{c.current.isValid&&n._setValid(!0)},[n]),z.useMemo(()=>ot(o,n,c.current,!1),[o,n])}var Y=e=>typeof e==`string`,lt=(e,t,n,r,i)=>Y(e)?(r&&t.watch.add(e),W(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),W(n,e))):(r&&(t.watchAll=!0),n),ut=e=>B(e)||!Ke(e);function X(e,t,n=new WeakSet){if(e===t)return!0;if(ut(e)||ut(t))return Object.is(e,t);if(Ge(e)&&Ge(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(Ge(r)&&Ge(e)||(V(r)||Array.isArray(r))&&(V(e)||Array.isArray(e))?!X(r,e,n):!Object.is(r,e))return!1}}return!0}function dt(e){let t=at(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=z.useRef(i),l=z.useRef(s),u=z.useRef(void 0),d=z.useRef(n),f=z.useRef(r);l.current=s;let[p,m]=z.useState(()=>{let e=n._getWatch(r,c.current);return l.current?l.current(e):e}),h=z.useCallback(e=>{let t=lt(r,n._names,e||n._formValues,!1,c.current);return l.current?l.current(t):t},[n._formValues,n._names,r]),g=z.useCallback(e=>{if(!a){let t=lt(r,n._names,e||n._formValues,!1,c.current);if(l.current){let e=l.current(t);X(e,u.current)||(m(e),u.current=e)}else m(t)}},[n._formValues,n._names,a,r]);st(()=>((d.current!==n||!X(f.current,r))&&(d.current=n,f.current=r,g()),n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{g(e.values)}})),[n,o,r,g]),z.useEffect(()=>n._removeUnmounted());let _=d.current!==n,v=f.current,y=z.useMemo(()=>{if(a)return null;let e=!_&&!X(v,r);return _||e?h():null},[a,_,r,v,h]);return y===null?p:y}function ft(e){let t=at(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=Je(i._names.array,n),l=dt({control:i,name:n,defaultValue:z.useMemo(()=>W(i._formValues,n,W(i._defaultValues,n,o)),[i,n,o]),exact:s}),u=ct({control:i,name:n,exact:s}),d=z.useRef(e),f=z.useRef(i.register(n,{...e.rules,value:l,...G(e.disabled)?{disabled:e.disabled}:{}}));d.current=e;let p=z.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!W(u.errors,n)},isDirty:{enumerable:!0,get:()=>!!W(u.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!W(u.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!W(u.validatingFields,n)},error:{enumerable:!0,get:()=>W(u.errors,n)}}),[u,n]),m=z.useCallback(e=>f.current.onChange({target:{value:qe(e),name:n},type:et.CHANGE}),[n]),h=z.useCallback(()=>f.current.onBlur({target:{value:W(i._formValues,n),name:n},type:et.BLUR}),[n,i._formValues]),g=z.useCallback(e=>{let t=W(i._fields,n);t&&t._f&&e&&(t._f.ref={focus:()=>K(e.focus)&&e.focus(),select:()=>K(e.select)&&e.select(),setCustomValidity:t=>K(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>K(e.reportValidity)&&e.reportValidity()})},[i._fields,n]),_=z.useMemo(()=>({name:n,value:l,...G(r)||u.disabled?{disabled:u.disabled||r}:{},onChange:m,onBlur:h,ref:g}),[n,r,u.disabled,m,h,g,l]);return z.useEffect(()=>{let e=i._options.shouldUnregister||a;i.register(n,{...d.current.rules,...G(d.current.disabled)?{disabled:d.current.disabled}:{}});let t=(e,t)=>{let n=W(i._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){let e=H(W(i._options.defaultValues,n,d.current.defaultValue));q(i._defaultValues,n,e),U(W(i._formValues,n))&&q(i._formValues,n,e)}return!c&&i.register(n),()=>{(c?e&&!i._state.action:e)?i.unregister(n):t(n,!1)}},[n,i,c,a]),z.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),z.useMemo(()=>({field:_,formState:u,fieldState:p}),[_,u,p])}var pt=e=>e.render(ft(e)),mt=z.createContext(null);mt.displayName=`HookFormContext`;var ht=()=>z.useContext(mt),gt=e=>{let{children:t,watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,trigger:c,formState:l,resetField:u,reset:d,handleSubmit:f,unregister:p,control:m,register:h,setFocus:g,subscribe:_}=e,v=z.useMemo(()=>({watch:n,getValues:r,getFieldState:i,setError:a,clearErrors:o,setValue:s,trigger:c,formState:l,resetField:u,reset:d,handleSubmit:f,unregister:p,control:m,register:h,setFocus:g,subscribe:_}),[o,m,l,i,r,f,h,d,u,a,g,s,_,c,p,n]);return z.createElement(mt.Provider,{value:v},z.createElement(it.Provider,{value:v.control},t))},_t=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},vt=e=>Array.isArray(e)?e:[e],yt=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function bt(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&V(i)&&a){let e=bt(i,a);V(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Z=e=>V(e)&&!Object.keys(e).length,xt=e=>e.type===`file`,St=e=>{if(!Xe)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},Ct=e=>e.type===`select-multiple`,wt=e=>e.type===`radio`,Tt=e=>wt(e)||We(e),Et=e=>St(e)&&e.isConnected;function Dt(e,t){let n=t.slice(0,-1).length,r=0;for(;r<n;){if(B(e)){e=void 0;break}e=e[t[r]],r++}return e}function Ot(e){for(let t in e)if(e.hasOwnProperty(t)&&!U(e[t]))return!1;return!0}function Q(e,t){if(Y(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:Ze(t)?[t]:$e(t),r=n.length===1?e:Dt(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(V(r)&&Z(r)||Array.isArray(r)&&Ot(r))&&Q(e,n.slice(0,-1)),e}var kt=e=>{for(let t in e)if(K(e[t]))return!0;return!1};function At(e){return Array.isArray(e)||V(e)&&!kt(e)}function jt(e,t={}){for(let n in e){let r=e[n];At(r)?(t[n]=Array.isArray(r)?[]:{},jt(r,t[n])):U(r)||(t[n]=!0)}return t}function Mt(e,t,n){n||=jt(t);for(let r in e){let i=e[r];if(At(i))U(t)||ut(n[r])?n[r]=jt(i,Array.isArray(i)?[]:{}):Mt(i,B(t)?{}:t[r],n[r]);else{let e=t[r];n[r]=!X(i,e)}}return n}var Nt={value:!1,isValid:!1},Pt={value:!0,isValid:!0},Ft=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!U(e[0].attributes.value)?U(e[0].value)||e[0].value===``?Pt:{value:e[0].value,isValid:!0}:Pt:Nt}return Nt},It=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>U(e)?e:t?e===``?NaN:e&&+e:n&&Y(e)?new Date(e):r?r(e):e,Lt={isValid:!1,value:null},Rt=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Lt):Lt;function zt(e){let t=e.ref;return xt(t)?t.files:wt(t)?Rt(e.refs).value:Ct(t)?[...t.selectedOptions].map(({value:e})=>e):We(t)?Ft(e.refs).value:It(U(t.value)?e.ref.value:t.value,e)}var Bt=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,Vt=(e,t,n,r)=>{let i={};for(let n of e){let e=W(t,n);e&&q(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},Ht=e=>e instanceof RegExp,Ut=e=>U(e)?e:Ht(e)?e.source:V(e)?Ht(e.value)?e.value.source:e.value:e,Wt=e=>({isOnSubmit:!e||e===tt.onSubmit,isOnBlur:e===tt.onBlur,isOnChange:e===tt.onChange,isOnAll:e===tt.all,isOnTouch:e===tt.onTouched}),Gt=`AsyncFunction`,Kt=e=>!!e&&!!e.validate&&!!(K(e.validate)&&e.validate.constructor.name===Gt||V(e.validate)&&Object.values(e.validate).find(e=>e.constructor.name===Gt)),qt=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),Jt=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))),Yt=(e,t,n,r)=>{for(let i of n||Object.keys(e)){let n=W(e,i);if(n){let{_f:e,...a}=n;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(Yt(a,t))break}else if(V(a)&&Yt(a,t))break}}};function Xt(e,t,n){let r=W(e,n);if(r||Ze(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=W(t,r),o=W(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var Zt=(e,t,n,r)=>{n(e);let{name:i,...a}=e;return Z(a)||Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find(e=>t[e]===(!r||tt.all))},Qt=(e,t,n)=>!e||!t||e===t||vt(e).some(e=>e&&(n?e===t:e.startsWith(t)||t.startsWith(e))),$t=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:(n?r.isOnChange:i.isOnChange)?e:!0,en=(e,t)=>!Qe(W(e,t)).length&&Q(e,t),tn=(e,t,n)=>{let r=vt(W(e,n));return q(r,rt,t[n]),q(e,n,r),e};function nn(e,t,n=`validate`){if(Y(e)||Array.isArray(e)&&e.every(Y)||G(e)&&!e)return{type:n,message:Y(e)?e:``,ref:t}}var rn=e=>V(e)&&!Ht(e)?e:{value:e,message:``},an=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:m,name:h,valueAsNumber:g,mount:_}=e._f,v=W(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{i&&y.reportValidity&&(y.setCustomValidity(G(e)?``:e||``),y.reportValidity())},x={},S=wt(o),C=We(o),w=S||C,T=(g||xt(o))&&U(o.value)&&U(v)||St(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length||g&&typeof v==`number`&&isNaN(v),E=_t.bind(null,h,r,x),D=(e,t,n,r=J.maxLength,i=J.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...E(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!w&&(T||B(v))||G(v)&&!v||C&&!Ft(s).isValid||S&&!Rt(s).isValid)){let{value:e,message:t}=Y(c)?{value:!!c,message:c}:rn(c);if(e&&(x[h]={type:J.required,message:t,ref:y,...E(J.required,t)},!r))return b(t),x}if(!T&&(!B(d)||!B(f))){let e,t,n=rn(f),i=rn(d);if(!B(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;B(n.value)||(e=r>n.value),B(i.value)||(t=r<i.value)}else{let r=o.valueAsDate||new Date(v),a=e=>new Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;Y(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),Y(i.value)&&v&&(t=s?a(v)<a(i.value):c?v<i.value:r<new Date(i.value))}if((e||t)&&(D(!!e,n.message,i.message,J.max,J.min),!r))return b(x[h].message),x}if((l||u)&&!T&&(Y(v)||a&&Array.isArray(v))){let e=rn(l),t=rn(u),n=!B(e.value)&&v.length>+e.value,i=!B(t.value)&&v.length<+t.value;if((n||i)&&(D(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!T&&Y(v)){let{value:e,message:t}=rn(p);if(Ht(e)&&!v.match(e)&&(x[h]={type:J.pattern,message:t,ref:o,...E(J.pattern,t)},!r))return b(t),x}if(m){if(K(m)){let e=nn(await m(v,n),y);if(e&&(x[h]={...e,...E(J.validate,e.message)},!r))return b(e.message),x}else if(V(m)){let e={};for(let t in m){if(!Z(e)&&!r)break;let i=nn(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!Z(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},on={mode:tt.onSubmit,reValidateMode:tt.onChange,shouldFocusError:!0};function sn(e={}){let t={...on,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:K(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},r={},i=(V(t.defaultValues)||V(t.values))&&H(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:H(i),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c,l=0,u={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},d={...u},f={...d},p={array:yt(),state:yt()},m=t.criteriaMode===tt.all,h=e=>t=>{clearTimeout(l),l=setTimeout(e,t)},g=async e=>{if(!o.keepIsValid&&!t.disabled&&(d.isValid||f.isValid||e)){let e;t.resolver?(e=Z((await T()).errors),_()):e=await O({fields:r,onlyCheckValid:!0,eventType:et.VALID}),e!==n.isValid&&p.state.next({isValid:e})}},_=(e,r)=>{!t.disabled&&(d.isValidating||d.validatingFields||f.isValidating||f.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?q(n.validatingFields,e,r):Q(n.validatingFields,e))}),p.state.next({validatingFields:n.validatingFields,isValidating:!Z(n.validatingFields)}))},v=e=>{let t=Mt(i,a),r=Bt(e);q(n.dirtyFields,r,W(t,r))},y=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,u&&Array.isArray(W(r,e))){let t=s(W(r,e),c.argA,c.argB);l&&q(r,e,t)}if(u&&Array.isArray(W(n.errors,e))){let t=s(W(n.errors,e),c.argA,c.argB);l&&q(n.errors,e,t),en(n.errors,e)}if((d.touchedFields||f.touchedFields)&&u&&Array.isArray(W(n.touchedFields,e))){let t=s(W(n.touchedFields,e),c.argA,c.argB);l&&q(n.touchedFields,e,t)}(d.dirtyFields||f.dirtyFields)&&v(e),p.state.next({name:e,isDirty:A(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else q(a,e,i)},b=(e,t)=>{q(n.errors,e,t),p.state.next({errors:n.errors})},x=e=>{n.errors=e,p.state.next({errors:n.errors,isValid:!1})},S=(e,t,n,s)=>{let c=W(r,e);if(c){let r=W(a,e,U(n)?W(i,e):n);U(r)||s&&s.defaultChecked||t?q(a,e,t?r:zt(c._f)):N(e,r),o.mount&&!o.action&&g()}},C=(e,r,a,o,s)=>{let c=!1,l=!1,u={name:e};if(!t.disabled){if(!a||o){(d.isDirty||f.isDirty)&&(l=n.isDirty,n.isDirty=u.isDirty=A(),c=l!==u.isDirty);let t=X(W(i,e),r);l=!!W(n.dirtyFields,e),t?Q(n.dirtyFields,e):q(n.dirtyFields,e,!0),u.dirtyFields=n.dirtyFields,c||=(d.dirtyFields||f.dirtyFields)&&l!==!t}if(a){let t=W(n.touchedFields,e);t||(q(n.touchedFields,e,a),u.touchedFields=n.touchedFields,c||=(d.touchedFields||f.touchedFields)&&t!==a)}c&&s&&p.state.next(u)}return c?u:{}},w=(e,r,i,a)=>{let o=W(n.errors,e),s=(d.isValid||f.isValid)&&G(r)&&n.isValid!==r;if(t.delayError&&i?(c=h(()=>b(e,i)),c(t.delayError)):(clearTimeout(l),c=null,i?q(n.errors,e,i):Q(n.errors,e)),(i?!X(o,i):o)||!Z(a)||s){let t={...a,...s&&G(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},p.state.next(t)}},T=async e=>(_(e,!0),await t.resolver(a,t.context,Vt(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),E=async e=>{let{errors:t}=await T(e);if(_(e),e)for(let r of e){let e=W(t,r);e?q(n.errors,r,e):Q(n.errors,r)}else n.errors=t;return t},D=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(V(i))for(let e in i)i[e]&&oe(`${nt}.${e}`,{message:Y(i.message)?i.message:``,type:J.validate});else Y(i)||!i?oe(nt,{message:i||``,type:J.validate}):ae(nt);return i}return!0},O=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await D({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...f}=u;if(r){let o=s.array.has(r.name),c=u._f&&Kt(u._f);c&&d.validatingFields&&_([r.name],!0);let f=await an(u,s.disabled,a,m,t.shouldUseNativeValidation&&!i,o);if(c&&d.validatingFields&&_([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(W(f,r.name)?o?tn(n.errors,f,r.name):q(n.errors,r.name,f[r.name]):Q(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!Z(f)&&await O({context:l,onlyCheckValid:i,fields:f,name:o,eventType:c})}}return l.valid},k=()=>{for(let e of s.unMount){let t=W(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Et(e)):!Et(t._f.ref))&&L(e)}s.unMount=new Set},A=(e,n)=>!t.disabled&&(e&&n&&q(a,e,n),!X(ie(),i)),j=(e,t,n)=>lt(e,s,{...o.mount?a:U(t)?i:Y(e)?{[e]:t}:t},n,t),M=e=>Qe(W(o.mount?a:i,e,t.shouldUnregister?W(i,e,[]):[])),N=(e,t,n={})=>{let i=W(r,e),o=t;if(i){let n=i._f;n&&(!n.disabled&&q(a,e,It(t,n)),o=St(n.ref)&&B(t)?``:t,Ct(n.ref)?[...n.ref.options].forEach(e=>e.selected=o.includes(e.value)):n.refs?We(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(Array.isArray(o)?e.checked=!!o.find(t=>t===e.value):e.checked=o===e.value||!!o)}):n.refs.forEach(e=>e.checked=e.value===o):xt(n.ref)?n.ref.value=``:(n.ref.value=o,n.ref.type||p.state.next({name:e,values:H(a)})))}(n.shouldDirty||n.shouldTouch)&&C(e,o,n.shouldTouch,n.shouldDirty,!0),n.shouldValidate&&re(e)},P=(e,t,n)=>{for(let i in t){if(!t.hasOwnProperty(i))return;let a=t[i],o=e+`.`+i,c=W(r,o);(s.array.has(e)||V(a)||c&&!c._f)&&!Ge(a)?P(o,a,n):N(o,a,n)}},F=(e,t,i={})=>{let c=W(r,e),l=s.array.has(e),u=H(t),d=X(W(a,e),u);if(q(a,e,u),l)p.array.next({name:e,values:H(a)}),i.shouldDirty&&(v(e),p.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:A(e,u)}));else{let t=Array.isArray(u)&&!u.length||Z(u);!c||c._f||B(u)||t?N(e,u,i):P(e,u,i)}d||(Jt(e,s)?p.state.next({...n,name:e,values:H(a)}):p.state.next({name:o.mount?e:void 0,values:H(a)}))},ee=e=>{let t=K(e)?e(a):e;X(a,t)||(a={...a,...t},p.state.next({...n,values:a}))},te=async i=>{o.mount=!0;let l=i.target,u=l.name,h=!0,v=W(r,u),y=e=>{h=Number.isNaN(e)||Ge(e)&&isNaN(e.getTime())||X(e,W(a,u,e))},b=Wt(t.mode),x=Wt(t.reValidateMode);if(v){let o,S,E=l.type?zt(v._f):qe(i),k=i.type===et.BLUR||i.type===et.FOCUS_OUT,A=!qt(v._f)&&!e.validate&&!t.resolver&&!W(n.errors,u)&&!v._f.deps||$t(k,W(n.touchedFields,u),n.isSubmitted,x,b),j=Jt(u,s,k);q(a,u,E),k?(!l||!l.readOnly)&&(v._f.onBlur&&v._f.onBlur(i),c&&c(0)):v._f.onChange&&v._f.onChange(i);let M=C(u,E,k),N=!Z(M)||j;if(!k&&p.state.next({name:u,type:i.type,values:H(a)}),A)return(d.isValid||f.isValid)&&(t.mode===`onBlur`?k&&g():k||g()),N&&p.state.next({name:u,...j?{}:M});if(!t.resolver&&e.validate&&await D({name:u,eventType:i.type}),!k&&j&&p.state.next({...n}),t.resolver){let{errors:e}=await T([u]);if(_([u]),y(E),h){let t=Xt(n.errors,r,u),i=Xt(e,r,t.name||u);o=i.error,u=i.name,S=Z(e)}}else _([u],!0),o=(await an(v,s.disabled,a,m,t.shouldUseNativeValidation))[u],_([u]),y(E),h&&(o?S=!1:(d.isValid||f.isValid)&&(S=await O({fields:r,onlyCheckValid:!0,name:u,eventType:i.type})));h&&(v._f.deps&&(!Array.isArray(v._f.deps)||v._f.deps.length>0)&&re(v._f.deps),w(u,S,o,M))}},ne=(e,t)=>{if(W(n.errors,t)&&e.focus)return e.focus(),1},re=async(e,i={})=>{let a,o,c=vt(e);if(t.resolver){let t=await E(U(e)?e:c);a=Z(t),o=e?!c.some(e=>W(t,e)):a}else e?(o=(await Promise.all(c.map(async e=>{let t=W(r,e);return await O({fields:t&&t._f?{[e]:t}:t,eventType:et.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&g()):o=a=await O({fields:r,name:e,eventType:et.TRIGGER});return p.state.next({...!Y(e)||(d.isValid||f.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&Yt(r,ne,e?c:s.mount),o},ie=(e,t)=>{let r={...o.mount?a:i};return t&&(r=bt(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),U(e)?r:Y(e)?W(r,e):e.map(e=>W(r,e))},I=(e,t)=>({invalid:!!W((t||n).errors,e),isDirty:!!W((t||n).dirtyFields,e),error:W((t||n).errors,e),isValidating:!!W(n.validatingFields,e),isTouched:!!W((t||n).touchedFields,e)}),ae=e=>{let t=e?vt(e):void 0;t?.forEach(e=>Q(n.errors,e)),t?t.forEach(e=>{p.state.next({name:e,errors:n.errors})}):p.state.next({errors:{}})},oe=(e,t,i)=>{let a=(W(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=W(n.errors,e)||{};q(n.errors,e,{...l,...t,ref:a}),p.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},se=(e,t)=>K(e)?p.state.subscribe({next:n=>`values`in n&&e(n.values||j(void 0,t),n)}):j(e,t,!0),ce=e=>p.state.subscribe({next:t=>{if(Qt(e.name,t.name,e.exact)&&Zt(t,e.formState||d,ye,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}}).unsubscribe,le=e=>(o.mount=!0,f={...f,...e.formState},ce({...e,formState:{...u,...e.formState}})),L=(e,o={})=>{for(let c of e?vt(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(Q(r,c),Q(a,c)),!o.keepError&&Q(n.errors,c),!o.keepDirty&&Q(n.dirtyFields,c),!o.keepTouched&&Q(n.touchedFields,c),!o.keepIsValidating&&Q(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Q(i,c);p.state.next({values:H(a)}),p.state.next({...n,...o.keepDirty?{isDirty:A()}:{}}),!o.keepIsValid&&g()},ue=({disabled:e,name:t})=>{if(G(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&g()}},de=(e,n={})=>{let a=W(r,e),c=G(n.disabled)||G(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return q(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?ue({disabled:G(n.disabled)?n.disabled:t.disabled,name:e}):S(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:Ut(n.min),max:Ut(n.max),minLength:Ut(n.minLength),maxLength:Ut(n.maxLength),pattern:Ut(n.pattern)}:{},name:e,onChange:te,onBlur:te,ref:c=>{if(c){s.registerName.add(e),de(e,n),s.registerName.delete(e),a=W(r,e);let t=U(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=Tt(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;q(r,e,{_f:{...a._f,...o?{refs:[...l.filter(Et),t,...Array.isArray(W(i,e))?[{}]:[]],ref:{type:t.type,name:e}}:{ref:t}}}),S(e,!1,void 0,t)}else a=W(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(Je(s.array,e)&&o.action)&&s.unMount.add(e)}}},fe=()=>t.shouldFocusError&&Yt(r,ne,s.mount),pe=e=>{G(e)&&(p.state.next({disabled:e}),Yt(r,(t,n)=>{let i=W(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},me=(e,i)=>async o=>{let c;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let l=H(a);if(p.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await T();_(),n.errors=e,l=H(t)}else await O({fields:r,eventType:et.SUBMIT});if(s.disabled.size)for(let e of s.disabled)Q(l,e);if(Q(n.errors,rt),Z(n.errors)){p.state.next({errors:{}});try{await e(l,o)}catch(e){c=e}}else i&&await i({...n.errors},o),fe(),setTimeout(fe);if(p.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Z(n.errors)&&!c,submitCount:n.submitCount+1,errors:n.errors}),c)throw c},he=(e,t={})=>{W(r,e)&&(U(t.defaultValue)?F(e,H(W(i,e))):(F(e,t.defaultValue),q(i,e,H(t.defaultValue))),t.keepTouched||Q(n.touchedFields,e),t.keepDirty||(Q(n.dirtyFields,e),n.isDirty=t.defaultValue?A(e,H(W(i,e))):A()),t.keepError||(Q(n.errors,e),d.isValid&&g()),p.state.next({...n}))},ge=(e,c={})=>{let l=e?H(e):i,u=H(l),f=Z(e),m=f?i:u;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Object.keys(Mt(i,a))]);for(let t of Array.from(e)){let e=W(n.dirtyFields,t),r=W(a,t),i=W(m,t);e&&!U(r)?q(m,t,r):!e&&!U(i)&&F(t,i)}}else{if(Xe&&U(e))for(let e of s.mount){let t=W(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(St(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)F(e,W(m,e));else r={}}a=t.shouldUnregister?c.keepDefaultValues?H(i):{}:H(m),p.array.next({values:{...m}}),p.state.next({values:{...m}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!d.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!Z(m),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,c.keepErrors||(n.errors={}),p.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:f?!1:c.keepDirty?n.isDirty:!!(c.keepDefaultValues&&!X(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:f?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Mt(i,a):n.dirtyFields:c.keepDefaultValues&&e?Mt(i,e):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},_e=(e,n)=>ge(K(e)?e(a):e,{...t.resetOptions,...n}),ve=(e,t={})=>{let n=W(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&K(e.select)&&e.select()})}},ye=e=>{n={...n,...e}},be={control:{register:de,unregister:L,getFieldState:I,handleSubmit:me,setError:oe,_subscribe:ce,_runSchema:T,_updateIsValidating:_,_focusError:fe,_getWatch:j,_getDirty:A,_setValid:g,_setFieldArray:y,_setDisabledField:ue,_setErrors:x,_getFieldArray:M,_reset:ge,_resetDefaultValues:()=>K(t.defaultValues)&&t.defaultValues().then(e=>{_e(e,t.resetOptions),p.state.next({isLoading:!1})}),_removeUnmounted:k,_disableForm:pe,_subjects:p,_proxyFormState:d,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e}}},subscribe:le,trigger:re,register:de,handleSubmit:me,watch:se,setValue:F,setValues:ee,getValues:ie,reset:_e,resetField:he,clearErrors:ae,unregister:L,setError:oe,setFocus:ve,getFieldState:I};return{...be,formControl:be}}function cn(e={}){let t=z.useRef(void 0),n=z.useRef(void 0),[r,i]=z.useState({isDirty:!1,isValidating:!1,isLoading:K(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:K(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:r},e.defaultValues&&!K(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...i}=sn(e);t.current={...i,formState:r}}let a=t.current.control;return a._options=e,st(()=>{let e=a._subscribe({formState:a._proxyFormState,callback:()=>i({...a._formState}),reRenderRoot:!0});return i(e=>({...e,isReady:!0})),a._formState.isReady=!0,e},[a]),z.useEffect(()=>a._disableForm(e.disabled),[a,e.disabled]),z.useEffect(()=>{e.mode&&(a._options.mode=e.mode),e.reValidateMode&&(a._options.reValidateMode=e.reValidateMode)},[a,e.mode,e.reValidateMode]),z.useEffect(()=>{e.errors&&(a._setErrors(e.errors),a._focusError())},[a,e.errors]),z.useEffect(()=>{e.shouldUnregister&&a._subjects.state.next({values:a._getWatch()})},[a,e.shouldUnregister]),z.useEffect(()=>{if(a._proxyFormState.isDirty){let e=a._getDirty();e!==r.isDirty&&a._subjects.state.next({isDirty:e})}},[a,r.isDirty]),z.useEffect(()=>{e.values&&!X(e.values,n.current)?(a._reset(e.values,{keepFieldsRef:!0,...a._options.resetOptions}),a._options.resetOptions?.keepIsValid||a._setValid(),n.current=e.values,i(e=>({...e}))):a._resetDefaultValues()},[a,e.values]),z.useEffect(()=>{a._state.mount||(a._setValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()}),t.current.formState=z.useMemo(()=>ot(r,a),[a,r]),t.current}var $=r(),ln=gt,un=z.createContext({}),dn=e=>{let t=(0,R.c)(9),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;t[2]===n.name?r=t[3]:(r={name:n.name},t[2]=n.name,t[3]=r);let i;t[4]===n?i=t[5]:(i=(0,$.jsx)(pt,{...n}),t[4]=n,t[5]=i);let a;return t[6]!==r||t[7]!==i?(a=(0,$.jsx)(un.Provider,{value:r,children:i}),t[6]=r,t[7]=i,t[8]=a):a=t[8],a},fn=()=>{let e=(0,R.c)(13),t=z.use(un),n=z.use(pn),{getFieldState:r}=ht(),i;e[0]===t.name?i=e[1]:(i={name:t.name},e[0]=t.name,e[1]=i);let a=ct(i),o;e[2]!==t.name||e[3]!==a||e[4]!==r?(o=r(t.name,a),e[2]=t.name,e[3]=a,e[4]=r,e[5]=o):o=e[5];let s=o;if(!t)throw Error(`useFormField should be used within <FormField>`);let{id:c}=n,l=`${c}-form-item`,u=`${c}-form-item-description`,d=`${c}-form-item-message`,f;return e[6]!==t.name||e[7]!==s||e[8]!==c||e[9]!==l||e[10]!==u||e[11]!==d?(f={id:c,name:t.name,formItemId:l,formDescriptionId:u,formMessageId:d,...s},e[6]=t.name,e[7]=s,e[8]=c,e[9]=l,e[10]=u,e[11]=d,e[12]=f):f=e[12],f},pn=z.createContext({});function mn(e){let t=(0,R.c)(13),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i=z.useId(),a;t[3]===i?a=t[4]:(a={id:i},t[3]=i,t[4]=a);let o;t[5]===n?o=t[6]:(o=w(`grid gap-2`,n),t[5]=n,t[6]=o);let s;t[7]!==r||t[8]!==o?(s=(0,$.jsx)(`div`,{"data-slot":`form-item`,className:o,...r}),t[7]=r,t[8]=o,t[9]=s):s=t[9];let c;return t[10]!==a||t[11]!==s?(c=(0,$.jsx)(pn.Provider,{value:a,children:s}),t[10]=a,t[11]=s,t[12]=c):c=t[12],c}function hn(e){let t=(0,R.c)(10),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{error:i,formItemId:a}=fn(),o=!!i,s;t[3]===n?s=t[4]:(s=w(`data-[error=true]:text-destructive`,n),t[3]=n,t[4]=s);let c;return t[5]!==a||t[6]!==r||t[7]!==o||t[8]!==s?(c=(0,$.jsx)(Re,{"data-slot":`form-label`,"data-error":o,className:s,htmlFor:a,...r}),t[5]=a,t[6]=r,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function gn(e){let t=(0,R.c)(7),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let{error:r,formItemId:i,formDescriptionId:a,formMessageId:o}=fn(),s=r?`${a} ${o}`:`${a}`,c=!!r,l;return t[2]!==i||t[3]!==n||t[4]!==s||t[5]!==c?(l=(0,$.jsx)(C,{"data-slot":`form-control`,id:i,"aria-describedby":s,"aria-invalid":c,...n}),t[2]=i,t[3]=n,t[4]=s,t[5]=c,t[6]=l):l=t[6],l}function _n(e){let t=(0,R.c)(9),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{formDescriptionId:i}=fn(),a;t[3]===n?a=t[4]:(a=w(`text-sm text-muted-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==r||t[7]!==a?(o=(0,$.jsx)(`p`,{"data-slot":`form-description`,id:i,className:a,...r}),t[5]=i,t[6]=r,t[7]=a,t[8]=o):o=t[8],o}function vn(e){let t=(0,R.c)(11),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{error:i,formMessageId:a}=fn(),o=i?String(i?.message??``):r.children;if(!o)return null;let s=i?`alert`:void 0,c;t[3]===n?c=t[4]:(c=w(`text-sm text-destructive`,n),t[3]=n,t[4]=c);let l;return t[5]!==o||t[6]!==a||t[7]!==r||t[8]!==s||t[9]!==c?(l=(0,$.jsx)(`p`,{"data-slot":`form-message`,id:a,role:s,className:c,...r,children:o}),t[5]=o,t[6]=a,t[7]=r,t[8]=s,t[9]=c,t[10]=l):l=t[10],l}var yn=e(t(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}var r=``,i=` `,a=`\\`,o=/^\s+$/,s=/(?:[^\\]|^)\\$/,c=/^\\!/,l=/^\\#/,u=/\r?\n/g,d=/^\.*\/|^\.+$/,f=`/`,p=`node-ignore`;typeof Symbol<`u`&&(p=Symbol.for(`node-ignore`));var m=p,h=(e,t,n)=>Object.defineProperty(e,t,{value:n}),g=/([0-z])-([0-z])/g,_=()=>!1,v=e=>e.replace(g,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:r),y=e=>{let{length:t}=e;return e.slice(0,t-t%2)},b=[[/^\uFEFF/,()=>r],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?i:r)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+i}],[/[\\$.|*+(){^]/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,()=>a],[/\\\\/g,()=>a],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===a?`\\[${n}${y(r)}${i}`:i===`]`&&r.length%2==0?`[${v(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(e,t)=>`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`]],x=Object.create(null),S=(e,t)=>{let n=x[e];return n||(n=b.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),x[e]=n),t?new RegExp(n,`i`):new RegExp(n)},C=e=>typeof e==`string`,w=e=>e&&C(e)&&!o.test(e)&&!s.test(e)&&e.indexOf(`#`)!==0,T=e=>e.split(u),E=class{constructor(e,t,n,r){this.origin=e,this.pattern=t,this.negative=n,this.regex=r}},D=(e,t)=>{let n=e,r=!1;e.indexOf(`!`)===0&&(r=!0,e=e.substr(1)),e=e.replace(c,`!`).replace(l,`#`);let i=S(e,t);return new E(n,e,r,i)},O=(e,t)=>{throw new t(e)},k=(e,t,n)=>C(e)?e?k.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),A=e=>d.test(e);k.isNotRelative=A,k.convert=e=>e;var j=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){h(this,m,!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[m]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(w(e)){let t=D(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?T(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&&k.convert(e);return k(i,e,this._allowRelativePaths?_:O),this._t(i,t,n,r)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(f),r.pop(),!r.length)return t[e]=this._testOne(e,n);let i=this._t(r.join(f)+f,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)}},M=e=>new j(e);if(M.isPathValid=e=>k(e&&k.convert(e),e,_),M.default=M,t.exports=M,typeof process<`u`&&({}.IGNORE_TEST_WIN32||process.platform===`win32`)){k.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;k.isNotRelative=t=>e.test(t)||A(t)}}))(),1),bn=new Map;function xn(e){let t=bn.get(e);if(t)return bn.delete(e),bn.set(e,t),t;let n=(0,yn.default)();if(n.add(e),bn.set(e,n),bn.size>256){let e=bn.keys().next().value;e!==void 0&&bn.delete(e)}return n}function Sn(e,t){let n=e.trim();if(n.length===0||n.startsWith(`#`))return 0;let r=xn(n),i=0;for(let e of t)e.length!==0&&r.ignores(e)&&(i+=1);return i}var Cn={"trailing-backslash":`Trailing backslash — line continuation isn't supported.`,"unmatched-bracket":`Unmatched [ — character class is open.`,"lone-bang":`Lone ! — negation needs a pattern after it.`,"leading-whitespace":`Leading whitespace — the rule may not match as expected.`,"embedded-newline":`Embedded line break — the row spans multiple lines.`};function wn(e){let t=[];if(e.length===0||e.trimStart().startsWith(`#`))return t;/[\r\n]/.test(e)&&t.push({code:`embedded-newline`,message:Cn[`embedded-newline`]}),/^\s/.test(e)&&t.push({code:`leading-whitespace`,message:Cn[`leading-whitespace`]});let n=e.trim();return n===`!`&&t.push({code:`lone-bang`,message:Cn[`lone-bang`]}),/\\$/.test(n)&&t.push({code:`trailing-backslash`,message:Cn[`trailing-backslash`]}),Tn(n,`[`)>Tn(n,`]`)&&t.push({code:`unmatched-bracket`,message:Cn[`unmatched-bracket`]}),t}function Tn(e,t){let n=0;for(let r=0;r<e.length;r++)e[r]===t&&n++;return n}var En=`https://inkeep.github.io/open-knowledge/features/ignore-patterns`,Dn=1200,On=150,kn=150,An=5e3,jn=600,Mn=400,Nn=`okignore-show-advanced`;function Pn(e){let t=(0,R.c)(3),{binding:n,synced:r}=e;if(n===null||!r){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Fn,{}),t[0]=e):e=t[0],e}let i;return t[1]===n?i=t[2]:(i=(0,$.jsx)(In,{binding:n}),t[1]=n,t[2]=i),i}function Fn(){let e=(0,R.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`section`,{"aria-labelledby":`settings-okignore-title`,className:`space-y-3`,"data-testid":`settings-okignore-skeleton`,children:[(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{id:`settings-okignore-title`,className:`text-base font-semibold`,children:`Ignore patterns`}),(0,$.jsx)(L,{className:`h-4 w-72`})]}),(0,$.jsx)(L,{className:`h-20 w-full`})]}),e[0]=t):t=e[0],t}function In(e){let t=(0,R.c)(70),{binding:n}=e,r;t[0]===n?r=t[1]:(r=()=>n.current(),t[0]=n,t[1]=r);let[i,a]=(0,z.useState)(r),o,s;t[2]===n?(o=t[3],s=t[4]):(o=()=>n.subscribe(e=>{a(e)}),s=[n],t[2]=n,t[3]=o,t[4]=s),(0,z.useEffect)(o,s);let{pages:c,pageMeta:l,assetPaths:u}=b(),d;t[5]!==u||t[6]!==l||t[7]!==c?(d=ar(c,l,u),t[5]=u,t[6]=l,t[7]=c,t[8]=d):d=t[8];let f=d,p,m;t[9]===i?(p=t[10],m=t[11]):(p=be(i),m=de(p),t[9]=i,t[10]=p,t[11]=m);let h=m,_=h.length===0,[v,y]=(0,z.useState)(null),x=(0,z.useRef)(null),S,C;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(S=()=>()=>{x.current&&clearTimeout(x.current)},C=[],t[12]=S,t[13]=C):(S=t[12],C=t[13]),(0,z.useEffect)(S,C);let w;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>{y({key:e,ts:Date.now()}),x.current&&clearTimeout(x.current),x.current=setTimeout(()=>y(null),Dn)},t[14]=w):w=t[14];let T=w,[k,A]=(0,z.useState)(null),j=(0,z.useRef)(null),M,N;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(N=()=>()=>{j.current&&clearTimeout(j.current)},M=[],t[15]=M,t[16]=N):(M=t[15],N=t[16]),(0,z.useEffect)(N,M);let P,F;t[17]===n?(P=t[18],F=t[19]):(P=()=>Se(e=>{e.docName===`__config__/okignore`&&n.notifyRejection(e.error)}),F=[n],t[17]=n,t[18]=P,t[19]=F),(0,z.useEffect)(P,F);let te,ne;t[20]===n?(te=t[21],ne=t[22]):(te=()=>n.subscribeRejection(e=>{let{error:t}=e,n=tr(t);A({message:n?.detail??g(t),lineNumber:n?.lineNumber,ts:Date.now()}),j.current&&clearTimeout(j.current),j.current=setTimeout(()=>A(null),An)}),ne=[n],t[20]=n,t[21]=te,t[22]=ne),(0,z.useEffect)(te,ne);let re;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(re=[],t[23]=re):re=t[23],(0,z.useEffect)(Ln,re);let ie;t[24]===n?ie=t[25]:(ie=e=>{n.patch(e)},t[24]=n,t[25]=ie);let I=ie,ae;t[26]!==I||t[27]!==p||t[28]!==h?(ae=(e,t)=>{let n=t.trim(),r=h[e];if(r&&n!==r.text){if(n.length===0){I(pe(Ee(p,e)));return}I(pe(Ce(p,e,n))),T(er(n,e))}},t[26]=I,t[27]=p,t[28]=h,t[29]=ae):ae=t[29];let oe=ae,se;t[30]!==I||t[31]!==p?(se=e=>{I(pe(Ee(p,e)))},t[30]=I,t[31]=p,t[32]=se):se=t[32];let ce=se,L;t[33]!==I||t[34]!==p||t[35]!==h.length?(L=e=>{let t=e.trim();if(t.length===0)return;let n=Te(p,t);if(n>=0){T(er(t,n));return}I(pe(le(p,t))),T(er(t,h.length))},t[33]=I,t[34]=p,t[35]=h.length,t[36]=L):L=t[36];let ue=L,me;t[37]!==I||t[38]!==p?(me=e=>{let t=String(e.active.id),n=e.over?String(e.over.id):null;if(!n||t===n)return;let r=$n(t),i=$n(n);r<0||i<0||r===i||I(pe(fe(p,r,i)))},t[37]=I,t[38]=p,t[39]=me):me=t[39];let he=me,ge;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(ge={activationConstraint:{distance:4}},t[40]=ge):ge=t[40];let _e;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(_e={coordinateGetter:D},t[41]=_e):_e=t[41];let ye=ve(E(ee,ge),E(O,_e)),xe=k===null?null:`rejection-${k.ts}`,[we,De]=cr(),Oe;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,$.jsx)(`h2`,{id:`settings-okignore-title`,className:`text-base font-semibold`,children:`Ignore patterns`}),t[42]=Oe):Oe=t[42];let ke;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(ke=(0,$.jsxs)(`div`,{className:`space-y-1`,children:[Oe,(0,$.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`Hide files and folders from your knowledge base. Hidden items don’t appear in the file tree, search, or AI tools.`,` `,(0,$.jsx)(`a`,{href:En,target:`_blank`,rel:`noreferrer noopener`,className:`text-primary underline-offset-2 hover:underline`,"data-testid":`settings-okignore-primer`,children:`Learn more about patterns`}),`.`]})]}),t[43]=ke):ke=t[43];let Ae;t[44]===k?Ae=t[45]:(Ae=k===null?null:(0,$.jsx)(Vn,{rejection:k}),t[44]=k,t[45]=Ae);let je;t[46]!==n||t[47]!==f||t[48]!==ue||t[49]!==he||t[50]!==oe||t[51]!==ce||t[52]!==_||t[53]!==h||t[54]!==xe||t[55]!==v||t[56]!==ye||t[57]!==we||t[58]!==i?(je=we?(0,$.jsx)(zn,{binding:n,text:i}):_?(0,$.jsx)(Hn,{onAdd:ue,rejectionFlashKey:xe,filePaths:f}):(0,$.jsx)(Un,{patterns:h,sensors:ye,onDragEnd:he,onEdit:oe,onRemove:ce,onAdd:ue,savedFlash:v,rejectionFlashKey:xe,filePaths:f}),t[46]=n,t[47]=f,t[48]=ue,t[49]=he,t[50]=oe,t[51]=ce,t[52]=_,t[53]=h,t[54]=xe,t[55]=v,t[56]=ye,t[57]=we,t[58]=i,t[59]=je):je=t[59];let Me;t[60]!==De||t[61]!==we?(Me=()=>De(!we),t[60]=De,t[61]=we,t[62]=Me):Me=t[62];let Ne;t[63]!==we||t[64]!==Me?(Ne=(0,$.jsx)(`div`,{className:`flex justify-end`,children:(0,$.jsx)(Bn,{enabled:we,onToggle:Me})}),t[63]=we,t[64]=Me,t[65]=Ne):Ne=t[65];let Pe;return t[66]!==Ae||t[67]!==je||t[68]!==Ne?(Pe=(0,$.jsxs)(`section`,{"aria-labelledby":`settings-okignore-title`,className:`space-y-3`,"data-testid":`settings-okignore-section`,children:[ke,Ae,je,Ne]}),t[66]=Ae,t[67]=je,t[68]=Ne,t[69]=Pe):Pe=t[69],Pe}function Ln(){return ge(Rn)}function Rn(e){Fe.error(`Nested .okignore error in ${e.path}`,{description:e.error,id:`okignore-nested-error:${e.path}`,duration:8e3})}function zn(e){let t=(0,R.c)(25),{binding:n,text:r}=e,[i,a]=(0,z.useState)(r),o=(0,z.useRef)(r),s=(0,z.useRef)(!1),c=(0,z.useRef)(r),l=(0,z.useRef)(null),u,d;t[0]===r?(u=t[1],d=t[2]):(u=()=>{s.current||r!==o.current&&(a(r),c.current=r,o.current=r)},d=[r],t[0]=r,t[1]=u,t[2]=d),(0,z.useEffect)(u,d);let f,p;t[3]===i?(f=t[4],p=t[5]):(f=()=>{c.current=i},p=[i],t[3]=i,t[4]=f,t[5]=p),(0,z.useEffect)(f,p);let m,h;t[6]===n?(m=t[7],h=t[8]):(m=()=>()=>{l.current&&(clearTimeout(l.current),l.current=null,c.current!==o.current&&(n.patch(c.current),o.current=c.current))},h=[n],t[6]=n,t[7]=m,t[8]=h),(0,z.useEffect)(m,h);let g;t[9]===n?g=t[10]:(g=e=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,e!==o.current&&(o.current=e,n.patch(e))},Mn)},t[9]=n,t[10]=g);let _=g,v;t[11]===n?v=t[12]:(v=()=>{l.current&&=(clearTimeout(l.current),null),c.current!==o.current&&(o.current=c.current,n.patch(c.current))},t[11]=n,t[12]=v);let y=v,b;t[13]===_?b=t[14]:(b=e=>{a(e.target.value),_(e.target.value)},t[13]=_,t[14]=b);let x;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>{s.current=!0},t[15]=x):x=t[15];let S;t[16]===y?S=t[17]:(S=()=>{s.current=!1,y()},t[16]=y,t[17]=S);let C;t[18]===i?C=t[19]:(C=i.split(`
2
+ `),t[18]=i,t[19]=C);let w=Math.max(6,Math.min(20,C.length+1)),T;return t[20]!==i||t[21]!==S||t[22]!==w||t[23]!==b?(T=(0,$.jsx)(`textarea`,{value:i,onChange:b,onFocus:x,onBlur:S,spellCheck:!1,rows:w,"aria-label":`Ignore patterns (raw text)`,placeholder:`# One pattern per line.
3
+ # Examples:
4
+ # drafts/
5
+ # *.draft.md
6
+ # !keep.md`,className:`min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50`,"data-testid":`settings-okignore-advanced-textarea`}),t[20]=i,t[21]=S,t[22]=w,t[23]=b,t[24]=T):T=t[24],T}function Bn(e){let t=(0,R.c)(4),{enabled:n,onToggle:r}=e,i=n?`Hide advanced`:`Show advanced`,a;return t[0]!==n||t[1]!==r||t[2]!==i?(a=(0,$.jsx)(T,{type:`button`,variant:`ghost`,size:`sm`,onClick:r,"aria-pressed":n,className:`h-7 px-2 text-xs text-muted-foreground hover:text-foreground`,"data-testid":`settings-okignore-show-advanced-toggle`,children:i}),t[0]=n,t[1]=r,t[2]=i,t[3]=a):a=t[3],a}function Vn(e){let t=(0,R.c)(4),{rejection:n}=e,r=n.lineNumber?` (line ${n.lineNumber})`:``,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(_,{"aria-hidden":`true`,className:`mt-0.5 size-4 shrink-0`}),t[0]=i):i=t[0];let a;return t[1]!==r||t[2]!==n.message?(a=(0,$.jsxs)(`div`,{role:`status`,"aria-live":`polite`,"data-testid":`settings-okignore-rejection-banner`,className:`flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-sm text-destructive animate-in fade-in`,children:[i,(0,$.jsxs)(`span`,{children:[`Pattern syntax error`,r,`: `,n.message]})]}),t[1]=r,t[2]=n.message,t[3]=a):a=t[3],a}function Hn(e){let t=(0,R.c)(5),{onAdd:n,rejectionFlashKey:r,filePaths:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No patterns yet. Type a folder or file name below to start hiding files.`}),t[0]=a):a=t[0];let o;return t[1]!==i||t[2]!==n||t[3]!==r?(o=(0,$.jsxs)(`div`,{className:`space-y-3 rounded-md border border-dashed p-4`,"data-testid":`settings-okignore-empty`,children:[a,(0,$.jsx)(qn,{onAdd:n,placeholder:`e.g. drafts/ or *.draft.md`,rejectionFlashKey:r,filePaths:i})]}),t[1]=i,t[2]=n,t[3]=r,t[4]=o):o=t[4],o}function Un(e){let t=(0,R.c)(29),{patterns:n,sensors:r,onDragEnd:i,onEdit:a,onRemove:o,onAdd:s,savedFlash:c,rejectionFlashKey:l,filePaths:u}=e,d;t[0]===n?d=t[1]:(d=n.map(Wn),t[0]=n,t[1]=d);let f=d,p;if(t[2]!==u||t[3]!==a||t[4]!==o||t[5]!==n||t[6]!==c){let e;t[8]!==u||t[9]!==a||t[10]!==o||t[11]!==c?(e=(e,t)=>{let n=er(e.text,t),r=c!==null&&c.key===n;return(0,$.jsx)(Gn,{sortableId:Qn(t),patternIndex:t,pattern:e,onEdit:a,onRemove:o,flashActive:r,filePaths:u},Qn(t))},t[8]=u,t[9]=a,t[10]=o,t[11]=c,t[12]=e):e=t[12],p=n.map(e),t[2]=u,t[3]=a,t[4]=o,t[5]=n,t[6]=c,t[7]=p}else p=t[7];let m;t[13]===p?m=t[14]:(m=(0,$.jsx)(`ul`,{"aria-label":`Ignore patterns`,className:`divide-y rounded-md border`,"data-testid":`settings-okignore-list`,children:p}),t[13]=p,t[14]=m);let h;t[15]!==f||t[16]!==m?(h=(0,$.jsx)(ne,{items:f,strategy:re,children:m}),t[15]=f,t[16]=m,t[17]=h):h=t[17];let g;t[18]!==i||t[19]!==r||t[20]!==h?(g=(0,$.jsx)(A,{sensors:r,collisionDetection:ye,onDragEnd:i,children:h}),t[18]=i,t[19]=r,t[20]=h,t[21]=g):g=t[21];let _;t[22]!==u||t[23]!==s||t[24]!==l?(_=(0,$.jsx)(qn,{onAdd:s,placeholder:`Add another pattern`,rejectionFlashKey:l,filePaths:u}),t[22]=u,t[23]=s,t[24]=l,t[25]=_):_=t[25];let v;return t[26]!==g||t[27]!==_?(v=(0,$.jsxs)(`div`,{className:`space-y-2`,children:[g,_]}),t[26]=g,t[27]=_,t[28]=v):v=t[28],v}function Wn(e,t){return Qn(t)}function Gn(e){let t=(0,R.c)(41),{sortableId:n,patternIndex:r,pattern:i,onEdit:a,onRemove:o,flashActive:s,filePaths:c}=e,l;t[0]===n?l=t[1]:(l={id:n},t[0]=n,t[1]=l);let{attributes:u,listeners:d,setNodeRef:f,transform:p,transition:m,isDragging:h}=Oe(l),g;t[2]===p?g=t[3]:(g=P.Transform.toString(p),t[2]=p,t[3]=g);let _=h?.5:void 0,v=h?1:void 0,y;t[4]!==g||t[5]!==_||t[6]!==v||t[7]!==m?(y={transform:g,transition:m,opacity:_,zIndex:v},t[4]=g,t[5]=_,t[6]=v,t[7]=m,t[8]=y):y=t[8];let b=y,x=`Drag ${i.text} to reorder`,S;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(j,{className:`size-3.5`}),t[9]=S):S=t[9];let C;t[10]!==u||t[11]!==d||t[12]!==x?(C=(0,$.jsx)(T,{type:`button`,variant:`ghost`,size:`icon-sm`,"data-testid":`settings-okignore-drag-handle`,"aria-label":x,...u,...d,className:`h-7 w-4 shrink-0 cursor-grab touch-none px-0 text-muted-foreground/40 hover:text-foreground focus-visible:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring active:cursor-grabbing`,children:S}),t[10]=u,t[11]=d,t[12]=x,t[13]=C):C=t[13];let w;t[14]!==a||t[15]!==r?(w=e=>a(r,e),t[14]=a,t[15]=r,t[16]=w):w=t[16];let E;t[17]!==c||t[18]!==i.text||t[19]!==r||t[20]!==w?(E=(0,$.jsx)(Kn,{patternIndex:r,initialText:i.text,onCommit:w,filePaths:c}),t[17]=c,t[18]=i.text,t[19]=r,t[20]=w,t[21]=E):E=t[21];let D;t[22]===s?D=t[23]:(D=(0,$.jsx)(Zn,{visible:s}),t[22]=s,t[23]=D);let O=`Remove ${i.text}`,k;t[24]!==o||t[25]!==r?(k=()=>o(r),t[24]=o,t[25]=r,t[26]=k):k=t[26];let A;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,$.jsx)(Ae,{className:`size-3.5`}),t[27]=A):A=t[27];let M;t[28]!==O||t[29]!==k?(M=(0,$.jsx)(T,{type:`button`,variant:`ghost`,size:`icon-sm`,"data-testid":`settings-okignore-remove`,"aria-label":O,onClick:k,className:`h-7 w-7 shrink-0 text-muted-foreground hover:text-destructive`,children:A}),t[28]=O,t[29]=k,t[30]=M):M=t[30];let N;t[31]!==E||t[32]!==D||t[33]!==M||t[34]!==C?(N=(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[C,E,D,M]}),t[31]=E,t[32]=D,t[33]=M,t[34]=C,t[35]=N):N=t[35];let F;return t[36]!==r||t[37]!==f||t[38]!==b||t[39]!==N?(F=(0,$.jsx)(`li`,{ref:f,style:b,className:`flex flex-col gap-0.5 px-2 py-1.5`,"data-testid":`settings-okignore-row`,"data-pattern-index":r,children:N}),t[36]=r,t[37]=f,t[38]=b,t[39]=N,t[40]=F):F=t[40],F}function Kn(e){let t=(0,R.c)(28),{patternIndex:n,initialText:r,onCommit:i,filePaths:a}=e,[o,s]=(0,z.useState)(r),c=(0,z.useRef)(r),l=(0,z.useRef)(!1),u,d;t[0]===r?(u=t[1],d=t[2]):(u=()=>{l.current||r!==c.current&&(s(r),c.current=r)},d=[r],t[0]=r,t[1]=u,t[2]=d),(0,z.useEffect)(u,d);let f=nr(o),p=rr(o,a),m;t[3]!==o||t[4]!==i?(m=()=>{o!==c.current&&(c.current=o,i(o))},t[3]=o,t[4]=i,t[5]=m):m=t[5];let h=m,g,_;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>s(e.target.value),_=()=>{l.current=!0},t[6]=g,t[7]=_):(g=t[6],_=t[7]);let v;t[8]===h?v=t[9]:(v=()=>{l.current=!1,h()},t[8]=h,t[9]=v);let y;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(y=e=>{e.key===`Enter`?(e.preventDefault(),e.currentTarget.blur()):e.key===`Escape`&&(e.preventDefault(),s(c.current),e.currentTarget.blur())},t[10]=y):y=t[10];let b=`Pattern ${n+1}`,x=f.length>0?`border-amber-500/60 focus-visible:ring-amber-500/40`:``,S;t[11]===x?S=t[12]:(S=w(`h-7 flex-1 font-mono text-xs`,x),t[11]=x,t[12]=S);let C;t[13]!==o||t[14]!==S||t[15]!==v||t[16]!==b?(C=(0,$.jsx)(He,{value:o,onChange:g,onFocus:_,onBlur:v,onKeyDown:y,"aria-label":b,className:S,"data-testid":`settings-okignore-row-input`}),t[13]=o,t[14]=S,t[15]=v,t[16]=b,t[17]=C):C=t[17];let T;t[18]===f?T=t[19]:(T=(0,$.jsx)(Jn,{warnings:f}),t[18]=f,t[19]=T);let E;t[20]!==C||t[21]!==T?(E=(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1`,children:[C,T]}),t[20]=C,t[21]=T,t[22]=E):E=t[22];let D;t[23]===p?D=t[24]:(D=(0,$.jsx)(ir,{count:p}),t[23]=p,t[24]=D);let O;return t[25]!==E||t[26]!==D?(O=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[E,D]}),t[25]=E,t[26]=D,t[27]=O):O=t[27],O}function qn(e){let t=(0,R.c)(30),{onAdd:n,placeholder:r,rejectionFlashKey:i,filePaths:a}=e,[o,s]=(0,z.useState)(``),c=nr(o),l=rr(o,a),u=ur(i),d;t[0]!==n||t[1]!==o?(d=()=>{let e=o.trim();e.length!==0&&(n(e),s(``))},t[0]=n,t[1]=o,t[2]=d):d=t[2];let f=d,p;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(p=e=>s(e.target.value),t[3]=p):p=t[3];let m;t[4]===f?m=t[5]:(m=e=>{e.key===`Enter`&&(e.preventDefault(),f())},t[4]=f,t[5]=m);let h=u?`border-destructive ring-2 ring-destructive/30 focus-visible:ring-destructive/50`:c.length>0?`border-amber-500/60 focus-visible:ring-amber-500/40`:``,g;t[6]===h?g=t[7]:(g=w(`h-8 text-sm`,h),t[6]=h,t[7]=g);let _=u?`true`:void 0,v;t[8]!==o||t[9]!==r||t[10]!==m||t[11]!==g||t[12]!==_?(v=(0,$.jsx)(He,{value:o,onChange:p,onKeyDown:m,placeholder:r,"aria-label":`New ignore pattern`,className:g,"data-testid":`settings-okignore-add-input`,"data-rejection-flashing":_}),t[8]=o,t[9]=r,t[10]=m,t[11]=g,t[12]=_,t[13]=v):v=t[13];let y;t[14]===c?y=t[15]:(y=(0,$.jsx)(Jn,{warnings:c}),t[14]=c,t[15]=y);let b;t[16]===o?b=t[17]:(b=o.trim(),t[16]=o,t[17]=b);let x=b.length===0,S;t[18]!==f||t[19]!==x?(S=(0,$.jsx)(T,{size:`sm`,onClick:f,disabled:x,"data-testid":`settings-okignore-add-button`,children:`Add pattern`}),t[18]=f,t[19]=x,t[20]=S):S=t[20];let C;t[21]!==S||t[22]!==v||t[23]!==y?(C=(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[v,y,S]}),t[21]=S,t[22]=v,t[23]=y,t[24]=C):C=t[24];let E;t[25]===l?E=t[26]:(E=(0,$.jsx)(ir,{count:l}),t[25]=l,t[26]=E);let D;return t[27]!==C||t[28]!==E?(D=(0,$.jsxs)(`div`,{className:`flex flex-col gap-0.5`,"data-testid":`settings-okignore-add`,children:[C,E]}),t[27]=C,t[28]=E,t[29]=D):D=t[29],D}function Jn(e){let t=(0,R.c)(17),{warnings:n}=e;if(n.length===0){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`flex w-4 shrink-0 justify-center`,"data-testid":`settings-okignore-warning-indicator`,"data-warnings":`0`}),t[0]=e):e=t[0],e}let r;t[1]===n?r=t[2]:(r=n.map(Xn).join(` `),t[1]=n,t[2]=r);let i=r,a=`Pattern warnings: ${i}`,o=String(n.length),s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(_,{"aria-hidden":`true`,className:`size-3.5`}),t[3]=s):s=t[3];let c;t[4]===i?c=t[5]:(c=(0,$.jsx)(`span`,{className:`sr-only`,children:i}),t[4]=i,t[5]=c);let l;t[6]!==a||t[7]!==o||t[8]!==c?(l=(0,$.jsx)(ze,{asChild:!0,children:(0,$.jsxs)(`span`,{role:`status`,"aria-live":`polite`,"aria-label":a,className:`flex w-4 shrink-0 cursor-help justify-center text-amber-500`,"data-testid":`settings-okignore-warning-indicator`,"data-warnings":o,children:[s,c]})}),t[6]=a,t[7]=o,t[8]=c,t[9]=l):l=t[9];let u;t[10]===n?u=t[11]:(u=n.map(Yn),t[10]=n,t[11]=u);let d;t[12]===u?d=t[13]:(d=(0,$.jsx)(Be,{side:`top`,className:`max-w-xs`,children:(0,$.jsx)(`ul`,{className:`list-disc space-y-1 pl-4`,children:u})}),t[12]=u,t[13]=d);let f;return t[14]!==l||t[15]!==d?(f=(0,$.jsxs)(Ve,{children:[l,d]}),t[14]=l,t[15]=d,t[16]=f):f=t[16],f}function Yn(e){return(0,$.jsx)(`li`,{children:e.message},e.code)}function Xn(e){return e.message}function Zn(e){let t=(0,R.c)(4),{visible:n}=e,r;t[0]===n?r=t[1]:(r=n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ke,{"aria-hidden":`true`,className:`size-3.5`}),(0,$.jsx)(`span`,{className:`sr-only`,children:`Saved`})]}):null,t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,$.jsx)(`span`,{role:`status`,"aria-live":`polite`,className:`flex w-4 shrink-0 justify-center text-emerald-600`,"data-testid":`settings-okignore-saved-indicator`,children:r}),t[2]=r,t[3]=i),i}function Qn(e){return`okignore-pattern-${e}`}function $n(e){let t=e.match(/^okignore-pattern-(\d+)$/);if(!t)return-1;let n=Number.parseInt(t[1]??``,10);return Number.isNaN(n)?-1:n}function er(e,t){return`${t}::${e}`}function tr(e){return!m(e)||e.code!==`OKIGNORE_INVALID`?null:{detail:e.detail,lineNumber:e.lineNumber}}function nr(e){let t=(0,R.c)(5),n;t[0]===e?n=t[1]:(n=()=>e.length===0?[]:wn(e),t[0]=e,t[1]=n);let[r,i]=(0,z.useState)(n),a,o;return t[2]===e?(a=t[3],o=t[4]):(a=()=>{if(e.length===0){i([]);return}let t=setTimeout(()=>{i(wn(e))},On);return()=>clearTimeout(t)},o=[e],t[2]=e,t[3]=a,t[4]=o),(0,z.useEffect)(a,o),r}function rr(e,t){let n=(0,R.c)(9),r;n[0]===e?r=n[1]:(r=e.trim(),n[0]=e,n[1]=r);let i=r,a;n[2]!==t||n[3]!==i?(a=()=>i.length===0?null:Sn(i,t),n[2]=t,n[3]=i,n[4]=a):a=n[4];let[o,s]=(0,z.useState)(a),c,l;return n[5]!==t||n[6]!==i?(c=()=>{if(i.length===0){s(null);return}let e=setTimeout(()=>{s(Sn(i,t))},kn);return()=>clearTimeout(e)},l=[i,t],n[5]=t,n[6]=i,n[7]=c,n[8]=l):(c=n[7],l=n[8]),(0,z.useEffect)(c,l),o}function ir(e){let t=(0,R.c)(11),{count:n}=e;if(n===null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`block h-3.5`,"data-testid":`settings-okignore-preview`,"data-preview-state":`hidden`}),t[0]=e):e=t[0],e}let r=n===0,i=String(n),a=r?`text-muted-foreground/70`:`text-muted-foreground`,o;t[1]===a?o=t[2]:(o=w(`block text-xs`,a),t[1]=a,t[2]=o);let s=n===1?`file`:`files`,c;t[3]===r?c=t[4]:(c=r?(0,$.jsx)(`span`,{className:`ml-1 text-muted-foreground/60`,children:`(some may already be hidden by other rules)`}):null,t[3]=r,t[4]=c);let l;return t[5]!==n||t[6]!==i||t[7]!==o||t[8]!==s||t[9]!==c?(l=(0,$.jsxs)(`span`,{role:`status`,"aria-live":`polite`,"data-testid":`settings-okignore-preview`,"data-preview-state":`visible`,"data-preview-count":i,className:o,children:[`matches `,n,` `,s,c]}),t[5]=n,t[6]=i,t[7]=o,t[8]=s,t[9]=c,t[10]=l):l=t[10],l}function ar(e,t,n){let r=[];for(let n of e){let e=t.get(n)?.docExt??`.md`;r.push(n+e)}for(let e of n)r.push(e);return r}function or(){try{return globalThis.localStorage?.getItem(Nn)===`true`}catch{return!1}}function sr(e){try{globalThis.localStorage?.setItem(Nn,e?`true`:`false`)}catch(e){console.debug(`[OkignoreSection] localStorage unavailable; advanced toggle will not persist:`,e)}}function cr(){let e=(0,R.c)(3),[t,n]=(0,z.useState)(lr),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=e=>{n(e),sr(e)},e[0]=r):r=e[0];let i=r,a;return e[1]===t?a=e[2]:(a=[t,i],e[1]=t,e[2]=a),a}function lr(){return or()}function ur(e){let t=(0,R.c)(3),[n,r]=(0,z.useState)(!1),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(e===null)return;r(!0);let t=setTimeout(()=>r(!1),jn);return()=>clearTimeout(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,z.useEffect)(i,a),n}function dr(e){let t=(0,R.c)(98),{config:n}=e,{state:r,refresh:i}=_e(``),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(!1),p,m,h,g,_,v,y,b,x,S;if(t[0]!==n.badge||t[1]!==n.description||t[2]!==n.emptyMessage||t[3]!==n.itemNoun||t[4]!==n.scope||t[5]!==n.settingsId||t[6]!==n.target||t[7]!==n.testIdPrefix||t[8]!==n.title||t[9]!==d||t[10]!==i||t[11]!==r.data||t[12]!==r.message||t[13]!==r.status){S=Symbol.for(`react.early_return_sentinel`);bb0:{let e=r.status===`ready`?(r.data.folder.templates_available??[]).filter(e=>e.scope===n.scope).sort(pr):[],a;if(t[24]!==n.target||t[25]!==i?(a=async function(e){u(!0);let t=await ue(``,e.name,n.target);if(u(!1),!t.ok){Fe.error(`Delete failed: ${t.error}`);return}Fe.success(`Template "${e.name}" deleted`),c(null),i()},t[24]=n.target,t[25]=i,t[26]=a):a=t[26],m=a,r.status===`error`){let e=`settings-${n.testIdPrefix}-section`,a;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>f(!0),t[27]=a):a=t[27];let o;t[28]!==n.description||t[29]!==n.settingsId||t[30]!==n.testIdPrefix||t[31]!==n.title?(o=(0,$.jsx)(mr,{settingsId:n.settingsId,testIdPrefix:n.testIdPrefix,title:n.title,description:n.description,onNewClick:a}),t[28]=n.description,t[29]=n.settingsId,t[30]=n.testIdPrefix,t[31]=n.title,t[32]=o):o=t[32];let s;t[33]!==n.itemNoun||t[34]!==r.message?(s=(0,$.jsxs)(`div`,{className:`rounded-lg border border-destructive/30 bg-destructive/5 p-4 text-sm text-destructive`,role:`alert`,children:[`Failed to load `,n.itemNoun,`s: `,r.message]}),t[33]=n.itemNoun,t[34]=r.message,t[35]=s):s=t[35];let c;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(c=new Set,t[36]=c):c=t[36];let l;t[37]!==n.target||t[38]!==d||t[39]!==i?(l=(0,$.jsx)(ce,{folderPath:``,existingNames:c,open:d,onOpenChange:f,onCreated:i,target:n.target}),t[37]=n.target,t[38]=d,t[39]=i,t[40]=l):l=t[40];let u;t[41]!==n.settingsId||t[42]!==e||t[43]!==o||t[44]!==s||t[45]!==l?(u=(0,$.jsxs)(`section`,{className:`space-y-3`,"aria-labelledby":n.settingsId,"data-testid":e,children:[o,s,l]}),t[41]=n.settingsId,t[42]=e,t[43]=o,t[44]=s,t[45]=l,t[46]=u):u=t[46],S=u;break bb0}if(r.status===`idle`||r.status===`loading`){let e=`settings-${n.testIdPrefix}-section`,r;t[47]!==n.description||t[48]!==n.settingsId||t[49]!==n.testIdPrefix||t[50]!==n.title?(r=(0,$.jsx)(mr,{settingsId:n.settingsId,testIdPrefix:n.testIdPrefix,title:n.title,description:n.description}),t[47]=n.description,t[48]=n.settingsId,t[49]=n.testIdPrefix,t[50]=n.title,t[51]=r):r=t[51];let i;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsxs)(`div`,{className:`rounded-lg border bg-card p-3 space-y-2`,children:[(0,$.jsx)(L,{className:`h-12 w-full`}),(0,$.jsx)(L,{className:`h-12 w-full`})]}),t[52]=i):i=t[52];let a;t[53]!==n.settingsId||t[54]!==e||t[55]!==r?(a=(0,$.jsxs)(`section`,{className:`space-y-3`,"aria-labelledby":n.settingsId,"data-testid":e,children:[r,i]}),t[53]=n.settingsId,t[54]=e,t[55]=r,t[56]=a):a=t[56],S=a;break bb0}_=`space-y-3`,v=n.settingsId,y=`settings-${n.testIdPrefix}-section`;let s;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>f(!0),t[57]=s):s=t[57],t[58]!==n.description||t[59]!==n.settingsId||t[60]!==n.testIdPrefix||t[61]!==n.title?(b=(0,$.jsx)(mr,{settingsId:n.settingsId,testIdPrefix:n.testIdPrefix,title:n.title,description:n.description,onNewClick:s}),t[58]=n.description,t[59]=n.settingsId,t[60]=n.testIdPrefix,t[61]=n.title,t[62]=b):b=t[62];let l=e.length===0?(0,$.jsx)(`p`,{className:`px-3 py-4 text-sm text-muted-foreground`,"data-testid":`settings-${n.testIdPrefix}-empty`,children:n.emptyMessage}):(0,$.jsx)(`ul`,{className:`space-y-1 p-2`,"data-testid":`settings-${n.testIdPrefix}-list`,children:e.map(e=>(0,$.jsx)(hr,{template:e,badge:n.badge,testIdPrefix:n.testIdPrefix,onEdit:()=>o(e),onDelete:()=>c(e)},e.name))});t[63]===l?x=t[64]:(x=(0,$.jsx)(`div`,{className:`rounded-lg border bg-card`,children:l}),t[63]=l,t[64]=x),p=ce,h=``,g=new Set(e.map(fr))}t[0]=n.badge,t[1]=n.description,t[2]=n.emptyMessage,t[3]=n.itemNoun,t[4]=n.scope,t[5]=n.settingsId,t[6]=n.target,t[7]=n.testIdPrefix,t[8]=n.title,t[9]=d,t[10]=i,t[11]=r.data,t[12]=r.message,t[13]=r.status,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=y,t[21]=b,t[22]=x,t[23]=S}else p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],y=t[20],b=t[21],x=t[22],S=t[23];if(S!==Symbol.for(`react.early_return_sentinel`))return S;let C;t[65]!==p||t[66]!==n.target||t[67]!==d||t[68]!==i||t[69]!==h||t[70]!==g?(C=(0,$.jsx)(p,{folderPath:h,existingNames:g,open:d,onOpenChange:f,onCreated:i,target:n.target}),t[65]=p,t[66]=n.target,t[67]=d,t[68]=i,t[69]=h,t[70]=g,t[71]=C):C=t[71];let w;t[72]===Symbol.for(`react.memo_cache_sentinel`)?(w=e=>{e||o(null)},t[72]=w):w=t[72];let T;t[73]!==n.target||t[74]!==a||t[75]!==i?(T=(0,$.jsx)(me,{folderPath:``,template:a,onOpenChange:w,onSaved:i,target:n.target}),t[73]=n.target,t[74]=a,t[75]=i,t[76]=T):T=t[76];let E=!!s,D;t[77]===l?D=t[78]:(D=e=>{!e&&!l&&c(null)},t[77]=l,t[78]=D);let O;t[79]!==n.deleteWarning||t[80]!==n.itemNoun||t[81]!==s||t[82]!==l||t[83]!==m?(O=s&&(0,$.jsx)(De,{itemName:`${n.itemNoun} "${s.name}"`,isSubmitting:l,onDelete:()=>m(s),customDescription:n.deleteWarning}),t[79]=n.deleteWarning,t[80]=n.itemNoun,t[81]=s,t[82]=l,t[83]=m,t[84]=O):O=t[84];let k;t[85]!==E||t[86]!==D||t[87]!==O?(k=(0,$.jsx)(Pe,{open:E,onOpenChange:D,children:O}),t[85]=E,t[86]=D,t[87]=O,t[88]=k):k=t[88];let A;return t[89]!==T||t[90]!==k||t[91]!==_||t[92]!==v||t[93]!==y||t[94]!==b||t[95]!==x||t[96]!==C?(A=(0,$.jsxs)(`section`,{className:_,"aria-labelledby":v,"data-testid":y,children:[b,x,C,T,k]}),t[89]=T,t[90]=k,t[91]=_,t[92]=v,t[93]=y,t[94]=b,t[95]=x,t[96]=C,t[97]=A):A=t[97],A}function fr(e){return e.name}function pr(e,t){let n=(e.title??e.name).toLowerCase(),r=(t.title??t.name).toLowerCase();return n.localeCompare(r)}function mr(e){let t=(0,R.c)(14),{settingsId:n,testIdPrefix:r,title:i,description:a,onNewClick:o}=e,s;t[0]!==n||t[1]!==i?(s=(0,$.jsx)(`h2`,{id:n,className:`text-base font-semibold`,children:i}),t[0]=n,t[1]=i,t[2]=s):s=t[2];let c;t[3]===a?c=t[4]:(c=(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a}),t[3]=a,t[4]=c);let l;t[5]!==s||t[6]!==c?(l=(0,$.jsxs)(`div`,{children:[s,c]}),t[5]=s,t[6]=c,t[7]=l):l=t[7];let u;t[8]!==o||t[9]!==r?(u=o?(0,$.jsxs)(T,{variant:`outline`,size:`sm`,className:`font-mono uppercase shrink-0`,onClick:o,"data-testid":`settings-${r}-new-button`,children:[(0,$.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),`New template`]}):null,t[8]=o,t[9]=r,t[10]=u):u=t[10];let d;return t[11]!==l||t[12]!==u?(d=(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[l,u]}),t[11]=l,t[12]=u,t[13]=d):d=t[13],d}function hr(e){let t=(0,R.c)(41),{template:n,badge:r,testIdPrefix:i,onEdit:c,onDelete:l}=e,u=n.title&&n.title!==n.name,d=`settings-${i}-row`,f=`settings-${i}-row-edit`,p=n.title??n.name,m;t[0]===p?m=t[1]:(m=(0,$.jsx)(`span`,{className:`font-medium truncate`,children:p}),t[0]=p,t[1]=m);let h;t[2]!==u||t[3]!==n.name?(h=u?(0,$.jsx)(`code`,{className:`font-mono text-xs text-muted-foreground shrink-0`,children:n.name}):null,t[2]=u,t[3]=n.name,t[4]=h):h=t[4];let g;t[5]!==r.label||t[6]!==r.variant?(g=(0,$.jsx)(s,{variant:r.variant,className:`ml-auto shrink-0 text-2xs`,children:r.label}),t[5]=r.label,t[6]=r.variant,t[7]=g):g=t[7];let _;t[8]!==m||t[9]!==h||t[10]!==g?(_=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[m,h,g]}),t[8]=m,t[9]=h,t[10]=g,t[11]=_):_=t[11];let v;t[12]===n.description?v=t[13]:(v=n.description?(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground truncate mt-0.5`,children:n.description}):null,t[12]=n.description,t[13]=v);let y;t[14]!==c||t[15]!==f||t[16]!==_||t[17]!==v?(y=(0,$.jsxs)(`button`,{type:`button`,onClick:c,className:`min-w-0 flex-1 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm`,"data-testid":f,children:[_,v]}),t[14]=c,t[15]=f,t[16]=_,t[17]=v,t[18]=y):y=t[18];let b=`Actions for ${n.title??n.name}`,x;t[19]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,$.jsx)(k,{className:`size-4`,"aria-hidden":!0}),t[19]=x):x=t[19];let S;t[20]===b?S=t[21]:(S=(0,$.jsx)(I,{asChild:!0,children:(0,$.jsx)(T,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 opacity-0 group-hover:opacity-100 focus-visible:opacity-100 data-[state=open]:opacity-100`,"aria-label":b,children:x})}),t[20]=b,t[21]=S);let C=`settings-${i}-row-edit-menuitem`,w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,$.jsx)(o,{"aria-hidden":!0}),t[22]=w):w=t[22];let E;t[23]!==c||t[24]!==C?(E=(0,$.jsxs)(M,{onSelect:c,"data-testid":C,children:[w,`Edit`]}),t[23]=c,t[24]=C,t[25]=E):E=t[25];let D=`settings-${i}-row-delete-menuitem`,O;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,$.jsx)(a,{"aria-hidden":!0}),t[26]=O):O=t[26];let A;t[27]!==l||t[28]!==D?(A=(0,$.jsxs)(M,{variant:`destructive`,onSelect:l,"data-testid":D,children:[O,`Delete`]}),t[27]=l,t[28]=D,t[29]=A):A=t[29];let j;t[30]!==E||t[31]!==A?(j=(0,$.jsxs)(te,{align:`end`,children:[E,A]}),t[30]=E,t[31]=A,t[32]=j):j=t[32];let N;t[33]!==S||t[34]!==j?(N=(0,$.jsxs)(F,{children:[S,j]}),t[33]=S,t[34]=j,t[35]=N):N=t[35];let P;return t[36]!==d||t[37]!==N||t[38]!==y||t[39]!==n.name?(P=(0,$.jsxs)(`li`,{className:`group flex items-center gap-2 rounded-md px-2 py-2 hover:bg-muted/50 text-sm`,"data-testid":d,"data-template-name":n.name,children:[y,N]}),t[36]=d,t[37]=N,t[38]=y,t[39]=n.name,t[40]=P):P=t[40],P}function gr(){let e=(0,R.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)($.Fragment,{children:[`Stored at `,(0,$.jsx)(`code`,{className:`font-mono`,children:`.ok/templates/`}),` in this project. Available in every folder (folder-scoped templates can override by filename).`]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsx)(dr,{config:{scope:`local`,target:`project`,title:`Project templates`,description:t,emptyMessage:`No project templates yet. Create one to make it available everywhere in this project. Folder-scoped templates live on each folder's overview page.`,deleteWarning:`This permanently removes the template from this project's .ok/templates/ directory. Agents and folders that reference it by name will fail until it's recreated.`,itemNoun:`project template`,badge:{label:`project`,variant:`gray`},settingsId:`settings-project-templates-title`,testIdPrefix:`project-templates`}}),e[1]=n):n=e[1],n}function _r(e,t){if(e.length===0)throw Error(`buildPatch: path must be non-empty`);let[n,...r]=e;return r.length===0?{[String(n)]:t}:{[String(n)]:_r(r,t)}}function vr(e){let t=e;for(let e=0;e<16;e++){if(t==null)return;let e=t?._zod?.def;if(e?.type===`default`){let t=e.defaultValue;return typeof t==`function`?t():t}let n=t?._zod?.def?.innerType;if(n===void 0)return;t=n}}function yr(e){let t=e;for(let e=0;e<16;e++){if(t==null)return;let e=t?._zod?.def;if(!e)return;if(e.type===`default`||e.type===`optional`||e.type===`nullable`){t=e.innerType;continue}return e.type}}function br(e){let t=e;for(let e=0;e<16;e++){if(t==null)return;let e=t?._zod?.def;if(!e)return;if(e.type===`enum`)return e.entries?Object.values(e.entries):void 0;if(e.innerType!==void 0){t=e.innerType;continue}return}}function xr(){let e=(0,R.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)($.Fragment,{children:[`Stored at `,(0,$.jsx)(`code`,{className:`font-mono`,children:`~/.ok/templates/`}),`. Available in every OK project you open with this user account.`]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsx)(dr,{config:{scope:`user`,target:`user`,title:`User templates`,description:t,emptyMessage:`No user templates yet. Create one to make it available in every OK project you open with this user account.`,deleteWarning:`This permanently removes the template from ~/.ok/templates/. It will no longer appear in any of your OK projects.`,itemNoun:`user template`,badge:{label:`user`,variant:`primary`},settingsId:`settings-user-templates-title`,testIdPrefix:`user-templates`}}),e[1]=n):n=e[1],n}function Sr(e){let t=(0,R.c)(14),n;t[0]===e?n=t[1]:(n=e.current(),t[0]=e,t[1]=n);let r=n,i;t[2]===r?i=t[3]:(i={defaultValues:r,mode:`onBlur`},t[2]=r,t[3]=i);let a=cn(i),o,s;t[4]!==e||t[5]!==a?(o=()=>e.subscribe(e=>{Cr(a,e)}),s=[e,a],t[4]=e,t[5]=a,t[6]=o,t[7]=s):(o=t[6],s=t[7]),(0,z.useEffect)(o,s);let c;t[8]!==e||t[9]!==a?(c=t=>wr(a,e,t),t[8]=e,t[9]=a,t[10]=c):c=t[10];let l=c,u;return t[11]!==l||t[12]!==a?(u={form:a,commitField:l},t[11]=l,t[12]=a,t[13]=u):u=t[13],u}function Cr(e,t){e.reset(t,{keepDirtyValues:!0,keepDirty:!0,keepTouched:!0})}function wr(e,t,n){let r=e.getValues(n),i=_r(Dr(n),r),a=t.patch(i);if(a.ok)return e.clearErrors(n),e.resetField(n,{defaultValue:r,keepError:!1}),!0;if(m(a.error)&&a.error.code===`SCHEMA_INVALID`&&a.error.issues.length>0){e.clearErrors(n);for(let t of a.error.issues){let r=t.path.length>0?t.path.map(String).join(`.`):n;e.setError(r,{type:`config-binding`,message:t.message})}}else e.setError(n,{type:`config-binding`,message:Tr(a.error,n)});return!1}function Tr(e,t){if(m(e)&&e.code===`SCHEMA_INVALID`){let n=e.issues.find(e=>Er(e,t));if(n)return n.message}return g(e)}function Er(e,t){return e.path.map(String).join(`.`)===t}function Dr(e){return e.split(`.`)}var Or=[{path:[`appearance`,`theme`],label:`Theme`,description:`Light, dark, or follow the OS.`,control:`enum-toggle`}];function kr(e,t){let n=(0,R.c)(4),[r,i]=(0,z.useState)(null),a,o;return n[0]!==e||n[1]!==t?(a=()=>{if(!t||e===null){i(null);return}let n=new d,r=new u({url:e,name:y,document:n}),a=p(r,`user`),o={provider:r,binding:a,synced:!1},s=()=>{i(e=>e?.provider===r?{...e,synced:!0}:e)};return r.on(`synced`,s),i(o),()=>{r.off(`synced`,s),a.dispose(),r.destroy(),n.destroy(),i(null)}},o=[e,t],n[0]=e,n[1]=t,n[2]=a,n[3]=o):(a=n[2],o=n[3]),(0,z.useEffect)(a,o),r}function Ar(e){let t=(0,R.c)(29),{open:n,onOpenChange:r}=e,{collabUrl:i}=l(),a=kr(i,n),{okignoreBinding:o,okignoreSynced:s}=se(),[c,u]=(0,z.useState)(`preferences`),d,f;t[0]===n?(d=t[1],f=t[2]):(d=()=>{n&&u(`preferences`)},f=[n],t[0]=n,t[1]=d,t[2]=f),(0,z.useEffect)(d,f);let p=i!==null,{desktopPresent:m}=xe(),h;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(h={id:`user`,label:`User`,enabled:!0,items:[{id:`preferences`,label:`Preferences`},{id:`user-templates`,label:`User templates`}]},t[3]=h):h=t[3];let g;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(g=[{id:`sync`,label:`Sync`},{id:`project-templates`,label:`Templates`},{id:`okignore`,label:`Ignore patterns`}],t[4]=g):g=t[4];let _;t[5]===p?_=t[6]:(_={id:`project`,label:`This project`,enabled:p,items:g},t[5]=p,t[6]=_);let v;t[7]===m?v=t[8]:(v={id:`integrations`,label:`Integrations`,enabled:!0,items:m?[{id:`claude-desktop`,label:`Claude Desktop`}]:[]},t[7]=m,t[8]=v);let y;t[9]!==_||t[10]!==v?(y=[h,_,v],t[9]=_,t[10]=v,t[11]=y):y=t[11];let b=y,x,S;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,$.jsx)(Me,{className:`sr-only`,children:`Settings`}),S=(0,$.jsx)(je,{className:`sr-only`,children:`Configure user, project, and integration settings.`}),t[12]=x,t[13]=S):(x=t[12],S=t[13]);let C;t[14]!==c||t[15]!==b?(C=(0,$.jsx)(jr,{groups:b,activeId:c,onSelect:u}),t[14]=c,t[15]=b,t[16]=C):C=t[16];let w=a?.synced?a.binding:null,T;t[17]!==c||t[18]!==o||t[19]!==s||t[20]!==w?(T=(0,$.jsx)(`div`,{className:`min-h-0 overflow-y-auto overscroll-contain subtle-scrollbar p-6`,children:(0,$.jsx)(Nr,{activeId:c,userBinding:w,okignoreBinding:o,okignoreSynced:s})}),t[17]=c,t[18]=o,t[19]=s,t[20]=w,t[21]=T):T=t[21];let E;t[22]!==C||t[23]!==T?(E=(0,$.jsxs)(Ne,{className:`grid h-[700px] max-h-[calc(100dvh-4rem)] w-[900px] max-w-[calc(100%-2rem)] grid-cols-[220px_1fr] gap-0 overflow-hidden p-0 sm:max-w-[900px]`,"data-testid":`settings-dialog`,children:[x,S,C,T]}),t[22]=C,t[23]=T,t[24]=E):E=t[24];let D;return t[25]!==r||t[26]!==n||t[27]!==E?(D=(0,$.jsx)(Pe,{open:n,onOpenChange:r,children:E}),t[25]=r,t[26]=n,t[27]=E,t[28]=D):D=t[28],D}function jr(e){let t=(0,R.c)(9),{groups:n,activeId:r,onSelect:i}=e,a;if(t[0]!==r||t[1]!==n||t[2]!==i){let e;t[4]!==r||t[5]!==i?(e=e=>(0,$.jsx)(Mr,{group:e,activeId:r,onSelect:i},e.id),t[4]=r,t[5]=i,t[6]=e):e=t[6],a=n.map(e),t[0]=r,t[1]=n,t[2]=i,t[3]=a}else a=t[3];let o;return t[7]===a?o=t[8]:(o=(0,$.jsx)(`aside`,{"aria-label":`Settings sections`,className:`h-full overflow-y-auto overscroll-contain subtle-scrollbar border-r bg-muted/30 px-3 py-4`,children:(0,$.jsx)(`nav`,{children:a})}),t[7]=a,t[8]=o),o}function Mr(e){let t=(0,R.c)(26),{group:n,activeId:r,onSelect:i}=e;if(n.items.length===0)return null;let a=`settings-group-${n.id}`,o=`${a}-caption`,s=n.enabled?void 0:o,c=n.enabled?`text-muted-foreground/80`:`text-muted-foreground/50`,l;t[0]===c?l=t[1]:(l=w(`mb-1 px-2 text-xs font-semibold uppercase tracking-wide font-mono`,c),t[0]=c,t[1]=l);let u;t[2]!==n.label||t[3]!==a||t[4]!==s||t[5]!==l?(u=(0,$.jsx)(`h2`,{id:a,"aria-describedby":s,className:l,children:n.label}),t[2]=n.label,t[3]=a,t[4]=s,t[5]=l,t[6]=u):u=t[6];let d;t[7]!==o||t[8]!==n.enabled?(d=n.enabled?null:(0,$.jsx)(`p`,{id:o,className:`mb-1 px-2 text-xs italic text-muted-foreground/60`,children:`Open a project to edit.`}),t[7]=o,t[8]=n.enabled,t[9]=d):d=t[9];let f;if(t[10]!==r||t[11]!==n.enabled||t[12]!==n.items||t[13]!==i){let e;t[15]!==r||t[16]!==n.enabled||t[17]!==i?(e=e=>(0,$.jsx)(`li`,{children:(0,$.jsx)(`button`,{type:`button`,"aria-current":r===e.id?`true`:void 0,"aria-disabled":n.enabled?void 0:!0,tabIndex:n.enabled?0:-1,disabled:!n.enabled,onClick:()=>n.enabled&&i(e.id),"data-testid":`settings-sidebar-item-${e.id}`,className:w(`w-full rounded px-2 py-1.5 text-left text-sm transition-colors`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,r===e.id&&n.enabled?`bg-accent text-accent-foreground`:`hover:bg-accent/50`),children:e.label})},e.id),t[15]=r,t[16]=n.enabled,t[17]=i,t[18]=e):e=t[18],f=n.items.map(e),t[10]=r,t[11]=n.enabled,t[12]=n.items,t[13]=i,t[14]=f}else f=t[14];let p;t[19]!==a||t[20]!==f?(p=(0,$.jsx)(`ul`,{"aria-labelledby":a,className:`space-y-0.5`,children:f}),t[19]=a,t[20]=f,t[21]=p):p=t[21];let m;return t[22]!==u||t[23]!==d||t[24]!==p?(m=(0,$.jsxs)(`div`,{className:`mb-4`,children:[u,d,p]}),t[22]=u,t[23]=d,t[24]=p,t[25]=m):m=t[25],m}function Nr(e){let t=(0,R.c)(9),{activeId:n,userBinding:r,okignoreBinding:i,okignoreSynced:a}=e;if(n===`preferences`){let e;return t[0]===r?e=t[1]:(e=r?(0,$.jsx)(Ir,{title:`Appearance`,description:`UI preferences. Editor toggles continue to write localStorage as a cache.`,scope:`user`,binding:r,fields:Or}):(0,$.jsx)(Fr,{}),t[0]=r,t[1]=e),e}if(n===`sync`){let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Rr,{}),t[2]=e):e=t[2],e}if(n===`user-templates`){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(xr,{}),t[3]=e):e=t[3],e}if(n===`project-templates`){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(gr,{}),t[4]=e):e=t[4],e}if(n===`okignore`){let e;return t[5]!==i||t[6]!==a?(e=(0,$.jsx)(Pn,{binding:i,synced:a}),t[5]=i,t[6]=a,t[7]=e):e=t[7],e}if(n===`claude-desktop`){let e;return t[8]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Gr,{}),t[8]=e):e=t[8],e}return null}function Pr(e){if(!m(e)||e.code!==`SCHEMA_INVALID`)return null;let t=e.issues[0];return!t||t.path.length===0?null:t.path.map(String).join(`.`)}function Fr(){let e=(0,R.c)(3),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(L,{className:`h-5 w-32`}),n=(0,$.jsx)(L,{className:`h-4 w-64`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,$.jsxs)(`div`,{className:`space-y-3`,children:[t,n,(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(L,{className:`h-9 w-full`}),(0,$.jsx)(L,{className:`h-9 w-full`})]})]}),e[2]=r):r=e[2],r}function Ir(e){let t=(0,R.c)(14),{title:n,description:r,scope:i,binding:a,fields:o}=e,{form:s,commitField:c}=Sr(a),[l,u]=(0,z.useState)(null),d=(0,z.useRef)(null),f,p;t[0]!==s||t[1]!==i?(f=()=>{let e=i===`project`?v:y,t=Se(t=>{if(t.docName!==e)return;Fe.error(g(t.error),{duration:8e3});let n=Pr(t.error);n&&(s.setError(n,{type:`config-validation-rejected`,message:Tr(t.error,n)}),s.setFocus(n),u(n),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{u(null),s.clearErrors(n)},600))});return()=>{t(),d.current&&clearTimeout(d.current)}},p=[i,s],t[0]=s,t[1]=i,t[2]=f,t[3]=p):(f=t[2],p=t[3]),(0,z.useEffect)(f,p);let m;t[4]!==c||t[5]!==r||t[6]!==o||t[7]!==l||t[8]!==i||t[9]!==n?(m=(0,$.jsx)(Lr,{title:n,description:r,scope:i,fields:o,commitField:c,flashedPath:l}),t[4]=c,t[5]=r,t[6]=o,t[7]=l,t[8]=i,t[9]=n,t[10]=m):m=t[10];let h;return t[11]!==s||t[12]!==m?(h=(0,$.jsx)(ln,{...s,children:m}),t[11]=s,t[12]=m,t[13]=h):h=t[13],h}function Lr(e){let t=(0,R.c)(23),{title:n,description:r,scope:i,fields:a,commitField:o,flashedPath:s}=e,c=`settings-section-${i}-title`,l;t[0]!==n||t[1]!==c?(l=(0,$.jsx)(`h2`,{id:c,className:`text-base font-semibold`,children:n}),t[0]=n,t[1]=c,t[2]=l):l=t[2];let u;t[3]===r?u=t[4]:(u=(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r}),t[3]=r,t[4]=u);let d;t[5]!==l||t[6]!==u?(d=(0,$.jsxs)(`div`,{className:`space-y-1`,children:[l,u]}),t[5]=l,t[6]=u,t[7]=d):d=t[7];let f;if(t[8]!==o||t[9]!==a||t[10]!==s||t[11]!==i){let e;t[13]!==o||t[14]!==s||t[15]!==i?(e=e=>(0,$.jsx)(zr,{field:e,scope:i,commitField:o,isFlashed:s===e.path.join(`.`)},e.path.join(`.`)),t[13]=o,t[14]=s,t[15]=i,t[16]=e):e=t[16],f=a.map(e),t[8]=o,t[9]=a,t[10]=s,t[11]=i,t[12]=f}else f=t[12];let p;t[17]===f?p=t[18]:(p=(0,$.jsx)(`div`,{className:`space-y-10`,children:f}),t[17]=f,t[18]=p);let m;return t[19]!==d||t[20]!==p||t[21]!==c?(m=(0,$.jsxs)(`section`,{"aria-labelledby":c,className:`space-y-10`,children:[d,p]}),t[19]=d,t[20]=p,t[21]=c,t[22]=m):m=t[22],m}function Rr(){let e=(0,R.c)(21),t=oe(),{projectLocalConfig:n,projectLocalSynced:r}=se(),{confirmOpen:i,setConfirmOpen:a,onToggleRequest:o,onConfirm:s}=ae(N());if(t&&!t.hasRemote&&t.state===`dormant`){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{id:`settings-sync-title`,className:`text-base font-semibold`,children:`Sync`}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No git remote was detected for this project. Set one up if you would like automatic git syncing.`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsxs)(`section`,{"aria-labelledby":`settings-sync-title`,className:`space-y-3`,"data-testid":`settings-sync-empty`,children:[t,(0,$.jsxs)(`div`,{className:`rounded-md border p-3 text-sm text-muted-foreground`,children:[`Add a remote with`,` `,(0,$.jsx)(`code`,{className:`rounded bg-muted px-1 py-0.5 font-mono text-xs`,children:`git remote add origin <url>`}),` `,`in this project's directory, then restart Open Knowledge.`]})]}),e[1]=n):n=e[1],n}let l=n?.autoSync?.enabled??!1,u=!r,d;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{id:`settings-sync-title`,className:`text-base font-semibold`,children:`Sync`}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Auto-sync pushes/pulls commits to your git remote on intervals and on save. Toggling on requires confirmation.`})]}),e[2]=d):d=e[2];let f;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(`label`,{htmlFor:`settings-sync-toggle`,className:`text-sm font-medium`,children:`Git auto-sync`}),e[3]=f):f=e[3];let p=l?`Auto-sync is on — your commits push and remote changes pull on intervals.`:`Auto-sync is off — your edits stay local until you commit and push manually.`,m;e[4]===p?m=e[5]:(m=(0,$.jsxs)(`div`,{children:[f,(0,$.jsx)(`p`,{className:`text-muted-foreground text-1sm`,children:p})]}),e[4]=p,e[5]=m);let h=l?`Disable git auto-sync`:`Enable git auto-sync`,g;e[6]!==u||e[7]!==l||e[8]!==o||e[9]!==h?(g=(0,$.jsx)(c,{id:`settings-sync-toggle`,checked:l,disabled:u,onCheckedChange:o,"aria-label":h,"data-testid":`settings-sync-toggle`}),e[6]=u,e[7]=l,e[8]=o,e[9]=h,e[10]=g):g=e[10];let _;e[11]!==m||e[12]!==g?(_=(0,$.jsx)(`div`,{className:`rounded-md border p-3`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[m,g]})}),e[11]=m,e[12]=g,e[13]=_):_=e[13];let v;e[14]!==i||e[15]!==s||e[16]!==a?(v=(0,$.jsx)(we,{open:i,onOpenChange:a,onConfirm:s}),e[14]=i,e[15]=s,e[16]=a,e[17]=v):v=e[17];let y;return e[18]!==_||e[19]!==v?(y=(0,$.jsxs)(`section`,{"aria-labelledby":`settings-sync-title`,className:`space-y-3`,children:[d,_,v]}),e[18]=_,e[19]=v,e[20]=y):y=e[20],y}function zr({field:e,scope:t,commitField:n,isFlashed:r}){"use no memo";let i=ht(),a=f(h,e.path),o=a?yr(a):void 0,s=a?vr(a):void 0,c=a?br(a):void 0,l=a?x(a):void 0,u=l?.scope===`project`&&t!==`project`||l?.scope===`user`&&t!==`user`,d=e.path.join(`.`),[p,m]=(0,z.useState)(!1),g=(0,z.useRef)(null);(0,z.useEffect)(()=>()=>{g.current&&clearTimeout(g.current)},[]);let _=()=>{m(!0),g.current&&clearTimeout(g.current),g.current=setTimeout(()=>m(!1),1200)},v=()=>{let e=n(d);return e&&_(),e},y=()=>i.getFieldState(d).isDirty?v():!0,b=()=>{let e=s===void 0?null:s;i.setValue(d,e,{shouldDirty:!1}),v()},S=w(`relative`,r&&`animate-settings-flash`);return(0,$.jsx)(dn,{control:i.control,name:d,render:({field:n})=>{let r=!u&&(s!==void 0||n.value!==void 0);return(0,$.jsxs)(mn,{className:S,"data-field":e.path.join(`.`),"data-scope":t,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsx)(hn,{className:`text-sm font-medium`,children:e.label}),r?(0,$.jsxs)(Ve,{children:[(0,$.jsx)(ze,{asChild:!0,children:(0,$.jsx)(T,{variant:`ghost`,size:`icon`,className:`h-5 w-5 text-muted-foreground opacity-60 hover:opacity-100`,onClick:b,"aria-label":`Reset ${e.label} to default`,children:(0,$.jsx)(Ue,{className:`size-3.5`})})}),(0,$.jsx)(Be,{children:`Reset to default`})]}):null]}),e.description?(0,$.jsx)(_n,{className:`text-muted-foreground text-1sm`,children:e.description}):null,(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(gn,{children:(0,$.jsx)(Br,{field:e,ctl:n,typeTag:o,enumOptions:c,onCommit:y})}),(0,$.jsx)(Wr,{visible:p})]}),(0,$.jsx)(vn,{"data-field-error":e.path.join(`.`)})]})}})}function Br({field:e,ctl:t,typeTag:n,enumOptions:r,onCommit:i,...a}){"use no memo";if(n===`boolean`)return(0,$.jsx)(c,{...a,checked:!!t.value,ref:t.ref,onCheckedChange:e=>{t.onChange(e),i()},onBlur:t.onBlur});if(n===`enum`&&r&&r.length>0&&(e.control===`enum-toggle`||r.length<=4)){let{id:n,...o}=a;return(0,$.jsx)(Le,{...o,type:`single`,value:typeof t.value==`string`?t.value:``,ref:t.ref,onValueChange:e=>{e&&(t.onChange(e),i())},onBlur:t.onBlur,variant:`segmented`,size:`sm`,spacing:1,className:`bg-muted dark:bg-background p-0.5 rounded-lg`,"aria-label":e.label,children:r.map((e,t)=>(0,$.jsx)(Ie,{value:e,id:t===0?n:void 0,className:`text-1sm capitalize`,children:e},e))})}return n===`number`||n===`int`?(0,$.jsx)(Hr,{ctl:t,onCommit:i,...a}):n===`array`?(0,$.jsx)(Ur,{ctl:t,onCommit:i,...a}):(0,$.jsx)(Vr,{ctl:t,onCommit:i,...a})}function Vr({ctl:e,onCommit:t,...n}){"use no memo";return(0,$.jsx)(He,{...n,value:typeof e.value==`string`?e.value:``,ref:e.ref,onChange:t=>e.onChange(t.target.value),onBlur:()=>{e.onBlur(),t()},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),t())},className:`h-8 text-sm`})}function Hr({ctl:e,onCommit:t,...n}){"use no memo";let[r,i]=(0,z.useState)(e.value===void 0?``:String(e.value)),a=(0,z.useRef)(e.value);(0,z.useEffect)(()=>{a.current!==e.value&&(i(e.value===void 0?``:String(e.value)),a.current=e.value)},[e.value]);let o=()=>{let n=Number(r);if(!Number.isFinite(n)){e.onChange(r),t();return}e.onChange(n),t(),a.current=n};return(0,$.jsx)(He,{...n,type:`number`,value:r,ref:e.ref,onChange:e=>i(e.target.value),onBlur:()=>{e.onBlur(),o()},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),o())},className:`h-8 w-28 text-sm tabular-nums`})}function Ur({ctl:e,onCommit:t,...n}){"use no memo";let r=Array.isArray(e.value)?e.value.join(`
7
+ `):``,[i,a]=(0,z.useState)(r),o=(0,z.useRef)(r);(0,z.useEffect)(()=>{let t=Array.isArray(e.value)?e.value.join(`
8
+ `):``;t!==o.current&&(a(t),o.current=t)},[e.value]);let s=()=>{let n=i.split(`
9
+ `).map(e=>e.trim()).filter(e=>e.length>0);e.onChange(n),t(),o.current=n.join(`
10
+ `)};return(0,$.jsx)(`textarea`,{...n,value:i,ref:e.ref,onChange:e=>a(e.target.value),onBlur:()=>{e.onBlur(),s()},rows:Math.max(2,Math.min(6,i.split(`
11
+ `).length)),className:`min-h-16 w-full rounded-md border border-input bg-background px-3 py-1.5 font-mono text-xs outline-none transition-colors focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`})}function Wr(e){let t=(0,R.c)(4),{visible:n}=e,r;t[0]===n?r=t[1]:(r=n?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(ke,{"aria-hidden":`true`,className:`size-3.5`}),(0,$.jsx)(`span`,{className:`sr-only`,children:`Saved`})]}):null,t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,$.jsx)(`span`,{role:`status`,"aria-live":`polite`,className:`text-emerald-600`,children:r}),t[2]=r,t[3]=i),i}function Gr(){let e=(0,R.c)(14),[t,n]=(0,z.useState)(!1),{skillInstalled:r,refresh:i}=xe(),a;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`h2`,{id:`settings-integrations-title`,className:`text-base font-semibold`,children:`Integrations`}),(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Connect Open Knowledge to other tools you use.`})]}),e[0]=a):a=e[0];let o;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-sm font-medium`,children:`Install in Claude Desktop`}),(0,$.jsx)(`p`,{className:`text-muted-foreground text-1sm`,children:`Make this knowledge base available as a Claude Skill.`})]}),e[1]=o):o=e[1];let s;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(s=()=>n(!0),e[2]=s):s=e[2];let c=r?`Reinstall`:`Install`,l;e[3]===c?l=e[4]:(l=(0,$.jsx)(`div`,{className:`rounded-md border p-3`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[o,(0,$.jsx)(T,{variant:`outline`,size:`sm`,onClick:s,"data-testid":`settings-install-claude-desktop`,className:`uppercase font-mono`,children:c})]})}),e[3]=c,e[4]=l);let u;e[5]===i?u=e[6]:(u=e=>{n(e),e||i()},e[5]=i,e[6]=u);let d;e[7]!==t||e[8]!==r||e[9]!==u?(d=(0,$.jsx)(he,{open:t,onOpenChange:u,reinstall:r}),e[7]=t,e[8]=r,e[9]=u,e[10]=d):d=e[10];let f;return e[11]!==l||e[12]!==d?(f=(0,$.jsxs)(`section`,{"aria-labelledby":`settings-integrations-title`,className:`space-y-3`,children:[a,l,d]}),e[11]=l,e[12]=d,e[13]=f):f=e[13],f}export{Ar as SettingsDialog};