@inkeep/open-knowledge 0.51.0-beta.4 → 0.51.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/{acp-harness-probe-CMpIzD_B.mjs → acp-harness-probe-BkU-tE-l.mjs} +2 -2
  2. package/dist/cli.mjs +6 -6
  3. package/dist/constants-BSqSM7Pn.mjs +2 -0
  4. package/dist/index.d.mts +17 -17
  5. package/dist/index.mjs +1 -1
  6. package/dist/{init-DE9QpmWS.mjs → init-DfYGT262.mjs} +3 -3
  7. package/dist/init-ynopCnnK.mjs +1 -0
  8. package/dist/{launch-json-removal-Bo5bqG3W.mjs → launch-json-removal-l3fWeboJ.mjs} +2 -2
  9. package/dist/{loader-9oR8XFdq.mjs → loader-CFMzbhCW.mjs} +2 -2
  10. package/dist/loader-u_ojBsZK.mjs +1 -0
  11. package/dist/{open-browser-De70N-tU.mjs → open-browser-jSG2Dxln.mjs} +2 -2
  12. package/dist/preview-BH_bTJVX.mjs +1 -0
  13. package/dist/{preview-C10zIESg.mjs → preview-JuK8Hmub.mjs} +2 -2
  14. package/dist/public/assets/{ActivityModeContent-Dm6HZpzn.js → ActivityModeContent-PVnIOfSf.js} +1 -1
  15. package/dist/public/assets/{AgentDiffPane-CKf6Z_1P.js → AgentDiffPane-C996ouHg.js} +1 -1
  16. package/dist/public/assets/{ChangedOutsideBadge-CDYBGlu-.js → ChangedOutsideBadge-CILPMsrY.js} +1 -1
  17. package/dist/public/assets/{CodeMirrorPropInput-jiYTT-vF.js → CodeMirrorPropInput-y2kwhaZe.js} +1 -1
  18. package/dist/public/assets/{DocumentContext-DDvPxhWz.js → DocumentContext-enCDEbWC.js} +1 -1
  19. package/dist/public/assets/{EditorModeToggle-q2qO9VhT.js → EditorModeToggle-D6CRwejh.js} +1 -1
  20. package/dist/public/assets/{EnableSyncConfirmDialog-DTR328JC.js → EnableSyncConfirmDialog-CMnq67hp.js} +1 -1
  21. package/dist/public/assets/FeedbackForm-BcU52473.js +1 -0
  22. package/dist/public/assets/{ImportSkillDialog-C9BHc4ek.js → ImportSkillDialog-BdTufZ4C.js} +1 -1
  23. package/dist/public/assets/{LintConfigEditor-BE8W0Enb.js → LintConfigEditor-D_yP4Mbp.js} +1 -1
  24. package/dist/public/assets/{ManagedArtifactProperties-HIrwICTi.js → ManagedArtifactProperties-BhoIFHwj.js} +1 -1
  25. package/dist/public/assets/ManagedArtifactProperties-CRa7vpn5.js +1 -0
  26. package/dist/public/assets/{MermaidDocEditor-BDP4cIfm.js → MermaidDocEditor-B4TB7qBb.js} +1 -1
  27. package/dist/public/assets/{SchemaConfigEditor-nNhEpct1.js → SchemaConfigEditor-Cdr1F-OE.js} +1 -1
  28. package/dist/public/assets/{SessionsHost-CVpbrhLp.js → SessionsHost-D3UflD2t.js} +2 -2
  29. package/dist/public/assets/{SettingsDialogBody-00G52CzT.js → SettingsDialogBody-Dr5JkIl5.js} +1 -1
  30. package/dist/public/assets/ShareBranchSwitchDialog-ClrT-3XL.js +1 -0
  31. package/dist/public/assets/{ShareReceiveMissDialog-LYyFyj4_.js → ShareReceiveMissDialog-D_junuot.js} +1 -1
  32. package/dist/public/assets/{SkillToolbarControls-7rCq1EMz.js → SkillToolbarControls-SaNIYkjx.js} +1 -1
  33. package/dist/public/assets/{SourceEditor-CGXgBgxj.js → SourceEditor-CAlNq5yF.js} +1 -1
  34. package/dist/public/assets/{TerminalWindowApp-B305tWwd.js → TerminalWindowApp-fHDDHDHd.js} +1 -1
  35. package/dist/public/assets/{TextDocEditor-D0dvsaik.js → TextDocEditor-DgBicLwR.js} +1 -1
  36. package/dist/public/assets/{ThreadView-DmgDzyjw.js → ThreadView-DIn7W2w3.js} +1 -1
  37. package/dist/public/assets/{TimelineDiffPane-B5cFw3s5.js → TimelineDiffPane-hG2pqdpC.js} +1 -1
  38. package/dist/public/assets/{agent-diff-store-DUic-yHj.js → agent-diff-store-BNCJo7hK.js} +1 -1
  39. package/dist/public/assets/{auth-state-cache-DltqKLFv.js → auth-state-cache-BI5T1w3c.js} +1 -1
  40. package/dist/public/assets/{client-version-CbFMG_Zz.js → client-version-CfFWQoYr.js} +1 -1
  41. package/dist/public/assets/{comment-chips-Y8HApoMO.js → comment-chips-BSvfX8v2.js} +1 -1
  42. package/dist/public/assets/{config-provider-C26mA0gS.js → config-provider-CRBRmvPE.js} +3 -3
  43. package/dist/public/assets/{follow-file-cEdYRfgQ.js → follow-file-CNJDYNaC.js} +1 -1
  44. package/dist/public/assets/i18n-BAXNC2k8.js +1 -0
  45. package/dist/public/assets/{index-Z0OjnzO4.js → index-jZZjVUzj.js} +8 -8
  46. package/dist/public/assets/messages-B6vvv7H-.js +1 -0
  47. package/dist/public/assets/messages-Bf16a61t.js +1 -0
  48. package/dist/public/assets/messages-BlMkdPL-.js +1 -0
  49. package/dist/public/assets/messages-BrwWcQ1q.js +1 -0
  50. package/dist/public/assets/messages-Bsokz5p_.js +1 -0
  51. package/dist/public/assets/messages-CWnVB_17.js +1 -0
  52. package/dist/public/assets/messages-CgqvsJOb.js +1 -0
  53. package/dist/public/assets/messages-D3GzXczV.js +1 -0
  54. package/dist/public/assets/messages-DAiMiSQb.js +1 -0
  55. package/dist/public/assets/messages-DKla4fHa.js +1 -0
  56. package/dist/public/assets/messages-DhVrLKqA.js +1 -0
  57. package/dist/public/assets/{pending-receive-nav-store-Dj8HbLVt.js → pending-receive-nav-store-BvaA2mUc.js} +1 -1
  58. package/dist/public/assets/{selection-context-fe0D7UqI.js → selection-context-DznCHg8E.js} +1 -1
  59. package/dist/public/assets/{skill-actions-BfzaYHap.js → skill-actions-Cvb-P77g.js} +1 -1
  60. package/dist/public/assets/{src-CpTLscFS.js → src-F8nWbdD8.js} +1 -1
  61. package/dist/public/assets/{telemetry-impl-CPjcGqo6.js → telemetry-impl-DOBbzNwh.js} +1 -1
  62. package/dist/public/assets/{telemetry-startup-8sbfs4gZ.js → telemetry-startup-XWmt0ezG.js} +1 -1
  63. package/dist/public/assets/{typing-burst-detector-BXKVdG-0.js → typing-burst-detector-D0jXZqtt.js} +1 -1
  64. package/dist/public/assets/{uninstall-DgBAaN00.js → uninstall-97GnPmGj.js} +1 -1
  65. package/dist/public/assets/{use-activity-panel-BaS6vcbe.js → use-activity-panel-B8bXAHHP.js} +1 -1
  66. package/dist/public/assets/{use-open-skill-BO5ZkZEI.js → use-open-skill-Ds4RYVAK.js} +1 -1
  67. package/dist/public/assets/{use-popular-skills-BvWh9NuP.js → use-popular-skills-D_fdk-AE.js} +1 -1
  68. package/dist/public/assets/{use-terminal-enabled-B4PzXLX0.js → use-terminal-enabled-Cm16D9wy.js} +1 -1
  69. package/dist/public/assets/{use-timeline-entry-diff-BFz8HPKg.js → use-timeline-entry-diff-BWukPL_b.js} +1 -1
  70. package/dist/public/index.html +21 -21
  71. package/dist/public/uninstall.html +3 -3
  72. package/dist/{repair-launch-json-vd-U9Vfq.mjs → repair-launch-json-CKy8eiyb.mjs} +2 -2
  73. package/dist/{repair-mcp-configs-01qsemBS.mjs → repair-mcp-configs-BIxGYV2Q.mjs} +2 -2
  74. package/dist/{repair-skills-BFfQjF9F.mjs → repair-skills-BrdXw6h7.mjs} +2 -2
  75. package/dist/repair-skills-C3ElnlX0.mjs +1 -0
  76. package/dist/{skill-teardown-BppNXkpR.mjs → skill-teardown-CNnaeVfz.mjs} +2 -2
  77. package/dist/{src-wra-tEXm.mjs → src-B9lj656K.mjs} +2 -2
  78. package/dist/src-BgbQv-nN.mjs +1 -0
  79. package/dist/{src-CwuSSZyu.mjs → src-DhKFZAP_.mjs} +399 -398
  80. package/dist/{src-DR51i3QD.mjs → src-pCj9S7Zk.mjs} +1 -1
  81. package/dist/start-CJFPoFtJ.mjs +1 -0
  82. package/dist/{start-BmzMSjJY.mjs → start-OZOtESdy.mjs} +4 -4
  83. package/dist/ui-CeOR75_9.mjs +1 -0
  84. package/dist/ui-vkr3i7mR.mjs +3 -0
  85. package/dist/{write-project-skill-DHsuRyv9.mjs → write-project-skill-DqrvWWQM.mjs} +2 -2
  86. package/package.json +4 -4
  87. package/dist/constants-DTy_EQmM.mjs +0 -2
  88. package/dist/init-CUjUvClK.mjs +0 -1
  89. package/dist/loader-BSRf5C4c.mjs +0 -1
  90. package/dist/preview-D9OdogKv.mjs +0 -1
  91. package/dist/public/assets/FeedbackForm-g7KpfoLi.js +0 -1
  92. package/dist/public/assets/ManagedArtifactProperties-vWxTD-_o.js +0 -1
  93. package/dist/public/assets/ShareBranchSwitchDialog--krRpj9M.js +0 -1
  94. package/dist/public/assets/i18n-CQXk5Cpq.js +0 -1
  95. package/dist/public/assets/messages-6Ep41Xl-.js +0 -1
  96. package/dist/public/assets/messages-BeL4TmOn.js +0 -1
  97. package/dist/public/assets/messages-BmNourzM.js +0 -1
  98. package/dist/public/assets/messages-C5-_nwo9.js +0 -1
  99. package/dist/public/assets/messages-CKS0t00R.js +0 -1
  100. package/dist/public/assets/messages-CoDOYaZF.js +0 -1
  101. package/dist/public/assets/messages-D-hK7iwf.js +0 -1
  102. package/dist/public/assets/messages-DR8BtG96.js +0 -1
  103. package/dist/public/assets/messages-dgqhlzTN.js +0 -1
  104. package/dist/public/assets/messages-gPUoT9ag.js +0 -1
  105. package/dist/public/assets/messages-t6EQlGoL.js +0 -1
  106. package/dist/repair-skills-Dz417BMs.mjs +0 -1
  107. package/dist/src-B8LeAewV.mjs +0 -1
  108. package/dist/start-BvlGys-M.mjs +0 -1
  109. package/dist/ui-BBGFVQDX.mjs +0 -1
  110. package/dist/ui-CNA2d6cp.mjs +0 -3
@@ -1 +0,0 @@
1
- import{t as e}from"./repair-skills-BFfQjF9F.mjs";export{e as repairSkills};
@@ -1 +0,0 @@
1
- import"./src-DMpGVIiQ.mjs";import"./src-wra-tEXm.mjs";import"./acp-harness-probe-CMpIzD_B.mjs";import"./init-DE9QpmWS.mjs";import"./write-project-skill-DHsuRyv9.mjs";import{n as e}from"./loader-9oR8XFdq.mjs";import"./skill-teardown-BppNXkpR.mjs";import"./preview-C10zIESg.mjs";import"./mcp-migrate-event-BsswfOLm.mjs";export{e as loadConfig};
@@ -1 +0,0 @@
1
- import{D as e,g as t,r as n,v as r}from"./start-BmzMSjJY.mjs";export{n as bootStartServer,t as resolveBundledReactShellDir,r as resolveHost,e as startCommand};
@@ -1 +0,0 @@
1
- import{c as e}from"./ui-CNA2d6cp.mjs";export{e as runUiCommand};
@@ -1,3 +0,0 @@
1
- import{Q as e,it as t,tt as n}from"./sleep-ChZE9826.mjs";import{Ro as r,Ya as i,st as a}from"./src-DMpGVIiQ.mjs";import{An as o,kn as s,wn as c}from"./src-CwuSSZyu.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&&!o(n))return m(t,403,`urn:ok:error:loopback-required`,`Request must originate from a loopback address.`),!0;if(!s(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&&!c(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&&!o(n)||!s(e.headers.host))return t.destroy(),!0;let r=e.headers.origin;return typeof r==`string`&&!c(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-DR51i3QD.mjs`),{default:_}=await import(`./build-BcDJ6qQ2.mjs`),{resolveContentDir:b,resolveLockDir:x}=await import(`./src-DR51i3QD.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:t,assetExtensions:e,blocklistExtensions:n}):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-DR51i3QD.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-DR51i3QD.mjs`),{resolveLockDir:i}=await import(`./src-DR51i3QD.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-CNA2d6cp.mjs.map