@piwitests/server 0.17.0 → 0.18.1

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 (134) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BcLXUmKT.js → 36cXPVrY.js} +1 -1
  3. package/.output/public/_nuxt/{CMB-NkFa.js → 87SGk1nu.js} +1 -1
  4. package/.output/public/_nuxt/{CWmQcueG.js → AjuKBlzz.js} +1 -1
  5. package/.output/public/_nuxt/{DAeYmPfX.js → B1CB30tg.js} +1 -1
  6. package/.output/public/_nuxt/{BU6xjw05.js → B6IHiVa1.js} +1 -1
  7. package/.output/public/_nuxt/{z7PmsnBG.js → B6rt3IcG.js} +1 -1
  8. package/.output/public/_nuxt/{BDcIWTTq.js → BAaSmp8J.js} +1 -1
  9. package/.output/public/_nuxt/{rw7Hdll3.js → BAkJhSAW.js} +1 -1
  10. package/.output/public/_nuxt/{L6HlmmEa.js → BCArQk0c.js} +1 -1
  11. package/.output/public/_nuxt/{D811X8KM.js → BEB2Mv6B.js} +1 -1
  12. package/.output/public/_nuxt/BFjmLXYo.js +8 -0
  13. package/.output/public/_nuxt/{CbuWynGG.js → BJltXwHg.js} +1 -1
  14. package/.output/public/_nuxt/{Dn6cGVYB.js → BKaU95es.js} +1 -1
  15. package/.output/public/_nuxt/{CHHqhAsw.js → BReNbog6.js} +1 -1
  16. package/.output/public/_nuxt/{yZ4LuI9d.js → BTYiG93l.js} +1 -1
  17. package/.output/public/_nuxt/{D7P0ML0H.js → BUMZHDRC.js} +1 -1
  18. package/.output/public/_nuxt/{US3YSX4T.js → BVDBIVAQ.js} +1 -1
  19. package/.output/public/_nuxt/{BgDEjrcz.js → B_aSGB8S.js} +1 -1
  20. package/.output/public/_nuxt/{Ce3tBrN7.js → BaDv5D7A.js} +1 -1
  21. package/.output/public/_nuxt/{BWFY2RuU.js → BdHdHyop.js} +1 -1
  22. package/.output/public/_nuxt/{jlBi8Byu.js → BfoG8R5a.js} +1 -1
  23. package/.output/public/_nuxt/{3QTvYrZp.js → Bi3i470l.js} +1 -1
  24. package/.output/public/_nuxt/Bi9DO8jm.js +1 -0
  25. package/.output/public/_nuxt/{PxPbRVF-.js → BiX7c2qU.js} +1 -1
  26. package/.output/public/_nuxt/{DwZiG9xH.js → BoC6qaRF.js} +4 -4
  27. package/.output/public/_nuxt/{C7nwFokE.js → BsDB_eCd.js} +1 -1
  28. package/.output/public/_nuxt/{cBj9fai9.js → BuuvTH9e.js} +1 -1
  29. package/.output/public/_nuxt/{DvC5Adg1.js → C11lmBd4.js} +1 -1
  30. package/.output/public/_nuxt/{Dx1oCMgy.js → C4AfzZER.js} +1 -1
  31. package/.output/public/_nuxt/{CYuWAvXE.js → C7ZVzS0K.js} +1 -1
  32. package/.output/public/_nuxt/{B6hPf4UR.js → C8cz5feG.js} +1 -1
  33. package/.output/public/_nuxt/{DjRhouSr.js → C9EpbPNU.js} +1 -1
  34. package/.output/public/_nuxt/{HCK35QD8.js → C9ahP7km.js} +1 -1
  35. package/.output/public/_nuxt/{8jZmK2De.js → CBEM3L1q.js} +1 -1
  36. package/.output/public/_nuxt/{sMFaPAAR.js → CCsl9MOZ.js} +1 -1
  37. package/.output/public/_nuxt/{DTH2lteW.js → CCw3Tx4S.js} +1 -1
  38. package/.output/public/_nuxt/{99tAfVF5.js → CGq9qR-0.js} +1 -1
  39. package/.output/public/_nuxt/{Dym66h3p.js → CLdGRzLL.js} +1 -1
  40. package/.output/public/_nuxt/{BRdhP5lm.js → CP0vUzbd.js} +1 -1
  41. package/.output/public/_nuxt/{D_TbJDHY.js → CPZ5wygb.js} +1 -1
  42. package/.output/public/_nuxt/{Bua_L6p4.js → CRcjGmf7.js} +1 -1
  43. package/.output/public/_nuxt/{DS9yGVFL.js → CRpbGS75.js} +1 -1
  44. package/.output/public/_nuxt/{DDPptydi.js → CTgM5Fke.js} +1 -1
  45. package/.output/public/_nuxt/{D_A6axXa.js → CU3W9YrI.js} +1 -1
  46. package/.output/public/_nuxt/{BwKwWgQe.js → CUDeMcEK.js} +1 -1
  47. package/.output/public/_nuxt/{DFM2jv9I.js → CYIR2GbL.js} +1 -1
  48. package/.output/public/_nuxt/{B1CUXGbl.js → Ccit_CX1.js} +1 -1
  49. package/.output/public/_nuxt/CiPH-swI.js +1 -0
  50. package/.output/public/_nuxt/{DRTxhZBV.js → ClIKZ4qY.js} +1 -1
  51. package/.output/public/_nuxt/{DvXvJzFP.js → ClVRQpP_.js} +1 -1
  52. package/.output/public/_nuxt/{CvtYJHkY.js → CmbjAoQu.js} +1 -1
  53. package/.output/public/_nuxt/Cx65B3c3.js +1 -0
  54. package/.output/public/_nuxt/{Cz2HhsB6.js → D1ttGJfs.js} +1 -1
  55. package/.output/public/_nuxt/{DtXREpk_.js → D3MWm6JP.js} +1 -1
  56. package/.output/public/_nuxt/{BrT_Sys2.js → D3SYPlEB.js} +28 -28
  57. package/.output/public/_nuxt/{Cf4h8qty.js → D4SFgXAf.js} +1 -1
  58. package/.output/public/_nuxt/{DCffDvxl.js → D51_cB9D.js} +1 -1
  59. package/.output/public/_nuxt/{QFMx1VKs.js → D8YZvjas.js} +1 -1
  60. package/.output/public/_nuxt/{BE8ykmwr.js → DB3ljns7.js} +1 -1
  61. package/.output/public/_nuxt/{CSAmL8XJ.js → DC51KKt4.js} +1 -1
  62. package/.output/public/_nuxt/{3QTorEhJ.js → DCMFuzDI.js} +1 -1
  63. package/.output/public/_nuxt/{CNULGfLp.js → DIA_NAIv.js} +1 -1
  64. package/.output/public/_nuxt/{COVRAesU.js → DM_YaJgJ.js} +1 -1
  65. package/.output/public/_nuxt/{DJHNEqb7.js → DOr_4nln.js} +2 -2
  66. package/.output/public/_nuxt/{BGZQONfm.js → DRE6Aqqp.js} +1 -1
  67. package/.output/public/_nuxt/{DPSOtRoz.js → DVgMaBxD.js} +1 -1
  68. package/.output/public/_nuxt/{Sgf5OLhm.js → DaewB_zT.js} +1 -1
  69. package/.output/public/_nuxt/{ClJkng9p.js → Db_-yjYg.js} +1 -1
  70. package/.output/public/_nuxt/{DxQq_L07.js → Dbg8z684.js} +1 -1
  71. package/.output/public/_nuxt/{qYFZH4Z8.js → DcfRfTaA.js} +1 -1
  72. package/.output/public/_nuxt/{csqspBeX.js → Dm1_3W9g.js} +1 -1
  73. package/.output/public/_nuxt/{Dz3Wbekz.js → DnThe2U0.js} +1 -1
  74. package/.output/public/_nuxt/{D0-HTQTD.js → Do6zIWQf.js} +1 -1
  75. package/.output/public/_nuxt/{CoKEjZX7.js → DoFSKAvY.js} +1 -1
  76. package/.output/public/_nuxt/{Bpha13F_.js → DoYgYLOd.js} +1 -1
  77. package/.output/public/_nuxt/{Dvc1aWpA.js → Doul3p1_.js} +1 -1
  78. package/.output/public/_nuxt/{Ba4_ydKG.js → DraETso1.js} +1 -1
  79. package/.output/public/_nuxt/{CxLN5Tmq.js → Dwp3GkV-.js} +1 -1
  80. package/.output/public/_nuxt/{-9tk1FrT.js → Dy4TloG3.js} +1 -1
  81. package/.output/public/_nuxt/{DT5rhzhJ.js → EltzgiyS.js} +1 -1
  82. package/.output/public/_nuxt/{D13ybpY3.js → HTQtMbWb.js} +1 -1
  83. package/.output/public/_nuxt/{Wfk1m0ni.js → KYucVFu7.js} +1 -1
  84. package/.output/public/_nuxt/TBDx0s9p.js +3 -0
  85. package/.output/public/_nuxt/{Bq0PQfQY.js → Tt5LX5Y-.js} +1 -1
  86. package/.output/public/_nuxt/{BxRsAYRS.js → Vnfkr1pJ.js} +1 -1
  87. package/.output/public/_nuxt/{Df3QtbpW.js → WAaPPk0g.js} +2 -2
  88. package/.output/public/_nuxt/builds/latest.json +1 -1
  89. package/.output/public/_nuxt/builds/meta/2f517ae9-c342-457e-b4c5-6301728179f5.json +1 -0
  90. package/.output/public/_nuxt/{CHIbdzqp.js → empGC_x-.js} +1 -1
  91. package/.output/public/_nuxt/entry.ChQMshd4.css +1 -0
  92. package/.output/public/_nuxt/{BciovqwK.js → l0QnzFNM.js} +1 -1
  93. package/.output/public/_nuxt/{73aPL7Ir.js → lowCGL2S.js} +1 -1
  94. package/.output/public/_nuxt/{B6w76fJT.js → mlAADjK3.js} +1 -1
  95. package/.output/public/_nuxt/{Ds2Y3oms.js → n-QWmQgc.js} +1 -1
  96. package/.output/public/_nuxt/{DpJrGwCr.js → oFIS9u6t.js} +1 -1
  97. package/.output/public/_nuxt/{BEsJE07U.js → oWY3I9uX.js} +1 -1
  98. package/.output/public/_nuxt/{lCkcEykv.js → q0DPzLKN.js} +1 -1
  99. package/.output/public/_nuxt/{r9WApUfF.js → quV6tp4n.js} +1 -1
  100. package/.output/public/_nuxt/{8xyZSRSO.js → riEUDnED.js} +1 -1
  101. package/.output/public/_nuxt/{ByoIgYX_.js → rm7OkgDG.js} +1 -1
  102. package/.output/public/_nuxt/uaqMzXqE.js +5 -0
  103. package/.output/public/_nuxt/{vzXhOO8R.js → va1mwSm9.js} +1 -1
  104. package/.output/public/_nuxt/{BoRJdCd4.js → wGpfdK6o.js} +1 -1
  105. package/.output/public/_nuxt/{za5M7BGh.js → wQZj69OY.js} +1 -1
  106. package/.output/public/_nuxt/wgcgHmRR.js +1 -0
  107. package/.output/public/sw.js +1 -1
  108. package/.output/server/chunks/build/{about-TuEZ9n1Q.mjs → about-CoJjvUwM.mjs} +119 -11
  109. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +1 -0
  110. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  111. package/.output/server/chunks/build/{docs-EXhN3sqC.mjs → docs-BN_x1OW3.mjs} +50 -6
  112. package/.output/server/chunks/build/{docs-EXhN3sqC.mjs.map → docs-BN_x1OW3.mjs.map} +1 -1
  113. package/.output/server/chunks/build/{mcp-CQ-21rwc.mjs → mcp-_o6cMS6m.mjs} +307 -225
  114. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +1 -0
  115. package/.output/server/chunks/build/server.mjs +3 -3
  116. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +7 -0
  117. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +1 -0
  118. package/.output/server/chunks/nitro/nitro.mjs +683 -690
  119. package/.output/server/package.json +1 -1
  120. package/package.json +1 -1
  121. package/.output/public/_nuxt/26ll_vBr.js +0 -1
  122. package/.output/public/_nuxt/B_QIrc7l.js +0 -1
  123. package/.output/public/_nuxt/CEuVRSr0.js +0 -3
  124. package/.output/public/_nuxt/Cl96oI21.js +0 -5
  125. package/.output/public/_nuxt/DATh_1DQ.js +0 -1
  126. package/.output/public/_nuxt/DUe6xuKQ.js +0 -1
  127. package/.output/public/_nuxt/DqsMiUoW.js +0 -2
  128. package/.output/public/_nuxt/Ds4Lb1vi.js +0 -7
  129. package/.output/public/_nuxt/builds/meta/05a2dd95-d1c1-4e3a-8625-ac6bfea83837.json +0 -1
  130. package/.output/public/_nuxt/entry.BaIGwMjT.css +0 -1
  131. package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs +0 -122
  132. package/.output/server/chunks/build/DesktopMcpCard-B4JuUTKj.mjs.map +0 -1
  133. package/.output/server/chunks/build/about-TuEZ9n1Q.mjs.map +0 -1
  134. package/.output/server/chunks/build/mcp-CQ-21rwc.mjs.map +0 -1
@@ -1 +1 @@
1
- import{av as B,b as H,an as I,h as V}from"./BrT_Sys2.js";const k=4096;function x(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function j(e){return'"'+e.replace(/"/g,'\\"')+'"'}function u(e){return e.replace(/\\/g,"/")}function T(e){const n=new Map;for(const r of e){const i=r.projectName||"";n.has(i)||n.set(i,[]),n.get(i).push(r)}return n}function D(e){const n=new Set;return e.filter(r=>{const i=r.filePath;return n.has(i)?!1:(n.add(i),!0)}).map(r=>r.filePath)}function A(e,n){const r=n?.mode??"file-line",p=`${n?.pkgRunner??"npx"} playwright test`;if(e.length===0)return"";const v=T(e),m=[];for(const[g,d]of v){let c;if(r==="file"){const l=D(d).map(t=>j(u(t))).join(" ");c=`${p} ${l}`}else if(r==="file-line"){const a=new Set,l=d.filter(t=>{const o=t.filePath+":"+t.line;return t.line&&a.has(o)?!1:(t.line&&a.add(o),!0)}).map(t=>t.line?j(`${u(t.filePath)}:${t.line}`):j(u(t.filePath))).join(" ");c=`${p} ${l}`}else{const a=d.map(t=>x(t.title)),l=a.length===1?a[0]:`(${a.join("|")})`;c=`${p} --grep ${j(l)}`}g&&(c+=` --project=${j(g)}`),m.push(c)}let b=m.join(" && ");if(b.length>k){if(r==="grep")return A(e,{...n,mode:"file-line"});if(r==="file-line")return A(e,{...n,mode:"file"});const d=_(e).map(a=>j(u(a))).join(" ");let c=`${p} ${d}`;return c.length>k&&(c=c.slice(0,k-3)+"..."),c}return b}function _(e){const n=new Set;return e.reduce((r,i)=>(n.has(i.filePath)||(n.add(i.filePath),r.push(i.filePath)),r),[])}function C(e,n){return e==null?"":n==null?`:${e}`:`:${e}:${n}`}function w(e){return e.replace(/%/g,"%25").replace(/ /g,"%20").replace(/#/g,"%23").replace(/\?/g,"%3F")}function S(e,n){const r=u(e).replace(/\/+$/,""),i=u(n).replace(/^\.?\/+/,"");return r?`${r}/${i}`:i}function L(e){const n=w(u(e.absPath)),r=n.startsWith("/")?n:`/${n}`;return`${e.scheme}://file${r}${C(e.line,e.column)}`}function F(e){const n=w(u(e.relPath))+C(e.line,e.column);return`jetbrains://${e.product}/navigate/reference?project=${encodeURIComponent(e.projectName)}&path=${n}`}function K(e){const n=w(u(e.path));return`http://localhost:${e.port}/api/file/${n}${C(e.line,e.column)}`}const M="piwi-ide-prefs",G={method:"auto",vscodeScheme:"vscode",jetbrainsProduct:"idea",jetbrainsPort:63342,jetbrainsHttpUsesRelativePath:!1,defaultRoot:"",projectRoots:{},jetbrainsProjectNames:{}},W={vscode:"VS Code","vscode-insiders":"VS Code Insiders",vscodium:"VSCodium",cursor:"Cursor"},X={auto:"Auto (try all)",vscode:"VS Code","jetbrains-url":"JetBrains (URL)","jetbrains-http":"JetBrains (local server)"},Y=["idea","webstorm","pycharm","phpstorm","goland","rubymine","clion","rider","rustrover"];function Q(){const e=B(M,G,{mergeDefaults:!0}),n=H(),r=I("piwi-ide-settings-open",()=>!1),i=I("piwi-ide-settings-context",()=>({}));function p(t){return t==null||t===""?null:String(t)}function v(t={}){i.value={projectKey:t.projectKey??null,projectName:t.projectName??null},r.value=!0}function m(t){const o=p(t);return((o?e.value.projectRoots[o]:void 0)||e.value.defaultRoot||"").trim()}function b(t,o){const s=p(t);return((s?e.value.jetbrainsProjectNames[s]:void 0)||o||"").trim()}function g(t,o){const s=m(o);return s?S(s,t):null}const d=V(()=>!!e.value.defaultRoot?.trim()||Object.keys(e.value.projectRoots).length>0||Object.keys(e.value.jetbrainsProjectNames).length>0);function c(t){try{const o=document.createElement("iframe");o.style.display="none",o.src=t,document.body.appendChild(o),setTimeout(()=>o.remove(),1e3)}catch{const o=document.createElement("a");o.href=t,o.style.display="none",document.body.appendChild(o),o.click(),setTimeout(()=>o.remove(),1e3)}}async function a(t,o,s){const f=K({port:e.value.jetbrainsPort,path:t,line:o,column:s});try{return await fetch(f,{mode:"no-cors",signal:AbortSignal.timeout(1200)}),!0}catch{return!1}}async function l(t){const o=t.method??e.value.method,s=t.filePath,f=t.line??null,P=t.column??null,h=m(t.projectKey),$=b(t.projectKey,t.projectName),O={projectKey:p(t.projectKey),projectName:t.projectName??null},y={label:"Configure",color:"info",onClick:()=>v(O)},J=()=>h?(c(L({scheme:e.value.vscodeScheme,absPath:S(h,s),line:f,column:P})),n.add({title:`Opening ${W[e.value.vscodeScheme]}…`,description:"If nothing opens, the editor may not be installed or the workspace root is wrong.",color:"neutral",icon:"i-lucide-external-link"}),!0):(n.add({title:"Set a workspace root",description:"VS Code needs the local folder that contains this file.",color:"info",icon:"i-lucide-folder-cog",actions:[y]}),!1),E=()=>$?(c(F({product:e.value.jetbrainsProduct,projectName:$,relPath:s,line:f,column:P})),n.add({title:"Opening JetBrains…",description:"If nothing opens, JetBrains Toolbox may not be installed or the project is not open.",color:"neutral",icon:"i-lucide-external-link"}),!0):(n.add({title:"Set a JetBrains project name",description:"The jetbrains:// link needs the open IDE project name.",color:"info",icon:"i-lucide-folder-cog",actions:[y]}),!1),U=async()=>{const R=e.value.jetbrainsHttpUsesRelativePath?s:h?S(h,s):s,N=await a(R,f,P);return n.add(N?{title:"Opened in JetBrains",color:"success",icon:"i-lucide-check"}:{title:"JetBrains not reachable",description:`Nothing responded on localhost:${e.value.jetbrainsPort}. Start the IDE with the Remote Control plugin (and "Allow unsigned requests").`,color:"error",icon:"i-lucide-plug-zap"}),N};if(o==="vscode"){J();return}if(o==="jetbrains-url"){E();return}if(o==="jetbrains-http"){await U();return}if(e.value.jetbrainsHttpUsesRelativePath||!!h){const R=e.value.jetbrainsHttpUsesRelativePath?s:S(h,s);if(await a(R,f,P)){n.add({title:"Opened in JetBrains",color:"success",icon:"i-lucide-check"});return}}if(h){J();return}if($){E();return}n.add({title:'Set up "Open in IDE"',description:"Add your local workspace folder (for VS Code) or a JetBrains project name to open files from here.",color:"info",icon:"i-lucide-folder-cog",actions:[y]})}return{prefs:e,isConfigured:d,openInIde:l,openInVscode:t=>l({...t,method:"vscode"}),openViaJetbrainsUrl:t=>l({...t,method:"jetbrains-url"}),openViaJetbrainsHttp:t=>l({...t,method:"jetbrains-http"}),resolveRoot:m,resolveJbProjectName:b,resolveAbsPath:g,settingsOpen:r,settingsContext:i,openSettings:v}}export{X as I,Y as J,W as V,A as b,Q as u};
1
+ import{av as B,b as H,an as I,h as V}from"./D3SYPlEB.js";const k=4096;function x(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function j(e){return'"'+e.replace(/"/g,'\\"')+'"'}function u(e){return e.replace(/\\/g,"/")}function T(e){const n=new Map;for(const r of e){const i=r.projectName||"";n.has(i)||n.set(i,[]),n.get(i).push(r)}return n}function D(e){const n=new Set;return e.filter(r=>{const i=r.filePath;return n.has(i)?!1:(n.add(i),!0)}).map(r=>r.filePath)}function A(e,n){const r=n?.mode??"file-line",p=`${n?.pkgRunner??"npx"} playwright test`;if(e.length===0)return"";const v=T(e),m=[];for(const[g,d]of v){let c;if(r==="file"){const l=D(d).map(t=>j(u(t))).join(" ");c=`${p} ${l}`}else if(r==="file-line"){const a=new Set,l=d.filter(t=>{const o=t.filePath+":"+t.line;return t.line&&a.has(o)?!1:(t.line&&a.add(o),!0)}).map(t=>t.line?j(`${u(t.filePath)}:${t.line}`):j(u(t.filePath))).join(" ");c=`${p} ${l}`}else{const a=d.map(t=>x(t.title)),l=a.length===1?a[0]:`(${a.join("|")})`;c=`${p} --grep ${j(l)}`}g&&(c+=` --project=${j(g)}`),m.push(c)}let b=m.join(" && ");if(b.length>k){if(r==="grep")return A(e,{...n,mode:"file-line"});if(r==="file-line")return A(e,{...n,mode:"file"});const d=_(e).map(a=>j(u(a))).join(" ");let c=`${p} ${d}`;return c.length>k&&(c=c.slice(0,k-3)+"..."),c}return b}function _(e){const n=new Set;return e.reduce((r,i)=>(n.has(i.filePath)||(n.add(i.filePath),r.push(i.filePath)),r),[])}function C(e,n){return e==null?"":n==null?`:${e}`:`:${e}:${n}`}function w(e){return e.replace(/%/g,"%25").replace(/ /g,"%20").replace(/#/g,"%23").replace(/\?/g,"%3F")}function S(e,n){const r=u(e).replace(/\/+$/,""),i=u(n).replace(/^\.?\/+/,"");return r?`${r}/${i}`:i}function L(e){const n=w(u(e.absPath)),r=n.startsWith("/")?n:`/${n}`;return`${e.scheme}://file${r}${C(e.line,e.column)}`}function F(e){const n=w(u(e.relPath))+C(e.line,e.column);return`jetbrains://${e.product}/navigate/reference?project=${encodeURIComponent(e.projectName)}&path=${n}`}function K(e){const n=w(u(e.path));return`http://localhost:${e.port}/api/file/${n}${C(e.line,e.column)}`}const M="piwi-ide-prefs",G={method:"auto",vscodeScheme:"vscode",jetbrainsProduct:"idea",jetbrainsPort:63342,jetbrainsHttpUsesRelativePath:!1,defaultRoot:"",projectRoots:{},jetbrainsProjectNames:{}},W={vscode:"VS Code","vscode-insiders":"VS Code Insiders",vscodium:"VSCodium",cursor:"Cursor"},X={auto:"Auto (try all)",vscode:"VS Code","jetbrains-url":"JetBrains (URL)","jetbrains-http":"JetBrains (local server)"},Y=["idea","webstorm","pycharm","phpstorm","goland","rubymine","clion","rider","rustrover"];function Q(){const e=B(M,G,{mergeDefaults:!0}),n=H(),r=I("piwi-ide-settings-open",()=>!1),i=I("piwi-ide-settings-context",()=>({}));function p(t){return t==null||t===""?null:String(t)}function v(t={}){i.value={projectKey:t.projectKey??null,projectName:t.projectName??null},r.value=!0}function m(t){const o=p(t);return((o?e.value.projectRoots[o]:void 0)||e.value.defaultRoot||"").trim()}function b(t,o){const s=p(t);return((s?e.value.jetbrainsProjectNames[s]:void 0)||o||"").trim()}function g(t,o){const s=m(o);return s?S(s,t):null}const d=V(()=>!!e.value.defaultRoot?.trim()||Object.keys(e.value.projectRoots).length>0||Object.keys(e.value.jetbrainsProjectNames).length>0);function c(t){try{const o=document.createElement("iframe");o.style.display="none",o.src=t,document.body.appendChild(o),setTimeout(()=>o.remove(),1e3)}catch{const o=document.createElement("a");o.href=t,o.style.display="none",document.body.appendChild(o),o.click(),setTimeout(()=>o.remove(),1e3)}}async function a(t,o,s){const f=K({port:e.value.jetbrainsPort,path:t,line:o,column:s});try{return await fetch(f,{mode:"no-cors",signal:AbortSignal.timeout(1200)}),!0}catch{return!1}}async function l(t){const o=t.method??e.value.method,s=t.filePath,f=t.line??null,P=t.column??null,h=m(t.projectKey),$=b(t.projectKey,t.projectName),O={projectKey:p(t.projectKey),projectName:t.projectName??null},y={label:"Configure",color:"info",onClick:()=>v(O)},J=()=>h?(c(L({scheme:e.value.vscodeScheme,absPath:S(h,s),line:f,column:P})),n.add({title:`Opening ${W[e.value.vscodeScheme]}…`,description:"If nothing opens, the editor may not be installed or the workspace root is wrong.",color:"neutral",icon:"i-lucide-external-link"}),!0):(n.add({title:"Set a workspace root",description:"VS Code needs the local folder that contains this file.",color:"info",icon:"i-lucide-folder-cog",actions:[y]}),!1),E=()=>$?(c(F({product:e.value.jetbrainsProduct,projectName:$,relPath:s,line:f,column:P})),n.add({title:"Opening JetBrains…",description:"If nothing opens, JetBrains Toolbox may not be installed or the project is not open.",color:"neutral",icon:"i-lucide-external-link"}),!0):(n.add({title:"Set a JetBrains project name",description:"The jetbrains:// link needs the open IDE project name.",color:"info",icon:"i-lucide-folder-cog",actions:[y]}),!1),U=async()=>{const R=e.value.jetbrainsHttpUsesRelativePath?s:h?S(h,s):s,N=await a(R,f,P);return n.add(N?{title:"Opened in JetBrains",color:"success",icon:"i-lucide-check"}:{title:"JetBrains not reachable",description:`Nothing responded on localhost:${e.value.jetbrainsPort}. Start the IDE with the Remote Control plugin (and "Allow unsigned requests").`,color:"error",icon:"i-lucide-plug-zap"}),N};if(o==="vscode"){J();return}if(o==="jetbrains-url"){E();return}if(o==="jetbrains-http"){await U();return}if(e.value.jetbrainsHttpUsesRelativePath||!!h){const R=e.value.jetbrainsHttpUsesRelativePath?s:S(h,s);if(await a(R,f,P)){n.add({title:"Opened in JetBrains",color:"success",icon:"i-lucide-check"});return}}if(h){J();return}if($){E();return}n.add({title:'Set up "Open in IDE"',description:"Add your local workspace folder (for VS Code) or a JetBrains project name to open files from here.",color:"info",icon:"i-lucide-folder-cog",actions:[y]})}return{prefs:e,isConfigured:d,openInIde:l,openInVscode:t=>l({...t,method:"vscode"}),openViaJetbrainsUrl:t=>l({...t,method:"jetbrains-url"}),openViaJetbrainsHttp:t=>l({...t,method:"jetbrains-http"}),resolveRoot:m,resolveJbProjectName:b,resolveAbsPath:g,settingsOpen:r,settingsContext:i,openSettings:v}}export{X as I,Y as J,W as V,A as b,Q as u};
@@ -0,0 +1 @@
1
+ import{as as o}from"./D3SYPlEB.js";function n(){const e=o()?.vnode?.scopeId;return e?{[e]:""}:{}}export{n as u};
@@ -1 +1 @@
1
- if(!self.define){let e,s={};const t=(t,n)=>(t=new URL(t+".js",n).href,s[t]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=t,e.onload=s,document.head.appendChild(e)}else e=t,importScripts(t),s()}).then(()=>{let e=s[t];if(!e)throw new Error(`Module ${t} didn’t register its module`);return e}));self.define=(n,i)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let r={};const l=e=>t(e,o),u={module:{uri:o},exports:r,require:l};s[o]=Promise.all(n.map(e=>u[e]||l(e))).then(e=>(i(...e),r))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"_nuxt/builds/latest.json",revision:"253bd61e4b52f9b7dc384633f3e0fc60"},{url:"_nuxt/builds/meta/05a2dd95-d1c1-4e3a-8625-ac6bfea83837.json",revision:null},{url:"manifest.webmanifest",revision:"7b171c7b5f0009e184f26413d5e92b5f"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/")))});
1
+ if(!self.define){let e,s={};const t=(t,n)=>(t=new URL(t+".js",n).href,s[t]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=t,e.onload=s,document.head.appendChild(e)}else e=t,importScripts(t),s()}).then(()=>{let e=s[t];if(!e)throw new Error(`Module ${t} didn’t register its module`);return e}));self.define=(n,i)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let r={};const l=e=>t(e,o),u={module:{uri:o},exports:r,require:l};s[o]=Promise.all(n.map(e=>u[e]||l(e))).then(e=>(i(...e),r))}}define(["./workbox-2fbc6a65"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"_nuxt/builds/latest.json",revision:"0cc92740e37279176106243ce73adf9b"},{url:"_nuxt/builds/meta/2f517ae9-c342-457e-b4c5-6301728179f5.json",revision:null},{url:"manifest.webmanifest",revision:"7b171c7b5f0009e184f26413d5e92b5f"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/")))});
@@ -6,8 +6,8 @@ import { _ as __nuxt_component_5$1 } from './CodeBlock-BGwNmJ8J.mjs';
6
6
  import { defineComponent, withAsyncContext, computed, mergeProps, withCtx, unref, createVNode, openBlock, createBlock, createCommentVNode, createTextVNode, toDisplayString, ref, useSSRContext } from 'vue';
7
7
  import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate } from 'vue/server-renderer';
8
8
  import { u as useCopy } from './useCopy-BQQKcwlq.mjs';
9
- import { _ as __nuxt_component_5 } from './DesktopMcpCard-B4JuUTKj.mjs';
10
- import { _ as _sfc_main$3 } from './Switch-xQQ3_ME1.mjs';
9
+ import { _ as _sfc_main$4 } from './Switch-xQQ3_ME1.mjs';
10
+ import { t as tauriCore } from './useTauri-lRT8zkLv.mjs';
11
11
  import { a as __nuxt_component_9 } from './HelpHint-YEMWtKu1.mjs';
12
12
  import { f as formatRelativeTime } from './index-CULN3-en.mjs';
13
13
  import { u as useIsDesktop } from './useIsDesktop-BS13spVj.mjs';
@@ -71,7 +71,7 @@ import './help-content-DmFnuhNu.mjs';
71
71
  import 'date-fns';
72
72
  import '@vue/shared';
73
73
 
74
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
74
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
75
75
  __name: "DesktopReporterCard",
76
76
  __ssrInlineRender: true,
77
77
  props: {
@@ -159,21 +159,129 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
159
159
  };
160
160
  }
161
161
  });
162
+ const _sfc_setup$3 = _sfc_main$3.setup;
163
+ _sfc_main$3.setup = (props, ctx) => {
164
+ const ssrContext = useSSRContext();
165
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopReporterCard.vue");
166
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
167
+ };
168
+ const __nuxt_component_4 = Object.assign(_sfc_main$3, { __name: "DesktopReporterCard" });
169
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
170
+ __name: "DesktopMcpCard",
171
+ __ssrInlineRender: true,
172
+ props: {
173
+ url: {},
174
+ token: {}
175
+ },
176
+ setup(__props) {
177
+ const props = __props;
178
+ const { copy } = useCopy();
179
+ const mcpUrl = computed(() => `${props.url}/mcp`);
180
+ const claudeCodeSnippet = computed(
181
+ () => `claude mcp add --transport http piwi ${mcpUrl.value} \\
182
+ --header "Authorization: Bearer ${props.token}"`
183
+ );
184
+ return (_ctx, _push, _parent, _attrs) => {
185
+ const _component_SectionCard = __nuxt_component_11;
186
+ const _component_UButton = _sfc_main$k;
187
+ const _component_CodeBlock = __nuxt_component_5$1;
188
+ _push(ssrRenderComponent(_component_SectionCard, mergeProps({
189
+ icon: "i-lucide-plug",
190
+ title: "Connect an AI assistant (MCP)"
191
+ }, _attrs), {
192
+ subtitle: withCtx((_, _push2, _parent2, _scopeId) => {
193
+ if (_push2) {
194
+ _push2(` This app exposes a local MCP endpoint. Point your client at the URL below and authenticate with the access token — it is the Bearer token, even though sign-in is off. `);
195
+ } else {
196
+ return [
197
+ createTextVNode(" This app exposes a local MCP endpoint. Point your client at the URL below and authenticate with the access token — it is the Bearer token, even though sign-in is off. ")
198
+ ];
199
+ }
200
+ }),
201
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
202
+ if (_push2) {
203
+ _push2(`<div class="space-y-3 text-sm"${_scopeId}><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>MCP URL</div><div class="flex items-start gap-2"${_scopeId}><code class="text-xs break-all flex-1"${_scopeId}>${ssrInterpolate(unref(mcpUrl))}</code>`);
204
+ _push2(ssrRenderComponent(_component_UButton, {
205
+ icon: "i-lucide-copy",
206
+ color: "neutral",
207
+ variant: "ghost",
208
+ size: "xs",
209
+ "aria-label": "Copy MCP URL",
210
+ onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
211
+ }, null, _parent2, _scopeId));
212
+ _push2(`</div></div><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>Access token</div><div class="flex items-start gap-2"${_scopeId}><code class="text-xs break-all flex-1"${_scopeId}>${ssrInterpolate(__props.token)}</code>`);
213
+ _push2(ssrRenderComponent(_component_UButton, {
214
+ icon: "i-lucide-copy",
215
+ color: "neutral",
216
+ variant: "ghost",
217
+ size: "xs",
218
+ "aria-label": "Copy access token",
219
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
220
+ }, null, _parent2, _scopeId));
221
+ _push2(`</div></div><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>Claude Code</div>`);
222
+ _push2(ssrRenderComponent(_component_CodeBlock, {
223
+ code: unref(claudeCodeSnippet),
224
+ lang: "sh"
225
+ }, null, _parent2, _scopeId));
226
+ _push2(`</div></div>`);
227
+ } else {
228
+ return [
229
+ createVNode("div", { class: "space-y-3 text-sm" }, [
230
+ createVNode("div", { class: "space-y-1" }, [
231
+ createVNode("div", { class: "text-muted" }, "MCP URL"),
232
+ createVNode("div", { class: "flex items-start gap-2" }, [
233
+ createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(mcpUrl)), 1),
234
+ createVNode(_component_UButton, {
235
+ icon: "i-lucide-copy",
236
+ color: "neutral",
237
+ variant: "ghost",
238
+ size: "xs",
239
+ "aria-label": "Copy MCP URL",
240
+ onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
241
+ }, null, 8, ["onClick"])
242
+ ])
243
+ ]),
244
+ createVNode("div", { class: "space-y-1" }, [
245
+ createVNode("div", { class: "text-muted" }, "Access token"),
246
+ createVNode("div", { class: "flex items-start gap-2" }, [
247
+ createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(__props.token), 1),
248
+ createVNode(_component_UButton, {
249
+ icon: "i-lucide-copy",
250
+ color: "neutral",
251
+ variant: "ghost",
252
+ size: "xs",
253
+ "aria-label": "Copy access token",
254
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
255
+ }, null, 8, ["onClick"])
256
+ ])
257
+ ]),
258
+ createVNode("div", { class: "space-y-1" }, [
259
+ createVNode("div", { class: "text-muted" }, "Claude Code"),
260
+ createVNode(_component_CodeBlock, {
261
+ code: unref(claudeCodeSnippet),
262
+ lang: "sh"
263
+ }, null, 8, ["code"])
264
+ ])
265
+ ])
266
+ ];
267
+ }
268
+ }),
269
+ _: 1
270
+ }, _parent));
271
+ };
272
+ }
273
+ });
162
274
  const _sfc_setup$2 = _sfc_main$2.setup;
163
275
  _sfc_main$2.setup = (props, ctx) => {
164
276
  const ssrContext = useSSRContext();
165
- (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopReporterCard.vue");
277
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopMcpCard.vue");
166
278
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
167
279
  };
168
- const __nuxt_component_4 = Object.assign(_sfc_main$2, { __name: "DesktopReporterCard" });
280
+ const __nuxt_component_5 = Object.assign(_sfc_main$2, { __name: "DesktopMcpCard" });
169
281
  const _sfc_main$1 = /* @__PURE__ */ defineComponent({
170
282
  __name: "DesktopServiceCard",
171
283
  __ssrInlineRender: true,
172
284
  setup(__props) {
173
- function tauriCore() {
174
- const g = globalThis;
175
- return g.__TAURI__?.core ?? null;
176
- }
177
285
  const toast = useToast();
178
286
  const loading = ref(true);
179
287
  const available = ref(false);
@@ -209,7 +317,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
209
317
  return (_ctx, _push, _parent, _attrs) => {
210
318
  const _component_SectionCard = __nuxt_component_11;
211
319
  const _component_UIcon = _sfc_main$p;
212
- const _component_USwitch = _sfc_main$3;
320
+ const _component_USwitch = _sfc_main$4;
213
321
  _push(ssrRenderComponent(_component_SectionCard, mergeProps({
214
322
  icon: "i-lucide-monitor-cog",
215
323
  title: "Desktop app"
@@ -622,4 +730,4 @@ _sfc_main.setup = (props, ctx) => {
622
730
  };
623
731
 
624
732
  export { _sfc_main as default };
625
- //# sourceMappingURL=about-TuEZ9n1Q.mjs.map
733
+ //# sourceMappingURL=about-CoJjvUwM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"about-CoJjvUwM.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/about-CoJjvUwM.js"],"names":["_sfc_main$4","_sfc_main$5","_sfc_main$6","_sfc_main$7"],"mappings":"","x_google_ignoreList":[0]}