@inkeep/open-knowledge 0.50.0-beta.12 → 0.50.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{acp-harness-probe-e-SewXXi.mjs → acp-harness-probe-BRzTGQPW.mjs} +2 -2
- package/dist/cli.mjs +6 -6
- package/dist/constants-COPfVWti.mjs +2 -0
- package/dist/index.d.mts +17 -17
- package/dist/index.mjs +1 -1
- package/dist/init-BvRbf5jC.mjs +1 -0
- package/dist/{init-C3TNy6IA.mjs → init-pIJddeyG.mjs} +3 -3
- package/dist/{launch-json-removal-BVtKDFyi.mjs → launch-json-removal-CnIk3WE-.mjs} +2 -2
- package/dist/loader-B2V-uVIv.mjs +1 -0
- package/dist/{loader-97Nspw6q.mjs → loader-BeDgboJk.mjs} +2 -2
- package/dist/{open-browser-Bb773NFh.mjs → open-browser-OsCLGa-m.mjs} +2 -2
- package/dist/preview-B9gSOFlh.mjs +1 -0
- package/dist/{preview-Dqh79pLV.mjs → preview-hjy0gI0i.mjs} +2 -2
- package/dist/{repair-launch-json-ChORzYOl.mjs → repair-launch-json-BocgwEI5.mjs} +2 -2
- package/dist/{repair-mcp-configs-DqtCFQdR.mjs → repair-mcp-configs-BrBkt_hT.mjs} +2 -2
- package/dist/repair-skills-BMZ7VleT.mjs +1 -0
- package/dist/{repair-skills-C_mOgSqu.mjs → repair-skills-C-3CmI5S.mjs} +2 -2
- package/dist/{skill-teardown-DT0sY6o-.mjs → skill-teardown-CH2C4nmj.mjs} +2 -2
- package/dist/src-BxyYlbvx.mjs +1 -0
- package/dist/{src-DTvTnYPi.mjs → src-DFKvCzqo.mjs} +2 -2
- package/dist/{src-YVZCV4Ux.mjs → src-Dg0jHVcz.mjs} +1 -1
- package/dist/{src-DJhexTh5.mjs → src-y0X27yQX.mjs} +2 -2
- package/dist/start-C9fu-159.mjs +1 -0
- package/dist/{start-RRmOhFPJ.mjs → start-Dtt8oak3.mjs} +4 -4
- package/dist/{ui-BBDdhHyy.mjs → ui-B35mCBIN.mjs} +3 -3
- package/dist/ui-D9Vnv2aH.mjs +1 -0
- package/dist/{write-project-skill-__SzqfoP.mjs → write-project-skill-BP9EVRr-.mjs} +2 -2
- package/package.json +4 -4
- package/dist/constants-COvJwYpX.mjs +0 -2
- package/dist/init-CN1ckCOc.mjs +0 -1
- package/dist/loader-BFlcv3EZ.mjs +0 -1
- package/dist/preview-DY343j5c.mjs +0 -1
- package/dist/repair-skills-qAm1agyb.mjs +0 -1
- package/dist/src-GnIWqWdP.mjs +0 -1
- package/dist/start-BRgtKVYb.mjs +0 -1
- package/dist/ui-BEwSKtfp.mjs +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{J as e,Z as t,et as n}from"./sleep-DdJljU3h.mjs";import{Ro as r,Ya as i,st as a}from"./src-c73kUNxd.mjs";import{Cn as o,vn as s,wn as c}from"./src-
|
|
2
|
-
`)}\r\n\r\n`),n.length>0&&o.write(n)}catch(e){c({event:`proxy-upgrade-handshake-write-failed`,err:e});return}o.on(`data`,e=>{t.writable&&t.write(e)}),t.on(`data`,e=>{o.writable&&o.write(e)})}),o.once(`timeout`,()=>{c({event:`proxy-upgrade-upstream-connect-timeout`})}),o.on(`error`,e=>c({event:`proxy-upgrade-upstream-error`,err:e})),t.on(`error`,e=>c({event:`proxy-upgrade-client-error`,err:e})),o.once(`close`,()=>c()),t.once(`close`,()=>c())}const b=[`connection`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`,`cookie`,`set-cookie`];async function x(e){let t=e.upstreamTimeoutMs??h,n=new Set,r=d((n,r)=>{g(n,r)||S(n,r,e.upstreamHost,e.upstreamPort,t)});r.on(`upgrade`,(t,r,i)=>{v(t,r)||y(t,r,i,e.upstreamHost,e.upstreamPort,n)}),await new Promise((t,n)=>{let i=e=>n(e);r.once(`error`,i),r.listen(e.listenPort,e.host,()=>{r.off(`error`,i),t()})});let i=r.address();return{httpServer:r,port:typeof i==`object`&&i?i.port:e.listenPort,close:()=>new Promise(e=>{for(let e of n)try{e.destroy()}catch{}n.clear(),r.close(()=>e()),r.closeIdleConnections()})}}function ee(e,t,n){S(e,t,n.upstreamHost,n.upstreamPort,n.upstreamTimeoutMs??h)}function S(e,t,n,r,i){let a={...e.headers};delete a.host;for(let e of b)delete a[e];e.setTimeout(_,()=>{if(t.headersSent)try{t.end()}catch{}else try{m(t,408,`urn:ok:error:request-timeout`,`Proxy request exceeded the per-request deadline.`,`Slow-loris-class: client did not finish within ${_/1e3}s.`)}catch{}try{e.socket?.destroy()}catch{}});let o=f({host:n,port:r,method:e.method,path:e.url,headers:{...a,host:`${n}:${r}`}},e=>{let n={...e.headers};for(let e of b)delete n[e];t.writeHead(e.statusCode??502,n),e.pipe(t),e.once(`error`,()=>{try{t.end()}catch{}})});i>0&&o.setTimeout(i,()=>{if(!t.headersSent)m(t,504,`urn:ok:error:gateway-timeout`,`Upstream did not respond before the gateway deadline.`,`Upstream timeout: ${i/1e3}s elapsed without a response.`);else try{t.end()}catch{}o.destroy()}),o.on(`error`,()=>{if(!t.headersSent)m(t,502,`urn:ok:error:collab-server-not-running`,`Collab server is unreachable.`,`Upstream connection failed or dropped before a response was received.`);else try{t.end()}catch{}}),e.on(`error`,()=>{o.destroy()}),e.pipe(o)}const C=720*60*1e3,w=39847;async function T(e){await Promise.all(e.map(e=>new Promise(t=>{e.close(()=>t())})))}function E(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid --server-url '${e}' — expected e.g. http://127.0.0.1:24550`)}if(t.protocol!==`http:`)throw Error(`--server-url must be http: (got '${t.protocol}//') — the UI proxy speaks plain HTTP; terminate TLS at your ingress`);let n=t.port===``?80:Number(t.port);return{host:t.hostname.replace(/^\[(.+)\]$/,`$1`),port:n}}async function D(i){let{existsSync:o}=await import(`node:fs`),{createServer:s}=await import(`node:http`),{resolve:c}=await import(`node:path`),{acquireUiLock:l,createAssetServeMiddleware:u,createContentFilter:d,readServerLock:f,releaseUiLock:p,updateUiLockPort:h}=await import(`./src-YVZCV4Ux.mjs`),{default:_}=await import(`./build-BcDJ6qQ2.mjs`),{resolveContentDir:b,resolveLockDir:x}=await import(`./src-YVZCV4Ux.mjs`),S=b(i.config,i.cwd),C=x(i.cwd);l(C,{port:0,worktreeRoot:i.cwd});let w=import.meta.dirname??new URL(`.`,import.meta.url).pathname,T=[c(w,`public`),c(w,`../../app/dist`),c(w,`../../../app/dist`)],D=i.assetDir??T.find(e=>o(e)),k=D?_(D,{single:!0,gzip:!0,etag:!0,dev:!0,extensions:[]}):null,A=o(S)?u({contentFilter:d({projectDir:i.cwd,contentDir:S}),contentSirv:_(S,{dotfiles:!1,dev:!0,extensions:[]}),inlineExtensions:n,assetExtensions:e,blocklistExtensions:t}):null,j=i.upstreamUrl===void 0?null:E(i.upstreamUrl),M=()=>{if(j!==null)return j;let e=f(C);return!e||e.port<=0?null:{host:r,port:e.port}},N=i.port,P=null,F=(e,t)=>{let n=e.url?.split(`?`)[0];if((n===`/`||n===``)&&(e.url=`/index.html`),!(n?.startsWith(`/api/`)&&g(e,t))){if(n===`/api/config`&&(e.method===`GET`||e.method===`HEAD`)){P?.();let n=e.headers.host??`localhost:${N}`,r=M()===null?null:`ws://${n}/collab`,i=JSON.stringify({collabUrl:r,previewUrl:null,port:N});t.setHeader(`Content-Type`,`application/json`),t.setHeader(`Cache-Control`,`no-store`),t.setHeader(`X-Content-Type-Options`,`nosniff`),t.statusCode=200,e.method===`HEAD`?t.end():t.end(i);return}if(n?.startsWith(`/api/`)){P?.();let r=M();if(r===null){m(t,503,`urn:ok:error:collab-server-not-running`,"Collab server not running. Start `ok start` or run `ok status`.",`Path: ${n}`);return}ee(e,t,{upstreamHost:r.host,upstreamPort:r.port});return}if(k&&n?.startsWith(`/assets/`)){k(e,t,()=>{A?A(e,t,()=>O(t)):O(t)});return}if(A){A(e,t,()=>{k?k(e,t):O(t)});return}if(k){k(e,t);return}O(t)}},I=new Set,L=(e,t,n)=>{if(v(e,t))return;let r=e.url?.split(`?`)[0]??``;if(r!==`/collab`&&!r.startsWith(`/collab/`)){t.destroy();return}let i=M();if(i===null){console.warn(JSON.stringify({event:`ok-ui-upgrade-no-collab-lock`,url:r,reason:"server.lock missing or port unbound — is `ok start` running?"})),t.destroy();return}y(e,t,n,i.host,i.port,I)},R=()=>{for(let e of I)try{e.destroy()}catch{}I.clear()},z=i.host===void 0?[`::1`,`127.0.0.1`]:[i.host],B=[],V=i.port,te=e=>e instanceof Error&&e.code===`EADDRINUSE`,H=async()=>{await Promise.all(B.splice(0).map(e=>new Promise(t=>{try{e.close(()=>t())}catch{t()}})))},U=async e=>{V=e;for(let e of z){let t=s(F);t.on(`upgrade`,L),B.push(t),await new Promise((n,r)=>{let i=e=>r(e);t.once(`error`,i),t.listen(V,e,()=>{t.off(`error`,i);let e=t.address();typeof e==`object`&&e&&(V=e.port),n()})})}};try{try{await U(i.port)}catch(e){if(i.fallbackToKernel===!0&&te(e))await H(),await U(0);else throw e}}catch(e){await H();try{p(C)}catch{}throw e}let W=V;N=W,h(C,W,`http://localhost:${W}`);let G=i.scheduler??a,K=i.safetyNetMs??432e5,q=null,J=!1,Y=!1,X=()=>{J||(J=!0,q!==null&&(G.clearTimeout(q),q=null))},Z=()=>{if(X(),!Y){Y=!0;try{p(C)}catch{}}},Q=()=>{J||K<=0||(q!==null&&(G.clearTimeout(q),q=null),q=G.setTimeout(()=>{q=null,console.warn(`[ui] safety-net (${K}ms) reached — shutting down (D-025 backstop)`);try{i.onSafetyNet?.()}catch{}R();for(let e of B)try{e.close()}catch{}Z()},K))},$=()=>{J||K<=0||Q()};return P=$,Q(),{httpServers:B,port:W,release:Z,detachSafetyNet:X,nudgeSafetyNet:$,drainUpgradeSockets:R}}function O(e){e.headersSent||e.writableEnded||e.destroyed||(e.setHeader(`X-Content-Type-Options`,`nosniff`),e.setHeader(`Cache-Control`,`no-store`),e.statusCode=404,e.end())}function k(e,t){if(e!==void 0){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<0||t>65535)throw Error(`Invalid --port value '${e}'`);return{port:t,fallbackToKernel:!1}}if(t!==void 0&&t!==``){let e=Number.parseInt(t,10);if(Number.isNaN(e)||e<0||e>65535)throw Error(`Invalid PORT env value '${t}'`);return{port:e,fallbackToKernel:!1}}return{port:w,fallbackToKernel:!0}}async function A(e){let t=e.readLock??(async()=>{let{readUiLock:t}=await import(`./src-YVZCV4Ux.mjs`);return t(e.lockDir)}),n=await t();if(!n)throw Error(`UI lock collision reported but the lock disappeared before handling — retry acquiring.`);if(n.port===e.requestedPort&&n.port>0)return{mode:`already-running`,port:n.port};let r=n.port;if(r===0){let n=Date.now()+(e.pollDeadlineMs??2e3),i=e.pollIntervalMs??100;for(;Date.now()<n;){await new Promise(e=>{setTimeout(e,i)});let e=await t();if(e&&e.port>0){r=e.port;break}}if(r===0)throw Error("UI did not bind within 2s; run `ok clean`");if(r===e.requestedPort)return{mode:`already-running`,port:r}}return{mode:`proxy`,handle:await x({listenPort:e.requestedPort,host:e.host,upstreamHost:`localhost`,upstreamPort:r}),upstreamPort:r}}async function j(e,t){let{dim:n}=await import(`./colors-MGDi6UGf.mjs`),{UiLockCollisionError:r}=await import(`./src-YVZCV4Ux.mjs`),{resolveLockDir:i}=await import(`./src-YVZCV4Ux.mjs`),a=t.host;if(t.upstreamUrl!==void 0)try{E(t.upstreamUrl)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(2)}let o;try{o=k(t.port,process.env.PORT)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(2)}let s=o.port;try{let r=await D({config:e,cwd:process.cwd(),port:s,fallbackToKernel:o.fallbackToKernel,host:a,...t.upstreamUrl===void 0?{}:{upstreamUrl:t.upstreamUrl}}),i=a===void 0||a===`::`||a===`0.0.0.0`?`localhost`:a;console.log(`${n(`[ui]`)} listening on http://${i}:${r.port}`);let c=!1,l=e=>{if(c)return;c=!0,console.log(n(`\n[ui] Shutting down (${e})`)),r.detachSafetyNet();let t=()=>{try{r.release()}finally{process.exit(process.exitCode??0)}};r.drainUpgradeSockets(),T(r.httpServers).then(t,t),setTimeout(t,2e3).unref()};process.once(`SIGINT`,()=>l(`SIGINT`)),process.once(`SIGTERM`,()=>l(`SIGTERM`));return}catch(e){if(!(e instanceof r))throw e;let t=i(process.cwd()),o=a??`localhost`,c;try{c=await A({requestedPort:s,host:o,lockDir:t})}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}if(c.mode===`already-running`){if(console.log(`UI already running at http://${o}:${c.port}`),N(process)){await new Promise(e=>{let t=t=>{console.log(n(`\n[ui-keepalive] Shutting down (${t})`)),e()};process.once(`SIGINT`,()=>t(`SIGINT`)),process.once(`SIGTERM`,()=>t(`SIGTERM`))});return}process.exit(0)}console.log(`UI running at http://${o}:${c.upstreamPort}; acting as HTTP proxy on port ${c.handle.port}`);let l=!1,u=e=>{l||(l=!0,console.log(n(`\n[ui-proxy] Shutting down (${e})`)),c.handle.close().finally(()=>process.exit(process.exitCode??0)),setTimeout(()=>process.exit(process.exitCode??0),2e3).unref())};process.once(`SIGINT`,()=>u(`SIGINT`)),process.once(`SIGTERM`,()=>u(`SIGTERM`))}}function M(e){return new l(`ui`).description("Deprecated: serve the React editor UI as a sibling process (plain `ok start` now serves the UI itself)").option(`-p, --port <port>`,`UI port (default: $PORT env or ${w}, kernel-allocated fallback if busy)`).option(`-H, --host <host>`,"UI host. Default: two-socket loopback bind (`[::1]` + `127.0.0.1`) so cross-family collisions fail loud. Pass an explicit host (e.g. `127.0.0.1`, `0.0.0.0`) to bind a single socket on that host.").action(async t=>{let{warning:n}=await import(`./colors-MGDi6UGf.mjs`);console.error(n("[ui] Deprecated: use `ok start` instead — it now serves the editor UI on one port. `ok ui` remains for older desktop builds and will be removed in a future release.")),await j(e(),t)})}function N(e){let t=e.stdout.isTTY===!0,n=typeof e.env.PORT==`string`&&e.env.PORT!==``;return!t||n}export{E as a,j as c,N as i,D as l,C as n,k as o,T as r,A as s,w as t,M as u};
|
|
3
|
-
//# sourceMappingURL=ui-
|
|
1
|
+
import{J as e,Z as t,et as n}from"./sleep-DdJljU3h.mjs";import{Ro as r,Ya as i,st as a}from"./src-c73kUNxd.mjs";import{Cn as o,vn as s,wn as c}from"./src-y0X27yQX.mjs";import{t as l}from"./esm-DmX1RzAi.mjs";import{randomUUID as u}from"node:crypto";import{createServer as d,request as f}from"node:http";import{connect as p}from"node:net";function m(e,t,n,r,a){let o=`urn:uuid:${u()}`;if(e.headersSent||e.writableEnded||e.destroyed){console.error(`[ok ui] emitProblem called after headers sent — suppressed`,{type:n,status:t,instance:o});return}let s={type:n,title:r,status:t,instance:o,...a===void 0?{}:{detail:a}},c=i.safeParse(s);if(!c.success){console.error(`[ok ui] emitProblem produced an invalid ProblemDetails body:`,{issues:c.error.issues,originalStatus:t,body:s}),e.writeHead(500,{"Content-Type":`application/problem+json`,"X-Content-Type-Options":`nosniff`,"Cache-Control":`no-store`}),e.end(JSON.stringify({type:`urn:ok:error:internal-server-error`,title:`Internal server error.`,status:500,instance:o}));return}e.writeHead(t,{"Content-Type":`application/problem+json`,"X-Content-Type-Options":`nosniff`,"Cache-Control":`no-store`}),e.end(JSON.stringify(s))}const h=1e4;function g(e,t){let n=e.socket?.remoteAddress;if(n!==void 0&&!c(n))return m(t,403,`urn:ok:error:loopback-required`,`Request must originate from a loopback address.`),!0;if(!o(e.headers.host))return m(t,403,`urn:ok:error:host-not-allowed`,`Host header is not in the loopback allowlist.`),!0;let r=e.headers.origin;return r!==void 0&&!s(r)?(m(t,403,`urn:ok:error:invalid-origin`,`Origin header is not in the loopback allowlist.`),!0):!1}const _=3e4;function v(e,t){let n=e.socket?.remoteAddress;if(n!==void 0&&!c(n)||!o(e.headers.host))return t.destroy(),!0;let r=e.headers.origin;return typeof r==`string`&&!s(r)?(t.destroy(),!0):!1}function y(e,t,n,r,i,a){a.add(t),t.once(`close`,()=>a.delete(t));let o=p({host:r,port:i,timeout:h});a.add(o),o.once(`close`,()=>a.delete(o));let s=!1,c=n=>{if(!s){if(s=!0,n!==void 0){let t=n.err;console.warn(JSON.stringify({event:n.event,upstreamHost:r,upstreamPort:i,url:e.url,code:t instanceof Error?t.code:void 0,message:t instanceof Error?t.message:void 0}))}try{o.destroy()}catch{}try{t.destroy()}catch{}}};o.once(`connect`,()=>{o.setTimeout(0);let a=[`${e.method??`GET`} ${e.url??`/`} HTTP/1.1`,`host: ${r}:${i}`];for(let[t,n]of Object.entries(e.headers))if(t.toLowerCase()!==`host`&&n!==void 0)if(Array.isArray(n))for(let e of n)a.push(`${t}: ${e}`);else a.push(`${t}: ${n}`);try{o.write(`${a.join(`\r
|
|
2
|
+
`)}\r\n\r\n`),n.length>0&&o.write(n)}catch(e){c({event:`proxy-upgrade-handshake-write-failed`,err:e});return}o.on(`data`,e=>{t.writable&&t.write(e)}),t.on(`data`,e=>{o.writable&&o.write(e)})}),o.once(`timeout`,()=>{c({event:`proxy-upgrade-upstream-connect-timeout`})}),o.on(`error`,e=>c({event:`proxy-upgrade-upstream-error`,err:e})),t.on(`error`,e=>c({event:`proxy-upgrade-client-error`,err:e})),o.once(`close`,()=>c()),t.once(`close`,()=>c())}const b=[`connection`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`te`,`trailer`,`transfer-encoding`,`upgrade`,`cookie`,`set-cookie`];async function x(e){let t=e.upstreamTimeoutMs??h,n=new Set,r=d((n,r)=>{g(n,r)||S(n,r,e.upstreamHost,e.upstreamPort,t)});r.on(`upgrade`,(t,r,i)=>{v(t,r)||y(t,r,i,e.upstreamHost,e.upstreamPort,n)}),await new Promise((t,n)=>{let i=e=>n(e);r.once(`error`,i),r.listen(e.listenPort,e.host,()=>{r.off(`error`,i),t()})});let i=r.address();return{httpServer:r,port:typeof i==`object`&&i?i.port:e.listenPort,close:()=>new Promise(e=>{for(let e of n)try{e.destroy()}catch{}n.clear(),r.close(()=>e()),r.closeIdleConnections()})}}function ee(e,t,n){S(e,t,n.upstreamHost,n.upstreamPort,n.upstreamTimeoutMs??h)}function S(e,t,n,r,i){let a={...e.headers};delete a.host;for(let e of b)delete a[e];e.setTimeout(_,()=>{if(t.headersSent)try{t.end()}catch{}else try{m(t,408,`urn:ok:error:request-timeout`,`Proxy request exceeded the per-request deadline.`,`Slow-loris-class: client did not finish within ${_/1e3}s.`)}catch{}try{e.socket?.destroy()}catch{}});let o=f({host:n,port:r,method:e.method,path:e.url,headers:{...a,host:`${n}:${r}`}},e=>{let n={...e.headers};for(let e of b)delete n[e];t.writeHead(e.statusCode??502,n),e.pipe(t),e.once(`error`,()=>{try{t.end()}catch{}})});i>0&&o.setTimeout(i,()=>{if(!t.headersSent)m(t,504,`urn:ok:error:gateway-timeout`,`Upstream did not respond before the gateway deadline.`,`Upstream timeout: ${i/1e3}s elapsed without a response.`);else try{t.end()}catch{}o.destroy()}),o.on(`error`,()=>{if(!t.headersSent)m(t,502,`urn:ok:error:collab-server-not-running`,`Collab server is unreachable.`,`Upstream connection failed or dropped before a response was received.`);else try{t.end()}catch{}}),e.on(`error`,()=>{o.destroy()}),e.pipe(o)}const C=720*60*1e3,w=39847;async function T(e){await Promise.all(e.map(e=>new Promise(t=>{e.close(()=>t())})))}function E(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid --server-url '${e}' — expected e.g. http://127.0.0.1:24550`)}if(t.protocol!==`http:`)throw Error(`--server-url must be http: (got '${t.protocol}//') — the UI proxy speaks plain HTTP; terminate TLS at your ingress`);let n=t.port===``?80:Number(t.port);return{host:t.hostname.replace(/^\[(.+)\]$/,`$1`),port:n}}async function D(i){let{existsSync:o}=await import(`node:fs`),{createServer:s}=await import(`node:http`),{resolve:c}=await import(`node:path`),{acquireUiLock:l,createAssetServeMiddleware:u,createContentFilter:d,readServerLock:f,releaseUiLock:p,updateUiLockPort:h}=await import(`./src-Dg0jHVcz.mjs`),{default:_}=await import(`./build-BcDJ6qQ2.mjs`),{resolveContentDir:b,resolveLockDir:x}=await import(`./src-Dg0jHVcz.mjs`),S=b(i.config,i.cwd),C=x(i.cwd);l(C,{port:0,worktreeRoot:i.cwd});let w=import.meta.dirname??new URL(`.`,import.meta.url).pathname,T=[c(w,`public`),c(w,`../../app/dist`),c(w,`../../../app/dist`)],D=i.assetDir??T.find(e=>o(e)),k=D?_(D,{single:!0,gzip:!0,etag:!0,dev:!0,extensions:[]}):null,A=o(S)?u({contentFilter:d({projectDir:i.cwd,contentDir:S}),contentSirv:_(S,{dotfiles:!1,dev:!0,extensions:[]}),inlineExtensions:n,assetExtensions:e,blocklistExtensions:t}):null,j=i.upstreamUrl===void 0?null:E(i.upstreamUrl),M=()=>{if(j!==null)return j;let e=f(C);return!e||e.port<=0?null:{host:r,port:e.port}},N=i.port,P=null,F=(e,t)=>{let n=e.url?.split(`?`)[0];if((n===`/`||n===``)&&(e.url=`/index.html`),!(n?.startsWith(`/api/`)&&g(e,t))){if(n===`/api/config`&&(e.method===`GET`||e.method===`HEAD`)){P?.();let n=e.headers.host??`localhost:${N}`,r=M()===null?null:`ws://${n}/collab`,i=JSON.stringify({collabUrl:r,previewUrl:null,port:N});t.setHeader(`Content-Type`,`application/json`),t.setHeader(`Cache-Control`,`no-store`),t.setHeader(`X-Content-Type-Options`,`nosniff`),t.statusCode=200,e.method===`HEAD`?t.end():t.end(i);return}if(n?.startsWith(`/api/`)){P?.();let r=M();if(r===null){m(t,503,`urn:ok:error:collab-server-not-running`,"Collab server not running. Start `ok start` or run `ok status`.",`Path: ${n}`);return}ee(e,t,{upstreamHost:r.host,upstreamPort:r.port});return}if(k&&n?.startsWith(`/assets/`)){k(e,t,()=>{A?A(e,t,()=>O(t)):O(t)});return}if(A){A(e,t,()=>{k?k(e,t):O(t)});return}if(k){k(e,t);return}O(t)}},I=new Set,L=(e,t,n)=>{if(v(e,t))return;let r=e.url?.split(`?`)[0]??``;if(r!==`/collab`&&!r.startsWith(`/collab/`)){t.destroy();return}let i=M();if(i===null){console.warn(JSON.stringify({event:`ok-ui-upgrade-no-collab-lock`,url:r,reason:"server.lock missing or port unbound — is `ok start` running?"})),t.destroy();return}y(e,t,n,i.host,i.port,I)},R=()=>{for(let e of I)try{e.destroy()}catch{}I.clear()},z=i.host===void 0?[`::1`,`127.0.0.1`]:[i.host],B=[],V=i.port,te=e=>e instanceof Error&&e.code===`EADDRINUSE`,H=async()=>{await Promise.all(B.splice(0).map(e=>new Promise(t=>{try{e.close(()=>t())}catch{t()}})))},U=async e=>{V=e;for(let e of z){let t=s(F);t.on(`upgrade`,L),B.push(t),await new Promise((n,r)=>{let i=e=>r(e);t.once(`error`,i),t.listen(V,e,()=>{t.off(`error`,i);let e=t.address();typeof e==`object`&&e&&(V=e.port),n()})})}};try{try{await U(i.port)}catch(e){if(i.fallbackToKernel===!0&&te(e))await H(),await U(0);else throw e}}catch(e){await H();try{p(C)}catch{}throw e}let W=V;N=W,h(C,W,`http://localhost:${W}`);let G=i.scheduler??a,K=i.safetyNetMs??432e5,q=null,J=!1,Y=!1,X=()=>{J||(J=!0,q!==null&&(G.clearTimeout(q),q=null))},Z=()=>{if(X(),!Y){Y=!0;try{p(C)}catch{}}},Q=()=>{J||K<=0||(q!==null&&(G.clearTimeout(q),q=null),q=G.setTimeout(()=>{q=null,console.warn(`[ui] safety-net (${K}ms) reached — shutting down (D-025 backstop)`);try{i.onSafetyNet?.()}catch{}R();for(let e of B)try{e.close()}catch{}Z()},K))},$=()=>{J||K<=0||Q()};return P=$,Q(),{httpServers:B,port:W,release:Z,detachSafetyNet:X,nudgeSafetyNet:$,drainUpgradeSockets:R}}function O(e){e.headersSent||e.writableEnded||e.destroyed||(e.setHeader(`X-Content-Type-Options`,`nosniff`),e.setHeader(`Cache-Control`,`no-store`),e.statusCode=404,e.end())}function k(e,t){if(e!==void 0){let t=Number.parseInt(e,10);if(Number.isNaN(t)||t<0||t>65535)throw Error(`Invalid --port value '${e}'`);return{port:t,fallbackToKernel:!1}}if(t!==void 0&&t!==``){let e=Number.parseInt(t,10);if(Number.isNaN(e)||e<0||e>65535)throw Error(`Invalid PORT env value '${t}'`);return{port:e,fallbackToKernel:!1}}return{port:w,fallbackToKernel:!0}}async function A(e){let t=e.readLock??(async()=>{let{readUiLock:t}=await import(`./src-Dg0jHVcz.mjs`);return t(e.lockDir)}),n=await t();if(!n)throw Error(`UI lock collision reported but the lock disappeared before handling — retry acquiring.`);if(n.port===e.requestedPort&&n.port>0)return{mode:`already-running`,port:n.port};let r=n.port;if(r===0){let n=Date.now()+(e.pollDeadlineMs??2e3),i=e.pollIntervalMs??100;for(;Date.now()<n;){await new Promise(e=>{setTimeout(e,i)});let e=await t();if(e&&e.port>0){r=e.port;break}}if(r===0)throw Error("UI did not bind within 2s; run `ok clean`");if(r===e.requestedPort)return{mode:`already-running`,port:r}}return{mode:`proxy`,handle:await x({listenPort:e.requestedPort,host:e.host,upstreamHost:`localhost`,upstreamPort:r}),upstreamPort:r}}async function j(e,t){let{dim:n}=await import(`./colors-MGDi6UGf.mjs`),{UiLockCollisionError:r}=await import(`./src-Dg0jHVcz.mjs`),{resolveLockDir:i}=await import(`./src-Dg0jHVcz.mjs`),a=t.host;if(t.upstreamUrl!==void 0)try{E(t.upstreamUrl)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(2)}let o;try{o=k(t.port,process.env.PORT)}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(2)}let s=o.port;try{let r=await D({config:e,cwd:process.cwd(),port:s,fallbackToKernel:o.fallbackToKernel,host:a,...t.upstreamUrl===void 0?{}:{upstreamUrl:t.upstreamUrl}}),i=a===void 0||a===`::`||a===`0.0.0.0`?`localhost`:a;console.log(`${n(`[ui]`)} listening on http://${i}:${r.port}`);let c=!1,l=e=>{if(c)return;c=!0,console.log(n(`\n[ui] Shutting down (${e})`)),r.detachSafetyNet();let t=()=>{try{r.release()}finally{process.exit(process.exitCode??0)}};r.drainUpgradeSockets(),T(r.httpServers).then(t,t),setTimeout(t,2e3).unref()};process.once(`SIGINT`,()=>l(`SIGINT`)),process.once(`SIGTERM`,()=>l(`SIGTERM`));return}catch(e){if(!(e instanceof r))throw e;let t=i(process.cwd()),o=a??`localhost`,c;try{c=await A({requestedPort:s,host:o,lockDir:t})}catch(e){console.error(e instanceof Error?e.message:String(e)),process.exit(1)}if(c.mode===`already-running`){if(console.log(`UI already running at http://${o}:${c.port}`),N(process)){await new Promise(e=>{let t=t=>{console.log(n(`\n[ui-keepalive] Shutting down (${t})`)),e()};process.once(`SIGINT`,()=>t(`SIGINT`)),process.once(`SIGTERM`,()=>t(`SIGTERM`))});return}process.exit(0)}console.log(`UI running at http://${o}:${c.upstreamPort}; acting as HTTP proxy on port ${c.handle.port}`);let l=!1,u=e=>{l||(l=!0,console.log(n(`\n[ui-proxy] Shutting down (${e})`)),c.handle.close().finally(()=>process.exit(process.exitCode??0)),setTimeout(()=>process.exit(process.exitCode??0),2e3).unref())};process.once(`SIGINT`,()=>u(`SIGINT`)),process.once(`SIGTERM`,()=>u(`SIGTERM`))}}function M(e){return new l(`ui`).description("Deprecated: serve the React editor UI as a sibling process (plain `ok start` now serves the UI itself)").option(`-p, --port <port>`,`UI port (default: $PORT env or ${w}, kernel-allocated fallback if busy)`).option(`-H, --host <host>`,"UI host. Default: two-socket loopback bind (`[::1]` + `127.0.0.1`) so cross-family collisions fail loud. Pass an explicit host (e.g. `127.0.0.1`, `0.0.0.0`) to bind a single socket on that host.").action(async t=>{let{warning:n}=await import(`./colors-MGDi6UGf.mjs`);console.error(n("[ui] Deprecated: use `ok start` instead — it now serves the editor UI on one port. `ok ui` remains for older desktop builds and will be removed in a future release.")),await j(e(),t)})}function N(e){let t=e.stdout.isTTY===!0,n=typeof e.env.PORT==`string`&&e.env.PORT!==``;return!t||n}export{E as a,j as c,N as i,D as l,C as n,k as o,T as r,A as s,w as t,M as u};
|
|
3
|
+
//# sourceMappingURL=ui-B35mCBIN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./ui-B35mCBIN.mjs";export{e as runUiCommand};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Ho as e,Xo as t,Zo as n,ts as r}from"./src-c73kUNxd.mjs";import{Ir as i,gr as a}from"./src-
|
|
1
|
+
import{Ho as e,Xo as t,Zo as n,ts as r}from"./src-c73kUNxd.mjs";import{Ir as i,gr as a}from"./src-y0X27yQX.mjs";import{basename as o,dirname as s,isAbsolute as c,join as l,posix as u,relative as ee,resolve as d,sep as f,win32 as p}from"node:path";import{cpSync as m,existsSync as h,lstatSync as g,mkdirSync as te,readFileSync as ne,realpathSync as _,rmSync as v,statSync as y}from"node:fs";import{homedir as b}from"node:os";const x=t,S=n,C=r,w=`node`,T={MCP_DEBUG:`1`,OK_LOG_FILE:`/tmp/ok-mcp.log`},E=`# ok-mcp-v2
|
|
2
2
|
USER_BUNDLE="$HOME/Applications/OpenKnowledge.app/Contents/Resources/cli/bin/ok.sh"
|
|
3
3
|
[ -f "$USER_BUNDLE" ] && [ -x "$USER_BUNDLE" ] && exec "$USER_BUNDLE" mcp
|
|
4
4
|
BUNDLE="/Applications/OpenKnowledge.app/Contents/Resources/cli/bin/ok.sh"
|
|
@@ -35,4 +35,4 @@ foreach ($d in $dirs) {
|
|
|
35
35
|
}
|
|
36
36
|
[Console]::Error.WriteLine('OpenKnowledge: install Node.js 24+ (npm i -g @inkeep/open-knowledge), then restart your editor')
|
|
37
37
|
exit 127`,O=`// ok-pi-bridge`,k=`${O}-v1`,A=`ok-pi-managed-extension`;function j(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.command===`/bin/sh`){if(!Array.isArray(t.args)||t.args[0]!==`-l`||t.args[1]!==`-c`)return!1;let e=t.args[2];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command===`powershell`){if(!Array.isArray(t.args)||t.args[0]!==`-NoProfile`||t.args[1]!==`-NonInteractive`||t.args[2]!==`-Command`)return!1;let e=t.args[3];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}if(t.type===`local`&&Array.isArray(t.command)){if(t.command[0]===`/bin/sh`){if(t.command[1]!==`-l`||t.command[2]!==`-c`)return!1;let e=t.command[3];return typeof e==`string`&&e.includes(`# ok-mcp-v2`)}if(t.command[0]===`powershell`){if(t.command[1]!==`-NoProfile`||t.command[2]!==`-NonInteractive`||t.command[3]!==`-Command`)return!1;let e=t.command[4];return typeof e==`string`&&e.includes(`# ok-mcp-win-v1`)}return!1}if(t.command===`ok-pi-managed-extension`){if(!Array.isArray(t.args))return!1;let e=t.args[0];return typeof e==`string`&&e.startsWith(k)}return!1}function M(e=process.argv[1]){if(!e)throw Error(`Cannot infer the local CLI entry for --dev-mcp because process.argv[1] is empty.`);let t=d(e);if(o(t)===`cli.mjs`&&o(s(t))===`dist`)return t;let n=t.split(f),r=n.lastIndexOf(`packages`);if(r===-1||n[r+1]!==`cli`)throw Error(`Cannot infer the repo root for --dev-mcp from ${t}. Run the local CLI from this repo so the built dist path can be derived.`);let i=n.slice(0,r);return l(i.length===0?f:i.join(f),`packages`,`cli`,`dist`,`cli.mjs`)}function N(e={}){return e.mode===`dev`?{command:w,args:[M(),`mcp`],env:{...T}}:(e.platformName??process.platform)===`win32`?{command:`powershell`,args:[`-NoProfile`,`-NonInteractive`,`-Command`,D]}:{command:`/bin/sh`,args:[`-l`,`-c`,E]}}function P(e={}){return e.mode===`dev`?{type:`local`,enabled:!0,command:[w,M(),`mcp`],environment:{...T}}:(e.platformName??process.platform)===`win32`?{type:`local`,enabled:!0,command:[`powershell`,`-NoProfile`,`-NonInteractive`,`-Command`,D]}:{type:`local`,enabled:!0,command:[`/bin/sh`,`-l`,`-c`,E]}}function re(e){if(typeof e!=`object`||!e)return!1;let t=e;return F(t,N({mode:`published`,platformName:`darwin`}))||F(t,N({mode:`published`,platformName:`win32`}))}function F(e,t){return Object.keys(e).length===Object.keys(t).length?ie(e,t):!1}function ie(e,t){if(e.command!==t.command)return!1;let n=t.args;return!Array.isArray(n)||!Array.isArray(e.args)||e.args.length!==n.length?!1:e.args.every((e,t)=>e===n[t])}function I(e,t){let n=e=>typeof e==`string`&&e.includes(`# ok-mcp`);return t===`/bin/sh`?e[0]===`-l`&&e[1]===`-c`&&n(e[2]):t===`powershell`?e[0]===`-NoProfile`&&e[1]===`-NonInteractive`&&e[2]===`-Command`&&n(e[3]):!1}function L(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.enabled===!1||typeof t.command!=`string`||!Array.isArray(t.args)?!1:I(t.args,t.command)}function R(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.type!==`local`||t.enabled===!1||!Array.isArray(t.command))return!1;let[n,...r]=t.command;return typeof n==`string`&&I(r,n)}function z(e){return e===`win32`?p:u}function B(e={}){let t=e.platformName??process.platform,n=e.home??b(),r=e.env??process.env,i=z(t);return t===`darwin`?i.join(n,`Library`,`Application Support`):t===`win32`?r.APPDATA??i.join(n,`AppData`,`Roaming`):r.XDG_CONFIG_HOME??i.join(n,`.config`)}function V(e={}){let t=e.platformName??process.platform,n=e.home??b();return z(t).join(n,`.claude.json`)}function H(e={}){let t=e.platformName??process.platform,n=e.home??b(),r=e.env??process.env;if(t===`darwin`)return u.join(n,`Library`,`Application Support`,`Claude`,`claude_desktop_config.json`);if(t===`win32`){let e=r.APPDATA??p.join(n,`AppData`,`Roaming`);return p.join(e,`Claude`,`claude_desktop_config.json`)}throw Error(`Claude Desktop is not available on ${t}. Supported: macOS, Windows.`)}function U(e={}){let t=e.platformName??process.platform,n=e.home??b();return z(t).join(n,`.cursor`,`mcp.json`)}function W(e={}){let t=e.platformName??process.platform,n=e.home??b();return(e.env??process.env).CODEX_HOME??z(t).join(n,`.codex`)}function G(e={}){return z(e.platformName??process.platform).join(W(e),`config.toml`)}function K(e={}){let t=e.platformName??process.platform,n=e.home??b(),r=(e.env??process.env).COPILOT_HOME??z(t).join(n,`.copilot`);return z(t).join(r,`mcp-config.json`)}function q(e={}){let t=e.platformName??process.platform,n=e.home??b(),r=e.env??process.env,i=z(t);if(t===`win32`){let e=r.APPDATA??i.join(n,`AppData`,`Roaming`);return i.join(e,`opencode`)}let a=r.XDG_CONFIG_HOME??i.join(n,`.config`);return i.join(a,`opencode`)}function J(e={}){return z(e.platformName??process.platform).join(q(e),`opencode.json`)}function ae(e={}){let t=e.platformName??process.platform,n=e.home??b();return z(t).join(n,`.openclaw`,`openclaw.json`)}function oe(e={}){let t=e.platformName??process.platform,n=e.home??b();return z(t).join(n,`.hermes`,`config.yaml`)}function se(e={}){let t=e.platformName??process.platform,n=e.home??b();return(e.env??process.env).PI_CODING_AGENT_DIR??z(t).join(n,`.pi`,`agent`)}function ce(e={}){let t=e.platformName??process.platform,n=e.home??b();return z(t).join(n,`.gemini`,`config`,`mcp_config.json`)}function le(e,t){let n=z(t),r=n.join(e,`.lmstudio`,`mcp.json`),i=n.join(e,`.cache`,`lm-studio`,`mcp.json`);return t===`darwin`?[i,r]:[r,i]}function Y(e={}){let t=e.platformName??process.platform,n=le(e.home??b(),t);return n.find(e=>h(e))||n.find(e=>h(s(e)))||n[0]}const X={claude:{id:`claude`,label:S.claude,configPath:(e,t)=>V({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>l(t??b(),`.claude`),projectConfigPath:e=>l(e,`.mcp.json`),projectSkillPath:e=>l(e,`.claude`,`skills`,`open-knowledge`,`SKILL.md`)},"claude-desktop":{id:`claude-desktop`,label:S[`claude-desktop`],configPath:(e,t)=>H({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>s(H({home:t}))},cursor:{id:`cursor`,label:S.cursor,configPath:(e,t)=>U({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>s(U({home:t})),projectConfigPath:e=>l(e,`.cursor`,`mcp.json`),projectSkillPath:e=>l(e,`.cursor`,`skills`,`open-knowledge`,`SKILL.md`)},codex:{id:`codex`,label:S.codex,configPath:(e,t)=>G({home:t}),format:`toml`,topLevelKey:`mcp_servers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>s(G({home:t})),projectConfigPath:e=>l(e,`.codex`,`config.toml`),projectSkillPath:e=>l(e,`.codex`,`skills`,`open-knowledge`,`SKILL.md`)},copilot:{id:`copilot`,label:S.copilot,configPath:(e,t)=>K({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>s(K({home:t})),projectSkillPath:e=>l(e,`.github`,`skills`,`open-knowledge`,`SKILL.md`)},opencode:{id:`opencode`,label:S.opencode,configPath:(e,t)=>J({home:t}),format:`json`,topLevelKey:`mcp`,serverName:()=>e,buildEntry:(e,t)=>P(t),scope:`global`,detectPath:(e,t)=>s(J({home:t})),projectConfigPath:e=>l(e,`opencode.json`),projectSkillPath:e=>l(e,`.opencode`,`skills`,`open-knowledge`,`SKILL.md`)},openclaw:{id:`openclaw`,label:S.openclaw,configPath:(e,t)=>ae({home:t}),format:`json`,topLevelKey:`mcp`,serverMapSubKey:`servers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>l(t??b(),`.openclaw`),offerOnlyWhenDetected:!0},pi:{id:`pi`,label:S.pi,configPath:()=>{throw Error("Pi has no user-global MCP config; OK's integration is the project-scoped bridge extension at .pi/extensions/open-knowledge.ts (run `ok init` in the project).")},format:`file`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:()=>{throw Error(`Pi has no MCP entry shape; the managed bridge file is built by buildPiExtensionSource (integrations/pi-extension.ts).`)},scope:`project`,detectPath:(e,t)=>se({home:t}),projectConfigPath:e=>l(e,`.pi`,`extensions`,`open-knowledge.ts`),projectSkillPath:e=>l(e,`.pi`,`skills`,`open-knowledge`,`SKILL.md`)},antigravity:{id:`antigravity`,label:S.antigravity,configPath:(e,t)=>ce({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>l(t??b(),`.gemini`),offerOnlyWhenDetected:!0},"lm-studio":{id:`lm-studio`,label:S[`lm-studio`],configPath:(e,t)=>Y({home:t}),format:`json`,topLevelKey:`mcpServers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>s(Y({home:t})),offerOnlyWhenDetected:!0},hermes:{id:`hermes`,label:S.hermes,configPath:(e,t)=>oe({home:t}),format:`yaml`,topLevelKey:`mcp_servers`,serverName:()=>e,buildEntry:(e,t)=>N(t),scope:`global`,detectPath:(e,t)=>l(t??b(),`.hermes`),offerOnlyWhenDetected:!0}};function ue(e){let t=e.filter(e=>!Object.hasOwn(X,e));if(t.length>0)throw Error(`Unknown editor(s): ${t.join(`, `)}. Valid options: ${x.join(`, `)}`);return e.map(e=>X[e])}function Z(e,t){let n;try{n=g(e)}catch(e){if(e.code!==`ENOENT`)throw e}if(n?.isSymbolicLink())throw Error(`Refusing to write through a symbolic link at ${e}. Remove the symlink and re-run project setup.`);Q(e,t)}function de(e,t){Q(e,t)}function Q(e,t){let n;try{n=_(t)}catch{n=d(t)}let r=s(e);for(;r.length>1&&r!==f;){let t;try{t=_(r)}catch(e){if(e.code===`ENOENT`){r=s(r);continue}throw e}let i=ee(n,t);if(i===``||!i.startsWith(`..`)&&!c(i))return;throw Error(`Refusing to write at ${e}: ancestor ${r} 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 project setup.`)}}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function fe(e,t,n){try{if(y(n).size>10485760)return!1}catch{return!1}let r;try{r=ne(n,`utf-8`)}catch{return!1}let a=[],o=i(r.charCodeAt(0)===65279?r.slice(1):r,a,{allowTrailingComma:!0,disallowComments:!1});if(a.length>0||!$(o))return!1;let s=o[e.topLevelKey];if(!$(s))return!1;let c=e.serverMapSubKey?s[e.serverMapSubKey]:s;return $(c)?$(c[e.serverName(t)]):!1}function pe(e,t,n={}){if(e.id!==`copilot`)return!0;try{return fe(e,t,e.configPath(t,n.home))}catch{return!1}}function me(e,t,n={}){let r=e.projectSkillPath?.(t);if(!r)return{editorId:e.id,label:e.label,action:`skipped-unsupported`,path:``};if(!pe(e,t,n))return{editorId:e.id,label:e.label,action:`skipped-prerequisite`,path:r};try{let n=a(`project`,{checkDesktop:!0}),i=s(r);Z(i,t);let o=h(r)?`overwritten`:`written`;return v(i,{recursive:!0,force:!0}),te(s(i),{recursive:!0}),m(n,i,{recursive:!0}),{editorId:e.id,label:e.label,action:o,path:r}}catch(t){return{editorId:e.id,label:e.label,action:`failed`,path:r,error:t instanceof Error?t.message:String(t)}}}export{ue as _,S as a,O as c,N as d,L as f,B as g,R as h,x as i,k as l,re as m,de as n,X as o,j as p,me as r,C as s,Z as t,A as u};
|
|
38
|
-
//# sourceMappingURL=write-project-skill-
|
|
38
|
+
//# sourceMappingURL=write-project-skill-BP9EVRr-.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/open-knowledge",
|
|
3
|
-
"version": "0.50.0-beta.
|
|
3
|
+
"version": "0.50.0-beta.13",
|
|
4
4
|
"license": "GPL-3.0-or-later",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -62,10 +62,10 @@
|
|
|
62
62
|
"ajv-formats": "^3.0.1",
|
|
63
63
|
"tsdown": "^0.21.7",
|
|
64
64
|
"typescript": "^5.9.3",
|
|
65
|
-
"@inkeep/open-knowledge-
|
|
65
|
+
"@inkeep/open-knowledge-core": "0.50.0-beta.13",
|
|
66
66
|
"@inkeep/open-knowledge-native-config": "0.0.0",
|
|
67
|
-
"@inkeep/open-knowledge-
|
|
68
|
-
"@inkeep/open-knowledge-
|
|
67
|
+
"@inkeep/open-knowledge-app": "0.50.0-beta.13",
|
|
68
|
+
"@inkeep/open-knowledge-server": "0.50.0-beta.13"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build:cli": "rm -rf dist && tsdown",
|
package/dist/init-CN1ckCOc.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e}from"./init-C3TNy6IA.mjs";export{e as runInit};
|
package/dist/loader-BFlcv3EZ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./loader-97Nspw6q.mjs";export{e as loadConfig};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./preview-Dqh79pLV.mjs";export{t as formatPreviewBlock,e as previewContent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./repair-skills-C_mOgSqu.mjs";export{e as repairSkills};
|
package/dist/src-GnIWqWdP.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./src-c73kUNxd.mjs";import"./src-DTvTnYPi.mjs";import"./acp-harness-probe-e-SewXXi.mjs";import"./init-C3TNy6IA.mjs";import"./write-project-skill-__SzqfoP.mjs";import{n as e}from"./loader-97Nspw6q.mjs";import"./skill-teardown-DT0sY6o-.mjs";import"./preview-Dqh79pLV.mjs";import"./mcp-migrate-event-BsswfOLm.mjs";export{e as loadConfig};
|
package/dist/start-BRgtKVYb.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{E as e,g as t,r as n,v as r}from"./start-RRmOhFPJ.mjs";export{n as bootStartServer,t as resolveBundledReactShellDir,r as resolveHost,e as startCommand};
|
package/dist/ui-BEwSKtfp.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./ui-BBDdhHyy.mjs";export{e as runUiCommand};
|