cognova 0.2.8 → 0.2.10
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/{CH_jROT9.js → 0NJ3PaRM.js} +1 -1
- package/.output/public/_nuxt/{C075hYlX.js → 0yk-pS3R.js} +2 -2
- package/.output/public/_nuxt/{CVYcsqmL.js → 10_wwHSz.js} +1 -1
- package/.output/public/_nuxt/{BUC36BHp.js → 1zUTf4AP.js} +1 -1
- package/.output/public/_nuxt/{njnzCNrH.js → 2dNDtTiv.js} +3 -3
- package/.output/public/_nuxt/{B8TQvzYX.js → 2nOqGUPr.js} +1 -1
- package/.output/public/_nuxt/{ijmD2cEW.js → 3jQMk_5H.js} +1 -1
- package/.output/public/_nuxt/{D4X6ONPF.js → 4K03TkGA.js} +1 -1
- package/.output/public/_nuxt/{C3tximD1.js → 6boMs_nF.js} +1 -1
- package/.output/public/_nuxt/{Drxf7nJz.js → 7oCGSglN.js} +1 -1
- package/.output/public/_nuxt/{Dt5mOzXj.js → 8q5NepGW.js} +1 -1
- package/.output/public/_nuxt/{GYf-vnR6.js → B93pdGAW.js} +1 -1
- package/.output/public/_nuxt/{BZBNJD7U.js → BA_pRWwX.js} +1 -1
- package/.output/public/_nuxt/{eE8TtXgC.js → BDyn4ApB.js} +3 -3
- package/.output/public/_nuxt/{0dqQoCHY.js → BGgwYWjH.js} +1 -1
- package/.output/public/_nuxt/{BrOKokPO.js → BH0QDWEm.js} +1 -1
- package/.output/public/_nuxt/{B5SnZL2l.js → BHtY0l0l.js} +1 -1
- package/.output/public/_nuxt/{ImPsUDiH.js → BIXrSYwR.js} +1 -1
- package/.output/public/_nuxt/BK8S2ony.js +1 -0
- package/.output/public/_nuxt/{Bkc1Hpcf.js → BKXg-alD.js} +1 -1
- package/.output/public/_nuxt/{BahXyh-A.js → BLnYhy_t.js} +1 -1
- package/.output/public/_nuxt/{Bhhg7oSf.js → BR8bKz8h.js} +1 -1
- package/.output/public/_nuxt/{D2kQkOaG.js → BS2ZNXI1.js} +1 -1
- package/.output/public/_nuxt/{BLm0UviR.js → BUghTae1.js} +1 -1
- package/.output/public/_nuxt/{D4_89MZm.js → BXuWCWsJ.js} +1 -1
- package/.output/public/_nuxt/{LQNRVThr.js → BYHCP8x7.js} +1 -1
- package/.output/public/_nuxt/{BYtVdUIW.js → BZrSPX0S.js} +1 -1
- package/.output/public/_nuxt/{U3f6dy8i.js → B_wilgcd.js} +1 -1
- package/.output/public/_nuxt/BaZwjF8o.js +1 -0
- package/.output/public/_nuxt/{BefOhWHD.js → Bciqk4dX.js} +1 -1
- package/.output/public/_nuxt/{CewcVxDS.js → Beom-INj.js} +1 -1
- package/.output/public/_nuxt/{BlsIfvSf.js → BfcLZ_fC.js} +1 -1
- package/.output/public/_nuxt/{dB7G4iIC.js → Bk6JUtIo.js} +1 -1
- package/.output/public/_nuxt/BkfI94R8.js +1 -0
- package/.output/public/_nuxt/{DqzomZoo.js → BmOtR1wX.js} +1 -1
- package/.output/public/_nuxt/{4XnyUc7C.js → BmVLxnDU.js} +1 -1
- package/.output/public/_nuxt/{DtJnWtpL.js → BtHQ1T0f.js} +1 -1
- package/.output/public/_nuxt/{DcbbfwCe.js → ByYh0uRg.js} +1 -1
- package/.output/public/_nuxt/{CbvNJVrk.js → C27WoGNZ.js} +1 -1
- package/.output/public/_nuxt/{CY7f553E.js → C2FxZbO_.js} +1 -1
- package/.output/public/_nuxt/{zO9MgHj2.js → C2vq6Te8.js} +1 -1
- package/.output/public/_nuxt/{BXtZVbmx.js → C39dQ88F.js} +1 -1
- package/.output/public/_nuxt/{DmDPSvxi.js → C3NST0BU.js} +1 -1
- package/.output/public/_nuxt/{nHSiDk8N.js → C4mwL7SE.js} +1 -1
- package/.output/public/_nuxt/{BBDxhFYY.js → C5R5QaCA.js} +1 -1
- package/.output/public/_nuxt/{D79lbuWG.js → C6qKcgOY.js} +1 -1
- package/.output/public/_nuxt/{C-HCArYP.js → C71_a1IX.js} +1 -1
- package/.output/public/_nuxt/{CSjOaBKu.js → C9WIgRRL.js} +1 -1
- package/.output/public/_nuxt/{DmOS3vFH.js → CBTkrk2M.js} +1 -1
- package/.output/public/_nuxt/CEnSeCqn.js +1 -0
- package/.output/public/_nuxt/{CAfyXyeo.js → CKxSHyww.js} +1 -1
- package/.output/public/_nuxt/{D4Cizi4y.js → CLfF6dSn.js} +1 -1
- package/.output/public/_nuxt/{C7qhmmZh.js → CPutXj8l.js} +1 -1
- package/.output/public/_nuxt/{BCCYopTB.js → CQqCBrXj.js} +1 -1
- package/.output/public/_nuxt/{D-Ge96eV.js → CSKJ-Ahh.js} +1 -1
- package/.output/public/_nuxt/{B2Xfh7am.js → CTCcEJU3.js} +1 -1
- package/.output/public/_nuxt/{BnJ-6YDw.js → CVFwOzbl.js} +1 -1
- package/.output/public/_nuxt/{C21BjagS.js → CVdCqaby.js} +1 -1
- package/.output/public/_nuxt/{2QHXgMyi.js → CVqlefTY.js} +1 -1
- package/.output/public/_nuxt/CWyMCJQH.js +1 -0
- package/.output/public/_nuxt/{B6-U3KqJ.js → CY-QVcA5.js} +2 -2
- package/.output/public/_nuxt/{Cr0NfhPB.js → CY-cjAwJ.js} +1 -1
- package/.output/public/_nuxt/{Bwn-CRYH.js → CYPO5o_C.js} +1 -1
- package/.output/public/_nuxt/{B-AlyT2D.js → CZRnNmU8.js} +1 -1
- package/.output/public/_nuxt/{DwIYtFfA.js → CZVzFlpI.js} +1 -1
- package/.output/public/_nuxt/{BkO884Ds.js → CZoEPC_Q.js} +3 -3
- package/.output/public/_nuxt/{BJUff9Ku.js → Cc-2ziaZ.js} +1 -1
- package/.output/public/_nuxt/{BLwctszt.js → ChcO9s3o.js} +1 -1
- package/.output/public/_nuxt/{DX_9SfFb.js → Cl-LOSDV.js} +1 -1
- package/.output/public/_nuxt/{CSHcfejh.js → CobqYwkp.js} +1 -1
- package/.output/public/_nuxt/{B0xuHXvN.js → CqNwHCpo.js} +1 -1
- package/.output/public/_nuxt/{DMb_1D81.js → CuxrHsu-.js} +1 -1
- package/.output/public/_nuxt/{GGcn5KPW.js → CwPdIZ9J.js} +1 -1
- package/.output/public/_nuxt/{D7pKT3IW.js → D0ifH682.js} +1 -1
- package/.output/public/_nuxt/{KEeoKtq_.js → D3AZaldL.js} +1 -1
- package/.output/public/_nuxt/{BdxP21ep.js → D4UJwDQJ.js} +1 -1
- package/.output/public/_nuxt/{C-Ygk9x5.js → D5jZq8b3.js} +1 -1
- package/.output/public/_nuxt/{B6G3NLfW.js → D5q8SnqE.js} +1 -1
- package/.output/public/_nuxt/{CDkyQ1eQ.js → D8M722pn.js} +1 -1
- package/.output/public/_nuxt/{BjnQ1pI1.js → D8lwrAYS.js} +1 -1
- package/.output/public/_nuxt/{C13FKhqK.js → D9nmzBAw.js} +1 -1
- package/.output/public/_nuxt/{ClGn48iq.js → DC4idAGt.js} +1 -1
- package/.output/public/_nuxt/{vES4kgx7.js → DEd2xVbS.js} +1 -1
- package/.output/public/_nuxt/{CClsKJ9A.js → DH4YkDAi.js} +1 -1
- package/.output/public/_nuxt/{D-5A6cMB.js → DJTCT0bl.js} +1 -1
- package/.output/public/_nuxt/{D_O7SlHm.js → DNP5E1bC.js} +1 -1
- package/.output/public/_nuxt/{BF3tVKtX.js → DO9SFIh1.js} +1 -1
- package/.output/public/_nuxt/DPklr_tJ.js +2 -0
- package/.output/public/_nuxt/{mfAEx0Kz.js → DQM4eBdt.js} +1 -1
- package/.output/public/_nuxt/{cPPThz84.js → DQh6I9z9.js} +1 -1
- package/.output/public/_nuxt/{CXTrUfQ5.js → DS2wStH1.js} +1 -1
- package/.output/public/_nuxt/{CYQP4zpi.js → DTAStixR.js} +1 -1
- package/.output/public/_nuxt/{CEz288t8.js → DTGenhcA.js} +1 -1
- package/.output/public/_nuxt/{B9zgEO8N.js → DUAAXJ6Q.js} +1 -1
- package/.output/public/_nuxt/{CzAZpALW.js → DUVzIl3o.js} +1 -1
- package/.output/public/_nuxt/{DJt7Rogf.js → DXdwpJ-I.js} +1 -1
- package/.output/public/_nuxt/{MWUW1sIF.js → DY3uK7wM.js} +1 -1
- package/.output/public/_nuxt/{CfY_bsV0.js → DYbZBZet.js} +1 -1
- package/.output/public/_nuxt/{DZEuR9ms.js → D_4LPm1U.js} +1 -1
- package/.output/public/_nuxt/{CrmE-JGu.js → Db4KMnt8.js} +1 -1
- package/.output/public/_nuxt/{BwC62XRN.js → DcJbYLTp.js} +1 -1
- package/.output/public/_nuxt/{C6sX7TYf.js → DfF81NlA.js} +1 -1
- package/.output/public/_nuxt/{BHn8tRjg.js → DhI5cA_n.js} +1 -1
- package/.output/public/_nuxt/{CQ3tAemj.js → DhuOKJda.js} +1 -1
- package/.output/public/_nuxt/{D887s9k9.js → Di-Nc75e.js} +1 -1
- package/.output/public/_nuxt/{D_obX2Hj.js → Djs0Tlpa.js} +1 -1
- package/.output/public/_nuxt/DmmdPt_5.js +1 -0
- package/.output/public/_nuxt/{DKKY8zWm.js → Dn5a-guE.js} +1 -1
- package/.output/public/_nuxt/{BvstjGHC.js → DtjjnHnt.js} +1 -1
- package/.output/public/_nuxt/{Dbfwn2zk.js → DuvzM-P1.js} +1 -1
- package/.output/public/_nuxt/{BxShcW0K.js → DwY7rCd_.js} +1 -1
- package/.output/public/_nuxt/{BmaHzvZM.js → Dya5oK8u.js} +1 -1
- package/.output/public/_nuxt/{CO3hceDE.js → DzA58_Lm.js} +1 -1
- package/.output/public/_nuxt/{CF33v_m5.js → DzGy77Vr.js} +1 -1
- package/.output/public/_nuxt/{DmlZSBjF.js → E3rXPwU8.js} +1 -1
- package/.output/public/_nuxt/{CEDw8osP.js → EgKnQnf-.js} +1 -1
- package/.output/public/_nuxt/{it8syoZI.js → GtEM7xVU.js} +1 -1
- package/.output/public/_nuxt/{DLUvsixu.js → H6JbrRBU.js} +1 -1
- package/.output/public/_nuxt/{BE1CVWts.js → ILEvizzp.js} +1 -1
- package/.output/public/_nuxt/{BSA-U0so.js → JX1oqJI9.js} +1 -1
- package/.output/public/_nuxt/{yJ9vRvHj.js → JbHa4oXq.js} +1 -1
- package/.output/public/_nuxt/{zXvvpsZj.js → Kw0zy3FG.js} +1 -1
- package/.output/public/_nuxt/{C6FFW_cO.js → N5XtbYVD.js} +1 -1
- package/.output/public/_nuxt/{D04CyXmf.js → PP_4ebzl.js} +1 -1
- package/.output/public/_nuxt/{6QDVg5TO.js → SrncdpaW.js} +1 -1
- package/.output/public/_nuxt/{36ZHqDPo.js → U1MWjQMi.js} +1 -1
- package/.output/public/_nuxt/{mT7Mt2d7.js → Um1vPiAz.js} +1 -1
- package/.output/public/_nuxt/{CqFcWBkW.js → XCjS70z4.js} +1 -1
- package/.output/public/_nuxt/{C24so3m7.js → YX8avsvq.js} +2 -2
- package/.output/public/_nuxt/{DaBSQDif.js → _cy8R3nk.js} +1 -1
- package/.output/public/_nuxt/{D9aYkNhQ.js → apYB9dr5.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/def74b99-d70c-4f30-aa29-70248cbeac7d.json +1 -0
- package/.output/public/_nuxt/entry.NKPfH2kE.css +1 -0
- package/.output/public/_nuxt/{BqTdsCnW.js → fbyIeNkc.js} +1 -1
- package/.output/public/_nuxt/{-2AbaFNH.js → g5MjDvm5.js} +1 -1
- package/.output/public/_nuxt/{C1tCdK-M.js → gTrVszwd.js} +1 -1
- package/.output/public/_nuxt/{BVEFmI4I.js → ixlNW2So.js} +1 -1
- package/.output/public/_nuxt/{DtyyytRx.js → nnQqD5pb.js} +1 -1
- package/.output/public/_nuxt/{pHCJ6lhw.js → rfGRTJJW.js} +1 -1
- package/.output/public/_nuxt/{Buf1PAiO.js → t8aDAkZ5.js} +1 -1
- package/.output/public/_nuxt/{BmdlymIW.js → vIOxcXKR.js} +1 -1
- package/.output/public/_nuxt/{Cve4psva.js → vScW1Zgm.js} +1 -1
- package/.output/public/_nuxt/{SfaNtyKS.js → wO6z2ugJ.js} +1 -1
- package/.output/public/_nuxt/{BhYoxmLV.js → x6FRJ5ac.js} +1 -1
- package/.output/public/_nuxt/{Pn7VD6uQ.js → zq-a1TeT.js} +1 -1
- package/.output/server/chunks/build/{chat-CZMiB68R.mjs → chat-CR3JIVEq.mjs} +65 -11
- package/.output/server/chunks/build/chat-CR3JIVEq.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/server.mjs +3 -3
- package/.output/server/chunks/build/{settings-ByUXa46k.mjs → settings-B2KXoGcz.mjs} +213 -26
- package/.output/server/chunks/build/settings-B2KXoGcz.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +2 -2
- package/.output/server/chunks/build/{usage-CSrBh4Or.mjs → usage-BHdQZbfI.mjs} +9 -5
- package/.output/server/chunks/build/{usage-CSrBh4Or.mjs.map → usage-BHdQZbfI.mjs.map} +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +1161 -891
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/_ws/chat.mjs +2 -1
- package/.output/server/chunks/routes/_ws/chat.mjs.map +1 -1
- package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs +4 -1
- package/.output/server/chunks/routes/api/conversations/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -1
- package/.output/server/chunks/routes/api/usage/stats.get.mjs +2 -0
- package/.output/server/chunks/routes/api/usage/stats.get.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/app/components/chat/ConversationList.vue +7 -1
- package/app/components/chat/MessageBubble.vue +45 -1
- package/app/components/usage/UsageRecordsTable.vue +4 -2
- package/app/components/usage/UsageSourceDonut.client.vue +4 -2
- package/app/components/usage/UsageTopConsumers.vue +4 -2
- package/app/composables/useChat.ts +3 -0
- package/app/pages/settings.vue +148 -9
- package/package.json +1 -1
- package/server/api/conversations/[id].delete.ts +9 -0
- package/server/api/conversations/index.get.ts +2 -1
- package/server/api/usage/stats.get.ts +2 -0
- package/server/bridge/adapters/telegram.ts +83 -8
- package/server/bridge/responder.ts +248 -0
- package/server/bridge/router.ts +6 -4
- package/server/db/schema.ts +3 -1
- package/server/drizzle/migrations/0015_great_mephistopheles.sql +2 -0
- package/server/drizzle/migrations/meta/0015_snapshot.json +1972 -0
- package/server/drizzle/migrations/meta/_journal.json +7 -0
- package/server/routes/_ws/chat.ts +2 -1
- package/server/utils/log-token-usage.ts +1 -1
- package/shared/types/index.ts +6 -0
- package/.output/public/_nuxt/BIo-9u_O.js +0 -1
- package/.output/public/_nuxt/BMs0mHEp.js +0 -1
- package/.output/public/_nuxt/BwyXWqBY.js +0 -1
- package/.output/public/_nuxt/CE9_ECxx.js +0 -1
- package/.output/public/_nuxt/DmcMCO8x.js +0 -1
- package/.output/public/_nuxt/JReYPlwF.js +0 -2
- package/.output/public/_nuxt/builds/meta/410e449d-9fe8-43a0-ae07-80797693b9b8.json +0 -1
- package/.output/public/_nuxt/entry._7ZkP07A.css +0 -1
- package/.output/public/_nuxt/iBaivqi8.js +0 -1
- package/.output/server/chunks/build/chat-CZMiB68R.mjs.map +0 -1
- package/.output/server/chunks/build/settings-ByUXa46k.mjs.map +0 -1
|
@@ -563,7 +563,7 @@ const _routes = [
|
|
|
563
563
|
name: "chat",
|
|
564
564
|
path: "/chat",
|
|
565
565
|
meta: { ...__nuxt_page_meta$f || {}, ...{ "middleware": "auth" } },
|
|
566
|
-
component: () => import('./chat-
|
|
566
|
+
component: () => import('./chat-CR3JIVEq.mjs')
|
|
567
567
|
},
|
|
568
568
|
{
|
|
569
569
|
name: "docs",
|
|
@@ -599,7 +599,7 @@ const _routes = [
|
|
|
599
599
|
name: "usage",
|
|
600
600
|
path: "/usage",
|
|
601
601
|
meta: { ...__nuxt_page_meta$9 || {}, ...{ "middleware": "auth" } },
|
|
602
|
-
component: () => import('./usage-
|
|
602
|
+
component: () => import('./usage-BHdQZbfI.mjs')
|
|
603
603
|
},
|
|
604
604
|
{
|
|
605
605
|
name: "memories",
|
|
@@ -611,7 +611,7 @@ const _routes = [
|
|
|
611
611
|
name: "settings",
|
|
612
612
|
path: "/settings",
|
|
613
613
|
meta: { ...__nuxt_page_meta$7 || {}, ...{ "middleware": "auth" } },
|
|
614
|
-
component: () => import('./settings-
|
|
614
|
+
component: () => import('./settings-B2KXoGcz.mjs')
|
|
615
615
|
},
|
|
616
616
|
{
|
|
617
617
|
name: "dashboard",
|
|
@@ -5,13 +5,13 @@ import { _ as _sfc_main$a } from './Tabs-B6vgKDY9.mjs';
|
|
|
5
5
|
import { _ as _sfc_main$6 } from './Form-X6hlUv6q.mjs';
|
|
6
6
|
import { _ as _sfc_main$7 } from './FormField-Caux_FCv.mjs';
|
|
7
7
|
import { _ as _sfc_main$8 } from './Input-CV2hlBHo.mjs';
|
|
8
|
-
import { _ as _sfc_main$
|
|
9
|
-
import { _ as _sfc_main$
|
|
8
|
+
import { _ as _sfc_main$b } from './Separator-CYbxFNTe.mjs';
|
|
9
|
+
import { _ as _sfc_main$e } from './Table-DCwTlhCj.mjs';
|
|
10
10
|
import { _ as _sfc_main$4 } from './Skeleton-DZqsQzFi.mjs';
|
|
11
|
-
import { _ as _sfc_main$
|
|
11
|
+
import { _ as _sfc_main$c } from './Switch-GWdksmY6.mjs';
|
|
12
12
|
import { _ as _sfc_main$5 } from './Modal-Z_SoWhh-.mjs';
|
|
13
13
|
import { _ as _sfc_main$9 } from './Select-BB1oLrCD.mjs';
|
|
14
|
-
import { defineComponent, reactive, ref, watch, mergeProps, withCtx, createVNode, unref, isRef, createTextVNode, toDisplayString, createBlock, openBlock, Fragment, renderList,
|
|
14
|
+
import { defineComponent, reactive, ref, watch, mergeProps, withCtx, createVNode, unref, isRef, createTextVNode, toDisplayString, createBlock, createCommentVNode, openBlock, Fragment, renderList, withModifiers, useSSRContext } from 'vue';
|
|
15
15
|
import { ssrRenderComponent, ssrInterpolate, ssrRenderList, ssrIncludeBooleanAttr } from 'vue/server-renderer';
|
|
16
16
|
import { T as defaultNotificationPreferences } from '../nitro/nitro.mjs';
|
|
17
17
|
import { u as useAuth } from './useAuth-rW9toE_m.mjs';
|
|
@@ -234,6 +234,36 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
234
234
|
year: "numeric"
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
|
+
const appUrl = ref("");
|
|
238
|
+
const appUrlSaving = ref(false);
|
|
239
|
+
async function saveAppUrl() {
|
|
240
|
+
appUrlSaving.value = true;
|
|
241
|
+
try {
|
|
242
|
+
if (appUrl.value) {
|
|
243
|
+
const exists = secretsData.value.some((s) => s.key === "APP_URL");
|
|
244
|
+
if (exists) {
|
|
245
|
+
await $fetch("/api/secrets/APP_URL", {
|
|
246
|
+
method: "PUT",
|
|
247
|
+
body: { value: appUrl.value, description: "Public URL for webhooks and auth callbacks" }
|
|
248
|
+
});
|
|
249
|
+
} else {
|
|
250
|
+
await $fetch("/api/secrets", {
|
|
251
|
+
method: "POST",
|
|
252
|
+
body: { key: "APP_URL", value: appUrl.value, description: "Public URL for webhooks and auth callbacks" }
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
} else {
|
|
256
|
+
const exists = secretsData.value.some((s) => s.key === "APP_URL");
|
|
257
|
+
if (exists)
|
|
258
|
+
await $fetch("/api/secrets/APP_URL", { method: "DELETE" });
|
|
259
|
+
}
|
|
260
|
+
toast.add({ title: "Public URL saved", description: "Restart running integrations for changes to take effect.", color: "success" });
|
|
261
|
+
await fetchSecrets();
|
|
262
|
+
} catch {
|
|
263
|
+
toast.add({ title: "Failed to save URL", color: "error" });
|
|
264
|
+
}
|
|
265
|
+
appUrlSaving.value = false;
|
|
266
|
+
}
|
|
237
267
|
const notifPrefs = ref({ ...defaultNotificationPreferences });
|
|
238
268
|
const notifLoading = ref(false);
|
|
239
269
|
const notifSaving = ref(false);
|
|
@@ -339,12 +369,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
339
369
|
google: "Google Suite",
|
|
340
370
|
email: "Work Email"
|
|
341
371
|
};
|
|
342
|
-
const
|
|
343
|
-
telegram: "TELEGRAM_BOT_TOKEN",
|
|
344
|
-
discord: "DISCORD_BOT_TOKEN",
|
|
345
|
-
imessage:
|
|
346
|
-
google:
|
|
347
|
-
email:
|
|
372
|
+
const platformRequiredSecrets = {
|
|
373
|
+
telegram: ["TELEGRAM_BOT_TOKEN"],
|
|
374
|
+
discord: ["DISCORD_BOT_TOKEN"],
|
|
375
|
+
imessage: [],
|
|
376
|
+
google: [],
|
|
377
|
+
email: []
|
|
348
378
|
};
|
|
349
379
|
const platformOptions = [
|
|
350
380
|
{ value: "telegram", label: "Telegram", icon: "i-lucide-send" },
|
|
@@ -353,6 +383,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
353
383
|
{ value: "google", label: "Google Suite", icon: "i-lucide-mail" },
|
|
354
384
|
{ value: "email", label: "Email (IMAP)", icon: "i-lucide-at-sign" }
|
|
355
385
|
];
|
|
386
|
+
function getMissingSecrets(platform) {
|
|
387
|
+
const required = platformRequiredSecrets[platform];
|
|
388
|
+
if (!required.length) return [];
|
|
389
|
+
const existing = new Set(secretsData.value.map((s) => s.key));
|
|
390
|
+
return required.filter((k) => !existing.has(k));
|
|
391
|
+
}
|
|
356
392
|
const healthColors = {
|
|
357
393
|
connected: "text-success",
|
|
358
394
|
disconnected: "text-dimmed",
|
|
@@ -475,6 +511,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
475
511
|
toast.add({ title: "Name is required", color: "error" });
|
|
476
512
|
return;
|
|
477
513
|
}
|
|
514
|
+
const missing = getMissingSecrets(bridgeForm.platform);
|
|
515
|
+
if (missing.length) {
|
|
516
|
+
toast.add({
|
|
517
|
+
title: "Missing required secrets",
|
|
518
|
+
description: `Add ${missing.join(", ")} in the Secrets tab first.`,
|
|
519
|
+
color: "error"
|
|
520
|
+
});
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
478
523
|
bridgeSaving.value = true;
|
|
479
524
|
try {
|
|
480
525
|
await $fetch("/api/bridges", {
|
|
@@ -613,11 +658,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
613
658
|
const _component_UFormField = _sfc_main$7;
|
|
614
659
|
const _component_UInput = _sfc_main$8;
|
|
615
660
|
const _component_UButton = _sfc_main$8$1;
|
|
616
|
-
const _component_USeparator = _sfc_main$
|
|
617
|
-
const _component_UTable = _sfc_main$
|
|
661
|
+
const _component_USeparator = _sfc_main$b;
|
|
662
|
+
const _component_UTable = _sfc_main$e;
|
|
618
663
|
const _component_UIcon = _sfc_main$d;
|
|
619
664
|
const _component_USkeleton = _sfc_main$4;
|
|
620
|
-
const _component_USwitch = _sfc_main$
|
|
665
|
+
const _component_USwitch = _sfc_main$c;
|
|
621
666
|
const _component_UModal = _sfc_main$5;
|
|
622
667
|
const _component_USelect = _sfc_main$9;
|
|
623
668
|
_push(ssrRenderComponent(_component_UDashboardPanel, mergeProps({
|
|
@@ -1077,6 +1122,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1077
1122
|
}),
|
|
1078
1123
|
_: 1
|
|
1079
1124
|
}, _parent3, _scopeId2));
|
|
1125
|
+
if (getMissingSecrets(unref(bridgeForm).platform).length) {
|
|
1126
|
+
_push3(`<div class="flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"${_scopeId2}>`);
|
|
1127
|
+
_push3(ssrRenderComponent(_component_UIcon, {
|
|
1128
|
+
name: "i-lucide-alert-triangle",
|
|
1129
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
1130
|
+
}, null, _parent3, _scopeId2));
|
|
1131
|
+
_push3(`<div${_scopeId2}><p class="font-medium text-error"${_scopeId2}> Missing required secrets </p><p class="text-dimmed mt-1"${_scopeId2}> Add the following in Settings → Secrets before creating: </p><ul class="mt-1 space-y-0.5"${_scopeId2}><!--[-->`);
|
|
1132
|
+
ssrRenderList(getMissingSecrets(unref(bridgeForm).platform), (key) => {
|
|
1133
|
+
_push3(`<li${_scopeId2}><code class="text-xs bg-elevated px-1.5 py-0.5 rounded"${_scopeId2}>${ssrInterpolate(key)}</code></li>`);
|
|
1134
|
+
});
|
|
1135
|
+
_push3(`<!--]--></ul></div></div>`);
|
|
1136
|
+
} else {
|
|
1137
|
+
_push3(`<!---->`);
|
|
1138
|
+
}
|
|
1080
1139
|
_push3(ssrRenderComponent(_component_UFormField, {
|
|
1081
1140
|
label: "Name",
|
|
1082
1141
|
name: "name"
|
|
@@ -1120,6 +1179,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1120
1179
|
}, _parent3, _scopeId2));
|
|
1121
1180
|
_push3(ssrRenderComponent(_component_UButton, {
|
|
1122
1181
|
loading: unref(bridgeSaving),
|
|
1182
|
+
disabled: getMissingSecrets(unref(bridgeForm).platform).length > 0,
|
|
1123
1183
|
onClick: handleBridgeCreate
|
|
1124
1184
|
}, {
|
|
1125
1185
|
default: withCtx((_3, _push4, _parent4, _scopeId3) => {
|
|
@@ -1152,6 +1212,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1152
1212
|
]),
|
|
1153
1213
|
_: 1
|
|
1154
1214
|
}),
|
|
1215
|
+
getMissingSecrets(unref(bridgeForm).platform).length ? (openBlock(), createBlock("div", {
|
|
1216
|
+
key: 0,
|
|
1217
|
+
class: "flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"
|
|
1218
|
+
}, [
|
|
1219
|
+
createVNode(_component_UIcon, {
|
|
1220
|
+
name: "i-lucide-alert-triangle",
|
|
1221
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
1222
|
+
}),
|
|
1223
|
+
createVNode("div", null, [
|
|
1224
|
+
createVNode("p", { class: "font-medium text-error" }, " Missing required secrets "),
|
|
1225
|
+
createVNode("p", { class: "text-dimmed mt-1" }, " Add the following in Settings → Secrets before creating: "),
|
|
1226
|
+
createVNode("ul", { class: "mt-1 space-y-0.5" }, [
|
|
1227
|
+
(openBlock(true), createBlock(Fragment, null, renderList(getMissingSecrets(unref(bridgeForm).platform), (key) => {
|
|
1228
|
+
return openBlock(), createBlock("li", { key }, [
|
|
1229
|
+
createVNode("code", { class: "text-xs bg-elevated px-1.5 py-0.5 rounded" }, toDisplayString(key), 1)
|
|
1230
|
+
]);
|
|
1231
|
+
}), 128))
|
|
1232
|
+
])
|
|
1233
|
+
])
|
|
1234
|
+
])) : createCommentVNode("", true),
|
|
1155
1235
|
createVNode(_component_UFormField, {
|
|
1156
1236
|
label: "Name",
|
|
1157
1237
|
name: "name"
|
|
@@ -1178,13 +1258,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1178
1258
|
}, 8, ["onClick"]),
|
|
1179
1259
|
createVNode(_component_UButton, {
|
|
1180
1260
|
loading: unref(bridgeSaving),
|
|
1261
|
+
disabled: getMissingSecrets(unref(bridgeForm).platform).length > 0,
|
|
1181
1262
|
onClick: handleBridgeCreate
|
|
1182
1263
|
}, {
|
|
1183
1264
|
default: withCtx(() => [
|
|
1184
1265
|
createTextVNode(" Create ")
|
|
1185
1266
|
]),
|
|
1186
1267
|
_: 1
|
|
1187
|
-
}, 8, ["loading"])
|
|
1268
|
+
}, 8, ["loading", "disabled"])
|
|
1188
1269
|
])
|
|
1189
1270
|
])
|
|
1190
1271
|
];
|
|
@@ -1299,13 +1380,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1299
1380
|
body: withCtx((_2, _push3, _parent3, _scopeId2) => {
|
|
1300
1381
|
if (_push3) {
|
|
1301
1382
|
_push3(`<div class="space-y-4"${_scopeId2}>`);
|
|
1302
|
-
if (unref(editingBridge) &&
|
|
1383
|
+
if (unref(editingBridge) && platformRequiredSecrets[unref(editingBridge).platform].length) {
|
|
1303
1384
|
_push3(`<div class="flex items-start gap-2 rounded-lg bg-elevated p-3 text-sm"${_scopeId2}>`);
|
|
1304
1385
|
_push3(ssrRenderComponent(_component_UIcon, {
|
|
1305
1386
|
name: "i-lucide-info",
|
|
1306
1387
|
class: "size-4 mt-0.5 text-dimmed shrink-0"
|
|
1307
1388
|
}, null, _parent3, _scopeId2));
|
|
1308
|
-
_push3(`<span class="text-dimmed"${_scopeId2}> Requires
|
|
1389
|
+
_push3(`<span class="text-dimmed"${_scopeId2}> Requires <!--[-->`);
|
|
1390
|
+
ssrRenderList(platformRequiredSecrets[unref(editingBridge).platform], (key, i) => {
|
|
1391
|
+
_push3(`<!--[--><code class="bg-elevated px-1 py-0.5 rounded text-xs"${_scopeId2}>${ssrInterpolate(key)}</code>`);
|
|
1392
|
+
if (i < platformRequiredSecrets[unref(editingBridge).platform].length - 1) {
|
|
1393
|
+
_push3(`<!--[-->, <!--]-->`);
|
|
1394
|
+
} else {
|
|
1395
|
+
_push3(`<!---->`);
|
|
1396
|
+
}
|
|
1397
|
+
_push3(`<!--]-->`);
|
|
1398
|
+
});
|
|
1399
|
+
_push3(`<!--]--> in the Secrets tab. </span></div>`);
|
|
1309
1400
|
} else {
|
|
1310
1401
|
_push3(`<!---->`);
|
|
1311
1402
|
}
|
|
@@ -1506,6 +1597,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1506
1597
|
}),
|
|
1507
1598
|
_: 1
|
|
1508
1599
|
}, _parent3, _scopeId2));
|
|
1600
|
+
if (unref(bridgeConfigForm).strategy === "bluebubbles" && !unref(secretsData).some((s) => s.key === "BLUEBUBBLES_PASSWORD")) {
|
|
1601
|
+
_push3(`<div class="flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"${_scopeId2}>`);
|
|
1602
|
+
_push3(ssrRenderComponent(_component_UIcon, {
|
|
1603
|
+
name: "i-lucide-alert-triangle",
|
|
1604
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
1605
|
+
}, null, _parent3, _scopeId2));
|
|
1606
|
+
_push3(`<span class="text-dimmed"${_scopeId2}> BlueBubbles requires secret <code class="text-xs bg-elevated px-1.5 py-0.5 rounded"${_scopeId2}>BLUEBUBBLES_PASSWORD</code> in the Secrets tab. </span></div>`);
|
|
1607
|
+
} else {
|
|
1608
|
+
_push3(`<!---->`);
|
|
1609
|
+
}
|
|
1509
1610
|
if (unref(bridgeConfigForm).strategy === "bluebubbles") {
|
|
1510
1611
|
_push3(ssrRenderComponent(_component_UFormField, {
|
|
1511
1612
|
label: "BlueBubbles URL",
|
|
@@ -1799,7 +1900,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1799
1900
|
} else {
|
|
1800
1901
|
return [
|
|
1801
1902
|
createVNode("div", { class: "space-y-4" }, [
|
|
1802
|
-
unref(editingBridge) &&
|
|
1903
|
+
unref(editingBridge) && platformRequiredSecrets[unref(editingBridge).platform].length ? (openBlock(), createBlock("div", {
|
|
1803
1904
|
key: 0,
|
|
1804
1905
|
class: "flex items-start gap-2 rounded-lg bg-elevated p-3 text-sm"
|
|
1805
1906
|
}, [
|
|
@@ -1808,8 +1909,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1808
1909
|
class: "size-4 mt-0.5 text-dimmed shrink-0"
|
|
1809
1910
|
}),
|
|
1810
1911
|
createVNode("span", { class: "text-dimmed" }, [
|
|
1811
|
-
createTextVNode(" Requires
|
|
1812
|
-
|
|
1912
|
+
createTextVNode(" Requires "),
|
|
1913
|
+
(openBlock(true), createBlock(Fragment, null, renderList(platformRequiredSecrets[unref(editingBridge).platform], (key, i) => {
|
|
1914
|
+
return openBlock(), createBlock(Fragment, { key }, [
|
|
1915
|
+
createVNode("code", { class: "bg-elevated px-1 py-0.5 rounded text-xs" }, toDisplayString(key), 1),
|
|
1916
|
+
i < platformRequiredSecrets[unref(editingBridge).platform].length - 1 ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
1917
|
+
createTextVNode(", ")
|
|
1918
|
+
], 64)) : createCommentVNode("", true)
|
|
1919
|
+
], 64);
|
|
1920
|
+
}), 128)),
|
|
1813
1921
|
createTextVNode(" in the Secrets tab. ")
|
|
1814
1922
|
])
|
|
1815
1923
|
])) : createCommentVNode("", true),
|
|
@@ -1922,8 +2030,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1922
2030
|
]),
|
|
1923
2031
|
_: 1
|
|
1924
2032
|
}),
|
|
1925
|
-
unref(bridgeConfigForm).strategy === "bluebubbles" ? (openBlock(), createBlock(
|
|
2033
|
+
unref(bridgeConfigForm).strategy === "bluebubbles" && !unref(secretsData).some((s) => s.key === "BLUEBUBBLES_PASSWORD") ? (openBlock(), createBlock("div", {
|
|
1926
2034
|
key: 0,
|
|
2035
|
+
class: "flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"
|
|
2036
|
+
}, [
|
|
2037
|
+
createVNode(_component_UIcon, {
|
|
2038
|
+
name: "i-lucide-alert-triangle",
|
|
2039
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
2040
|
+
}),
|
|
2041
|
+
createVNode("span", { class: "text-dimmed" }, [
|
|
2042
|
+
createTextVNode(" BlueBubbles requires secret "),
|
|
2043
|
+
createVNode("code", { class: "text-xs bg-elevated px-1.5 py-0.5 rounded" }, "BLUEBUBBLES_PASSWORD"),
|
|
2044
|
+
createTextVNode(" in the Secrets tab. ")
|
|
2045
|
+
])
|
|
2046
|
+
])) : createCommentVNode("", true),
|
|
2047
|
+
unref(bridgeConfigForm).strategy === "bluebubbles" ? (openBlock(), createBlock(_component_UFormField, {
|
|
2048
|
+
key: 1,
|
|
1927
2049
|
label: "BlueBubbles URL",
|
|
1928
2050
|
name: "blueBubblesUrl"
|
|
1929
2051
|
}, {
|
|
@@ -2412,6 +2534,29 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2412
2534
|
]),
|
|
2413
2535
|
app: withCtx(() => [
|
|
2414
2536
|
createVNode("div", { class: "max-w-2xl mx-auto py-6" }, [
|
|
2537
|
+
createVNode("div", { class: "mb-8" }, [
|
|
2538
|
+
createVNode("h3", { class: "text-lg font-semibold mb-1" }, " Public URL "),
|
|
2539
|
+
createVNode("p", { class: "text-sm text-dimmed mb-4" }, " The publicly accessible URL for this instance. Used for Telegram webhooks, auth callbacks, and other integrations that need to reach your server. "),
|
|
2540
|
+
createVNode("div", { class: "flex gap-2" }, [
|
|
2541
|
+
createVNode(_component_UInput, {
|
|
2542
|
+
modelValue: unref(appUrl),
|
|
2543
|
+
"onUpdate:modelValue": ($event) => isRef(appUrl) ? appUrl.value = $event : null,
|
|
2544
|
+
placeholder: "https://example.com",
|
|
2545
|
+
class: "flex-1"
|
|
2546
|
+
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
|
|
2547
|
+
createVNode(_component_UButton, {
|
|
2548
|
+
loading: unref(appUrlSaving),
|
|
2549
|
+
onClick: saveAppUrl
|
|
2550
|
+
}, {
|
|
2551
|
+
default: withCtx(() => [
|
|
2552
|
+
createTextVNode(" Save ")
|
|
2553
|
+
]),
|
|
2554
|
+
_: 1
|
|
2555
|
+
}, 8, ["loading"])
|
|
2556
|
+
]),
|
|
2557
|
+
createVNode("p", { class: "text-xs text-dimmed mt-2" }, " Leave empty to use long-polling for Telegram instead of webhooks. Changes require restarting running integrations. ")
|
|
2558
|
+
]),
|
|
2559
|
+
createVNode(_component_USeparator, { class: "mb-8" }),
|
|
2415
2560
|
createVNode("div", { class: "mb-6" }, [
|
|
2416
2561
|
createVNode("h3", { class: "text-lg font-semibold mb-1" }, " Notification Preferences "),
|
|
2417
2562
|
createVNode("p", { class: "text-sm text-dimmed" }, " Choose which resource changes show toast notifications. ")
|
|
@@ -2641,6 +2786,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2641
2786
|
]),
|
|
2642
2787
|
_: 1
|
|
2643
2788
|
}),
|
|
2789
|
+
getMissingSecrets(unref(bridgeForm).platform).length ? (openBlock(), createBlock("div", {
|
|
2790
|
+
key: 0,
|
|
2791
|
+
class: "flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"
|
|
2792
|
+
}, [
|
|
2793
|
+
createVNode(_component_UIcon, {
|
|
2794
|
+
name: "i-lucide-alert-triangle",
|
|
2795
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
2796
|
+
}),
|
|
2797
|
+
createVNode("div", null, [
|
|
2798
|
+
createVNode("p", { class: "font-medium text-error" }, " Missing required secrets "),
|
|
2799
|
+
createVNode("p", { class: "text-dimmed mt-1" }, " Add the following in Settings → Secrets before creating: "),
|
|
2800
|
+
createVNode("ul", { class: "mt-1 space-y-0.5" }, [
|
|
2801
|
+
(openBlock(true), createBlock(Fragment, null, renderList(getMissingSecrets(unref(bridgeForm).platform), (key) => {
|
|
2802
|
+
return openBlock(), createBlock("li", { key }, [
|
|
2803
|
+
createVNode("code", { class: "text-xs bg-elevated px-1.5 py-0.5 rounded" }, toDisplayString(key), 1)
|
|
2804
|
+
]);
|
|
2805
|
+
}), 128))
|
|
2806
|
+
])
|
|
2807
|
+
])
|
|
2808
|
+
])) : createCommentVNode("", true),
|
|
2644
2809
|
createVNode(_component_UFormField, {
|
|
2645
2810
|
label: "Name",
|
|
2646
2811
|
name: "name"
|
|
@@ -2667,13 +2832,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2667
2832
|
}, 8, ["onClick"]),
|
|
2668
2833
|
createVNode(_component_UButton, {
|
|
2669
2834
|
loading: unref(bridgeSaving),
|
|
2835
|
+
disabled: getMissingSecrets(unref(bridgeForm).platform).length > 0,
|
|
2670
2836
|
onClick: handleBridgeCreate
|
|
2671
2837
|
}, {
|
|
2672
2838
|
default: withCtx(() => [
|
|
2673
2839
|
createTextVNode(" Create ")
|
|
2674
2840
|
]),
|
|
2675
2841
|
_: 1
|
|
2676
|
-
}, 8, ["loading"])
|
|
2842
|
+
}, 8, ["loading", "disabled"])
|
|
2677
2843
|
])
|
|
2678
2844
|
])
|
|
2679
2845
|
]),
|
|
@@ -2731,7 +2897,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2731
2897
|
]),
|
|
2732
2898
|
body: withCtx(() => [
|
|
2733
2899
|
createVNode("div", { class: "space-y-4" }, [
|
|
2734
|
-
unref(editingBridge) &&
|
|
2900
|
+
unref(editingBridge) && platformRequiredSecrets[unref(editingBridge).platform].length ? (openBlock(), createBlock("div", {
|
|
2735
2901
|
key: 0,
|
|
2736
2902
|
class: "flex items-start gap-2 rounded-lg bg-elevated p-3 text-sm"
|
|
2737
2903
|
}, [
|
|
@@ -2740,8 +2906,15 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2740
2906
|
class: "size-4 mt-0.5 text-dimmed shrink-0"
|
|
2741
2907
|
}),
|
|
2742
2908
|
createVNode("span", { class: "text-dimmed" }, [
|
|
2743
|
-
createTextVNode(" Requires
|
|
2744
|
-
|
|
2909
|
+
createTextVNode(" Requires "),
|
|
2910
|
+
(openBlock(true), createBlock(Fragment, null, renderList(platformRequiredSecrets[unref(editingBridge).platform], (key, i) => {
|
|
2911
|
+
return openBlock(), createBlock(Fragment, { key }, [
|
|
2912
|
+
createVNode("code", { class: "bg-elevated px-1 py-0.5 rounded text-xs" }, toDisplayString(key), 1),
|
|
2913
|
+
i < platformRequiredSecrets[unref(editingBridge).platform].length - 1 ? (openBlock(), createBlock(Fragment, { key: 0 }, [
|
|
2914
|
+
createTextVNode(", ")
|
|
2915
|
+
], 64)) : createCommentVNode("", true)
|
|
2916
|
+
], 64);
|
|
2917
|
+
}), 128)),
|
|
2745
2918
|
createTextVNode(" in the Secrets tab. ")
|
|
2746
2919
|
])
|
|
2747
2920
|
])) : createCommentVNode("", true),
|
|
@@ -2854,8 +3027,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
2854
3027
|
]),
|
|
2855
3028
|
_: 1
|
|
2856
3029
|
}),
|
|
2857
|
-
unref(bridgeConfigForm).strategy === "bluebubbles" ? (openBlock(), createBlock(
|
|
3030
|
+
unref(bridgeConfigForm).strategy === "bluebubbles" && !unref(secretsData).some((s) => s.key === "BLUEBUBBLES_PASSWORD") ? (openBlock(), createBlock("div", {
|
|
2858
3031
|
key: 0,
|
|
3032
|
+
class: "flex items-start gap-2 rounded-lg bg-error/10 border border-error/20 p-3 text-sm"
|
|
3033
|
+
}, [
|
|
3034
|
+
createVNode(_component_UIcon, {
|
|
3035
|
+
name: "i-lucide-alert-triangle",
|
|
3036
|
+
class: "size-4 mt-0.5 text-error shrink-0"
|
|
3037
|
+
}),
|
|
3038
|
+
createVNode("span", { class: "text-dimmed" }, [
|
|
3039
|
+
createTextVNode(" BlueBubbles requires secret "),
|
|
3040
|
+
createVNode("code", { class: "text-xs bg-elevated px-1.5 py-0.5 rounded" }, "BLUEBUBBLES_PASSWORD"),
|
|
3041
|
+
createTextVNode(" in the Secrets tab. ")
|
|
3042
|
+
])
|
|
3043
|
+
])) : createCommentVNode("", true),
|
|
3044
|
+
unref(bridgeConfigForm).strategy === "bluebubbles" ? (openBlock(), createBlock(_component_UFormField, {
|
|
3045
|
+
key: 1,
|
|
2859
3046
|
label: "BlueBubbles URL",
|
|
2860
3047
|
name: "blueBubblesUrl"
|
|
2861
3048
|
}, {
|
|
@@ -3042,4 +3229,4 @@ _sfc_main.setup = (props, ctx) => {
|
|
|
3042
3229
|
};
|
|
3043
3230
|
|
|
3044
3231
|
export { _sfc_main as default };
|
|
3045
|
-
//# sourceMappingURL=settings-
|
|
3232
|
+
//# sourceMappingURL=settings-B2KXoGcz.mjs.map
|