archyne 1.1.0-alpha.1 → 1.1.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/assets/{AiPanel-eO7PURxn.js → AiPanel-cizsxiQw.js} +1 -1
  2. package/dist/assets/{abnfDiagram-WEYOIA3C-Bn_ghV9g.js → abnfDiagram-WEYOIA3C-DhX2N40N.js} +1 -1
  3. package/dist/assets/{architectureDiagram-ZHVYKT53-RA032yNp.js → architectureDiagram-ZHVYKT53-DQ39-dmN.js} +1 -1
  4. package/dist/assets/{blockDiagram-RJAE7QA3-BUAduscQ.js → blockDiagram-RJAE7QA3-CYPxHQnz.js} +1 -1
  5. package/dist/assets/{c4Diagram-XDPPPE54-NVzqeGoc.js → c4Diagram-XDPPPE54-BZgF0uy1.js} +1 -1
  6. package/dist/assets/{changes-Dw_X4_Bv.js → changes-Bhz9SZug.js} +1 -1
  7. package/dist/assets/{chunk-2E7WHVMD-uZWzwKHo.js → chunk-2E7WHVMD-jYqcw7lJ.js} +1 -1
  8. package/dist/assets/{chunk-4EMNKR2T-2OiQAECr.js → chunk-4EMNKR2T-CuLbhNLH.js} +1 -1
  9. package/dist/assets/{chunk-AQDTSKZB-CPHRYAz2.js → chunk-AQDTSKZB-y4y2mbZy.js} +1 -1
  10. package/dist/assets/{chunk-HAGFOTED-CEtTVfAH.js → chunk-HAGFOTED-Bnpg2p6V.js} +1 -1
  11. package/dist/assets/{chunk-HNE4Q36P-Dv0U7LiR.js → chunk-HNE4Q36P-B4SsKZZK.js} +1 -1
  12. package/dist/assets/{chunk-NQOKRVIF-B64mxpyy.js → chunk-NQOKRVIF-Dy7cYepr.js} +1 -1
  13. package/dist/assets/{chunk-WQQL4CDK-DD8FgW87.js → chunk-WQQL4CDK-DeeqxUy0.js} +1 -1
  14. package/dist/assets/{chunk-YZO67HFG-DGFZSlzm.js → chunk-YZO67HFG-71aMjf16.js} +1 -1
  15. package/dist/assets/{chunk-ZAUX2LTX-BBjHrmlo.js → chunk-ZAUX2LTX-CFJVqsBQ.js} +1 -1
  16. package/dist/assets/{chunk-ZCHMQSOR-EAUQk0IF.js → chunk-ZCHMQSOR-DbQja4UW.js} +1 -1
  17. package/dist/assets/{classDiagram-v2-4MYWR3UA-DMHId1bm.js → classDiagram-v2-4MYWR3UA-CyG6rH_-.js} +1 -1
  18. package/dist/assets/{cynefinDiagram-WF24UDRP-DsJYNaUs.js → cynefinDiagram-WF24UDRP-C2Cp7PTo.js} +1 -1
  19. package/dist/assets/{dagre-NK4GIZVX-C0MwA6qG.js → dagre-NK4GIZVX-COlQY4G8.js} +1 -1
  20. package/dist/assets/{diagram-CBK3MWTC-CmBUu3hP.js → diagram-CBK3MWTC-SSR9PdiH.js} +1 -1
  21. package/dist/assets/{diagram-I5XIIV2D-60W8i-RX.js → diagram-I5XIIV2D-BAlXemfH.js} +1 -1
  22. package/dist/assets/{diagram-ODIL2UCW-DD3V2bXx.js → diagram-ODIL2UCW-CH48Ua3M.js} +1 -1
  23. package/dist/assets/{diagram-RJA3I4VV-DeqwstYm.js → diagram-RJA3I4VV-grjOTy9m.js} +1 -1
  24. package/dist/assets/{diagram-TYUNFSNR-DNwzhJ1w.js → diagram-TYUNFSNR-C6gCOOHy.js} +1 -1
  25. package/dist/assets/{ebnfDiagram-V4P3TTPT-DQ4jivTB.js → ebnfDiagram-V4P3TTPT-Dn8Wb-ok.js} +1 -1
  26. package/dist/assets/{elk-QONTBCTQ-DAmKbBBN.js → elk-QONTBCTQ-CxncOfL3.js} +1 -1
  27. package/dist/assets/{erDiagram-KYQIGQAA-CKeUaw_B.js → erDiagram-KYQIGQAA-CFxjaF_P.js} +1 -1
  28. package/dist/assets/flowDiagram-IUGLLWBU-B9r4Jg2Q.js +1 -0
  29. package/dist/assets/{fromDot-Cp76T0b6.js → fromDot-DXaBZswx.js} +1 -1
  30. package/dist/assets/{fromDrawio-Bhw1MmZ9.js → fromDrawio-CHZVRLel.js} +1 -1
  31. package/dist/assets/{fromExcalidraw-oc569z0d.js → fromExcalidraw-Blpd8wAP.js} +1 -1
  32. package/dist/assets/{fromLucid-BBMsOJcp.js → fromLucid-CGaG7i_M.js} +1 -1
  33. package/dist/assets/{fromPlantuml-CxjEzbGn.js → fromPlantuml-snHdBKEN.js} +1 -1
  34. package/dist/assets/{fromSql-BqJFlefM.js → fromSql-Ck8lFyWR.js} +1 -1
  35. package/dist/assets/{fromVsdx-BbrByDpR.js → fromVsdx-Ji5l1-GW.js} +1 -1
  36. package/dist/assets/{ganttDiagram-R7GPNTJY-DlIdm9gF.js → ganttDiagram-R7GPNTJY-Befi_-Ka.js} +1 -1
  37. package/dist/assets/{generate-DviEBSiC.js → generate-Ctt7OIYt.js} +1 -1
  38. package/dist/assets/{index-Dzt6JS4O.js → index-C7pEN42H.js} +7 -7
  39. package/dist/assets/{infoDiagram-MVDRKAX5-BXDtkbDH.js → infoDiagram-MVDRKAX5-LRfgkgJo.js} +1 -1
  40. package/dist/assets/{ishikawaDiagram-HPEHV2GE-CTk8o3dJ.js → ishikawaDiagram-HPEHV2GE-VKOJSJ_g.js} +1 -1
  41. package/dist/assets/{kanban-definition-FNSA4HC5-DDt4dmMz.js → kanban-definition-FNSA4HC5-CTIEI4kz.js} +1 -1
  42. package/dist/assets/{linear-Ck0bjM2y.js → linear-CFQ5llbP.js} +1 -1
  43. package/dist/assets/{mermaid.core-Ckh9oFVq.js → mermaid.core-Bh6iUGiO.js} +4 -4
  44. package/dist/assets/{mindmap-definition-6OY57UG3-DVl2NyRq.js → mindmap-definition-6OY57UG3-BN-Mt4oK.js} +1 -1
  45. package/dist/assets/{pegDiagram-ECIUJNBX-CBNFJMIG.js → pegDiagram-ECIUJNBX-CtemSMgx.js} +1 -1
  46. package/dist/assets/{pieDiagram-GNMPY74T-CfiNXCq3.js → pieDiagram-GNMPY74T-DJGVDY6_.js} +1 -1
  47. package/dist/assets/{plantumlFamilies-D6zfdKR-.js → plantumlFamilies-DKCzTTBD.js} +1 -1
  48. package/dist/assets/{quadrantDiagram-D57K4MC3-Cyfbn3v3.js → quadrantDiagram-D57K4MC3-BkTxoOwZ.js} +1 -1
  49. package/dist/assets/{railroadDiagram-Y72NRBL7-CVrBEUqg.js → railroadDiagram-Y72NRBL7-Dgp_TUQk.js} +1 -1
  50. package/dist/assets/{requirementDiagram-EQYSW5RA-CbHTQ9ut.js → requirementDiagram-EQYSW5RA-BS_TxMy4.js} +1 -1
  51. package/dist/assets/{sequenceDiagram-BLEHNHQU-CTneUd89.js → sequenceDiagram-BLEHNHQU-DbdPdr_t.js} +1 -1
  52. package/dist/assets/{stateDiagram-v2-A6IESKWZ-BnEZWCYf.js → stateDiagram-v2-A6IESKWZ-BlNxN85x.js} +1 -1
  53. package/dist/assets/{swimlanes-B3ENRKFQ-D0Rmdu0u.js → swimlanes-B3ENRKFQ-BvRN-zgg.js} +1 -1
  54. package/dist/assets/swimlanesDiagram-AYQRV4AK-vWeXPxmW.js +8 -0
  55. package/dist/assets/{timeline-definition-JXYKGLGB-BFpI8nya.js → timeline-definition-JXYKGLGB-6RT5FG05.js} +1 -1
  56. package/dist/assets/{usecaseDiagram-WPOLBNNX-DlumP3hU.js → usecaseDiagram-WPOLBNNX-Bl_j_4a2.js} +1 -1
  57. package/dist/assets/{vennDiagram-Q3Y3IDCW-DtASyUaq.js → vennDiagram-Q3Y3IDCW-CwsLh9-L.js} +1 -1
  58. package/dist/assets/{wardleyDiagram-IVAIDKWA-DL6ClABF.js → wardleyDiagram-IVAIDKWA-DjnZWkZj.js} +1 -1
  59. package/dist/assets/{xychartDiagram-4URNHDU4-CenkdjX-.js → xychartDiagram-4URNHDU4-B1MUw51D.js} +1 -1
  60. package/dist/index.html +1 -1
  61. package/package.json +1 -1
  62. package/dist/assets/flowDiagram-IUGLLWBU-DLLzMzCr.js +0 -1
  63. package/dist/assets/swimlanesDiagram-AYQRV4AK-vQGvXsMo.js +0 -8
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,f as n,i as r}from"./i18n-Clgq-7gx.js";import{n as i,v as a}from"./index-Dzt6JS4O.js";import{hasChanges as o}from"./changes-Dw_X4_Bv.js";import{SERVER_PRESETS as s,isLocalUrl as c,presetOf as l,probeServer as u}from"./server-BX-Rqf3U.js";import{a as d,aiMode as f,c as p,d as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./provider-DiGaSl1J.js";var C=e(n(),1);function w(e){return e.filter(e=>e.type!==`group`&&e.type!==`note`&&e.type!==`junction`).map(e=>{let t=e.data;return{label:typeof t.label==`string`?t.label.trim():``,shape:typeof t.shape==`string`?t.shape:void 0}}).filter(e=>e.label&&e.label.length<=40)}function T(e,t){let n=w(t);if(n.length===0)return[{key:`ai.suggestStartLogin`},{key:`ai.suggestStartShop`},{key:`ai.suggestStartOrder`}];let r=[];if(e===`flowchart`){let e=n.find(e=>e.shape===`cylinder`&&!/cache/i.test(e.label)),t=n.find(e=>e.shape===`square`||e.shape===`round`)??n[0],i=n.find(e=>e.shape===`diamond`);e&&r.push({key:`ai.suggestCache`,params:{node:e.label}}),r.push({key:`ai.suggestRetry`,params:{node:t.label}}),i&&r.push({key:`ai.suggestOutcome`,params:{node:i.label}}),r.push({key:`ai.suggestColour`,params:{node:(n.at(-1)??t).label}})}else r.push({key:`ai.suggestConnect`,params:{node:n[0].label}}),r.push({key:`ai.suggestRemove`,params:{node:(n.at(-1)??n[0]).label}});return r.slice(0,3)}var E=a();function D({connectionId:e,target:n,config:i,disabled:a,onChange:o}){let s=t(),c=r(e=>e.locale),l=m(),[u,d]=(0,C.useState)({signedIn:!1}),[f,p]=(0,C.useState)(!1),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(null),b=e=>o({...i,...e}),x=i.flow===`jwt_bearer`;if((0,C.useEffect)(()=>{if(!l)return;let t=!0;y().then(()=>l.authStatus(e)).then(e=>t&&d(e));let n=l.onEvent(n=>{if(n.type===`ai:auth`&&n.connectionId===e){if(n.state===`device-code`){g({userCode:n.userCode,uri:n.verificationUriComplete??n.verificationUri});return}g(null),p(!1),v(n.state===`error`?n.detail??``:null),l.authStatus(e).then(e=>t&&d(e))}});return()=>{t=!1,n()}},[l,e,n]),!l)return null;let S=async()=>{p(!0),v(null),await y(),await l.signIn(e)},w=async()=>{await y(),await l.signOut(e),d(await l.authStatus(e))},T=u.expiresAt?new Date(u.expiresAt).toLocaleTimeString(c,{hour:`2-digit`,minute:`2-digit`}):null;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthFlow`),(0,E.jsxs)(`select`,{value:i.flow,"aria-label":s(`ai.oauthFlow`),disabled:a||f,onChange:e=>b({flow:e.target.value}),children:[(0,E.jsx)(`option`,{value:`authorization_code`,children:s(`ai.oauthFlowBrowser`)}),(0,E.jsx)(`option`,{value:`device_code`,children:s(`ai.oauthFlowDevice`)}),(0,E.jsx)(`option`,{value:`client_credentials`,children:s(`ai.oauthFlowMachine`)}),(0,E.jsx)(`option`,{value:`jwt_bearer`,children:s(`ai.oauthFlowAssertion`)})]})]}),x&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:s(`ai.oauthAssertionHint`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthIssuer`),(0,E.jsx)(`input`,{type:`url`,value:i.issuer??``,placeholder:s(`ai.oauthIssuerHint`),spellCheck:!1,disabled:a||f,onChange:e=>b({issuer:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(x?`ai.oauthAssertionIssuer`:`ai.oauthClientId`),(0,E.jsx)(`input`,{type:`text`,value:i.clientId??``,spellCheck:!1,disabled:a||f,onChange:e=>b({clientId:e.target.value.trim()||void 0})})]}),i.flow!==`client_credentials`&&!x&&(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!i.register,disabled:a||f,onChange:e=>b({register:e.target.checked})}),s(`ai.oauthRegister`)]}),!x&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthClientAuth`),(0,E.jsxs)(`select`,{value:i.clientAuth??``,"aria-label":s(`ai.oauthClientAuth`),disabled:a||f,onChange:e=>b({clientAuth:e.target.value||void 0}),children:[(0,E.jsx)(`option`,{value:``,children:s(`ai.oauthClientAuthAuto`)}),(0,E.jsx)(`option`,{value:`client_secret_basic`,children:s(`ai.oauthClientAuthBasic`)}),(0,E.jsx)(`option`,{value:`client_secret_post`,children:s(`ai.oauthClientAuthPost`)}),(0,E.jsx)(`option`,{value:`private_key_jwt`,children:s(`ai.oauthClientAuthKey`)}),(0,E.jsx)(`option`,{value:`tls_client_auth`,children:s(`ai.oauthClientAuthTls`)})]})]}),!x&&(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!i.dpop,disabled:a||f,onChange:e=>b({dpop:e.target.checked})}),s(`ai.oauthDpop`)]}),x&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthSubject`),(0,E.jsx)(`input`,{type:`text`,value:i.subject??``,spellCheck:!1,disabled:a||f,onChange:e=>b({subject:e.target.value.trim()||void 0})})]}),(i.clientAuth===`private_key_jwt`||x)&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthKeyId`),(0,E.jsx)(`input`,{type:`text`,value:i.keyId??``,spellCheck:!1,disabled:a||f,onChange:e=>b({keyId:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthScopes`),(0,E.jsx)(`input`,{type:`text`,value:i.scopes??``,spellCheck:!1,disabled:a||f,onChange:e=>b({scopes:e.target.value})})]}),(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthResource`),(0,E.jsx)(`input`,{type:`text`,value:i.resource??``,spellCheck:!1,disabled:a||f,onChange:e=>b({resource:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthAudience`),(0,E.jsx)(`input`,{type:`text`,value:i.audience??``,spellCheck:!1,disabled:a||f,onChange:e=>b({audience:e.target.value.trim()||void 0})})]})]}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[f?(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,onClick:()=>{l.cancelSignIn(e),p(!1),g(null)},children:s(`ai.oauthCancel`)}):u.signedIn?(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:a,onClick:()=>void w(),children:s(`ai.oauthSignOut`)}):(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:a,onClick:()=>void S(),children:s(`ai.oauthSignIn`)}),(0,E.jsx)(`p`,{className:`ai-server-status${u.signedIn?` ai-server-status--ok`:f||_===null?` ai-server-status--note`:``}`,role:`status`,"data-auth":f?`busy`:u.signedIn?`signed-in`:`signed-out`,children:f?h?null:s(`ai.oauthWaiting`):u.signedIn?T?s(`ai.oauthSignedInUntil`,{time:T}):s(`ai.oauthSignedIn`):_===null?s(`ai.oauthSignedOut`):s(`ai.oauthFailed`,{error:_})}),f&&h&&(0,E.jsxs)(`div`,{className:`ai-oauth-device`,role:`status`,children:[(0,E.jsxs)(`p`,{children:[s(`ai.oauthDeviceCode`),` `,(0,E.jsx)(`a`,{href:h.uri,target:`_blank`,rel:`noreferrer`,children:h.uri})]}),(0,E.jsx)(`p`,{className:`ai-oauth-code`,children:h.userCode})]})]})]})}var O=[`azure-kv`,`aws-sm`,`gcp-sm`,`alibaba-kms`,`hashicorp`],k={azureName:/^[0-9A-Za-z-]{1,127}$/,azureVault:/^https:\/\/[a-z0-9-]{3,24}\.vault\.(azure\.net|azure\.cn|usgovcloudapi\.net)\/?$/,awsName:/^[A-Za-z0-9/_+=.@:-]{1,2048}$/,awsRegion:/^[a-z]{2}(-[a-z]+)+-\d{1,2}$/,gcpName:/^[A-Za-z0-9_-]{1,255}$/,gcpProject:/^([a-z][a-z0-9-]{4,28}[a-z0-9]|\d{1,20})$/,alibabaName:/^[A-Za-z0-9_/+=.@:-]{1,192}$/,alibabaRegion:/^[a-z]{2}-[a-z0-9-]{2,30}$/,hashicorpPath:/^(?!.*\.\.)[A-Za-z0-9_.-]+(\/[A-Za-z0-9_.-]+)*$/,hashicorpMount:/^[A-Za-z0-9_.-]{1,64}$/,namespace:/^[A-Za-z0-9_-]+(\/[A-Za-z0-9_-]+)*$/,word:/^[A-Za-z0-9_.-]{1,128}$/};function A(e){let t=e.vault;if(e.protocol!==`vault`||!t||!O.includes(t.kind)||t.via!==`cli`&&t.via!==`sign-in`)return`vault`;if(t.profile!==void 0&&t.profile!==``&&!k.word.test(t.profile))return`profile`;switch(t.kind){case`azure-kv`:return k.azureVault.test(e.baseUrl)?null:`address`;case`aws-sm`:return k.awsRegion.test(t.region??``)?null:`region`;case`gcp-sm`:return k.gcpProject.test(t.project??``)?null:`project`;case`alibaba-kms`:return k.alibabaRegion.test(t.region??``)?null:`region`;case`hashicorp`:{let n;try{n=new URL(e.baseUrl)}catch{return`address`}return n.protocol!==`https:`&&![`localhost`,`127.0.0.1`].includes(n.hostname)||n.username||n.password||n.search||n.hash?`address`:t.mount&&!k.hashicorpMount.test(t.mount)?`mount`:t.namespace&&!k.namespace.test(t.namespace)?`namespace`:null}}}var j={"azure-kv":`Azure Key Vault`,"aws-sm":`AWS Secrets Manager`,"gcp-sm":`Google Secret Manager`,"alibaba-kms":`Alibaba Cloud KMS`,hashicorp:`HashiCorp Vault / OpenBao`},M={"azure-kv":{command:`az`,login:`az login`},"aws-sm":{command:`aws`,login:`aws sso login`},"gcp-sm":{command:`gcloud`,login:`gcloud auth login`},"alibaba-kms":{command:`aliyun`,login:`aliyun configure`},hashicorp:{command:`vault`,login:`vault login`}},N={"azure-kv":`https://<name>.vault.azure.net`,hashicorp:`https://vault.example.com:8200`},P={address:`ai.vaultProblemAddress`,region:`ai.remoteProblemRegion`,project:`ai.vaultProblemProject`,profile:`ai.vaultProblemField`,mount:`ai.vaultProblemField`,namespace:`ai.vaultProblemField`};function F({disabled:e}){let n=t(),r=d(e=>e.vaults),i=d(e=>e.addVault),a=d(e=>e.removeVault),[o,s]=(0,C.useState)(null),c=r.find(e=>e.id===o)??r[0]??null;return(0,E.jsxs)(`details`,{className:`ai-vaults`,children:[(0,E.jsx)(`summary`,{children:n(`ai.vaults`,{count:r.length})}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:n(`ai.vaultsHint`)}),(0,E.jsxs)(`div`,{className:`ai-server-presets`,children:[r.length>0&&(0,E.jsxs)(`label`,{className:`ai-server-field ai-remote-pick`,children:[n(`ai.vaultPick`),(0,E.jsx)(`select`,{value:c?.id??``,"aria-label":n(`ai.vaultPick`),disabled:e,onChange:e=>s(e.target.value),children:r.map(e=>(0,E.jsx)(`option`,{value:e.id,children:e.label||j[e.vault?.kind??`azure-kv`]},e.id))})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>s(i(n(`ai.vaultNewName`),`azure-kv`)),children:n(`ai.vaultAdd`)}),c&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>{a(c.id),s(null)},children:n(`ai.vaultRemove`)})]}),c&&(0,E.jsx)(I,{vault:c,disabled:e},c.id)]})}function I({vault:e,disabled:n}){let r=t(),i=d(e=>e.updateVault),a=e.vault??{kind:`azure-kv`,via:`cli`},o=t=>i(e.id,t),s=e=>o({vault:{...a,...e}}),c=e.baseUrl!==`https://`||[a.region,a.project,a.profile,a.mount,a.namespace].some(Boolean)?A(e):null,l=a.kind===`azure-kv`||a.kind===`hashicorp`,u=a.kind===`aws-sm`||a.kind===`alibaba-kms`,f=(e,t,i,a)=>(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[r(e),(0,E.jsx)(`input`,{type:`text`,value:t,spellCheck:!1,placeholder:a,disabled:n,onChange:e=>i(e.target.value.trim())})]});return(0,E.jsxs)(E.Fragment,{children:[f(`ai.remoteName`,e.label,e=>o({label:e})),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[r(`ai.vaultKind`),(0,E.jsx)(`select`,{value:a.kind,"aria-label":r(`ai.vaultKind`),disabled:n,onChange:e=>s({kind:e.target.value}),children:O.map(e=>(0,E.jsx)(`option`,{value:e,children:j[e]},e))})]}),l&&f(`ai.serverAddress`,e.baseUrl===`https://`?``:e.baseUrl,e=>o({baseUrl:e||`https://`}),N[a.kind]),u&&f(`ai.awsRegion`,a.region??``,e=>s({region:e}),a.kind===`aws-sm`?`eu-west-1`:`ap-southeast-1`),a.kind===`gcp-sm`&&f(`ai.vaultProject`,a.project??``,e=>s({project:e})),a.kind===`hashicorp`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[f(`ai.vaultMount`,a.mount??``,e=>s({mount:e}),`secret`),f(`ai.vaultNamespace`,a.namespace??``,e=>s({namespace:e}))]}),(a.kind===`aws-sm`||a.kind===`alibaba-kms`)&&f(`ai.vaultProfile`,a.profile??``,e=>s({profile:e})),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:r(`ai.vaultCliHint`,M[a.kind])}),c&&P[c]&&(0,E.jsx)(`p`,{className:`ai-server-status`,role:`status`,children:r(P[c])})]})}function L(){let e=globalThis.location?.origin??``;return e&&e!==`null`?e:`file://*`}function R(e,t,n,r){let i=l(n),a=i?s[i].label:e(`ai.serverGeneric`);switch(t){case`blocked`:return i===`ollama`?e(`ai.serverBlockedOllama`,{origin:L()}):i===`lmstudio`?e(`ai.serverBlockedLmStudio`):e(`ai.serverBlocked`,{origin:L()});case`down`:return e(`ai.serverDown`,{url:n,server:a});case`not-local`:return e(`ai.serverNotLocal`);case`no-model`:return e(`ai.serverNeedsModel`);default:return e(`ai.serverHttp`,{status:r??`?`})}}function z(e,t,n,r){switch(t){case`not-local`:return e(`ai.remoteNotHttps`);case`down`:case`network`:return e(`ai.remoteDown`,{url:n});case`no-model`:return e(`ai.remoteNeedsModel`);case`vault`:return r?.problem===`not-authorized`?e(`ai.vaultNotAuthorized`):r?.problem===`denied`?e(`ai.vaultDenied`):e(`ai.remoteVaultFailed`,{detail:r?.problem??``});case`invalid`:switch(r?.problem){case`protocol`:return e(`ai.remoteProblemProtocol`);case`header-name`:return e(`ai.remoteProblemHeaderName`);case`username`:return e(`ai.remoteProblemUsername`);case`extra-header`:return e(`ai.remoteProblemExtraHeader`);case`flow`:return e(`ai.remoteProblemFlow`);case`issuer`:return e(`ai.remoteProblemIssuer`);case`client`:return e(`ai.remoteProblemClient`);case`tls-https`:return e(`ai.remoteProblemTlsHttps`);case`tls-client-auth`:return e(`ai.remoteProblemTlsClientAuth`);case`region`:return e(`ai.remoteProblemRegion`);case`service`:return e(`ai.remoteProblemService`);default:return e(`ai.remoteProblemUnknown`)}default:return r?.status===401||r?.status===403?e(`ai.remoteUnauthorized`,{status:r.status}):e(`ai.serverHttp`,{status:r?.status??`?`})}}function B({disabled:e}){let n=t(),r=d(e=>e.connections),i=d(e=>e.connectionId),a=d(e=>e.addConnection),o=d(e=>e.removeConnection),s=d(e=>e.selectConnection),c=r.find(e=>e.id===i)??null,[l,u]=(0,C.useState)({id:i,open:!c?.model});l.id!==i&&u({id:i,open:!c?.model});let f=l.id===i?l.open:!c?.model;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`details`,{className:`ai-server`,open:f,onToggle:e=>{let t=e.currentTarget.open;t!==f&&u({id:i,open:t})},children:[(0,E.jsx)(`summary`,{children:n(`ai.remoteSummary`,{model:c?`${c.label} · ${c.model||n(`ai.serverNoModel`)}`:n(`ai.serverNoModel`)})}),(0,E.jsxs)(`div`,{className:`ai-server-presets`,children:[r.length>0&&(0,E.jsxs)(`label`,{className:`ai-server-field ai-remote-pick`,children:[n(`ai.remoteService`),(0,E.jsx)(`select`,{value:i??``,"aria-label":n(`ai.remoteService`),disabled:e,onChange:e=>s(e.target.value),children:r.map(e=>(0,E.jsx)(`option`,{value:e.id,children:e.label||e.baseUrl},e.id))})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>a(n(`ai.remoteNewName`)),children:n(`ai.remoteAdd`)}),c&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>o(c.id),children:n(`ai.remoteRemove`)})]}),c?(0,E.jsx)(U,{connection:c,disabled:e,onPicked:()=>u({id:c.id,open:!1})},c.id):(0,E.jsx)(`p`,{className:`ai-server-hint`,children:n(`ai.remoteNone`)})]}),(0,E.jsx)(F,{disabled:e})]})}var V={openai:{baseUrl:``,auth:{type:`header`,name:`Authorization`,prefix:`Bearer `}},anthropic:{baseUrl:`https://api.anthropic.com/v1`,auth:{type:`header`,name:`x-api-key`},hint:`ai.remoteAnthropicHint`},azure:{baseUrl:``,auth:{type:`header`,name:`api-key`},hint:`ai.remoteAzureHint`},bedrock:{baseUrl:H(`us-east-1`),auth:{type:`sigv4`,region:`us-east-1`},hint:`ai.remoteBedrockHint`},vertex:{baseUrl:`https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/endpoints/openapi`,auth:{type:`oauth`,flow:`jwt_bearer`,issuer:`https://accounts.google.com`,scopes:`https://www.googleapis.com/auth/cloud-platform`},hint:`ai.remoteVertexHint`},alibaba:{baseUrl:`https://dashscope-intl.aliyuncs.com/compatible-mode/v1`,auth:{type:`header`,name:`Authorization`,prefix:`Bearer `},hint:`ai.remoteAlibabaHint`}};function H(e){return`https://bedrock-runtime.${e}.amazonaws.com`}function ee(e){try{let t=new URL(e).hostname;return/^bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com$/.exec(t)?.[1]??null}catch{return null}}function U({connection:e,disabled:n,onPicked:r}){let i=t(),a=d(e=>e.updateConnection),o=d(e=>e.vaults),s=m(),[c,l]=(0,C.useState)([]),[u,f]=(0,C.useState)(!0),[h,_]=(0,C.useState)(null),[x,w]=(0,C.useState)(()=>p(e.headers)),[T,O]=(0,C.useState)(()=>Object.keys(e.headers??{}).length>0),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)([]),[N,P]=(0,C.useState)(null),F=t=>a(e.id,t),I=b(e);(0,C.useEffect)(()=>{if(!s)return;let t=!0;return y().then(()=>Promise.all([s.secretFields(e.id),s.canKeepSecrets()])).then(([e,n])=>{t&&(l(e),f(n))}),()=>{t=!1}},[s,e.id,I]);let L=JSON.stringify([e.fromVault??null,I,o]);if((0,C.useEffect)(()=>{if(!s)return;let t=!0;return y().then(()=>s.vaultAuthorized(e.id)).then(e=>t&&M(e)),()=>{t=!1}},[s,e.id,L]),!s)return null;let R=async t=>{P(null),await y();let n=await s.authorizeVaultSecret(e.id,t);`problem`in n&&P({field:t,text:n.problem===`denied`?i(`ai.vaultDenied`):n.problem===`invalid`?i(`ai.vaultIncompleteRef`):i(`ai.remoteVaultFailed`,{detail:n.problem})}),M(await s.vaultAuthorized(e.id))},B=async()=>{_(`checking`),await y(),_(await s.probe(e.id))},U=(t,n)=>{let r=Object.fromEntries(Object.entries(e.fromVault??{}).filter(([e])=>e!==t)),i=n?{...r,[t]:n}:r;F({fromVault:Object.keys(i).length?i:void 0})},W=async(t,n)=>{await y(),await s.setSecret(e.id,t,n),l(await s.secretFields(e.id))},G=async t=>{A(null),await y();let n=await s.importSecretFile(e.id,t);`problem`in n&&A({field:t,key:re[n.problem]??`ai.fileUnreadable`}),l(await s.secretFields(e.id))},K=c.includes(`tlsPfx`),q=t=>{let n=t===`header`?{type:t,name:`Authorization`,prefix:`Bearer `}:t===`basic`?{type:t,username:``}:t===`oauth`?{type:t,flow:`authorization_code`,register:!0,scopes:``}:t===`sigv4`?{type:t,region:ee(e.baseUrl)??`us-east-1`}:{type:`none`};F({auth:n})},J=t=>{let n=V[e.protocol],r=V[t],i={protocol:t,model:``};(e.baseUrl===`https://`||e.baseUrl===``||e.baseUrl===n?.baseUrl)&&(i.baseUrl=r.baseUrl||`https://`);let a=e.auth;(a.type===`none`||n&&JSON.stringify(a)===JSON.stringify(n.auth))&&(i.auth=r.auth),_(null),F(i)},Y=V[e.protocol],ae=[`azure`,`bedrock`,`vertex`,`alibaba`].includes(e.protocol),X=e.protocol===`bedrock`||e.protocol===`alibaba`,oe=t=>{let n=e.auth.type===`sigv4`?e.auth:null,r={auth:{type:`sigv4`,region:t,...n?.service?{service:n.service}:{}}};n&&e.baseUrl===H(n.region)&&/^[a-z0-9-]+$/.test(t)&&(r.baseUrl=H(t)),F(r)},Z=h&&h!==`checking`&&h.state===`ok`?h.models:[],Q=e.model&&!Z.includes(e.model)?[e.model,...Z]:Z,$=t=>t.filter(e=>v.has(e)).filter(e=>!K||e!==`tlsCert`&&e!==`tlsKey`).map(t=>(0,E.jsx)(te,{label:i(t===`privateKey`&&e.auth.type===`oauth`&&e.auth.flow===`jwt_bearer`?`ai.oauthAssertionKey`:ne[t]??`ai.remotePassword`),saved:c.includes(t),disabled:n||!u,onSave:e=>void W(t,e),onForget:()=>void W(t,null),vaults:o,fromVault:e.fromVault?.[t],onFromVault:e=>{e&&c.includes(t)&&W(t,null),U(t,e)},onFile:ie.has(t)?()=>void G(t):void 0,problem:k?.field===t?i(k.key):N?.field===t?N.text:void 0,authorized:j.includes(t),onAuthorize:()=>void R(t)},t));return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionService`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionService`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteName`),(0,E.jsx)(`input`,{type:`text`,value:e.label,disabled:n,onChange:e=>F({label:e.target.value})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteProtocol`),(0,E.jsxs)(`select`,{value:e.protocol,"aria-label":i(`ai.remoteProtocol`),disabled:n,onChange:e=>J(e.target.value),children:[(0,E.jsx)(`option`,{value:`openai`,children:i(`ai.remoteProtocolOpenai`)}),(0,E.jsx)(`option`,{value:`anthropic`,children:`Anthropic`}),(0,E.jsx)(`option`,{value:`azure`,children:`Azure OpenAI / AI Foundry`}),(0,E.jsx)(`option`,{value:`bedrock`,children:`Amazon Bedrock`}),(0,E.jsx)(`option`,{value:`vertex`,children:`Google Vertex AI`}),(0,E.jsx)(`option`,{value:`alibaba`,children:`Alibaba Cloud Model Studio`})]})]}),Y?.hint&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(Y.hint)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.serverAddress`),(0,E.jsx)(`input`,{type:`url`,value:e.baseUrl,spellCheck:!1,disabled:n,onChange:e=>F({baseUrl:e.target.value.trim()})})]})]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionSignIn`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionSignIn`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteAuth`),(0,E.jsxs)(`select`,{value:e.auth.type,"aria-label":i(`ai.remoteAuth`),disabled:n,onChange:e=>q(e.target.value),children:[(0,E.jsx)(`option`,{value:`none`,children:i(`ai.remoteAuthNone`)}),(0,E.jsx)(`option`,{value:`header`,children:i(`ai.remoteAuthHeader`)}),(0,E.jsx)(`option`,{value:`basic`,children:i(`ai.remoteAuthBasic`)}),(0,E.jsx)(`option`,{value:`oauth`,children:i(`ai.remoteAuthOAuth`)}),(0,E.jsx)(`option`,{value:`sigv4`,children:i(`ai.remoteAuthSigv4`)})]})]}),e.auth.type===`header`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaderName`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.name,spellCheck:!1,disabled:n,onChange:t=>F({auth:{...e.auth,name:t.target.value.trim()}})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaderPrefix`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.prefix??``,spellCheck:!1,disabled:n,onChange:t=>F({auth:{...e.auth,prefix:t.target.value}})})]})]}),e.auth.type===`basic`&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteUsername`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.username,autoComplete:`off`,disabled:n,onChange:e=>F({auth:{type:`basic`,username:e.target.value}})})]}),e.auth.type===`sigv4`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.awsRegion`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.region,spellCheck:!1,disabled:n,onChange:e=>oe(e.target.value.trim())})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.awsService`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.service??``,placeholder:`bedrock`,spellCheck:!1,disabled:n,onChange:t=>F({auth:{type:`sigv4`,region:e.auth.region,...t.target.value.trim()?{service:t.target.value.trim()}:{}}})})]})]}),e.auth.type===`oauth`&&(0,E.jsx)(D,{connectionId:e.id,target:I,config:e.auth,disabled:n,onChange:e=>F({auth:e})}),$(S(e.auth)),!u&&(0,E.jsx)(`p`,{className:`ai-server-status`,children:i(`ai.remoteNoSecureStorage`)}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(`ai.remoteHint`)})]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionCertificate`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionCertificate`)}),(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!e.clientCertificate,disabled:n,onChange:e=>F({clientCertificate:e.target.checked})}),i(`ai.tlsClientCertificate`)]}),e.clientCertificate&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(`ai.tlsHint`)}),e.clientCertificate&&K&&(0,E.jsxs)(`div`,{className:`ai-server-field`,children:[(0,E.jsx)(`span`,{children:i(`ai.tlsPfx`)}),(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":`true`,children:i(`ai.secretFileSaved`)}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:n||!u,onClick:()=>void W(`tlsPfx`,null),children:i(`ai.remoteSecretForget`)})]}),e.clientCertificate&&$(S({type:`none`},!0).filter(e=>e.startsWith(`tls`)))]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionModel`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionModel`)}),ae?(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(e.protocol===`bedrock`?`ai.remoteBedrockModel`:e.protocol===`azure`?`ai.remoteDeployment`:`ai.serverModel`),(0,E.jsx)(`input`,{type:`text`,value:e.model??``,list:X?`ai-models-${e.id}`:void 0,spellCheck:!1,disabled:n,onChange:e=>F({model:e.target.value.trim()})}),X&&(0,E.jsx)(`datalist`,{id:`ai-models-${e.id}`,children:Z.map(e=>(0,E.jsx)(`option`,{value:e},e))})]}):(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.serverModel`),(0,E.jsxs)(`select`,{value:e.model??``,"aria-label":i(`ai.serverModel`),disabled:n||Q.length===0,onChange:e=>{F({model:e.target.value}),r()},children:[(0,E.jsx)(`option`,{value:``,disabled:!0,children:i(`ai.serverPickModel`)}),Q.map(e=>(0,E.jsx)(`option`,{value:e,children:e},e))]})]}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:n||h===`checking`,onClick:()=>void B(),children:i(h===`checking`?`ai.serverChecking`:`ai.serverCheck`)}),h&&h!==`checking`&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-status--${h.state}`,role:`status`,"data-state":h.state,children:h.state===`ok`?h.models.length>0?i(`ai.serverOk`,{count:h.models.length}):i(`ai.serverOkEmpty`):z(i,h.state,e.baseUrl,{status:h.state===`http`?h.status:void 0,problem:h.state===`invalid`?h.problem:h.state===`vault`?h.detail:void 0})})]})]}),(0,E.jsxs)(`section`,{className:`ai-section ai-section--folded`,children:[(0,E.jsx)(`button`,{type:`button`,className:`ai-section-toggle`,"aria-expanded":T,onClick:()=>O(!T),children:i(`ai.sectionAdvanced`)}),T&&(0,E.jsx)(E.Fragment,{children:(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaders`),(0,E.jsx)(`textarea`,{rows:2,value:x,spellCheck:!1,disabled:n,onChange:e=>w(e.target.value),onBlur:()=>F({headers:g(x)})})]})})]})]})}function te({label:e,saved:n,disabled:r,onSave:i,onForget:a,vaults:o,fromVault:s,onFromVault:c,onFile:l,problem:u,authorized:d=!1,onAuthorize:f}){let p=t(),[m,h]=(0,C.useState)(``),g=()=>{m&&(i(m),h(``))},_=s&&o.find(e=>e.id===s.vault),v=_?.vault?.kind===`hashicorp`,y=(0,C.useId)();return(0,E.jsxs)(`div`,{className:`ai-server-field ai-secret`,children:[(0,E.jsxs)(`div`,{className:`ai-secret-head`,children:[!_&&!l?(0,E.jsx)(`label`,{htmlFor:y,children:e}):(0,E.jsx)(`span`,{children:e}),o.length>0&&(0,E.jsxs)(`select`,{className:`ai-secret-source`,value:_?_.id:``,"aria-label":`${e} · ${p(`ai.secretSource`)}`,disabled:r,onChange:e=>c(e.target.value?{vault:e.target.value,name:``}:void 0),children:[(0,E.jsx)(`option`,{value:``,children:p(`ai.secretKeptHere`)}),o.map(e=>(0,E.jsx)(`option`,{value:e.id,children:p(`ai.secretVaultOption`,{vault:e.label||e.baseUrl})},e.id))]})]}),_&&s?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[p(v?`ai.vaultSecretPath`:`ai.vaultSecretName`),(0,E.jsx)(`input`,{type:`text`,value:s.name,spellCheck:!1,disabled:r,onChange:e=>c({...s,name:e.target.value.trim()})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[p(v?`ai.vaultSecretField`:`ai.vaultSecretKey`),(0,E.jsx)(`input`,{type:`text`,value:s.key??``,spellCheck:!1,placeholder:v?`value`:``,disabled:r,onChange:e=>c({...s,key:e.target.value.trim()||void 0})})]})]}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:p(`ai.vaultSecretHint`)}),(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":d||void 0,children:p(d?`ai.vaultAuthorizedYes`:`ai.vaultAuthorizedNo`)}),(0,E.jsx)(`div`,{className:`ai-secret-actions`,children:(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r||!s.name,"aria-label":`${p(`ai.vaultAuthorize`)} ${e}`,onClick:f,children:p(`ai.vaultAuthorize`)})})]}):l?(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":n||void 0,children:p(n?`ai.secretFileSaved`:`ai.secretNoFile`)}):(0,E.jsx)(`input`,{id:y,type:`password`,value:m,autoComplete:`off`,placeholder:n?p(`ai.remoteSecretSaved`):``,disabled:r,"data-saved":n||void 0,onChange:e=>h(e.target.value),onBlur:g,onKeyDown:e=>{e.key===`Enter`&&g()}}),!_&&(l||n)&&(0,E.jsxs)(`div`,{className:`ai-secret-actions`,children:[l&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r,"aria-label":`${p(`ai.secretFromFile`)} ${e}`,onClick:l,children:p(`ai.secretFromFile`)}),n&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r,onClick:a,children:p(`ai.remoteSecretForget`)})]}),u&&(0,E.jsx)(`p`,{className:`ai-server-status`,role:`status`,children:u})]})}var ne={key:`ai.remoteKey`,password:`ai.remotePassword`,clientSecret:`ai.oauthClientSecret`,privateKey:`ai.oauthPrivateKey`,tlsCert:`ai.tlsCert`,tlsKey:`ai.tlsKey`,tlsPassphrase:`ai.tlsPassphrase`,tlsCa:`ai.tlsCa`,accessKeyId:`ai.awsAccessKeyId`,secretAccessKey:`ai.awsSecretAccessKey`,sessionToken:`ai.awsSessionToken`},re={"too-large":`ai.fileTooLarge`,empty:`ai.fileEmpty`,"not-certificate":`ai.fileNotCertificate`,"not-key":`ai.fileNotKey`},ie=new Set([`tlsCert`,`tlsKey`,`tlsCa`,`privateKey`]);function W(){let e=i(e=>e.aiTurns),n=i(e=>e.aiModel),r=i(e=>e.aiModelStatus),a=i(e=>e.setAiModel),o=i(e=>e.aiGenerate),s=i(e=>e.aiCancel),c=i(e=>e.aiUndoTurn),l=i(e=>e.aiClear),u=d(e=>e.engine),p=d(e=>e.setEngine),m=d(e=>e.server),g=d(e=>e.connections.find(t=>t.id===e.connectionId)??null),[v,y]=(0,C.useState)(``),b=t(),x=f(),S=(e[e.length-1]?.state??null)===`working`,w=u===`server`,D=u===`remote`,O=u===`browser`,k=w?m.model!==``:!D||!!g?.model,A=[..._()?[`browser`]:[],`server`,...h()?[`remote`]:[]],j=(0,C.useRef)(null),M=()=>{let e=j.current?.querySelector(`:scope > details.ai-server`);e&&(e.open=!1,e.querySelector(`summary`)?.focus())},N=i(e=>e.kind),P=i(e=>e.nodes),F=(0,C.useMemo)(()=>T(N,P),[N,P]),I=(0,C.useRef)(null),L=()=>{v.trim()&&k&&(o(v),y(``))};return(0,E.jsxs)(`div`,{className:`ai-panel ai-chat`,children:[(0,E.jsxs)(`div`,{className:`ai-header`,children:[A.length>1&&(0,E.jsxs)(`label`,{className:`ai-model`,children:[b(`ai.engine`),(0,E.jsxs)(`select`,{value:u,"aria-label":b(`ai.engine`),disabled:S,onChange:e=>p(e.target.value),children:[A.includes(`browser`)&&(0,E.jsx)(`option`,{value:`browser`,children:b(`ai.engineBrowser`)}),(0,E.jsx)(`option`,{value:`server`,children:b(`ai.engineServer`)}),A.includes(`remote`)&&(0,E.jsx)(`option`,{value:`remote`,children:b(`ai.engineRemote`)})]})]}),O&&(0,E.jsxs)(`label`,{className:`ai-model`,children:[b(`ai.model`),(0,E.jsxs)(`select`,{value:n,"aria-label":b(`ai.model`),disabled:S,onChange:e=>a(e.target.value),children:[(0,E.jsx)(`option`,{value:`qwen2.5-coder-0.5b`,children:b(`ai.modelSmall`)}),(0,E.jsx)(`option`,{value:`qwen2.5-coder-1.5b`,children:b(`ai.modelLarge`)})]})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action ai-new`,title:b(`ai.newHint`),disabled:S||e.length===0,onClick:l,children:b(`ai.new`)})]}),(w||D)&&(0,E.jsxs)(`div`,{className:`ai-settings`,ref:j,children:[w&&(0,E.jsx)(J,{disabled:S}),D&&(0,E.jsx)(B,{disabled:S}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action ai-settings-done`,onClick:M,children:b(`ai.settingsDone`)})]}),O&&x===`local`&&r.state!==`idle`&&(0,E.jsxs)(`div`,{className:`ai-model-status ai-model-status--${r.state}`,role:`status`,"data-device":r.state===`ready`?r.device:void 0,children:[r.state===`downloading`&&(0,E.jsxs)(`span`,{children:[b(`ai.downloading`,{percent:r.percent===null?`…`:String(r.percent)}),r.file?` — ${r.file}`:``]}),r.state===`warming`&&(0,E.jsx)(`span`,{children:b(`ai.warming`)}),r.state===`ready`&&(0,E.jsx)(`span`,{children:b(`ai.ready`)}),r.state===`error`&&(0,E.jsx)(`span`,{className:`ai-model-error`,children:b(`ai.localError`,{error:r.error})})]}),(0,E.jsxs)(`div`,{className:`ai-thread`,tabIndex:0,role:`region`,"aria-label":b(`ai.thread`),children:[e.length===0&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`p`,{className:`ai-seed`,children:b(`ai.seed`)}),(0,E.jsxs)(`div`,{className:`ai-suggestions`,role:`group`,"aria-label":b(`ai.suggestTitle`),children:[(0,E.jsx)(`p`,{className:`ai-suggestions-title`,children:b(`ai.suggestTitle`)}),F.map(e=>{let t=b(e.key,e.params);return(0,E.jsx)(`button`,{type:`button`,className:`ai-suggestion`,disabled:S||!k,onClick:()=>{y(t),I.current?.focus()},children:t},t)})]})]}),e.map(e=>(0,E.jsxs)(`div`,{className:`ai-turn`,children:[(0,E.jsx)(`div`,{className:`ai-bubble ai-user`,children:e.request}),(0,E.jsxs)(`div`,{className:`ai-bubble ai-assistant ${e.state}`,children:[e.state===`working`&&(0,E.jsxs)(`p`,{className:`ai-status`,role:`status`,children:[(0,E.jsx)(`span`,{className:`ai-spinner`,"aria-hidden":`true`}),e.attempts>1?b(`ai.retrying`):b(`ai.generating`)]}),e.state===`error`&&(0,E.jsx)(`p`,{className:`ai-error`,children:!e.reason||e.reason===`http`?b(`ai.failed`,{error:e.error??``}):D?z(b,e.reason,g?.baseUrl??``,{problem:e.error??void 0}):R(b,e.reason,m.baseUrl)}),e.state===`done`&&(0,E.jsx)(K,{changes:e.changes}),e.state===`done`&&e.codeBefore!==null&&(0,E.jsx)(`div`,{className:`ai-actions`,children:(0,E.jsx)(`button`,{type:`button`,title:b(`ai.undoTurnHint`),onClick:()=>c(e.id),children:b(`ai.undoTurn`)})})]})]},e.id))]}),(0,E.jsxs)(`div`,{className:`ai-composer`,children:[(0,E.jsx)(`textarea`,{ref:I,className:`ai-request`,rows:2,value:v,placeholder:b(k?`ai.placeholder`:D?`ai.remoteNeedsModel`:`ai.serverNeedsModel`),disabled:S||!k,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),L())}}),S?(0,E.jsx)(`button`,{type:`button`,className:`primary ai-send`,title:b(`ai.cancelHint`),onClick:s,children:b(`ai.cancel`)}):(0,E.jsx)(`button`,{type:`button`,className:`primary ai-send`,title:b(`ai.sendHint`),disabled:!v.trim()||!k,onClick:L,children:b(`ai.send`)})]})]})}var G=8;function K({changes:e}){let n=t(),r=i(e=>e.aiShowChange);if(e===void 0)return(0,E.jsx)(`p`,{className:`ai-applied`,role:`status`,children:n(`ai.applied`)});if(e===null||!o(e))return(0,E.jsx)(`p`,{className:`ai-applied`,role:`status`,children:n(e===null?`ai.changesRedrawn`:`ai.changesNone`)});let a=new Set(e.removedNodes.map(e=>e.id)),s=e=>e.label?`${e.from} → ${e.to} (${e.label})`:`${e.from} → ${e.to}`,c=[...e.addedNodes.map(e=>({kind:`added`,text:e.label,target:{node:e.id}})),...e.addedEdges.map(e=>({kind:`added`,text:s(e),target:{source:e.source,target:e.target}})),...e.renamedNodes.map(e=>({kind:`renamed`,text:`${e.was} → ${e.label}`,target:{node:e.id}})),...e.removedNodes.map(e=>({kind:`removed`,text:e.label})),...e.removedEdges.filter(e=>!a.has(e.source)&&!a.has(e.target)).map(e=>({kind:`removed`,text:s(e)}))],l={added:`+`,renamed:`✎`,removed:`−`},u={added:n(`ai.changeAdded`),renamed:n(`ai.changeRenamed`),removed:n(`ai.changeRemoved`)};return(0,E.jsxs)(`div`,{className:`ai-changes`,role:`status`,children:[(0,E.jsx)(`p`,{className:`ai-changes-title`,children:n(`ai.changesTitle`)}),(0,E.jsx)(`ul`,{children:c.slice(0,G).map((e,t)=>(0,E.jsxs)(`li`,{className:`ai-change ai-change--${e.kind}`,children:[(0,E.jsx)(`span`,{className:`ai-change-mark`,"aria-hidden":`true`,children:l[e.kind]}),(0,E.jsxs)(`span`,{className:`visually-hidden`,children:[u[e.kind],`: `]}),e.target?(0,E.jsx)(`button`,{type:`button`,className:`ai-change-link`,title:n(`ai.changeShow`),onClick:()=>r(e.target),children:e.text}):(0,E.jsx)(`span`,{className:`ai-change-text`,children:e.text})]},t))}),c.length>G&&(0,E.jsx)(`p`,{className:`ai-changes-more`,children:n(`ai.changesMore`,{count:c.length-G})})]})}async function q(e){let t=m();if(!t||!c(e.baseUrl))return u(e);await y();let n=await t.probe(x);return n.state===`invalid`||n.state===`vault`?{state:`not-local`}:n}function J({disabled:e}){let n=d(e=>e.server),r=d(e=>e.setServer),[i,a]=(0,C.useState)(n.baseUrl),[o,c]=(0,C.useState)(`checking`),u=t(),f=async e=>{c(`checking`),c(await q({...d.getState().server,baseUrl:e}))};(0,C.useEffect)(()=>{let e=!0;return q(d.getState().server).then(t=>{e&&c(t)}),()=>{e=!1}},[]);let p=e=>{let t=e.trim();a(t),t!==n.baseUrl&&(r({baseUrl:t,model:``}),f(t))},m=o!==`checking`&&o.state===`ok`?o.models:[],h=n.model&&!m.includes(n.model)?[n.model,...m]:m,g=o!==`checking`&&o.state===`ok`?o.remote:[],_=e=>g.includes(e)||/[-:]cloud$/i.test(e);return(0,E.jsxs)(`details`,{className:`ai-server`,open:!n.model,children:[(0,E.jsx)(`summary`,{children:u(`ai.serverSummary`,{model:n.model||u(`ai.serverNoModel`)})}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:u(`ai.serverHint`)}),(0,E.jsx)(`div`,{className:`ai-server-presets`,children:Object.keys(s).map(t=>(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,"aria-pressed":l(n.baseUrl)===t,disabled:e,onClick:()=>p(s[t].baseUrl),children:s[t].label},t))}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[u(`ai.serverAddress`),(0,E.jsx)(`input`,{type:`url`,value:i,spellCheck:!1,disabled:e,onChange:e=>a(e.target.value),onBlur:e=>p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&p(e.currentTarget.value)}})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[u(`ai.serverModel`),(0,E.jsxs)(`select`,{value:n.model,"aria-label":u(`ai.serverModel`),disabled:e||h.length===0,onChange:e=>r({model:e.target.value}),children:[(0,E.jsx)(`option`,{value:``,disabled:!0,children:u(`ai.serverPickModel`)}),h.map(e=>(0,E.jsx)(`option`,{value:e,children:_(e)?u(`ai.serverCloudTag`,{model:e}):e},e))]})]}),n.model&&_(n.model)&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-cloud`,role:`note`,children:u(`ai.serverCloudWarning`)}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e||o===`checking`,onClick:()=>void f(n.baseUrl),children:u(o===`checking`?`ai.serverChecking`:`ai.serverCheck`)}),o!==`checking`&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-status--${o.state}`,role:`status`,"data-state":o.state,children:o.state===`ok`?o.models.length>0?u(`ai.serverOk`,{count:o.models.length}):u(`ai.serverOkEmpty`):R(u,o.state,n.baseUrl,o.state===`http`?o.status:void 0)})]})]})}export{W as AiPanel};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{a as t,f as n,i as r}from"./i18n-Clgq-7gx.js";import{n as i,v as a}from"./index-C7pEN42H.js";import{hasChanges as o}from"./changes-Bhz9SZug.js";import{SERVER_PRESETS as s,isLocalUrl as c,presetOf as l,probeServer as u}from"./server-BX-Rqf3U.js";import{a as d,aiMode as f,c as p,d as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./provider-DiGaSl1J.js";var C=e(n(),1);function w(e){return e.filter(e=>e.type!==`group`&&e.type!==`note`&&e.type!==`junction`).map(e=>{let t=e.data;return{label:typeof t.label==`string`?t.label.trim():``,shape:typeof t.shape==`string`?t.shape:void 0}}).filter(e=>e.label&&e.label.length<=40)}function T(e,t){let n=w(t);if(n.length===0)return[{key:`ai.suggestStartLogin`},{key:`ai.suggestStartShop`},{key:`ai.suggestStartOrder`}];let r=[];if(e===`flowchart`){let e=n.find(e=>e.shape===`cylinder`&&!/cache/i.test(e.label)),t=n.find(e=>e.shape===`square`||e.shape===`round`)??n[0],i=n.find(e=>e.shape===`diamond`);e&&r.push({key:`ai.suggestCache`,params:{node:e.label}}),r.push({key:`ai.suggestRetry`,params:{node:t.label}}),i&&r.push({key:`ai.suggestOutcome`,params:{node:i.label}}),r.push({key:`ai.suggestColour`,params:{node:(n.at(-1)??t).label}})}else r.push({key:`ai.suggestConnect`,params:{node:n[0].label}}),r.push({key:`ai.suggestRemove`,params:{node:(n.at(-1)??n[0]).label}});return r.slice(0,3)}var E=a();function D({connectionId:e,target:n,config:i,disabled:a,onChange:o}){let s=t(),c=r(e=>e.locale),l=m(),[u,d]=(0,C.useState)({signedIn:!1}),[f,p]=(0,C.useState)(!1),[h,g]=(0,C.useState)(null),[_,v]=(0,C.useState)(null),b=e=>o({...i,...e}),x=i.flow===`jwt_bearer`;if((0,C.useEffect)(()=>{if(!l)return;let t=!0;y().then(()=>l.authStatus(e)).then(e=>t&&d(e));let n=l.onEvent(n=>{if(n.type===`ai:auth`&&n.connectionId===e){if(n.state===`device-code`){g({userCode:n.userCode,uri:n.verificationUriComplete??n.verificationUri});return}g(null),p(!1),v(n.state===`error`?n.detail??``:null),l.authStatus(e).then(e=>t&&d(e))}});return()=>{t=!1,n()}},[l,e,n]),!l)return null;let S=async()=>{p(!0),v(null),await y(),await l.signIn(e)},w=async()=>{await y(),await l.signOut(e),d(await l.authStatus(e))},T=u.expiresAt?new Date(u.expiresAt).toLocaleTimeString(c,{hour:`2-digit`,minute:`2-digit`}):null;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthFlow`),(0,E.jsxs)(`select`,{value:i.flow,"aria-label":s(`ai.oauthFlow`),disabled:a||f,onChange:e=>b({flow:e.target.value}),children:[(0,E.jsx)(`option`,{value:`authorization_code`,children:s(`ai.oauthFlowBrowser`)}),(0,E.jsx)(`option`,{value:`device_code`,children:s(`ai.oauthFlowDevice`)}),(0,E.jsx)(`option`,{value:`client_credentials`,children:s(`ai.oauthFlowMachine`)}),(0,E.jsx)(`option`,{value:`jwt_bearer`,children:s(`ai.oauthFlowAssertion`)})]})]}),x&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:s(`ai.oauthAssertionHint`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthIssuer`),(0,E.jsx)(`input`,{type:`url`,value:i.issuer??``,placeholder:s(`ai.oauthIssuerHint`),spellCheck:!1,disabled:a||f,onChange:e=>b({issuer:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(x?`ai.oauthAssertionIssuer`:`ai.oauthClientId`),(0,E.jsx)(`input`,{type:`text`,value:i.clientId??``,spellCheck:!1,disabled:a||f,onChange:e=>b({clientId:e.target.value.trim()||void 0})})]}),i.flow!==`client_credentials`&&!x&&(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!i.register,disabled:a||f,onChange:e=>b({register:e.target.checked})}),s(`ai.oauthRegister`)]}),!x&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthClientAuth`),(0,E.jsxs)(`select`,{value:i.clientAuth??``,"aria-label":s(`ai.oauthClientAuth`),disabled:a||f,onChange:e=>b({clientAuth:e.target.value||void 0}),children:[(0,E.jsx)(`option`,{value:``,children:s(`ai.oauthClientAuthAuto`)}),(0,E.jsx)(`option`,{value:`client_secret_basic`,children:s(`ai.oauthClientAuthBasic`)}),(0,E.jsx)(`option`,{value:`client_secret_post`,children:s(`ai.oauthClientAuthPost`)}),(0,E.jsx)(`option`,{value:`private_key_jwt`,children:s(`ai.oauthClientAuthKey`)}),(0,E.jsx)(`option`,{value:`tls_client_auth`,children:s(`ai.oauthClientAuthTls`)})]})]}),!x&&(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!i.dpop,disabled:a||f,onChange:e=>b({dpop:e.target.checked})}),s(`ai.oauthDpop`)]}),x&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthSubject`),(0,E.jsx)(`input`,{type:`text`,value:i.subject??``,spellCheck:!1,disabled:a||f,onChange:e=>b({subject:e.target.value.trim()||void 0})})]}),(i.clientAuth===`private_key_jwt`||x)&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthKeyId`),(0,E.jsx)(`input`,{type:`text`,value:i.keyId??``,spellCheck:!1,disabled:a||f,onChange:e=>b({keyId:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthScopes`),(0,E.jsx)(`input`,{type:`text`,value:i.scopes??``,spellCheck:!1,disabled:a||f,onChange:e=>b({scopes:e.target.value})})]}),(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthResource`),(0,E.jsx)(`input`,{type:`text`,value:i.resource??``,spellCheck:!1,disabled:a||f,onChange:e=>b({resource:e.target.value.trim()||void 0})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[s(`ai.oauthAudience`),(0,E.jsx)(`input`,{type:`text`,value:i.audience??``,spellCheck:!1,disabled:a||f,onChange:e=>b({audience:e.target.value.trim()||void 0})})]})]}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[f?(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,onClick:()=>{l.cancelSignIn(e),p(!1),g(null)},children:s(`ai.oauthCancel`)}):u.signedIn?(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:a,onClick:()=>void w(),children:s(`ai.oauthSignOut`)}):(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:a,onClick:()=>void S(),children:s(`ai.oauthSignIn`)}),(0,E.jsx)(`p`,{className:`ai-server-status${u.signedIn?` ai-server-status--ok`:f||_===null?` ai-server-status--note`:``}`,role:`status`,"data-auth":f?`busy`:u.signedIn?`signed-in`:`signed-out`,children:f?h?null:s(`ai.oauthWaiting`):u.signedIn?T?s(`ai.oauthSignedInUntil`,{time:T}):s(`ai.oauthSignedIn`):_===null?s(`ai.oauthSignedOut`):s(`ai.oauthFailed`,{error:_})}),f&&h&&(0,E.jsxs)(`div`,{className:`ai-oauth-device`,role:`status`,children:[(0,E.jsxs)(`p`,{children:[s(`ai.oauthDeviceCode`),` `,(0,E.jsx)(`a`,{href:h.uri,target:`_blank`,rel:`noreferrer`,children:h.uri})]}),(0,E.jsx)(`p`,{className:`ai-oauth-code`,children:h.userCode})]})]})]})}var O=[`azure-kv`,`aws-sm`,`gcp-sm`,`alibaba-kms`,`hashicorp`],k={azureName:/^[0-9A-Za-z-]{1,127}$/,azureVault:/^https:\/\/[a-z0-9-]{3,24}\.vault\.(azure\.net|azure\.cn|usgovcloudapi\.net)\/?$/,awsName:/^[A-Za-z0-9/_+=.@:-]{1,2048}$/,awsRegion:/^[a-z]{2}(-[a-z]+)+-\d{1,2}$/,gcpName:/^[A-Za-z0-9_-]{1,255}$/,gcpProject:/^([a-z][a-z0-9-]{4,28}[a-z0-9]|\d{1,20})$/,alibabaName:/^[A-Za-z0-9_/+=.@:-]{1,192}$/,alibabaRegion:/^[a-z]{2}-[a-z0-9-]{2,30}$/,hashicorpPath:/^(?!.*\.\.)[A-Za-z0-9_.-]+(\/[A-Za-z0-9_.-]+)*$/,hashicorpMount:/^[A-Za-z0-9_.-]{1,64}$/,namespace:/^[A-Za-z0-9_-]+(\/[A-Za-z0-9_-]+)*$/,word:/^[A-Za-z0-9_.-]{1,128}$/};function A(e){let t=e.vault;if(e.protocol!==`vault`||!t||!O.includes(t.kind)||t.via!==`cli`&&t.via!==`sign-in`)return`vault`;if(t.profile!==void 0&&t.profile!==``&&!k.word.test(t.profile))return`profile`;switch(t.kind){case`azure-kv`:return k.azureVault.test(e.baseUrl)?null:`address`;case`aws-sm`:return k.awsRegion.test(t.region??``)?null:`region`;case`gcp-sm`:return k.gcpProject.test(t.project??``)?null:`project`;case`alibaba-kms`:return k.alibabaRegion.test(t.region??``)?null:`region`;case`hashicorp`:{let n;try{n=new URL(e.baseUrl)}catch{return`address`}return n.protocol!==`https:`&&![`localhost`,`127.0.0.1`].includes(n.hostname)||n.username||n.password||n.search||n.hash?`address`:t.mount&&!k.hashicorpMount.test(t.mount)?`mount`:t.namespace&&!k.namespace.test(t.namespace)?`namespace`:null}}}var j={"azure-kv":`Azure Key Vault`,"aws-sm":`AWS Secrets Manager`,"gcp-sm":`Google Secret Manager`,"alibaba-kms":`Alibaba Cloud KMS`,hashicorp:`HashiCorp Vault / OpenBao`},M={"azure-kv":{command:`az`,login:`az login`},"aws-sm":{command:`aws`,login:`aws sso login`},"gcp-sm":{command:`gcloud`,login:`gcloud auth login`},"alibaba-kms":{command:`aliyun`,login:`aliyun configure`},hashicorp:{command:`vault`,login:`vault login`}},N={"azure-kv":`https://<name>.vault.azure.net`,hashicorp:`https://vault.example.com:8200`},P={address:`ai.vaultProblemAddress`,region:`ai.remoteProblemRegion`,project:`ai.vaultProblemProject`,profile:`ai.vaultProblemField`,mount:`ai.vaultProblemField`,namespace:`ai.vaultProblemField`};function F({disabled:e}){let n=t(),r=d(e=>e.vaults),i=d(e=>e.addVault),a=d(e=>e.removeVault),[o,s]=(0,C.useState)(null),c=r.find(e=>e.id===o)??r[0]??null;return(0,E.jsxs)(`details`,{className:`ai-vaults`,children:[(0,E.jsx)(`summary`,{children:n(`ai.vaults`,{count:r.length})}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:n(`ai.vaultsHint`)}),(0,E.jsxs)(`div`,{className:`ai-server-presets`,children:[r.length>0&&(0,E.jsxs)(`label`,{className:`ai-server-field ai-remote-pick`,children:[n(`ai.vaultPick`),(0,E.jsx)(`select`,{value:c?.id??``,"aria-label":n(`ai.vaultPick`),disabled:e,onChange:e=>s(e.target.value),children:r.map(e=>(0,E.jsx)(`option`,{value:e.id,children:e.label||j[e.vault?.kind??`azure-kv`]},e.id))})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>s(i(n(`ai.vaultNewName`),`azure-kv`)),children:n(`ai.vaultAdd`)}),c&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>{a(c.id),s(null)},children:n(`ai.vaultRemove`)})]}),c&&(0,E.jsx)(I,{vault:c,disabled:e},c.id)]})}function I({vault:e,disabled:n}){let r=t(),i=d(e=>e.updateVault),a=e.vault??{kind:`azure-kv`,via:`cli`},o=t=>i(e.id,t),s=e=>o({vault:{...a,...e}}),c=e.baseUrl!==`https://`||[a.region,a.project,a.profile,a.mount,a.namespace].some(Boolean)?A(e):null,l=a.kind===`azure-kv`||a.kind===`hashicorp`,u=a.kind===`aws-sm`||a.kind===`alibaba-kms`,f=(e,t,i,a)=>(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[r(e),(0,E.jsx)(`input`,{type:`text`,value:t,spellCheck:!1,placeholder:a,disabled:n,onChange:e=>i(e.target.value.trim())})]});return(0,E.jsxs)(E.Fragment,{children:[f(`ai.remoteName`,e.label,e=>o({label:e})),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[r(`ai.vaultKind`),(0,E.jsx)(`select`,{value:a.kind,"aria-label":r(`ai.vaultKind`),disabled:n,onChange:e=>s({kind:e.target.value}),children:O.map(e=>(0,E.jsx)(`option`,{value:e,children:j[e]},e))})]}),l&&f(`ai.serverAddress`,e.baseUrl===`https://`?``:e.baseUrl,e=>o({baseUrl:e||`https://`}),N[a.kind]),u&&f(`ai.awsRegion`,a.region??``,e=>s({region:e}),a.kind===`aws-sm`?`eu-west-1`:`ap-southeast-1`),a.kind===`gcp-sm`&&f(`ai.vaultProject`,a.project??``,e=>s({project:e})),a.kind===`hashicorp`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[f(`ai.vaultMount`,a.mount??``,e=>s({mount:e}),`secret`),f(`ai.vaultNamespace`,a.namespace??``,e=>s({namespace:e}))]}),(a.kind===`aws-sm`||a.kind===`alibaba-kms`)&&f(`ai.vaultProfile`,a.profile??``,e=>s({profile:e})),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:r(`ai.vaultCliHint`,M[a.kind])}),c&&P[c]&&(0,E.jsx)(`p`,{className:`ai-server-status`,role:`status`,children:r(P[c])})]})}function L(){let e=globalThis.location?.origin??``;return e&&e!==`null`?e:`file://*`}function R(e,t,n,r){let i=l(n),a=i?s[i].label:e(`ai.serverGeneric`);switch(t){case`blocked`:return i===`ollama`?e(`ai.serverBlockedOllama`,{origin:L()}):i===`lmstudio`?e(`ai.serverBlockedLmStudio`):e(`ai.serverBlocked`,{origin:L()});case`down`:return e(`ai.serverDown`,{url:n,server:a});case`not-local`:return e(`ai.serverNotLocal`);case`no-model`:return e(`ai.serverNeedsModel`);default:return e(`ai.serverHttp`,{status:r??`?`})}}function z(e,t,n,r){switch(t){case`not-local`:return e(`ai.remoteNotHttps`);case`down`:case`network`:return e(`ai.remoteDown`,{url:n});case`no-model`:return e(`ai.remoteNeedsModel`);case`vault`:return r?.problem===`not-authorized`?e(`ai.vaultNotAuthorized`):r?.problem===`denied`?e(`ai.vaultDenied`):e(`ai.remoteVaultFailed`,{detail:r?.problem??``});case`invalid`:switch(r?.problem){case`protocol`:return e(`ai.remoteProblemProtocol`);case`header-name`:return e(`ai.remoteProblemHeaderName`);case`username`:return e(`ai.remoteProblemUsername`);case`extra-header`:return e(`ai.remoteProblemExtraHeader`);case`flow`:return e(`ai.remoteProblemFlow`);case`issuer`:return e(`ai.remoteProblemIssuer`);case`client`:return e(`ai.remoteProblemClient`);case`tls-https`:return e(`ai.remoteProblemTlsHttps`);case`tls-client-auth`:return e(`ai.remoteProblemTlsClientAuth`);case`region`:return e(`ai.remoteProblemRegion`);case`service`:return e(`ai.remoteProblemService`);default:return e(`ai.remoteProblemUnknown`)}default:return r?.status===401||r?.status===403?e(`ai.remoteUnauthorized`,{status:r.status}):e(`ai.serverHttp`,{status:r?.status??`?`})}}function B({disabled:e}){let n=t(),r=d(e=>e.connections),i=d(e=>e.connectionId),a=d(e=>e.addConnection),o=d(e=>e.removeConnection),s=d(e=>e.selectConnection),c=r.find(e=>e.id===i)??null,[l,u]=(0,C.useState)({id:i,open:!c?.model});l.id!==i&&u({id:i,open:!c?.model});let f=l.id===i?l.open:!c?.model;return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`details`,{className:`ai-server`,open:f,onToggle:e=>{let t=e.currentTarget.open;t!==f&&u({id:i,open:t})},children:[(0,E.jsx)(`summary`,{children:n(`ai.remoteSummary`,{model:c?`${c.label} · ${c.model||n(`ai.serverNoModel`)}`:n(`ai.serverNoModel`)})}),(0,E.jsxs)(`div`,{className:`ai-server-presets`,children:[r.length>0&&(0,E.jsxs)(`label`,{className:`ai-server-field ai-remote-pick`,children:[n(`ai.remoteService`),(0,E.jsx)(`select`,{value:i??``,"aria-label":n(`ai.remoteService`),disabled:e,onChange:e=>s(e.target.value),children:r.map(e=>(0,E.jsx)(`option`,{value:e.id,children:e.label||e.baseUrl},e.id))})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>a(n(`ai.remoteNewName`)),children:n(`ai.remoteAdd`)}),c&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e,onClick:()=>o(c.id),children:n(`ai.remoteRemove`)})]}),c?(0,E.jsx)(U,{connection:c,disabled:e,onPicked:()=>u({id:c.id,open:!1})},c.id):(0,E.jsx)(`p`,{className:`ai-server-hint`,children:n(`ai.remoteNone`)})]}),(0,E.jsx)(F,{disabled:e})]})}var V={openai:{baseUrl:``,auth:{type:`header`,name:`Authorization`,prefix:`Bearer `}},anthropic:{baseUrl:`https://api.anthropic.com/v1`,auth:{type:`header`,name:`x-api-key`},hint:`ai.remoteAnthropicHint`},azure:{baseUrl:``,auth:{type:`header`,name:`api-key`},hint:`ai.remoteAzureHint`},bedrock:{baseUrl:H(`us-east-1`),auth:{type:`sigv4`,region:`us-east-1`},hint:`ai.remoteBedrockHint`},vertex:{baseUrl:`https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/endpoints/openapi`,auth:{type:`oauth`,flow:`jwt_bearer`,issuer:`https://accounts.google.com`,scopes:`https://www.googleapis.com/auth/cloud-platform`},hint:`ai.remoteVertexHint`},alibaba:{baseUrl:`https://dashscope-intl.aliyuncs.com/compatible-mode/v1`,auth:{type:`header`,name:`Authorization`,prefix:`Bearer `},hint:`ai.remoteAlibabaHint`}};function H(e){return`https://bedrock-runtime.${e}.amazonaws.com`}function ee(e){try{let t=new URL(e).hostname;return/^bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com$/.exec(t)?.[1]??null}catch{return null}}function U({connection:e,disabled:n,onPicked:r}){let i=t(),a=d(e=>e.updateConnection),o=d(e=>e.vaults),s=m(),[c,l]=(0,C.useState)([]),[u,f]=(0,C.useState)(!0),[h,_]=(0,C.useState)(null),[x,w]=(0,C.useState)(()=>p(e.headers)),[T,O]=(0,C.useState)(()=>Object.keys(e.headers??{}).length>0),[k,A]=(0,C.useState)(null),[j,M]=(0,C.useState)([]),[N,P]=(0,C.useState)(null),F=t=>a(e.id,t),I=b(e);(0,C.useEffect)(()=>{if(!s)return;let t=!0;return y().then(()=>Promise.all([s.secretFields(e.id),s.canKeepSecrets()])).then(([e,n])=>{t&&(l(e),f(n))}),()=>{t=!1}},[s,e.id,I]);let L=JSON.stringify([e.fromVault??null,I,o]);if((0,C.useEffect)(()=>{if(!s)return;let t=!0;return y().then(()=>s.vaultAuthorized(e.id)).then(e=>t&&M(e)),()=>{t=!1}},[s,e.id,L]),!s)return null;let R=async t=>{P(null),await y();let n=await s.authorizeVaultSecret(e.id,t);`problem`in n&&P({field:t,text:n.problem===`denied`?i(`ai.vaultDenied`):n.problem===`invalid`?i(`ai.vaultIncompleteRef`):i(`ai.remoteVaultFailed`,{detail:n.problem})}),M(await s.vaultAuthorized(e.id))},B=async()=>{_(`checking`),await y(),_(await s.probe(e.id))},U=(t,n)=>{let r=Object.fromEntries(Object.entries(e.fromVault??{}).filter(([e])=>e!==t)),i=n?{...r,[t]:n}:r;F({fromVault:Object.keys(i).length?i:void 0})},W=async(t,n)=>{await y(),await s.setSecret(e.id,t,n),l(await s.secretFields(e.id))},G=async t=>{A(null),await y();let n=await s.importSecretFile(e.id,t);`problem`in n&&A({field:t,key:re[n.problem]??`ai.fileUnreadable`}),l(await s.secretFields(e.id))},K=c.includes(`tlsPfx`),q=t=>{let n=t===`header`?{type:t,name:`Authorization`,prefix:`Bearer `}:t===`basic`?{type:t,username:``}:t===`oauth`?{type:t,flow:`authorization_code`,register:!0,scopes:``}:t===`sigv4`?{type:t,region:ee(e.baseUrl)??`us-east-1`}:{type:`none`};F({auth:n})},J=t=>{let n=V[e.protocol],r=V[t],i={protocol:t,model:``};(e.baseUrl===`https://`||e.baseUrl===``||e.baseUrl===n?.baseUrl)&&(i.baseUrl=r.baseUrl||`https://`);let a=e.auth;(a.type===`none`||n&&JSON.stringify(a)===JSON.stringify(n.auth))&&(i.auth=r.auth),_(null),F(i)},Y=V[e.protocol],ae=[`azure`,`bedrock`,`vertex`,`alibaba`].includes(e.protocol),X=e.protocol===`bedrock`||e.protocol===`alibaba`,oe=t=>{let n=e.auth.type===`sigv4`?e.auth:null,r={auth:{type:`sigv4`,region:t,...n?.service?{service:n.service}:{}}};n&&e.baseUrl===H(n.region)&&/^[a-z0-9-]+$/.test(t)&&(r.baseUrl=H(t)),F(r)},Z=h&&h!==`checking`&&h.state===`ok`?h.models:[],Q=e.model&&!Z.includes(e.model)?[e.model,...Z]:Z,$=t=>t.filter(e=>v.has(e)).filter(e=>!K||e!==`tlsCert`&&e!==`tlsKey`).map(t=>(0,E.jsx)(te,{label:i(t===`privateKey`&&e.auth.type===`oauth`&&e.auth.flow===`jwt_bearer`?`ai.oauthAssertionKey`:ne[t]??`ai.remotePassword`),saved:c.includes(t),disabled:n||!u,onSave:e=>void W(t,e),onForget:()=>void W(t,null),vaults:o,fromVault:e.fromVault?.[t],onFromVault:e=>{e&&c.includes(t)&&W(t,null),U(t,e)},onFile:ie.has(t)?()=>void G(t):void 0,problem:k?.field===t?i(k.key):N?.field===t?N.text:void 0,authorized:j.includes(t),onAuthorize:()=>void R(t)},t));return(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionService`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionService`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteName`),(0,E.jsx)(`input`,{type:`text`,value:e.label,disabled:n,onChange:e=>F({label:e.target.value})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteProtocol`),(0,E.jsxs)(`select`,{value:e.protocol,"aria-label":i(`ai.remoteProtocol`),disabled:n,onChange:e=>J(e.target.value),children:[(0,E.jsx)(`option`,{value:`openai`,children:i(`ai.remoteProtocolOpenai`)}),(0,E.jsx)(`option`,{value:`anthropic`,children:`Anthropic`}),(0,E.jsx)(`option`,{value:`azure`,children:`Azure OpenAI / AI Foundry`}),(0,E.jsx)(`option`,{value:`bedrock`,children:`Amazon Bedrock`}),(0,E.jsx)(`option`,{value:`vertex`,children:`Google Vertex AI`}),(0,E.jsx)(`option`,{value:`alibaba`,children:`Alibaba Cloud Model Studio`})]})]}),Y?.hint&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(Y.hint)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.serverAddress`),(0,E.jsx)(`input`,{type:`url`,value:e.baseUrl,spellCheck:!1,disabled:n,onChange:e=>F({baseUrl:e.target.value.trim()})})]})]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionSignIn`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionSignIn`)}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteAuth`),(0,E.jsxs)(`select`,{value:e.auth.type,"aria-label":i(`ai.remoteAuth`),disabled:n,onChange:e=>q(e.target.value),children:[(0,E.jsx)(`option`,{value:`none`,children:i(`ai.remoteAuthNone`)}),(0,E.jsx)(`option`,{value:`header`,children:i(`ai.remoteAuthHeader`)}),(0,E.jsx)(`option`,{value:`basic`,children:i(`ai.remoteAuthBasic`)}),(0,E.jsx)(`option`,{value:`oauth`,children:i(`ai.remoteAuthOAuth`)}),(0,E.jsx)(`option`,{value:`sigv4`,children:i(`ai.remoteAuthSigv4`)})]})]}),e.auth.type===`header`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaderName`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.name,spellCheck:!1,disabled:n,onChange:t=>F({auth:{...e.auth,name:t.target.value.trim()}})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaderPrefix`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.prefix??``,spellCheck:!1,disabled:n,onChange:t=>F({auth:{...e.auth,prefix:t.target.value}})})]})]}),e.auth.type===`basic`&&(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteUsername`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.username,autoComplete:`off`,disabled:n,onChange:e=>F({auth:{type:`basic`,username:e.target.value}})})]}),e.auth.type===`sigv4`&&(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.awsRegion`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.region,spellCheck:!1,disabled:n,onChange:e=>oe(e.target.value.trim())})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.awsService`),(0,E.jsx)(`input`,{type:`text`,value:e.auth.service??``,placeholder:`bedrock`,spellCheck:!1,disabled:n,onChange:t=>F({auth:{type:`sigv4`,region:e.auth.region,...t.target.value.trim()?{service:t.target.value.trim()}:{}}})})]})]}),e.auth.type===`oauth`&&(0,E.jsx)(D,{connectionId:e.id,target:I,config:e.auth,disabled:n,onChange:e=>F({auth:e})}),$(S(e.auth)),!u&&(0,E.jsx)(`p`,{className:`ai-server-status`,children:i(`ai.remoteNoSecureStorage`)}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(`ai.remoteHint`)})]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionCertificate`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionCertificate`)}),(0,E.jsxs)(`label`,{className:`ai-oauth-check`,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:!!e.clientCertificate,disabled:n,onChange:e=>F({clientCertificate:e.target.checked})}),i(`ai.tlsClientCertificate`)]}),e.clientCertificate&&(0,E.jsx)(`p`,{className:`ai-server-hint`,children:i(`ai.tlsHint`)}),e.clientCertificate&&K&&(0,E.jsxs)(`div`,{className:`ai-server-field`,children:[(0,E.jsx)(`span`,{children:i(`ai.tlsPfx`)}),(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":`true`,children:i(`ai.secretFileSaved`)}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:n||!u,onClick:()=>void W(`tlsPfx`,null),children:i(`ai.remoteSecretForget`)})]}),e.clientCertificate&&$(S({type:`none`},!0).filter(e=>e.startsWith(`tls`)))]}),(0,E.jsxs)(`section`,{className:`ai-section`,"aria-label":i(`ai.sectionModel`),children:[(0,E.jsx)(`h3`,{className:`ai-section-title`,children:i(`ai.sectionModel`)}),ae?(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(e.protocol===`bedrock`?`ai.remoteBedrockModel`:e.protocol===`azure`?`ai.remoteDeployment`:`ai.serverModel`),(0,E.jsx)(`input`,{type:`text`,value:e.model??``,list:X?`ai-models-${e.id}`:void 0,spellCheck:!1,disabled:n,onChange:e=>F({model:e.target.value.trim()})}),X&&(0,E.jsx)(`datalist`,{id:`ai-models-${e.id}`,children:Z.map(e=>(0,E.jsx)(`option`,{value:e},e))})]}):(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.serverModel`),(0,E.jsxs)(`select`,{value:e.model??``,"aria-label":i(`ai.serverModel`),disabled:n||Q.length===0,onChange:e=>{F({model:e.target.value}),r()},children:[(0,E.jsx)(`option`,{value:``,disabled:!0,children:i(`ai.serverPickModel`)}),Q.map(e=>(0,E.jsx)(`option`,{value:e,children:e},e))]})]}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:n||h===`checking`,onClick:()=>void B(),children:i(h===`checking`?`ai.serverChecking`:`ai.serverCheck`)}),h&&h!==`checking`&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-status--${h.state}`,role:`status`,"data-state":h.state,children:h.state===`ok`?h.models.length>0?i(`ai.serverOk`,{count:h.models.length}):i(`ai.serverOkEmpty`):z(i,h.state,e.baseUrl,{status:h.state===`http`?h.status:void 0,problem:h.state===`invalid`?h.problem:h.state===`vault`?h.detail:void 0})})]})]}),(0,E.jsxs)(`section`,{className:`ai-section ai-section--folded`,children:[(0,E.jsx)(`button`,{type:`button`,className:`ai-section-toggle`,"aria-expanded":T,onClick:()=>O(!T),children:i(`ai.sectionAdvanced`)}),T&&(0,E.jsx)(E.Fragment,{children:(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[i(`ai.remoteHeaders`),(0,E.jsx)(`textarea`,{rows:2,value:x,spellCheck:!1,disabled:n,onChange:e=>w(e.target.value),onBlur:()=>F({headers:g(x)})})]})})]})]})}function te({label:e,saved:n,disabled:r,onSave:i,onForget:a,vaults:o,fromVault:s,onFromVault:c,onFile:l,problem:u,authorized:d=!1,onAuthorize:f}){let p=t(),[m,h]=(0,C.useState)(``),g=()=>{m&&(i(m),h(``))},_=s&&o.find(e=>e.id===s.vault),v=_?.vault?.kind===`hashicorp`,y=(0,C.useId)();return(0,E.jsxs)(`div`,{className:`ai-server-field ai-secret`,children:[(0,E.jsxs)(`div`,{className:`ai-secret-head`,children:[!_&&!l?(0,E.jsx)(`label`,{htmlFor:y,children:e}):(0,E.jsx)(`span`,{children:e}),o.length>0&&(0,E.jsxs)(`select`,{className:`ai-secret-source`,value:_?_.id:``,"aria-label":`${e} · ${p(`ai.secretSource`)}`,disabled:r,onChange:e=>c(e.target.value?{vault:e.target.value,name:``}:void 0),children:[(0,E.jsx)(`option`,{value:``,children:p(`ai.secretKeptHere`)}),o.map(e=>(0,E.jsx)(`option`,{value:e.id,children:p(`ai.secretVaultOption`,{vault:e.label||e.baseUrl})},e.id))]})]}),_&&s?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`div`,{className:`ai-remote-row`,children:[(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[p(v?`ai.vaultSecretPath`:`ai.vaultSecretName`),(0,E.jsx)(`input`,{type:`text`,value:s.name,spellCheck:!1,disabled:r,onChange:e=>c({...s,name:e.target.value.trim()})})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[p(v?`ai.vaultSecretField`:`ai.vaultSecretKey`),(0,E.jsx)(`input`,{type:`text`,value:s.key??``,spellCheck:!1,placeholder:v?`value`:``,disabled:r,onChange:e=>c({...s,key:e.target.value.trim()||void 0})})]})]}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:p(`ai.vaultSecretHint`)}),(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":d||void 0,children:p(d?`ai.vaultAuthorizedYes`:`ai.vaultAuthorizedNo`)}),(0,E.jsx)(`div`,{className:`ai-secret-actions`,children:(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r||!s.name,"aria-label":`${p(`ai.vaultAuthorize`)} ${e}`,onClick:f,children:p(`ai.vaultAuthorize`)})})]}):l?(0,E.jsx)(`p`,{className:`ai-secret-file`,"data-saved":n||void 0,children:p(n?`ai.secretFileSaved`:`ai.secretNoFile`)}):(0,E.jsx)(`input`,{id:y,type:`password`,value:m,autoComplete:`off`,placeholder:n?p(`ai.remoteSecretSaved`):``,disabled:r,"data-saved":n||void 0,onChange:e=>h(e.target.value),onBlur:g,onKeyDown:e=>{e.key===`Enter`&&g()}}),!_&&(l||n)&&(0,E.jsxs)(`div`,{className:`ai-secret-actions`,children:[l&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r,"aria-label":`${p(`ai.secretFromFile`)} ${e}`,onClick:l,children:p(`ai.secretFromFile`)}),n&&(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:r,onClick:a,children:p(`ai.remoteSecretForget`)})]}),u&&(0,E.jsx)(`p`,{className:`ai-server-status`,role:`status`,children:u})]})}var ne={key:`ai.remoteKey`,password:`ai.remotePassword`,clientSecret:`ai.oauthClientSecret`,privateKey:`ai.oauthPrivateKey`,tlsCert:`ai.tlsCert`,tlsKey:`ai.tlsKey`,tlsPassphrase:`ai.tlsPassphrase`,tlsCa:`ai.tlsCa`,accessKeyId:`ai.awsAccessKeyId`,secretAccessKey:`ai.awsSecretAccessKey`,sessionToken:`ai.awsSessionToken`},re={"too-large":`ai.fileTooLarge`,empty:`ai.fileEmpty`,"not-certificate":`ai.fileNotCertificate`,"not-key":`ai.fileNotKey`},ie=new Set([`tlsCert`,`tlsKey`,`tlsCa`,`privateKey`]);function W(){let e=i(e=>e.aiTurns),n=i(e=>e.aiModel),r=i(e=>e.aiModelStatus),a=i(e=>e.setAiModel),o=i(e=>e.aiGenerate),s=i(e=>e.aiCancel),c=i(e=>e.aiUndoTurn),l=i(e=>e.aiClear),u=d(e=>e.engine),p=d(e=>e.setEngine),m=d(e=>e.server),g=d(e=>e.connections.find(t=>t.id===e.connectionId)??null),[v,y]=(0,C.useState)(``),b=t(),x=f(),S=(e[e.length-1]?.state??null)===`working`,w=u===`server`,D=u===`remote`,O=u===`browser`,k=w?m.model!==``:!D||!!g?.model,A=[..._()?[`browser`]:[],`server`,...h()?[`remote`]:[]],j=(0,C.useRef)(null),M=()=>{let e=j.current?.querySelector(`:scope > details.ai-server`);e&&(e.open=!1,e.querySelector(`summary`)?.focus())},N=i(e=>e.kind),P=i(e=>e.nodes),F=(0,C.useMemo)(()=>T(N,P),[N,P]),I=(0,C.useRef)(null),L=()=>{v.trim()&&k&&(o(v),y(``))};return(0,E.jsxs)(`div`,{className:`ai-panel ai-chat`,children:[(0,E.jsxs)(`div`,{className:`ai-header`,children:[A.length>1&&(0,E.jsxs)(`label`,{className:`ai-model`,children:[b(`ai.engine`),(0,E.jsxs)(`select`,{value:u,"aria-label":b(`ai.engine`),disabled:S,onChange:e=>p(e.target.value),children:[A.includes(`browser`)&&(0,E.jsx)(`option`,{value:`browser`,children:b(`ai.engineBrowser`)}),(0,E.jsx)(`option`,{value:`server`,children:b(`ai.engineServer`)}),A.includes(`remote`)&&(0,E.jsx)(`option`,{value:`remote`,children:b(`ai.engineRemote`)})]})]}),O&&(0,E.jsxs)(`label`,{className:`ai-model`,children:[b(`ai.model`),(0,E.jsxs)(`select`,{value:n,"aria-label":b(`ai.model`),disabled:S,onChange:e=>a(e.target.value),children:[(0,E.jsx)(`option`,{value:`qwen2.5-coder-0.5b`,children:b(`ai.modelSmall`)}),(0,E.jsx)(`option`,{value:`qwen2.5-coder-1.5b`,children:b(`ai.modelLarge`)})]})]}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action ai-new`,title:b(`ai.newHint`),disabled:S||e.length===0,onClick:l,children:b(`ai.new`)})]}),(w||D)&&(0,E.jsxs)(`div`,{className:`ai-settings`,ref:j,children:[w&&(0,E.jsx)(J,{disabled:S}),D&&(0,E.jsx)(B,{disabled:S}),(0,E.jsx)(`button`,{type:`button`,className:`editor-action ai-settings-done`,onClick:M,children:b(`ai.settingsDone`)})]}),O&&x===`local`&&r.state!==`idle`&&(0,E.jsxs)(`div`,{className:`ai-model-status ai-model-status--${r.state}`,role:`status`,"data-device":r.state===`ready`?r.device:void 0,children:[r.state===`downloading`&&(0,E.jsxs)(`span`,{children:[b(`ai.downloading`,{percent:r.percent===null?`…`:String(r.percent)}),r.file?` — ${r.file}`:``]}),r.state===`warming`&&(0,E.jsx)(`span`,{children:b(`ai.warming`)}),r.state===`ready`&&(0,E.jsx)(`span`,{children:b(`ai.ready`)}),r.state===`error`&&(0,E.jsx)(`span`,{className:`ai-model-error`,children:b(`ai.localError`,{error:r.error})})]}),(0,E.jsxs)(`div`,{className:`ai-thread`,tabIndex:0,role:`region`,"aria-label":b(`ai.thread`),children:[e.length===0&&(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(`p`,{className:`ai-seed`,children:b(`ai.seed`)}),(0,E.jsxs)(`div`,{className:`ai-suggestions`,role:`group`,"aria-label":b(`ai.suggestTitle`),children:[(0,E.jsx)(`p`,{className:`ai-suggestions-title`,children:b(`ai.suggestTitle`)}),F.map(e=>{let t=b(e.key,e.params);return(0,E.jsx)(`button`,{type:`button`,className:`ai-suggestion`,disabled:S||!k,onClick:()=>{y(t),I.current?.focus()},children:t},t)})]})]}),e.map(e=>(0,E.jsxs)(`div`,{className:`ai-turn`,children:[(0,E.jsx)(`div`,{className:`ai-bubble ai-user`,children:e.request}),(0,E.jsxs)(`div`,{className:`ai-bubble ai-assistant ${e.state}`,children:[e.state===`working`&&(0,E.jsxs)(`p`,{className:`ai-status`,role:`status`,children:[(0,E.jsx)(`span`,{className:`ai-spinner`,"aria-hidden":`true`}),e.attempts>1?b(`ai.retrying`):b(`ai.generating`)]}),e.state===`error`&&(0,E.jsx)(`p`,{className:`ai-error`,children:!e.reason||e.reason===`http`?b(`ai.failed`,{error:e.error??``}):D?z(b,e.reason,g?.baseUrl??``,{problem:e.error??void 0}):R(b,e.reason,m.baseUrl)}),e.state===`done`&&(0,E.jsx)(K,{changes:e.changes}),e.state===`done`&&e.codeBefore!==null&&(0,E.jsx)(`div`,{className:`ai-actions`,children:(0,E.jsx)(`button`,{type:`button`,title:b(`ai.undoTurnHint`),onClick:()=>c(e.id),children:b(`ai.undoTurn`)})})]})]},e.id))]}),(0,E.jsxs)(`div`,{className:`ai-composer`,children:[(0,E.jsx)(`textarea`,{ref:I,className:`ai-request`,rows:2,value:v,placeholder:b(k?`ai.placeholder`:D?`ai.remoteNeedsModel`:`ai.serverNeedsModel`),disabled:S||!k,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),L())}}),S?(0,E.jsx)(`button`,{type:`button`,className:`primary ai-send`,title:b(`ai.cancelHint`),onClick:s,children:b(`ai.cancel`)}):(0,E.jsx)(`button`,{type:`button`,className:`primary ai-send`,title:b(`ai.sendHint`),disabled:!v.trim()||!k,onClick:L,children:b(`ai.send`)})]})]})}var G=8;function K({changes:e}){let n=t(),r=i(e=>e.aiShowChange);if(e===void 0)return(0,E.jsx)(`p`,{className:`ai-applied`,role:`status`,children:n(`ai.applied`)});if(e===null||!o(e))return(0,E.jsx)(`p`,{className:`ai-applied`,role:`status`,children:n(e===null?`ai.changesRedrawn`:`ai.changesNone`)});let a=new Set(e.removedNodes.map(e=>e.id)),s=e=>e.label?`${e.from} → ${e.to} (${e.label})`:`${e.from} → ${e.to}`,c=[...e.addedNodes.map(e=>({kind:`added`,text:e.label,target:{node:e.id}})),...e.addedEdges.map(e=>({kind:`added`,text:s(e),target:{source:e.source,target:e.target}})),...e.renamedNodes.map(e=>({kind:`renamed`,text:`${e.was} → ${e.label}`,target:{node:e.id}})),...e.removedNodes.map(e=>({kind:`removed`,text:e.label})),...e.removedEdges.filter(e=>!a.has(e.source)&&!a.has(e.target)).map(e=>({kind:`removed`,text:s(e)}))],l={added:`+`,renamed:`✎`,removed:`−`},u={added:n(`ai.changeAdded`),renamed:n(`ai.changeRenamed`),removed:n(`ai.changeRemoved`)};return(0,E.jsxs)(`div`,{className:`ai-changes`,role:`status`,children:[(0,E.jsx)(`p`,{className:`ai-changes-title`,children:n(`ai.changesTitle`)}),(0,E.jsx)(`ul`,{children:c.slice(0,G).map((e,t)=>(0,E.jsxs)(`li`,{className:`ai-change ai-change--${e.kind}`,children:[(0,E.jsx)(`span`,{className:`ai-change-mark`,"aria-hidden":`true`,children:l[e.kind]}),(0,E.jsxs)(`span`,{className:`visually-hidden`,children:[u[e.kind],`: `]}),e.target?(0,E.jsx)(`button`,{type:`button`,className:`ai-change-link`,title:n(`ai.changeShow`),onClick:()=>r(e.target),children:e.text}):(0,E.jsx)(`span`,{className:`ai-change-text`,children:e.text})]},t))}),c.length>G&&(0,E.jsx)(`p`,{className:`ai-changes-more`,children:n(`ai.changesMore`,{count:c.length-G})})]})}async function q(e){let t=m();if(!t||!c(e.baseUrl))return u(e);await y();let n=await t.probe(x);return n.state===`invalid`||n.state===`vault`?{state:`not-local`}:n}function J({disabled:e}){let n=d(e=>e.server),r=d(e=>e.setServer),[i,a]=(0,C.useState)(n.baseUrl),[o,c]=(0,C.useState)(`checking`),u=t(),f=async e=>{c(`checking`),c(await q({...d.getState().server,baseUrl:e}))};(0,C.useEffect)(()=>{let e=!0;return q(d.getState().server).then(t=>{e&&c(t)}),()=>{e=!1}},[]);let p=e=>{let t=e.trim();a(t),t!==n.baseUrl&&(r({baseUrl:t,model:``}),f(t))},m=o!==`checking`&&o.state===`ok`?o.models:[],h=n.model&&!m.includes(n.model)?[n.model,...m]:m,g=o!==`checking`&&o.state===`ok`?o.remote:[],_=e=>g.includes(e)||/[-:]cloud$/i.test(e);return(0,E.jsxs)(`details`,{className:`ai-server`,open:!n.model,children:[(0,E.jsx)(`summary`,{children:u(`ai.serverSummary`,{model:n.model||u(`ai.serverNoModel`)})}),(0,E.jsx)(`p`,{className:`ai-server-hint`,children:u(`ai.serverHint`)}),(0,E.jsx)(`div`,{className:`ai-server-presets`,children:Object.keys(s).map(t=>(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,"aria-pressed":l(n.baseUrl)===t,disabled:e,onClick:()=>p(s[t].baseUrl),children:s[t].label},t))}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[u(`ai.serverAddress`),(0,E.jsx)(`input`,{type:`url`,value:i,spellCheck:!1,disabled:e,onChange:e=>a(e.target.value),onBlur:e=>p(e.target.value),onKeyDown:e=>{e.key===`Enter`&&p(e.currentTarget.value)}})]}),(0,E.jsxs)(`label`,{className:`ai-server-field`,children:[u(`ai.serverModel`),(0,E.jsxs)(`select`,{value:n.model,"aria-label":u(`ai.serverModel`),disabled:e||h.length===0,onChange:e=>r({model:e.target.value}),children:[(0,E.jsx)(`option`,{value:``,disabled:!0,children:u(`ai.serverPickModel`)}),h.map(e=>(0,E.jsx)(`option`,{value:e,children:_(e)?u(`ai.serverCloudTag`,{model:e}):e},e))]})]}),n.model&&_(n.model)&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-cloud`,role:`note`,children:u(`ai.serverCloudWarning`)}),(0,E.jsxs)(`div`,{className:`ai-server-check`,children:[(0,E.jsx)(`button`,{type:`button`,className:`editor-action`,disabled:e||o===`checking`,onClick:()=>void f(n.baseUrl),children:u(o===`checking`?`ai.serverChecking`:`ai.serverCheck`)}),o!==`checking`&&(0,E.jsx)(`p`,{className:`ai-server-status ai-server-status--${o.state}`,role:`status`,"data-state":o.state,children:o.state===`ok`?o.models.length>0?u(`ai.serverOk`,{count:o.models.length}):u(`ai.serverOkEmpty`):R(u,o.state,n.baseUrl,o.state===`http`?o.status:void 0)})]})]})}export{W as AiPanel};
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-eJASdD4X.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as r}from"./src-7lQuYpZB.js";import"./chunk-DSNLSHJZ-Cm_KIxT6.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-uZWzwKHo.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-Ckh9oFVq.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-eJASdD4X.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{t as r}from"./src-7lQuYpZB.js";import"./chunk-DSNLSHJZ-Cm_KIxT6.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-jYqcw7lJ.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-Bh6iUGiO.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};