@xopcai/xopc 0.0.66 → 0.0.67
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/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js → agents-CmhOU0fB.js} +2 -2
- package/dist/gateway/static/root/assets/{agents-JiJR38n1.js.map → agents-CmhOU0fB.js.map} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js → apps-page-CzS9A_6L.js} +2 -2
- package/dist/gateway/static/root/assets/{apps-page-aBDyr7Im.js.map → apps-page-CzS9A_6L.js.map} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js → channels-settings-Bn0YSztA.js} +2 -2
- package/dist/gateway/static/root/assets/{channels-settings-DXxfgG4N.js.map → channels-settings-Bn0YSztA.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js → cron-dreaming-jobs-bAYsiHdF.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-dreaming-jobs-3--QJSP5.js.map → cron-dreaming-jobs-bAYsiHdF.js.map} +1 -1
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js → cron-page-CKqDtScu.js} +2 -2
- package/dist/gateway/static/root/assets/{cron-page-CCn-JwBy.js.map → cron-page-CKqDtScu.js.map} +1 -1
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js → dist-CUMhnSuX.js} +2 -2
- package/dist/gateway/static/root/assets/{dist-BS-cwfHQ.js.map → dist-CUMhnSuX.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js → extension-debug-page-BDls5xp3.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-debug-page-M8JS4Jid.js.map → extension-debug-page-BDls5xp3.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js → extension-page-BSfv53OO.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js.map → extension-page-BSfv53OO.js.map} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js → extension-settings-page-B0nkVsLi.js} +2 -2
- package/dist/gateway/static/root/assets/{extension-settings-page-DeY2M2di.js.map → extension-settings-page-B0nkVsLi.js.map} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js → heartbeat-config-api-P5zdbIBw.js} +2 -2
- package/dist/gateway/static/root/assets/{heartbeat-config-api-DWmeyjyR.js.map → heartbeat-config-api-P5zdbIBw.js.map} +1 -1
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js → index-DAglRwh4.js} +5 -5
- package/dist/gateway/static/root/assets/{index-Cc57jhuG.js.map → index-DAglRwh4.js.map} +1 -1
- package/dist/gateway/static/root/assets/index-DHj3Cf9B.css +1 -0
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js → logs-page-CfGDv4k7.js} +2 -2
- package/dist/gateway/static/root/assets/{logs-page-kIsSDMqb.js.map → logs-page-CfGDv4k7.js.map} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js → sessions-page-DoGE8N-O.js} +2 -2
- package/dist/gateway/static/root/assets/{sessions-page-Da9gjMh7.js.map → sessions-page-DoGE8N-O.js.map} +1 -1
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js +3 -0
- package/dist/gateway/static/root/assets/settings-page-C5VrwDoO.js.map +1 -0
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js → skills-page-ADUi69Fa.js} +2 -2
- package/dist/gateway/static/root/assets/{skills-page-B_msZcLx.js.map → skills-page-ADUi69Fa.js.map} +1 -1
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js → use-image-provider-credentials-C4x4dNv2.js} +2 -2
- package/dist/gateway/static/root/assets/{use-image-provider-credentials-Bs8xl2E3.js.map → use-image-provider-credentials-C4x4dNv2.js.map} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/cli/commands/tunnel.js +69 -8
- package/dist/src/cli/commands/tunnel.js.map +1 -1
- package/dist/src/config/schema.d.ts +2 -0
- package/dist/src/config/schema.js +2 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +2 -5
- package/dist/src/gateway/hono/lib/config-payload.js +3 -5
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +12 -10
- package/dist/src/gateway/hono/routes/tunnel.js.map +1 -1
- package/dist/src/tunnel/acme-client.d.ts +11 -0
- package/dist/src/tunnel/acme-client.js +54 -10
- package/dist/src/tunnel/acme-client.js.map +1 -1
- package/dist/src/tunnel/env.d.ts +14 -3
- package/dist/src/tunnel/env.js +34 -5
- package/dist/src/tunnel/env.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.d.ts +6 -1
- package/dist/src/tunnel/frpc-binary.js +66 -40
- package/dist/src/tunnel/frpc-binary.js.map +1 -1
- package/dist/src/tunnel/frpc-extract.d.ts +10 -0
- package/dist/src/tunnel/frpc-extract.js +129 -0
- package/dist/src/tunnel/frpc-extract.js.map +1 -0
- package/dist/src/tunnel/gateway-lifecycle.d.ts +3 -1
- package/dist/src/tunnel/gateway-lifecycle.js +6 -4
- package/dist/src/tunnel/gateway-lifecycle.js.map +1 -1
- package/dist/src/tunnel/index.d.ts +3 -1
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/tunnel/tls-server.js +5 -0
- package/dist/src/tunnel/tls-server.js.map +1 -1
- package/dist/src/tunnel/tunnel-config.js +11 -1
- package/dist/src/tunnel/tunnel-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-e2e-config.d.ts +4 -1
- package/dist/src/tunnel/tunnel-e2e-config.js +10 -3
- package/dist/src/tunnel/tunnel-e2e-config.js.map +1 -1
- package/dist/src/tunnel/tunnel-service.d.ts +4 -0
- package/dist/src/tunnel/tunnel-service.js +66 -5
- package/dist/src/tunnel/tunnel-service.js.map +1 -1
- package/dist/src/tunnel/tunnel-types.d.ts +16 -0
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/index-B5gp15_q.css +0 -1
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js +0 -3
- package/dist/gateway/static/root/assets/settings-page-B0spIRVS.js.map +0 -1
package/dist/gateway/static/root/assets/{extension-page-C8gjVE_t.js → extension-page-BSfv53OO.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{Dn as i,Ui as a,n as o,vn as s,yn as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=extension-page-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{Dn as i,Ui as a,n as o,vn as s,yn as c}from"./index-DAglRwh4.js";var l=n(),u=e(t(),1),d=r();function f(){let e=(0,l.c)(26),{extensionId:t,pageId:n}=a(),r=c(),f=i(m),g=i(p),_,v,y;e[0]!==t||e[1]!==r||e[2]!==n?(_=t?r.find(e=>e.id===t&&s(e)):void 0,v=_?.ui?.contributions?.pages,y=t&&v?.length?n?v.find(e=>e.id===n||e.id===`${t}.${n}`):v[0]:void 0,e[0]=t,e[1]=r,e[2]=n,e[3]=_,e[4]=v,e[5]=y):(_=e[3],v=e[4],y=e[5]);let b=y,x,S;if(e[6]!==g||e[7]!==_||e[8]!==t||e[9]!==b||e[10]!==f?(x=()=>{if(!t||!_||!b)return g(),()=>g();let e=b.title?.trim()||_.name||t;return f({startExtra:null,main:(0,d.jsx)(`div`,{className:`w-full min-w-0 px-3 sm:px-5 xl:px-6`,children:(0,d.jsx)(`h1`,{className:`min-w-0 truncate text-base font-semibold tracking-tight text-fg`,title:e,children:e})}),end:null}),()=>g()},S=[g,_,t,b,f],e[6]=g,e[7]=_,e[8]=t,e[9]=b,e[10]=f,e[11]=x,e[12]=S):(x=e[11],S=e[12]),(0,u.useLayoutEffect)(x,S),!t){let t;return e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,d.jsx)(h,{message:`No extension ID provided.`}),e[13]=t):t=e[13],t}if(!_){let n=`Extension "${t}" not found or has no UI.`,r;return e[14]===n?r=e[15]:(r=(0,d.jsx)(h,{message:n}),e[14]=n,e[15]=r),r}if(!v?.length){let n=`Extension "${t}" has no page contributions.`,r;return e[16]===n?r=e[17]:(r=(0,d.jsx)(h,{message:n}),e[16]=n,e[17]=r),r}if(!b){let r=`Page "${n}" not found in extension "${t}".`,i;return e[18]===r?i=e[19]:(i=(0,d.jsx)(h,{message:r}),e[18]=r,e[19]=i),i}let C=_.ui?.permissions,w;return e[20]!==_.name||e[21]!==t||e[22]!==b.entrypoint||e[23]!==b.title||e[24]!==C?(w=(0,d.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,d.jsx)(o,{extensionId:t,extensionName:_.name,entrypoint:b.entrypoint,permissions:C,title:b.title,className:`min-h-0 flex-1`,fixedHeight:void 0,maxHeight:99999})}),e[20]=_.name,e[21]=t,e[22]=b.entrypoint,e[23]=b.title,e[24]=C,e[25]=w):w=e[25],w}function p(e){return e.clearPageHeader}function m(e){return e.setPageHeader}function h(e){let t=(0,l.c)(2),{message:n}=e,r;return t[0]===n?r=t[1]:(r=(0,d.jsx)(`div`,{className:`flex min-h-[min(40vh,16rem)] flex-1 items-center justify-center`,children:(0,d.jsx)(`div`,{className:`text-center`,children:(0,d.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n})})}),t[0]=n,t[1]=r),r}export{f as ExtensionPage};
|
|
2
|
+
//# sourceMappingURL=extension-page-BSfv53OO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-page-
|
|
1
|
+
{"version":3,"file":"extension-page-BSfv53OO.js","names":["useLayoutEffect","useParams","usePageHeaderStore","ExtensionIframeHost","extensionShellUiReachable","useExtensions","ExtensionPage","$","_c","extensionId","pageId","extensions","setPageHeader","_temp","clearPageHeader","_temp2","extension","pages","t0","find","ext","id","undefined","ui","contributions","length","p","page","t1","t2","headline","title","trim","name","startExtra","main","end","t3","Symbol","for","t4","permissions","entrypoint","s_0","s","ExtensionPageNotFound","message"],"sources":["../../../../../web/src/features/extensions/extension-page.tsx"],"sourcesContent":["/**\n * ExtensionPage — renders a full-page extension UI via ExtensionIframeHost.\n *\n * Mounted at /apps/:extensionId (or /apps/:extensionId/:pageId for multi-page extensions).\n */\n\nimport { useLayoutEffect } from 'react';\nimport { useParams } from 'react-router-dom';\n\nimport { usePageHeaderStore } from '@/stores/page-header-store';\n\nimport { ExtensionIframeHost } from './extension-iframe-host';\nimport { extensionShellUiReachable, useExtensions } from './extension-provider';\n\nexport function ExtensionPage() {\n const { extensionId, pageId } = useParams<{ extensionId: string; pageId?: string }>();\n const extensions = useExtensions();\n const setPageHeader = usePageHeaderStore((s) => s.setPageHeader);\n const clearPageHeader = usePageHeaderStore((s) => s.clearPageHeader);\n\n const extension = extensionId\n ? extensions.find((ext) => ext.id === extensionId && extensionShellUiReachable(ext))\n : undefined;\n const pages = extension?.ui?.contributions?.pages;\n const page =\n extensionId && pages?.length\n ? pageId\n ? pages.find((p) => p.id === pageId || p.id === `${extensionId}.${pageId}`)\n : pages[0]\n : undefined;\n\n useLayoutEffect(() => {\n if (!extensionId || !extension || !page) {\n clearPageHeader();\n return () => clearPageHeader();\n }\n const headline = page.title?.trim() || extension.name || extensionId;\n setPageHeader({\n startExtra: null,\n main: (\n <div className=\"w-full min-w-0 px-3 sm:px-5 xl:px-6\">\n <h1\n className=\"min-w-0 truncate text-base font-semibold tracking-tight text-fg\"\n title={headline}\n >\n {headline}\n </h1>\n </div>\n ),\n end: null,\n });\n return () => clearPageHeader();\n }, [clearPageHeader, extension, extensionId, page, setPageHeader]);\n\n if (!extensionId) {\n return <ExtensionPageNotFound message=\"No extension ID provided.\" />;\n }\n\n if (!extension) {\n return (\n <ExtensionPageNotFound message={`Extension \"${extensionId}\" not found or has no UI.`} />\n );\n }\n\n if (!pages?.length) {\n return (\n <ExtensionPageNotFound message={`Extension \"${extensionId}\" has no page contributions.`} />\n );\n }\n\n if (!page) {\n return (\n <ExtensionPageNotFound message={`Page \"${pageId}\" not found in extension \"${extensionId}\".`} />\n );\n }\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <ExtensionIframeHost\n extensionId={extensionId}\n extensionName={extension.name}\n entrypoint={page.entrypoint}\n permissions={extension.ui?.permissions}\n title={page.title}\n className=\"min-h-0 flex-1\"\n fixedHeight={undefined}\n maxHeight={99999}\n />\n </div>\n );\n}\n\nfunction ExtensionPageNotFound({ message }: { message: string }) {\n return (\n <div className=\"flex min-h-[min(40vh,16rem)] flex-1 items-center justify-center\">\n <div className=\"text-center\">\n <p className=\"text-sm text-fg-muted\">{message}</p>\n </div>\n </div>\n );\n}\n"],"mappings":"8MAcA,SAAOM,GAAA,CAAA,IAAAC,GAAAA,EAAAA,EAAAA,GAAA,GAAA,CACL,CAAAE,cAAAC,UAAgCT,GAAqD,CACrFU,EAAmBN,GAAe,CAClCO,EAAsBV,EAAmBW,EAAuB,CAChEC,EAAwBZ,EAAmBa,EAAyB,CAACC,EAAAC,EAAAC,EAAAX,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAG,GAErEM,EAAkBP,EACdE,EAAUQ,KAAMC,GAASA,EAAGC,KAAQZ,GAAeL,EAA0BgB,EACrE,CAAC,CAFKE,IAAAA,GAGlBL,EAAcD,GAASO,IAAmBC,eAAOP,MAE/CC,EAAAT,GAAeQ,GAAKQ,OAChBf,EACEO,EAAKE,KAAMO,GAAOA,EAACL,KAAQX,GAAUgB,EAACL,KAAQ,GAAGZ,EAAW,GAAIC,IACxD,CAARO,EAAK,GAHXK,IAAAA,GAIaf,EAAA,GAAAE,EAAAF,EAAA,GAAAI,EAAAJ,EAAA,GAAAG,EAAAH,EAAA,GAAAS,EAAAT,EAAA,GAAAU,EAAAV,EAAA,GAAAW,IAAAF,EAAAT,EAAA,GAAAU,EAAAV,EAAA,GAAAW,EAAAX,EAAA,IALf,IAAAoB,EACET,EAIcU,EAAAC,EAyBhB,GAzBgBtB,EAAA,KAAAO,GAAAP,EAAA,KAAAS,GAAAT,EAAA,KAAAE,GAAAF,EAAA,KAAAoB,GAAApB,EAAA,MAAAK,GAEAgB,MAAA,CACd,GAAI,CAACnB,GAAD,CAAiBO,GAAjB,CAA+BW,EAChB,OAAjBb,GAAiB,KACJA,GAAiB,CAEhC,IAAAgB,EAAiBH,EAAII,OAAYC,MAAoB,EAAdhB,EAASiB,MAA/BxB,EAcf,OAbFG,EAAc,CAAAsB,WACA,KAAIC,MAEd,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,gDACb,EAAA,EAAA,KAAA,KAAA,CACY,UAAA,kEACHL,MAAAA,WAENA,EAEL,CAAA,CAAM,CAAA,CAAAM,IAEH,KACN,CAAC,KACWtB,GAAiB,EAC7Be,EAAA,CAACf,EAAiBE,EAAWP,EAAakB,EAAMf,EAAc,CAAAL,EAAA,GAAAO,EAAAP,EAAA,GAAAS,EAAAT,EAAA,GAAAE,EAAAF,EAAA,GAAAoB,EAAApB,EAAA,IAAAK,EAAAL,EAAA,IAAAqB,EAAArB,EAAA,IAAAsB,IAAAD,EAAArB,EAAA,IAAAsB,EAAAtB,EAAA,MArBjEP,EAAAA,EAAAA,iBAAgB4B,EAqBbC,EAA+D,CAE9D,CAACpB,EAAW,CAAA,IAAA4B,EACsD,OADtD9B,EAAA,MAAA+B,OAAAC,IAAA,4BAAA,EACPF,GAAA,EAAA,EAAA,KAAC,EAAD,CAA+B,QAAA,4BAA8B,CAAA,CAAA9B,EAAA,IAAA8B,GAAAA,EAAA9B,EAAA,IAA7D8B,EAGT,GAAI,CAACrB,EAAS,CAEsB,IAAAqB,EAAA,cAAc5B,EAAW,2BAA2B+B,EAAI,OAAJjC,EAAA,MAAA8B,EAAIG,EAAAjC,EAAA,KAAxFiC,GAAA,EAAA,EAAA,KAAC,EAAD,CAAgC,QAAAH,EAAwD,CAAA,CAAA9B,EAAA,IAAA8B,EAAA9B,EAAA,IAAAiC,GAAxFA,EAIJ,GAAI,CAACvB,GAAKQ,OAAQ,CAEkB,IAAAY,EAAA,cAAc5B,EAAW,8BAA8B+B,EAAI,OAAJjC,EAAA,MAAA8B,EAAIG,EAAAjC,EAAA,KAA3FiC,GAAA,EAAA,EAAA,KAAC,EAAD,CAAgC,QAAAH,EAA2D,CAAA,CAAA9B,EAAA,IAAA8B,EAAA9B,EAAA,IAAAiC,GAA3FA,EAIJ,GAAI,CAACb,EAAI,CAE2B,IAAAU,EAAA,SAAS3B,EAAM,4BAA6BD,EAAW,IAAI+B,EAAI,OAAJjC,EAAA,MAAA8B,EAAIG,EAAAjC,EAAA,KAA/FiC,GAAA,EAAA,EAAA,KAAC,EAAD,CAAgC,QAAAH,EAA+D,CAAA,CAAA9B,EAAA,IAAA8B,EAAA9B,EAAA,IAAAiC,GAA/FA,EAUe,IAAAH,EAAArB,EAASO,IAAgBkB,YAAAD,EAMpC,OANoCjC,EAAA,MAAAS,EAAAiB,MAAA1B,EAAA,MAAAE,GAAAF,EAAA,MAAAoB,EAAAe,YAAAnC,EAAA,MAAAoB,EAAAI,OAAAxB,EAAA,MAAA8B,GAL1CG,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,yCACb,EAAA,EAAA,KAAC,EAAD,CACe/B,cACE,cAAAO,EAASiB,KACZ,WAAAN,EAAIe,WACH,YAAAL,EACN,MAAAV,EAAII,MACD,UAAA,iBACGT,YAAAA,IAAAA,GACF,UAAA,MAEf,CAAA,CAAM,CAAA,CAAAf,EAAA,IAAAS,EAAAiB,KAAA1B,EAAA,IAAAE,EAAAF,EAAA,IAAAoB,EAAAe,WAAAnC,EAAA,IAAAoB,EAAAI,MAAAxB,EAAA,IAAA8B,EAAA9B,EAAA,IAAAiC,GAAAA,EAAAjC,EAAA,IAXNiC,EA/DG,SAAAzB,EAAA4B,EAAA,CAAA,OAI6CC,EAAC9B,gBAJ9C,SAAAD,EAAA+B,EAAA,CAAA,OAG2CA,EAAChC,cA2EnD,SAAAiC,EAAA3B,EAAA,CAAA,IAAAX,GAAAA,EAAAA,EAAAA,GAAA,EAAA,CAA+B,CAAAuC,WAAA5B,EAAgCU,EAMrD,OANqDrB,EAAA,KAAAuC,EAMrDlB,EAAArB,EAAA,IAJNqB,GAAA,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,4EACb,EAAA,EAAA,KAAA,MAAA,CAAe,UAAA,wBACb,EAAA,EAAA,KAAA,IAAA,CAAa,UAAA,iCAAyBkB,EACxC,CAAA,CACF,CAAA,CAAM,CAAA,CAAAvC,EAAA,GAAAuC,EAAAvC,EAAA,GAAAqB,GAJNA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{i}from"./vendor-swr-CQnUjdeQ.js";import{En as a,Hn as o,Nn as s,On as c,Tn as l,Ui as u,Vn as d,Vr as f,n as p,qn as m,xn as h,yn as g,zi as _}from"./index-Cc57jhuG.js";import{i as v,n as y,r as b,t as x}from"./use-image-provider-credentials-Bs8xl2E3.js";var S=n(),C=e(t(),1),w=r(),T=()=>h(v);function E(e){return{credentialsIntro:e.credentialsIntro,regionHint:e.regionHint,endpointPresetsHint:e.endpointPresetsHint,apiKeyLabel:e.apiKeyLabel,optionalPlaceholder:e.optionalPlaceholder,regionLabel:e.regionLabel,baseUrlLabel:e.baseUrlLabel,imageBaseUrlLabel:e.imageBaseUrlLabel,saveCredentials:e.saveCredentials,savingCredentials:e.savingCredentials,credentialsSaved:e.credentialsSaved,discardCredentials:e.discardCredentials,credentialsNothingToSave:e.credentialsNothingToSave,credentialsSaveError:e.credentialsSaveError,regionPresetDefault:e.regionPresetDefault,regionPresetCustom:e.regionPresetCustom,baseUrlPresetDefault:e.baseUrlPresetDefault,baseUrlPresetCustom:e.baseUrlPresetCustom,openExtensionSettings:e.openExtensionSettings,openImageModelsPage:e.openImageModelsPage,extensionSettingsLinkTitle:e.extensionSettingsLinkTitle,imageModelsLinkTitle:e.imageModelsLinkTitle,configured:e.configured,missingKey:e.missingKey,defaultModel:e.defaultModel,modelsLabel:e.modelsLabel,imageBaseUrlPresetHint:e.imageBaseUrlPresetHint,dashscopeRegion_beijing:e.dashscopeRegion_beijing,dashscopeRegion_singapore:e.dashscopeRegion_singapore,dashscopeRegion_us:e.dashscopeRegion_us,apiKeyMaskedHelp:e.apiKeyMaskedHelp,apiKeyCopy:e.apiKeyCopy,apiKeyCopied:e.apiKeyCopied,apiKeyShow:e.apiKeyShow,apiKeyHide:e.apiKeyHide,apiKeyNotInConfigFile:e.apiKeyNotInConfigFile,apiKeyRevealFailed:e.apiKeyRevealFailed,minimaxClusterLabel:e.minimaxClusterLabel,minimaxClusterHint:e.minimaxClusterHint,falQueueBaseLabel:e.falQueueBaseLabel,falQueueBaseHint:e.falQueueBaseHint}}function D(e){let t=(0,S.c)(39),{extensionId:n}=e,r=s(k),a;t[0]===r?a=t[1]:(a=d(r),t[0]=r,t[1]=a);let o=a,l=o.imageModelsSettings,u=c(O),p;t[2]===u?p=t[3]:(p=u?T():null,t[2]=u,t[3]=p);let m;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m={revalidateOnFocus:!1},t[4]=m):m=t[4];let{data:h,isLoading:g}=i(p,b,m),_;t[5]===h?_=t[6]:(_=h===void 0?[]:h,t[5]=h,t[6]=_);let v=_,C;if(t[7]!==v||t[8]!==n){let e;t[10]===n?e=t[11]:(e=e=>e.id===n,t[10]=n,t[11]=e),C=v.filter(e),t[7]=v,t[8]=n,t[9]=C}else C=t[9];let D=C,A=x(D),j;t[12]===l?j=t[13]:(j=E(l),t[12]=l,t[13]=j);let M=j,N;t[14]!==o.providersSettings.getApiKey||t[15]!==o.providersSettings.getApiKeyCn||t[16]!==o.providersSettings.getApiKeyIntl?(N={getApiKey:o.providersSettings.getApiKey,getApiKeyIntl:o.providersSettings.getApiKeyIntl,getApiKeyCn:o.providersSettings.getApiKeyCn},t[14]=o.providersSettings.getApiKey,t[15]=o.providersSettings.getApiKeyCn,t[16]=o.providersSettings.getApiKeyIntl,t[17]=N):N=t[17];let P=N;if(!u)return null;if(g){let e;return t[18]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-sm text-fg-muted`,children:[(0,w.jsx)(f,{className:`size-4 animate-spin`}),`…`]}),t[18]=e):e=t[18],e}if(D.length===0){let e=r===`zh`?`网关未注册该图像 Provider,或扩展已被禁用。`:`This image provider is not registered on the gateway, or the extension is disabled.`,n;return t[19]===e?n=t[20]:(n=(0,w.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e}),t[19]=e,t[20]=n),n}let F;t[21]!==A||t[22]!==l.credentialsSaveError?(F=()=>void A.saveCredentials(l.credentialsSaveError),t[21]=A,t[22]=l.credentialsSaveError,t[23]=F):F=t[23];let I;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(I=new Set,t[24]=I):I=t[24];let L;return t[25]!==P||t[26]!==A.credDirty||t[27]!==A.credDraft||t[28]!==A.credError||t[29]!==A.credNoopFlash||t[30]!==A.credSavedFlash||t[31]!==A.credSaving||t[32]!==A.onDiscardCredentials||t[33]!==A.updateCredRow||t[34]!==r||t[35]!==M||t[36]!==D||t[37]!==F?(L=(0,w.jsx)(y,{summaries:D,credDraft:A.credDraft,credDirty:A.credDirty,credSaving:A.credSaving,credError:A.credError,credSavedFlash:A.credSavedFlash,credNoopFlash:A.credNoopFlash,updateCredRow:A.updateCredRow,onDiscardCredentials:A.onDiscardCredentials,onSaveCredentials:F,extensionIds:I,showExtensionLinks:!1,showImageModelsLink:!1,language:r,apiKeyLinkLabels:P,messages:M}),t[25]=P,t[26]=A.credDirty,t[27]=A.credDraft,t[28]=A.credError,t[29]=A.credNoopFlash,t[30]=A.credSavedFlash,t[31]=A.credSaving,t[32]=A.onDiscardCredentials,t[33]=A.updateCredRow,t[34]=r,t[35]=M,t[36]=D,t[37]=F,t[38]=L):L=t[38],L}function O(e){return!!e.token}function k(e){return e.language}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function j(e){let t=e[`x-order`];return typeof t==`number`&&!Number.isNaN(t)?t:999}function M(e){let t=e[`x-group`];return typeof t==`string`&&t.length>0?t:``}function N(e){return e[`x-hidden`]===!0}function P(e){let t=e.properties;if(!A(t))return[];let n=[];for(let[e,r]of Object.entries(t))A(r)&&(N(r)||n.push({key:e,sub:r,order:j(r),group:M(r),hidden:!1}));return n.sort((e,t)=>e.order-t.order||e.key.localeCompare(t.key)),n}function F(e){let t=new Map;for(let n of e){let e=n.group;t.has(e)||t.set(e,[]),t.get(e).push(n)}return t}function I(e){let t=(0,S.c)(29),{name:n,s:r,value:i,onChange:a,disabled:o}=e,s=typeof r.description==`string`?r.description:void 0,c=(typeof r[`x-placeholder`]==`string`?r[`x-placeholder`]:null)||s,l=r.format;if(Array.isArray(r.enum)&&r.enum.every(R)){let e;t[0]===s?e=t[1]:(e=s?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:s}):null,t[0]=s,t[1]=e);let c;t[2]===a?c=t[3]:(c=e=>a(e.target.value),t[2]=a,t[3]=c);let l;t[4]===r.enum?l=t[5]:(l=r.enum.map(L),t[4]=r.enum,t[5]=l);let u;t[6]!==o||t[7]!==n||t[8]!==c||t[9]!==l||t[10]!==i?(u=(0,w.jsx)(`select`,{name:n,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg`,value:i,disabled:o,onChange:c,children:l}),t[6]=o,t[7]=n,t[8]=c,t[9]=l,t[10]=i,t[11]=u):u=t[11];let d;return t[12]!==e||t[13]!==u?(d=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[e,u]}),t[12]=e,t[13]=u,t[14]=d):d=t[14],d}let u=l===`password`?`password`:`text`,d;t[15]===s?d=t[16]:(d=s?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:s}):null,t[15]=s,t[16]=d);let f;t[17]===a?f=t[18]:(f=e=>a(e.target.value),t[17]=a,t[18]=f);let p;t[19]!==o||t[20]!==u||t[21]!==n||t[22]!==c||t[23]!==f||t[24]!==i?(p=(0,w.jsx)(`input`,{name:n,type:u,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70`,value:i,placeholder:c,disabled:o,onChange:f}),t[19]=o,t[20]=u,t[21]=n,t[22]=c,t[23]=f,t[24]=i,t[25]=p):p=t[25];let m;return t[26]!==d||t[27]!==p?(m=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[d,p]}),t[26]=d,t[27]=p,t[28]=m):m=t[28],m}function L(e){return(0,w.jsx)(`option`,{value:e,children:e},e)}function R(e){return typeof e==`string`}function z(e){let t=(0,S.c)(11),{s:n,value:r,onChange:i,disabled:a}=e,o=typeof n.description==`string`?n.description:void 0,s;t[0]===o?s=t[1]:(s=o?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:o}):null,t[0]=o,t[1]=s);let c=Number.isFinite(r)?r:0,l;t[2]===i?l=t[3]:(l=e=>i(Number(e.target.value)),t[2]=i,t[3]=l);let u;t[4]!==a||t[5]!==c||t[6]!==l?(u=(0,w.jsx)(`input`,{type:`number`,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg`,value:c,disabled:a,onChange:l}),t[4]=a,t[5]=c,t[6]=l,t[7]=u):u=t[7];let d;return t[8]!==s||t[9]!==u?(d=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[s,u]}),t[8]=s,t[9]=u,t[10]=d):d=t[10],d}function B(e){let t=(0,S.c)(11),{s:n,value:r,onChange:i,disabled:a}=e,o=(typeof n.description==`string`?n.description:void 0)??(typeof n.title==`string`&&n.title.length>0?n.title:`Enable`),s;t[0]===i?s=t[1]:(s=e=>i(e.target.checked),t[0]=i,t[1]=s);let c;t[2]!==a||t[3]!==s||t[4]!==r?(c=(0,w.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border border-edge`,checked:r,disabled:a,onChange:s}),t[2]=a,t[3]=s,t[4]=r,t[5]=c):c=t[5];let l;t[6]===o?l=t[7]:(l=(0,w.jsx)(`span`,{children:o}),t[6]=o,t[7]=l);let u;return t[8]!==c||t[9]!==l?(u=(0,w.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-fg`,children:[c,l]}),t[8]=c,t[9]=l,t[10]=u):u=t[10],u}function V(e){let t=(0,S.c)(21),{s:n,value:r,onChange:i,disabled:a}=e,o=typeof n.description==`string`?n.description:void 0,s=n.items;if(!(A(s)&&s.type===`string`)){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Unsupported array type`}),t[0]=e):e=t[0],e}let c;t[1]!==i||t[2]!==r?(c=e=>{let t=e.trim();!t||r.includes(t)||i([...r,t])},t[1]=i,t[2]=r,t[3]=c):c=t[3];let l=c,u;t[4]===o?u=t[5]:(u=o?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:o}):null,t[4]=o,t[5]=u);let d;t[6]!==a||t[7]!==i||t[8]!==r?(d=r.map(e=>(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm`,children:[e,(0,w.jsx)(`button`,{type:`button`,className:`text-fg-muted hover:text-fg`,disabled:a,onClick:()=>i(r.filter(t=>t!==e)),children:`×`})]},e)),t[6]=a,t[7]=i,t[8]=r,t[9]=d):d=t[9];let f;t[10]===d?f=t[11]:(f=(0,w.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:d}),t[10]=d,t[11]=f);let p;t[12]===l?p=t[13]:(p=e=>{e.key===`Enter`&&(e.preventDefault(),l(e.target.value),e.target.value=``)},t[12]=l,t[13]=p);let m;t[14]!==a||t[15]!==p?(m=(0,w.jsx)(`input`,{className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm`,disabled:a,placeholder:`Add and press Enter`,onKeyDown:p}),t[14]=a,t[15]=p,t[16]=m):m=t[16];let h;return t[17]!==u||t[18]!==f||t[19]!==m?(h=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[u,f,m]}),t[17]=u,t[18]=f,t[19]=m,t[20]=h):h=t[20],h}function H(e){let t=(0,S.c)(48),{k:n,sub:r,value:i,onValue:a,disabled:o}=e,s=r.type,c=(typeof r.title==`string`&&r.title.length>0?r.title:null)??n;if(s===`boolean`){let e;t[0]===c?e=t[1]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[0]=c,t[1]=e);let n=i===!0,s;t[2]===a?s=t[3]:(s=e=>a(e),t[2]=a,t[3]=s);let l;t[4]!==o||t[5]!==r||t[6]!==n||t[7]!==s?(l=(0,w.jsx)(B,{s:r,value:n,disabled:o,onChange:s}),t[4]=o,t[5]=r,t[6]=n,t[7]=s,t[8]=l):l=t[8];let u;return t[9]!==e||t[10]!==l?(u=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,l]}),t[9]=e,t[10]=l,t[11]=u):u=t[11],u}if(s===`number`||s===`integer`){let e;t[12]===c?e=t[13]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[12]=c,t[13]=e);let n=typeof i==`number`?i:0,s;t[14]!==o||t[15]!==a||t[16]!==r||t[17]!==n?(s=(0,w.jsx)(z,{s:r,value:n,disabled:o,onChange:a}),t[14]=o,t[15]=a,t[16]=r,t[17]=n,t[18]=s):s=t[18];let l;return t[19]!==e||t[20]!==s?(l=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,s]}),t[19]=e,t[20]=s,t[21]=l):l=t[21],l}if(s===`string`){let e;t[22]===c?e=t[23]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[22]=c,t[23]=e);let s=typeof i==`string`?i:``,l;t[24]!==o||t[25]!==n||t[26]!==a||t[27]!==r||t[28]!==s?(l=(0,w.jsx)(I,{name:n,s:r,value:s,disabled:o,onChange:a}),t[24]=o,t[25]=n,t[26]=a,t[27]=r,t[28]=s,t[29]=l):l=t[29];let u;return t[30]!==e||t[31]!==l?(u=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,l]}),t[30]=e,t[31]=l,t[32]=u):u=t[32],u}if(s===`array`){let e=r.items;if(A(e)&&e.type===`string`){let e;t[33]===c?e=t[34]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[33]=c,t[34]=e);let n;t[35]===i?n=t[36]:(n=Array.isArray(i)&&i.every(U)?i:[],t[35]=i,t[36]=n);let s;t[37]!==o||t[38]!==a||t[39]!==r||t[40]!==n?(s=(0,w.jsx)(V,{s:r,value:n,disabled:o,onChange:a}),t[37]=o,t[38]=a,t[39]=r,t[40]=n,t[41]=s):s=t[41];let l;return t[42]!==e||t[43]!==s?(l=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,s]}),t[42]=e,t[43]=s,t[44]=l):l=t[44],l}}let l=typeof s==`string`?` (${s})`:``,u;return t[45]!==l||t[46]!==c?(u=(0,w.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[c,`: unsupported field type`,l]}),t[45]=l,t[46]=c,t[47]=u):u=t[47],u}function U(e){return typeof e==`string`}function W(e){let t=(0,S.c)(26),{schema:n,values:r,onChange:i,disabled:a,className:o}=e,s=a===void 0?!1:a,c;bb0:{if(n.type!==`object`){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],t[0]=e):e=t[0],c=e;break bb0}let e;t[1]===n?e=t[2]:(e=P(n),t[1]=n,t[2]=e),c=e}let l=c,u;bb1:{if(l.length===0){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=new Map,t[3]=e):e=t[3],u=e;break bb1}let e;t[4]===l?e=t[5]:(e=F(l),t[4]=l,t[5]=e),u=e}let d=u,f;t[6]!==i||t[7]!==r?(f=(e,t)=>{i({...r,[e]:t})},t[6]=i,t[7]=r,t[8]=f):f=t[8];let p=f;if(n.type!==`object`||!A(n.properties)||l.length===0)return null;let h,g;if(t[9]!==o||t[10]!==s||t[11]!==d||t[12]!==p||t[13]!==r){let e=Array.from(d.keys()).sort(G);t[16]===o?h=t[17]:(h=m(`flex flex-col gap-4`,o),t[16]=o,t[17]=h);let n;t[18]!==s||t[19]!==d||t[20]!==p||t[21]!==r?(n=e=>{let t=(d.get(e)??[]).map(e=>(0,w.jsx)(H,{k:e.key,sub:e.sub,value:r[e.key],onValue:t=>p(e.key,t),disabled:s},e.key));return e===``?(0,w.jsx)(`div`,{children:t},`default`):(0,w.jsxs)(`details`,{className:`group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base`,open:!0,children:[(0,w.jsx)(`summary`,{className:`cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none`,children:e}),(0,w.jsx)(`div`,{className:`space-y-4 border-t border-edge p-3`,children:t})]},e)},t[18]=s,t[19]=d,t[20]=p,t[21]=r,t[22]=n):n=t[22],g=e.map(n),t[9]=o,t[10]=s,t[11]=d,t[12]=p,t[13]=r,t[14]=h,t[15]=g}else h=t[14],g=t[15];let _;return t[23]!==h||t[24]!==g?(_=(0,w.jsx)(`div`,{className:h,children:g}),t[23]=h,t[24]=g,t[25]=_):_=t[25],_}function G(e,t){return e===``?-1:t===``?1:e.localeCompare(t)}function K(e){let t={};if(e.type!==`object`||!A(e.properties))return t;for(let[n,r]of Object.entries(e.properties))A(r)&&Object.prototype.hasOwnProperty.call(r,`default`)&&(t[n]=r.default);return t}function q({extensionId:e}){let t=d(s(e=>e.language)).agentSettings,n=c(e=>!!e.token),{data:r,error:u}=i(n&&e?`ext-detail-${e}`:null,()=>a(h(`/api/extensions/${encodeURIComponent(e)}`))),{data:f,mutate:p,error:m}=i(n&&e?`ext-cfg-${e}`:null,()=>a(h(`/api/extensions/${encodeURIComponent(e)}/config`))),g=r?.manifest?.configSchema,_=(0,C.useMemo)(()=>g&&g.type===`object`?K(g):{},[g]),v=(0,C.useMemo)(()=>({..._,...f??{}}),[_,f]),[y,b]=(0,C.useState)({}),[x,S]=(0,C.useState)(!1),[T,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(!1);(0,C.useEffect)(()=>{x||b(v)},[x,v]);let j=(0,C.useCallback)(e=>{b(e),S(!0),O(null)},[]),M=(0,C.useCallback)(()=>{b(v),S(!1),O(null)},[v]),N=(0,C.useCallback)(()=>{!g||g.type!==`object`||(b({...K(g)}),S(!0),O(null))},[g]),P=(0,C.useCallback)(async()=>{if(e){E(!0),O(null);try{let t=await l(h(`/api/extensions/${encodeURIComponent(e)}/config`),{method:`PATCH`,body:JSON.stringify(y)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error?.message??t.statusText)}await p(y,!1),S(!1),A(!0),window.setTimeout(()=>A(!1),3e3)}catch(e){O(e instanceof Error?e.message:String(e))}finally{E(!1)}}},[e,y,p]);if(!n)return null;if(u||m){let e=u??m;return(0,w.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[`Could not load extension settings: `,e instanceof Error?e.message:String(e)]})}return!g||g.type!==`object`?null:(0,w.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,w.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Configuration`}),(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[k?(0,w.jsx)(`span`,{className:`text-xs text-emerald-600 dark:text-emerald-400`,children:t.saved}):null,D?(0,w.jsx)(`span`,{className:`text-xs text-red-600 dark:text-red-400`,children:D}):null,(0,w.jsx)(o,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,disabled:!x,onClick:M,children:t.discard}),(0,w.jsx)(o,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,onClick:N,children:`Reset to defaults`}),(0,w.jsx)(o,{type:`button`,variant:`primary`,className:`h-8 text-xs`,disabled:!x||T,onClick:()=>void P(),children:T?t.saving:t.save})]})]}),(0,w.jsx)(W,{schema:g,values:y,onChange:j,disabled:T})]})}function J(){let e=(0,S.c)(39),t=s(Y),n;e[0]===t?n=e[1]:(n=d(t),e[0]=t,e[1]=n);let r=n,i=r.extensionImageGen,{extensionId:a,panelId:o}=u(),c=g();if(!a){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(X,{message:`No extension ID provided.`}),e[2]=t):t=e[2],t}let l,f,m;if(e[3]!==a||e[4]!==c||e[5]!==o){m=Symbol.for(`react.early_return_sentinel`);bb0:{let t;if(e[9]===a?t=e[10]:(t=e=>e.id===a,e[9]=a,e[10]=t),l=c.find(t),!l){let t=`Extension "${a}" not found or is not available in this workspace.`,n;e[11]===t?n=e[12]:(n=(0,w.jsx)(X,{message:t}),e[11]=t,e[12]=n),m=n;break bb0}let n=l.ui?.contributions?.settingsPanels;f=o?n?.find(e=>e.id===o||e.id===`${a}.${o}`):n?.[0]}e[3]=a,e[4]=c,e[5]=o,e[6]=l,e[7]=f,e[8]=m}else l=e[6],f=e[7],m=e[8];if(m!==Symbol.for(`react.early_return_sentinel`))return m;let h=f,v=!!(h&&l.ui),y=!!l.hasConfigSchema,b=l.kind===`image-generation`;if(!y&&!v&&!b){let t=`Extension "${a}" has no settings panels or config schema.`,n;return e[13]===t?n=e[14]:(n=(0,w.jsx)(X,{message:t}),e[13]=t,e[14]=n),n}let x=h?.title??`${l.name} Settings`,C;e[15]===x?C=e[16]:(C=(0,w.jsx)(`h1`,{className:`text-lg font-semibold text-fg`,children:x}),e[15]=x,e[16]=C);let T;e[17]!==b||e[18]!==r.imageModelsSettings||e[19]!==i?(T=b?(0,w.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-edge-subtle bg-surface-base px-4 py-3 text-sm`,children:[(0,w.jsx)(`p`,{className:`leading-relaxed text-fg-muted`,children:i.banner}),(0,w.jsx)(_,{to:`/settings/image-models`,className:`w-fit font-medium text-accent hover:underline`,title:r.imageModelsSettings.imageModelsLinkTitle,children:i.openImageModels})]}):null,e[17]=b,e[18]=r.imageModelsSettings,e[19]=i,e[20]=T):T=e[20];let E;e[21]!==a||e[22]!==b?(E=b?(0,w.jsx)(D,{extensionId:a}):null,e[21]=a,e[22]=b,e[23]=E):E=e[23];let O;e[24]!==a||e[25]!==y?(O=y?(0,w.jsx)(q,{extensionId:a}):null,e[24]=a,e[25]=y,e[26]=O):O=e[26];let k;e[27]!==l.name||e[28]!==l.ui||e[29]!==a||e[30]!==v||e[31]!==h?(k=v&&h&&l.ui?(0,w.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-edge bg-surface-base`,children:(0,w.jsx)(p,{extensionId:a,extensionName:l.name,entrypoint:h.entrypoint,permissions:l.ui?.permissions,title:h.title,className:`w-full`,minHeight:120,maxHeight:2e3})}):null,e[27]=l.name,e[28]=l.ui,e[29]=a,e[30]=v,e[31]=h,e[32]=k):k=e[32];let A;return e[33]!==C||e[34]!==T||e[35]!==E||e[36]!==O||e[37]!==k?(A=(0,w.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:[C,T,E,O,k]}),e[33]=C,e[34]=T,e[35]=E,e[36]=O,e[37]=k,e[38]=A):A=e[38],A}function Y(e){return e.language}function X(e){let t=(0,S.c)(2),{message:n}=e,r;return t[0]===n?r=t[1]:(r=(0,w.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:(0,w.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n})}),t[0]=n,t[1]=r),r}export{J as ExtensionSettingsPage};
|
|
2
|
-
//# sourceMappingURL=extension-settings-page-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{i}from"./vendor-swr-CQnUjdeQ.js";import{En as a,Hn as o,Nn as s,On as c,Tn as l,Ui as u,Vn as d,Vr as f,n as p,qn as m,xn as h,yn as g,zi as _}from"./index-DAglRwh4.js";import{i as v,n as y,r as b,t as x}from"./use-image-provider-credentials-C4x4dNv2.js";var S=n(),C=e(t(),1),w=r(),T=()=>h(v);function E(e){return{credentialsIntro:e.credentialsIntro,regionHint:e.regionHint,endpointPresetsHint:e.endpointPresetsHint,apiKeyLabel:e.apiKeyLabel,optionalPlaceholder:e.optionalPlaceholder,regionLabel:e.regionLabel,baseUrlLabel:e.baseUrlLabel,imageBaseUrlLabel:e.imageBaseUrlLabel,saveCredentials:e.saveCredentials,savingCredentials:e.savingCredentials,credentialsSaved:e.credentialsSaved,discardCredentials:e.discardCredentials,credentialsNothingToSave:e.credentialsNothingToSave,credentialsSaveError:e.credentialsSaveError,regionPresetDefault:e.regionPresetDefault,regionPresetCustom:e.regionPresetCustom,baseUrlPresetDefault:e.baseUrlPresetDefault,baseUrlPresetCustom:e.baseUrlPresetCustom,openExtensionSettings:e.openExtensionSettings,openImageModelsPage:e.openImageModelsPage,extensionSettingsLinkTitle:e.extensionSettingsLinkTitle,imageModelsLinkTitle:e.imageModelsLinkTitle,configured:e.configured,missingKey:e.missingKey,defaultModel:e.defaultModel,modelsLabel:e.modelsLabel,imageBaseUrlPresetHint:e.imageBaseUrlPresetHint,dashscopeRegion_beijing:e.dashscopeRegion_beijing,dashscopeRegion_singapore:e.dashscopeRegion_singapore,dashscopeRegion_us:e.dashscopeRegion_us,apiKeyMaskedHelp:e.apiKeyMaskedHelp,apiKeyCopy:e.apiKeyCopy,apiKeyCopied:e.apiKeyCopied,apiKeyShow:e.apiKeyShow,apiKeyHide:e.apiKeyHide,apiKeyNotInConfigFile:e.apiKeyNotInConfigFile,apiKeyRevealFailed:e.apiKeyRevealFailed,minimaxClusterLabel:e.minimaxClusterLabel,minimaxClusterHint:e.minimaxClusterHint,falQueueBaseLabel:e.falQueueBaseLabel,falQueueBaseHint:e.falQueueBaseHint}}function D(e){let t=(0,S.c)(39),{extensionId:n}=e,r=s(k),a;t[0]===r?a=t[1]:(a=d(r),t[0]=r,t[1]=a);let o=a,l=o.imageModelsSettings,u=c(O),p;t[2]===u?p=t[3]:(p=u?T():null,t[2]=u,t[3]=p);let m;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m={revalidateOnFocus:!1},t[4]=m):m=t[4];let{data:h,isLoading:g}=i(p,b,m),_;t[5]===h?_=t[6]:(_=h===void 0?[]:h,t[5]=h,t[6]=_);let v=_,C;if(t[7]!==v||t[8]!==n){let e;t[10]===n?e=t[11]:(e=e=>e.id===n,t[10]=n,t[11]=e),C=v.filter(e),t[7]=v,t[8]=n,t[9]=C}else C=t[9];let D=C,A=x(D),j;t[12]===l?j=t[13]:(j=E(l),t[12]=l,t[13]=j);let M=j,N;t[14]!==o.providersSettings.getApiKey||t[15]!==o.providersSettings.getApiKeyCn||t[16]!==o.providersSettings.getApiKeyIntl?(N={getApiKey:o.providersSettings.getApiKey,getApiKeyIntl:o.providersSettings.getApiKeyIntl,getApiKeyCn:o.providersSettings.getApiKeyCn},t[14]=o.providersSettings.getApiKey,t[15]=o.providersSettings.getApiKeyCn,t[16]=o.providersSettings.getApiKeyIntl,t[17]=N):N=t[17];let P=N;if(!u)return null;if(g){let e;return t[18]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsxs)(`div`,{className:`flex items-center gap-2 py-6 text-sm text-fg-muted`,children:[(0,w.jsx)(f,{className:`size-4 animate-spin`}),`…`]}),t[18]=e):e=t[18],e}if(D.length===0){let e=r===`zh`?`网关未注册该图像 Provider,或扩展已被禁用。`:`This image provider is not registered on the gateway, or the extension is disabled.`,n;return t[19]===e?n=t[20]:(n=(0,w.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e}),t[19]=e,t[20]=n),n}let F;t[21]!==A||t[22]!==l.credentialsSaveError?(F=()=>void A.saveCredentials(l.credentialsSaveError),t[21]=A,t[22]=l.credentialsSaveError,t[23]=F):F=t[23];let I;t[24]===Symbol.for(`react.memo_cache_sentinel`)?(I=new Set,t[24]=I):I=t[24];let L;return t[25]!==P||t[26]!==A.credDirty||t[27]!==A.credDraft||t[28]!==A.credError||t[29]!==A.credNoopFlash||t[30]!==A.credSavedFlash||t[31]!==A.credSaving||t[32]!==A.onDiscardCredentials||t[33]!==A.updateCredRow||t[34]!==r||t[35]!==M||t[36]!==D||t[37]!==F?(L=(0,w.jsx)(y,{summaries:D,credDraft:A.credDraft,credDirty:A.credDirty,credSaving:A.credSaving,credError:A.credError,credSavedFlash:A.credSavedFlash,credNoopFlash:A.credNoopFlash,updateCredRow:A.updateCredRow,onDiscardCredentials:A.onDiscardCredentials,onSaveCredentials:F,extensionIds:I,showExtensionLinks:!1,showImageModelsLink:!1,language:r,apiKeyLinkLabels:P,messages:M}),t[25]=P,t[26]=A.credDirty,t[27]=A.credDraft,t[28]=A.credError,t[29]=A.credNoopFlash,t[30]=A.credSavedFlash,t[31]=A.credSaving,t[32]=A.onDiscardCredentials,t[33]=A.updateCredRow,t[34]=r,t[35]=M,t[36]=D,t[37]=F,t[38]=L):L=t[38],L}function O(e){return!!e.token}function k(e){return e.language}function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function j(e){let t=e[`x-order`];return typeof t==`number`&&!Number.isNaN(t)?t:999}function M(e){let t=e[`x-group`];return typeof t==`string`&&t.length>0?t:``}function N(e){return e[`x-hidden`]===!0}function P(e){let t=e.properties;if(!A(t))return[];let n=[];for(let[e,r]of Object.entries(t))A(r)&&(N(r)||n.push({key:e,sub:r,order:j(r),group:M(r),hidden:!1}));return n.sort((e,t)=>e.order-t.order||e.key.localeCompare(t.key)),n}function F(e){let t=new Map;for(let n of e){let e=n.group;t.has(e)||t.set(e,[]),t.get(e).push(n)}return t}function I(e){let t=(0,S.c)(29),{name:n,s:r,value:i,onChange:a,disabled:o}=e,s=typeof r.description==`string`?r.description:void 0,c=(typeof r[`x-placeholder`]==`string`?r[`x-placeholder`]:null)||s,l=r.format;if(Array.isArray(r.enum)&&r.enum.every(R)){let e;t[0]===s?e=t[1]:(e=s?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:s}):null,t[0]=s,t[1]=e);let c;t[2]===a?c=t[3]:(c=e=>a(e.target.value),t[2]=a,t[3]=c);let l;t[4]===r.enum?l=t[5]:(l=r.enum.map(L),t[4]=r.enum,t[5]=l);let u;t[6]!==o||t[7]!==n||t[8]!==c||t[9]!==l||t[10]!==i?(u=(0,w.jsx)(`select`,{name:n,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg`,value:i,disabled:o,onChange:c,children:l}),t[6]=o,t[7]=n,t[8]=c,t[9]=l,t[10]=i,t[11]=u):u=t[11];let d;return t[12]!==e||t[13]!==u?(d=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[e,u]}),t[12]=e,t[13]=u,t[14]=d):d=t[14],d}let u=l===`password`?`password`:`text`,d;t[15]===s?d=t[16]:(d=s?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:s}):null,t[15]=s,t[16]=d);let f;t[17]===a?f=t[18]:(f=e=>a(e.target.value),t[17]=a,t[18]=f);let p;t[19]!==o||t[20]!==u||t[21]!==n||t[22]!==c||t[23]!==f||t[24]!==i?(p=(0,w.jsx)(`input`,{name:n,type:u,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70`,value:i,placeholder:c,disabled:o,onChange:f}),t[19]=o,t[20]=u,t[21]=n,t[22]=c,t[23]=f,t[24]=i,t[25]=p):p=t[25];let m;return t[26]!==d||t[27]!==p?(m=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[d,p]}),t[26]=d,t[27]=p,t[28]=m):m=t[28],m}function L(e){return(0,w.jsx)(`option`,{value:e,children:e},e)}function R(e){return typeof e==`string`}function z(e){let t=(0,S.c)(11),{s:n,value:r,onChange:i,disabled:a}=e,o=typeof n.description==`string`?n.description:void 0,s;t[0]===o?s=t[1]:(s=o?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:o}):null,t[0]=o,t[1]=s);let c=Number.isFinite(r)?r:0,l;t[2]===i?l=t[3]:(l=e=>i(Number(e.target.value)),t[2]=i,t[3]=l);let u;t[4]!==a||t[5]!==c||t[6]!==l?(u=(0,w.jsx)(`input`,{type:`number`,className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg`,value:c,disabled:a,onChange:l}),t[4]=a,t[5]=c,t[6]=l,t[7]=u):u=t[7];let d;return t[8]!==s||t[9]!==u?(d=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[s,u]}),t[8]=s,t[9]=u,t[10]=d):d=t[10],d}function B(e){let t=(0,S.c)(11),{s:n,value:r,onChange:i,disabled:a}=e,o=(typeof n.description==`string`?n.description:void 0)??(typeof n.title==`string`&&n.title.length>0?n.title:`Enable`),s;t[0]===i?s=t[1]:(s=e=>i(e.target.checked),t[0]=i,t[1]=s);let c;t[2]!==a||t[3]!==s||t[4]!==r?(c=(0,w.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border border-edge`,checked:r,disabled:a,onChange:s}),t[2]=a,t[3]=s,t[4]=r,t[5]=c):c=t[5];let l;t[6]===o?l=t[7]:(l=(0,w.jsx)(`span`,{children:o}),t[6]=o,t[7]=l);let u;return t[8]!==c||t[9]!==l?(u=(0,w.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-fg`,children:[c,l]}),t[8]=c,t[9]=l,t[10]=u):u=t[10],u}function V(e){let t=(0,S.c)(21),{s:n,value:r,onChange:i,disabled:a}=e,o=typeof n.description==`string`?n.description:void 0,s=n.items;if(!(A(s)&&s.type===`string`)){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,w.jsx)(`p`,{className:`text-xs text-fg-muted`,children:`Unsupported array type`}),t[0]=e):e=t[0],e}let c;t[1]!==i||t[2]!==r?(c=e=>{let t=e.trim();!t||r.includes(t)||i([...r,t])},t[1]=i,t[2]=r,t[3]=c):c=t[3];let l=c,u;t[4]===o?u=t[5]:(u=o?(0,w.jsx)(`label`,{className:`text-xs text-fg-muted`,children:o}):null,t[4]=o,t[5]=u);let d;t[6]!==a||t[7]!==i||t[8]!==r?(d=r.map(e=>(0,w.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm`,children:[e,(0,w.jsx)(`button`,{type:`button`,className:`text-fg-muted hover:text-fg`,disabled:a,onClick:()=>i(r.filter(t=>t!==e)),children:`×`})]},e)),t[6]=a,t[7]=i,t[8]=r,t[9]=d):d=t[9];let f;t[10]===d?f=t[11]:(f=(0,w.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:d}),t[10]=d,t[11]=f);let p;t[12]===l?p=t[13]:(p=e=>{e.key===`Enter`&&(e.preventDefault(),l(e.target.value),e.target.value=``)},t[12]=l,t[13]=p);let m;t[14]!==a||t[15]!==p?(m=(0,w.jsx)(`input`,{className:`ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm`,disabled:a,placeholder:`Add and press Enter`,onKeyDown:p}),t[14]=a,t[15]=p,t[16]=m):m=t[16];let h;return t[17]!==u||t[18]!==f||t[19]!==m?(h=(0,w.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[u,f,m]}),t[17]=u,t[18]=f,t[19]=m,t[20]=h):h=t[20],h}function H(e){let t=(0,S.c)(48),{k:n,sub:r,value:i,onValue:a,disabled:o}=e,s=r.type,c=(typeof r.title==`string`&&r.title.length>0?r.title:null)??n;if(s===`boolean`){let e;t[0]===c?e=t[1]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[0]=c,t[1]=e);let n=i===!0,s;t[2]===a?s=t[3]:(s=e=>a(e),t[2]=a,t[3]=s);let l;t[4]!==o||t[5]!==r||t[6]!==n||t[7]!==s?(l=(0,w.jsx)(B,{s:r,value:n,disabled:o,onChange:s}),t[4]=o,t[5]=r,t[6]=n,t[7]=s,t[8]=l):l=t[8];let u;return t[9]!==e||t[10]!==l?(u=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,l]}),t[9]=e,t[10]=l,t[11]=u):u=t[11],u}if(s===`number`||s===`integer`){let e;t[12]===c?e=t[13]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[12]=c,t[13]=e);let n=typeof i==`number`?i:0,s;t[14]!==o||t[15]!==a||t[16]!==r||t[17]!==n?(s=(0,w.jsx)(z,{s:r,value:n,disabled:o,onChange:a}),t[14]=o,t[15]=a,t[16]=r,t[17]=n,t[18]=s):s=t[18];let l;return t[19]!==e||t[20]!==s?(l=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,s]}),t[19]=e,t[20]=s,t[21]=l):l=t[21],l}if(s===`string`){let e;t[22]===c?e=t[23]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[22]=c,t[23]=e);let s=typeof i==`string`?i:``,l;t[24]!==o||t[25]!==n||t[26]!==a||t[27]!==r||t[28]!==s?(l=(0,w.jsx)(I,{name:n,s:r,value:s,disabled:o,onChange:a}),t[24]=o,t[25]=n,t[26]=a,t[27]=r,t[28]=s,t[29]=l):l=t[29];let u;return t[30]!==e||t[31]!==l?(u=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,l]}),t[30]=e,t[31]=l,t[32]=u):u=t[32],u}if(s===`array`){let e=r.items;if(A(e)&&e.type===`string`){let e;t[33]===c?e=t[34]:(e=(0,w.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:c}),t[33]=c,t[34]=e);let n;t[35]===i?n=t[36]:(n=Array.isArray(i)&&i.every(U)?i:[],t[35]=i,t[36]=n);let s;t[37]!==o||t[38]!==a||t[39]!==r||t[40]!==n?(s=(0,w.jsx)(V,{s:r,value:n,disabled:o,onChange:a}),t[37]=o,t[38]=a,t[39]=r,t[40]=n,t[41]=s):s=t[41];let l;return t[42]!==e||t[43]!==s?(l=(0,w.jsxs)(`div`,{className:`space-y-1.5`,children:[e,s]}),t[42]=e,t[43]=s,t[44]=l):l=t[44],l}}let l=typeof s==`string`?` (${s})`:``,u;return t[45]!==l||t[46]!==c?(u=(0,w.jsxs)(`p`,{className:`text-xs text-fg-muted`,children:[c,`: unsupported field type`,l]}),t[45]=l,t[46]=c,t[47]=u):u=t[47],u}function U(e){return typeof e==`string`}function W(e){let t=(0,S.c)(26),{schema:n,values:r,onChange:i,disabled:a,className:o}=e,s=a===void 0?!1:a,c;bb0:{if(n.type!==`object`){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=[],t[0]=e):e=t[0],c=e;break bb0}let e;t[1]===n?e=t[2]:(e=P(n),t[1]=n,t[2]=e),c=e}let l=c,u;bb1:{if(l.length===0){let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=new Map,t[3]=e):e=t[3],u=e;break bb1}let e;t[4]===l?e=t[5]:(e=F(l),t[4]=l,t[5]=e),u=e}let d=u,f;t[6]!==i||t[7]!==r?(f=(e,t)=>{i({...r,[e]:t})},t[6]=i,t[7]=r,t[8]=f):f=t[8];let p=f;if(n.type!==`object`||!A(n.properties)||l.length===0)return null;let h,g;if(t[9]!==o||t[10]!==s||t[11]!==d||t[12]!==p||t[13]!==r){let e=Array.from(d.keys()).sort(G);t[16]===o?h=t[17]:(h=m(`flex flex-col gap-4`,o),t[16]=o,t[17]=h);let n;t[18]!==s||t[19]!==d||t[20]!==p||t[21]!==r?(n=e=>{let t=(d.get(e)??[]).map(e=>(0,w.jsx)(H,{k:e.key,sub:e.sub,value:r[e.key],onValue:t=>p(e.key,t),disabled:s},e.key));return e===``?(0,w.jsx)(`div`,{children:t},`default`):(0,w.jsxs)(`details`,{className:`group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base`,open:!0,children:[(0,w.jsx)(`summary`,{className:`cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none`,children:e}),(0,w.jsx)(`div`,{className:`space-y-4 border-t border-edge p-3`,children:t})]},e)},t[18]=s,t[19]=d,t[20]=p,t[21]=r,t[22]=n):n=t[22],g=e.map(n),t[9]=o,t[10]=s,t[11]=d,t[12]=p,t[13]=r,t[14]=h,t[15]=g}else h=t[14],g=t[15];let _;return t[23]!==h||t[24]!==g?(_=(0,w.jsx)(`div`,{className:h,children:g}),t[23]=h,t[24]=g,t[25]=_):_=t[25],_}function G(e,t){return e===``?-1:t===``?1:e.localeCompare(t)}function K(e){let t={};if(e.type!==`object`||!A(e.properties))return t;for(let[n,r]of Object.entries(e.properties))A(r)&&Object.prototype.hasOwnProperty.call(r,`default`)&&(t[n]=r.default);return t}function q({extensionId:e}){let t=d(s(e=>e.language)).agentSettings,n=c(e=>!!e.token),{data:r,error:u}=i(n&&e?`ext-detail-${e}`:null,()=>a(h(`/api/extensions/${encodeURIComponent(e)}`))),{data:f,mutate:p,error:m}=i(n&&e?`ext-cfg-${e}`:null,()=>a(h(`/api/extensions/${encodeURIComponent(e)}/config`))),g=r?.manifest?.configSchema,_=(0,C.useMemo)(()=>g&&g.type===`object`?K(g):{},[g]),v=(0,C.useMemo)(()=>({..._,...f??{}}),[_,f]),[y,b]=(0,C.useState)({}),[x,S]=(0,C.useState)(!1),[T,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(null),[k,A]=(0,C.useState)(!1);(0,C.useEffect)(()=>{x||b(v)},[x,v]);let j=(0,C.useCallback)(e=>{b(e),S(!0),O(null)},[]),M=(0,C.useCallback)(()=>{b(v),S(!1),O(null)},[v]),N=(0,C.useCallback)(()=>{!g||g.type!==`object`||(b({...K(g)}),S(!0),O(null))},[g]),P=(0,C.useCallback)(async()=>{if(e){E(!0),O(null);try{let t=await l(h(`/api/extensions/${encodeURIComponent(e)}/config`),{method:`PATCH`,body:JSON.stringify(y)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error?.message??t.statusText)}await p(y,!1),S(!1),A(!0),window.setTimeout(()=>A(!1),3e3)}catch(e){O(e instanceof Error?e.message:String(e))}finally{E(!1)}}},[e,y,p]);if(!n)return null;if(u||m){let e=u??m;return(0,w.jsxs)(`p`,{className:`text-sm text-fg-muted`,children:[`Could not load extension settings: `,e instanceof Error?e.message:String(e)]})}return!g||g.type!==`object`?null:(0,w.jsxs)(`div`,{className:`mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,w.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:`Configuration`}),(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[k?(0,w.jsx)(`span`,{className:`text-xs text-emerald-600 dark:text-emerald-400`,children:t.saved}):null,D?(0,w.jsx)(`span`,{className:`text-xs text-red-600 dark:text-red-400`,children:D}):null,(0,w.jsx)(o,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,disabled:!x,onClick:M,children:t.discard}),(0,w.jsx)(o,{type:`button`,variant:`ghost`,className:`h-8 text-xs`,onClick:N,children:`Reset to defaults`}),(0,w.jsx)(o,{type:`button`,variant:`primary`,className:`h-8 text-xs`,disabled:!x||T,onClick:()=>void P(),children:T?t.saving:t.save})]})]}),(0,w.jsx)(W,{schema:g,values:y,onChange:j,disabled:T})]})}function J(){let e=(0,S.c)(39),t=s(Y),n;e[0]===t?n=e[1]:(n=d(t),e[0]=t,e[1]=n);let r=n,i=r.extensionImageGen,{extensionId:a,panelId:o}=u(),c=g();if(!a){let t;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(X,{message:`No extension ID provided.`}),e[2]=t):t=e[2],t}let l,f,m;if(e[3]!==a||e[4]!==c||e[5]!==o){m=Symbol.for(`react.early_return_sentinel`);bb0:{let t;if(e[9]===a?t=e[10]:(t=e=>e.id===a,e[9]=a,e[10]=t),l=c.find(t),!l){let t=`Extension "${a}" not found or is not available in this workspace.`,n;e[11]===t?n=e[12]:(n=(0,w.jsx)(X,{message:t}),e[11]=t,e[12]=n),m=n;break bb0}let n=l.ui?.contributions?.settingsPanels;f=o?n?.find(e=>e.id===o||e.id===`${a}.${o}`):n?.[0]}e[3]=a,e[4]=c,e[5]=o,e[6]=l,e[7]=f,e[8]=m}else l=e[6],f=e[7],m=e[8];if(m!==Symbol.for(`react.early_return_sentinel`))return m;let h=f,v=!!(h&&l.ui),y=!!l.hasConfigSchema,b=l.kind===`image-generation`;if(!y&&!v&&!b){let t=`Extension "${a}" has no settings panels or config schema.`,n;return e[13]===t?n=e[14]:(n=(0,w.jsx)(X,{message:t}),e[13]=t,e[14]=n),n}let x=h?.title??`${l.name} Settings`,C;e[15]===x?C=e[16]:(C=(0,w.jsx)(`h1`,{className:`text-lg font-semibold text-fg`,children:x}),e[15]=x,e[16]=C);let T;e[17]!==b||e[18]!==r.imageModelsSettings||e[19]!==i?(T=b?(0,w.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-edge-subtle bg-surface-base px-4 py-3 text-sm`,children:[(0,w.jsx)(`p`,{className:`leading-relaxed text-fg-muted`,children:i.banner}),(0,w.jsx)(_,{to:`/settings/image-models`,className:`w-fit font-medium text-accent hover:underline`,title:r.imageModelsSettings.imageModelsLinkTitle,children:i.openImageModels})]}):null,e[17]=b,e[18]=r.imageModelsSettings,e[19]=i,e[20]=T):T=e[20];let E;e[21]!==a||e[22]!==b?(E=b?(0,w.jsx)(D,{extensionId:a}):null,e[21]=a,e[22]=b,e[23]=E):E=e[23];let O;e[24]!==a||e[25]!==y?(O=y?(0,w.jsx)(q,{extensionId:a}):null,e[24]=a,e[25]=y,e[26]=O):O=e[26];let k;e[27]!==l.name||e[28]!==l.ui||e[29]!==a||e[30]!==v||e[31]!==h?(k=v&&h&&l.ui?(0,w.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-edge bg-surface-base`,children:(0,w.jsx)(p,{extensionId:a,extensionName:l.name,entrypoint:h.entrypoint,permissions:l.ui?.permissions,title:h.title,className:`w-full`,minHeight:120,maxHeight:2e3})}):null,e[27]=l.name,e[28]=l.ui,e[29]=a,e[30]=v,e[31]=h,e[32]=k):k=e[32];let A;return e[33]!==C||e[34]!==T||e[35]!==E||e[36]!==O||e[37]!==k?(A=(0,w.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:[C,T,E,O,k]}),e[33]=C,e[34]=T,e[35]=E,e[36]=O,e[37]=k,e[38]=A):A=e[38],A}function Y(e){return e.language}function X(e){let t=(0,S.c)(2),{message:n}=e,r;return t[0]===n?r=t[1]:(r=(0,w.jsx)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8`,children:(0,w.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n})}),t[0]=n,t[1]=r),r}export{J as ExtensionSettingsPage};
|
|
2
|
+
//# sourceMappingURL=extension-settings-page-B0nkVsLi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-settings-page-DeY2M2di.js","names":["Loader2","useMemo","useSWR","fetchImageProvidersList","ImageProviderCredentialsPanel","ImageProviderCredentialsPanelMessages","IMAGE_PROVIDERS_SWR_KEY","useImageProviderCredentials","apiUrl","messages","MessageBundle","useGatewayStore","useLocaleStore","imageProvidersSwrKey","panelMessagesFromBundle","t","credentialsIntro","regionHint","endpointPresetsHint","apiKeyLabel","optionalPlaceholder","regionLabel","baseUrlLabel","imageBaseUrlLabel","saveCredentials","savingCredentials","credentialsSaved","discardCredentials","credentialsNothingToSave","credentialsSaveError","regionPresetDefault","regionPresetCustom","baseUrlPresetDefault","baseUrlPresetCustom","openExtensionSettings","openImageModelsPage","extensionSettingsLinkTitle","imageModelsLinkTitle","configured","missingKey","defaultModel","modelsLabel","imageBaseUrlPresetHint","dashscopeRegion_beijing","dashscopeRegion_singapore","dashscopeRegion_us","apiKeyMaskedHelp","apiKeyCopy","apiKeyCopied","apiKeyShow","apiKeyHide","apiKeyNotInConfigFile","apiKeyRevealFailed","minimaxClusterLabel","minimaxClusterHint","falQueueBaseLabel","falQueueBaseHint","ExtensionImageProviderSettings","t0","$","_c","extensionId","language","_temp","t1","m","imageModelsSettings","hasToken","_temp2","t2","t3","Symbol","for","revalidateOnFocus","data","t4","isLoading","t5","undefined","all","t6","t7","p","id","filter","summaries","cred","panelMsg","t8","providersSettings","getApiKey","getApiKeyCn","getApiKeyIntl","apiKeyLinkLabels","t9","length","t10","Set","t11","credDirty","credDraft","credError","credNoopFlash","credSavedFlash","credSaving","onDiscardCredentials","updateCredRow","s_0","Boolean","s","token","useCallback","useMemo","cn","JsonSchema","Record","SchemaFormProps","schema","values","onChange","disabled","className","isRecord","x","Array","isArray","FieldDef","key","sub","order","group","hidden","getXOrder","s","v","Number","isNaN","getXGroup","length","isHidden","sortedFields","props","properties","out","Object","entries","push","sort","a","b","localeCompare","groupFields","fields","Map","m","f","g","has","set","get","StringField","t0","$","_c","name","value","desc","description","undefined","placeholder","fmt","format","enum","every","_temp","t1","t2","e","target","t3","map","_temp2","t4","t5","inputType","e_0","op","NumberField","isFinite","BooleanField","labelText","title","checked","ArrayStringField","items","isStringItems","type","Symbol","for","t","n","trim","includes","add","t_0","filter","preventDefault","HTMLInputElement","t6","t7","FieldRow","k","onValue","_temp3","SchemaForm","bb0","bb1","grouped","next","setKey","groupKeys","from","keys","_temp4","gk","list","block","extractObjectDefaults","prototype","hasOwnProperty","call","default","useCallback","useEffect","useMemo","useState","useSWR","Button","extractObjectDefaults","SchemaForm","JsonSchema","apiFetch","fetchJson","apiUrl","messages","useGatewayStore","useLocaleStore","ExtensionDetailResponse","manifest","configSchema","ExtensionAutoSettings","extensionId","language","s","a","agentSettings","hasToken","Boolean","token","data","detail","error","detailError","encodeURIComponent","remoteConfig","mutate","mutateConfig","configError","Record","schema","defaults","type","savedValues","localValues","setLocalValues","isDirty","setIsDirty","saving","setSaving","saveError","setSaveError","saveSuccess","setSaveSuccess","onChange","next","handleDiscard","handleResetDefaults","handleSave","res","method","body","JSON","stringify","ok","json","catch","message","Error","statusText","window","setTimeout","e","String","err","saved","discard","save","Link","useParams","ExtensionImageProviderSettings","messages","useLocaleStore","ExtensionAutoSettings","ExtensionIframeHost","useExtensions","ExtensionSettingsPage","$","_c","language","_temp","t0","m","xm","extensionImageGen","extensionId","panelId","extensions","t1","Symbol","for","extension","t2","bb0","t3","ext","id","find","t4","t5","panels","ui","contributions","settingsPanels","p","panel","hasIframe","Boolean","hasAutoForm","hasConfigSchema","isImageGeneration","kind","title","name","imageModelsSettings","banner","imageModelsLinkTitle","openImageModels","t6","t7","entrypoint","permissions","t8","s","SettingsPanelNotFound","message"],"sources":["../../../../../web/src/features/settings/extension-image-provider-settings.tsx","../../../../../web/src/components/ui/schema-form.tsx","../../../../../web/src/features/extensions/extension-auto-settings.tsx","../../../../../web/src/features/extensions/extension-settings-page.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { useMemo } from 'react';\nimport useSWR from 'swr';\n\nimport { fetchImageProvidersList } from '@/features/settings/fetch-image-providers';\nimport {\n ImageProviderCredentialsPanel,\n type ImageProviderCredentialsPanelMessages,\n} from '@/features/settings/image-provider-credentials-panel';\nimport { IMAGE_PROVIDERS_SWR_KEY } from '@/features/settings/image-providers-swr-key';\nimport { useImageProviderCredentials } from '@/features/settings/use-image-provider-credentials';\nimport { apiUrl } from '@/lib/url';\nimport { messages, type MessageBundle } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nconst imageProvidersSwrKey = () => apiUrl(IMAGE_PROVIDERS_SWR_KEY);\n\nfunction panelMessagesFromBundle(t: MessageBundle['imageModelsSettings']): ImageProviderCredentialsPanelMessages {\n return {\n credentialsIntro: t.credentialsIntro,\n regionHint: t.regionHint,\n endpointPresetsHint: t.endpointPresetsHint,\n apiKeyLabel: t.apiKeyLabel,\n optionalPlaceholder: t.optionalPlaceholder,\n regionLabel: t.regionLabel,\n baseUrlLabel: t.baseUrlLabel,\n imageBaseUrlLabel: t.imageBaseUrlLabel,\n saveCredentials: t.saveCredentials,\n savingCredentials: t.savingCredentials,\n credentialsSaved: t.credentialsSaved,\n discardCredentials: t.discardCredentials,\n credentialsNothingToSave: t.credentialsNothingToSave,\n credentialsSaveError: t.credentialsSaveError,\n regionPresetDefault: t.regionPresetDefault,\n regionPresetCustom: t.regionPresetCustom,\n baseUrlPresetDefault: t.baseUrlPresetDefault,\n baseUrlPresetCustom: t.baseUrlPresetCustom,\n openExtensionSettings: t.openExtensionSettings,\n openImageModelsPage: t.openImageModelsPage,\n extensionSettingsLinkTitle: t.extensionSettingsLinkTitle,\n imageModelsLinkTitle: t.imageModelsLinkTitle,\n configured: t.configured,\n missingKey: t.missingKey,\n defaultModel: t.defaultModel,\n modelsLabel: t.modelsLabel,\n imageBaseUrlPresetHint: t.imageBaseUrlPresetHint,\n dashscopeRegion_beijing: t.dashscopeRegion_beijing,\n dashscopeRegion_singapore: t.dashscopeRegion_singapore,\n dashscopeRegion_us: t.dashscopeRegion_us,\n apiKeyMaskedHelp: t.apiKeyMaskedHelp,\n apiKeyCopy: t.apiKeyCopy,\n apiKeyCopied: t.apiKeyCopied,\n apiKeyShow: t.apiKeyShow,\n apiKeyHide: t.apiKeyHide,\n apiKeyNotInConfigFile: t.apiKeyNotInConfigFile,\n apiKeyRevealFailed: t.apiKeyRevealFailed,\n minimaxClusterLabel: t.minimaxClusterLabel,\n minimaxClusterHint: t.minimaxClusterHint,\n falQueueBaseLabel: t.falQueueBaseLabel,\n falQueueBaseHint: t.falQueueBaseHint,\n };\n}\n\nexport function ExtensionImageProviderSettings({ extensionId }: { extensionId: string }) {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const t = m.imageModelsSettings;\n const hasToken = useGatewayStore((s) => Boolean(s.token));\n\n const { data: all = [], isLoading } = useSWR(\n hasToken ? imageProvidersSwrKey() : null,\n fetchImageProvidersList,\n { revalidateOnFocus: false },\n );\n\n const summaries = useMemo(\n () => all.filter((p) => p.id === extensionId),\n [all, extensionId],\n );\n\n const cred = useImageProviderCredentials(summaries);\n const panelMsg = useMemo(() => panelMessagesFromBundle(t), [t]);\n const apiKeyLinkLabels = useMemo(\n () => ({\n getApiKey: m.providersSettings.getApiKey,\n getApiKeyIntl: m.providersSettings.getApiKeyIntl,\n getApiKeyCn: m.providersSettings.getApiKeyCn,\n }),\n [m.providersSettings],\n );\n\n if (!hasToken) {\n return null;\n }\n\n if (isLoading) {\n return (\n <div className=\"flex items-center gap-2 py-6 text-sm text-fg-muted\">\n <Loader2 className=\"size-4 animate-spin\" />\n …\n </div>\n );\n }\n\n if (summaries.length === 0) {\n return (\n <p className=\"text-sm text-fg-muted\">\n {language === 'zh'\n ? '网关未注册该图像 Provider,或扩展已被禁用。'\n : 'This image provider is not registered on the gateway, or the extension is disabled.'}\n </p>\n );\n }\n\n return (\n <ImageProviderCredentialsPanel\n summaries={summaries}\n credDraft={cred.credDraft}\n credDirty={cred.credDirty}\n credSaving={cred.credSaving}\n credError={cred.credError}\n credSavedFlash={cred.credSavedFlash}\n credNoopFlash={cred.credNoopFlash}\n updateCredRow={cred.updateCredRow}\n onDiscardCredentials={cred.onDiscardCredentials}\n onSaveCredentials={() => void cred.saveCredentials(t.credentialsSaveError)}\n extensionIds={new Set()}\n showExtensionLinks={false}\n showImageModelsLink={false}\n language={language}\n apiKeyLinkLabels={apiKeyLinkLabels}\n messages={panelMsg}\n />\n );\n}\n","import { useCallback, useMemo } from 'react';\n\nimport { cn } from '@/lib/cn';\n\nexport type JsonSchema = Record<string, unknown>;\n\ntype SchemaFormProps = {\n schema: JsonSchema;\n values: Record<string, unknown>;\n onChange: (values: Record<string, unknown>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nfunction isRecord(x: unknown): x is Record<string, unknown> {\n return typeof x === 'object' && x !== null && !Array.isArray(x);\n}\n\ntype FieldDef = {\n key: string;\n sub: JsonSchema;\n order: number;\n group: string;\n hidden: boolean;\n};\n\nfunction getXOrder(s: JsonSchema): number {\n const v = s['x-order'];\n return typeof v === 'number' && !Number.isNaN(v) ? v : 999;\n}\n\nfunction getXGroup(s: JsonSchema): string {\n const v = s['x-group'];\n return typeof v === 'string' && v.length > 0 ? v : '';\n}\n\nfunction isHidden(s: JsonSchema): boolean {\n return s['x-hidden'] === true;\n}\n\nfunction sortedFields(schema: JsonSchema): FieldDef[] {\n const props = schema.properties;\n if (!isRecord(props)) return [];\n const out: FieldDef[] = [];\n for (const [key, sub] of Object.entries(props)) {\n if (!isRecord(sub)) continue;\n if (isHidden(sub)) continue;\n out.push({\n key,\n sub: sub,\n order: getXOrder(sub),\n group: getXGroup(sub),\n hidden: false,\n });\n }\n out.sort((a, b) => a.order - b.order || a.key.localeCompare(b.key));\n return out;\n}\n\nfunction groupFields(fields: FieldDef[]): Map<string, FieldDef[]> {\n const m = new Map<string, FieldDef[]>();\n for (const f of fields) {\n const g = f.group;\n if (!m.has(g)) m.set(g, []);\n m.get(g)!.push(f);\n }\n return m;\n}\n\nfunction StringField({\n name,\n s,\n value,\n onChange,\n disabled,\n}: {\n name: string;\n s: JsonSchema;\n value: string;\n onChange: (v: string) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const placeholder =\n (typeof s['x-placeholder'] === 'string' ? s['x-placeholder'] : null) || desc;\n const fmt = s.format;\n if (Array.isArray(s.enum) && s.enum.every((x) => typeof x === 'string')) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <select\n name={name}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n >\n {(s.enum).map((op) => (\n <option key={op} value={op}>\n {op}\n </option>\n ))}\n </select>\n </div>\n );\n }\n const inputType = fmt === 'password' ? 'password' : 'text';\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n name={name}\n type={inputType}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n\nfunction NumberField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: number;\n onChange: (v: number) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n type=\"number\"\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg\"\n value={Number.isFinite(value) ? value : 0}\n disabled={disabled}\n onChange={(e) => onChange(Number(e.target.value))}\n />\n </div>\n );\n}\n\nfunction BooleanField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: boolean;\n onChange: (v: boolean) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const labelText =\n desc ?? (typeof s.title === 'string' && s.title.length > 0 ? s.title : 'Enable');\n return (\n <label className=\"flex items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-4 rounded border border-edge\"\n checked={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.checked)}\n />\n <span>{labelText}</span>\n </label>\n );\n}\n\nfunction ArrayStringField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: string[];\n onChange: (v: string[]) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const items = s.items;\n const isStringItems = isRecord(items) && items.type === 'string';\n if (!isStringItems) {\n return <p className=\"text-xs text-fg-muted\">Unsupported array type</p>;\n }\n const add = (t: string) => {\n const n = t.trim();\n if (!n || value.includes(n)) return;\n onChange([...value, n]);\n };\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <div className=\"flex flex-wrap gap-1\">\n {value.map((t) => (\n <span\n key={t}\n className=\"inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm\"\n >\n {t}\n <button\n type=\"button\"\n className=\"text-fg-muted hover:text-fg\"\n disabled={disabled}\n onClick={() => onChange(value.filter((x) => x !== t))}\n >\n ×\n </button>\n </span>\n ))}\n </div>\n <input\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm\"\n disabled={disabled}\n placeholder=\"Add and press Enter\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n add((e.target as HTMLInputElement).value);\n (e.target as HTMLInputElement).value = '';\n }\n }}\n />\n </div>\n );\n}\n\nfunction FieldRow({\n k,\n sub,\n value,\n onValue,\n disabled,\n}: {\n k: string;\n sub: JsonSchema;\n value: unknown;\n onValue: (next: unknown) => void;\n disabled: boolean;\n}) {\n const t = sub.type;\n const title =\n (typeof sub.title === 'string' && sub.title.length > 0 ? sub.title : null) ?? k;\n if (t === 'boolean') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <BooleanField\n s={sub}\n value={value === true}\n disabled={disabled}\n onChange={(b) => onValue(b)}\n />\n </div>\n );\n }\n if (t === 'number' || t === 'integer') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <NumberField\n s={sub}\n value={typeof value === 'number' ? value : 0}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <StringField\n name={k}\n s={sub}\n value={typeof value === 'string' ? value : ''}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'array') {\n const items = sub.items;\n if (isRecord(items) && items.type === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <ArrayStringField\n s={sub}\n value={Array.isArray(value) && value.every((x) => typeof x === 'string') ? value : []}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n }\n return (\n <p className=\"text-xs text-fg-muted\">\n {title}: unsupported field type\n {typeof t === 'string' ? ` (${t})` : ''}\n </p>\n );\n}\n\n/**\n * Renders a JSON Schema (type: object) as a form using Gateway Console design tokens.\n */\nexport function SchemaForm({ schema, values, onChange, disabled = false, className }: SchemaFormProps) {\n const fields = useMemo(() => {\n if (schema.type !== 'object') return [];\n return sortedFields(schema);\n }, [schema]);\n\n const grouped = useMemo(() => {\n if (fields.length === 0) return new Map<string, FieldDef[]>();\n return groupFields(fields);\n }, [fields]);\n\n const setKey = useCallback(\n (key: string, next: unknown) => {\n onChange({ ...values, [key]: next });\n },\n [onChange, values],\n );\n\n if (schema.type !== 'object' || !isRecord(schema.properties) || fields.length === 0) {\n return null;\n }\n\n const groupKeys = Array.from(grouped.keys()).sort((a, b) => {\n if (a === '') return -1;\n if (b === '') return 1;\n return a.localeCompare(b);\n });\n\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n {groupKeys.map((gk) => {\n const list = grouped.get(gk) ?? [];\n const block = list.map((f) => (\n <FieldRow\n key={f.key}\n k={f.key}\n sub={f.sub}\n value={values[f.key]}\n onValue={(v) => setKey(f.key, v)}\n disabled={disabled}\n />\n ));\n if (gk === '') {\n return <div key=\"default\">{block}</div>;\n }\n return (\n <details\n key={gk}\n className=\"group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base\"\n open\n >\n <summary className=\"cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none\">\n {gk}\n </summary>\n <div className=\"space-y-4 border-t border-edge p-3\">{block}</div>\n </details>\n );\n })}\n </div>\n );\n}\n\n/** Extract per-key defaults from a JSON object schema for \"Reset\" actions. */\nexport function extractObjectDefaults(\n schema: JsonSchema,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (schema.type !== 'object' || !isRecord(schema.properties)) {\n return out;\n }\n for (const [k, sub] of Object.entries(schema.properties)) {\n if (!isRecord(sub)) continue;\n if (Object.prototype.hasOwnProperty.call(sub, 'default')) {\n out[k] = sub.default;\n }\n }\n return out;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR from 'swr';\n\nimport { Button } from '@/components/ui/button';\nimport { extractObjectDefaults, SchemaForm, type JsonSchema } from '@/components/ui/schema-form';\nimport { apiFetch, fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\ntype ExtensionDetailResponse = {\n manifest: { configSchema?: JsonSchema };\n};\n\nexport function ExtensionAutoSettings({ extensionId }: { extensionId: string }) {\n const language = useLocaleStore((s) => s.language);\n const a = messages(language).agentSettings;\n const hasToken = useGatewayStore((s) => Boolean(s.token));\n const { data: detail, error: detailError } = useSWR(\n hasToken && extensionId ? `ext-detail-${extensionId}` : null,\n () => fetchJson<ExtensionDetailResponse>(apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}`)),\n );\n\n const { data: remoteConfig, mutate: mutateConfig, error: configError } = useSWR(\n hasToken && extensionId ? `ext-cfg-${extensionId}` : null,\n () =>\n fetchJson<Record<string, unknown>>(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n ),\n );\n\n const schema = detail?.manifest?.configSchema;\n const defaults = useMemo(\n () => (schema && schema.type === 'object' ? extractObjectDefaults(schema) : {}),\n [schema],\n );\n\n const savedValues = useMemo(\n () => ({ ...defaults, ...(remoteConfig ?? {}) }),\n [defaults, remoteConfig],\n );\n\n const [localValues, setLocalValues] = useState<Record<string, unknown>>({});\n const [isDirty, setIsDirty] = useState(false);\n const [saving, setSaving] = useState(false);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saveSuccess, setSaveSuccess] = useState(false);\n\n useEffect(() => {\n if (isDirty) return;\n setLocalValues(savedValues);\n }, [isDirty, savedValues]);\n\n const onChange = useCallback((next: Record<string, unknown>) => {\n setLocalValues(next);\n setIsDirty(true);\n setSaveError(null);\n }, []);\n\n const handleDiscard = useCallback(() => {\n setLocalValues(savedValues);\n setIsDirty(false);\n setSaveError(null);\n }, [savedValues]);\n\n const handleResetDefaults = useCallback(() => {\n if (!schema || schema.type !== 'object') return;\n setLocalValues({ ...extractObjectDefaults(schema) });\n setIsDirty(true);\n setSaveError(null);\n }, [schema]);\n\n const handleSave = useCallback(async () => {\n if (!extensionId) return;\n setSaving(true);\n setSaveError(null);\n try {\n const res = await apiFetch(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n { method: 'PATCH', body: JSON.stringify(localValues) },\n );\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as { error?: { message?: string } };\n throw new Error(body.error?.message ?? res.statusText);\n }\n await mutateConfig(localValues, false);\n setIsDirty(false);\n setSaveSuccess(true);\n window.setTimeout(() => setSaveSuccess(false), 3000);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : String(e));\n } finally {\n setSaving(false);\n }\n }, [extensionId, localValues, mutateConfig]);\n\n if (!hasToken) {\n return null;\n }\n\n if (detailError || configError) {\n const err = (detailError ?? configError) as Error;\n return (\n <p className=\"text-sm text-fg-muted\">\n Could not load extension settings: {err instanceof Error ? err.message : String(err)}\n </p>\n );\n }\n\n if (!schema || schema.type !== 'object') {\n return null;\n }\n\n return (\n <div className=\"mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-sm font-semibold text-fg\">Configuration</h2>\n <div className=\"flex flex-wrap items-center gap-2\">\n {saveSuccess ? (\n <span className=\"text-xs text-emerald-600 dark:text-emerald-400\">{a.saved}</span>\n ) : null}\n {saveError ? <span className=\"text-xs text-red-600 dark:text-red-400\">{saveError}</span> : null}\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n disabled={!isDirty}\n onClick={handleDiscard}\n >\n {a.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n onClick={handleResetDefaults}\n >\n Reset to defaults\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"h-8 text-xs\"\n disabled={!isDirty || saving}\n onClick={() => void handleSave()}\n >\n {saving ? a.saving : a.save}\n </Button>\n </div>\n </div>\n <SchemaForm schema={schema} values={localValues} onChange={onChange} disabled={saving} />\n </div>\n );\n}\n","/**\n * Extension settings: auto-generated config form (configSchema) + optional iframe (settingsPanels).\n *\n * Routes: /settings/ext/:extensionId, /settings/ext/:extensionId/:panelId\n */\n\nimport { Link, useParams } from 'react-router-dom';\n\nimport { ExtensionImageProviderSettings } from '@/features/settings/extension-image-provider-settings';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { ExtensionAutoSettings } from './extension-auto-settings';\nimport { ExtensionIframeHost } from './extension-iframe-host';\nimport { useExtensions } from './extension-provider';\n\nexport function ExtensionSettingsPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const xm = m.extensionImageGen;\n const { extensionId, panelId } = useParams<{ extensionId: string; panelId?: string }>();\n const extensions = useExtensions();\n\n if (!extensionId) {\n return <SettingsPanelNotFound message=\"No extension ID provided.\" />;\n }\n\n const extension = extensions.find((ext) => ext.id === extensionId);\n if (!extension) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" not found or is not available in this workspace.`}\n />\n );\n }\n\n const panels = extension.ui?.contributions?.settingsPanels;\n const panel = panelId\n ? panels?.find((p) => p.id === panelId || p.id === `${extensionId}.${panelId}`)\n : panels?.[0];\n\n const hasIframe = Boolean(panel && extension.ui);\n const hasAutoForm = Boolean(extension.hasConfigSchema);\n const isImageGeneration = extension.kind === 'image-generation';\n\n if (!hasAutoForm && !hasIframe && !isImageGeneration) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" has no settings panels or config schema.`}\n />\n );\n }\n\n const title = panel?.title ?? `${extension.name} Settings`;\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{title}</h1>\n {isImageGeneration ? (\n <div className=\"flex flex-col gap-2 rounded-lg border border-edge-subtle bg-surface-base px-4 py-3 text-sm\">\n <p className=\"leading-relaxed text-fg-muted\">{xm.banner}</p>\n <Link\n to=\"/settings/image-models\"\n className=\"w-fit font-medium text-accent hover:underline\"\n title={m.imageModelsSettings.imageModelsLinkTitle}\n >\n {xm.openImageModels}\n </Link>\n </div>\n ) : null}\n {isImageGeneration ? <ExtensionImageProviderSettings extensionId={extensionId} /> : null}\n {hasAutoForm ? <ExtensionAutoSettings extensionId={extensionId} /> : null}\n {hasIframe && panel && extension.ui ? (\n <div className=\"overflow-hidden rounded-xl border border-edge bg-surface-base\">\n <ExtensionIframeHost\n extensionId={extensionId}\n extensionName={extension.name}\n entrypoint={panel.entrypoint}\n permissions={extension.ui?.permissions}\n title={panel.title}\n className=\"w-full\"\n minHeight={120}\n maxHeight={2000}\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction SettingsPanelNotFound({ message }: { message: string }) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <p className=\"text-sm text-fg-muted\">{message}</p>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extension-settings-page-B0nkVsLi.js","names":["Loader2","useMemo","useSWR","fetchImageProvidersList","ImageProviderCredentialsPanel","ImageProviderCredentialsPanelMessages","IMAGE_PROVIDERS_SWR_KEY","useImageProviderCredentials","apiUrl","messages","MessageBundle","useGatewayStore","useLocaleStore","imageProvidersSwrKey","panelMessagesFromBundle","t","credentialsIntro","regionHint","endpointPresetsHint","apiKeyLabel","optionalPlaceholder","regionLabel","baseUrlLabel","imageBaseUrlLabel","saveCredentials","savingCredentials","credentialsSaved","discardCredentials","credentialsNothingToSave","credentialsSaveError","regionPresetDefault","regionPresetCustom","baseUrlPresetDefault","baseUrlPresetCustom","openExtensionSettings","openImageModelsPage","extensionSettingsLinkTitle","imageModelsLinkTitle","configured","missingKey","defaultModel","modelsLabel","imageBaseUrlPresetHint","dashscopeRegion_beijing","dashscopeRegion_singapore","dashscopeRegion_us","apiKeyMaskedHelp","apiKeyCopy","apiKeyCopied","apiKeyShow","apiKeyHide","apiKeyNotInConfigFile","apiKeyRevealFailed","minimaxClusterLabel","minimaxClusterHint","falQueueBaseLabel","falQueueBaseHint","ExtensionImageProviderSettings","t0","$","_c","extensionId","language","_temp","t1","m","imageModelsSettings","hasToken","_temp2","t2","t3","Symbol","for","revalidateOnFocus","data","t4","isLoading","t5","undefined","all","t6","t7","p","id","filter","summaries","cred","panelMsg","t8","providersSettings","getApiKey","getApiKeyCn","getApiKeyIntl","apiKeyLinkLabels","t9","length","t10","Set","t11","credDirty","credDraft","credError","credNoopFlash","credSavedFlash","credSaving","onDiscardCredentials","updateCredRow","s_0","Boolean","s","token","useCallback","useMemo","cn","JsonSchema","Record","SchemaFormProps","schema","values","onChange","disabled","className","isRecord","x","Array","isArray","FieldDef","key","sub","order","group","hidden","getXOrder","s","v","Number","isNaN","getXGroup","length","isHidden","sortedFields","props","properties","out","Object","entries","push","sort","a","b","localeCompare","groupFields","fields","Map","m","f","g","has","set","get","StringField","t0","$","_c","name","value","desc","description","undefined","placeholder","fmt","format","enum","every","_temp","t1","t2","e","target","t3","map","_temp2","t4","t5","inputType","e_0","op","NumberField","isFinite","BooleanField","labelText","title","checked","ArrayStringField","items","isStringItems","type","Symbol","for","t","n","trim","includes","add","t_0","filter","preventDefault","HTMLInputElement","t6","t7","FieldRow","k","onValue","_temp3","SchemaForm","bb0","bb1","grouped","next","setKey","groupKeys","from","keys","_temp4","gk","list","block","extractObjectDefaults","prototype","hasOwnProperty","call","default","useCallback","useEffect","useMemo","useState","useSWR","Button","extractObjectDefaults","SchemaForm","JsonSchema","apiFetch","fetchJson","apiUrl","messages","useGatewayStore","useLocaleStore","ExtensionDetailResponse","manifest","configSchema","ExtensionAutoSettings","extensionId","language","s","a","agentSettings","hasToken","Boolean","token","data","detail","error","detailError","encodeURIComponent","remoteConfig","mutate","mutateConfig","configError","Record","schema","defaults","type","savedValues","localValues","setLocalValues","isDirty","setIsDirty","saving","setSaving","saveError","setSaveError","saveSuccess","setSaveSuccess","onChange","next","handleDiscard","handleResetDefaults","handleSave","res","method","body","JSON","stringify","ok","json","catch","message","Error","statusText","window","setTimeout","e","String","err","saved","discard","save","Link","useParams","ExtensionImageProviderSettings","messages","useLocaleStore","ExtensionAutoSettings","ExtensionIframeHost","useExtensions","ExtensionSettingsPage","$","_c","language","_temp","t0","m","xm","extensionImageGen","extensionId","panelId","extensions","t1","Symbol","for","extension","t2","bb0","t3","ext","id","find","t4","t5","panels","ui","contributions","settingsPanels","p","panel","hasIframe","Boolean","hasAutoForm","hasConfigSchema","isImageGeneration","kind","title","name","imageModelsSettings","banner","imageModelsLinkTitle","openImageModels","t6","t7","entrypoint","permissions","t8","s","SettingsPanelNotFound","message"],"sources":["../../../../../web/src/features/settings/extension-image-provider-settings.tsx","../../../../../web/src/components/ui/schema-form.tsx","../../../../../web/src/features/extensions/extension-auto-settings.tsx","../../../../../web/src/features/extensions/extension-settings-page.tsx"],"sourcesContent":["import { Loader2 } from 'lucide-react';\nimport { useMemo } from 'react';\nimport useSWR from 'swr';\n\nimport { fetchImageProvidersList } from '@/features/settings/fetch-image-providers';\nimport {\n ImageProviderCredentialsPanel,\n type ImageProviderCredentialsPanelMessages,\n} from '@/features/settings/image-provider-credentials-panel';\nimport { IMAGE_PROVIDERS_SWR_KEY } from '@/features/settings/image-providers-swr-key';\nimport { useImageProviderCredentials } from '@/features/settings/use-image-provider-credentials';\nimport { apiUrl } from '@/lib/url';\nimport { messages, type MessageBundle } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nconst imageProvidersSwrKey = () => apiUrl(IMAGE_PROVIDERS_SWR_KEY);\n\nfunction panelMessagesFromBundle(t: MessageBundle['imageModelsSettings']): ImageProviderCredentialsPanelMessages {\n return {\n credentialsIntro: t.credentialsIntro,\n regionHint: t.regionHint,\n endpointPresetsHint: t.endpointPresetsHint,\n apiKeyLabel: t.apiKeyLabel,\n optionalPlaceholder: t.optionalPlaceholder,\n regionLabel: t.regionLabel,\n baseUrlLabel: t.baseUrlLabel,\n imageBaseUrlLabel: t.imageBaseUrlLabel,\n saveCredentials: t.saveCredentials,\n savingCredentials: t.savingCredentials,\n credentialsSaved: t.credentialsSaved,\n discardCredentials: t.discardCredentials,\n credentialsNothingToSave: t.credentialsNothingToSave,\n credentialsSaveError: t.credentialsSaveError,\n regionPresetDefault: t.regionPresetDefault,\n regionPresetCustom: t.regionPresetCustom,\n baseUrlPresetDefault: t.baseUrlPresetDefault,\n baseUrlPresetCustom: t.baseUrlPresetCustom,\n openExtensionSettings: t.openExtensionSettings,\n openImageModelsPage: t.openImageModelsPage,\n extensionSettingsLinkTitle: t.extensionSettingsLinkTitle,\n imageModelsLinkTitle: t.imageModelsLinkTitle,\n configured: t.configured,\n missingKey: t.missingKey,\n defaultModel: t.defaultModel,\n modelsLabel: t.modelsLabel,\n imageBaseUrlPresetHint: t.imageBaseUrlPresetHint,\n dashscopeRegion_beijing: t.dashscopeRegion_beijing,\n dashscopeRegion_singapore: t.dashscopeRegion_singapore,\n dashscopeRegion_us: t.dashscopeRegion_us,\n apiKeyMaskedHelp: t.apiKeyMaskedHelp,\n apiKeyCopy: t.apiKeyCopy,\n apiKeyCopied: t.apiKeyCopied,\n apiKeyShow: t.apiKeyShow,\n apiKeyHide: t.apiKeyHide,\n apiKeyNotInConfigFile: t.apiKeyNotInConfigFile,\n apiKeyRevealFailed: t.apiKeyRevealFailed,\n minimaxClusterLabel: t.minimaxClusterLabel,\n minimaxClusterHint: t.minimaxClusterHint,\n falQueueBaseLabel: t.falQueueBaseLabel,\n falQueueBaseHint: t.falQueueBaseHint,\n };\n}\n\nexport function ExtensionImageProviderSettings({ extensionId }: { extensionId: string }) {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const t = m.imageModelsSettings;\n const hasToken = useGatewayStore((s) => Boolean(s.token));\n\n const { data: all = [], isLoading } = useSWR(\n hasToken ? imageProvidersSwrKey() : null,\n fetchImageProvidersList,\n { revalidateOnFocus: false },\n );\n\n const summaries = useMemo(\n () => all.filter((p) => p.id === extensionId),\n [all, extensionId],\n );\n\n const cred = useImageProviderCredentials(summaries);\n const panelMsg = useMemo(() => panelMessagesFromBundle(t), [t]);\n const apiKeyLinkLabels = useMemo(\n () => ({\n getApiKey: m.providersSettings.getApiKey,\n getApiKeyIntl: m.providersSettings.getApiKeyIntl,\n getApiKeyCn: m.providersSettings.getApiKeyCn,\n }),\n [m.providersSettings],\n );\n\n if (!hasToken) {\n return null;\n }\n\n if (isLoading) {\n return (\n <div className=\"flex items-center gap-2 py-6 text-sm text-fg-muted\">\n <Loader2 className=\"size-4 animate-spin\" />\n …\n </div>\n );\n }\n\n if (summaries.length === 0) {\n return (\n <p className=\"text-sm text-fg-muted\">\n {language === 'zh'\n ? '网关未注册该图像 Provider,或扩展已被禁用。'\n : 'This image provider is not registered on the gateway, or the extension is disabled.'}\n </p>\n );\n }\n\n return (\n <ImageProviderCredentialsPanel\n summaries={summaries}\n credDraft={cred.credDraft}\n credDirty={cred.credDirty}\n credSaving={cred.credSaving}\n credError={cred.credError}\n credSavedFlash={cred.credSavedFlash}\n credNoopFlash={cred.credNoopFlash}\n updateCredRow={cred.updateCredRow}\n onDiscardCredentials={cred.onDiscardCredentials}\n onSaveCredentials={() => void cred.saveCredentials(t.credentialsSaveError)}\n extensionIds={new Set()}\n showExtensionLinks={false}\n showImageModelsLink={false}\n language={language}\n apiKeyLinkLabels={apiKeyLinkLabels}\n messages={panelMsg}\n />\n );\n}\n","import { useCallback, useMemo } from 'react';\n\nimport { cn } from '@/lib/cn';\n\nexport type JsonSchema = Record<string, unknown>;\n\ntype SchemaFormProps = {\n schema: JsonSchema;\n values: Record<string, unknown>;\n onChange: (values: Record<string, unknown>) => void;\n disabled?: boolean;\n className?: string;\n};\n\nfunction isRecord(x: unknown): x is Record<string, unknown> {\n return typeof x === 'object' && x !== null && !Array.isArray(x);\n}\n\ntype FieldDef = {\n key: string;\n sub: JsonSchema;\n order: number;\n group: string;\n hidden: boolean;\n};\n\nfunction getXOrder(s: JsonSchema): number {\n const v = s['x-order'];\n return typeof v === 'number' && !Number.isNaN(v) ? v : 999;\n}\n\nfunction getXGroup(s: JsonSchema): string {\n const v = s['x-group'];\n return typeof v === 'string' && v.length > 0 ? v : '';\n}\n\nfunction isHidden(s: JsonSchema): boolean {\n return s['x-hidden'] === true;\n}\n\nfunction sortedFields(schema: JsonSchema): FieldDef[] {\n const props = schema.properties;\n if (!isRecord(props)) return [];\n const out: FieldDef[] = [];\n for (const [key, sub] of Object.entries(props)) {\n if (!isRecord(sub)) continue;\n if (isHidden(sub)) continue;\n out.push({\n key,\n sub: sub,\n order: getXOrder(sub),\n group: getXGroup(sub),\n hidden: false,\n });\n }\n out.sort((a, b) => a.order - b.order || a.key.localeCompare(b.key));\n return out;\n}\n\nfunction groupFields(fields: FieldDef[]): Map<string, FieldDef[]> {\n const m = new Map<string, FieldDef[]>();\n for (const f of fields) {\n const g = f.group;\n if (!m.has(g)) m.set(g, []);\n m.get(g)!.push(f);\n }\n return m;\n}\n\nfunction StringField({\n name,\n s,\n value,\n onChange,\n disabled,\n}: {\n name: string;\n s: JsonSchema;\n value: string;\n onChange: (v: string) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const placeholder =\n (typeof s['x-placeholder'] === 'string' ? s['x-placeholder'] : null) || desc;\n const fmt = s.format;\n if (Array.isArray(s.enum) && s.enum.every((x) => typeof x === 'string')) {\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <select\n name={name}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2 text-sm text-fg\"\n value={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n >\n {(s.enum).map((op) => (\n <option key={op} value={op}>\n {op}\n </option>\n ))}\n </select>\n </div>\n );\n }\n const inputType = fmt === 'password' ? 'password' : 'text';\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n name={name}\n type={inputType}\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg placeholder:text-fg-muted/70\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n\nfunction NumberField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: number;\n onChange: (v: number) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <input\n type=\"number\"\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm text-fg\"\n value={Number.isFinite(value) ? value : 0}\n disabled={disabled}\n onChange={(e) => onChange(Number(e.target.value))}\n />\n </div>\n );\n}\n\nfunction BooleanField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: boolean;\n onChange: (v: boolean) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const labelText =\n desc ?? (typeof s.title === 'string' && s.title.length > 0 ? s.title : 'Enable');\n return (\n <label className=\"flex items-center gap-2 text-sm text-fg\">\n <input\n type=\"checkbox\"\n className=\"size-4 rounded border border-edge\"\n checked={value}\n disabled={disabled}\n onChange={(e) => onChange(e.target.checked)}\n />\n <span>{labelText}</span>\n </label>\n );\n}\n\nfunction ArrayStringField({\n s,\n value,\n onChange,\n disabled,\n}: {\n s: JsonSchema;\n value: string[];\n onChange: (v: string[]) => void;\n disabled: boolean;\n}) {\n const desc = typeof s.description === 'string' ? s.description : undefined;\n const items = s.items;\n const isStringItems = isRecord(items) && items.type === 'string';\n if (!isStringItems) {\n return <p className=\"text-xs text-fg-muted\">Unsupported array type</p>;\n }\n const add = (t: string) => {\n const n = t.trim();\n if (!n || value.includes(n)) return;\n onChange([...value, n]);\n };\n return (\n <div className=\"flex flex-col gap-1.5\">\n {desc ? <label className=\"text-xs text-fg-muted\">{desc}</label> : null}\n <div className=\"flex flex-wrap gap-1\">\n {value.map((t) => (\n <span\n key={t}\n className=\"inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-0.5 text-sm\"\n >\n {t}\n <button\n type=\"button\"\n className=\"text-fg-muted hover:text-fg\"\n disabled={disabled}\n onClick={() => onChange(value.filter((x) => x !== t))}\n >\n ×\n </button>\n </span>\n ))}\n </div>\n <input\n className=\"ui-input h-9 rounded-md border border-edge bg-surface-base px-2.5 text-sm\"\n disabled={disabled}\n placeholder=\"Add and press Enter\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n add((e.target as HTMLInputElement).value);\n (e.target as HTMLInputElement).value = '';\n }\n }}\n />\n </div>\n );\n}\n\nfunction FieldRow({\n k,\n sub,\n value,\n onValue,\n disabled,\n}: {\n k: string;\n sub: JsonSchema;\n value: unknown;\n onValue: (next: unknown) => void;\n disabled: boolean;\n}) {\n const t = sub.type;\n const title =\n (typeof sub.title === 'string' && sub.title.length > 0 ? sub.title : null) ?? k;\n if (t === 'boolean') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <BooleanField\n s={sub}\n value={value === true}\n disabled={disabled}\n onChange={(b) => onValue(b)}\n />\n </div>\n );\n }\n if (t === 'number' || t === 'integer') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <NumberField\n s={sub}\n value={typeof value === 'number' ? value : 0}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <StringField\n name={k}\n s={sub}\n value={typeof value === 'string' ? value : ''}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n if (t === 'array') {\n const items = sub.items;\n if (isRecord(items) && items.type === 'string') {\n return (\n <div className=\"space-y-1.5\">\n <p className=\"text-sm font-medium text-fg\">{title}</p>\n <ArrayStringField\n s={sub}\n value={Array.isArray(value) && value.every((x) => typeof x === 'string') ? value : []}\n disabled={disabled}\n onChange={onValue}\n />\n </div>\n );\n }\n }\n return (\n <p className=\"text-xs text-fg-muted\">\n {title}: unsupported field type\n {typeof t === 'string' ? ` (${t})` : ''}\n </p>\n );\n}\n\n/**\n * Renders a JSON Schema (type: object) as a form using Gateway Console design tokens.\n */\nexport function SchemaForm({ schema, values, onChange, disabled = false, className }: SchemaFormProps) {\n const fields = useMemo(() => {\n if (schema.type !== 'object') return [];\n return sortedFields(schema);\n }, [schema]);\n\n const grouped = useMemo(() => {\n if (fields.length === 0) return new Map<string, FieldDef[]>();\n return groupFields(fields);\n }, [fields]);\n\n const setKey = useCallback(\n (key: string, next: unknown) => {\n onChange({ ...values, [key]: next });\n },\n [onChange, values],\n );\n\n if (schema.type !== 'object' || !isRecord(schema.properties) || fields.length === 0) {\n return null;\n }\n\n const groupKeys = Array.from(grouped.keys()).sort((a, b) => {\n if (a === '') return -1;\n if (b === '') return 1;\n return a.localeCompare(b);\n });\n\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n {groupKeys.map((gk) => {\n const list = grouped.get(gk) ?? [];\n const block = list.map((f) => (\n <FieldRow\n key={f.key}\n k={f.key}\n sub={f.sub}\n value={values[f.key]}\n onValue={(v) => setKey(f.key, v)}\n disabled={disabled}\n />\n ));\n if (gk === '') {\n return <div key=\"default\">{block}</div>;\n }\n return (\n <details\n key={gk}\n className=\"group rounded-lg border border-edge bg-surface-panel/40 open:bg-surface-base\"\n open\n >\n <summary className=\"cursor-pointer select-none px-3 py-2 text-sm font-medium text-fg group-open:rounded-b-none\">\n {gk}\n </summary>\n <div className=\"space-y-4 border-t border-edge p-3\">{block}</div>\n </details>\n );\n })}\n </div>\n );\n}\n\n/** Extract per-key defaults from a JSON object schema for \"Reset\" actions. */\nexport function extractObjectDefaults(\n schema: JsonSchema,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (schema.type !== 'object' || !isRecord(schema.properties)) {\n return out;\n }\n for (const [k, sub] of Object.entries(schema.properties)) {\n if (!isRecord(sub)) continue;\n if (Object.prototype.hasOwnProperty.call(sub, 'default')) {\n out[k] = sub.default;\n }\n }\n return out;\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR from 'swr';\n\nimport { Button } from '@/components/ui/button';\nimport { extractObjectDefaults, SchemaForm, type JsonSchema } from '@/components/ui/schema-form';\nimport { apiFetch, fetchJson } from '@/lib/fetch';\nimport { apiUrl } from '@/lib/url';\nimport { messages } from '@/i18n/messages';\nimport { useGatewayStore } from '@/stores/gateway-store';\nimport { useLocaleStore } from '@/stores/locale-store';\n\ntype ExtensionDetailResponse = {\n manifest: { configSchema?: JsonSchema };\n};\n\nexport function ExtensionAutoSettings({ extensionId }: { extensionId: string }) {\n const language = useLocaleStore((s) => s.language);\n const a = messages(language).agentSettings;\n const hasToken = useGatewayStore((s) => Boolean(s.token));\n const { data: detail, error: detailError } = useSWR(\n hasToken && extensionId ? `ext-detail-${extensionId}` : null,\n () => fetchJson<ExtensionDetailResponse>(apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}`)),\n );\n\n const { data: remoteConfig, mutate: mutateConfig, error: configError } = useSWR(\n hasToken && extensionId ? `ext-cfg-${extensionId}` : null,\n () =>\n fetchJson<Record<string, unknown>>(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n ),\n );\n\n const schema = detail?.manifest?.configSchema;\n const defaults = useMemo(\n () => (schema && schema.type === 'object' ? extractObjectDefaults(schema) : {}),\n [schema],\n );\n\n const savedValues = useMemo(\n () => ({ ...defaults, ...(remoteConfig ?? {}) }),\n [defaults, remoteConfig],\n );\n\n const [localValues, setLocalValues] = useState<Record<string, unknown>>({});\n const [isDirty, setIsDirty] = useState(false);\n const [saving, setSaving] = useState(false);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [saveSuccess, setSaveSuccess] = useState(false);\n\n useEffect(() => {\n if (isDirty) return;\n setLocalValues(savedValues);\n }, [isDirty, savedValues]);\n\n const onChange = useCallback((next: Record<string, unknown>) => {\n setLocalValues(next);\n setIsDirty(true);\n setSaveError(null);\n }, []);\n\n const handleDiscard = useCallback(() => {\n setLocalValues(savedValues);\n setIsDirty(false);\n setSaveError(null);\n }, [savedValues]);\n\n const handleResetDefaults = useCallback(() => {\n if (!schema || schema.type !== 'object') return;\n setLocalValues({ ...extractObjectDefaults(schema) });\n setIsDirty(true);\n setSaveError(null);\n }, [schema]);\n\n const handleSave = useCallback(async () => {\n if (!extensionId) return;\n setSaving(true);\n setSaveError(null);\n try {\n const res = await apiFetch(\n apiUrl(`/api/extensions/${encodeURIComponent(extensionId)}/config`),\n { method: 'PATCH', body: JSON.stringify(localValues) },\n );\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as { error?: { message?: string } };\n throw new Error(body.error?.message ?? res.statusText);\n }\n await mutateConfig(localValues, false);\n setIsDirty(false);\n setSaveSuccess(true);\n window.setTimeout(() => setSaveSuccess(false), 3000);\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : String(e));\n } finally {\n setSaving(false);\n }\n }, [extensionId, localValues, mutateConfig]);\n\n if (!hasToken) {\n return null;\n }\n\n if (detailError || configError) {\n const err = (detailError ?? configError) as Error;\n return (\n <p className=\"text-sm text-fg-muted\">\n Could not load extension settings: {err instanceof Error ? err.message : String(err)}\n </p>\n );\n }\n\n if (!schema || schema.type !== 'object') {\n return null;\n }\n\n return (\n <div className=\"mb-6 flex flex-col gap-3 rounded-xl border border-edge bg-surface-base p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <h2 className=\"text-sm font-semibold text-fg\">Configuration</h2>\n <div className=\"flex flex-wrap items-center gap-2\">\n {saveSuccess ? (\n <span className=\"text-xs text-emerald-600 dark:text-emerald-400\">{a.saved}</span>\n ) : null}\n {saveError ? <span className=\"text-xs text-red-600 dark:text-red-400\">{saveError}</span> : null}\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n disabled={!isDirty}\n onClick={handleDiscard}\n >\n {a.discard}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"h-8 text-xs\"\n onClick={handleResetDefaults}\n >\n Reset to defaults\n </Button>\n <Button\n type=\"button\"\n variant=\"primary\"\n className=\"h-8 text-xs\"\n disabled={!isDirty || saving}\n onClick={() => void handleSave()}\n >\n {saving ? a.saving : a.save}\n </Button>\n </div>\n </div>\n <SchemaForm schema={schema} values={localValues} onChange={onChange} disabled={saving} />\n </div>\n );\n}\n","/**\n * Extension settings: auto-generated config form (configSchema) + optional iframe (settingsPanels).\n *\n * Routes: /settings/ext/:extensionId, /settings/ext/:extensionId/:panelId\n */\n\nimport { Link, useParams } from 'react-router-dom';\n\nimport { ExtensionImageProviderSettings } from '@/features/settings/extension-image-provider-settings';\nimport { messages } from '@/i18n/messages';\nimport { useLocaleStore } from '@/stores/locale-store';\n\nimport { ExtensionAutoSettings } from './extension-auto-settings';\nimport { ExtensionIframeHost } from './extension-iframe-host';\nimport { useExtensions } from './extension-provider';\n\nexport function ExtensionSettingsPage() {\n const language = useLocaleStore((s) => s.language);\n const m = messages(language);\n const xm = m.extensionImageGen;\n const { extensionId, panelId } = useParams<{ extensionId: string; panelId?: string }>();\n const extensions = useExtensions();\n\n if (!extensionId) {\n return <SettingsPanelNotFound message=\"No extension ID provided.\" />;\n }\n\n const extension = extensions.find((ext) => ext.id === extensionId);\n if (!extension) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" not found or is not available in this workspace.`}\n />\n );\n }\n\n const panels = extension.ui?.contributions?.settingsPanels;\n const panel = panelId\n ? panels?.find((p) => p.id === panelId || p.id === `${extensionId}.${panelId}`)\n : panels?.[0];\n\n const hasIframe = Boolean(panel && extension.ui);\n const hasAutoForm = Boolean(extension.hasConfigSchema);\n const isImageGeneration = extension.kind === 'image-generation';\n\n if (!hasAutoForm && !hasIframe && !isImageGeneration) {\n return (\n <SettingsPanelNotFound\n message={`Extension \"${extensionId}\" has no settings panels or config schema.`}\n />\n );\n }\n\n const title = panel?.title ?? `${extension.name} Settings`;\n\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <h1 className=\"text-lg font-semibold text-fg\">{title}</h1>\n {isImageGeneration ? (\n <div className=\"flex flex-col gap-2 rounded-lg border border-edge-subtle bg-surface-base px-4 py-3 text-sm\">\n <p className=\"leading-relaxed text-fg-muted\">{xm.banner}</p>\n <Link\n to=\"/settings/image-models\"\n className=\"w-fit font-medium text-accent hover:underline\"\n title={m.imageModelsSettings.imageModelsLinkTitle}\n >\n {xm.openImageModels}\n </Link>\n </div>\n ) : null}\n {isImageGeneration ? <ExtensionImageProviderSettings extensionId={extensionId} /> : null}\n {hasAutoForm ? <ExtensionAutoSettings extensionId={extensionId} /> : null}\n {hasIframe && panel && extension.ui ? (\n <div className=\"overflow-hidden rounded-xl border border-edge bg-surface-base\">\n <ExtensionIframeHost\n extensionId={extensionId}\n extensionName={extension.name}\n entrypoint={panel.entrypoint}\n permissions={extension.ui?.permissions}\n title={panel.title}\n className=\"w-full\"\n minHeight={120}\n maxHeight={2000}\n />\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction SettingsPanelNotFound({ message }: { message: string }) {\n return (\n <div className=\"mx-auto flex w-full max-w-app-main flex-col gap-3 px-4 py-8\">\n <p className=\"text-sm text-fg-muted\">{message}</p>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{o as i}from"./vendor-swr-CQnUjdeQ.js";import{En as a,In as o,Mt as s,qn as c,xn as l,zn as u}from"./index-Cc57jhuG.js";import{D as ee,O as te}from"./cron-dreaming-jobs-3--QJSP5.js";var ne=n(),d=e(t(),1),f=r(),re=Array.from({length:60},(e,t)=>t),p=c(u,`min-w-0 shrink text-xs sm:min-w-[7rem] sm:max-w-[11rem]`),ie=c(`h-9 min-w-[6.5rem] shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-sm text-fg`,o,`dark:bg-surface-panel`),ae=c(`h-9 min-w-[9.5rem] shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-sm text-fg`,o),oe=c(`h-9 w-14 shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-center text-sm tabular-nums text-fg`,o),se=c(`min-h-[2.5rem] w-full rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 font-mono text-xs text-fg`,o);function m(e){let t=(0,ne.c)(136),{value:n,onChange:r,labels:i,disabled:a,showHeading:o}=e,s=o===void 0?!0:o,l;t[0]===n?l=t[1]:(l=te(n),t[0]=n,t[1]=l);let u=l,[m,h]=(0,d.useState)(u.mode),[g,_]=(0,d.useState)(u.intervalKind),[v,pe]=(0,d.useState)(u.onceDate),[y,me]=(0,d.useState)(u.intervalMinutes),[b,he]=(0,d.useState)(u.intervalHours),[x,ge]=(0,d.useState)(u.minute),[_e,ve]=(0,d.useState)(u.hour),[S,ye]=(0,d.useState)(u.weekDays),[C,be]=(0,d.useState)(u.dayOfMonth),[w,xe]=(0,d.useState)(u.rawCron),[T,E]=(0,d.useState)(null),[D,O]=(0,d.useState)(null),k,A;t[2]===n?(k=t[3],A=t[4]):(k=()=>{let e=te(n);h(e.mode),_(e.intervalKind),pe(e.onceDate),me(e.intervalMinutes),he(e.intervalHours),ge(e.minute),ve(e.hour),ye(e.weekDays),be(e.dayOfMonth),xe(e.rawCron),E(null),O(null)},A=[n],t[2]=n,t[3]=k,t[4]=A),(0,d.useEffect)(k,A);let j;t[5]!==C||t[6]!==_e||t[7]!==b||t[8]!==g||t[9]!==y||t[10]!==x||t[11]!==m||t[12]!==r||t[13]!==v||t[14]!==w||t[15]!==S?(j=e=>{r(ee({mode:m,intervalKind:g,onceDate:v,intervalMinutes:y,intervalHours:b,minute:x,hour:_e,weekDays:S,dayOfMonth:C,rawCron:w,...e}))},t[5]=C,t[6]=_e,t[7]=b,t[8]=g,t[9]=y,t[10]=x,t[11]=m,t[12]=r,t[13]=v,t[14]=w,t[15]=S,t[16]=j):j=t[16];let M=j,Se=String(_e),N;t[17]===Se?N=t[18]:(N=Se.padStart(2,`0`),t[17]=Se,t[18]=N);let Ce=String(x),P;t[19]===Ce?P=t[20]:(P=Ce.padStart(2,`0`),t[19]=Ce,t[20]=P);let F=`${N}:${P}`,we;t[21]===M?we=t[22]:(we=e=>{let t=e.target.value;if(!t)return;let[n,r]=t.split(`:`).map(fe);Number.isNaN(n)||Number.isNaN(r)||M({minute:r,hour:n})},t[21]=M,t[22]=we);let I=we,L;t[23]===M?L=t[24]:(L=e=>{let t=e.target.value;h(t),M({mode:t})},t[23]=M,t[24]=L);let R;t[25]===i.modeNoRepeat?R=t[26]:(R=(0,f.jsx)(`option`,{value:`no_repeat`,children:i.modeNoRepeat}),t[25]=i.modeNoRepeat,t[26]=R);let z;t[27]===i.modeInterval?z=t[28]:(z=(0,f.jsx)(`option`,{value:`interval`,children:i.modeInterval}),t[27]=i.modeInterval,t[28]=z);let B;t[29]===i.modeHourly?B=t[30]:(B=(0,f.jsx)(`option`,{value:`hourly`,children:i.modeHourly}),t[29]=i.modeHourly,t[30]=B);let V;t[31]===i.modeDaily?V=t[32]:(V=(0,f.jsx)(`option`,{value:`daily`,children:i.modeDaily}),t[31]=i.modeDaily,t[32]=V);let H;t[33]===i.modeWeekly?H=t[34]:(H=(0,f.jsx)(`option`,{value:`weekly`,children:i.modeWeekly}),t[33]=i.modeWeekly,t[34]=H);let U;t[35]===i.modeMonthly?U=t[36]:(U=(0,f.jsx)(`option`,{value:`monthly`,children:i.modeMonthly}),t[35]=i.modeMonthly,t[36]=U);let W;t[37]===i.modeCustom?W=t[38]:(W=(0,f.jsx)(`option`,{value:`custom`,children:i.modeCustom}),t[37]=i.modeCustom,t[38]=W);let G;t[39]!==a||t[40]!==i.scheduleTimeLabel||t[41]!==m||t[42]!==L||t[43]!==R||t[44]!==z||t[45]!==B||t[46]!==V||t[47]!==H||t[48]!==U||t[49]!==W?(G=(0,f.jsxs)(`select`,{className:p,disabled:a,value:m,onChange:L,"aria-label":i.scheduleTimeLabel,children:[R,z,B,V,H,U,W]}),t[39]=a,t[40]=i.scheduleTimeLabel,t[41]=m,t[42]=L,t[43]=R,t[44]=z,t[45]=B,t[46]=V,t[47]=H,t[48]=U,t[49]=W,t[50]=G):G=t[50];let K;t[51]!==a||t[52]!==M||t[53]!==i.modeNoRepeat||t[54]!==i.scheduleTimeLabel||t[55]!==m||t[56]!==I||t[57]!==v||t[58]!==F?(K=m===`no_repeat`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`date`,disabled:a,className:ae,value:v,onChange:e=>{let t=e.target.value;pe(t),M({onceDate:t})},"aria-label":i.modeNoRepeat}),(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel})]}),t[51]=a,t[52]=M,t[53]=i.modeNoRepeat,t[54]=i.scheduleTimeLabel,t[55]=m,t[56]=I,t[57]=v,t[58]=F,t[59]=K):K=t[59];let q;t[60]!==a||t[61]!==M||t[62]!==b||t[63]!==D||t[64]!==g||t[65]!==y||t[66]!==T||t[67]!==i.hourUnit||t[68]!==i.intervalHours||t[69]!==i.intervalKindHours||t[70]!==i.intervalKindMinutes||t[71]!==i.intervalMinutes||t[72]!==i.minuteAtHour||t[73]!==i.minuteUnit||t[74]!==i.modeInterval||t[75]!==x||t[76]!==m?(q=m===`interval`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`select`,{className:c(p,`w-auto min-w-[5rem]`),disabled:a,value:g,onChange:e=>{let t=e.target.value;_(t),E(null),O(null),M({intervalKind:t})},"aria-label":i.modeInterval,children:[(0,f.jsx)(`option`,{value:`minutes`,children:i.intervalKindMinutes}),(0,f.jsx)(`option`,{value:`hours`,children:i.intervalKindHours})]}),g===`minutes`?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`number`,min:1,max:59,disabled:a,className:oe,value:T??String(y),onChange:e=>{let t=e.target.value;E(t);let n=parseInt(t,10);Number.isFinite(n)&&n>=1&&n<=59&&(me(n),M({intervalMinutes:n}))},onBlur:()=>{if(T===null)return;let e=parseInt(T,10),t=!Number.isFinite(e)||e<1?5:Math.min(59,Math.max(1,Math.round(e)));me(t),M({intervalMinutes:t}),E(null)},"aria-label":i.intervalMinutes}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`number`,min:1,max:23,disabled:a,className:oe,value:D??String(b),onChange:e=>{let t=e.target.value;O(t);let n=parseInt(t,10);Number.isFinite(n)&&n>=1&&n<=23&&(he(n),M({intervalHours:n}))},onBlur:()=>{if(D===null)return;let e=parseInt(D,10),t=!Number.isFinite(e)||e<1?2:Math.min(23,Math.max(1,Math.round(e)));he(t),M({intervalHours:t}),O(null)},"aria-label":i.intervalHours}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.hourUnit}),(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4rem]`),disabled:a,value:x,onChange:e=>{let t=parseInt(e.target.value,10);ge(t),M({minute:t})},"aria-label":i.minuteAtHour,children:re.map(de)}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]})]}),t[60]=a,t[61]=M,t[62]=b,t[63]=D,t[64]=g,t[65]=y,t[66]=T,t[67]=i.hourUnit,t[68]=i.intervalHours,t[69]=i.intervalKindHours,t[70]=i.intervalKindMinutes,t[71]=i.intervalMinutes,t[72]=i.minuteAtHour,t[73]=i.minuteUnit,t[74]=i.modeInterval,t[75]=x,t[76]=m,t[77]=q):q=t[77];let J;t[78]!==a||t[79]!==i.scheduleTimeLabel||t[80]!==m||t[81]!==I||t[82]!==F?(J=m===`daily`&&(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel}),t[78]=a,t[79]=i.scheduleTimeLabel,t[80]=m,t[81]=I,t[82]=F,t[83]=J):J=t[83];let Y;t[84]!==a||t[85]!==i.scheduleTimeLabel||t[86]!==m||t[87]!==I||t[88]!==F?(Y=m===`weekly`&&(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel}),t[84]=a,t[85]=i.scheduleTimeLabel,t[86]=m,t[87]=I,t[88]=F,t[89]=Y):Y=t[89];let X;t[90]!==C||t[91]!==a||t[92]!==M||t[93]!==i.dayOfMonth||t[94]!==i.scheduleTimeLabel||t[95]!==m||t[96]!==I||t[97]!==F?(X=m===`monthly`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4.5rem]`),disabled:a,value:C,onChange:e=>{let t=parseInt(e.target.value,10);be(t),M({dayOfMonth:t})},"aria-label":i.dayOfMonth,children:Array.from({length:31},ue).map(le)}),(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel})]}),t[90]=C,t[91]=a,t[92]=M,t[93]=i.dayOfMonth,t[94]=i.scheduleTimeLabel,t[95]=m,t[96]=I,t[97]=F,t[98]=X):X=t[98];let Z;t[99]!==a||t[100]!==M||t[101]!==i.minuteAtHour||t[102]!==i.minuteUnit||t[103]!==x||t[104]!==m?(Z=m===`hourly`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4rem]`),disabled:a,value:x,onChange:e=>{let t=parseInt(e.target.value,10);ge(t),M({minute:t})},"aria-label":i.minuteAtHour,children:re.map(ce)}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]}),t[99]=a,t[100]=M,t[101]=i.minuteAtHour,t[102]=i.minuteUnit,t[103]=x,t[104]=m,t[105]=Z):Z=t[105];let Te;t[106]!==G||t[107]!==K||t[108]!==q||t[109]!==J||t[110]!==Y||t[111]!==X||t[112]!==Z?(Te=(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`,children:[G,K,q,J,Y,X,Z]}),t[106]=G,t[107]=K,t[108]=q,t[109]=J,t[110]=Y,t[111]=X,t[112]=Z,t[113]=Te):Te=t[113];let Ee=Te,De;t[114]!==a||t[115]!==M||t[116]!==i.modeWeekly||t[117]!==i.weekdays||t[118]!==m||t[119]!==S?(De=m===`weekly`?(0,f.jsx)(`div`,{className:`flex flex-wrap gap-1.5 pt-1`,role:`group`,"aria-label":i.modeWeekly,children:i.weekdays.map((e,t)=>{let n=S[t];return(0,f.jsx)(`button`,{type:`button`,disabled:a,className:c(`flex size-9 select-none items-center justify-center rounded-full border text-xs font-medium transition-colors`,n?`border-fg bg-fg text-surface-panel`:`border-edge-subtle bg-surface-panel text-fg hover:border-edge`),"aria-pressed":n,onClick:()=>{let e=[...S];e[t]=!e[t],ye(e),M({weekDays:e})},children:e},e)})}):null,t[114]=a,t[115]=M,t[116]=i.modeWeekly,t[117]=i.weekdays,t[118]=m,t[119]=S,t[120]=De):De=t[120];let Oe=De,ke;t[121]!==a||t[122]!==i.customCronHint||t[123]!==i.modeCustom||t[124]!==m||t[125]!==r||t[126]!==w?(ke=m===`custom`?(0,f.jsxs)(`div`,{className:`pt-1`,children:[(0,f.jsx)(`textarea`,{disabled:a,className:se,rows:2,spellCheck:!1,value:w,placeholder:`*/5 * * * *`,onChange:e=>{let t=e.target.value;xe(t),r(t.trim()||`*/5 * * * *`)},"aria-label":i.modeCustom}),(0,f.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:i.customCronHint})]}):null,t[121]=a,t[122]=i.customCronHint,t[123]=i.modeCustom,t[124]=m,t[125]=r,t[126]=w,t[127]=ke):ke=t[127];let Ae=ke,Q;t[128]!==i.scheduleTimeLabel||t[129]!==s?(Q=s?(0,f.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:i.scheduleTimeLabel}):null,t[128]=i.scheduleTimeLabel,t[129]=s,t[130]=Q):Q=t[130];let $;return t[131]!==Ae||t[132]!==Ee||t[133]!==Q||t[134]!==Oe?($=(0,f.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Q,Ee,Oe,Ae]}),t[131]=Ae,t[132]=Ee,t[133]=Q,t[134]=Oe,t[135]=$):$=t[135],$}function ce(e){return(0,f.jsx)(`option`,{value:e,children:String(e).padStart(2,`0`)},e)}function le(e){return(0,f.jsx)(`option`,{value:e,children:e},e)}function ue(e,t){return t+1}function de(e){return(0,f.jsx)(`option`,{value:e,children:String(e).padStart(2,`0`)},e)}function fe(e){return parseInt(e,10)}function h(){return l(`/api/workspace/heartbeat-md`)}async function g(){let e=await a(h());return typeof e.payload?.content==`string`?e.payload.content:``}function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function v(e){let t=_(e)?e:{},n=_(t.gateway)?t.gateway:{},r=_(n.heartbeat)?n.heartbeat:{},i=r.activeHours,a=_(i)?i:null,o=a&&typeof a.start==`string`&&typeof a.end==`string`&&a.start&&a.end?{start:a.start,end:a.end,timezone:typeof a.timezone==`string`?a.timezone:``}:null;return{enabled:!!(r.enabled??!0),intervalMs:typeof r.intervalMs==`number`&&Number.isFinite(r.intervalMs)?r.intervalMs:18e5,includeSystemPromptSection:r.includeSystemPromptSection===!0,target:typeof r.target==`string`?r.target:``,targetChatId:typeof r.targetChatId==`string`?r.targetChatId:``,prompt:typeof r.prompt==`string`?r.prompt:``,ackMaxChars:typeof r.ackMaxChars==`number`&&Number.isFinite(r.ackMaxChars)?r.ackMaxChars:``,isolatedSession:!!r.isolatedSession,activeHours:o}}function pe(e){let t={enabled:e.enabled,intervalMs:e.intervalMs,includeSystemPromptSection:e.includeSystemPromptSection};return e.target.trim()?t.target=e.target.trim():t.target=null,e.targetChatId.trim()?t.targetChatId=e.targetChatId.trim():t.targetChatId=null,e.prompt.trim()?t.prompt=e.prompt.trim():t.prompt=null,e.ackMaxChars===``||e.ackMaxChars===void 0?t.ackMaxChars=null:t.ackMaxChars=e.ackMaxChars,e.isolatedSession?t.isolatedSession=!0:t.isolatedSession=null,e.activeHours?.start?.trim()&&e.activeHours?.end?.trim()?t.activeHours={start:e.activeHours.start.trim(),end:e.activeHours.end.trim(),...e.activeHours.timezone.trim()?{timezone:e.activeHours.timezone.trim()}:{}}:t.activeHours=null,t}async function y(e){await a(l(`/api/config`),{method:`PATCH`,body:JSON.stringify({gateway:{heartbeat:pe(e)}})}),s()}async function me(e){await a(l(`/api/workspace/heartbeat-md`),{method:`PUT`,body:JSON.stringify({content:e})}),i(h())}async function b(e){await a(l(`/api/heartbeat/trigger`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e?{reason:e}:{})})}export{g as a,b as i,y as n,h as o,me as r,m as s,v as t};
|
|
2
|
-
//# sourceMappingURL=heartbeat-config-api-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-DWdDZTNf.js";import{a as t,n,t as r}from"./vendor-react-vzx_MT5D.js";import{o as i}from"./vendor-swr-CQnUjdeQ.js";import{En as a,In as o,Mt as s,qn as c,xn as l,zn as u}from"./index-DAglRwh4.js";import{D as ee,O as te}from"./cron-dreaming-jobs-bAYsiHdF.js";var ne=n(),d=e(t(),1),f=r(),re=Array.from({length:60},(e,t)=>t),p=c(u,`min-w-0 shrink text-xs sm:min-w-[7rem] sm:max-w-[11rem]`),ie=c(`h-9 min-w-[6.5rem] shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-sm text-fg`,o,`dark:bg-surface-panel`),ae=c(`h-9 min-w-[9.5rem] shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-sm text-fg`,o),oe=c(`h-9 w-14 shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-center text-sm tabular-nums text-fg`,o),se=c(`min-h-[2.5rem] w-full rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 font-mono text-xs text-fg`,o);function m(e){let t=(0,ne.c)(136),{value:n,onChange:r,labels:i,disabled:a,showHeading:o}=e,s=o===void 0?!0:o,l;t[0]===n?l=t[1]:(l=te(n),t[0]=n,t[1]=l);let u=l,[m,h]=(0,d.useState)(u.mode),[g,_]=(0,d.useState)(u.intervalKind),[v,pe]=(0,d.useState)(u.onceDate),[y,me]=(0,d.useState)(u.intervalMinutes),[b,he]=(0,d.useState)(u.intervalHours),[x,ge]=(0,d.useState)(u.minute),[_e,ve]=(0,d.useState)(u.hour),[S,ye]=(0,d.useState)(u.weekDays),[C,be]=(0,d.useState)(u.dayOfMonth),[w,xe]=(0,d.useState)(u.rawCron),[T,E]=(0,d.useState)(null),[D,O]=(0,d.useState)(null),k,A;t[2]===n?(k=t[3],A=t[4]):(k=()=>{let e=te(n);h(e.mode),_(e.intervalKind),pe(e.onceDate),me(e.intervalMinutes),he(e.intervalHours),ge(e.minute),ve(e.hour),ye(e.weekDays),be(e.dayOfMonth),xe(e.rawCron),E(null),O(null)},A=[n],t[2]=n,t[3]=k,t[4]=A),(0,d.useEffect)(k,A);let j;t[5]!==C||t[6]!==_e||t[7]!==b||t[8]!==g||t[9]!==y||t[10]!==x||t[11]!==m||t[12]!==r||t[13]!==v||t[14]!==w||t[15]!==S?(j=e=>{r(ee({mode:m,intervalKind:g,onceDate:v,intervalMinutes:y,intervalHours:b,minute:x,hour:_e,weekDays:S,dayOfMonth:C,rawCron:w,...e}))},t[5]=C,t[6]=_e,t[7]=b,t[8]=g,t[9]=y,t[10]=x,t[11]=m,t[12]=r,t[13]=v,t[14]=w,t[15]=S,t[16]=j):j=t[16];let M=j,Se=String(_e),N;t[17]===Se?N=t[18]:(N=Se.padStart(2,`0`),t[17]=Se,t[18]=N);let Ce=String(x),P;t[19]===Ce?P=t[20]:(P=Ce.padStart(2,`0`),t[19]=Ce,t[20]=P);let F=`${N}:${P}`,we;t[21]===M?we=t[22]:(we=e=>{let t=e.target.value;if(!t)return;let[n,r]=t.split(`:`).map(fe);Number.isNaN(n)||Number.isNaN(r)||M({minute:r,hour:n})},t[21]=M,t[22]=we);let I=we,L;t[23]===M?L=t[24]:(L=e=>{let t=e.target.value;h(t),M({mode:t})},t[23]=M,t[24]=L);let R;t[25]===i.modeNoRepeat?R=t[26]:(R=(0,f.jsx)(`option`,{value:`no_repeat`,children:i.modeNoRepeat}),t[25]=i.modeNoRepeat,t[26]=R);let z;t[27]===i.modeInterval?z=t[28]:(z=(0,f.jsx)(`option`,{value:`interval`,children:i.modeInterval}),t[27]=i.modeInterval,t[28]=z);let B;t[29]===i.modeHourly?B=t[30]:(B=(0,f.jsx)(`option`,{value:`hourly`,children:i.modeHourly}),t[29]=i.modeHourly,t[30]=B);let V;t[31]===i.modeDaily?V=t[32]:(V=(0,f.jsx)(`option`,{value:`daily`,children:i.modeDaily}),t[31]=i.modeDaily,t[32]=V);let H;t[33]===i.modeWeekly?H=t[34]:(H=(0,f.jsx)(`option`,{value:`weekly`,children:i.modeWeekly}),t[33]=i.modeWeekly,t[34]=H);let U;t[35]===i.modeMonthly?U=t[36]:(U=(0,f.jsx)(`option`,{value:`monthly`,children:i.modeMonthly}),t[35]=i.modeMonthly,t[36]=U);let W;t[37]===i.modeCustom?W=t[38]:(W=(0,f.jsx)(`option`,{value:`custom`,children:i.modeCustom}),t[37]=i.modeCustom,t[38]=W);let G;t[39]!==a||t[40]!==i.scheduleTimeLabel||t[41]!==m||t[42]!==L||t[43]!==R||t[44]!==z||t[45]!==B||t[46]!==V||t[47]!==H||t[48]!==U||t[49]!==W?(G=(0,f.jsxs)(`select`,{className:p,disabled:a,value:m,onChange:L,"aria-label":i.scheduleTimeLabel,children:[R,z,B,V,H,U,W]}),t[39]=a,t[40]=i.scheduleTimeLabel,t[41]=m,t[42]=L,t[43]=R,t[44]=z,t[45]=B,t[46]=V,t[47]=H,t[48]=U,t[49]=W,t[50]=G):G=t[50];let K;t[51]!==a||t[52]!==M||t[53]!==i.modeNoRepeat||t[54]!==i.scheduleTimeLabel||t[55]!==m||t[56]!==I||t[57]!==v||t[58]!==F?(K=m===`no_repeat`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`date`,disabled:a,className:ae,value:v,onChange:e=>{let t=e.target.value;pe(t),M({onceDate:t})},"aria-label":i.modeNoRepeat}),(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel})]}),t[51]=a,t[52]=M,t[53]=i.modeNoRepeat,t[54]=i.scheduleTimeLabel,t[55]=m,t[56]=I,t[57]=v,t[58]=F,t[59]=K):K=t[59];let q;t[60]!==a||t[61]!==M||t[62]!==b||t[63]!==D||t[64]!==g||t[65]!==y||t[66]!==T||t[67]!==i.hourUnit||t[68]!==i.intervalHours||t[69]!==i.intervalKindHours||t[70]!==i.intervalKindMinutes||t[71]!==i.intervalMinutes||t[72]!==i.minuteAtHour||t[73]!==i.minuteUnit||t[74]!==i.modeInterval||t[75]!==x||t[76]!==m?(q=m===`interval`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(`select`,{className:c(p,`w-auto min-w-[5rem]`),disabled:a,value:g,onChange:e=>{let t=e.target.value;_(t),E(null),O(null),M({intervalKind:t})},"aria-label":i.modeInterval,children:[(0,f.jsx)(`option`,{value:`minutes`,children:i.intervalKindMinutes}),(0,f.jsx)(`option`,{value:`hours`,children:i.intervalKindHours})]}),g===`minutes`?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`number`,min:1,max:59,disabled:a,className:oe,value:T??String(y),onChange:e=>{let t=e.target.value;E(t);let n=parseInt(t,10);Number.isFinite(n)&&n>=1&&n<=59&&(me(n),M({intervalMinutes:n}))},onBlur:()=>{if(T===null)return;let e=parseInt(T,10),t=!Number.isFinite(e)||e<1?5:Math.min(59,Math.max(1,Math.round(e)));me(t),M({intervalMinutes:t}),E(null)},"aria-label":i.intervalMinutes}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]}):(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`input`,{type:`number`,min:1,max:23,disabled:a,className:oe,value:D??String(b),onChange:e=>{let t=e.target.value;O(t);let n=parseInt(t,10);Number.isFinite(n)&&n>=1&&n<=23&&(he(n),M({intervalHours:n}))},onBlur:()=>{if(D===null)return;let e=parseInt(D,10),t=!Number.isFinite(e)||e<1?2:Math.min(23,Math.max(1,Math.round(e)));he(t),M({intervalHours:t}),O(null)},"aria-label":i.intervalHours}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.hourUnit}),(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4rem]`),disabled:a,value:x,onChange:e=>{let t=parseInt(e.target.value,10);ge(t),M({minute:t})},"aria-label":i.minuteAtHour,children:re.map(de)}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]})]}),t[60]=a,t[61]=M,t[62]=b,t[63]=D,t[64]=g,t[65]=y,t[66]=T,t[67]=i.hourUnit,t[68]=i.intervalHours,t[69]=i.intervalKindHours,t[70]=i.intervalKindMinutes,t[71]=i.intervalMinutes,t[72]=i.minuteAtHour,t[73]=i.minuteUnit,t[74]=i.modeInterval,t[75]=x,t[76]=m,t[77]=q):q=t[77];let J;t[78]!==a||t[79]!==i.scheduleTimeLabel||t[80]!==m||t[81]!==I||t[82]!==F?(J=m===`daily`&&(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel}),t[78]=a,t[79]=i.scheduleTimeLabel,t[80]=m,t[81]=I,t[82]=F,t[83]=J):J=t[83];let Y;t[84]!==a||t[85]!==i.scheduleTimeLabel||t[86]!==m||t[87]!==I||t[88]!==F?(Y=m===`weekly`&&(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel}),t[84]=a,t[85]=i.scheduleTimeLabel,t[86]=m,t[87]=I,t[88]=F,t[89]=Y):Y=t[89];let X;t[90]!==C||t[91]!==a||t[92]!==M||t[93]!==i.dayOfMonth||t[94]!==i.scheduleTimeLabel||t[95]!==m||t[96]!==I||t[97]!==F?(X=m===`monthly`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4.5rem]`),disabled:a,value:C,onChange:e=>{let t=parseInt(e.target.value,10);be(t),M({dayOfMonth:t})},"aria-label":i.dayOfMonth,children:Array.from({length:31},ue).map(le)}),(0,f.jsx)(`input`,{type:`time`,step:60,disabled:a,className:ie,value:F,onChange:I,"aria-label":i.scheduleTimeLabel})]}),t[90]=C,t[91]=a,t[92]=M,t[93]=i.dayOfMonth,t[94]=i.scheduleTimeLabel,t[95]=m,t[96]=I,t[97]=F,t[98]=X):X=t[98];let Z;t[99]!==a||t[100]!==M||t[101]!==i.minuteAtHour||t[102]!==i.minuteUnit||t[103]!==x||t[104]!==m?(Z=m===`hourly`&&(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(`select`,{className:c(p,`w-auto min-w-[4rem]`),disabled:a,value:x,onChange:e=>{let t=parseInt(e.target.value,10);ge(t),M({minute:t})},"aria-label":i.minuteAtHour,children:re.map(ce)}),(0,f.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:i.minuteUnit})]}),t[99]=a,t[100]=M,t[101]=i.minuteAtHour,t[102]=i.minuteUnit,t[103]=x,t[104]=m,t[105]=Z):Z=t[105];let Te;t[106]!==G||t[107]!==K||t[108]!==q||t[109]!==J||t[110]!==Y||t[111]!==X||t[112]!==Z?(Te=(0,f.jsxs)(`div`,{className:`flex min-w-0 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`,children:[G,K,q,J,Y,X,Z]}),t[106]=G,t[107]=K,t[108]=q,t[109]=J,t[110]=Y,t[111]=X,t[112]=Z,t[113]=Te):Te=t[113];let Ee=Te,De;t[114]!==a||t[115]!==M||t[116]!==i.modeWeekly||t[117]!==i.weekdays||t[118]!==m||t[119]!==S?(De=m===`weekly`?(0,f.jsx)(`div`,{className:`flex flex-wrap gap-1.5 pt-1`,role:`group`,"aria-label":i.modeWeekly,children:i.weekdays.map((e,t)=>{let n=S[t];return(0,f.jsx)(`button`,{type:`button`,disabled:a,className:c(`flex size-9 select-none items-center justify-center rounded-full border text-xs font-medium transition-colors`,n?`border-fg bg-fg text-surface-panel`:`border-edge-subtle bg-surface-panel text-fg hover:border-edge`),"aria-pressed":n,onClick:()=>{let e=[...S];e[t]=!e[t],ye(e),M({weekDays:e})},children:e},e)})}):null,t[114]=a,t[115]=M,t[116]=i.modeWeekly,t[117]=i.weekdays,t[118]=m,t[119]=S,t[120]=De):De=t[120];let Oe=De,ke;t[121]!==a||t[122]!==i.customCronHint||t[123]!==i.modeCustom||t[124]!==m||t[125]!==r||t[126]!==w?(ke=m===`custom`?(0,f.jsxs)(`div`,{className:`pt-1`,children:[(0,f.jsx)(`textarea`,{disabled:a,className:se,rows:2,spellCheck:!1,value:w,placeholder:`*/5 * * * *`,onChange:e=>{let t=e.target.value;xe(t),r(t.trim()||`*/5 * * * *`)},"aria-label":i.modeCustom}),(0,f.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:i.customCronHint})]}):null,t[121]=a,t[122]=i.customCronHint,t[123]=i.modeCustom,t[124]=m,t[125]=r,t[126]=w,t[127]=ke):ke=t[127];let Ae=ke,Q;t[128]!==i.scheduleTimeLabel||t[129]!==s?(Q=s?(0,f.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:i.scheduleTimeLabel}):null,t[128]=i.scheduleTimeLabel,t[129]=s,t[130]=Q):Q=t[130];let $;return t[131]!==Ae||t[132]!==Ee||t[133]!==Q||t[134]!==Oe?($=(0,f.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[Q,Ee,Oe,Ae]}),t[131]=Ae,t[132]=Ee,t[133]=Q,t[134]=Oe,t[135]=$):$=t[135],$}function ce(e){return(0,f.jsx)(`option`,{value:e,children:String(e).padStart(2,`0`)},e)}function le(e){return(0,f.jsx)(`option`,{value:e,children:e},e)}function ue(e,t){return t+1}function de(e){return(0,f.jsx)(`option`,{value:e,children:String(e).padStart(2,`0`)},e)}function fe(e){return parseInt(e,10)}function h(){return l(`/api/workspace/heartbeat-md`)}async function g(){let e=await a(h());return typeof e.payload?.content==`string`?e.payload.content:``}function _(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function v(e){let t=_(e)?e:{},n=_(t.gateway)?t.gateway:{},r=_(n.heartbeat)?n.heartbeat:{},i=r.activeHours,a=_(i)?i:null,o=a&&typeof a.start==`string`&&typeof a.end==`string`&&a.start&&a.end?{start:a.start,end:a.end,timezone:typeof a.timezone==`string`?a.timezone:``}:null;return{enabled:!!(r.enabled??!0),intervalMs:typeof r.intervalMs==`number`&&Number.isFinite(r.intervalMs)?r.intervalMs:18e5,includeSystemPromptSection:r.includeSystemPromptSection===!0,target:typeof r.target==`string`?r.target:``,targetChatId:typeof r.targetChatId==`string`?r.targetChatId:``,prompt:typeof r.prompt==`string`?r.prompt:``,ackMaxChars:typeof r.ackMaxChars==`number`&&Number.isFinite(r.ackMaxChars)?r.ackMaxChars:``,isolatedSession:!!r.isolatedSession,activeHours:o}}function pe(e){let t={enabled:e.enabled,intervalMs:e.intervalMs,includeSystemPromptSection:e.includeSystemPromptSection};return e.target.trim()?t.target=e.target.trim():t.target=null,e.targetChatId.trim()?t.targetChatId=e.targetChatId.trim():t.targetChatId=null,e.prompt.trim()?t.prompt=e.prompt.trim():t.prompt=null,e.ackMaxChars===``||e.ackMaxChars===void 0?t.ackMaxChars=null:t.ackMaxChars=e.ackMaxChars,e.isolatedSession?t.isolatedSession=!0:t.isolatedSession=null,e.activeHours?.start?.trim()&&e.activeHours?.end?.trim()?t.activeHours={start:e.activeHours.start.trim(),end:e.activeHours.end.trim(),...e.activeHours.timezone.trim()?{timezone:e.activeHours.timezone.trim()}:{}}:t.activeHours=null,t}async function y(e){await a(l(`/api/config`),{method:`PATCH`,body:JSON.stringify({gateway:{heartbeat:pe(e)}})}),s()}async function me(e){await a(l(`/api/workspace/heartbeat-md`),{method:`PUT`,body:JSON.stringify({content:e})}),i(h())}async function b(e){await a(l(`/api/heartbeat/trigger`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e?{reason:e}:{})})}export{g as a,b as i,y as n,h as o,me as r,m as s,v as t};
|
|
2
|
+
//# sourceMappingURL=heartbeat-config-api-P5zdbIBw.js.map
|