@piwitests/server 0.16.0 → 0.18.0
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{Dz55UR7w.js → 36cXPVrY.js} +1 -1
- package/.output/public/_nuxt/{IFqRT_xJ.js → 87SGk1nu.js} +1 -1
- package/.output/public/_nuxt/{bAfTAihV.js → AjuKBlzz.js} +1 -1
- package/.output/public/_nuxt/{1AB111xL.js → B1CB30tg.js} +1 -1
- package/.output/public/_nuxt/{Br2K9yi_.js → B6IHiVa1.js} +1 -1
- package/.output/public/_nuxt/{iwD5atI2.js → B6rt3IcG.js} +1 -1
- package/.output/public/_nuxt/{Bvfmwzgw.js → BAaSmp8J.js} +1 -1
- package/.output/public/_nuxt/{DRtTLQri.js → BAkJhSAW.js} +1 -1
- package/.output/public/_nuxt/{DuBBqqbF.js → BCArQk0c.js} +1 -1
- package/.output/public/_nuxt/{BV83yObd.js → BEB2Mv6B.js} +1 -1
- package/.output/public/_nuxt/BFjmLXYo.js +8 -0
- package/.output/public/_nuxt/BJltXwHg.js +1 -0
- package/.output/public/_nuxt/{CuYYdFBL.js → BKaU95es.js} +1 -1
- package/.output/public/_nuxt/{2xvsvjLO.js → BReNbog6.js} +1 -1
- package/.output/public/_nuxt/{DJS3Bf50.js → BTYiG93l.js} +1 -1
- package/.output/public/_nuxt/{k-z_VVTK.js → BUMZHDRC.js} +1 -1
- package/.output/public/_nuxt/BVDBIVAQ.js +1 -0
- package/.output/public/_nuxt/{JCFZINev.js → B_aSGB8S.js} +1 -1
- package/.output/public/_nuxt/{e1zUTrBb.js → BaDv5D7A.js} +1 -1
- package/.output/public/_nuxt/{DjZKuUMz.js → BdHdHyop.js} +1 -1
- package/.output/public/_nuxt/{CJFqA_QW.js → BfoG8R5a.js} +1 -1
- package/.output/public/_nuxt/{CgoAUz76.js → Bi3i470l.js} +1 -1
- package/.output/public/_nuxt/Bi9DO8jm.js +1 -0
- package/.output/public/_nuxt/{BS0gKVuF.js → BiX7c2qU.js} +1 -1
- package/.output/public/_nuxt/{-KQO1A4C.js → BoC6qaRF.js} +4 -4
- package/.output/public/_nuxt/{CSYJwpXG.js → BsDB_eCd.js} +1 -1
- package/.output/public/_nuxt/{B43OGXzV.js → BuuvTH9e.js} +1 -1
- package/.output/public/_nuxt/{BRKa6EQR.js → C11lmBd4.js} +1 -1
- package/.output/public/_nuxt/C4AfzZER.js +47 -0
- package/.output/public/_nuxt/{BBdfPriC.js → C7ZVzS0K.js} +1 -1
- package/.output/public/_nuxt/{CQeMb57w.js → C8cz5feG.js} +1 -1
- package/.output/public/_nuxt/{Dzz9_Z0u.js → C9EpbPNU.js} +1 -1
- package/.output/public/_nuxt/{qzAP_nm7.js → C9ahP7km.js} +1 -1
- package/.output/public/_nuxt/{N3pCB6-m.js → CBEM3L1q.js} +1 -1
- package/.output/public/_nuxt/{C1K3r_fc.js → CCsl9MOZ.js} +1 -1
- package/.output/public/_nuxt/{BpceIssd.js → CCw3Tx4S.js} +1 -1
- package/.output/public/_nuxt/{B3NbDoBP.js → CGq9qR-0.js} +1 -1
- package/.output/public/_nuxt/{BoRFLTAO.js → CLdGRzLL.js} +1 -1
- package/.output/public/_nuxt/{BZekCf_x.js → CP0vUzbd.js} +1 -1
- package/.output/public/_nuxt/CPZ5wygb.js +1 -0
- package/.output/public/_nuxt/{CTdvGdc2.js → CRcjGmf7.js} +1 -1
- package/.output/public/_nuxt/{B2lYFco4.js → CRpbGS75.js} +1 -1
- package/.output/public/_nuxt/CTgM5Fke.js +2 -0
- package/.output/public/_nuxt/{DcCNnjKl.js → CU3W9YrI.js} +1 -1
- package/.output/public/_nuxt/{BIksQZfR.js → CUDeMcEK.js} +1 -1
- package/.output/public/_nuxt/{BpNqHxg2.js → CYIR2GbL.js} +1 -1
- package/.output/public/_nuxt/{ze9-Ill2.js → Ccit_CX1.js} +1 -1
- package/.output/public/_nuxt/CiPH-swI.js +1 -0
- package/.output/public/_nuxt/{BkDfdHFm.js → ClIKZ4qY.js} +1 -1
- package/.output/public/_nuxt/{BVW5qIDP.js → ClVRQpP_.js} +1 -1
- package/.output/public/_nuxt/CmbjAoQu.js +1 -0
- package/.output/public/_nuxt/Cx65B3c3.js +1 -0
- package/.output/public/_nuxt/{B3sNtVnf.js → D1ttGJfs.js} +1 -1
- package/.output/public/_nuxt/{DuMv-ugy.js → D3MWm6JP.js} +1 -1
- package/.output/public/_nuxt/{BPKwYP2Q.js → D3SYPlEB.js} +28 -28
- package/.output/public/_nuxt/{BGYbnqA7.js → D4SFgXAf.js} +1 -1
- package/.output/public/_nuxt/D51_cB9D.js +1 -0
- package/.output/public/_nuxt/{DbeHHTk-.js → D8YZvjas.js} +1 -1
- package/.output/public/_nuxt/{DgYM3eyi.js → DB3ljns7.js} +1 -1
- package/.output/public/_nuxt/{Bzl2H_vl.js → DC51KKt4.js} +1 -1
- package/.output/public/_nuxt/{BR9H8k-L.js → DCMFuzDI.js} +1 -1
- package/.output/public/_nuxt/{mfzslNx_.js → DIA_NAIv.js} +1 -1
- package/.output/public/_nuxt/{CKB_doYB.js → DM_YaJgJ.js} +1 -1
- package/.output/public/_nuxt/{BuZOa2M3.js → DOr_4nln.js} +2 -2
- package/.output/public/_nuxt/{oNq5pd3r.js → DRE6Aqqp.js} +1 -1
- package/.output/public/_nuxt/{CMYQpoOI.js → DVgMaBxD.js} +1 -1
- package/.output/public/_nuxt/{C3r_Sv1p.js → DaewB_zT.js} +1 -1
- package/.output/public/_nuxt/{DdbrJwT-.js → Db_-yjYg.js} +1 -1
- package/.output/public/_nuxt/{CpO-ABDW.js → Dbg8z684.js} +1 -1
- package/.output/public/_nuxt/{DOuoR2Pk.js → DcfRfTaA.js} +1 -1
- package/.output/public/_nuxt/{BpIsBP5g.js → Dm1_3W9g.js} +1 -1
- package/.output/public/_nuxt/{ABGJk0pu.js → DnThe2U0.js} +1 -1
- package/.output/public/_nuxt/{C38aZbFJ.js → Do6zIWQf.js} +1 -1
- package/.output/public/_nuxt/{B7yG1G_l.js → DoFSKAvY.js} +1 -1
- package/.output/public/_nuxt/{C8RBRg7I.js → DoYgYLOd.js} +1 -1
- package/.output/public/_nuxt/{BIf1R_fu.js → Doul3p1_.js} +1 -1
- package/.output/public/_nuxt/{BQrSEuzu.js → DraETso1.js} +1 -1
- package/.output/public/_nuxt/{DszOHBMG.js → Dwp3GkV-.js} +1 -1
- package/.output/public/_nuxt/{DqnyWaSQ.js → Dy4TloG3.js} +1 -1
- package/.output/public/_nuxt/{DfcAIbcX.js → EltzgiyS.js} +1 -1
- package/.output/public/_nuxt/{D2jhe9JK.js → HTQtMbWb.js} +1 -1
- package/.output/public/_nuxt/{xUrLy-Zn.js → KYucVFu7.js} +1 -1
- package/.output/public/_nuxt/TBDx0s9p.js +3 -0
- package/.output/public/_nuxt/{BdFEUAlx.js → Tt5LX5Y-.js} +1 -1
- package/.output/public/_nuxt/{d5ZB3uxF.js → Vnfkr1pJ.js} +1 -1
- package/.output/public/_nuxt/{DIkLLyR6.js → WAaPPk0g.js} +2 -2
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/ed1db2e5-9865-4231-9605-4edd5272e164.json +1 -0
- package/.output/public/_nuxt/{DhA17dqR.js → empGC_x-.js} +1 -1
- package/.output/public/_nuxt/entry.ChQMshd4.css +1 -0
- package/.output/public/_nuxt/{nCjfWTGm.js → l0QnzFNM.js} +1 -1
- package/.output/public/_nuxt/{l0gdGdar.js → lowCGL2S.js} +1 -1
- package/.output/public/_nuxt/{DL20rwkA.js → mlAADjK3.js} +1 -1
- package/.output/public/_nuxt/{D33On6AX.js → n-QWmQgc.js} +1 -1
- package/.output/public/_nuxt/{CoHGrO41.js → oFIS9u6t.js} +2 -2
- package/.output/public/_nuxt/{BY4oA2IH.js → oWY3I9uX.js} +1 -1
- package/.output/public/_nuxt/{D4VpoHDP.js → q0DPzLKN.js} +1 -1
- package/.output/public/_nuxt/{uKeO2H7F.js → quV6tp4n.js} +1 -1
- package/.output/public/_nuxt/{B33X4zrC.js → riEUDnED.js} +1 -1
- package/.output/public/_nuxt/{mGJLLqyN.js → rm7OkgDG.js} +1 -1
- package/.output/public/_nuxt/uaqMzXqE.js +5 -0
- package/.output/public/_nuxt/{DAWn6Z7h.js → va1mwSm9.js} +1 -1
- package/.output/public/_nuxt/{DCpmQ47_.js → wGpfdK6o.js} +1 -1
- package/.output/public/_nuxt/{Bb64FEFL.js → wQZj69OY.js} +1 -1
- package/.output/public/_nuxt/wgcgHmRR.js +1 -0
- package/.output/public/sw.js +1 -1
- package/.output/server/chunks/build/{Checkbox-7ZiMz60w.mjs → Checkbox-cVOSIY93.mjs} +2 -2
- package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +1 -0
- package/.output/server/chunks/build/{CiEnvCard-DNxBVvx4.mjs → CiEnvCard-DXPOhdSG.mjs} +2 -2
- package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +1 -0
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs +102 -0
- package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +1 -0
- package/.output/server/chunks/build/{ProjectTestCasesTable-9418EI8J.mjs → ProjectTestCasesTable-9Ia825h8.mjs} +2 -2
- package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +1 -0
- package/.output/server/chunks/build/{Select-COwTIQlV.mjs → Select-ppPz926C.mjs} +3 -2
- package/.output/server/chunks/build/Select-ppPz926C.mjs.map +1 -0
- package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs → SelectMenu-799c_Ils.mjs} +2 -2
- package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs.map → SelectMenu-799c_Ils.mjs.map} +1 -1
- package/.output/server/chunks/build/{Switch-htSKgC38.mjs → Switch-xQQ3_ME1.mjs} +2 -2
- package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs → _id_-B2yirIuA.mjs} +5 -4
- package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs.map → _id_-B2yirIuA.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs → _id_-B4V5fop6.mjs} +5 -4
- package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs.map → _id_-B4V5fop6.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs → _id_-bWcP2xFl.mjs} +8 -7
- package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs.map → _id_-bWcP2xFl.mjs.map} +1 -1
- package/.output/server/chunks/build/about-CoJjvUwM.mjs +733 -0
- package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +1 -0
- package/.output/server/chunks/build/{ai-V3YOh3yx.mjs → ai-7jdaPOmj.mjs} +6 -5
- package/.output/server/chunks/build/{ai-V3YOh3yx.mjs.map → ai-7jdaPOmj.mjs.map} +1 -1
- package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs → analytics-B276WPeU.mjs} +7 -6
- package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs.map → analytics-B276WPeU.mjs.map} +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{default-BfMirIgG.mjs → default-BSzdkM_L.mjs} +9 -7
- package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +1 -0
- package/.output/server/chunks/build/{docs-DtNcJCyb.mjs → docs-BN_x1OW3.mjs} +53 -8
- package/.output/server/chunks/build/{docs-DtNcJCyb.mjs.map → docs-BN_x1OW3.mjs.map} +1 -1
- package/.output/server/chunks/build/{edit-Dsf11mL5.mjs → edit-C9Z7oZeu.mjs} +5 -4
- package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +1 -0
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs +13 -0
- package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs.map +1 -0
- package/.output/server/chunks/build/{index-DzEgjHlB.mjs → index-BK9PTRpd.mjs} +24 -8
- package/.output/server/chunks/build/{index-DzEgjHlB.mjs.map → index-BK9PTRpd.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-BgpEKTSq.mjs → index-DVUtBexc.mjs} +9 -8
- package/.output/server/chunks/build/{index-BgpEKTSq.mjs.map → index-DVUtBexc.mjs.map} +1 -1
- package/.output/server/chunks/build/{mcp-CXwa3xU3.mjs → mcp-_o6cMS6m.mjs} +347 -158
- package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +1 -0
- package/.output/server/chunks/build/{notifications-hJj8tbAT.mjs → notifications-Dzm9c0u_.mjs} +4 -3
- package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +17 -17
- package/.output/server/chunks/build/{settings-metadata-Cp0dx0vm.mjs → settings-metadata-B0wo5R-W.mjs} +3 -1
- package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-Ci_7EXYQ.mjs → settings-pNyPBXVa.mjs} +4 -3
- package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +1 -0
- package/.output/server/chunks/build/{storage-CM-Pd-9E.mjs → storage-XelzuyPy.mjs} +16 -182
- package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +1 -0
- package/.output/server/chunks/build/{test-cases-DkGQB027.mjs → test-cases-pmOxi-AN.mjs} +5 -4
- package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +1 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs +9 -0
- package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +1 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs +9 -0
- package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs.map +1 -0
- package/.output/server/chunks/build/{useSettingsNav-D2knPCqF.mjs → useSettingsNav-NjI2seBy.mjs} +5 -3
- package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +1 -0
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +7 -0
- package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +1 -0
- package/.output/server/chunks/build/{virtualizer-0-UBy7xl.mjs → virtualizer-ZaqK4guJ.mjs} +3 -2
- package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +1 -0
- package/.output/server/chunks/build/{wasted-time-L4kBV5Nh.mjs → wasted-time-CguAF9zc.mjs} +2 -2
- package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +664 -649
- package/.output/server/package.json +1 -1
- package/package.json +1 -1
- package/.output/public/_nuxt/B6Jp7fpa.js +0 -46
- package/.output/public/_nuxt/BP_SWi7S.js +0 -1
- package/.output/public/_nuxt/Bf62wdzp.js +0 -1
- package/.output/public/_nuxt/C219JuBV.js +0 -1
- package/.output/public/_nuxt/CCRRqXez.js +0 -1
- package/.output/public/_nuxt/CX1dcT4v.js +0 -1
- package/.output/public/_nuxt/CdME81ij.js +0 -2
- package/.output/public/_nuxt/Dsk4Ic18.js +0 -7
- package/.output/public/_nuxt/HoKG9cc2.js +0 -1
- package/.output/public/_nuxt/Kc7La4sL.js +0 -5
- package/.output/public/_nuxt/WctJXszi.js +0 -3
- package/.output/public/_nuxt/builds/meta/5182c9fb-56a6-4df2-9685-4020a08ce7a5.json +0 -1
- package/.output/public/_nuxt/entry.BsmKRJzR.css +0 -1
- package/.output/public/_nuxt/jIF87ALb.js +0 -1
- package/.output/server/chunks/build/Checkbox-7ZiMz60w.mjs.map +0 -1
- package/.output/server/chunks/build/CiEnvCard-DNxBVvx4.mjs.map +0 -1
- package/.output/server/chunks/build/ProjectTestCasesTable-9418EI8J.mjs.map +0 -1
- package/.output/server/chunks/build/Select-COwTIQlV.mjs.map +0 -1
- package/.output/server/chunks/build/Switch-htSKgC38.mjs.map +0 -1
- package/.output/server/chunks/build/about-FB9PYAHK.mjs +0 -313
- package/.output/server/chunks/build/about-FB9PYAHK.mjs.map +0 -1
- package/.output/server/chunks/build/default-BfMirIgG.mjs.map +0 -1
- package/.output/server/chunks/build/edit-Dsf11mL5.mjs.map +0 -1
- package/.output/server/chunks/build/mcp-CXwa3xU3.mjs.map +0 -1
- package/.output/server/chunks/build/notifications-hJj8tbAT.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Ci_7EXYQ.mjs.map +0 -1
- package/.output/server/chunks/build/settings-metadata-Cp0dx0vm.mjs.map +0 -1
- package/.output/server/chunks/build/storage-CM-Pd-9E.mjs.map +0 -1
- package/.output/server/chunks/build/test-cases-DkGQB027.mjs.map +0 -1
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs +0 -19
- package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs.map +0 -1
- package/.output/server/chunks/build/useSettingsNav-D2knPCqF.mjs.map +0 -1
- package/.output/server/chunks/build/virtualizer-0-UBy7xl.mjs.map +0 -1
- package/.output/server/chunks/build/wasted-time-L4kBV5Nh.mjs.map +0 -1
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { _ as _sfc_main$1, a as _sfc_main$4 } from './DashboardNavbar-Bdp-OwTN.mjs';
|
|
2
2
|
import { _ as _sfc_main$2 } from './Alert-Bp1Wz_sq.mjs';
|
|
3
3
|
import { _ as __nuxt_component_11 } from './SectionCard-COd9TuDq.mjs';
|
|
4
|
-
import { l as useHead,
|
|
4
|
+
import { l as useHead, m as _sfc_main$k, o as _sfc_main$p, r as useRuntimeConfig, L as useRequestEvent } from './server.mjs';
|
|
5
5
|
import { _ as _sfc_main$3 } from './Tabs-BV9XqjoO.mjs';
|
|
6
6
|
import { _ as __nuxt_component_5 } from './CodeBlock-BGwNmJ8J.mjs';
|
|
7
|
-
import { defineComponent, computed, withCtx, unref, createVNode, openBlock, createBlock,
|
|
8
|
-
import { ssrRenderComponent,
|
|
7
|
+
import { defineComponent, withAsyncContext, computed, withCtx, unref, createVNode, createTextVNode, openBlock, createBlock, toDisplayString, createCommentVNode, Fragment, renderList, useSSRContext } from 'vue';
|
|
8
|
+
import { ssrRenderComponent, ssrInterpolate, ssrRenderList } from 'vue/server-renderer';
|
|
9
9
|
import { df as MCP_TOOL_DEFS, dg as getRequestURL } from '../nitro/nitro.mjs';
|
|
10
|
+
import { u as useIsDesktop } from './useIsDesktop-BS13spVj.mjs';
|
|
11
|
+
import { u as useCopy } from './useCopy-BQQKcwlq.mjs';
|
|
12
|
+
import { u as useFetch } from './fetch-8kznMtBM.mjs';
|
|
10
13
|
import './DashboardSidebarToggle-Ji6ADuqF.mjs';
|
|
11
14
|
import './Card-BQP_oZkQ.mjs';
|
|
12
15
|
import './HelpHint-YEMWtKu1.mjs';
|
|
13
16
|
import './help-content-DmFnuhNu.mjs';
|
|
14
|
-
import './useCopy-BQQKcwlq.mjs';
|
|
15
17
|
import 'vue-router';
|
|
16
18
|
import '@iconify/vue';
|
|
17
19
|
import 'tailwindcss/colors';
|
|
@@ -64,21 +66,36 @@ import 'highlight.js/lib/languages/javascript';
|
|
|
64
66
|
import 'highlight.js/lib/languages/bash';
|
|
65
67
|
import 'highlight.js/lib/languages/json';
|
|
66
68
|
import 'highlight.js/lib/languages/diff';
|
|
69
|
+
import '@vue/shared';
|
|
67
70
|
|
|
68
71
|
function useRequestURL(opts) {
|
|
69
72
|
{
|
|
70
73
|
return getRequestURL(useRequestEvent(), opts);
|
|
71
74
|
}
|
|
72
75
|
}
|
|
76
|
+
const apiKeyPlaceholder = "pd_YOUR_API_KEY";
|
|
73
77
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
74
78
|
__name: "mcp",
|
|
75
79
|
__ssrInlineRender: true,
|
|
76
|
-
setup(__props) {
|
|
80
|
+
async setup(__props) {
|
|
81
|
+
let __temp, __restore;
|
|
77
82
|
const config = useRuntimeConfig();
|
|
78
83
|
const isDemo = config.public.demoMode;
|
|
84
|
+
const isDesktop = useIsDesktop();
|
|
85
|
+
const { copy } = useCopy();
|
|
86
|
+
const { data: reporterConfig } = ([__temp, __restore] = withAsyncContext(() => useFetch(
|
|
87
|
+
"/api/desktop/reporter-config",
|
|
88
|
+
{
|
|
89
|
+
immediate: isDesktop,
|
|
90
|
+
default: () => null
|
|
91
|
+
},
|
|
92
|
+
"$fdl6kilREP"
|
|
93
|
+
/* nuxt-injected */
|
|
94
|
+
)), __temp = await __temp, __restore(), __temp);
|
|
95
|
+
const bearerToken = computed(() => reporterConfig.value?.token ?? apiKeyPlaceholder);
|
|
79
96
|
const requestUrl = useRequestURL();
|
|
80
97
|
const mcpUrl = computed(() => {
|
|
81
|
-
const base = config.public.siteUrl
|
|
98
|
+
const base = reporterConfig.value?.url ?? config.public.siteUrl ?? requestUrl.origin;
|
|
82
99
|
return `${base}/mcp`;
|
|
83
100
|
});
|
|
84
101
|
useHead({ title: "MCP server — Piwi Dashboard" });
|
|
@@ -93,7 +110,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
93
110
|
];
|
|
94
111
|
const claudeCodeSnippet = computed(
|
|
95
112
|
() => `claude mcp add --transport http piwi ${mcpUrl.value} \\
|
|
96
|
-
--header "Authorization: Bearer
|
|
113
|
+
--header "Authorization: Bearer ${bearerToken.value}"`
|
|
97
114
|
);
|
|
98
115
|
const cursorSnippet = computed(
|
|
99
116
|
() => JSON.stringify(
|
|
@@ -101,7 +118,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
101
118
|
mcpServers: {
|
|
102
119
|
piwi: {
|
|
103
120
|
url: mcpUrl.value,
|
|
104
|
-
headers: { Authorization:
|
|
121
|
+
headers: { Authorization: `Bearer ${bearerToken.value}` }
|
|
105
122
|
}
|
|
106
123
|
}
|
|
107
124
|
},
|
|
@@ -116,7 +133,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
116
133
|
piwi: {
|
|
117
134
|
type: "http",
|
|
118
135
|
url: mcpUrl.value,
|
|
119
|
-
headers: { Authorization:
|
|
136
|
+
headers: { Authorization: `Bearer ${bearerToken.value}` }
|
|
120
137
|
}
|
|
121
138
|
}
|
|
122
139
|
},
|
|
@@ -131,7 +148,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
131
148
|
piwi: {
|
|
132
149
|
type: "http",
|
|
133
150
|
url: mcpUrl.value,
|
|
134
|
-
headers: { Authorization:
|
|
151
|
+
headers: { Authorization: `Bearer ${bearerToken.value}` }
|
|
135
152
|
}
|
|
136
153
|
}
|
|
137
154
|
},
|
|
@@ -141,7 +158,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
141
158
|
);
|
|
142
159
|
const geminiSnippet = computed(
|
|
143
160
|
() => `gemini mcp add --transport http piwi ${mcpUrl.value} \\
|
|
144
|
-
--header "Authorization: Bearer
|
|
161
|
+
--header "Authorization: Bearer ${bearerToken.value}"`
|
|
145
162
|
);
|
|
146
163
|
const windsurfSnippet = computed(
|
|
147
164
|
() => JSON.stringify(
|
|
@@ -149,7 +166,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
149
166
|
mcpServers: {
|
|
150
167
|
piwi: {
|
|
151
168
|
serverUrl: mcpUrl.value,
|
|
152
|
-
headers: { Authorization:
|
|
169
|
+
headers: { Authorization: `Bearer ${bearerToken.value}` }
|
|
153
170
|
}
|
|
154
171
|
}
|
|
155
172
|
},
|
|
@@ -162,10 +179,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
162
179
|
const _component_UDashboardNavbar = _sfc_main$4;
|
|
163
180
|
const _component_UAlert = _sfc_main$2;
|
|
164
181
|
const _component_SectionCard = __nuxt_component_11;
|
|
165
|
-
const
|
|
182
|
+
const _component_UButton = _sfc_main$k;
|
|
166
183
|
const _component_UTabs = _sfc_main$3;
|
|
167
184
|
const _component_CodeBlock = __nuxt_component_5;
|
|
168
|
-
const
|
|
185
|
+
const _component_UIcon = _sfc_main$p;
|
|
169
186
|
_push(ssrRenderComponent(_component_UDashboardPanel, _attrs, {
|
|
170
187
|
header: withCtx((_, _push2, _parent2, _scopeId) => {
|
|
171
188
|
if (_push2) {
|
|
@@ -189,81 +206,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
189
206
|
} else {
|
|
190
207
|
_push2(`<!---->`);
|
|
191
208
|
}
|
|
192
|
-
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
193
|
-
icon: "i-lucide-bot",
|
|
194
|
-
title: "What it provides",
|
|
195
|
-
help: "mcp.tools"
|
|
196
|
-
}, {
|
|
197
|
-
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
198
|
-
if (_push3) {
|
|
199
|
-
_push3(`<div class="flex flex-col gap-1.5"${_scopeId2}><!--[-->`);
|
|
200
|
-
ssrRenderList(unref(tools), (t) => {
|
|
201
|
-
_push3(`<div class="flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"${_scopeId2}>`);
|
|
202
|
-
_push3(ssrRenderComponent(_component_UIcon, {
|
|
203
|
-
name: "i-lucide-wrench",
|
|
204
|
-
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
205
|
-
}, null, _parent3, _scopeId2));
|
|
206
|
-
_push3(`<div class="min-w-0"${_scopeId2}><p class="text-sm font-mono font-semibold text-foreground"${_scopeId2}>${ssrInterpolate(t.name)}</p><p class="text-xs text-gray-500 dark:text-gray-400 mt-0.5"${_scopeId2}>${ssrInterpolate(t.description)}</p></div></div>`);
|
|
207
|
-
});
|
|
208
|
-
_push3(`<!--]--></div>`);
|
|
209
|
-
} else {
|
|
210
|
-
return [
|
|
211
|
-
createVNode("div", { class: "flex flex-col gap-1.5" }, [
|
|
212
|
-
(openBlock(true), createBlock(Fragment, null, renderList(unref(tools), (t) => {
|
|
213
|
-
return openBlock(), createBlock("div", {
|
|
214
|
-
key: t.name,
|
|
215
|
-
class: "flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"
|
|
216
|
-
}, [
|
|
217
|
-
createVNode(_component_UIcon, {
|
|
218
|
-
name: "i-lucide-wrench",
|
|
219
|
-
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
220
|
-
}),
|
|
221
|
-
createVNode("div", { class: "min-w-0" }, [
|
|
222
|
-
createVNode("p", { class: "text-sm font-mono font-semibold text-foreground" }, toDisplayString(t.name), 1),
|
|
223
|
-
createVNode("p", { class: "text-xs text-gray-500 dark:text-gray-400 mt-0.5" }, toDisplayString(t.description), 1)
|
|
224
|
-
])
|
|
225
|
-
]);
|
|
226
|
-
}), 128))
|
|
227
|
-
])
|
|
228
|
-
];
|
|
229
|
-
}
|
|
230
|
-
}),
|
|
231
|
-
_: 1
|
|
232
|
-
}, _parent2, _scopeId));
|
|
233
|
-
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
234
|
-
icon: "i-lucide-key",
|
|
235
|
-
title: "Authentication",
|
|
236
|
-
help: "mcp.auth"
|
|
237
|
-
}, {
|
|
238
|
-
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
239
|
-
if (_push3) {
|
|
240
|
-
_push3(`<div class="space-y-3 text-sm text-gray-600 dark:text-gray-400"${_scopeId2}><p${_scopeId2}> MCP requests are authenticated with the same API keys used by the REST API. API keys start with <code class="px-1 py-0.5 bg-muted rounded text-xs font-mono"${_scopeId2}>pd_</code>. </p><p${_scopeId2}> Generate a key in <strong${_scopeId2}>Settings → Users → [your account] → API keys</strong>, then replace <code class="px-1 py-0.5 bg-muted rounded text-xs font-mono"${_scopeId2}>pd_YOUR_API_KEY</code> in the snippets below. </p><p class="text-xs text-gray-400"${_scopeId2}> When authentication is disabled (<code class="font-mono"${_scopeId2}>PIWI_AUTH_ENABLED</code> not set), any request is accepted without a key. </p></div>`);
|
|
241
|
-
} else {
|
|
242
|
-
return [
|
|
243
|
-
createVNode("div", { class: "space-y-3 text-sm text-gray-600 dark:text-gray-400" }, [
|
|
244
|
-
createVNode("p", null, [
|
|
245
|
-
createTextVNode(" MCP requests are authenticated with the same API keys used by the REST API. API keys start with "),
|
|
246
|
-
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_"),
|
|
247
|
-
createTextVNode(". ")
|
|
248
|
-
]),
|
|
249
|
-
createVNode("p", null, [
|
|
250
|
-
createTextVNode(" Generate a key in "),
|
|
251
|
-
createVNode("strong", null, "Settings → Users → [your account] → API keys"),
|
|
252
|
-
createTextVNode(", then replace "),
|
|
253
|
-
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
254
|
-
createTextVNode(" in the snippets below. ")
|
|
255
|
-
]),
|
|
256
|
-
createVNode("p", { class: "text-xs text-gray-400" }, [
|
|
257
|
-
createTextVNode(" When authentication is disabled ("),
|
|
258
|
-
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
259
|
-
createTextVNode(" not set), any request is accepted without a key. ")
|
|
260
|
-
])
|
|
261
|
-
])
|
|
262
|
-
];
|
|
263
|
-
}
|
|
264
|
-
}),
|
|
265
|
-
_: 1
|
|
266
|
-
}, _parent2, _scopeId));
|
|
267
209
|
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
268
210
|
icon: "i-lucide-settings-2",
|
|
269
211
|
title: "Client setup",
|
|
@@ -271,7 +213,36 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
271
213
|
}, {
|
|
272
214
|
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
273
215
|
if (_push3) {
|
|
274
|
-
|
|
216
|
+
if (unref(reporterConfig)) {
|
|
217
|
+
_push3(`<div class="mb-4 space-y-3 rounded-md border border-default bg-elevated/50 p-3"${_scopeId2}><div class="space-y-1"${_scopeId2}><div class="text-xs text-muted"${_scopeId2}>MCP URL</div><div class="flex items-start gap-2"${_scopeId2}><code class="text-xs break-all flex-1"${_scopeId2}>${ssrInterpolate(unref(mcpUrl))}</code>`);
|
|
218
|
+
_push3(ssrRenderComponent(_component_UButton, {
|
|
219
|
+
icon: "i-lucide-copy",
|
|
220
|
+
color: "neutral",
|
|
221
|
+
variant: "ghost",
|
|
222
|
+
size: "xs",
|
|
223
|
+
"aria-label": "Copy MCP URL",
|
|
224
|
+
onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
|
|
225
|
+
}, null, _parent3, _scopeId2));
|
|
226
|
+
_push3(`</div></div><div class="space-y-1"${_scopeId2}><div class="text-xs text-muted"${_scopeId2}>Access token</div><div class="flex items-start gap-2"${_scopeId2}><code class="text-xs break-all flex-1"${_scopeId2}>${ssrInterpolate(unref(bearerToken))}</code>`);
|
|
227
|
+
_push3(ssrRenderComponent(_component_UButton, {
|
|
228
|
+
icon: "i-lucide-copy",
|
|
229
|
+
color: "neutral",
|
|
230
|
+
variant: "ghost",
|
|
231
|
+
size: "xs",
|
|
232
|
+
"aria-label": "Copy access token",
|
|
233
|
+
onClick: ($event) => unref(copy)(unref(bearerToken), { toast: true })
|
|
234
|
+
}, null, _parent3, _scopeId2));
|
|
235
|
+
_push3(`</div></div><p class="text-xs text-muted"${_scopeId2}> This app authenticates with a local access token even though sign-in is off — it is the <code class="font-mono"${_scopeId2}>Bearer</code> value, already filled into the snippets below. </p></div>`);
|
|
236
|
+
} else {
|
|
237
|
+
_push3(`<!---->`);
|
|
238
|
+
}
|
|
239
|
+
_push3(`<p class="text-sm text-gray-500 dark:text-gray-400 mb-4"${_scopeId2}>`);
|
|
240
|
+
if (unref(reporterConfig)) {
|
|
241
|
+
_push3(`<!--[-->Pick your client below — the URL and access token above are already baked into each snippet.<!--]-->`);
|
|
242
|
+
} else {
|
|
243
|
+
_push3(`<!--[-->Replace <code class="px-1 py-0.5 bg-muted rounded text-xs font-mono"${_scopeId2}>pd_YOUR_API_KEY</code> with your actual API key. The MCP URL shown in the snippets is auto-detected from your current browser origin.<!--]-->`);
|
|
244
|
+
}
|
|
245
|
+
_push3(`</p>`);
|
|
275
246
|
_push3(ssrRenderComponent(_component_UTabs, {
|
|
276
247
|
items: clientItems,
|
|
277
248
|
ui: { list: "mb-4" }
|
|
@@ -439,10 +410,52 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
439
410
|
}, _parent3, _scopeId2));
|
|
440
411
|
} else {
|
|
441
412
|
return [
|
|
413
|
+
unref(reporterConfig) ? (openBlock(), createBlock("div", {
|
|
414
|
+
key: 0,
|
|
415
|
+
class: "mb-4 space-y-3 rounded-md border border-default bg-elevated/50 p-3"
|
|
416
|
+
}, [
|
|
417
|
+
createVNode("div", { class: "space-y-1" }, [
|
|
418
|
+
createVNode("div", { class: "text-xs text-muted" }, "MCP URL"),
|
|
419
|
+
createVNode("div", { class: "flex items-start gap-2" }, [
|
|
420
|
+
createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(mcpUrl)), 1),
|
|
421
|
+
createVNode(_component_UButton, {
|
|
422
|
+
icon: "i-lucide-copy",
|
|
423
|
+
color: "neutral",
|
|
424
|
+
variant: "ghost",
|
|
425
|
+
size: "xs",
|
|
426
|
+
"aria-label": "Copy MCP URL",
|
|
427
|
+
onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
|
|
428
|
+
}, null, 8, ["onClick"])
|
|
429
|
+
])
|
|
430
|
+
]),
|
|
431
|
+
createVNode("div", { class: "space-y-1" }, [
|
|
432
|
+
createVNode("div", { class: "text-xs text-muted" }, "Access token"),
|
|
433
|
+
createVNode("div", { class: "flex items-start gap-2" }, [
|
|
434
|
+
createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(bearerToken)), 1),
|
|
435
|
+
createVNode(_component_UButton, {
|
|
436
|
+
icon: "i-lucide-copy",
|
|
437
|
+
color: "neutral",
|
|
438
|
+
variant: "ghost",
|
|
439
|
+
size: "xs",
|
|
440
|
+
"aria-label": "Copy access token",
|
|
441
|
+
onClick: ($event) => unref(copy)(unref(bearerToken), { toast: true })
|
|
442
|
+
}, null, 8, ["onClick"])
|
|
443
|
+
])
|
|
444
|
+
]),
|
|
445
|
+
createVNode("p", { class: "text-xs text-muted" }, [
|
|
446
|
+
createTextVNode(" This app authenticates with a local access token even though sign-in is off — it is the "),
|
|
447
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
448
|
+
createTextVNode(" value, already filled into the snippets below. ")
|
|
449
|
+
])
|
|
450
|
+
])) : createCommentVNode("", true),
|
|
442
451
|
createVNode("p", { class: "text-sm text-gray-500 dark:text-gray-400 mb-4" }, [
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
452
|
+
unref(reporterConfig) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
453
|
+
createTextVNode("Pick your client below — the URL and access token above are already baked into each snippet.")
|
|
454
|
+
], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
|
|
455
|
+
createTextVNode("Replace "),
|
|
456
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
457
|
+
createTextVNode(" with your actual API key. The MCP URL shown in the snippets is auto-detected from your current browser origin.")
|
|
458
|
+
], 64))
|
|
446
459
|
]),
|
|
447
460
|
createVNode(_component_UTabs, {
|
|
448
461
|
items: clientItems,
|
|
@@ -548,6 +561,106 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
548
561
|
}),
|
|
549
562
|
_: 1
|
|
550
563
|
}, _parent2, _scopeId));
|
|
564
|
+
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
565
|
+
icon: "i-lucide-bot",
|
|
566
|
+
title: "What it provides",
|
|
567
|
+
help: "mcp.tools"
|
|
568
|
+
}, {
|
|
569
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
570
|
+
if (_push3) {
|
|
571
|
+
_push3(`<div class="flex flex-col gap-1.5"${_scopeId2}><!--[-->`);
|
|
572
|
+
ssrRenderList(unref(tools), (t) => {
|
|
573
|
+
_push3(`<div class="flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"${_scopeId2}>`);
|
|
574
|
+
_push3(ssrRenderComponent(_component_UIcon, {
|
|
575
|
+
name: "i-lucide-wrench",
|
|
576
|
+
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
577
|
+
}, null, _parent3, _scopeId2));
|
|
578
|
+
_push3(`<div class="min-w-0"${_scopeId2}><p class="text-sm font-mono font-semibold text-foreground"${_scopeId2}>${ssrInterpolate(t.name)}</p><p class="text-xs text-gray-500 dark:text-gray-400 mt-0.5"${_scopeId2}>${ssrInterpolate(t.description)}</p></div></div>`);
|
|
579
|
+
});
|
|
580
|
+
_push3(`<!--]--></div>`);
|
|
581
|
+
} else {
|
|
582
|
+
return [
|
|
583
|
+
createVNode("div", { class: "flex flex-col gap-1.5" }, [
|
|
584
|
+
(openBlock(true), createBlock(Fragment, null, renderList(unref(tools), (t) => {
|
|
585
|
+
return openBlock(), createBlock("div", {
|
|
586
|
+
key: t.name,
|
|
587
|
+
class: "flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"
|
|
588
|
+
}, [
|
|
589
|
+
createVNode(_component_UIcon, {
|
|
590
|
+
name: "i-lucide-wrench",
|
|
591
|
+
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
592
|
+
}),
|
|
593
|
+
createVNode("div", { class: "min-w-0" }, [
|
|
594
|
+
createVNode("p", { class: "text-sm font-mono font-semibold text-foreground" }, toDisplayString(t.name), 1),
|
|
595
|
+
createVNode("p", { class: "text-xs text-gray-500 dark:text-gray-400 mt-0.5" }, toDisplayString(t.description), 1)
|
|
596
|
+
])
|
|
597
|
+
]);
|
|
598
|
+
}), 128))
|
|
599
|
+
])
|
|
600
|
+
];
|
|
601
|
+
}
|
|
602
|
+
}),
|
|
603
|
+
_: 1
|
|
604
|
+
}, _parent2, _scopeId));
|
|
605
|
+
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
606
|
+
icon: "i-lucide-key",
|
|
607
|
+
title: "Authentication",
|
|
608
|
+
help: "mcp.auth"
|
|
609
|
+
}, {
|
|
610
|
+
default: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
611
|
+
if (_push3) {
|
|
612
|
+
_push3(`<div class="space-y-3 text-sm text-gray-600 dark:text-gray-400"${_scopeId2}><p${_scopeId2}> MCP requests are authenticated with the same API keys used by the REST API. API keys start with <code class="px-1 py-0.5 bg-muted rounded text-xs font-mono"${_scopeId2}>pd_</code>. </p>`);
|
|
613
|
+
if (!unref(isDesktop)) {
|
|
614
|
+
_push3(`<p${_scopeId2}> Generate a key in <strong${_scopeId2}>Settings → Users → [your account] → API keys</strong>, then replace <code class="px-1 py-0.5 bg-muted rounded text-xs font-mono"${_scopeId2}>pd_YOUR_API_KEY</code> in the snippets above. </p>`);
|
|
615
|
+
} else {
|
|
616
|
+
_push3(`<p${_scopeId2}> This app provides a local access token automatically — shown in <strong${_scopeId2}>Client setup</strong> above and already filled into every snippet, so there is nothing to replace. </p>`);
|
|
617
|
+
}
|
|
618
|
+
if (!unref(isDesktop)) {
|
|
619
|
+
_push3(`<p class="text-xs text-gray-400"${_scopeId2}> When authentication is disabled (<code class="font-mono"${_scopeId2}>PIWI_AUTH_ENABLED</code> not set), any request is accepted without a key. </p>`);
|
|
620
|
+
} else {
|
|
621
|
+
_push3(`<p class="text-xs text-gray-400"${_scopeId2}> This desktop app keeps sign-in off but still requires its own local access token on every request — it is the <code class="font-mono"${_scopeId2}>Bearer</code> value. The endpoint is not open. </p>`);
|
|
622
|
+
}
|
|
623
|
+
_push3(`</div>`);
|
|
624
|
+
} else {
|
|
625
|
+
return [
|
|
626
|
+
createVNode("div", { class: "space-y-3 text-sm text-gray-600 dark:text-gray-400" }, [
|
|
627
|
+
createVNode("p", null, [
|
|
628
|
+
createTextVNode(" MCP requests are authenticated with the same API keys used by the REST API. API keys start with "),
|
|
629
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_"),
|
|
630
|
+
createTextVNode(". ")
|
|
631
|
+
]),
|
|
632
|
+
!unref(isDesktop) ? (openBlock(), createBlock("p", { key: 0 }, [
|
|
633
|
+
createTextVNode(" Generate a key in "),
|
|
634
|
+
createVNode("strong", null, "Settings → Users → [your account] → API keys"),
|
|
635
|
+
createTextVNode(", then replace "),
|
|
636
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
637
|
+
createTextVNode(" in the snippets above. ")
|
|
638
|
+
])) : (openBlock(), createBlock("p", { key: 1 }, [
|
|
639
|
+
createTextVNode(" This app provides a local access token automatically — shown in "),
|
|
640
|
+
createVNode("strong", null, "Client setup"),
|
|
641
|
+
createTextVNode(" above and already filled into every snippet, so there is nothing to replace. ")
|
|
642
|
+
])),
|
|
643
|
+
!unref(isDesktop) ? (openBlock(), createBlock("p", {
|
|
644
|
+
key: 2,
|
|
645
|
+
class: "text-xs text-gray-400"
|
|
646
|
+
}, [
|
|
647
|
+
createTextVNode(" When authentication is disabled ("),
|
|
648
|
+
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
649
|
+
createTextVNode(" not set), any request is accepted without a key. ")
|
|
650
|
+
])) : (openBlock(), createBlock("p", {
|
|
651
|
+
key: 3,
|
|
652
|
+
class: "text-xs text-gray-400"
|
|
653
|
+
}, [
|
|
654
|
+
createTextVNode(" This desktop app keeps sign-in off but still requires its own local access token on every request — it is the "),
|
|
655
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
656
|
+
createTextVNode(" value. The endpoint is not open. ")
|
|
657
|
+
]))
|
|
658
|
+
])
|
|
659
|
+
];
|
|
660
|
+
}
|
|
661
|
+
}),
|
|
662
|
+
_: 1
|
|
663
|
+
}, _parent2, _scopeId));
|
|
551
664
|
_push2(ssrRenderComponent(_component_SectionCard, {
|
|
552
665
|
icon: "i-lucide-link",
|
|
553
666
|
title: "Server URL"
|
|
@@ -575,7 +688,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
575
688
|
}),
|
|
576
689
|
_: 1
|
|
577
690
|
}, _parent3, _scopeId2));
|
|
578
|
-
_push3(`</div><p class="text-xs text-gray-400"${_scopeId2}> This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above.
|
|
691
|
+
_push3(`</div><p class="text-xs text-gray-400"${_scopeId2}> This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above. `);
|
|
692
|
+
if (unref(isDesktop)) {
|
|
693
|
+
_push3(`<!--[-->This desktop app requires its local access token as the <code class="font-mono"${_scopeId2}>Bearer</code> value on every request.<!--]-->`);
|
|
694
|
+
} else {
|
|
695
|
+
_push3(`<!--[-->The server requires a valid Bearer token (or no auth if <code class="font-mono"${_scopeId2}>PIWI_AUTH_ENABLED</code> is not set).<!--]-->`);
|
|
696
|
+
}
|
|
697
|
+
_push3(`</p></div>`);
|
|
579
698
|
} else {
|
|
580
699
|
return [
|
|
581
700
|
createVNode("div", { class: "space-y-2" }, [
|
|
@@ -597,9 +716,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
597
716
|
}, 8, ["external"])
|
|
598
717
|
]),
|
|
599
718
|
createVNode("p", { class: "text-xs text-gray-400" }, [
|
|
600
|
-
createTextVNode(" This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above.
|
|
601
|
-
|
|
602
|
-
|
|
719
|
+
createTextVNode(" This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above. "),
|
|
720
|
+
unref(isDesktop) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
721
|
+
createTextVNode("This desktop app requires its local access token as the "),
|
|
722
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
723
|
+
createTextVNode(" value on every request.")
|
|
724
|
+
], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
|
|
725
|
+
createTextVNode("The server requires a valid Bearer token (or no auth if "),
|
|
726
|
+
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
727
|
+
createTextVNode(" is not set).")
|
|
728
|
+
], 64))
|
|
603
729
|
])
|
|
604
730
|
])
|
|
605
731
|
];
|
|
@@ -618,70 +744,58 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
618
744
|
title: "Feature preview",
|
|
619
745
|
description: "The MCP endpoint is not active in this demo — it requires a real Piwi backend. The tools and client setup shown below reflect what your own deployment exposes."
|
|
620
746
|
})) : createCommentVNode("", true),
|
|
621
|
-
createVNode(_component_SectionCard, {
|
|
622
|
-
icon: "i-lucide-bot",
|
|
623
|
-
title: "What it provides",
|
|
624
|
-
help: "mcp.tools"
|
|
625
|
-
}, {
|
|
626
|
-
default: withCtx(() => [
|
|
627
|
-
createVNode("div", { class: "flex flex-col gap-1.5" }, [
|
|
628
|
-
(openBlock(true), createBlock(Fragment, null, renderList(unref(tools), (t) => {
|
|
629
|
-
return openBlock(), createBlock("div", {
|
|
630
|
-
key: t.name,
|
|
631
|
-
class: "flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"
|
|
632
|
-
}, [
|
|
633
|
-
createVNode(_component_UIcon, {
|
|
634
|
-
name: "i-lucide-wrench",
|
|
635
|
-
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
636
|
-
}),
|
|
637
|
-
createVNode("div", { class: "min-w-0" }, [
|
|
638
|
-
createVNode("p", { class: "text-sm font-mono font-semibold text-foreground" }, toDisplayString(t.name), 1),
|
|
639
|
-
createVNode("p", { class: "text-xs text-gray-500 dark:text-gray-400 mt-0.5" }, toDisplayString(t.description), 1)
|
|
640
|
-
])
|
|
641
|
-
]);
|
|
642
|
-
}), 128))
|
|
643
|
-
])
|
|
644
|
-
]),
|
|
645
|
-
_: 1
|
|
646
|
-
}),
|
|
647
|
-
createVNode(_component_SectionCard, {
|
|
648
|
-
icon: "i-lucide-key",
|
|
649
|
-
title: "Authentication",
|
|
650
|
-
help: "mcp.auth"
|
|
651
|
-
}, {
|
|
652
|
-
default: withCtx(() => [
|
|
653
|
-
createVNode("div", { class: "space-y-3 text-sm text-gray-600 dark:text-gray-400" }, [
|
|
654
|
-
createVNode("p", null, [
|
|
655
|
-
createTextVNode(" MCP requests are authenticated with the same API keys used by the REST API. API keys start with "),
|
|
656
|
-
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_"),
|
|
657
|
-
createTextVNode(". ")
|
|
658
|
-
]),
|
|
659
|
-
createVNode("p", null, [
|
|
660
|
-
createTextVNode(" Generate a key in "),
|
|
661
|
-
createVNode("strong", null, "Settings → Users → [your account] → API keys"),
|
|
662
|
-
createTextVNode(", then replace "),
|
|
663
|
-
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
664
|
-
createTextVNode(" in the snippets below. ")
|
|
665
|
-
]),
|
|
666
|
-
createVNode("p", { class: "text-xs text-gray-400" }, [
|
|
667
|
-
createTextVNode(" When authentication is disabled ("),
|
|
668
|
-
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
669
|
-
createTextVNode(" not set), any request is accepted without a key. ")
|
|
670
|
-
])
|
|
671
|
-
])
|
|
672
|
-
]),
|
|
673
|
-
_: 1
|
|
674
|
-
}),
|
|
675
747
|
createVNode(_component_SectionCard, {
|
|
676
748
|
icon: "i-lucide-settings-2",
|
|
677
749
|
title: "Client setup",
|
|
678
750
|
help: "mcp.client-setup"
|
|
679
751
|
}, {
|
|
680
752
|
default: withCtx(() => [
|
|
753
|
+
unref(reporterConfig) ? (openBlock(), createBlock("div", {
|
|
754
|
+
key: 0,
|
|
755
|
+
class: "mb-4 space-y-3 rounded-md border border-default bg-elevated/50 p-3"
|
|
756
|
+
}, [
|
|
757
|
+
createVNode("div", { class: "space-y-1" }, [
|
|
758
|
+
createVNode("div", { class: "text-xs text-muted" }, "MCP URL"),
|
|
759
|
+
createVNode("div", { class: "flex items-start gap-2" }, [
|
|
760
|
+
createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(mcpUrl)), 1),
|
|
761
|
+
createVNode(_component_UButton, {
|
|
762
|
+
icon: "i-lucide-copy",
|
|
763
|
+
color: "neutral",
|
|
764
|
+
variant: "ghost",
|
|
765
|
+
size: "xs",
|
|
766
|
+
"aria-label": "Copy MCP URL",
|
|
767
|
+
onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
|
|
768
|
+
}, null, 8, ["onClick"])
|
|
769
|
+
])
|
|
770
|
+
]),
|
|
771
|
+
createVNode("div", { class: "space-y-1" }, [
|
|
772
|
+
createVNode("div", { class: "text-xs text-muted" }, "Access token"),
|
|
773
|
+
createVNode("div", { class: "flex items-start gap-2" }, [
|
|
774
|
+
createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(bearerToken)), 1),
|
|
775
|
+
createVNode(_component_UButton, {
|
|
776
|
+
icon: "i-lucide-copy",
|
|
777
|
+
color: "neutral",
|
|
778
|
+
variant: "ghost",
|
|
779
|
+
size: "xs",
|
|
780
|
+
"aria-label": "Copy access token",
|
|
781
|
+
onClick: ($event) => unref(copy)(unref(bearerToken), { toast: true })
|
|
782
|
+
}, null, 8, ["onClick"])
|
|
783
|
+
])
|
|
784
|
+
]),
|
|
785
|
+
createVNode("p", { class: "text-xs text-muted" }, [
|
|
786
|
+
createTextVNode(" This app authenticates with a local access token even though sign-in is off — it is the "),
|
|
787
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
788
|
+
createTextVNode(" value, already filled into the snippets below. ")
|
|
789
|
+
])
|
|
790
|
+
])) : createCommentVNode("", true),
|
|
681
791
|
createVNode("p", { class: "text-sm text-gray-500 dark:text-gray-400 mb-4" }, [
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
792
|
+
unref(reporterConfig) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
793
|
+
createTextVNode("Pick your client below — the URL and access token above are already baked into each snippet.")
|
|
794
|
+
], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
|
|
795
|
+
createTextVNode("Replace "),
|
|
796
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
797
|
+
createTextVNode(" with your actual API key. The MCP URL shown in the snippets is auto-detected from your current browser origin.")
|
|
798
|
+
], 64))
|
|
685
799
|
]),
|
|
686
800
|
createVNode(_component_UTabs, {
|
|
687
801
|
items: clientItems,
|
|
@@ -785,6 +899,74 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
785
899
|
]),
|
|
786
900
|
_: 1
|
|
787
901
|
}),
|
|
902
|
+
createVNode(_component_SectionCard, {
|
|
903
|
+
icon: "i-lucide-bot",
|
|
904
|
+
title: "What it provides",
|
|
905
|
+
help: "mcp.tools"
|
|
906
|
+
}, {
|
|
907
|
+
default: withCtx(() => [
|
|
908
|
+
createVNode("div", { class: "flex flex-col gap-1.5" }, [
|
|
909
|
+
(openBlock(true), createBlock(Fragment, null, renderList(unref(tools), (t) => {
|
|
910
|
+
return openBlock(), createBlock("div", {
|
|
911
|
+
key: t.name,
|
|
912
|
+
class: "flex items-start gap-3 px-3 py-2.5 rounded-md bg-elevated/50 border border-default hover:bg-elevated transition-colors"
|
|
913
|
+
}, [
|
|
914
|
+
createVNode(_component_UIcon, {
|
|
915
|
+
name: "i-lucide-wrench",
|
|
916
|
+
class: "size-4 mt-0.5 shrink-0 text-primary"
|
|
917
|
+
}),
|
|
918
|
+
createVNode("div", { class: "min-w-0" }, [
|
|
919
|
+
createVNode("p", { class: "text-sm font-mono font-semibold text-foreground" }, toDisplayString(t.name), 1),
|
|
920
|
+
createVNode("p", { class: "text-xs text-gray-500 dark:text-gray-400 mt-0.5" }, toDisplayString(t.description), 1)
|
|
921
|
+
])
|
|
922
|
+
]);
|
|
923
|
+
}), 128))
|
|
924
|
+
])
|
|
925
|
+
]),
|
|
926
|
+
_: 1
|
|
927
|
+
}),
|
|
928
|
+
createVNode(_component_SectionCard, {
|
|
929
|
+
icon: "i-lucide-key",
|
|
930
|
+
title: "Authentication",
|
|
931
|
+
help: "mcp.auth"
|
|
932
|
+
}, {
|
|
933
|
+
default: withCtx(() => [
|
|
934
|
+
createVNode("div", { class: "space-y-3 text-sm text-gray-600 dark:text-gray-400" }, [
|
|
935
|
+
createVNode("p", null, [
|
|
936
|
+
createTextVNode(" MCP requests are authenticated with the same API keys used by the REST API. API keys start with "),
|
|
937
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_"),
|
|
938
|
+
createTextVNode(". ")
|
|
939
|
+
]),
|
|
940
|
+
!unref(isDesktop) ? (openBlock(), createBlock("p", { key: 0 }, [
|
|
941
|
+
createTextVNode(" Generate a key in "),
|
|
942
|
+
createVNode("strong", null, "Settings → Users → [your account] → API keys"),
|
|
943
|
+
createTextVNode(", then replace "),
|
|
944
|
+
createVNode("code", { class: "px-1 py-0.5 bg-muted rounded text-xs font-mono" }, "pd_YOUR_API_KEY"),
|
|
945
|
+
createTextVNode(" in the snippets above. ")
|
|
946
|
+
])) : (openBlock(), createBlock("p", { key: 1 }, [
|
|
947
|
+
createTextVNode(" This app provides a local access token automatically — shown in "),
|
|
948
|
+
createVNode("strong", null, "Client setup"),
|
|
949
|
+
createTextVNode(" above and already filled into every snippet, so there is nothing to replace. ")
|
|
950
|
+
])),
|
|
951
|
+
!unref(isDesktop) ? (openBlock(), createBlock("p", {
|
|
952
|
+
key: 2,
|
|
953
|
+
class: "text-xs text-gray-400"
|
|
954
|
+
}, [
|
|
955
|
+
createTextVNode(" When authentication is disabled ("),
|
|
956
|
+
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
957
|
+
createTextVNode(" not set), any request is accepted without a key. ")
|
|
958
|
+
])) : (openBlock(), createBlock("p", {
|
|
959
|
+
key: 3,
|
|
960
|
+
class: "text-xs text-gray-400"
|
|
961
|
+
}, [
|
|
962
|
+
createTextVNode(" This desktop app keeps sign-in off but still requires its own local access token on every request — it is the "),
|
|
963
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
964
|
+
createTextVNode(" value. The endpoint is not open. ")
|
|
965
|
+
]))
|
|
966
|
+
])
|
|
967
|
+
]),
|
|
968
|
+
_: 1
|
|
969
|
+
}),
|
|
788
970
|
createVNode(_component_SectionCard, {
|
|
789
971
|
icon: "i-lucide-link",
|
|
790
972
|
title: "Server URL"
|
|
@@ -809,9 +991,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
809
991
|
}, 8, ["external"])
|
|
810
992
|
]),
|
|
811
993
|
createVNode("p", { class: "text-xs text-gray-400" }, [
|
|
812
|
-
createTextVNode(" This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above.
|
|
813
|
-
|
|
814
|
-
|
|
994
|
+
createTextVNode(" This is your Piwi instance's MCP endpoint. It is also the server URL to paste into client configs above. "),
|
|
995
|
+
unref(isDesktop) ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
996
|
+
createTextVNode("This desktop app requires its local access token as the "),
|
|
997
|
+
createVNode("code", { class: "font-mono" }, "Bearer"),
|
|
998
|
+
createTextVNode(" value on every request.")
|
|
999
|
+
], 64)) : (openBlock(), createBlock(Fragment, { key: 1 }, [
|
|
1000
|
+
createTextVNode("The server requires a valid Bearer token (or no auth if "),
|
|
1001
|
+
createVNode("code", { class: "font-mono" }, "PIWI_AUTH_ENABLED"),
|
|
1002
|
+
createTextVNode(" is not set).")
|
|
1003
|
+
], 64))
|
|
815
1004
|
])
|
|
816
1005
|
])
|
|
817
1006
|
]),
|
|
@@ -834,4 +1023,4 @@ _sfc_main.setup = (props, ctx) => {
|
|
|
834
1023
|
};
|
|
835
1024
|
|
|
836
1025
|
export { _sfc_main as default };
|
|
837
|
-
//# sourceMappingURL=mcp-
|
|
1026
|
+
//# sourceMappingURL=mcp-_o6cMS6m.mjs.map
|