import { defineComponent, ref, computed, onMounted, nextTick, watch, onUnmounted, resolveComponent, unref, mergeProps, withCtx, createVNode, createTextVNode, resolveDynamicComponent, openBlock, createBlock, withDirectives, vModelCheckbox, toDisplayString, createCommentVNode, Fragment, renderList, Teleport, withModifiers, useSSRContext } from "vue"; import { ssrRenderComponent, ssrIncludeBooleanAttr, ssrRenderClass, ssrRenderVNode, ssrLooseContain, ssrRenderStyle, ssrInterpolate, ssrRenderList, ssrRenderTeleport, ssrRenderAttrs } from "vue/server-renderer"; import { useRoute } from "vue-router"; import { t as takeover, g as getApiBase, w as ws, b as auth, s as scrollbarOptions, T as THEME_ICONS, f as useTheme, h as useDevFlags, _ as _export_sfc } from "../main.mjs"; import { OverlayScrollbarsComponent } from "overlayscrollbars-vue"; import { HomeIcon, BoltIcon, SignalSlashIcon, LinkIcon, XMarkIcon, CameraIcon, LockClosedIcon } from "@heroicons/vue/20/solid"; import "@unhead/vue/server"; import "pinia"; import "@heroicons/vue/24/outline"; import "overlayscrollbars"; const SESSION_KEY = "nyx_session"; const _sfc_main = /* @__PURE__ */ defineComponent({ ...{ name: "DevView" }, __name: "DevView", __ssrInlineRender: true, setup(__props) { const route = useRoute(); const { isLoggedIn } = auth; const { connected, send: wsSend, onMessage } = ws; const { theme, setTheme } = useTheme(); const devFlags = useDevFlags(); const takeoverToken = takeover.token; const captureActive = takeover.capture.isActive; const breakoutReq = takeover.breakout.pendingRequest; function handleInitTakeover() { takeover.init(); } function handleRevoke() { takeover.revoke(); } function confirmBreakout() { breakoutReq.value?.resolve(true); } function denyBreakout() { breakoutReq.value?.resolve(false); } async function handleToggleCapture() { if (captureActive.value) { takeover.capture.disable(); } else { await takeover.capture.enable(); } } const SESSION_TOKEN = () => localStorage.getItem(SESSION_KEY) ?? ""; const systemRequests = ref([]); const systemGranted = ref(null); async function fetchPendingSystemRequests() { try { const res = await fetch(`${getApiBase()}/api/system/pending`, { headers: { Authorization: `Bearer ${SESSION_TOKEN()}` } }); if (res.ok) { const { pending } = await res.json(); systemRequests.value = pending ?? []; } } catch { } } async function approveSystemRequest(requestId) { const res = await fetch(`${getApiBase()}/api/system/approve`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ sessionToken: SESSION_TOKEN(), requestId }) }); if (res.ok) systemRequests.value = systemRequests.value.filter((r) => r.requestId !== requestId); } async function denySystemRequest(requestId) { await fetch(`${getApiBase()}/api/system/deny`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ sessionToken: SESSION_TOKEN(), requestId }) }); systemRequests.value = systemRequests.value.filter((r) => r.requestId !== requestId); } const counterValue = ref(Math.floor(Math.random() * 11)); const counterBusy = ref(false); const counterMuted = ref(true); const challengeMessage = ref(""); const challengeTimer = ref(0); let challengeInterval = null; let challengeGen = 0; const actionPicker = ref({ title: "", options: [] }); const actionPickerBusy = ref(false); async function pickAction(id) { actionPickerBusy.value = true; actionPicker.value = { title: "", options: [] }; try { await fetch(`${getApiBase()}/api/dev/counter`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` }, body: JSON.stringify({ action: "pick", pick: id }) }); } catch { } actionPickerBusy.value = false; } async function counterAction(action) { counterMuted.value = true; challengeGen++; if (challengeInterval) { clearInterval(challengeInterval); challengeInterval = null; } challengeMessage.value = ""; challengeTimer.value = 0; counterBusy.value = true; try { await fetch(`${getApiBase()}/api/dev/counter`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` }, body: JSON.stringify({ action }) }); } catch { } counterBusy.value = false; } const loading = ref(false); const statsError = ref(""); const stats = ref(null); function fmt(v) { if (v === null || v === void 0) return "—"; return v.toFixed(2); } const usedPct = computed(() => { const t = stats.value?.credits?.total; const u = stats.value?.credits?.used; if (!t) return 0; return Math.min(100, u / t * 100); }); function load() { if (!connected.value) return; loading.value = true; statsError.value = ""; wsSend({ type: "stats_request" }); } const discoing = ref(false); const discoChatting = ref(false); function disco() { if (!connected.value) return; discoing.value = true; wsSend({ type: "disco_request" }); setTimeout(() => { discoing.value = false; }, 2e3); } function discoChat() { if (!connected.value) return; discoChatting.value = true; wsSend({ type: "disco_chat_request" }); setTimeout(() => { discoChatting.value = false; }, 3e3); } let unsubscribeWs = null; let refreshInterval; onMounted(() => { fetchPendingSystemRequests(); unsubscribeWs = onMessage((data) => { if (data.type === "system_access_request") { if (!systemRequests.value.find((r) => r.requestId === data.requestId)) systemRequests.value.push(data); return; } if (data.type === "counter_update") { counterValue.value = data.value ?? counterValue.value; return; } if (data.type === "counter_challenge") { challengeMessage.value = data.message || "DECIDE NOW!"; challengeTimer.value = data.timeout || 30; counterMuted.value = false; nextTick(() => { const el = document.querySelector(".counter-widget"); if (el) { el.classList.remove("flash"); void el.offsetWidth; el.classList.add("flash"); el.scrollIntoView({ behavior: "smooth", block: "center" }); } }); if (challengeInterval) clearInterval(challengeInterval); const cid = ++challengeGen; challengeInterval = setInterval(() => { if (cid !== challengeGen) { clearInterval(challengeInterval); return; } challengeTimer.value--; if (challengeTimer.value <= 0) { if (challengeInterval) { clearInterval(challengeInterval); challengeInterval = null; } counterMuted.value = true; challengeMessage.value = ""; fetch(`${getApiBase()}/api/dev/counter`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${SESSION_TOKEN()}` }, body: JSON.stringify({ action: "timeout" }) }); } }, 1e3); return; } if (data.type === "confetti") { const container = document.createElement("div"); container.className = "confetti-container"; const colors = ["#ff6b6b", "#ffd93d", "#6bcb77", "#4d96ff", "#ff922b", "#cc5de8"]; for (let i = 0; i < 60; i++) { const piece = document.createElement("div"); piece.className = "confetti-piece"; piece.style.left = Math.random() * 100 + "%"; piece.style.background = colors[Math.floor(Math.random() * colors.length)]; piece.style.animationDelay = Math.random() * 2 + "s"; piece.style.borderRadius = Math.random() > 0.5 ? "50%" : "0"; container.appendChild(piece); } document.body.appendChild(container); setTimeout(() => container.remove(), 5e3); return; } if (data.type === "action_picker") { actionPicker.value = { title: data.title || "Next?", options: data.options || [] }; actionPickerBusy.value = false; return; } if (data.type === "counter_mute") { counterMuted.value = true; challengeMessage.value = data.message || ""; if (challengeInterval) { clearInterval(challengeInterval); challengeInterval = null; } challengeTimer.value = 0; return; } if (data.type === "stats") { loading.value = false; if (data.error) { statsError.value = data.error; } else { stats.value = data; } } }); const startRefresh = () => { load(); refreshInterval = setInterval(load, 15e3); }; if (connected.value) { startRefresh(); } else { const stop = watch(connected, (val) => { if (val) { stop(); startRefresh(); } }); } }); watch(() => route.name, (name, prev) => { if (name === "dev" && !refreshInterval && connected.value) { load(); refreshInterval = setInterval(load, 15e3); } else if (prev === "dev" && name !== "dev" && refreshInterval) { clearInterval(refreshInterval); refreshInterval = void 0; } }); onUnmounted(() => { if (unsubscribeWs) unsubscribeWs(); if (refreshInterval) clearInterval(refreshInterval); }); return (_ctx, _push, _parent, _attrs) => { const _component_RouterLink = resolveComponent("RouterLink"); if (unref(isLoggedIn)) { _push(ssrRenderComponent(unref(OverlayScrollbarsComponent), mergeProps({ class: "dev-view", options: unref(scrollbarOptions), element: "div" }, _attrs), { default: withCtx((_, _push2, _parent2, _scopeId) => { if (_push2) { _push2(`

/dev

`); _push2(ssrRenderComponent(_component_RouterLink, { to: "/agents", class: "dev-disco-btn" }, { default: withCtx((_2, _push3, _parent3, _scopeId2) => { if (_push3) { _push3(ssrRenderComponent(unref(HomeIcon), { class: "w-4 h-4 inline" }, null, _parent3, _scopeId2)); _push3(` Home`); } else { return [ createVNode(unref(HomeIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Home") ]; } }), _: 1 }, _parent2, _scopeId)); _push2(`

Theme

Dev Flags

Takeover

`); if (!unref(takeoverToken)) { _push2(`
`); } else { _push2(`
${ssrInterpolate(unref(takeoverToken))}
`); } _push2(`
`); if (systemRequests.value.length > 0 || systemGranted.value) { _push2(`

System Access

`); if (systemGranted.value) { _push2(`
Access granted to ${ssrInterpolate(systemGranted.value.user)} — active until session end.
`); } else { _push2(``); } _push2(``); ssrRenderList(systemRequests.value, (req) => { _push2(`
${ssrInterpolate(req.userCode)}
${ssrInterpolate(req.description)}
expires in ${ssrInterpolate(Math.max(0, Math.ceil((req.expiresAt - Date.now()) / 1e3)))}s
`); }); _push2(`
`); } else { _push2(``); } _push2(`

MCP Counter

${ssrInterpolate(counterValue.value)}
`); if (challengeMessage.value) { _push2(`
${ssrInterpolate(challengeMessage.value)}`); if (challengeTimer.value > 0) { _push2(`${ssrInterpolate(challengeTimer.value)}s`); } else { _push2(``); } _push2(`
`); } else { _push2(`
Waiting for Claude...
`); } _push2(`
`); if (actionPicker.value.title) { _push2(`

${ssrInterpolate(actionPicker.value.title)}

`); ssrRenderList(actionPicker.value.options, (opt, i) => { _push2(``); }); _push2(`
`); } else { _push2(``); } _push2(`

OpenRouter Credits

`); if (loading.value && !stats.value) { _push2(`
Loading…
`); } else if (statsError.value) { _push2(`
${ssrInterpolate(statsError.value)}
`); } else if (stats.value) { _push2(`
Used$${ssrInterpolate(fmt(stats.value.credits.used))}
Remaining$${ssrInterpolate(fmt(stats.value.credits.remaining))}
Total$${ssrInterpolate(fmt(stats.value.credits.total))}
`); } else { _push2(``); } _push2(`
`); if (stats.value) { _push2(`

Agents

`); ssrRenderList(stats.value.agents, (a) => { _push2(``); }); _push2(`
AgentModelContextPrompt / 1MCompletion / 1M
${ssrInterpolate(a.id)}${ssrInterpolate(a.modelId || a.model)}${ssrInterpolate(a.contextLength ? (a.contextLength / 1e3).toFixed(0) + "k" : "—")}${ssrInterpolate(a.promptPrice !== null ? "$" + a.promptPrice.toFixed(3) : "—")}${ssrInterpolate(a.completionPrice !== null ? "$" + a.completionPrice.toFixed(3) : "—")}
`); } else { _push2(``); } _push2(`
`); ssrRenderTeleport(_push2, (_push3) => { if (unref(breakoutReq)) { _push3(`

Open Breakout

Name: ${ssrInterpolate(unref(breakoutReq).name)}

Size: ${ssrInterpolate(unref(breakoutReq).preset)}

${ssrInterpolate(unref(breakoutReq).nonce)}

`); } else { _push3(``); } }, "body", false, _parent2); } else { return [ createVNode("div", { class: "page" }, [ createVNode("div", { class: "dev-header" }, [ createVNode("h2", null, "/dev"), createVNode("div", { class: "dev-actions" }, [ createVNode(_component_RouterLink, { to: "/agents", class: "dev-disco-btn" }, { default: withCtx(() => [ createVNode(unref(HomeIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Home") ]), _: 1 }), createVNode("button", { class: "dev-disco-btn", onClick: disco, disabled: discoing.value }, [ createVNode(unref(BoltIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Disconnect Gateway") ], 8, ["disabled"]), createVNode("button", { class: "dev-disco-btn", onClick: discoChat, disabled: discoChatting.value }, [ createVNode(unref(SignalSlashIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Disconnect Chat") ], 8, ["disabled"]) ]) ]), createVNode("div", { class: "content" }, [ createVNode("div", { class: "dev-section" }, [ createVNode("h3", null, "Theme"), createVNode("div", { class: "dev-actions" }, [ createVNode("button", { class: ["dev-theme-btn", { active: unref(theme) === "loop42" }], onClick: ($event) => unref(setTheme)("loop42") }, [ (openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).loop42), { class: "w-4 h-4 inline" })), createTextVNode(" loop42") ], 10, ["onClick"]), createVNode("button", { class: ["dev-theme-btn", { active: unref(theme) === "titan" }], onClick: ($event) => unref(setTheme)("titan") }, [ (openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).titan), { class: "w-4 h-4 inline" })), createTextVNode(" Titan") ], 10, ["onClick"]), createVNode("button", { class: ["dev-theme-btn", { active: unref(theme) === "eras" }], onClick: ($event) => unref(setTheme)("eras") }, [ (openBlock(), createBlock(resolveDynamicComponent(unref(THEME_ICONS).eras), { class: "w-4 h-4 inline" })), createTextVNode(" ERAS") ], 10, ["onClick"]) ]) ]), createVNode("div", { class: "dev-section" }, [ createVNode("h3", null, "Dev Flags"), createVNode("div", { class: "dev-flags" }, [ createVNode("label", { class: "dev-flag" }, [ withDirectives(createVNode("input", { type: "checkbox", "onUpdate:modelValue": ($event) => unref(devFlags).showGrid = $event }, null, 8, ["onUpdate:modelValue"]), [ [vModelCheckbox, unref(devFlags).showGrid] ]), createVNode("span", null, "showGrid") ]), createVNode("label", { class: "dev-flag" }, [ withDirectives(createVNode("input", { type: "checkbox", "onUpdate:modelValue": ($event) => unref(devFlags).showDebugInfo = $event }, null, 8, ["onUpdate:modelValue"]), [ [vModelCheckbox, unref(devFlags).showDebugInfo] ]), createVNode("span", null, "showDebugInfo") ]), createVNode("label", { class: "dev-flag" }, [ withDirectives(createVNode("input", { type: "checkbox", "onUpdate:modelValue": ($event) => unref(devFlags).showHud = $event }, null, 8, ["onUpdate:modelValue"]), [ [vModelCheckbox, unref(devFlags).showHud] ]), createVNode("span", null, "showHud") ]) ]) ]), createVNode("div", { class: "dev-section" }, [ createVNode("h3", null, "Takeover"), !unref(takeoverToken) ? (openBlock(), createBlock("div", { key: 0, class: "dev-actions" }, [ createVNode("button", { class: "dev-theme-btn", onClick: handleInitTakeover }, [ createVNode(unref(LinkIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Enable Takeover") ]) ])) : (openBlock(), createBlock("div", { key: 1, class: "dev-actions", style: { "gap": "var(--space-page)", "align-items": "center", "flex-wrap": "wrap" } }, [ createVNode("code", { class: "takeover-token" }, toDisplayString(unref(takeoverToken)), 1), createVNode("button", { class: "dev-theme-btn active", onClick: handleRevoke }, [ createVNode(unref(XMarkIcon), { class: "w-4 h-4 inline" }), createTextVNode(" Revoke") ]), createVNode("button", { class: ["dev-theme-btn", { active: unref(captureActive) }], onClick: handleToggleCapture }, [ createVNode(unref(CameraIcon), { class: "w-4 h-4 inline" }), createTextVNode(" " + toDisplayString(unref(captureActive) ? "Capture ON" : "Enable Capture"), 1) ], 2) ])) ]), systemRequests.value.length > 0 || systemGranted.value ? (openBlock(), createBlock("div", { key: 0, class: "dev-section" }, [ createVNode("h3", null, "System Access"), systemGranted.value ? (openBlock(), createBlock("div", { key: 0, class: "dev-system-granted" }, " Access granted to " + toDisplayString(systemGranted.value.user) + " — active until session end. ", 1)) : createCommentVNode("", true), (openBlock(true), createBlock(Fragment, null, renderList(systemRequests.value, (req) => { return openBlock(), createBlock("div", { key: req.requestId, class: "dev-system-request" }, [ createVNode("div", { class: "dev-system-code" }, toDisplayString(req.userCode), 1), createVNode("div", { class: "dev-system-desc" }, toDisplayString(req.description), 1), createVNode("div", { class: "dev-system-expiry" }, "expires in " + toDisplayString(Math.max(0, Math.ceil((req.expiresAt - Date.now()) / 1e3))) + "s", 1), createVNode("div", { class: "dev-actions", style: { "margin-top": "8px" } }, [ createVNode("button", { class: "dev-theme-btn", onClick: ($event) => denySystemRequest(req.requestId) }, "Deny", 8, ["onClick"]), createVNode("button", { class: "dev-theme-btn active", onClick: ($event) => approveSystemRequest(req.requestId) }, "Approve", 8, ["onClick"]) ]) ]); }), 128)) ])) : createCommentVNode("", true), createVNode("div", { class: "dev-section" }, [ createVNode("h3", null, "MCP Counter"), createVNode("div", { class: ["counter-widget", { muted: counterMuted.value }] }, [ createVNode("div", { class: "counter-controls" }, [ createVNode("button", { class: "counter-btn", onClick: ($event) => counterAction("decrement"), disabled: counterMuted.value || counterBusy.value }, "−", 8, ["onClick", "disabled"]), createVNode("span", { class: "counter-value", id: "mcp-counter-value" }, toDisplayString(counterValue.value), 1), createVNode("button", { class: "counter-btn", onClick: ($event) => counterAction("increment"), disabled: counterMuted.value || counterBusy.value }, "+", 8, ["onClick", "disabled"]) ]), challengeMessage.value ? (openBlock(), createBlock("div", { key: 0, class: "counter-challenge" }, [ createVNode("span", { class: "counter-message" }, toDisplayString(challengeMessage.value), 1), challengeTimer.value > 0 ? (openBlock(), createBlock("span", { key: 0, class: "counter-timer" }, toDisplayString(challengeTimer.value) + "s", 1)) : createCommentVNode("", true) ])) : (openBlock(), createBlock("div", { key: 1, class: "counter-hint" }, "Waiting for Claude...")) ], 2) ]), actionPicker.value.title ? (openBlock(), createBlock("div", { key: 1, class: "dev-section" }, [ createVNode("h3", null, toDisplayString(actionPicker.value.title), 1), createVNode("div", { class: "action-picker" }, [ (openBlock(true), createBlock(Fragment, null, renderList(actionPicker.value.options, (opt, i) => { return openBlock(), createBlock("button", { key: i, class: "action-pick-btn", disabled: actionPickerBusy.value, onClick: ($event) => pickAction(opt.id) }, toDisplayString(opt.label), 9, ["disabled", "onClick"]); }), 128)) ]) ])) : createCommentVNode("", true), createVNode("div", { class: "dev-section" }, [ createVNode("h3", null, "OpenRouter Credits"), loading.value && !stats.value ? (openBlock(), createBlock("div", { key: 0, class: "dev-loading" }, "Loading…")) : statsError.value ? (openBlock(), createBlock("div", { key: 1, class: "dev-error" }, toDisplayString(statsError.value), 1)) : stats.value ? (openBlock(), createBlock("div", { key: 2, class: "credits-widget" }, [ createVNode("div", { class: "credits-bar-track" }, [ createVNode("div", { class: "credits-bar-fill", style: { width: usedPct.value + "%" } }, null, 4) ]), createVNode("div", { class: "credits-row" }, [ createVNode("div", { class: "credits-stat" }, [ createVNode("span", { class: "credits-label" }, "Used"), createVNode("span", { class: "credits-amount credits-used" }, "$" + toDisplayString(fmt(stats.value.credits.used)), 1) ]), createVNode("div", { class: "credits-stat" }, [ createVNode("span", { class: "credits-label" }, "Remaining"), createVNode("span", { class: "credits-amount credits-remaining" }, "$" + toDisplayString(fmt(stats.value.credits.remaining)), 1) ]), createVNode("div", { class: "credits-stat" }, [ createVNode("span", { class: "credits-label" }, "Total"), createVNode("span", { class: "credits-amount" }, "$" + toDisplayString(fmt(stats.value.credits.total)), 1) ]) ]) ])) : createCommentVNode("", true) ]), stats.value ? (openBlock(), createBlock("div", { key: 2, class: "dev-section" }, [ createVNode("h3", null, "Agents"), createVNode("div", { class: "dev-table-wrap" }, [ createVNode("table", { class: "dev-table" }, [ createVNode("thead", null, [ createVNode("tr", null, [ createVNode("th", null, "Agent"), createVNode("th", null, "Model"), createVNode("th", null, "Context"), createVNode("th", null, "Prompt / 1M"), createVNode("th", null, "Completion / 1M") ]) ]), createVNode("tbody", null, [ (openBlock(true), createBlock(Fragment, null, renderList(stats.value.agents, (a) => { return openBlock(), createBlock("tr", { key: a.id }, [ createVNode("td", { class: "agent-id" }, toDisplayString(a.id), 1), createVNode("td", null, [ createVNode("code", null, toDisplayString(a.modelId || a.model), 1) ]), createVNode("td", null, toDisplayString(a.contextLength ? (a.contextLength / 1e3).toFixed(0) + "k" : "—"), 1), createVNode("td", null, toDisplayString(a.promptPrice !== null ? "$" + a.promptPrice.toFixed(3) : "—"), 1), createVNode("td", null, toDisplayString(a.completionPrice !== null ? "$" + a.completionPrice.toFixed(3) : "—"), 1) ]); }), 128)) ]) ]) ]) ])) : createCommentVNode("", true) ]) ]), (openBlock(), createBlock(Teleport, { to: "body" }, [ unref(breakoutReq) ? (openBlock(), createBlock("div", { key: 0, class: "breakout-modal-overlay", onClick: withModifiers(denyBreakout, ["self"]) }, [ createVNode("div", { class: "breakout-modal" }, [ createVNode("h3", null, "Open Breakout"), createVNode("p", null, [ createTextVNode("Name: "), createVNode("strong", null, toDisplayString(unref(breakoutReq).name), 1) ]), createVNode("p", null, [ createTextVNode("Size: "), createVNode("strong", null, toDisplayString(unref(breakoutReq).preset), 1) ]), createVNode("p", { class: "breakout-nonce" }, toDisplayString(unref(breakoutReq).nonce), 1), createVNode("div", { class: "breakout-modal-actions" }, [ createVNode("button", { class: "dev-theme-btn", onClick: denyBreakout }, "Cancel"), createVNode("button", { class: "dev-theme-btn active", onClick: confirmBreakout }, "Confirm") ]) ]) ])) : createCommentVNode("", true) ])) ]; } }), _: 1 }, _parent)); } else { _push(`

`); _push(ssrRenderComponent(unref(LockClosedIcon), { class: "w-5 h-5 inline" }, null, _parent)); _push(` Not logged in

`); _push(ssrRenderComponent(_component_RouterLink, { to: "/login" }, { default: withCtx((_, _push2, _parent2, _scopeId) => { if (_push2) { _push2(`Sign in →`); } else { return [ createTextVNode("Sign in →") ]; } }), _: 1 }, _parent)); _push(``); } }; } }); const _sfc_setup = _sfc_main.setup; _sfc_main.setup = (props, ctx) => { const ssrContext = useSSRContext(); (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("src/views/DevView.vue"); return _sfc_setup ? _sfc_setup(props, ctx) : void 0; }; const DevView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6fcff79f"]]); export { DevView as default };