@arcgis/portal-components 5.2.0-next.14 → 5.2.0-next.141
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/LICENSE.md +4 -2
- package/README.md +2 -2
- package/dist/cdn/23X56P4K.js +2 -0
- package/dist/cdn/25XJ66JO.js +2 -0
- package/dist/cdn/2GBRZSEC.js +2 -0
- package/dist/cdn/2I5SLQC5.js +2 -0
- package/dist/cdn/3R4PPD5N.js +2 -0
- package/dist/cdn/3SO52LKS.js +2 -0
- package/dist/cdn/456JKNCU.js +2 -0
- package/dist/cdn/4SHXR62X.js +2 -0
- package/dist/cdn/4TQWZ2KF.js +9 -0
- package/dist/cdn/4ZTWQN6Q.js +2 -0
- package/dist/cdn/55FL7WQV.js +2 -0
- package/dist/cdn/5EFYJYWM.js +2 -0
- package/dist/cdn/5FDUO7J4.js +2 -0
- package/dist/cdn/5FOWUL6I.js +2 -0
- package/dist/cdn/5YDITHQA.js +3 -0
- package/dist/cdn/6BMWSGLA.js +2 -0
- package/dist/cdn/6EY5GHKE.js +2 -0
- package/dist/cdn/6KVA4AKM.js +2 -0
- package/dist/cdn/6LST5YZY.js +2 -0
- package/dist/cdn/6MWSS5YF.js +2 -0
- package/dist/cdn/6TO2BYXU.js +2 -0
- package/dist/cdn/7NK6UF47.js +2 -0
- package/dist/cdn/7NQY5QJK.js +2 -0
- package/dist/cdn/7TGCBYRK.js +2 -0
- package/dist/cdn/ADZAKBOJ.js +2 -0
- package/dist/cdn/AE574B3G.js +2 -0
- package/dist/cdn/AWCYG2JJ.js +2 -0
- package/dist/cdn/B3NVWHCS.js +2 -0
- package/dist/cdn/B4YHTYJB.js +2 -0
- package/dist/cdn/BEAUY47J.js +2 -0
- package/dist/cdn/BIXJGL7B.js +2 -0
- package/dist/cdn/BRJE3G3H.js +2 -0
- package/dist/cdn/C5U7YKVI.js +2 -0
- package/dist/cdn/C5VUNN4M.js +2 -0
- package/dist/cdn/CFBSBZSS.js +2 -0
- package/dist/cdn/CJHR4UK5.js +2 -0
- package/dist/cdn/CVOWIH4J.js +2 -0
- package/dist/cdn/CWSEBETE.js +4 -0
- package/dist/cdn/D6QHNXEH.js +2 -0
- package/dist/cdn/{HIRM34QB.js → D7LRCAK4.js} +1 -1
- package/dist/cdn/DF5GVVDW.js +2 -0
- package/dist/cdn/DIKRXF22.js +2 -0
- package/dist/cdn/DKIYHE4A.js +2 -0
- package/dist/cdn/E3FQ4QWE.js +2 -0
- package/dist/cdn/F3ODJVJC.js +2 -0
- package/dist/cdn/FFLIAQOL.js +2 -0
- package/dist/cdn/FQOOFBPI.js +2 -0
- package/dist/cdn/FQYC25GN.js +2 -0
- package/dist/cdn/FSACXOM3.js +68 -0
- package/dist/cdn/FTKD53UG.js +209 -0
- package/dist/cdn/G6WPLOLV.js +2 -0
- package/dist/cdn/GEZH4D32.js +2 -0
- package/dist/cdn/GTZ4LKEQ.js +2 -0
- package/dist/cdn/ILDTKRON.js +2 -0
- package/dist/cdn/J537SBGI.js +2 -0
- package/dist/cdn/JUDF3TYJ.js +2 -0
- package/dist/cdn/KC4FTTKP.js +2 -0
- package/dist/cdn/{QJ2UHWPU.js → KIKEE2KY.js} +1 -1
- package/dist/cdn/KOLH76KG.js +2 -0
- package/dist/cdn/KYNL256E.js +2 -0
- package/dist/cdn/LCO2BWDK.js +2 -0
- package/dist/cdn/LNWWUPFK.js +2 -0
- package/dist/cdn/LP4IB3PV.js +2 -0
- package/dist/cdn/LRHPL6B5.js +2 -0
- package/dist/cdn/LYOR4B2O.js +2 -0
- package/dist/cdn/MCX22B23.js +2 -0
- package/dist/cdn/MHNYLHFR.js +2 -0
- package/dist/cdn/MQISQ7P3.js +2 -0
- package/dist/cdn/MY7AYBBR.js +2 -0
- package/dist/cdn/NDRCB2K3.js +2 -0
- package/dist/cdn/NICTB76A.js +2 -0
- package/dist/cdn/NXFE6R2N.js +2 -0
- package/dist/cdn/O5LFDRK2.js +2 -0
- package/dist/cdn/OJNU7H3F.js +2 -0
- package/dist/cdn/OKUI3HQ4.js +2 -0
- package/dist/cdn/{DBKSQGEI.js → OQGUCK3G.js} +1 -1
- package/dist/cdn/OUFIJDIW.js +2 -0
- package/dist/cdn/OV5O7YP4.js +2 -0
- package/dist/cdn/QBV7VDQK.js +2 -0
- package/dist/cdn/QCOJMMT3.js +2 -0
- package/dist/cdn/QDWOQBO3.js +3 -0
- package/dist/cdn/QKBGX2OY.js +2 -0
- package/dist/cdn/QKK6N2AN.js +2 -0
- package/dist/cdn/QNCMFQSA.js +2 -0
- package/dist/cdn/QS3GXAIH.js +2 -0
- package/dist/cdn/QSAZVVVL.js +2 -0
- package/dist/cdn/QUOPWSRC.js +2 -0
- package/dist/cdn/QYMSY57N.js +2 -0
- package/dist/cdn/R3QN5WF2.js +2 -0
- package/dist/cdn/R74ZHFA6.js +2 -0
- package/dist/cdn/RBGARTND.js +2 -0
- package/dist/cdn/RUB2GDBE.js +2 -0
- package/dist/cdn/SG7Z5VLB.js +2 -0
- package/dist/cdn/T2HQNZ36.js +2 -0
- package/dist/cdn/T3RJKB2A.js +2 -0
- package/dist/cdn/TJYPEMON.js +2 -0
- package/dist/cdn/UGRFT75G.js +2 -0
- package/dist/cdn/UKHCSMA4.js +2 -0
- package/dist/cdn/UQKT5JQZ.js +2 -0
- package/dist/cdn/USGROSML.js +2 -0
- package/dist/cdn/UTA2UBBS.js +2 -0
- package/dist/cdn/UZCHLKLO.js +2 -0
- package/dist/cdn/UZLQALHY.js +2 -0
- package/dist/cdn/V5YXPHYD.js +2 -0
- package/dist/cdn/VMQIDO4Z.js +2 -0
- package/dist/cdn/WDMNL6PJ.js +2 -0
- package/dist/cdn/X4G32AIG.js +2 -0
- package/dist/cdn/XEK22IDA.js +2 -0
- package/dist/cdn/XKC6SPS4.js +2 -0
- package/dist/cdn/XOFCMJBQ.js +150 -0
- package/dist/cdn/XROCYFKH.js +2 -0
- package/dist/cdn/{5VHBNEN3.js → XUPYBBRI.js} +1 -1
- package/dist/cdn/Y3YIMI2Z.js +463 -0
- package/dist/cdn/YG5VQATB.js +2 -0
- package/dist/cdn/YUQFNMEZ.js +2 -0
- package/dist/cdn/YVKSTDL6.js +2 -0
- package/dist/cdn/ZAIRH5DL.js +2 -0
- package/dist/cdn/ZSILF72K.js +2 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-account-switcher/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-add-gps-metadata/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ar.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.bg.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.bs.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ca.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.cs.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.da.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.de.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.el.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.en.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.es.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.et.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.fi.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.fr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.he.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.hr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.hu.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.id.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.it.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ja.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ko.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.lt.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.lv.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.nl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.no.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pt-BR.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pt-PT.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ro.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ru.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sk.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sv.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.th.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.tr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.uk.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.vi.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-CN.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-HK.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-TW.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ar.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.bg.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.bs.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ca.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.cs.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.da.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.de.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.el.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.es.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.et.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.fi.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.fr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.he.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.hr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.hu.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.id.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.it.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ja.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ko.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.lt.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.lv.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.nl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.no.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pt-BR.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pt-PT.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ro.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ru.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sk.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sl.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sv.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.th.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.tr.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.uk.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.vi.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-CN.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-HK.json +1 -1
- package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-TW.json +1 -1
- package/dist/cdn/assets/portal-browser/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-browser/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-delete-items/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-delete-items-review/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-entity-picker/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-group-badges/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-group-browser/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.en.json +1 -1
- package/dist/cdn/assets/portal-group-card/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-group-card/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-item-badges/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-item-card/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-item-favorite/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-item-thumbnail/administrativereport.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/analysismodel.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/apacheparquet.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/apikey.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/applicationtheme.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/bigdataanalytic.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/classificationschema.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/classifierdefinition.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/dashboards.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/dataengineeringmodel.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/dataengineeringworkbook.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/datapipeline.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/deeplearningpackage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/deeplearningstudioproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/default.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/dictionarystyle.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/discussion.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/earthconfiguration.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/excaliburimageryproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/experiencebuilderwidget.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/experiencebuilderwidgetpackage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/feed.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/gaussiansplatlayer.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/geodataservice.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubevent.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubinitiative.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubinitiativetemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubpage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/hubsite.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/imagerylayer.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/indoor-positioning-data-service.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/insightsscript.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/insightstheme.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/insightsworkbookpackage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/investigation.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/kernelgatewayconnection.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/knowledgegraph.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/knowledgegraphconfiguration.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/knowledgegraphlayer.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/knowledgestudio.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/linkchart.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/locationtrackingservice.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/mapshowcase.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/mediaservice.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/mission.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/missionreport.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/missiontemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/mobileapp.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/mobilescenepackage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/notebook.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/notebookcodesnippets.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/notebookwebtool.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/opsdashboard.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/orthomappingproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/orthomappingtemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/pro-presentation.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/propackage.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/proreport.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/proreporttemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/quickcaptureproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/rasterfunctiontemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/realitymappingproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/realtimeanalytic.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/scene.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/serviceconnection.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/solution.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/spectrallibrary.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/storymap.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/storymapcollection.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/storymaptheme.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/style.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/suitabilitymodel.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/survey123addin.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/tiledimagerylayer.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/urbanmodel.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/urbanproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/webapp.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/webexperience.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/webexperiencetemplate.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/webtool.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/workflow.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/workforceproject.avif +0 -0
- package/dist/cdn/assets/portal-item-thumbnail/xrexperience.avif +0 -0
- package/dist/cdn/assets/portal-item-type/icons/360vr16.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/360vr32.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/applicationtheme16.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/applicationtheme32.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/insightstheme16.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/insightstheme32.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/knowledgegraphconfiguration16.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/knowledgegraphconfiguration32.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/knowledgegraphlayer16.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/knowledgegraphlayer32.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/layout16.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/layout32.svg +1 -0
- package/dist/cdn/assets/portal-item-type/icons/missiontemplate16.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/missiontemplate32.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/propresentation16.svg +0 -0
- package/dist/cdn/assets/portal-item-type/icons/propresentation32.svg +0 -0
- package/dist/cdn/assets/portal-item-type/t9n/messages.ar.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.bg.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.bs.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.ca.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.cs.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.da.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.de.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.el.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.es.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.et.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.fi.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.fr.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.he.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.hr.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.hu.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.id.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.it.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.ja.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.ko.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.lt.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.lv.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.nl.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.no.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.pl.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.pt-BR.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.pt-PT.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.ro.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.ru.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.sk.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.sl.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.sr.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.sv.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.th.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.tr.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.uk.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.vi.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.zh-CN.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.zh-HK.json +1 -1
- package/dist/cdn/assets/portal-item-type/t9n/messages.zh-TW.json +1 -1
- package/dist/cdn/assets/portal-navigation/apps/api-for-python.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/appstudio.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcade.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-360-vr.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-earth.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-enterprise.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-experience-builder.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-geoanalytics.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-hub.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-online.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-pro.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-reality-studio.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/arcgis-urban.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/blank.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/business-analyst.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/city-engine.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/collector.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/community-analyst.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/configurable-apps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/dashboards-beta.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/dashboards-classic.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/data-pipelines.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/deeplearningstudio.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/demographics.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/drone2map.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/esri-events.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/essential-apps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/excalibur.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/explorer.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/field-apps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/fieldmaps-beta.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/fieldmaps-ea.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/fieldmaps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/generic-app.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/geobim.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/geoplanner.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/grid-view-9.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/indoor.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/indoors.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/insights.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/instant-apps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/ips.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/knowledge-studio.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/living-atlas.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/location-platform.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/map-maker.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/map-viewer-beta.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/map-viewer-classic.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/map-viewer.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/maps-adobe-cloud.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/maps-for-office.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/maps-for-power-bi.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/maps-for-sharepoint.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/marketplace.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/mission.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/monitor.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/navigator.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/notebook.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/office-apps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/open-data.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/operations-dashboard.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/ortho-maker.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/pro-extension.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/quick-capture.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/redistricting.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/runtime.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/scene-viewer.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/sites.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/solutions.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/story-maps.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/streetmap-premium.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/survey123.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/svg-app-circle.svg +1 -0
- package/dist/cdn/assets/portal-navigation/apps/svg-app-icon.svg +1 -0
- package/dist/cdn/assets/portal-navigation/apps/track-viewer.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/user-type-extension-online.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/user-type-extension.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/vector-tile-style-editor.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/velocity.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/web-app-builder.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/web-editor.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/web-mapping.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/workflow-manager-beta.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/workflow-manager.avif +0 -0
- package/dist/cdn/assets/portal-navigation/apps/workforce.avif +0 -0
- package/dist/cdn/assets/portal-navigation/product-logos/advanced-editing-user-type-extension-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arc-hydro-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-360-vr-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-api-for-python-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-appstudio-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-arcade-expression-language-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-business-analyst-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-cityengine-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-collector-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-community-analyst-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-connectors-for-power-automate-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-dashboards-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-data-interoperability-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-data-pipelines-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-data-reviewer-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-deep-learning-studio-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-drone2map-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-earth-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-enterprise-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-excalibur-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-excalibur-gray-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-experience-builder-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-explorer-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-field-maps-designer-ea-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-field-maps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-flight-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-autocad-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-autodesk-forma-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-developers-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-excel-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-microsoft-365-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-power-apps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-for-teams-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-geoanalytics-engine-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-geobim-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-geoplanner-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-hub-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-image-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-indoors-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-insights-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-instant-apps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-knowledge-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-living-atlas-of-the-world-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-location-platform-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-logo-glyph-32.svg +76 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-for-adobe-creative-cloud-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-for-power-bi-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-for-sharepoint-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-sdk-for-javascript-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-sdks-for-game-engines-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maps-sdks-for-native-apps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-maritime-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-marketplace-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-mission-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-monitor-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-monitor-white-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-navigator-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-notebooks-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-online-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-open-data-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-open-source-apps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-ortho-maker-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-parcel-fabric-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-pipeline-referencing-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-pro-for-intelligence-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-pro-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-quickcapture-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-reality-studio-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-roads-and-highways-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-sites-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-solutions-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-storymaps-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-streetmap-premium-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-survey123-connect-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-survey123-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-tracker-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-urban-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-utility-network-management-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-velocity-glyph-32.svg +6 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-web-appbuilder-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-web-editor-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-workflow-manager-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-workforce-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/arcgis-world-geocoder-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/calcite-design-system-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-community-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-demographics-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-events-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-offline-documentation-center--glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-redistricting-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-reports-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/esri-support-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/map-viewer-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/sceneviewer-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/site-scan-for-arcgis-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/site-scan-for-arcgis-le-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/vector-tile-style-editor-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/product-logos/xr-viewer-glyph-32.svg +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-navigation/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-related-items-list-item/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.bg.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.cs.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.de.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.el.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.et.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.fi.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.he.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.hu.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.it.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ja.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.lt.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.nl.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.no.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.pt-BR.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sk.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sv.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.vi.json +1 -1
- package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.zh-CN.json +1 -1
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-review-related-items/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-sublayer-type/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/portal-user-popup/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/index.js +1 -1
- package/dist/cdn/main.css +1 -1
- package/dist/chunks/dom.js +41 -0
- package/dist/chunks/fieldAddDelete.js +2 -2
- package/dist/chunks/functional.js +9 -0
- package/dist/chunks/functionalities.js +6 -4
- package/dist/chunks/groups.js +61 -7
- package/dist/chunks/groups2.js +11 -0
- package/dist/chunks/icons.js +11 -0
- package/dist/chunks/info.js +179 -0
- package/dist/chunks/item.js +33 -123
- package/dist/chunks/item2.js +124 -78
- package/dist/chunks/itemThumbnail.js +193 -0
- package/dist/chunks/items.js +16 -0
- package/dist/chunks/loadClassificationData.js +20 -20
- package/dist/chunks/portal-account-switcher.js +6 -0
- package/dist/chunks/portal-browser-filter-date.js +63 -0
- package/dist/chunks/portal-browser.js +220 -0
- package/dist/chunks/portal-delete-items-review.js +58 -0
- package/dist/chunks/portal-item-badge.js +352 -0
- package/dist/chunks/portal-related-items-list-item.js +6 -0
- package/dist/chunks/portal.js +66 -23
- package/dist/chunks/portal2.js +59 -0
- package/dist/chunks/query.js +159 -0
- package/dist/chunks/request.js +87 -0
- package/dist/chunks/requests.js +92 -44
- package/dist/chunks/services.js +17 -0
- package/dist/chunks/store.js +18 -0
- package/dist/chunks/string.js +42 -0
- package/dist/chunks/ui.js +9 -0
- package/dist/chunks/url.js +17 -0
- package/dist/chunks/user.js +99 -4
- package/dist/chunks/user2.js +13 -107
- package/dist/chunks/users.js +7 -0
- package/dist/chunks/utils.js +33 -0
- package/dist/chunks/utils2.js +88 -0
- package/dist/chunks/utils3.js +664 -0
- package/dist/chunks/verified.js +40 -0
- package/dist/components/arcgis-portal-account-switcher/customElement.d.ts +159 -0
- package/dist/components/arcgis-portal-account-switcher/customElement.js +416 -0
- package/dist/components/arcgis-portal-account-switcher/index.d.ts +1 -0
- package/dist/components/arcgis-portal-account-switcher/index.js +11 -0
- package/dist/components/arcgis-portal-account-switcher/types.d.ts +26 -0
- package/dist/components/arcgis-portal-account-switcher-accounts/customElement.d.ts +144 -0
- package/dist/components/arcgis-portal-account-switcher-accounts/customElement.js +31 -0
- package/dist/components/arcgis-portal-account-switcher-accounts/index.d.ts +1 -0
- package/dist/components/arcgis-portal-account-switcher-accounts/index.js +5 -0
- package/dist/components/arcgis-portal-account-switcher-list/customElement.d.ts +149 -0
- package/dist/components/arcgis-portal-account-switcher-list/customElement.js +100 -0
- package/dist/components/arcgis-portal-account-switcher-list/index.d.ts +1 -0
- package/dist/components/arcgis-portal-account-switcher-list/index.js +6 -0
- package/dist/components/arcgis-portal-account-switcher-signout/customElement.d.ts +146 -0
- package/dist/components/arcgis-portal-account-switcher-signout/customElement.js +29 -0
- package/dist/components/arcgis-portal-account-switcher-signout/index.d.ts +1 -0
- package/dist/components/arcgis-portal-account-switcher-signout/index.js +6 -0
- package/dist/components/arcgis-portal-add-gps-metadata/customElement.d.ts +58 -0
- package/dist/components/arcgis-portal-add-gps-metadata/customElement.js +1330 -0
- package/dist/components/arcgis-portal-add-gps-metadata/index.d.ts +1 -0
- package/dist/components/arcgis-portal-add-gps-metadata/index.js +7 -0
- package/dist/components/arcgis-portal-ai-assistant/agents/portalRouteKeys.d.ts +41 -0
- package/dist/components/arcgis-portal-ai-assistant/agents/types.d.ts +85 -9
- package/dist/components/arcgis-portal-ai-assistant/customElement.d.ts +61 -1
- package/dist/components/arcgis-portal-ai-assistant/customElement.js +2092 -716
- package/dist/components/arcgis-portal-ai-assistant/data/capability-registries/types.d.ts +45 -0
- package/dist/components/arcgis-portal-ai-assistant/index.js +0 -1
- package/dist/components/arcgis-portal-browser/customElement.d.ts +238 -0
- package/dist/components/arcgis-portal-browser/customElement.js +16 -0
- package/dist/components/arcgis-portal-browser/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser/index.js +6 -0
- package/dist/components/arcgis-portal-browser/utils/store.d.ts +35 -0
- package/dist/components/arcgis-portal-browser/utils/types.d.ts +24 -0
- package/dist/components/arcgis-portal-browser-actions/customElement.d.ts +185 -0
- package/dist/components/arcgis-portal-browser-actions/customElement.js +73 -0
- package/dist/components/arcgis-portal-browser-actions/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-actions/index.js +6 -0
- package/dist/components/arcgis-portal-browser-actions/types.d.ts +9 -0
- package/dist/components/arcgis-portal-browser-filter-status/customElement.d.ts +193 -0
- package/dist/components/arcgis-portal-browser-filter-status/customElement.js +56 -0
- package/dist/components/arcgis-portal-browser-filter-status/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-filter-status/index.js +5 -0
- package/dist/components/arcgis-portal-browser-pagination/customElement.d.ts +194 -0
- package/dist/components/arcgis-portal-browser-pagination/customElement.js +49 -0
- package/dist/components/arcgis-portal-browser-pagination/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-pagination/index.js +2 -0
- package/dist/components/arcgis-portal-browser-search/customElement.d.ts +195 -0
- package/dist/components/arcgis-portal-browser-search/customElement.js +62 -0
- package/dist/components/arcgis-portal-browser-search/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-search/index.js +3 -0
- package/dist/components/arcgis-portal-browser-sort/customElement.d.ts +196 -0
- package/dist/components/arcgis-portal-browser-sort/customElement.js +93 -0
- package/dist/components/arcgis-portal-browser-sort/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-sort/index.js +9 -0
- package/dist/components/arcgis-portal-browser-sort/utils.d.ts +3 -0
- package/dist/components/arcgis-portal-browser-top-bar/customElement.d.ts +190 -0
- package/dist/components/arcgis-portal-browser-top-bar/customElement.js +50 -0
- package/dist/components/arcgis-portal-browser-top-bar/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-top-bar/index.js +3 -0
- package/dist/components/arcgis-portal-browser-view/customElement.d.ts +21 -0
- package/dist/components/arcgis-portal-browser-view/customElement.js +30 -0
- package/dist/components/arcgis-portal-browser-view/index.d.ts +1 -0
- package/dist/components/arcgis-portal-browser-view/index.js +5 -0
- package/dist/components/arcgis-portal-classification-config/customElement.js +74 -74
- package/dist/components/arcgis-portal-classification-favorite/customElement.js +1 -1
- package/dist/components/arcgis-portal-delete-items/customElement.d.ts +214 -0
- package/dist/components/arcgis-portal-delete-items/customElement.js +586 -0
- package/dist/components/arcgis-portal-delete-items/index.d.ts +1 -0
- package/dist/components/arcgis-portal-delete-items/index.js +17 -0
- package/dist/components/arcgis-portal-delete-items/services.d.ts +7 -0
- package/dist/components/arcgis-portal-delete-items/types.d.ts +19 -0
- package/dist/components/arcgis-portal-delete-items-review/customElement.d.ts +40 -0
- package/dist/components/arcgis-portal-delete-items-review/customElement.js +12 -0
- package/dist/components/arcgis-portal-delete-items-review/index.d.ts +1 -0
- package/dist/components/arcgis-portal-delete-items-review/index.js +3 -0
- package/dist/components/arcgis-portal-entity-picker/customElement.d.ts +87 -0
- package/dist/components/arcgis-portal-entity-picker/customElement.js +247 -0
- package/dist/components/arcgis-portal-entity-picker/index.d.ts +1 -0
- package/dist/components/arcgis-portal-entity-picker/index.js +11 -0
- package/dist/components/arcgis-portal-extent-picker/customElement.js +285 -243
- package/dist/components/arcgis-portal-extent-picker/index.js +3 -0
- package/dist/components/arcgis-portal-extent-picker-coord-field/customElement.js +8 -8
- package/dist/components/arcgis-portal-field-delete/customElement.js +217 -126
- package/dist/components/arcgis-portal-group-badges/customElement.d.ts +0 -1
- package/dist/components/arcgis-portal-group-badges/customElement.js +22 -21
- package/dist/components/arcgis-portal-group-browser/customElement.d.ts +492 -0
- package/dist/components/arcgis-portal-group-browser/customElement.js +805 -0
- package/dist/components/arcgis-portal-group-browser/index.d.ts +1 -0
- package/dist/components/arcgis-portal-group-browser/index.js +6 -0
- package/dist/components/arcgis-portal-group-browser/types.d.ts +225 -0
- package/dist/components/arcgis-portal-group-browser-card/customElement.d.ts +30 -0
- package/dist/components/arcgis-portal-group-browser-card/customElement.js +41 -0
- package/dist/components/arcgis-portal-group-browser-card/index.d.ts +1 -0
- package/dist/components/arcgis-portal-group-browser-card/index.js +2 -0
- package/dist/components/arcgis-portal-group-browser-preview/customElement.d.ts +227 -0
- package/dist/components/arcgis-portal-group-browser-preview/customElement.js +150 -0
- package/dist/components/arcgis-portal-group-browser-preview/index.d.ts +1 -0
- package/dist/components/arcgis-portal-group-browser-preview/index.js +12 -0
- package/dist/components/arcgis-portal-group-browser-preview-card/customElement.d.ts +82 -0
- package/dist/components/arcgis-portal-group-browser-preview-card/customElement.js +93 -0
- package/dist/components/arcgis-portal-group-browser-preview-card/index.d.ts +1 -0
- package/dist/components/arcgis-portal-group-browser-preview-card/index.js +6 -0
- package/dist/components/arcgis-portal-group-card/customElement.d.ts +30 -30
- package/dist/components/arcgis-portal-group-card/customElement.js +110 -100
- package/dist/components/arcgis-portal-group-card/index.js +3 -3
- package/dist/components/arcgis-portal-group-card/types.d.ts +8 -0
- package/dist/components/arcgis-portal-group-picker/customElement.d.ts +20 -0
- package/dist/components/arcgis-portal-group-picker/customElement.js +15 -0
- package/dist/components/arcgis-portal-group-picker/index.d.ts +1 -0
- package/dist/components/arcgis-portal-group-picker/index.js +2 -0
- package/dist/components/arcgis-portal-group-thumbnail/customElement.js +1 -1
- package/dist/components/arcgis-portal-info-banner/customElement.d.ts +14 -0
- package/dist/components/arcgis-portal-info-banner/customElement.js +31 -0
- package/dist/components/arcgis-portal-info-banner/index.d.ts +1 -0
- package/dist/components/arcgis-portal-info-banner/index.js +1 -0
- package/dist/components/arcgis-portal-item-actions/customElement.d.ts +74 -0
- package/dist/components/arcgis-portal-item-actions/customElement.js +89 -0
- package/dist/components/arcgis-portal-item-actions/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-actions/index.js +5 -0
- package/dist/components/arcgis-portal-item-badge/customElement.d.ts +260 -0
- package/dist/components/arcgis-portal-item-badge/customElement.js +9 -0
- package/dist/components/arcgis-portal-item-badge/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-badge/index.js +5 -0
- package/dist/components/arcgis-portal-item-badges/customElement.d.ts +48 -0
- package/dist/components/arcgis-portal-item-badges/customElement.js +35 -0
- package/dist/components/arcgis-portal-item-badges/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-badges/index.js +2 -0
- package/dist/components/arcgis-portal-item-badges/types.d.ts +1 -0
- package/dist/components/arcgis-portal-item-card/customElement.d.ts +215 -0
- package/dist/components/arcgis-portal-item-card/customElement.js +183 -0
- package/dist/components/arcgis-portal-item-card/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-card/index.js +11 -0
- package/dist/components/arcgis-portal-item-favorite/customElement.d.ts +36 -0
- package/dist/components/arcgis-portal-item-favorite/customElement.js +66 -0
- package/dist/components/arcgis-portal-item-favorite/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-favorite/index.js +3 -0
- package/dist/components/arcgis-portal-item-favorite/utils.d.ts +4 -0
- package/dist/components/arcgis-portal-item-picker/customElement.d.ts +20 -0
- package/dist/components/arcgis-portal-item-picker/customElement.js +15 -0
- package/dist/components/arcgis-portal-item-picker/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-picker/index.js +2 -0
- package/dist/components/arcgis-portal-item-thumbnail/customElement.d.ts +43 -0
- package/dist/components/arcgis-portal-item-thumbnail/customElement.js +309 -0
- package/dist/components/arcgis-portal-item-thumbnail/index.d.ts +1 -0
- package/dist/components/arcgis-portal-item-thumbnail/index.js +1 -0
- package/dist/components/arcgis-portal-item-type/customElement.d.ts +1 -1
- package/dist/components/arcgis-portal-item-type/customElement.js +22 -659
- package/dist/components/arcgis-portal-mentionable-text-area/customElement.js +72 -96
- package/dist/components/arcgis-portal-navigation/customElement.d.ts +560 -0
- package/dist/components/arcgis-portal-navigation/customElement.js +1911 -0
- package/dist/components/arcgis-portal-navigation/index.d.ts +1 -0
- package/dist/components/arcgis-portal-navigation/index.js +31 -0
- package/dist/components/arcgis-portal-navigation/types.d.ts +44 -0
- package/dist/components/arcgis-portal-replacement-item-redirect/customElement.js +54 -422
- package/dist/components/arcgis-portal-review-related-items/customElement.d.ts +27 -0
- package/dist/components/arcgis-portal-review-related-items/customElement.js +30 -0
- package/dist/components/arcgis-portal-review-related-items/index.d.ts +1 -0
- package/dist/components/arcgis-portal-review-related-items/index.js +2 -0
- package/dist/components/arcgis-portal-sublayer-type/customElement.d.ts +76 -0
- package/dist/components/arcgis-portal-sublayer-type/customElement.js +121 -0
- package/dist/components/arcgis-portal-sublayer-type/index.d.ts +1 -0
- package/dist/components/arcgis-portal-sublayer-type/index.js +2 -0
- package/dist/components/arcgis-portal-sublayer-type/utils.d.ts +30 -0
- package/dist/components/arcgis-portal-user-avatar/customElement.d.ts +9 -0
- package/dist/components/arcgis-portal-user-avatar/customElement.js +26 -37
- package/dist/components/arcgis-portal-user-picker/customElement.d.ts +20 -0
- package/dist/components/arcgis-portal-user-picker/customElement.js +15 -0
- package/dist/components/arcgis-portal-user-picker/index.d.ts +1 -0
- package/dist/components/arcgis-portal-user-picker/index.js +2 -0
- package/dist/components/arcgis-portal-user-popup/customElement.d.ts +5 -2
- package/dist/components/arcgis-portal-user-popup/customElement.js +84 -142
- package/dist/components/portal-browser/components/portal-browser-filter/customElement.js +14 -0
- package/dist/components/portal-browser/components/portal-browser-filter/index.js +3 -0
- package/dist/components/portal-browser/components/portal-browser-filter-date/customElement.js +9 -0
- package/dist/components/portal-browser/components/portal-browser-filter-date/index.js +4 -0
- package/dist/components/portal-browser/components/portal-browser-filters/customElement.js +11 -0
- package/dist/components/portal-browser/components/portal-browser-filters/index.js +2 -0
- package/dist/components/portal-group-browser-filters/customElement.js +132 -0
- package/dist/components/portal-group-browser-filters/index.js +5 -0
- package/dist/components/portal-group-browser-pagination/customElement.js +13 -0
- package/dist/components/portal-group-browser-pagination/index.js +2 -0
- package/dist/components/portal-group-browser-sort/customElement.js +16 -0
- package/dist/components/portal-group-browser-sort/index.js +2 -0
- package/dist/components/portal-related-items-list-item/customElement.js +20 -0
- package/dist/components/portal-related-items-list-item/index.js +5 -0
- package/dist/docs/api.json +1 -1
- package/dist/docs/docs.json +1 -1
- package/dist/docs/vscode.css-custom-data.json +1 -1
- package/dist/docs/vscode.html-custom-data.json +1 -1
- package/dist/docs/web-types.json +1 -1
- package/dist/index.d.ts +288 -0
- package/dist/loader.js +38 -5
- package/dist/services/thumbnail/ags.d.ts +5 -0
- package/dist/types/app-switcher.d.ts +71 -0
- package/dist/types/geometry.d.ts +8 -0
- package/dist/types/group.d.ts +14 -16
- package/dist/types/item.d.ts +80 -1
- package/dist/types/lumina.d.ts +229 -2
- package/dist/types/portal.d.ts +6 -0
- package/dist/types/portalEntityPicker.d.ts +18 -0
- package/dist/types/preact.d.ts +262 -2
- package/dist/types/react.d.ts +295 -2
- package/dist/types/search.d.ts +30 -0
- package/dist/types/services.d.ts +9 -0
- package/dist/types/stencil.d.ts +231 -4
- package/dist/types/user.d.ts +16 -3
- package/package.json +13 -12
- package/dist/cdn/2RGMWFHB.js +0 -2
- package/dist/cdn/35SKVD6F.js +0 -2
- package/dist/cdn/3KS5IDT2.js +0 -2
- package/dist/cdn/3MQIRMUM.js +0 -77
- package/dist/cdn/3PAHY5KA.js +0 -98
- package/dist/cdn/47NPIL2S.js +0 -2
- package/dist/cdn/6AGZRMJC.js +0 -2
- package/dist/cdn/6W2IHKCA.js +0 -2
- package/dist/cdn/72N3KAXN.js +0 -2
- package/dist/cdn/74XFARCV.js +0 -109
- package/dist/cdn/7WZHZP6U.js +0 -43
- package/dist/cdn/ANPXRYLV.js +0 -5
- package/dist/cdn/B7633S2A.js +0 -422
- package/dist/cdn/CMPGO4XS.js +0 -2
- package/dist/cdn/DFTUMKSN.js +0 -3
- package/dist/cdn/DKBTJJMW.js +0 -122
- package/dist/cdn/DXCPWJU4.js +0 -3
- package/dist/cdn/EETBNQU2.js +0 -2
- package/dist/cdn/EHRAFAEA.js +0 -65
- package/dist/cdn/EKO6SVAF.js +0 -2
- package/dist/cdn/EVDOPN3G.js +0 -54
- package/dist/cdn/F6V7MLPY.js +0 -36
- package/dist/cdn/FI45QCN2.js +0 -2
- package/dist/cdn/GAHILDQF.js +0 -45
- package/dist/cdn/GEIZTD7F.js +0 -2
- package/dist/cdn/GQFWFZXP.js +0 -69
- package/dist/cdn/HGSK6OFA.js +0 -2
- package/dist/cdn/HJEFXVHY.js +0 -616
- package/dist/cdn/HMBSJR37.js +0 -2
- package/dist/cdn/KT7PE6UE.js +0 -2
- package/dist/cdn/KY7Q7DH3.js +0 -2
- package/dist/cdn/KZWW4BWJ.js +0 -2
- package/dist/cdn/MLTQECPL.js +0 -2
- package/dist/cdn/O3KBWLGU.js +0 -2
- package/dist/cdn/OKRYML2G.js +0 -2
- package/dist/cdn/PDL3DPMG.js +0 -2
- package/dist/cdn/RR4BIAPA.js +0 -56
- package/dist/cdn/SXZRHHXC.js +0 -2
- package/dist/cdn/SYJSVUUR.js +0 -31
- package/dist/cdn/TBYTYYJJ.js +0 -136
- package/dist/cdn/V2EOXGK2.js +0 -2
- package/dist/cdn/VRXKORTR.js +0 -146
- package/dist/cdn/VXCB2YBR.js +0 -3
- package/dist/cdn/WJ2NMHDE.js +0 -4
- package/dist/cdn/WSNLUGEP.js +0 -2
- package/dist/cdn/YECI7XG3.js +0 -2
- package/dist/cdn/YIMNOUTF.js +0 -2
- package/dist/cdn/YL7PGYWC.js +0 -5
- package/dist/cdn/ZDLFZJBT.js +0 -2
|
@@ -1,268 +1,254 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import { c as
|
|
3
|
-
import { LitElement as
|
|
4
|
-
import { css as
|
|
5
|
-
import { createRef as
|
|
6
|
-
import { u as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { sendTraceMessage as
|
|
10
|
-
import
|
|
11
|
-
import { a as
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
import { c as Ve } from "../../chunks/runtime.js";
|
|
3
|
+
import { LitElement as Be, createEvent as Qe } from "@arcgis/lumina";
|
|
4
|
+
import { css as We, render as Je, html as I } from "lit";
|
|
5
|
+
import { createRef as E, ref as z } from "lit/directives/ref.js";
|
|
6
|
+
import { u as _e } from "../../chunks/useT9n.js";
|
|
7
|
+
import { NodeInterrupt as _, Annotation as h, StateGraph as P, START as G, END as w } from "@langchain/langgraph/web";
|
|
8
|
+
import { invokeStructuredPrompt as b } from "@arcgis/ai-components/orchestrator/models/prompts.js";
|
|
9
|
+
import { sendTraceMessage as p, sendUXSuggestion as Y } from "@arcgis/ai-components/orchestrator/signals.js";
|
|
10
|
+
import i from "zod";
|
|
11
|
+
import { a as Ye, c as He, q as Xe } from "../../chunks/groups.js";
|
|
12
|
+
import { createAgentRuntimeState as q } from "@arcgis/ai-components/orchestrator/state/runtime.js";
|
|
13
|
+
import te from "@arcgis/core/identity/IdentityManager.js";
|
|
14
|
+
import ae from "@arcgis/core/request.js";
|
|
15
|
+
import { a as F, t as Ze, b as W } from "../../chunks/functionalities.js";
|
|
16
|
+
import { createChatModel as H } from "@arcgis/ai-components/orchestrator/models/chatModel.js";
|
|
17
|
+
import { ChatPromptTemplate as X } from "@langchain/core/prompts";
|
|
18
|
+
import { tool as Te } from "@langchain/core/tools";
|
|
19
|
+
import { s as et, a as tt } from "../../chunks/item.js";
|
|
20
|
+
import { g as at, e as nt, i as ot, c as rt, a as it } from "../../chunks/groups2.js";
|
|
21
|
+
import { getEmbeddings as st } from "@arcgis/ai-components/orchestrator/embeddings/getEmbeddings.js";
|
|
22
|
+
import ct from "@arcgis/core/portal/Portal.js";
|
|
23
|
+
const Ae = (t) => {
|
|
24
|
+
const { portal: e, user: a } = t ?? {};
|
|
25
|
+
return !!t && !!e && !!a;
|
|
22
26
|
};
|
|
23
|
-
function
|
|
24
|
-
if (!
|
|
27
|
+
function x(t) {
|
|
28
|
+
if (!Ae(t))
|
|
25
29
|
throw new Error("Invalid context: PortalAssistantContext with portal and user is required.");
|
|
26
30
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
const lt = `
|
|
32
|
+
Write a concise, friendly success message for adding members to a group.
|
|
33
|
+
|
|
34
|
+
Rules:
|
|
35
|
+
- Keep it to 1-2 short sentences.
|
|
36
|
+
- Use plain text only.
|
|
37
|
+
- If there is no notAddedMembers, confirm that all requested members were added successfully.
|
|
38
|
+
- If there are notAddedMembers, acknowledge that some members could not be added and list the added and not added members separately then mention why based on the context
|
|
39
|
+
- Make sure to bold the usernames
|
|
40
|
+
|
|
41
|
+
Added members:
|
|
42
|
+
{addedMembers}
|
|
43
|
+
|
|
44
|
+
Not added members:
|
|
45
|
+
{notAddedMembers}
|
|
46
|
+
`, ut = (t) => t.map((e) => `"${e}"`).join(", "), dt = i.object({
|
|
47
|
+
successMessage: i.string().default("")
|
|
48
|
+
}), ne = "portal-group-creation", oe = "approveAddMembers", pt = async (t, e) => {
|
|
49
|
+
if (t.intentParams.intent !== "addMembers")
|
|
31
50
|
return {
|
|
32
51
|
status: "success",
|
|
33
52
|
outputMessage: "Use @mention usernames for the members you want to add."
|
|
34
53
|
};
|
|
35
|
-
const
|
|
36
|
-
if (!
|
|
54
|
+
const a = t.agentExecutionContext.sharedState.createdGroupId?.value;
|
|
55
|
+
if (!a)
|
|
37
56
|
return {
|
|
38
57
|
status: "success",
|
|
39
58
|
outputMessage: "Create a group first, then add members using @mention usernames."
|
|
40
59
|
};
|
|
41
|
-
const
|
|
42
|
-
if (!
|
|
60
|
+
const n = t.intentParams.memberInfo.memberIdentifiers.map((g) => g.trim()).filter(Boolean);
|
|
61
|
+
if (!n.length)
|
|
43
62
|
return {
|
|
44
63
|
status: "success",
|
|
45
64
|
outputMessage: "Use @mention usernames for the members you want to add."
|
|
46
65
|
};
|
|
47
|
-
const
|
|
66
|
+
const r = `The following member(s) will be added to the newly created group:
|
|
48
67
|
|
|
49
|
-
${
|
|
68
|
+
${n.map((g) => `- **@${g}**`).join(`
|
|
50
69
|
`)}
|
|
51
70
|
|
|
52
|
-
Do you want to continue?`, { hitlResponse:
|
|
53
|
-
if (
|
|
54
|
-
const
|
|
55
|
-
agentId:
|
|
56
|
-
id:
|
|
71
|
+
Do you want to continue?`, { hitlResponse: s } = e?.configurable ?? {};
|
|
72
|
+
if (s?.agentId !== ne || s.id !== oe) {
|
|
73
|
+
const g = {
|
|
74
|
+
agentId: ne,
|
|
75
|
+
id: oe,
|
|
57
76
|
kind: "booleanChoice",
|
|
58
|
-
message:
|
|
77
|
+
message: r,
|
|
59
78
|
metadata: {
|
|
60
79
|
action: "addMembers",
|
|
61
|
-
groupId:
|
|
62
|
-
members: [...
|
|
80
|
+
groupId: a,
|
|
81
|
+
members: [...n]
|
|
63
82
|
}
|
|
64
83
|
};
|
|
65
|
-
throw new
|
|
84
|
+
throw new _(g);
|
|
66
85
|
}
|
|
67
|
-
if (
|
|
86
|
+
if (s.payload !== !0)
|
|
68
87
|
return {
|
|
69
88
|
status: "success",
|
|
70
89
|
outputMessage: "Okay, I cancelled adding members to the group."
|
|
71
90
|
};
|
|
72
|
-
await
|
|
73
|
-
{ text: `Adding members ${
|
|
74
|
-
|
|
91
|
+
await p(
|
|
92
|
+
{ text: `Adding members ${ut(n)}...`, agentName: "group-creation" },
|
|
93
|
+
e
|
|
75
94
|
);
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
const { result:
|
|
79
|
-
if (
|
|
95
|
+
const c = e?.configurable?.context;
|
|
96
|
+
x(c);
|
|
97
|
+
const { result: l, error: d } = await Ye(c.portal, a, n);
|
|
98
|
+
if (d || !l)
|
|
80
99
|
return {
|
|
81
100
|
status: "success",
|
|
82
101
|
outputMessage: "I could not add members to that group. Please confirm group access and user accounts, then try again."
|
|
83
102
|
};
|
|
84
|
-
const { addedUsernames:
|
|
103
|
+
const { addedUsernames: u, notAddedUsers: m } = l;
|
|
85
104
|
try {
|
|
86
|
-
const
|
|
87
|
-
promptText:
|
|
88
|
-
schema:
|
|
105
|
+
const f = (await b({
|
|
106
|
+
promptText: lt,
|
|
107
|
+
schema: dt,
|
|
89
108
|
modelTier: "fast",
|
|
90
109
|
inputVariables: {
|
|
91
|
-
addedMembers:
|
|
110
|
+
addedMembers: u.join(", "),
|
|
92
111
|
notAddedMembers: JSON.stringify(
|
|
93
|
-
|
|
112
|
+
m.map((y) => ({ username: y.username, reason: y.error.message }))
|
|
94
113
|
)
|
|
95
114
|
}
|
|
96
115
|
})).successMessage;
|
|
97
|
-
if (
|
|
98
|
-
return { status: "success", outputMessage:
|
|
99
|
-
} catch (
|
|
100
|
-
console.error("Error generating add-members success message:",
|
|
116
|
+
if (f)
|
|
117
|
+
return { status: "success", outputMessage: f };
|
|
118
|
+
} catch (g) {
|
|
119
|
+
console.error("Error generating add-members success message:", g);
|
|
101
120
|
}
|
|
102
121
|
return {};
|
|
103
|
-
},
|
|
104
|
-
Write a concise, friendly success message
|
|
122
|
+
}, mt = `
|
|
123
|
+
Write a concise, friendly success message after creating a portal group.
|
|
124
|
+
|
|
125
|
+
Rules:
|
|
126
|
+
- Mention that the group was created successfully.
|
|
127
|
+
- Mention that the user can add members by using @mention usernames.
|
|
128
|
+
- Keep it to 1-2 short sentences.
|
|
129
|
+
- Make sure to bold the group title in the message.
|
|
130
|
+
|
|
131
|
+
Group title:
|
|
132
|
+
{groupTitle}
|
|
133
|
+
`, gt = `
|
|
134
|
+
Write a concise, friendly failure message after an attempt to create a portal group.
|
|
105
135
|
|
|
106
136
|
Rules:
|
|
107
137
|
- Keep it to 1-2 short sentences.
|
|
108
138
|
- Use plain text only.
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
139
|
+
- Mention that group creation failed.
|
|
140
|
+
- Include the failure reason in user-friendly language.
|
|
141
|
+
- End with a clear next step the user can try.
|
|
112
142
|
|
|
113
|
-
|
|
114
|
-
{
|
|
143
|
+
Group title:
|
|
144
|
+
{groupTitle}
|
|
115
145
|
|
|
116
|
-
|
|
117
|
-
{
|
|
118
|
-
`,
|
|
119
|
-
successMessage:
|
|
120
|
-
}),
|
|
121
|
-
failureMessage:
|
|
122
|
-
}),
|
|
123
|
-
if (
|
|
146
|
+
Failure reason:
|
|
147
|
+
{failureReason}
|
|
148
|
+
`, re = "portal-group-creation", ie = "approveCreateGroup", ht = i.object({
|
|
149
|
+
successMessage: i.string().default("")
|
|
150
|
+
}), ft = i.object({
|
|
151
|
+
failureMessage: i.string().default("")
|
|
152
|
+
}), yt = async (t, e) => {
|
|
153
|
+
if (t.intentParams.intent !== "create")
|
|
124
154
|
return {
|
|
125
155
|
status: "success",
|
|
126
156
|
outputMessage: "Tell me the group title you want to use."
|
|
127
157
|
};
|
|
128
|
-
const
|
|
129
|
-
if (!
|
|
158
|
+
const a = t.intentParams.title.trim();
|
|
159
|
+
if (!a)
|
|
130
160
|
return {
|
|
131
161
|
status: "success",
|
|
132
162
|
outputMessage: "What title would you like for the new group?"
|
|
133
163
|
};
|
|
134
|
-
const
|
|
135
|
-
if (
|
|
136
|
-
const
|
|
137
|
-
agentId:
|
|
138
|
-
id:
|
|
164
|
+
const n = `A group with the title **${a}** will be created. Do you want to continue?`, { hitlResponse: o } = e?.configurable;
|
|
165
|
+
if (o?.agentId !== re || o.id !== ie) {
|
|
166
|
+
const d = {
|
|
167
|
+
agentId: re,
|
|
168
|
+
id: ie,
|
|
139
169
|
kind: "booleanChoice",
|
|
140
|
-
message:
|
|
170
|
+
message: n,
|
|
141
171
|
metadata: {
|
|
142
172
|
action: "createGroup",
|
|
143
|
-
title:
|
|
173
|
+
title: a,
|
|
144
174
|
access: "private"
|
|
145
175
|
}
|
|
146
176
|
};
|
|
147
|
-
throw new
|
|
177
|
+
throw new _(d);
|
|
148
178
|
}
|
|
149
|
-
if (
|
|
179
|
+
if (o.payload !== !0)
|
|
150
180
|
return {
|
|
151
181
|
status: "success",
|
|
152
|
-
outputMessage: `Okay, I cancelled creating **${
|
|
182
|
+
outputMessage: `Okay, I cancelled creating **${a}**.`
|
|
153
183
|
};
|
|
154
|
-
await
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
const { result:
|
|
158
|
-
title:
|
|
184
|
+
await p({ text: `Creating group "${a}"...`, agentName: "group-creation" }, e);
|
|
185
|
+
const r = e?.configurable?.context;
|
|
186
|
+
x(r);
|
|
187
|
+
const { result: s, error: c } = await He(r.portal, {
|
|
188
|
+
title: a,
|
|
159
189
|
access: "private"
|
|
160
190
|
});
|
|
161
|
-
if (
|
|
162
|
-
const
|
|
191
|
+
if (c || !s) {
|
|
192
|
+
const d = c?.message?.trim() || "No additional details were provided.";
|
|
163
193
|
try {
|
|
164
|
-
const
|
|
165
|
-
promptText:
|
|
166
|
-
schema:
|
|
194
|
+
const m = (await b({
|
|
195
|
+
promptText: gt,
|
|
196
|
+
schema: ft,
|
|
167
197
|
modelTier: "fast",
|
|
168
198
|
inputVariables: {
|
|
169
|
-
groupTitle:
|
|
170
|
-
failureReason:
|
|
199
|
+
groupTitle: a,
|
|
200
|
+
failureReason: d
|
|
171
201
|
}
|
|
172
202
|
})).failureMessage.trim();
|
|
173
|
-
if (
|
|
203
|
+
if (m)
|
|
174
204
|
return {
|
|
175
205
|
status: "success",
|
|
176
|
-
outputMessage:
|
|
206
|
+
outputMessage: m
|
|
177
207
|
};
|
|
178
|
-
} catch (
|
|
179
|
-
console.error("Error generating create-group failure message:",
|
|
208
|
+
} catch (u) {
|
|
209
|
+
console.error("Error generating create-group failure message:", u);
|
|
180
210
|
}
|
|
181
211
|
return {
|
|
182
212
|
status: "success",
|
|
183
213
|
outputMessage: "I could not create that group. Please confirm your permissions and try again with the group title."
|
|
184
214
|
};
|
|
185
215
|
}
|
|
186
|
-
const
|
|
216
|
+
const l = s.id;
|
|
187
217
|
try {
|
|
188
|
-
const
|
|
189
|
-
promptText:
|
|
190
|
-
schema:
|
|
218
|
+
const u = (await b({
|
|
219
|
+
promptText: mt,
|
|
220
|
+
schema: ht,
|
|
191
221
|
modelTier: "fast",
|
|
192
222
|
inputVariables: {
|
|
193
|
-
groupTitle:
|
|
223
|
+
groupTitle: a
|
|
194
224
|
}
|
|
195
225
|
})).successMessage.trim();
|
|
196
|
-
if (
|
|
226
|
+
if (u)
|
|
197
227
|
return {
|
|
198
228
|
status: "success",
|
|
199
|
-
outputMessage:
|
|
200
|
-
sharedStatePatch: { createdGroupId: { value:
|
|
201
|
-
createdGroupId:
|
|
229
|
+
outputMessage: u,
|
|
230
|
+
sharedStatePatch: { createdGroupId: { value: l } },
|
|
231
|
+
createdGroupId: l
|
|
202
232
|
};
|
|
203
|
-
} catch (
|
|
204
|
-
console.error("Error generating create-group success message:",
|
|
233
|
+
} catch (d) {
|
|
234
|
+
console.error("Error generating create-group success message:", d);
|
|
205
235
|
}
|
|
206
236
|
return {};
|
|
207
|
-
},
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
- Mention that the group was created successfully.
|
|
212
|
-
- Mention that the user can add members by using @mention usernames.
|
|
213
|
-
- Keep it to 1-2 short sentences.
|
|
214
|
-
- Make sure to bold the group title in the message.
|
|
215
|
-
|
|
216
|
-
Group title:
|
|
217
|
-
{groupTitle}
|
|
218
|
-
`, Dt = `
|
|
219
|
-
Write a concise, friendly failure message after an attempt to create a portal group.
|
|
220
|
-
|
|
221
|
-
Rules:
|
|
222
|
-
- Keep it to 1-2 short sentences.
|
|
223
|
-
- Use plain text only.
|
|
224
|
-
- Mention that group creation failed.
|
|
225
|
-
- Include the failure reason in user-friendly language.
|
|
226
|
-
- End with a clear next step the user can try.
|
|
227
|
-
|
|
228
|
-
Group title:
|
|
229
|
-
{groupTitle}
|
|
230
|
-
|
|
231
|
-
Failure reason:
|
|
232
|
-
{failureReason}
|
|
233
|
-
`, x = (e) => {
|
|
234
|
-
for (let t = e.length - 1; t >= 0; t -= 1) {
|
|
235
|
-
const s = e[t];
|
|
236
|
-
if (s.type !== "human")
|
|
237
|
+
}, v = (t) => {
|
|
238
|
+
for (let e = t.length - 1; e >= 0; e -= 1) {
|
|
239
|
+
const a = t[e];
|
|
240
|
+
if (a.type !== "human")
|
|
237
241
|
continue;
|
|
238
|
-
const
|
|
239
|
-
if (typeof
|
|
240
|
-
return
|
|
241
|
-
if (Array.isArray(
|
|
242
|
-
return
|
|
243
|
-
(
|
|
242
|
+
const n = a.content;
|
|
243
|
+
if (typeof n == "string")
|
|
244
|
+
return n;
|
|
245
|
+
if (Array.isArray(n))
|
|
246
|
+
return n.map(
|
|
247
|
+
(o) => typeof o == "string" ? o : "text" in o && typeof o.text == "string" ? o.text : ""
|
|
244
248
|
).join(" ").trim();
|
|
245
249
|
}
|
|
246
250
|
return "";
|
|
247
|
-
},
|
|
248
|
-
intent: o.enum(["clarify", "create", "addMembers"]).default("clarify"),
|
|
249
|
-
title: o.string().default(""),
|
|
250
|
-
memberIdentifiers: o.array(o.string()).default([]),
|
|
251
|
-
clarifyMessage: o.string().default("")
|
|
252
|
-
}), Ut = async (e, t) => {
|
|
253
|
-
await g({ text: "Thinking about groups...", agentName: "group-creation" }, t);
|
|
254
|
-
const s = x(e.agentExecutionContext.messages).trim(), a = await b({
|
|
255
|
-
promptText: Rt,
|
|
256
|
-
schema: zt,
|
|
257
|
-
modelTier: "default",
|
|
258
|
-
inputVariables: { userMessage: s }
|
|
259
|
-
}), r = a.title.trim(), i = a.memberIdentifiers.filter(Boolean), l = a.clarifyMessage.trim(), u = a.intent === "create" && !!r, c = a.intent === "addMembers" && i.length > 0;
|
|
260
|
-
return {
|
|
261
|
-
intentParams: u ? { intent: "create", title: r } : c ? { intent: "addMembers", memberInfo: { memberIdentifiers: i } } : { intent: "clarify" },
|
|
262
|
-
status: "success",
|
|
263
|
-
outputMessage: !u && !c ? l : ""
|
|
264
|
-
};
|
|
265
|
-
}, Rt = `
|
|
251
|
+
}, wt = `
|
|
266
252
|
You classify whether a user is asking to create a new ArcGIS Portal group or add members to an existing group.
|
|
267
253
|
|
|
268
254
|
Rules:
|
|
@@ -288,326 +274,1064 @@ Examples:
|
|
|
288
274
|
|
|
289
275
|
User message:
|
|
290
276
|
{userMessage}
|
|
291
|
-
`,
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
})
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
},
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
277
|
+
`, bt = i.object({
|
|
278
|
+
intent: i.enum(["clarify", "create", "addMembers"]).default("clarify"),
|
|
279
|
+
title: i.string().default(""),
|
|
280
|
+
memberIdentifiers: i.array(i.string()).default([]),
|
|
281
|
+
clarifyMessage: i.string().default("")
|
|
282
|
+
}), vt = async (t, e) => {
|
|
283
|
+
await p({ text: "Thinking about groups...", agentName: "group-creation" }, e);
|
|
284
|
+
const a = v(t.agentExecutionContext.messages).trim(), n = await b({
|
|
285
|
+
promptText: wt,
|
|
286
|
+
schema: bt,
|
|
287
|
+
modelTier: "default",
|
|
288
|
+
inputVariables: { userMessage: a }
|
|
289
|
+
}), o = n.title.trim(), r = n.memberIdentifiers.filter(Boolean), s = n.clarifyMessage.trim(), c = n.intent === "create" && !!o, l = n.intent === "addMembers" && r.length > 0;
|
|
290
|
+
return {
|
|
291
|
+
intentParams: c ? { intent: "create", title: o } : l ? { intent: "addMembers", memberInfo: { memberIdentifiers: r } } : { intent: "clarify" },
|
|
292
|
+
status: "success",
|
|
293
|
+
outputMessage: !c && !l ? s : ""
|
|
294
|
+
};
|
|
295
|
+
}, It = [
|
|
296
|
+
"general",
|
|
297
|
+
"about",
|
|
298
|
+
"homePage",
|
|
299
|
+
"gallery",
|
|
300
|
+
"aiAssistants",
|
|
301
|
+
"map",
|
|
302
|
+
"items",
|
|
303
|
+
"groups",
|
|
304
|
+
"webhooks",
|
|
305
|
+
"utilityServices",
|
|
306
|
+
"agol",
|
|
307
|
+
"esriContent",
|
|
308
|
+
"livingAtlas",
|
|
309
|
+
"servers",
|
|
310
|
+
"memberRoles",
|
|
311
|
+
"newMemberDefaults",
|
|
312
|
+
"marketplace",
|
|
313
|
+
"collaborations",
|
|
314
|
+
"credits",
|
|
315
|
+
"security",
|
|
316
|
+
"openData",
|
|
317
|
+
"hub",
|
|
318
|
+
"orgExtensions"
|
|
319
|
+
], St = [
|
|
320
|
+
"newItem",
|
|
321
|
+
"createLayer",
|
|
322
|
+
"developerCredentials",
|
|
323
|
+
"url",
|
|
324
|
+
"application",
|
|
325
|
+
"tileLayer",
|
|
326
|
+
"sceneLayer",
|
|
327
|
+
"locator",
|
|
328
|
+
"dataStore"
|
|
329
|
+
], xt = ["favorites", "group", "living-atlas", "org"], Ct = ["featured", "my", "organization"], Mt = ["overview", "content", "members", "settings"], Tt = ["licenses", "members", "overview", "reports", "settings", "status"], At = i.object({
|
|
330
|
+
destinationType: i.literal("portal-content"),
|
|
331
|
+
hash: i.enum(xt).optional(),
|
|
332
|
+
queryParams: i.object({
|
|
333
|
+
newItem: i.enum(St).optional()
|
|
334
|
+
}).optional()
|
|
335
|
+
}), Nt = i.object({
|
|
336
|
+
destinationType: i.literal("portal-groups"),
|
|
337
|
+
hash: i.enum(Ct).optional()
|
|
338
|
+
}), Pt = i.object({
|
|
339
|
+
destinationType: i.literal("portal-org"),
|
|
340
|
+
hash: i.enum(Tt).optional(),
|
|
341
|
+
queryParams: i.object({
|
|
342
|
+
tab: i.enum(It).optional(),
|
|
343
|
+
section: i.string().optional(),
|
|
344
|
+
subsection: i.string().optional(),
|
|
345
|
+
period: i.string().optional(),
|
|
346
|
+
startTime: i.string().optional(),
|
|
347
|
+
endTime: i.string().optional()
|
|
348
|
+
}).optional()
|
|
349
|
+
}), Gt = i.object({
|
|
350
|
+
destinationType: i.literal("portal-item"),
|
|
351
|
+
itemId: i.string().trim().min(1)
|
|
352
|
+
}), qt = i.object({
|
|
353
|
+
destinationType: i.literal("portal-group"),
|
|
354
|
+
groupId: i.string().trim().min(1),
|
|
355
|
+
hash: i.enum(Mt).optional(),
|
|
356
|
+
queryParams: i.record(i.string(), i.string()).optional()
|
|
357
|
+
}), kt = i.union([
|
|
358
|
+
At,
|
|
359
|
+
i.object({ destinationType: i.literal("portal-gallery") }),
|
|
360
|
+
qt,
|
|
361
|
+
Nt,
|
|
362
|
+
Gt,
|
|
363
|
+
i.object({ destinationType: i.literal("portal-map-viewer") }),
|
|
364
|
+
i.object({ destinationType: i.literal("portal-notebooks") }),
|
|
365
|
+
Pt,
|
|
366
|
+
i.object({ destinationType: i.literal("portal-scene-viewer") })
|
|
367
|
+
]), Ne = "portal-navigation", O = async (t, e) => {
|
|
368
|
+
const a = e?.configurable?.context;
|
|
369
|
+
!Ae(a) || !a.navigationTargetMap?.[t.destinationType] || await Y({ type: Ne, data: { ...t } }, e);
|
|
370
|
+
}, Et = async (t, e) => {
|
|
371
|
+
const a = t.createdGroupId ?? t.agentExecutionContext.sharedState.createdGroupId?.value;
|
|
372
|
+
return a ? (await p({ text: "Preparing navigation...", agentName: "group-creation" }, e), await O({ destinationType: "portal-group", groupId: a }, e), {}) : {};
|
|
373
|
+
}, se = (t, e) => e ?? t, Pe = h.Root({
|
|
374
|
+
...q(),
|
|
314
375
|
// * Shared state between nodes (but not persisted to the agent execution context)
|
|
315
376
|
/** Parameters related to the user's intent for group creation actions */
|
|
316
|
-
intentParams:
|
|
377
|
+
intentParams: h({ reducer: se, default: () => ({ intent: "clarify" }) }),
|
|
317
378
|
/** The ID of the group that was created
|
|
318
379
|
* even though we already have this in the shared state
|
|
319
380
|
* we still need it here to also share between nodes
|
|
320
381
|
*/
|
|
321
|
-
createdGroupId:
|
|
322
|
-
}),
|
|
323
|
-
switch (
|
|
382
|
+
createdGroupId: h({ reducer: se, default: () => "" })
|
|
383
|
+
}), zt = () => new P(Pe).addNode("detectGroupCreationIntent", vt).addNode("createPortalGroup", yt).addNode("addMembersToPortalGroup", pt).addNode("suggestCreatedGroupNavigation", Et).addEdge(G, "detectGroupCreationIntent").addConditionalEdges("detectGroupCreationIntent", (e) => {
|
|
384
|
+
switch (e.intentParams.intent) {
|
|
324
385
|
case "create":
|
|
325
386
|
return "createPortalGroup";
|
|
326
387
|
case "addMembers":
|
|
327
388
|
return "addMembersToPortalGroup";
|
|
328
389
|
default:
|
|
329
|
-
return
|
|
390
|
+
return w;
|
|
330
391
|
}
|
|
331
|
-
}).addEdge("createPortalGroup", "suggestCreatedGroupNavigation").addEdge("addMembersToPortalGroup", "suggestCreatedGroupNavigation").addEdge("suggestCreatedGroupNavigation",
|
|
392
|
+
}).addEdge("createPortalGroup", "suggestCreatedGroupNavigation").addEdge("addMembersToPortalGroup", "suggestCreatedGroupNavigation").addEdge("suggestCreatedGroupNavigation", w), Rt = String.raw`- **portal-group-creation** - Portal group creation assistant:
|
|
332
393
|
- creates a new ArcGIS Portal group for the signed-in user
|
|
333
394
|
- adds users to the newly created group using @mention usernames
|
|
334
|
-
`,
|
|
395
|
+
`, Dt = {
|
|
335
396
|
id: "portal-group-creation",
|
|
336
397
|
name: "Portal Group Creation",
|
|
337
|
-
description:
|
|
338
|
-
createGraph:
|
|
339
|
-
workspace:
|
|
340
|
-
},
|
|
341
|
-
const
|
|
342
|
-
if (!
|
|
343
|
-
return
|
|
344
|
-
const
|
|
398
|
+
description: Rt,
|
|
399
|
+
createGraph: zt,
|
|
400
|
+
workspace: Pe
|
|
401
|
+
}, Ge = "portalDocAssistantMemory", $t = () => ({ conversationId: "" }), Ut = (t) => {
|
|
402
|
+
const e = t?.[Ge]?.value;
|
|
403
|
+
if (!e || typeof e != "object")
|
|
404
|
+
return $t();
|
|
405
|
+
const a = e;
|
|
345
406
|
return {
|
|
346
|
-
conversationId: typeof
|
|
407
|
+
conversationId: typeof a.conversationId == "string" ? a.conversationId : ""
|
|
347
408
|
};
|
|
348
|
-
},
|
|
349
|
-
[
|
|
350
|
-
})
|
|
409
|
+
}, Ft = (t) => ({
|
|
410
|
+
[Ge]: { value: t }
|
|
411
|
+
}), Ot = {
|
|
412
|
+
pipeline: {
|
|
413
|
+
follow_up: { allow: !1 }
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
function Lt(t) {
|
|
417
|
+
return {
|
|
418
|
+
kind: "DocAIAssistantRequest",
|
|
419
|
+
filters: {
|
|
420
|
+
...Ot,
|
|
421
|
+
persona: { persona: t }
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
const jt = "https://www.arcgis.com/sharing/rest";
|
|
351
426
|
async function Kt({
|
|
352
|
-
portal:
|
|
353
|
-
question:
|
|
354
|
-
persona:
|
|
355
|
-
previousConversationId:
|
|
427
|
+
portal: t,
|
|
428
|
+
question: e,
|
|
429
|
+
persona: a,
|
|
430
|
+
previousConversationId: n,
|
|
431
|
+
useProdDocAssistant: o,
|
|
356
432
|
signal: r,
|
|
357
|
-
skillId:
|
|
433
|
+
skillId: s
|
|
358
434
|
}) {
|
|
359
|
-
|
|
360
|
-
const
|
|
361
|
-
portal:
|
|
362
|
-
skillId:
|
|
363
|
-
message:
|
|
364
|
-
options: { context:
|
|
365
|
-
kind: "DocAIAssistantRequest",
|
|
366
|
-
filters: { persona: { persona: s } }
|
|
367
|
-
}, previousConversationId: a, signal: r }
|
|
435
|
+
s ??= "doc_ai_assistant";
|
|
436
|
+
const c = Lt(a), l = await Vt({
|
|
437
|
+
portal: t,
|
|
438
|
+
skillId: s,
|
|
439
|
+
message: e,
|
|
440
|
+
options: { context: c, previousConversationId: n, useProdDocAssistant: o, signal: r }
|
|
368
441
|
});
|
|
369
442
|
return {
|
|
370
|
-
reply:
|
|
371
|
-
conversationId:
|
|
443
|
+
reply: Bt(l, s),
|
|
444
|
+
conversationId: l[0]?.conversationId ?? ""
|
|
372
445
|
};
|
|
373
446
|
}
|
|
374
|
-
async function
|
|
375
|
-
portal:
|
|
376
|
-
skillId:
|
|
377
|
-
message:
|
|
378
|
-
options:
|
|
447
|
+
async function Vt({
|
|
448
|
+
portal: t,
|
|
449
|
+
skillId: e,
|
|
450
|
+
message: a,
|
|
451
|
+
options: n
|
|
379
452
|
}) {
|
|
380
|
-
const
|
|
453
|
+
const o = t.helperServices.aiAssistantServices.url, s = `${n.useProdDocAssistant ? "https://aiservices-beta.arcgis.com" : o}/skills/${e}/chat`, l = {
|
|
381
454
|
"Content-Type": "application/json",
|
|
382
|
-
token:
|
|
383
|
-
},
|
|
455
|
+
token: n.useProdDocAssistant ? (await te.getCredential(jt, { oAuthPopupConfirmation: !1 })).token : te.findCredential(t.url)?.token ?? ""
|
|
456
|
+
}, d = await ae(s, {
|
|
384
457
|
method: "post",
|
|
385
458
|
body: JSON.stringify({
|
|
386
|
-
message:
|
|
387
|
-
context:
|
|
388
|
-
conversationId:
|
|
459
|
+
message: a,
|
|
460
|
+
context: n.context,
|
|
461
|
+
conversationId: n.previousConversationId
|
|
389
462
|
}),
|
|
390
463
|
headers: l,
|
|
391
|
-
signal:
|
|
464
|
+
signal: n.signal
|
|
392
465
|
});
|
|
393
|
-
if (
|
|
394
|
-
throw new Error(`Doc assistant chat failed (${
|
|
395
|
-
cause:
|
|
466
|
+
if (d.httpStatus !== 200)
|
|
467
|
+
throw new Error(`Doc assistant chat failed (${d.httpStatus})`, {
|
|
468
|
+
cause: d.data
|
|
396
469
|
});
|
|
397
|
-
const
|
|
398
|
-
if (!
|
|
470
|
+
const u = d.data, m = [u], { conversationId: g, inquiryId: f } = u, y = async (M, k) => {
|
|
471
|
+
if (!k)
|
|
399
472
|
return;
|
|
400
|
-
await
|
|
401
|
-
const
|
|
473
|
+
await Ze(500);
|
|
474
|
+
const C = await ae(s, {
|
|
402
475
|
method: "post",
|
|
403
|
-
body: JSON.stringify({ conversationId:
|
|
476
|
+
body: JSON.stringify({ conversationId: g, inquiryId: f, ackSequenceNumber: M }),
|
|
404
477
|
headers: l,
|
|
405
|
-
signal:
|
|
478
|
+
signal: n.signal
|
|
406
479
|
});
|
|
407
|
-
if (
|
|
408
|
-
throw new Error(`Doc assistant poll failed (${
|
|
409
|
-
cause:
|
|
480
|
+
if (C.httpStatus !== 200)
|
|
481
|
+
throw new Error(`Doc assistant poll failed (${C.httpStatus})`, {
|
|
482
|
+
cause: C.data
|
|
410
483
|
});
|
|
411
|
-
const
|
|
412
|
-
|
|
484
|
+
const T = C.data;
|
|
485
|
+
m.push(T), await y(T.sequenceNumber, T.hasMore);
|
|
413
486
|
};
|
|
414
|
-
return
|
|
487
|
+
return u.hasMore && await y(u.sequenceNumber, u.hasMore), m;
|
|
415
488
|
}
|
|
416
|
-
function
|
|
417
|
-
switch (
|
|
489
|
+
function Bt(t, e) {
|
|
490
|
+
switch (e) {
|
|
418
491
|
case "doc_chat":
|
|
419
|
-
return
|
|
492
|
+
return t.find((a) => a.message != null)?.message ?? "";
|
|
420
493
|
case "doc_ai_assistant":
|
|
421
|
-
for (let
|
|
422
|
-
const
|
|
423
|
-
if (
|
|
424
|
-
const
|
|
425
|
-
if (
|
|
426
|
-
return
|
|
494
|
+
for (let a = t.length - 1; a >= 0; a -= 1) {
|
|
495
|
+
const n = t[a];
|
|
496
|
+
if (n.context?.kind === "DocAIAssistantContext") {
|
|
497
|
+
const o = n.context.results?.[0]?.reply;
|
|
498
|
+
if (o)
|
|
499
|
+
return o;
|
|
427
500
|
}
|
|
428
501
|
}
|
|
429
502
|
return "";
|
|
430
503
|
default:
|
|
431
|
-
return
|
|
504
|
+
return F(e);
|
|
432
505
|
}
|
|
433
506
|
}
|
|
434
|
-
const
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
507
|
+
const Qt = async (t, e) => {
|
|
508
|
+
const a = performance.now();
|
|
509
|
+
try {
|
|
510
|
+
await p({ text: "Asking documentation assistant...", agentName: "doc-assistant" }, e);
|
|
511
|
+
const n = v(t.agentExecutionContext.messages).trim();
|
|
512
|
+
if (!n)
|
|
513
|
+
return {
|
|
514
|
+
status: "success",
|
|
515
|
+
outputMessage: "Please share your question and I can help with ArcGIS and Portal documentation."
|
|
516
|
+
};
|
|
517
|
+
const o = e?.configurable?.context;
|
|
518
|
+
x(o);
|
|
519
|
+
const r = Ut(t.agentExecutionContext.sharedState), { reply: s, conversationId: c } = await Kt({
|
|
520
|
+
portal: o.portal,
|
|
521
|
+
question: n,
|
|
522
|
+
previousConversationId: r.conversationId || void 0,
|
|
523
|
+
skillId: "doc_ai_assistant",
|
|
524
|
+
persona: "doc-online",
|
|
525
|
+
useProdDocAssistant: o.useProdDocAssistant
|
|
526
|
+
});
|
|
438
527
|
return {
|
|
439
528
|
status: "success",
|
|
440
|
-
outputMessage:
|
|
529
|
+
outputMessage: s.trim() || "I could not retrieve a response from the documentation assistant.",
|
|
530
|
+
sharedStatePatch: Ft({
|
|
531
|
+
conversationId: c || r.conversationId
|
|
532
|
+
})
|
|
441
533
|
};
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
534
|
+
} finally {
|
|
535
|
+
console.info("[arcgis-portal-ai-assistant] node timing", {
|
|
536
|
+
agent: "portal-doc-assistant",
|
|
537
|
+
node: "answerDocQuestion",
|
|
538
|
+
durationMs: Number((performance.now() - a).toFixed(1))
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
}, Wt = {
|
|
542
|
+
schemaVersion: "1.0",
|
|
543
|
+
capabilities: [
|
|
544
|
+
{
|
|
545
|
+
id: "portal-content",
|
|
546
|
+
title: "My content",
|
|
547
|
+
description: "Browse, discover, search, and filter ArcGIS content—including maps, apps, datasets, and other items—that you own or can access.",
|
|
548
|
+
hints: ["view my content", "show my content", "my content"],
|
|
549
|
+
platforms: ["online", "enterprise"],
|
|
550
|
+
resolutions: {
|
|
551
|
+
navigate: {
|
|
552
|
+
routeKey: "content"
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
id: "portal-content-new-item-feature-layer",
|
|
558
|
+
title: "Create feature layer",
|
|
559
|
+
description: "Generate an editable feature layer by copying fields from templates or existing layers.",
|
|
560
|
+
hints: ["add a feature layer", "make a feature layer", "generate a feature layer"],
|
|
561
|
+
platforms: ["online", "enterprise"],
|
|
562
|
+
resolutions: {
|
|
563
|
+
navigate: {
|
|
564
|
+
routeKey: "content",
|
|
565
|
+
queryParams: {
|
|
566
|
+
newItem: "createLayer"
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
id: "portal-content-new-item",
|
|
573
|
+
title: "New item",
|
|
574
|
+
description: "Open My Content with the New Item flow ready to start.",
|
|
575
|
+
hints: ["new item", "create new item", "upload a new item"],
|
|
576
|
+
platforms: ["online", "enterprise"],
|
|
577
|
+
buttonLabel: "Create new item",
|
|
578
|
+
resolutions: {
|
|
579
|
+
navigate: {
|
|
580
|
+
routeKey: "content",
|
|
581
|
+
queryParams: {
|
|
582
|
+
newItem: "newItem"
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
id: "portal-content-new-item-developer-credentials",
|
|
589
|
+
title: "Create developer credentials",
|
|
590
|
+
description: "Open My Content with the New Item flow set to developer credentials.",
|
|
591
|
+
hints: ["developer credentials", "new developer credentials", "create api key"],
|
|
592
|
+
platforms: ["online", "enterprise"],
|
|
593
|
+
buttonLabel: "Create developer credentials",
|
|
594
|
+
resolutions: {
|
|
595
|
+
navigate: {
|
|
596
|
+
routeKey: "content",
|
|
597
|
+
queryParams: {
|
|
598
|
+
newItem: "developerCredentials"
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
id: "portal-content-new-item-url",
|
|
605
|
+
title: "Add item from URL",
|
|
606
|
+
description: "Open My Content with the New Item flow set to add a URL-based item, such as a service endpoint.",
|
|
607
|
+
hints: ["add item from url", "url item", "register service url"],
|
|
608
|
+
platforms: ["online", "enterprise"],
|
|
609
|
+
buttonLabel: "Add item from URL",
|
|
610
|
+
resolutions: {
|
|
611
|
+
navigate: {
|
|
612
|
+
routeKey: "content",
|
|
613
|
+
queryParams: {
|
|
614
|
+
newItem: "url"
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
id: "portal-content-new-item-application",
|
|
621
|
+
title: "Create application item",
|
|
622
|
+
description: "Open My Content with the New Item flow set to create an application item in content.",
|
|
623
|
+
hints: ["create application item", "register app item", "new application item"],
|
|
624
|
+
platforms: ["online", "enterprise"],
|
|
625
|
+
buttonLabel: "Create application item",
|
|
626
|
+
resolutions: {
|
|
627
|
+
navigate: {
|
|
628
|
+
routeKey: "content",
|
|
629
|
+
queryParams: {
|
|
630
|
+
newItem: "application"
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
id: "portal-content-new-item-tile-layer",
|
|
637
|
+
title: "Create tile layer",
|
|
638
|
+
description: "Open My Content with the New Item flow set to publish a hosted tile layer.",
|
|
639
|
+
hints: ["create hosted tile layer", "publish tile layer", "new tile layer"],
|
|
640
|
+
platforms: ["online", "enterprise"],
|
|
641
|
+
buttonLabel: "Create tile layer",
|
|
642
|
+
resolutions: {
|
|
643
|
+
navigate: {
|
|
644
|
+
routeKey: "content",
|
|
645
|
+
queryParams: {
|
|
646
|
+
newItem: "tileLayer"
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
id: "portal-content-new-item-scene-layer",
|
|
653
|
+
title: "Create scene layer",
|
|
654
|
+
description: "Open My Content with the New Item flow set to publish a hosted scene layer.",
|
|
655
|
+
hints: ["create hosted scene layer", "publish scene layer", "new scene layer"],
|
|
656
|
+
platforms: ["online", "enterprise"],
|
|
657
|
+
buttonLabel: "Create scene layer",
|
|
658
|
+
resolutions: {
|
|
659
|
+
navigate: {
|
|
660
|
+
routeKey: "content",
|
|
661
|
+
queryParams: {
|
|
662
|
+
newItem: "sceneLayer"
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
id: "portal-content-new-item-locator",
|
|
669
|
+
title: "Create locator",
|
|
670
|
+
description: "Open My Content with the New Item flow set to create or publish a locator for geocoding.",
|
|
671
|
+
hints: ["create locator", "publish locator", "geocoding locator"],
|
|
672
|
+
platforms: ["online", "enterprise"],
|
|
673
|
+
buttonLabel: "Create locator",
|
|
674
|
+
resolutions: {
|
|
675
|
+
navigate: {
|
|
676
|
+
routeKey: "content",
|
|
677
|
+
queryParams: {
|
|
678
|
+
newItem: "locator"
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
id: "portal-content-new-item-data-store",
|
|
685
|
+
title: "Create data store item",
|
|
686
|
+
description: "Open My Content with the New Item flow set to register a data store connection.",
|
|
687
|
+
hints: ["register data store", "data store connection", "new data store item"],
|
|
688
|
+
platforms: ["online", "enterprise"],
|
|
689
|
+
buttonLabel: "Create data store item",
|
|
690
|
+
resolutions: {
|
|
691
|
+
navigate: {
|
|
692
|
+
routeKey: "content",
|
|
693
|
+
queryParams: {
|
|
694
|
+
newItem: "dataStore"
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
id: "create-folder",
|
|
701
|
+
title: "Create folder",
|
|
702
|
+
description: "Create a new folder in your ArcGIS content to organize your items.",
|
|
703
|
+
hints: ["create a folder", "make a folder", "set up a folder", "new folder"],
|
|
704
|
+
platforms: ["online", "enterprise"],
|
|
705
|
+
resolutions: {
|
|
706
|
+
navigate: {
|
|
707
|
+
routeKey: "content"
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
]
|
|
712
|
+
}, Jt = {
|
|
713
|
+
schemaVersion: "1.0",
|
|
714
|
+
capabilities: [
|
|
715
|
+
{
|
|
716
|
+
id: "portal-groups-my",
|
|
717
|
+
title: "My groups",
|
|
718
|
+
description: "Browse, discover, search, and filter ArcGIS content collections—including maps, apps, datasets, and other items—that you own, belong to, or can access.",
|
|
719
|
+
hints: ["view my groups", "show my groups", "my groups"],
|
|
720
|
+
platforms: ["online", "enterprise"],
|
|
721
|
+
resolutions: {
|
|
722
|
+
navigate: {
|
|
723
|
+
routeKey: "groups"
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
id: "create-group",
|
|
729
|
+
title: "Create group",
|
|
730
|
+
description: "Create a new ArcGIS Portal group owned by the signed-in user.",
|
|
731
|
+
hints: ["create a group", "make a group", "set up a group", "new group"],
|
|
732
|
+
platforms: ["online", "enterprise"],
|
|
733
|
+
resolutions: {
|
|
734
|
+
navigate: {
|
|
735
|
+
routeKey: "groups"
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
id: "portal-groups-featured",
|
|
741
|
+
title: "Featured groups",
|
|
742
|
+
description: "Browse, discover, search, and filter ArcGIS content collections—including maps, apps, datasets, and other items—that organization administrators choose to highlight in ArcGIS.",
|
|
743
|
+
hints: ["view featured groups", "show featured groups", "highlighted groups", "top groups"],
|
|
744
|
+
platforms: ["online", "enterprise"],
|
|
745
|
+
resolutions: {
|
|
746
|
+
navigate: {
|
|
747
|
+
routeKey: "groups",
|
|
748
|
+
hash: "featured"
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
id: "portal-groups-organization",
|
|
754
|
+
title: "Organization groups",
|
|
755
|
+
description: "Browse, discover, search, and filter ArcGIS content collections—including maps, apps, datasets, and other items—that are specific to your organization in ArcGIS.",
|
|
756
|
+
hints: ["view organization groups", "show organization groups"],
|
|
757
|
+
platforms: ["online", "enterprise"],
|
|
758
|
+
resolutions: {
|
|
759
|
+
navigate: {
|
|
760
|
+
routeKey: "groups",
|
|
761
|
+
hash: "organization"
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
]
|
|
766
|
+
}, _t = {
|
|
767
|
+
schemaVersion: "1.0",
|
|
768
|
+
capabilities: [
|
|
769
|
+
{
|
|
770
|
+
id: "portal-org-security-multifactor-auth",
|
|
771
|
+
title: "Multifactor Authentication (MFA)",
|
|
772
|
+
description: "Configure organization-level multifactor authentication (MFA) settings. Administrators can enable MFA for ArcGIS logins, allow recovery codes for members, view MFA adoption status, enforce MFA requirements for all members, manage the MFA exemption list, and designate administrators who can troubleshoot MFA issues.",
|
|
773
|
+
hints: ["config MFA", "set up MFA"],
|
|
774
|
+
platforms: ["online", "enterprise"],
|
|
775
|
+
resolutions: {
|
|
776
|
+
navigate: {
|
|
777
|
+
routeKey: "organization",
|
|
778
|
+
queryParams: {
|
|
779
|
+
tab: "security",
|
|
780
|
+
subsection: "multiFactorAuthSection"
|
|
781
|
+
},
|
|
782
|
+
hash: "settings"
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
id: "portal-org-security-logins",
|
|
788
|
+
title: "Security - Logins",
|
|
789
|
+
description: "Manage the sign-in methods available for the organization.",
|
|
790
|
+
hints: ["set up SAML single sign-on", "add OpenID Connect login", "sign in with Okta"],
|
|
791
|
+
platforms: ["online", "enterprise"],
|
|
792
|
+
buttonLabel: "Configure logins",
|
|
793
|
+
resolutions: {
|
|
794
|
+
navigate: {
|
|
795
|
+
routeKey: "organization",
|
|
796
|
+
hash: "settings",
|
|
797
|
+
queryParams: {
|
|
798
|
+
tab: "security",
|
|
799
|
+
subsection: "loginsSection"
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
id: "portal-org-security-custom-sign-in",
|
|
806
|
+
title: "Security - Custom sign-in",
|
|
807
|
+
description: "Customize how sign-in options are presented for the organization.",
|
|
808
|
+
hints: ["custom sign in", "brand the sign-in page", "hide the ArcGIS login option"],
|
|
809
|
+
platforms: ["online", "enterprise"],
|
|
810
|
+
buttonLabel: "Configure custom sign-in",
|
|
811
|
+
resolutions: {
|
|
812
|
+
navigate: {
|
|
813
|
+
routeKey: "organization",
|
|
814
|
+
hash: "settings",
|
|
815
|
+
queryParams: {
|
|
816
|
+
tab: "security",
|
|
817
|
+
subsection: "customSignInSection"
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
id: "portal-org-security-change-login-provider",
|
|
824
|
+
title: "Security - Logins - Member login management",
|
|
825
|
+
description: "Change the login provider used by an existing organization member.",
|
|
826
|
+
hints: ["change login provider", "switch a member to SAML", "migrate a user to SSO"],
|
|
827
|
+
platforms: ["online", "enterprise"],
|
|
828
|
+
buttonLabel: "Configure member login management",
|
|
829
|
+
resolutions: {
|
|
830
|
+
navigate: {
|
|
831
|
+
routeKey: "organization",
|
|
832
|
+
hash: "settings",
|
|
833
|
+
queryParams: {
|
|
834
|
+
tab: "security",
|
|
835
|
+
subsection: "changeLoginProviderSection"
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
id: "portal-org-security-multifactor-enforcement",
|
|
842
|
+
title: "Security - Multifactor authentication - MFA enforcement",
|
|
843
|
+
description: "Require multifactor authentication for all members with ArcGIS logins.",
|
|
844
|
+
hints: ["make MFA required", "force all members to use MFA", "MFA exemption list"],
|
|
845
|
+
platforms: ["online", "enterprise"],
|
|
846
|
+
buttonLabel: "Configure MFA enforcement",
|
|
847
|
+
resolutions: {
|
|
848
|
+
navigate: {
|
|
849
|
+
routeKey: "organization",
|
|
850
|
+
hash: "settings",
|
|
851
|
+
queryParams: {
|
|
852
|
+
tab: "security",
|
|
853
|
+
subsection: "multifactorEnforcementSection"
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
id: "portal-org-security-multifactor-designated-admins",
|
|
860
|
+
title: "Security - Multifactor authentication - Designated administrators",
|
|
861
|
+
description: "Choose which administrators receive and handle member MFA assistance requests.",
|
|
862
|
+
hints: ["designated MFA admins", "who receives MFA help requests", "MFA support administrators"],
|
|
863
|
+
platforms: ["online", "enterprise"],
|
|
864
|
+
buttonLabel: "Configure designated administrators",
|
|
865
|
+
resolutions: {
|
|
866
|
+
navigate: {
|
|
867
|
+
routeKey: "organization",
|
|
868
|
+
hash: "settings",
|
|
869
|
+
queryParams: {
|
|
870
|
+
tab: "security",
|
|
871
|
+
subsection: "multifactorDesignatedAdminsSection"
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
]
|
|
877
|
+
}, Yt = {
|
|
878
|
+
"contentRouteRegistry.ts": Wt,
|
|
879
|
+
"groupsRouteRegistry.ts": Jt,
|
|
880
|
+
"orgSettingsRouteRegistry.ts": _t
|
|
881
|
+
};
|
|
882
|
+
function ce(t) {
|
|
883
|
+
const e = [], a = /* @__PURE__ */ new Set();
|
|
884
|
+
for (const [n, o] of Object.entries(t))
|
|
885
|
+
for (const r of o.capabilities) {
|
|
886
|
+
if (a.has(r.id))
|
|
887
|
+
throw new Error(`${n}: duplicate capability id "${r.id}" across registries`);
|
|
888
|
+
a.add(r.id), e.push(r);
|
|
889
|
+
}
|
|
890
|
+
return e;
|
|
891
|
+
}
|
|
892
|
+
let R;
|
|
893
|
+
function S(t) {
|
|
894
|
+
return t ? R = ce({ customCapabilities: t }) : R || (R = ce(Yt)), R;
|
|
895
|
+
}
|
|
896
|
+
const Ht = {
|
|
897
|
+
gallery: "portal-gallery",
|
|
898
|
+
"map-viewer": "portal-map-viewer",
|
|
899
|
+
notebooks: "portal-notebooks",
|
|
900
|
+
"scene-viewer": "portal-scene-viewer"
|
|
901
|
+
};
|
|
902
|
+
function A({
|
|
903
|
+
capabilityId: t,
|
|
904
|
+
navigate: e,
|
|
905
|
+
buttonLabel: a
|
|
906
|
+
}) {
|
|
907
|
+
const { routeKey: n } = e;
|
|
908
|
+
switch (n) {
|
|
909
|
+
case "content":
|
|
910
|
+
return {
|
|
911
|
+
destinationType: "portal-content",
|
|
912
|
+
hash: e.hash,
|
|
913
|
+
queryParams: e.queryParams,
|
|
914
|
+
...a ? { buttonLabel: a } : {}
|
|
915
|
+
};
|
|
916
|
+
case "organization":
|
|
917
|
+
return {
|
|
918
|
+
destinationType: "portal-org",
|
|
919
|
+
hash: e.hash,
|
|
920
|
+
queryParams: e.queryParams,
|
|
921
|
+
...a ? { buttonLabel: a } : {}
|
|
922
|
+
};
|
|
923
|
+
case "groups":
|
|
924
|
+
const { hash: o } = e;
|
|
925
|
+
return o === "featured" ? { destinationType: "portal-groups", hash: "featured", ...a ? { buttonLabel: a } : {} } : o === "organization" ? { destinationType: "portal-groups", hash: "organization", ...a ? { buttonLabel: a } : {} } : t === "portal-groups-my" ? { destinationType: "portal-groups", hash: "my", ...a ? { buttonLabel: a } : {} } : { destinationType: "portal-groups", ...a ? { buttonLabel: a } : {} };
|
|
926
|
+
case "gallery":
|
|
927
|
+
case "map-viewer":
|
|
928
|
+
case "notebooks":
|
|
929
|
+
case "scene-viewer":
|
|
930
|
+
return { destinationType: Ht[n], ...a ? { buttonLabel: a } : {} };
|
|
931
|
+
default:
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
const qe = Te(
|
|
936
|
+
async ({ groupTitle: t }, e) => {
|
|
937
|
+
const a = t.trim();
|
|
938
|
+
if (!a)
|
|
462
939
|
return null;
|
|
463
|
-
const
|
|
464
|
-
|
|
940
|
+
const n = e?.configurable?.context;
|
|
941
|
+
x(n);
|
|
465
942
|
try {
|
|
466
|
-
return (await
|
|
467
|
-
} catch (
|
|
468
|
-
return console.error("Error searching for portal group by title:",
|
|
943
|
+
return (await Xe(n.portal, { query: `title:${a}`, num: 1 }))?.results[0]?.id || null;
|
|
944
|
+
} catch (o) {
|
|
945
|
+
return console.error("Error searching for portal group by title:", o), null;
|
|
469
946
|
}
|
|
470
947
|
},
|
|
471
948
|
{
|
|
472
949
|
name: "resolvePortalGroupIdByTitle",
|
|
473
950
|
description: "Resolves an ArcGIS Portal group title to the best-match group id. Use this when a user references a group by title instead of an explicit group id.",
|
|
474
|
-
schema:
|
|
475
|
-
groupTitle:
|
|
951
|
+
schema: i.object({
|
|
952
|
+
groupTitle: i.string().describe("The portal group title to resolve to a group id.")
|
|
476
953
|
})
|
|
477
954
|
}
|
|
478
|
-
),
|
|
479
|
-
async ({ itemTitle:
|
|
480
|
-
const
|
|
481
|
-
if (!
|
|
955
|
+
), ke = Te(
|
|
956
|
+
async ({ itemTitle: t }, e) => {
|
|
957
|
+
const a = t.trim();
|
|
958
|
+
if (!a)
|
|
482
959
|
return null;
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
const { result:
|
|
486
|
-
return
|
|
960
|
+
const n = e?.configurable?.context;
|
|
961
|
+
x(n);
|
|
962
|
+
const { result: o, error: r } = await et(n.portal, a, { num: 1 });
|
|
963
|
+
return r && console.error("Error searching for portal item by title:", r), o?.results[0]?.id || null;
|
|
487
964
|
},
|
|
488
965
|
{
|
|
489
966
|
name: "resolvePortalItemIdByTitle",
|
|
490
967
|
description: 'Resolves an ArcGIS Portal item title to the best-match item id. Use this when a user references an item by title (including hash mentions like #title or #"title with spaces") instead of an explicit item id.',
|
|
491
|
-
schema:
|
|
492
|
-
itemTitle:
|
|
968
|
+
schema: i.object({
|
|
969
|
+
itemTitle: i.string().describe("The portal item title to resolve to an item id.")
|
|
493
970
|
})
|
|
494
971
|
}
|
|
495
|
-
)
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
return c ? (await R(c, t), {}) : {};
|
|
519
|
-
};
|
|
520
|
-
function Xt({
|
|
521
|
-
destinationType: e,
|
|
522
|
-
itemId: t,
|
|
523
|
-
groupId: s
|
|
524
|
-
}) {
|
|
525
|
-
switch (e) {
|
|
526
|
-
case "portal-content":
|
|
527
|
-
return { destinationType: "portal-content" };
|
|
528
|
-
case "portal-groups":
|
|
529
|
-
return { destinationType: "portal-groups" };
|
|
530
|
-
case "portal-item":
|
|
531
|
-
return t ? { destinationType: "portal-item", itemId: t } : null;
|
|
532
|
-
case "portal-group":
|
|
533
|
-
return s ? { destinationType: "portal-group", groupId: s } : null;
|
|
534
|
-
case "none":
|
|
535
|
-
return null;
|
|
536
|
-
default:
|
|
537
|
-
return T(e);
|
|
538
|
-
}
|
|
972
|
+
);
|
|
973
|
+
function N(t, e = "#") {
|
|
974
|
+
const a = t.match(new RegExp(`\\${e}"([^"]+)"`, "u"));
|
|
975
|
+
if (a?.[1])
|
|
976
|
+
return a[1].trim();
|
|
977
|
+
const n = t.match(new RegExp(`\\${e}([^\\s"']+)`, "u"));
|
|
978
|
+
return n?.[1] ? n[1].trim() : null;
|
|
979
|
+
}
|
|
980
|
+
function Xt(t) {
|
|
981
|
+
const e = W(t).flatMap((a) => {
|
|
982
|
+
const n = a, o = t[a], r = [
|
|
983
|
+
n,
|
|
984
|
+
{
|
|
985
|
+
description: o.description,
|
|
986
|
+
hints: o.hints
|
|
987
|
+
}
|
|
988
|
+
], s = o.sections ? W(o.sections).map((c) => {
|
|
989
|
+
const l = o.sections?.[c];
|
|
990
|
+
return [`${n}-${c}`, l];
|
|
991
|
+
}) : [];
|
|
992
|
+
return [r, ...s];
|
|
993
|
+
});
|
|
994
|
+
return Object.fromEntries(e);
|
|
539
995
|
}
|
|
540
|
-
|
|
996
|
+
function Zt(t) {
|
|
997
|
+
return Object.entries(t).map(([e, { description: a, hints: n }]) => ` - ${e}: ${a} (hints: ${n.join(", ")})`).join(`
|
|
998
|
+
`);
|
|
999
|
+
}
|
|
1000
|
+
const ea = {
|
|
1001
|
+
// Example prompt: "Take me to my content"
|
|
1002
|
+
"portal-content": {
|
|
1003
|
+
description: "The main content page of the portal.",
|
|
1004
|
+
hints: ["My content", "Content"]
|
|
1005
|
+
},
|
|
1006
|
+
// Example prompt: "Show my content favorites"
|
|
1007
|
+
"portal-content-favorites": {
|
|
1008
|
+
description: "The Favorites view under Content in the portal.",
|
|
1009
|
+
hints: ["My favorites", "Favorites", "Content favorites"]
|
|
1010
|
+
},
|
|
1011
|
+
// Example prompt: "Open group content"
|
|
1012
|
+
"portal-content-group": {
|
|
1013
|
+
description: "The Groups view under Content in the portal.",
|
|
1014
|
+
hints: ["Content groups", "Group content", "My groups content"]
|
|
1015
|
+
},
|
|
1016
|
+
// Example prompt: "Browse Living Atlas content"
|
|
1017
|
+
"portal-content-living-atlas": {
|
|
1018
|
+
description: "The Living Atlas view under Content in the portal.",
|
|
1019
|
+
hints: ["Living Atlas", "Content living atlas"]
|
|
1020
|
+
},
|
|
1021
|
+
// Example prompt: "Show my organization's content"
|
|
1022
|
+
"portal-content-organization": {
|
|
1023
|
+
description: "The Organization view under Content in the portal.",
|
|
1024
|
+
hints: ["Organization content", "Content organization", "My organization content"]
|
|
1025
|
+
},
|
|
1026
|
+
// Example prompt: "Open the gallery"
|
|
1027
|
+
"portal-gallery": {
|
|
1028
|
+
description: "The gallery page of the portal.",
|
|
1029
|
+
hints: ["Gallery", "Featured content", "Maps and apps"]
|
|
1030
|
+
},
|
|
1031
|
+
// Example prompt: "Go to the group called #Urban Planning"
|
|
1032
|
+
"portal-group": {
|
|
1033
|
+
description: "A specific group page in the portal.",
|
|
1034
|
+
hints: ["Group", "group page"]
|
|
1035
|
+
},
|
|
1036
|
+
// Example prompt: "Browse groups"
|
|
1037
|
+
"portal-groups": {
|
|
1038
|
+
description: "The groups listing page of the portal.",
|
|
1039
|
+
hints: ["Groups", "Browse groups"]
|
|
1040
|
+
},
|
|
1041
|
+
// Example prompt: "Show featured groups"
|
|
1042
|
+
"portal-groups-featured": {
|
|
1043
|
+
description: "The Featured groups view under Groups in the portal.",
|
|
1044
|
+
hints: ["Featured groups", "Groups featured"]
|
|
1045
|
+
},
|
|
1046
|
+
// Example prompt: "Show my groups"
|
|
1047
|
+
"portal-groups-my": {
|
|
1048
|
+
description: "The My groups view under Groups in the portal.",
|
|
1049
|
+
hints: ["My groups", "Groups my"]
|
|
1050
|
+
},
|
|
1051
|
+
// Example prompt: "Show organization groups"
|
|
1052
|
+
"portal-groups-organization": {
|
|
1053
|
+
description: "The Organization groups view under Groups in the portal.",
|
|
1054
|
+
hints: ["Organization groups", "Groups organization", "My organization groups"]
|
|
1055
|
+
},
|
|
1056
|
+
// Example prompt: "Open item #Road Closures Map"
|
|
1057
|
+
"portal-item": {
|
|
1058
|
+
description: "A specific item page in the portal.",
|
|
1059
|
+
hints: ["Item", "item page"]
|
|
1060
|
+
},
|
|
1061
|
+
// Example prompt: "Open Map Viewer"
|
|
1062
|
+
"portal-map-viewer": {
|
|
1063
|
+
description: "The Map Viewer app of the portal.",
|
|
1064
|
+
hints: ["Map Viewer", "Map", "Open map"]
|
|
1065
|
+
},
|
|
1066
|
+
// Example prompt: "Take me to notebooks"
|
|
1067
|
+
"portal-notebooks": {
|
|
1068
|
+
description: "The Notebooks home page of the portal.",
|
|
1069
|
+
hints: ["Notebooks", "Notebook home", "My notebooks"]
|
|
1070
|
+
},
|
|
1071
|
+
// Example prompt: "Open Scene Viewer"
|
|
1072
|
+
"portal-scene-viewer": {
|
|
1073
|
+
description: "The Scene Viewer app of the portal.",
|
|
1074
|
+
hints: ["Scene Viewer", "Scene", "3D scene"]
|
|
1075
|
+
},
|
|
1076
|
+
// Example prompt: "Open organization security settings"
|
|
1077
|
+
"portal-org-security": {
|
|
1078
|
+
description: "The Organization > Settings > Security page of the portal.",
|
|
1079
|
+
hints: ["Organization settings", "Security", "Organization > Settings > Security"],
|
|
1080
|
+
sections: {
|
|
1081
|
+
// Example prompt: "How do I set up custom sign in?"
|
|
1082
|
+
"custom-sign-in": {
|
|
1083
|
+
description: "The Organization > Settings > Security > Custom Sign In section of the portal.",
|
|
1084
|
+
hints: ["Custom Sign In", "Organization > Settings > Security > Custom Sign In"]
|
|
1085
|
+
},
|
|
1086
|
+
// Example prompt: "How do I configure login options?"
|
|
1087
|
+
logins: {
|
|
1088
|
+
description: "The Organization > Settings > Security > Logins section of the portal.",
|
|
1089
|
+
hints: ["Logins", "Organization > Settings > Security > Logins"]
|
|
1090
|
+
},
|
|
1091
|
+
// Example prompt: "How do I change our login provider?"
|
|
1092
|
+
"change-login-provider": {
|
|
1093
|
+
description: "The Organization > Settings > Security > Change Login Provider section of the portal.",
|
|
1094
|
+
hints: ["Change Login Provider", "Organization > Settings > Security > Change Login Provider"]
|
|
1095
|
+
},
|
|
1096
|
+
// Example prompt: "How do I configure MFA?"
|
|
1097
|
+
"multifactor-auth": {
|
|
1098
|
+
description: "The Organization > Settings > Security > Multifactor Authentication section of the portal.",
|
|
1099
|
+
hints: ["MFA", "Multifactor Authentication", "Organization > Settings > Security > MFA"]
|
|
1100
|
+
},
|
|
1101
|
+
// Example prompt: "How do I configure Enforce MFA?"
|
|
1102
|
+
"multifactor-enforcement": {
|
|
1103
|
+
description: "The Organization > Settings > Security > Enforce MFA section of the portal.",
|
|
1104
|
+
hints: ["Enforce MFA", "MFA enforcement", "Organization > Settings > Security > Enforce MFA"]
|
|
1105
|
+
},
|
|
1106
|
+
// Example prompt: "How do I set designated admins for MFA?"
|
|
1107
|
+
"multifactor-designated-admins": {
|
|
1108
|
+
description: "The Organization > Settings > Security > Designated Admins section of the portal.",
|
|
1109
|
+
hints: ["Designated admins", "MFA designated admins", "Organization > Settings > Security > Designated Admins"]
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
},
|
|
1113
|
+
// Example prompt: "I want to add a new item"
|
|
1114
|
+
"portal-content-new-item": {
|
|
1115
|
+
description: "The Content page with the New Item flow opened.",
|
|
1116
|
+
hints: ["New item", "Create new item", "Content > My Content > New Item"],
|
|
1117
|
+
sections: {
|
|
1118
|
+
// Example prompt: "Create a new feature layer"
|
|
1119
|
+
"feature-layer": {
|
|
1120
|
+
description: "The Content page with New Item flow set to Feature Layer as the starting step.",
|
|
1121
|
+
hints: ["Feature Layer", "New Feature Layer", "Content > My Content > New Item > Feature Layer"]
|
|
1122
|
+
},
|
|
1123
|
+
// Example prompt: "Create developer credentials"
|
|
1124
|
+
"developer-credentials": {
|
|
1125
|
+
description: "The Content page with New Item flow set to Developer Credentials as the starting step.",
|
|
1126
|
+
hints: [
|
|
1127
|
+
"Developer Credentials",
|
|
1128
|
+
"New developer credentials",
|
|
1129
|
+
"Content > My Content > New Item > Developer Credentials"
|
|
1130
|
+
]
|
|
1131
|
+
},
|
|
1132
|
+
// Example prompt: "Add an item from a URL"
|
|
1133
|
+
url: {
|
|
1134
|
+
description: "The Content page with New Item flow set to URL as the starting step for adding a URL-based item, such as a service endpoint.",
|
|
1135
|
+
hints: ["URL item", "Add item from URL", "Register service URL", "Content > My Content > New Item > URL"]
|
|
1136
|
+
},
|
|
1137
|
+
// Example prompt: "Create a new application item"
|
|
1138
|
+
application: {
|
|
1139
|
+
description: "The Content page with New Item flow set to Application as the starting step for creating an application item in content.",
|
|
1140
|
+
hints: [
|
|
1141
|
+
"Application item",
|
|
1142
|
+
"Create application item",
|
|
1143
|
+
"Register app item",
|
|
1144
|
+
"Content > My Content > New Item > Application"
|
|
1145
|
+
]
|
|
1146
|
+
},
|
|
1147
|
+
// Example prompt: "Create a hosted tile layer"
|
|
1148
|
+
"tile-layer": {
|
|
1149
|
+
description: "The Content page with New Item flow set to Tile Layer as the starting step for publishing a hosted tile layer.",
|
|
1150
|
+
hints: [
|
|
1151
|
+
"Tile Layer",
|
|
1152
|
+
"Create hosted tile layer",
|
|
1153
|
+
"Publish tile layer",
|
|
1154
|
+
"Content > My Content > New Item > Tile Layer"
|
|
1155
|
+
]
|
|
1156
|
+
},
|
|
1157
|
+
// Example prompt: "Create a hosted scene layer"
|
|
1158
|
+
"scene-layer": {
|
|
1159
|
+
description: "The Content page with New Item flow set to Scene Layer as the starting step for publishing a hosted scene layer.",
|
|
1160
|
+
hints: [
|
|
1161
|
+
"Scene Layer",
|
|
1162
|
+
"Create hosted scene layer",
|
|
1163
|
+
"Publish scene layer",
|
|
1164
|
+
"Content > My Content > New Item > Scene Layer"
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1167
|
+
// Example prompt: "Create a new locator"
|
|
1168
|
+
locator: {
|
|
1169
|
+
description: "The Content page with New Item flow set to Locator as the starting step for creating or publishing a locator used for geocoding.",
|
|
1170
|
+
hints: ["Locator", "Create locator", "Publish locator", "Content > My Content > New Item > Locator"]
|
|
1171
|
+
},
|
|
1172
|
+
// Example prompt: "Create a data store item"
|
|
1173
|
+
"data-store": {
|
|
1174
|
+
description: "The Content page with New Item flow set to Data Store as the starting step for registering a data store connection.",
|
|
1175
|
+
hints: [
|
|
1176
|
+
"Data Store",
|
|
1177
|
+
"Register data store",
|
|
1178
|
+
"Data store connection",
|
|
1179
|
+
"Content > My Content > New Item > Data Store"
|
|
1180
|
+
]
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}, Ee = Xt(ea), ta = W(Ee), aa = Zt(Ee), na = `
|
|
541
1185
|
You decide whether the assistant response should include a navigation action to ArcGIS Portal.
|
|
542
1186
|
|
|
543
1187
|
Given the user question and assistant response:
|
|
544
1188
|
- Decide if a navigation action would help the user complete the task.
|
|
545
|
-
- If yes, choose one
|
|
546
|
-
|
|
547
|
-
- portal-groups: groups listing page
|
|
548
|
-
- portal-item: specific item page (requires itemId)
|
|
549
|
-
- portal-group: specific group page (requires groupId)
|
|
1189
|
+
- If yes, choose one destinationType:
|
|
1190
|
+
${aa}
|
|
550
1191
|
|
|
551
1192
|
Rules:
|
|
1193
|
+
- Only suggest navigation when you are highly confident the destination will help complete the user's task.
|
|
1194
|
+
- If confidence is below 0.85, set shouldSuggestNavigation=false and destinationType=none.
|
|
1195
|
+
- If there is no clear destination from the allowed types, set shouldSuggestNavigation=false and destinationType=none.
|
|
552
1196
|
- If no navigation is useful, set shouldSuggestNavigation=false and destinationType=none.
|
|
553
|
-
-
|
|
554
|
-
-
|
|
555
|
-
-
|
|
556
|
-
-
|
|
557
|
-
-
|
|
1197
|
+
- Prefer the most specific destination that is clearly supported by the question and response.
|
|
1198
|
+
- Use entity-level destinations over collection/root destinations when both could apply and the entity target is explicit.
|
|
1199
|
+
- Use collection/root destinations only for generic browsing intent with no specific entity target.
|
|
1200
|
+
- If a chosen destination requires parameters, include all required parameters.
|
|
1201
|
+
- If required parameters are missing or uncertain, set shouldSuggestNavigation=false and destinationType=none.
|
|
1202
|
+
- Do not invent required parameters.
|
|
1203
|
+
- Always include a confidence score from 0 to 1 in the output.
|
|
1204
|
+
- Confidence means confidence that a navigation suggestion should be shown to the user.
|
|
1205
|
+
- If shouldSuggestNavigation=false or destinationType=none, confidence must be <= 0.5.
|
|
1206
|
+
- Use confidence >= 0.85 only when shouldSuggestNavigation=true and destinationType is not none.
|
|
558
1207
|
|
|
559
1208
|
User question:
|
|
560
1209
|
{question}
|
|
561
1210
|
|
|
562
1211
|
Assistant response:
|
|
563
1212
|
{response}
|
|
564
|
-
`,
|
|
565
|
-
|
|
566
|
-
|
|
1213
|
+
`, le = i.object({
|
|
1214
|
+
shouldSuggestNavigation: i.boolean().default(!1),
|
|
1215
|
+
destinationType: i.enum(["none", ...ta]).default("none"),
|
|
1216
|
+
itemId: i.string().default(""),
|
|
1217
|
+
groupId: i.string().default(""),
|
|
1218
|
+
confidence: i.number().min(0).max(1).default(0)
|
|
1219
|
+
});
|
|
1220
|
+
let ue;
|
|
1221
|
+
async function oa() {
|
|
1222
|
+
return ue ??= H({ modelTier: "fast" }), await ue;
|
|
1223
|
+
}
|
|
1224
|
+
const ra = async (t, e) => {
|
|
1225
|
+
const a = performance.now();
|
|
1226
|
+
try {
|
|
1227
|
+
await p({ text: "Extracting navigation intent...", agentName: "doc-assistant" }, e);
|
|
1228
|
+
const n = t.outputMessage.trim();
|
|
1229
|
+
if (!n)
|
|
1230
|
+
return {};
|
|
1231
|
+
const o = v(t.agentExecutionContext.messages).trim(), r = await X.fromTemplate(na).format({
|
|
1232
|
+
question: o,
|
|
1233
|
+
response: n
|
|
1234
|
+
}), c = (await oa()).withStructuredOutput(le), l = le.parse(await c.invoke(r));
|
|
1235
|
+
if (!l.shouldSuggestNavigation || l.destinationType === "none")
|
|
1236
|
+
return {};
|
|
1237
|
+
if (l.destinationType === "portal-item" && !l.itemId) {
|
|
1238
|
+
const u = N(o, "#");
|
|
1239
|
+
u && (l.itemId = await ke.invoke({ itemTitle: u }, e) ?? "");
|
|
1240
|
+
}
|
|
1241
|
+
if (l.destinationType === "portal-group" && !l.groupId) {
|
|
1242
|
+
const u = N(o, "$") ?? N(o, "#");
|
|
1243
|
+
u && (l.groupId = await qe.invoke({ groupTitle: u }, e) ?? "");
|
|
1244
|
+
}
|
|
1245
|
+
const d = ia(l);
|
|
1246
|
+
return d ? (await O(d, e), {}) : {};
|
|
1247
|
+
} finally {
|
|
1248
|
+
console.info("[arcgis-portal-ai-assistant] node timing", {
|
|
1249
|
+
agent: "portal-doc-assistant",
|
|
1250
|
+
node: "extractNavigationIntent",
|
|
1251
|
+
durationMs: Number((performance.now() - a).toFixed(1))
|
|
1252
|
+
});
|
|
1253
|
+
}
|
|
1254
|
+
};
|
|
1255
|
+
function ia({
|
|
1256
|
+
destinationType: t,
|
|
1257
|
+
itemId: e,
|
|
1258
|
+
groupId: a
|
|
1259
|
+
}) {
|
|
1260
|
+
const n = S().find((o) => o.id === t);
|
|
1261
|
+
if (n)
|
|
1262
|
+
return A({
|
|
1263
|
+
navigate: n.resolutions.navigate,
|
|
1264
|
+
buttonLabel: n.buttonLabel,
|
|
1265
|
+
capabilityId: n.id
|
|
1266
|
+
});
|
|
1267
|
+
switch (t) {
|
|
1268
|
+
case "portal-gallery":
|
|
1269
|
+
case "portal-map-viewer":
|
|
1270
|
+
case "portal-notebooks":
|
|
1271
|
+
case "portal-scene-viewer":
|
|
1272
|
+
return { destinationType: t };
|
|
1273
|
+
case "portal-item":
|
|
1274
|
+
return e ? { destinationType: t, itemId: e } : void 0;
|
|
1275
|
+
case "portal-group":
|
|
1276
|
+
return a ? { destinationType: t, groupId: a } : void 0;
|
|
1277
|
+
case "none":
|
|
1278
|
+
return;
|
|
1279
|
+
default:
|
|
1280
|
+
switch (t) {
|
|
1281
|
+
case "portal-groups":
|
|
1282
|
+
return A({ navigate: { routeKey: "groups" } });
|
|
1283
|
+
case "portal-content-favorites":
|
|
1284
|
+
case "portal-content-group":
|
|
1285
|
+
case "portal-content-living-atlas":
|
|
1286
|
+
case "portal-content-organization":
|
|
1287
|
+
return A({ navigate: { routeKey: "content", hash: (() => {
|
|
1288
|
+
switch (t) {
|
|
1289
|
+
case "portal-content-favorites":
|
|
1290
|
+
return "favorites";
|
|
1291
|
+
case "portal-content-group":
|
|
1292
|
+
return "group";
|
|
1293
|
+
case "portal-content-living-atlas":
|
|
1294
|
+
return "living-atlas";
|
|
1295
|
+
case "portal-content-organization":
|
|
1296
|
+
return "org";
|
|
1297
|
+
default:
|
|
1298
|
+
return F(t);
|
|
1299
|
+
}
|
|
1300
|
+
})() } });
|
|
1301
|
+
case "portal-org-security":
|
|
1302
|
+
return A({
|
|
1303
|
+
navigate: { routeKey: "organization", hash: "settings", queryParams: { tab: "security" } }
|
|
1304
|
+
});
|
|
1305
|
+
default:
|
|
1306
|
+
return;
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
const ze = h.Root({
|
|
1311
|
+
...q()
|
|
1312
|
+
}), sa = () => new P(ze).addNode("answerDocQuestion", Qt).addNode("extractNavigationIntent", ra).addEdge(G, "answerDocQuestion").addEdge("answerDocQuestion", "extractNavigationIntent").addEdge("extractNavigationIntent", w), ca = String.raw`- **portal-doc-assistant** - General ArcGIS documentation and Portal help assistant:
|
|
567
1313
|
- answers general ArcGIS, Portal, Enterprise, and JavaScript SDK questions
|
|
568
1314
|
- acts as a fallback when specialized agents are not applicable
|
|
569
|
-
`,
|
|
1315
|
+
`, la = {
|
|
570
1316
|
id: "portal-doc-assistant",
|
|
571
1317
|
name: "Portal Doc Assistant",
|
|
572
|
-
description:
|
|
573
|
-
createGraph:
|
|
574
|
-
workspace:
|
|
575
|
-
},
|
|
1318
|
+
description: ca,
|
|
1319
|
+
createGraph: sa,
|
|
1320
|
+
workspace: ze
|
|
1321
|
+
}, ua = () => ({ latestGroupId: null, memory: {} }), L = (t) => {
|
|
1322
|
+
const e = t?.agentExecutionContext.sharedState.portalGroupSummaryMemory?.value;
|
|
1323
|
+
return e ? { latestGroupId: e.latestGroupId, memory: e.memory } : ua();
|
|
1324
|
+
}, Re = `
|
|
576
1325
|
Shared markdown formatting rules:
|
|
577
1326
|
- Use clear markdown headings (##) to separate sections.
|
|
578
1327
|
- Use concise bullet points for lists of facts, counts, or signals.
|
|
579
1328
|
- Emphasize key metrics with bold labels (for example: **Recent items:** 4).
|
|
580
1329
|
- Keep wording direct and analytical; avoid filler language but make sure the language is friendly.
|
|
581
1330
|
- Do not include raw internal IDs unless explicitly requested.
|
|
582
|
-
`,
|
|
583
|
-
const t = e?.agentExecutionContext.sharedState.portalGroupSummaryMemory?.value;
|
|
584
|
-
return t ? { latestGroupId: t.latestGroupId, memory: t.memory } : ae();
|
|
585
|
-
}, re = async (e, t) => {
|
|
586
|
-
await g({ text: "Answering group follow-up...", agentName: "group-analytics" }, t);
|
|
587
|
-
const s = q(e), a = e.groupSummaryGroupId ?? s.latestGroupId, r = a ? s.memory[a] : void 0, i = e.groupSummaryQuestion || x(e.agentExecutionContext.messages);
|
|
588
|
-
return r ? {
|
|
589
|
-
status: "success",
|
|
590
|
-
outputMessage: (await b({
|
|
591
|
-
promptText: ne,
|
|
592
|
-
schema: oe,
|
|
593
|
-
modelTier: "default",
|
|
594
|
-
inputVariables: {
|
|
595
|
-
summary: r.summary,
|
|
596
|
-
question: i,
|
|
597
|
-
fullContext: JSON.stringify(r.fullContext)
|
|
598
|
-
}
|
|
599
|
-
})).answer
|
|
600
|
-
} : {
|
|
601
|
-
status: "success",
|
|
602
|
-
outputMessage: "I do not have group analytics context yet. Ask me to analyze a group first with analyze group <group id>."
|
|
603
|
-
};
|
|
604
|
-
}, oe = o.object({
|
|
605
|
-
answer: o.string(),
|
|
606
|
-
isRelevant: o.boolean()
|
|
607
|
-
}), ne = `
|
|
1331
|
+
`, da = `
|
|
608
1332
|
You answer follow-up questions about ArcGIS group analytics.
|
|
609
1333
|
|
|
610
|
-
${
|
|
1334
|
+
${Re}
|
|
611
1335
|
|
|
612
1336
|
Ground your answer in the provided group analytics summary and context.
|
|
613
1337
|
If the answer is not available from the provided context, state that clearly and suggest what to check next.
|
|
@@ -629,30 +1353,29 @@ Group full context:
|
|
|
629
1353
|
|
|
630
1354
|
Question:
|
|
631
1355
|
{question}
|
|
632
|
-
`,
|
|
633
|
-
await
|
|
634
|
-
const
|
|
635
|
-
|
|
636
|
-
hasAnalyticsContext: String(a)
|
|
637
|
-
}), l = await U({
|
|
638
|
-
model: await D({ modelTier: "fast" }),
|
|
639
|
-
tools: [Z],
|
|
640
|
-
systemPrompt: r,
|
|
641
|
-
responseFormat: ue,
|
|
642
|
-
checkpointer: !0
|
|
643
|
-
}).invoke({ messages: e.agentExecutionContext.messages }, t), { intent: u, groupId: c, question: n } = l.structuredResponse, m = u === "summarize" && !c, p = u === "followUp" && !(n ?? "").trim(), d = u === "clarify" || m || p;
|
|
644
|
-
return {
|
|
645
|
-
groupSummaryIntent: d ? "clarify" : u,
|
|
646
|
-
groupSummaryGroupId: c || null,
|
|
647
|
-
groupSummaryQuestion: n || "",
|
|
1356
|
+
`, pa = async (t, e) => {
|
|
1357
|
+
await p({ text: "Answering group follow-up...", agentName: "group-analytics" }, e);
|
|
1358
|
+
const a = L(t), n = t.groupSummaryGroupId ?? a.latestGroupId, o = n ? a.memory[n] : void 0, r = t.groupSummaryQuestion || v(t.agentExecutionContext.messages);
|
|
1359
|
+
return o ? {
|
|
648
1360
|
status: "success",
|
|
649
|
-
outputMessage:
|
|
1361
|
+
outputMessage: (await b({
|
|
1362
|
+
promptText: da,
|
|
1363
|
+
schema: ma,
|
|
1364
|
+
modelTier: "default",
|
|
1365
|
+
inputVariables: {
|
|
1366
|
+
summary: o.summary,
|
|
1367
|
+
question: r,
|
|
1368
|
+
fullContext: JSON.stringify(o.fullContext)
|
|
1369
|
+
}
|
|
1370
|
+
})).answer
|
|
1371
|
+
} : {
|
|
1372
|
+
status: "success",
|
|
1373
|
+
outputMessage: "I do not have group analytics context yet. Ask me to analyze a group first with analyze group <group id>."
|
|
650
1374
|
};
|
|
651
|
-
},
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
}), le = `
|
|
1375
|
+
}, ma = i.object({
|
|
1376
|
+
answer: i.string(),
|
|
1377
|
+
isRelevant: i.boolean()
|
|
1378
|
+
}), ga = `
|
|
656
1379
|
Classify the user's request for ArcGIS Portal group analytics.
|
|
657
1380
|
|
|
658
1381
|
Rules:
|
|
@@ -681,142 +1404,121 @@ hasAnalyticsContext:
|
|
|
681
1404
|
|
|
682
1405
|
User message:
|
|
683
1406
|
{userMessage}
|
|
684
|
-
`,
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
1407
|
+
`, ha = async (t, e) => {
|
|
1408
|
+
await p({ text: "Analyzing group-analytics intent...", agentName: "group-analytics" }, e);
|
|
1409
|
+
const a = v(t.agentExecutionContext.messages), n = !!L(t).latestGroupId, o = await X.fromTemplate(ga).format({
|
|
1410
|
+
userMessage: a,
|
|
1411
|
+
hasAnalyticsContext: String(n)
|
|
1412
|
+
}), s = (await H({ modelTier: "fast" })).withStructuredOutput(de), c = de.parse(await s.invoke(o));
|
|
1413
|
+
let l = c.groupId;
|
|
1414
|
+
if ((c.intent === "summarize" || c.intent === "navigation") && !l) {
|
|
1415
|
+
const y = N(a, "$");
|
|
1416
|
+
y && (l = await qe.invoke({ groupTitle: y }, e) ?? "");
|
|
1417
|
+
}
|
|
1418
|
+
const { intent: d, question: u } = c, m = d === "summarize" && !l, g = d === "followUp" && !(u ?? "").trim(), f = d === "clarify" || m || g;
|
|
1419
|
+
return {
|
|
1420
|
+
groupSummaryIntent: f ? "clarify" : d,
|
|
1421
|
+
groupSummaryGroupId: l || null,
|
|
1422
|
+
groupSummaryQuestion: u || "",
|
|
1423
|
+
status: "success",
|
|
1424
|
+
outputMessage: f ? "Please clarify with a group id or title" : ""
|
|
1425
|
+
};
|
|
1426
|
+
}, de = i.object({
|
|
1427
|
+
intent: i.enum(["summarize", "followUp", "navigation", "clarify"]),
|
|
1428
|
+
groupId: i.string().default(""),
|
|
1429
|
+
question: i.string().default("")
|
|
1430
|
+
}), fa = async (t, e) => {
|
|
1431
|
+
const a = L(t), n = t.groupSummaryGroupId ?? a.latestGroupId;
|
|
1432
|
+
return await p({ text: "Preparing navigation...", agentName: "group-analytics" }, e), await O(
|
|
1433
|
+
n ? { destinationType: "portal-group", groupId: n } : { destinationType: "portal-groups" },
|
|
1434
|
+
e
|
|
689
1435
|
), { status: "success" };
|
|
690
1436
|
};
|
|
691
|
-
function
|
|
692
|
-
return
|
|
1437
|
+
function De({ timestamp: t, now: e, windowMs: a }) {
|
|
1438
|
+
return t ? e - t <= a : !1;
|
|
693
1439
|
}
|
|
694
|
-
const
|
|
695
|
-
function
|
|
696
|
-
const
|
|
1440
|
+
const ya = 720 * 60 * 60 * 1e3;
|
|
1441
|
+
function wa(t) {
|
|
1442
|
+
const e = at(t);
|
|
697
1443
|
return {
|
|
698
|
-
id:
|
|
699
|
-
title:
|
|
700
|
-
description:
|
|
701
|
-
snippet:
|
|
702
|
-
access:
|
|
703
|
-
owner:
|
|
704
|
-
tags:
|
|
705
|
-
created:
|
|
706
|
-
modified:
|
|
707
|
-
isInvitationOnly:
|
|
1444
|
+
id: t.id ?? "",
|
|
1445
|
+
title: t.title ?? "",
|
|
1446
|
+
description: t.description ?? "",
|
|
1447
|
+
snippet: t.snippet ?? "",
|
|
1448
|
+
access: t.access ?? null,
|
|
1449
|
+
owner: t.owner ?? "",
|
|
1450
|
+
tags: t.tags ?? [],
|
|
1451
|
+
created: t.created?.getTime(),
|
|
1452
|
+
modified: t.modified?.getTime(),
|
|
1453
|
+
isInvitationOnly: t.isInvitationOnly,
|
|
708
1454
|
sourceSignals: {
|
|
709
|
-
capabilities:
|
|
710
|
-
membershipAccess:
|
|
711
|
-
isOpenData:
|
|
712
|
-
isDistributedCollaborationGroup:
|
|
713
|
-
orgId:
|
|
714
|
-
hiddenMembers:
|
|
715
|
-
isViewOnly:
|
|
716
|
-
isReadOnly:
|
|
717
|
-
leavingDisallowed:
|
|
1455
|
+
capabilities: it(t),
|
|
1456
|
+
membershipAccess: rt(t),
|
|
1457
|
+
isOpenData: ot(t),
|
|
1458
|
+
isDistributedCollaborationGroup: nt(t),
|
|
1459
|
+
orgId: e.orgId,
|
|
1460
|
+
hiddenMembers: e.hiddenMembers,
|
|
1461
|
+
isViewOnly: e.isViewOnly,
|
|
1462
|
+
isReadOnly: e.isReadOnly,
|
|
1463
|
+
leavingDisallowed: e.leavingDisallowed
|
|
718
1464
|
}
|
|
719
1465
|
};
|
|
720
1466
|
}
|
|
721
|
-
async function
|
|
722
|
-
const
|
|
1467
|
+
async function ba(t) {
|
|
1468
|
+
const e = { owner: t.owner ?? "", admins: [], users: [] };
|
|
723
1469
|
try {
|
|
724
|
-
return await
|
|
725
|
-
} catch (
|
|
726
|
-
return console.warn("Unable to fetch group members for analytics context",
|
|
1470
|
+
return await t.fetchMembers();
|
|
1471
|
+
} catch (a) {
|
|
1472
|
+
return console.warn("Unable to fetch group members for analytics context", a), e;
|
|
727
1473
|
}
|
|
728
1474
|
}
|
|
729
|
-
function
|
|
730
|
-
return
|
|
731
|
-
id:
|
|
732
|
-
title:
|
|
733
|
-
type:
|
|
734
|
-
owner:
|
|
735
|
-
created:
|
|
736
|
-
modified:
|
|
1475
|
+
function va(t) {
|
|
1476
|
+
return t.map((e) => ({
|
|
1477
|
+
id: e.id ?? "",
|
|
1478
|
+
title: e.title ?? "Untitled",
|
|
1479
|
+
type: e.type ?? "Unknown",
|
|
1480
|
+
owner: e.owner ?? "",
|
|
1481
|
+
created: e.created?.getTime(),
|
|
1482
|
+
modified: e.modified?.getTime()
|
|
737
1483
|
}));
|
|
738
1484
|
}
|
|
739
|
-
function
|
|
740
|
-
return
|
|
741
|
-
(
|
|
1485
|
+
function Ia(t, e) {
|
|
1486
|
+
return t.filter(
|
|
1487
|
+
(a) => a.modified ? De({ timestamp: a.modified, now: e, windowMs: ya }) : !1
|
|
742
1488
|
);
|
|
743
1489
|
}
|
|
744
|
-
function
|
|
745
|
-
const
|
|
746
|
-
for (const
|
|
747
|
-
|
|
748
|
-
return [...
|
|
1490
|
+
function Sa(t) {
|
|
1491
|
+
const e = /* @__PURE__ */ new Map();
|
|
1492
|
+
for (const a of t)
|
|
1493
|
+
e.set(a.type, (e.get(a.type) ?? 0) + 1);
|
|
1494
|
+
return [...e.entries()].sort((a, n) => n[1] - a[1] || a[0].localeCompare(n[0])).slice(0, 6).map(([a, n]) => ({ type: a, count: n }));
|
|
749
1495
|
}
|
|
750
|
-
async function
|
|
751
|
-
const
|
|
1496
|
+
async function xa(t) {
|
|
1497
|
+
const e = await t.queryItems({ num: 20, sortField: "modified", sortOrder: "desc" }), a = va(e.results), n = Date.now();
|
|
752
1498
|
return {
|
|
753
|
-
total:
|
|
754
|
-
topItems:
|
|
755
|
-
recentlyModifiedItems:
|
|
756
|
-
topItemTypes:
|
|
1499
|
+
total: e.total,
|
|
1500
|
+
topItems: a,
|
|
1501
|
+
recentlyModifiedItems: Ia(a, n),
|
|
1502
|
+
topItemTypes: Sa(a)
|
|
757
1503
|
};
|
|
758
1504
|
}
|
|
759
|
-
async function
|
|
760
|
-
if (!
|
|
1505
|
+
async function Ca(t, e) {
|
|
1506
|
+
if (!e)
|
|
761
1507
|
return { error: { code: "missingGroupId", message: "Group id is required." } };
|
|
762
1508
|
try {
|
|
763
|
-
const
|
|
764
|
-
if (!
|
|
765
|
-
return { error: { code: "groupNotFound", message: `No group found for id: ${
|
|
766
|
-
const
|
|
767
|
-
return { result: { group:
|
|
768
|
-
} catch (
|
|
769
|
-
return console.error("Error fetching portal group analytics context:",
|
|
1509
|
+
const n = (await t.queryGroups({ query: `id:${e}`, num: 1 })).results[0];
|
|
1510
|
+
if (!n)
|
|
1511
|
+
return { error: { code: "groupNotFound", message: `No group found for id: ${e}` } };
|
|
1512
|
+
const o = wa(n), r = await ba(n), s = await xa(n);
|
|
1513
|
+
return { result: { group: o, members: r, items: s } };
|
|
1514
|
+
} catch (a) {
|
|
1515
|
+
return console.error("Error fetching portal group analytics context:", a), { error: { code: "unhandledError" } };
|
|
770
1516
|
}
|
|
771
1517
|
}
|
|
772
|
-
const
|
|
773
|
-
const s = e.groupSummaryGroupId;
|
|
774
|
-
if (!s)
|
|
775
|
-
return {
|
|
776
|
-
status: "success",
|
|
777
|
-
outputMessage: 'Please clarify with analyze group <group id>, analyze group $<title>, or analyze group $"<title with spaces>".'
|
|
778
|
-
};
|
|
779
|
-
await g({ text: `Analyzing group ${s}...`, agentName: "group-analytics" }, t);
|
|
780
|
-
const a = t?.configurable?.context;
|
|
781
|
-
I(a);
|
|
782
|
-
const { result: r, error: i } = await we(a.portal, s);
|
|
783
|
-
if (i || !r)
|
|
784
|
-
return await g({ text: "Failed to fetch group context", agentName: "group-analytics" }, t), {
|
|
785
|
-
status: "success",
|
|
786
|
-
outputMessage: "Unable to retrieve group context for analytics."
|
|
787
|
-
};
|
|
788
|
-
const { group: l, items: u } = r, c = Date.now(), n = l.modified, m = n ? at({ timestamp: n, now: c, windowMs: be }) : !1, p = u.recentlyModifiedItems.length, d = p > 0, y = m || d, v = await b({
|
|
789
|
-
promptText: ve,
|
|
790
|
-
schema: xe,
|
|
791
|
-
modelTier: "default",
|
|
792
|
-
inputVariables: {
|
|
793
|
-
context: JSON.stringify(r),
|
|
794
|
-
deterministicSignals: JSON.stringify({
|
|
795
|
-
isGroupActive: y,
|
|
796
|
-
isGroupRecentlyModified: m,
|
|
797
|
-
hasRecentlyAddedOrUpdatedContent: d,
|
|
798
|
-
recentItemCount: p
|
|
799
|
-
})
|
|
800
|
-
}
|
|
801
|
-
}), { followUpQuestions: w, summary: S } = v, nt = q(e), it = {
|
|
802
|
-
latestGroupId: s,
|
|
803
|
-
memory: {
|
|
804
|
-
...nt.memory,
|
|
805
|
-
[s]: { summary: S, followUpQuestions: w, fullContext: r }
|
|
806
|
-
}
|
|
807
|
-
};
|
|
808
|
-
return w.length && await E({ type: "suggested-prompts", data: { prompts: w } }, t), {
|
|
809
|
-
status: "success",
|
|
810
|
-
outputMessage: S,
|
|
811
|
-
sharedStatePatch: { portalGroupSummaryMemory: { value: it } }
|
|
812
|
-
};
|
|
813
|
-
}, xe = o.object({
|
|
814
|
-
summary: o.string(),
|
|
815
|
-
followUpQuestions: o.array(o.string()).default([])
|
|
816
|
-
}), ve = `
|
|
1518
|
+
const Ma = `
|
|
817
1519
|
You summarize ArcGIS Portal groups based on structured context and deterministic activity signals.
|
|
818
1520
|
|
|
819
|
-
${
|
|
1521
|
+
${Re}
|
|
820
1522
|
|
|
821
1523
|
Output format requirements:
|
|
822
1524
|
- Return concise markdown with clear sections in this order:
|
|
@@ -852,57 +1554,82 @@ Group context:
|
|
|
852
1554
|
|
|
853
1555
|
Deterministic signals:
|
|
854
1556
|
{deterministicSignals}
|
|
855
|
-
`,
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
1557
|
+
`, Ta = 2160 * 60 * 60 * 1e3, Aa = async (t, e) => {
|
|
1558
|
+
const a = t.groupSummaryGroupId;
|
|
1559
|
+
if (!a)
|
|
1560
|
+
return {
|
|
1561
|
+
status: "success",
|
|
1562
|
+
outputMessage: 'Please clarify with analyze group <group id>, analyze group $<title>, or analyze group $"<title with spaces>".'
|
|
1563
|
+
};
|
|
1564
|
+
await p({ text: `Analyzing group ${a}...`, agentName: "group-analytics" }, e);
|
|
1565
|
+
const n = e?.configurable?.context;
|
|
1566
|
+
x(n);
|
|
1567
|
+
const { result: o, error: r } = await Ca(n.portal, a);
|
|
1568
|
+
if (r || !o)
|
|
1569
|
+
return await p({ text: "Failed to fetch group context", agentName: "group-analytics" }, e), {
|
|
1570
|
+
status: "success",
|
|
1571
|
+
outputMessage: "Unable to retrieve group context for analytics."
|
|
1572
|
+
};
|
|
1573
|
+
const { group: s, items: c } = o, l = Date.now(), d = s.modified, u = d ? De({ timestamp: d, now: l, windowMs: Ta }) : !1, m = c.recentlyModifiedItems.length, g = m > 0, f = u || g, y = await b({
|
|
1574
|
+
promptText: Ma,
|
|
1575
|
+
schema: Na,
|
|
1576
|
+
modelTier: "default",
|
|
1577
|
+
inputVariables: {
|
|
1578
|
+
context: JSON.stringify(o),
|
|
1579
|
+
deterministicSignals: JSON.stringify({
|
|
1580
|
+
isGroupActive: f,
|
|
1581
|
+
isGroupRecentlyModified: u,
|
|
1582
|
+
hasRecentlyAddedOrUpdatedContent: g,
|
|
1583
|
+
recentItemCount: m
|
|
1584
|
+
})
|
|
1585
|
+
}
|
|
1586
|
+
}), { followUpQuestions: M, summary: k } = y, C = L(t), T = {
|
|
1587
|
+
latestGroupId: a,
|
|
1588
|
+
memory: {
|
|
1589
|
+
...C.memory,
|
|
1590
|
+
[a]: { summary: k, followUpQuestions: M, fullContext: o }
|
|
1591
|
+
}
|
|
1592
|
+
};
|
|
1593
|
+
return M.length && await Y({ type: "suggested-prompts", data: { prompts: M } }, e), {
|
|
1594
|
+
status: "success",
|
|
1595
|
+
outputMessage: k,
|
|
1596
|
+
sharedStatePatch: { portalGroupSummaryMemory: { value: T } }
|
|
1597
|
+
};
|
|
1598
|
+
}, Na = i.object({
|
|
1599
|
+
summary: i.string(),
|
|
1600
|
+
followUpQuestions: i.array(i.string()).default([])
|
|
1601
|
+
}), j = (t, e) => e ?? t, $e = h.Root({
|
|
1602
|
+
...q(),
|
|
1603
|
+
groupSummaryIntent: h({
|
|
1604
|
+
reducer: j,
|
|
859
1605
|
default: () => "clarify"
|
|
860
1606
|
}),
|
|
861
|
-
groupSummaryGroupId:
|
|
862
|
-
reducer:
|
|
1607
|
+
groupSummaryGroupId: h({
|
|
1608
|
+
reducer: j,
|
|
863
1609
|
default: () => null
|
|
864
1610
|
}),
|
|
865
|
-
groupSummaryQuestion:
|
|
866
|
-
reducer:
|
|
1611
|
+
groupSummaryQuestion: h({
|
|
1612
|
+
reducer: j,
|
|
867
1613
|
default: () => ""
|
|
868
1614
|
})
|
|
869
|
-
}),
|
|
1615
|
+
}), Pa = () => new P($e).addNode("detectGroupSummaryIntent", ha).addNode("summarizePortalGroup", Aa).addNode("answerGroupSummaryFollowUp", pa).addNode("suggestGroupSummaryNavigation", fa).addEdge(G, "detectGroupSummaryIntent").addConditionalEdges("detectGroupSummaryIntent", (e) => e.groupSummaryIntent === "summarize" ? "summarizePortalGroup" : e.groupSummaryIntent === "followUp" ? "answerGroupSummaryFollowUp" : e.groupSummaryIntent === "navigation" ? "suggestGroupSummaryNavigation" : w).addEdge("summarizePortalGroup", w).addEdge("answerGroupSummaryFollowUp", w).addEdge("suggestGroupSummaryNavigation", w), Ga = String.raw`- **portal-group-analytics** - Portal group analytics assistant:
|
|
870
1616
|
- summarizes ArcGIS portal groups from group context and sourceJSON details
|
|
871
1617
|
- answers follow-up questions grounded in the summarized group
|
|
872
1618
|
- suggests navigation to groups when relevant
|
|
873
|
-
`,
|
|
1619
|
+
`, qa = {
|
|
874
1620
|
id: "portal-group-analytics",
|
|
875
1621
|
name: "Portal Group Analytics",
|
|
876
|
-
description:
|
|
877
|
-
createGraph:
|
|
878
|
-
workspace:
|
|
879
|
-
},
|
|
880
|
-
const
|
|
881
|
-
return
|
|
882
|
-
},
|
|
883
|
-
intent:
|
|
884
|
-
itemId:
|
|
885
|
-
question:
|
|
886
|
-
}),
|
|
887
|
-
await g({ text: "Answering follow-up...", agentName: "analytics" }, t);
|
|
888
|
-
const s = F(e), a = e.analyticsItemId ?? s.latestItemId, r = a ? s.memory[a] : void 0, i = e.analyticsQuestion || x(e.agentExecutionContext.messages);
|
|
889
|
-
return r ? {
|
|
890
|
-
status: "success",
|
|
891
|
-
outputMessage: (await b({
|
|
892
|
-
promptText: qe,
|
|
893
|
-
schema: Pe,
|
|
894
|
-
modelTier: "default",
|
|
895
|
-
inputVariables: {
|
|
896
|
-
summary: r.summary,
|
|
897
|
-
question: i,
|
|
898
|
-
fullContext: JSON.stringify(r.fullContext)
|
|
899
|
-
}
|
|
900
|
-
})).answer
|
|
901
|
-
} : {
|
|
902
|
-
status: "success",
|
|
903
|
-
outputMessage: "I don't have enough information yet. Please ask me to summarize the item first using summarize item <item id>."
|
|
904
|
-
};
|
|
905
|
-
}, qe = `
|
|
1622
|
+
description: Ga,
|
|
1623
|
+
createGraph: Pa,
|
|
1624
|
+
workspace: $e
|
|
1625
|
+
}, ka = () => ({ latestItemId: null, memory: {} }), Z = (t) => {
|
|
1626
|
+
const e = t?.agentExecutionContext.sharedState.portalItemAnalyticsSummaryMemory?.value;
|
|
1627
|
+
return e ? { latestItemId: e.latestItemId, memory: e.memory } : ka();
|
|
1628
|
+
}, pe = i.object({
|
|
1629
|
+
intent: i.enum(["summarize", "followUp", "clarify"]),
|
|
1630
|
+
itemId: i.string().default(""),
|
|
1631
|
+
question: i.string().default("")
|
|
1632
|
+
}), Ea = i.object({ summary: i.string(), followUpQuestions: i.array(i.string()).default([]) }), za = i.object({ answer: i.string(), isRelevant: i.boolean() }), Ra = `
|
|
906
1633
|
You answer follow-up questions about an ArcGIS item.
|
|
907
1634
|
|
|
908
1635
|
Ground your answer in the provided item context.
|
|
@@ -922,27 +1649,26 @@ Item full context
|
|
|
922
1649
|
|
|
923
1650
|
Question:
|
|
924
1651
|
{question}
|
|
925
|
-
`,
|
|
926
|
-
await
|
|
927
|
-
const
|
|
928
|
-
|
|
929
|
-
hasSummaryContext: String(a)
|
|
930
|
-
}), l = await U({
|
|
931
|
-
model: await D({ modelTier: "fast" }),
|
|
932
|
-
tools: [tt],
|
|
933
|
-
systemPrompt: r,
|
|
934
|
-
responseFormat: Te,
|
|
935
|
-
checkpointer: !0
|
|
936
|
-
}).invoke({ messages: e.agentExecutionContext.messages }, t), { intent: u, itemId: c, question: n } = l.structuredResponse, d = u === "clarify" || u === "summarize" && !c || u === "followUp" && !n;
|
|
937
|
-
return {
|
|
938
|
-
agentExecutionContext: { ...e.agentExecutionContext },
|
|
939
|
-
analyticsIntent: d ? "clarify" : u,
|
|
940
|
-
analyticsItemId: c || null,
|
|
941
|
-
analyticsQuestion: n || "",
|
|
1652
|
+
`, Da = async (t, e) => {
|
|
1653
|
+
await p({ text: "Answering follow-up...", agentName: "analytics" }, e);
|
|
1654
|
+
const a = Z(t), n = t.analyticsItemId ?? a.latestItemId, o = n ? a.memory[n] : void 0, r = t.analyticsQuestion || v(t.agentExecutionContext.messages);
|
|
1655
|
+
return o ? {
|
|
942
1656
|
status: "success",
|
|
943
|
-
outputMessage:
|
|
1657
|
+
outputMessage: (await b({
|
|
1658
|
+
promptText: Ra,
|
|
1659
|
+
schema: za,
|
|
1660
|
+
modelTier: "default",
|
|
1661
|
+
inputVariables: {
|
|
1662
|
+
summary: o.summary,
|
|
1663
|
+
question: r,
|
|
1664
|
+
fullContext: JSON.stringify(o.fullContext)
|
|
1665
|
+
}
|
|
1666
|
+
})).answer
|
|
1667
|
+
} : {
|
|
1668
|
+
status: "success",
|
|
1669
|
+
outputMessage: "I don't have enough information yet. Please ask me to summarize the item first using summarize item <item id>."
|
|
944
1670
|
};
|
|
945
|
-
},
|
|
1671
|
+
}, $a = `
|
|
946
1672
|
Classify the user analytics request.
|
|
947
1673
|
|
|
948
1674
|
Rules:
|
|
@@ -972,40 +1698,27 @@ hasSummaryContext:
|
|
|
972
1698
|
|
|
973
1699
|
User message:
|
|
974
1700
|
{userMessage}
|
|
975
|
-
`,
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
promptText: De,
|
|
993
|
-
schema: Ce,
|
|
994
|
-
modelTier: "default",
|
|
995
|
-
inputVariables: { context: JSON.stringify(c) }
|
|
996
|
-
}), { followUpQuestions: m, summary: p } = n, d = F(e), y = {
|
|
997
|
-
latestItemId: s,
|
|
998
|
-
memory: {
|
|
999
|
-
...d.memory,
|
|
1000
|
-
[s]: { summary: p, followUpQuestions: m, fullContext: c }
|
|
1001
|
-
}
|
|
1002
|
-
};
|
|
1003
|
-
return m.length && await E({ type: "suggested-prompts", data: { prompts: m } }, t), {
|
|
1701
|
+
`, Ua = async (t, e) => {
|
|
1702
|
+
await p({ text: "Analyzing intent...", agentName: "analytics" }, e);
|
|
1703
|
+
const a = v(t.agentExecutionContext.messages), n = !!Z(t).latestItemId, o = await X.fromTemplate($a).format({
|
|
1704
|
+
userMessage: a,
|
|
1705
|
+
hasSummaryContext: String(n)
|
|
1706
|
+
}), s = (await H({ modelTier: "fast" })).withStructuredOutput(pe), c = pe.parse(await s.invoke(o));
|
|
1707
|
+
let l = c.itemId;
|
|
1708
|
+
if (c.intent === "summarize" && !l) {
|
|
1709
|
+
const y = N(a, "#");
|
|
1710
|
+
y && (l = await ke.invoke({ itemTitle: y }, e) ?? "");
|
|
1711
|
+
}
|
|
1712
|
+
const { intent: d, question: u } = c, f = d === "clarify" || d === "summarize" && !l || d === "followUp" && !u;
|
|
1713
|
+
return {
|
|
1714
|
+
agentExecutionContext: { ...t.agentExecutionContext },
|
|
1715
|
+
analyticsIntent: f ? "clarify" : d,
|
|
1716
|
+
analyticsItemId: l || null,
|
|
1717
|
+
analyticsQuestion: u || "",
|
|
1004
1718
|
status: "success",
|
|
1005
|
-
outputMessage:
|
|
1006
|
-
sharedStatePatch: { portalItemAnalyticsSummaryMemory: { value: y } }
|
|
1719
|
+
outputMessage: f ? 'Please clarify with summarize item <item id>, summarize item #<title>, or summarize item #"<title with spaces>".' : ""
|
|
1007
1720
|
};
|
|
1008
|
-
},
|
|
1721
|
+
}, Fa = `
|
|
1009
1722
|
You are a item summary tool for ArcGIS. Your job is to summarize an item's info based on the provided context.
|
|
1010
1723
|
Summary rules:
|
|
1011
1724
|
- The summary should be concise markdown, make sure to format the output nicely so it's easy to read.
|
|
@@ -1020,144 +1733,807 @@ Do not include internal identifiers.
|
|
|
1020
1733
|
If the user asks for a detailed summary, you may expand the response up to 300 words.
|
|
1021
1734
|
Item context:
|
|
1022
1735
|
{context}
|
|
1023
|
-
`,
|
|
1024
|
-
|
|
1736
|
+
`, Oa = async (t, e) => {
|
|
1737
|
+
const a = t.analyticsItemId;
|
|
1738
|
+
if (!a)
|
|
1739
|
+
return {
|
|
1740
|
+
status: "success",
|
|
1741
|
+
outputMessage: 'Please clarify with summarize item <item id>, summarize item #<title>, or summarize item #"<title with spaces>".'
|
|
1742
|
+
};
|
|
1743
|
+
await p({ text: `Summarizing item ${a}...`, agentName: "analytics" }, e);
|
|
1744
|
+
const n = e?.configurable?.context;
|
|
1745
|
+
x(n);
|
|
1746
|
+
const { portal: o, user: r } = n, { result: s, error: c } = await tt(r, o, a);
|
|
1747
|
+
if (c || !s)
|
|
1748
|
+
return await p({ text: "Failed to get item context for summarization", agentName: "analytics" }, e), {
|
|
1749
|
+
status: "success",
|
|
1750
|
+
outputMessage: "Unable to retrieve item context for summarization."
|
|
1751
|
+
};
|
|
1752
|
+
const { context: l } = s, d = await b({
|
|
1753
|
+
promptText: Fa,
|
|
1754
|
+
schema: Ea,
|
|
1755
|
+
modelTier: "default",
|
|
1756
|
+
inputVariables: { context: JSON.stringify(l) }
|
|
1757
|
+
}), { followUpQuestions: u, summary: m } = d, g = Z(t), f = {
|
|
1758
|
+
latestItemId: a,
|
|
1759
|
+
memory: {
|
|
1760
|
+
...g.memory,
|
|
1761
|
+
[a]: { summary: m, followUpQuestions: u, fullContext: l }
|
|
1762
|
+
}
|
|
1763
|
+
};
|
|
1764
|
+
return u.length && await Y({ type: "suggested-prompts", data: { prompts: u } }, e), {
|
|
1765
|
+
status: "success",
|
|
1766
|
+
outputMessage: m,
|
|
1767
|
+
sharedStatePatch: { portalItemAnalyticsSummaryMemory: { value: f } }
|
|
1768
|
+
};
|
|
1769
|
+
}, K = (t, e) => e ?? t, Ue = h.Root({
|
|
1770
|
+
...q(),
|
|
1025
1771
|
// States shared only across nodes in the graph, not between invocations
|
|
1026
|
-
analyticsIntent:
|
|
1027
|
-
reducer:
|
|
1772
|
+
analyticsIntent: h({
|
|
1773
|
+
reducer: K,
|
|
1028
1774
|
default: () => "clarify"
|
|
1029
1775
|
}),
|
|
1030
|
-
analyticsItemId:
|
|
1031
|
-
reducer:
|
|
1776
|
+
analyticsItemId: h({
|
|
1777
|
+
reducer: K,
|
|
1032
1778
|
default: () => null
|
|
1033
1779
|
}),
|
|
1034
|
-
analyticsQuestion:
|
|
1035
|
-
reducer:
|
|
1780
|
+
analyticsQuestion: h({
|
|
1781
|
+
reducer: K,
|
|
1036
1782
|
default: () => ""
|
|
1037
1783
|
})
|
|
1038
|
-
}),
|
|
1039
|
-
-
|
|
1040
|
-
-
|
|
1041
|
-
|
|
1784
|
+
}), La = () => new P(Ue).addNode("detectAnalyticsIntent", Ua).addNode("summarizePortalItem", Oa).addNode("answerAnalyticsFollowUp", Da).addEdge(G, "detectAnalyticsIntent").addConditionalEdges("detectAnalyticsIntent", (e) => e.analyticsIntent === "summarize" ? "summarizePortalItem" : e.analyticsIntent === "followUp" ? "answerAnalyticsFollowUp" : w).addEdge("summarizePortalItem", w).addEdge("answerAnalyticsFollowUp", w), ja = String.raw`- **portal-item-analytics** - Portal item analytics assistant:
|
|
1785
|
+
- answers questions about one specific ArcGIS portal item when item context is present
|
|
1786
|
+
- summarizes item details, metadata, and context grounded in that item
|
|
1787
|
+
- suggests follow-up prompts grounded in the same item
|
|
1788
|
+
- use for item-specific requests, not for gallery browsing, featured content, or opening Map Viewer
|
|
1789
|
+
`, Ka = {
|
|
1042
1790
|
id: "portal-item-analytics",
|
|
1043
1791
|
name: "Portal Item Analytics",
|
|
1044
|
-
description:
|
|
1045
|
-
createGraph:
|
|
1046
|
-
workspace:
|
|
1047
|
-
},
|
|
1048
|
-
function
|
|
1792
|
+
description: ja,
|
|
1793
|
+
createGraph: La,
|
|
1794
|
+
workspace: Ue
|
|
1795
|
+
}, Va = /^(?:take me to|navigate to|go to|show me|open)\s+(?:the\s+)?/u;
|
|
1796
|
+
function U(t) {
|
|
1797
|
+
return t.toLowerCase().replace(/[^a-z0-9]+/gu, " ").trim().replace(Va, "").trim();
|
|
1798
|
+
}
|
|
1799
|
+
const Ba = i.object({
|
|
1800
|
+
capabilityIds: i.array(i.string()).default([]),
|
|
1801
|
+
confidence: i.number().min(0).max(1).default(0),
|
|
1802
|
+
reason: i.string().default("")
|
|
1803
|
+
}), me = 0.8, Qa = String.raw`You select Portal navigation capabilities for a user's request.
|
|
1804
|
+
|
|
1805
|
+
Select only capability IDs from the supplied candidates. Return an empty array when none fit.
|
|
1806
|
+
A named surface is required: do not select a capability on another Portal surface.
|
|
1807
|
+
Retrieval scores are hints only, not ground truth.
|
|
1808
|
+
|
|
1809
|
+
User request:
|
|
1810
|
+
{userRequest}
|
|
1811
|
+
|
|
1812
|
+
Candidates:
|
|
1813
|
+
{candidates}`, Wa = async (t, e) => {
|
|
1814
|
+
if (t.outputMessage || t.targets.length === 0)
|
|
1815
|
+
return {};
|
|
1816
|
+
const a = v(t.agentExecutionContext.messages).trim(), n = Ja(a, t);
|
|
1817
|
+
if (n.length === 1)
|
|
1818
|
+
return await p(
|
|
1819
|
+
{ text: `Selected navigation capability by exact match: ${n[0]}`, agentName: "navigation" },
|
|
1820
|
+
e
|
|
1821
|
+
), console.info("[arcgis-portal-ai-assistant] navigation capability selection:", {
|
|
1822
|
+
method: "exact-match",
|
|
1823
|
+
request: a,
|
|
1824
|
+
selectedCapabilityIds: n
|
|
1825
|
+
}), { chosenCapabilityIds: n };
|
|
1826
|
+
await p({ text: "Choosing a navigation destination...", agentName: "navigation" }, e);
|
|
1827
|
+
const o = JSON.stringify(
|
|
1828
|
+
t.targets.map(({ capability: r, keywordScore: s, semanticScore: c }) => ({
|
|
1829
|
+
id: r.id,
|
|
1830
|
+
title: r.title,
|
|
1831
|
+
description: r.description,
|
|
1832
|
+
route: r.resolutions.navigate,
|
|
1833
|
+
keywordScore: s,
|
|
1834
|
+
semanticScore: c
|
|
1835
|
+
}))
|
|
1836
|
+
);
|
|
1837
|
+
try {
|
|
1838
|
+
const r = await b({
|
|
1839
|
+
promptText: Qa,
|
|
1840
|
+
schema: Ba,
|
|
1841
|
+
modelTier: "fast",
|
|
1842
|
+
inputVariables: { candidates: o, userRequest: a }
|
|
1843
|
+
}), s = new Set(t.targets.map(({ capability: l }) => l.id)), c = r.capabilityIds.filter((l) => s.has(l));
|
|
1844
|
+
return await p(
|
|
1845
|
+
{
|
|
1846
|
+
text: `Navigation selection: ${c.join(", ") || "none"} (confidence: ${r.confidence.toFixed(2)}, reason: ${r.reason})`,
|
|
1847
|
+
agentName: "navigation"
|
|
1848
|
+
},
|
|
1849
|
+
e
|
|
1850
|
+
), console.info("[arcgis-portal-ai-assistant] navigation capability selection:", {
|
|
1851
|
+
confidence: r.confidence,
|
|
1852
|
+
method: "structured-model",
|
|
1853
|
+
reason: r.reason,
|
|
1854
|
+
request: a,
|
|
1855
|
+
selectedCapabilityIds: c
|
|
1856
|
+
}), c.length === 0 ? {
|
|
1857
|
+
chosenCapabilityIds: [],
|
|
1858
|
+
status: "failed",
|
|
1859
|
+
summary: "Navigation selection found no matching capability; defer to the Portal Doc Assistant."
|
|
1860
|
+
} : r.confidence < me ? {
|
|
1861
|
+
chosenCapabilityIds: [],
|
|
1862
|
+
status: "failed",
|
|
1863
|
+
summary: `Navigation selection confidence ${r.confidence} is below the required ${me}; defer to the Portal Doc Assistant.`
|
|
1864
|
+
} : { chosenCapabilityIds: c };
|
|
1865
|
+
} catch {
|
|
1866
|
+
return await p(
|
|
1867
|
+
{ text: "Navigation selection model unavailable; using retrieval order.", agentName: "navigation" },
|
|
1868
|
+
e
|
|
1869
|
+
), console.info("[arcgis-portal-ai-assistant] navigation capability selection:", {
|
|
1870
|
+
method: "structured-model-unavailable",
|
|
1871
|
+
request: a,
|
|
1872
|
+
selectedCapabilityIds: []
|
|
1873
|
+
}), { chosenCapabilityIds: [] };
|
|
1874
|
+
}
|
|
1875
|
+
};
|
|
1876
|
+
function Ja(t, e) {
|
|
1877
|
+
const a = U(t);
|
|
1878
|
+
return e.targets.filter(
|
|
1879
|
+
({ capability: n }) => [n.title, ...n.hints].some(
|
|
1880
|
+
(o) => U(o) === a
|
|
1881
|
+
)
|
|
1882
|
+
).map(({ capability: n }) => n.id);
|
|
1883
|
+
}
|
|
1884
|
+
const Fe = /* @__PURE__ */ new Set(["1d", "7d", "14d", "30d", "3m", "6m"]), _a = i.object({
|
|
1885
|
+
period: i.string(),
|
|
1886
|
+
startTime: i.string(),
|
|
1887
|
+
endTime: i.string()
|
|
1888
|
+
}), Ya = String.raw`Extract temporal filters for an ArcGIS storage-credits query.
|
|
1889
|
+
|
|
1890
|
+
Return JSON only with these optional string fields:
|
|
1891
|
+
- period
|
|
1892
|
+
- startTime
|
|
1893
|
+
- endTime
|
|
1894
|
+
|
|
1895
|
+
Rules:
|
|
1896
|
+
- period must use <integer><unit> with unit in d,w,m (examples: 7d, 2w, 3m).
|
|
1897
|
+
- If the request is a relative range and period can be determined, always include period.
|
|
1898
|
+
- For "last quarter" or "previous quarter", use calendar-quarter boundaries and include period as 3m with both startTime and endTime.
|
|
1899
|
+
- For "last quarter" or "previous quarter", endTime must be the UTC end of the previous quarter, not "now".
|
|
1900
|
+
- If period matches one of these supported periods and the range ends today, period alone is sufficient:
|
|
1901
|
+
1d, 7d, 14d, 30d, 3m, 6m.
|
|
1902
|
+
- If the request implies a range not supported as period (for example 2m or 10d), include startTime and endTime.
|
|
1903
|
+
- For custom date ranges (for example "last december"), provide startTime and endTime.
|
|
1904
|
+
- startTime and endTime must be epoch milliseconds as strings.
|
|
1905
|
+
- If the end of range is "now", set endTime to {nowEpochMs}.
|
|
1906
|
+
- If temporal intent is unclear, return empty strings for all fields.
|
|
1907
|
+
|
|
1908
|
+
Now UTC:
|
|
1909
|
+
- ISO: {nowIso}
|
|
1910
|
+
- Epoch ms: {nowEpochMs}
|
|
1911
|
+
|
|
1912
|
+
User request:
|
|
1913
|
+
{userRequest}`;
|
|
1914
|
+
async function Ha(t, e = /* @__PURE__ */ new Date()) {
|
|
1915
|
+
const a = t.trim();
|
|
1916
|
+
if (!a)
|
|
1917
|
+
return {};
|
|
1918
|
+
try {
|
|
1919
|
+
const n = await b({
|
|
1920
|
+
promptText: Ya,
|
|
1921
|
+
schema: _a,
|
|
1922
|
+
modelTier: "fast",
|
|
1923
|
+
inputVariables: {
|
|
1924
|
+
nowEpochMs: String(e.getTime()),
|
|
1925
|
+
nowIso: e.toISOString(),
|
|
1926
|
+
userRequest: a
|
|
1927
|
+
}
|
|
1928
|
+
});
|
|
1929
|
+
return Xa(n, e);
|
|
1930
|
+
} catch (n) {
|
|
1931
|
+
return console.error(n), {};
|
|
1932
|
+
}
|
|
1933
|
+
}
|
|
1934
|
+
function Xa(t, e = /* @__PURE__ */ new Date()) {
|
|
1935
|
+
const a = ge(t.startTime), n = ge(t.endTime), o = Za(t.period);
|
|
1936
|
+
if (o) {
|
|
1937
|
+
if (a !== void 0 && n !== void 0 && a < n)
|
|
1938
|
+
return { period: o, startTime: String(a), endTime: String(n) };
|
|
1939
|
+
const r = Fe.has(o);
|
|
1940
|
+
if (!r || n !== void 0 && !tn(n, e.getTime())) {
|
|
1941
|
+
const c = n ?? e.getTime(), l = en(o, new Date(c));
|
|
1942
|
+
if (l !== void 0)
|
|
1943
|
+
return {
|
|
1944
|
+
period: o,
|
|
1945
|
+
startTime: String(l),
|
|
1946
|
+
endTime: String(c)
|
|
1947
|
+
};
|
|
1948
|
+
}
|
|
1949
|
+
return r ? {
|
|
1950
|
+
period: o,
|
|
1951
|
+
...a !== void 0 ? { startTime: String(a) } : {},
|
|
1952
|
+
...n !== void 0 ? { endTime: String(n) } : {}
|
|
1953
|
+
} : { period: o };
|
|
1954
|
+
}
|
|
1955
|
+
return a !== void 0 && n !== void 0 && a < n ? { startTime: String(a), endTime: String(n) } : a !== void 0 ? { startTime: String(a), endTime: String(e.getTime()) } : {};
|
|
1956
|
+
}
|
|
1957
|
+
function Za(t) {
|
|
1958
|
+
const e = t?.trim().match(/^(\d+)\s*([dwm])$/iu);
|
|
1959
|
+
if (!e)
|
|
1960
|
+
return;
|
|
1961
|
+
const a = Number.parseInt(e[1], 10);
|
|
1962
|
+
if (!Number.isFinite(a) || a <= 0)
|
|
1963
|
+
return;
|
|
1964
|
+
const n = e[2].toLowerCase();
|
|
1965
|
+
if (n === "w") {
|
|
1966
|
+
const o = a * 7;
|
|
1967
|
+
if (Fe.has(`${o}d`))
|
|
1968
|
+
return `${o}d`;
|
|
1969
|
+
}
|
|
1970
|
+
return `${a}${n}`;
|
|
1971
|
+
}
|
|
1972
|
+
function en(t, e) {
|
|
1973
|
+
const a = t.match(/^(\d+)([dwm])$/u);
|
|
1974
|
+
if (!a)
|
|
1975
|
+
return;
|
|
1976
|
+
const n = Number.parseInt(a[1], 10);
|
|
1977
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
1978
|
+
return;
|
|
1979
|
+
const o = a[2];
|
|
1980
|
+
if (o === "d")
|
|
1981
|
+
return e.getTime() - n * 24 * 60 * 60 * 1e3;
|
|
1982
|
+
if (o === "w")
|
|
1983
|
+
return e.getTime() - n * 7 * 24 * 60 * 60 * 1e3;
|
|
1984
|
+
const r = new Date(e.getTime());
|
|
1985
|
+
return r.setUTCMonth(r.getUTCMonth() - n), r.getTime();
|
|
1986
|
+
}
|
|
1987
|
+
function ge(t) {
|
|
1049
1988
|
if (!t)
|
|
1050
1989
|
return;
|
|
1051
|
-
const
|
|
1052
|
-
|
|
1990
|
+
const e = Number.parseInt(t, 10);
|
|
1991
|
+
if (!(!Number.isFinite(e) || e <= 0))
|
|
1992
|
+
return e;
|
|
1993
|
+
}
|
|
1994
|
+
function tn(t, e) {
|
|
1995
|
+
const a = new Date(t), n = new Date(e);
|
|
1996
|
+
return a.getUTCFullYear() === n.getUTCFullYear() && a.getUTCMonth() === n.getUTCMonth() && a.getUTCDate() === n.getUTCDate();
|
|
1997
|
+
}
|
|
1998
|
+
async function an(t, e, a, n) {
|
|
1999
|
+
const o = S().find((c) => c.id === t);
|
|
2000
|
+
if (!o)
|
|
2001
|
+
return;
|
|
2002
|
+
const r = o.resolutions.navigate, s = await on(
|
|
2003
|
+
r.routeKey === "group" ? nn(o.buttonLabel, r, n) : A({
|
|
2004
|
+
navigate: r,
|
|
2005
|
+
buttonLabel: o.buttonLabel,
|
|
2006
|
+
capabilityId: o.id
|
|
2007
|
+
}),
|
|
2008
|
+
a
|
|
2009
|
+
);
|
|
2010
|
+
return s && sn(s, e) ? { capability: o, target: s } : void 0;
|
|
2011
|
+
}
|
|
2012
|
+
function nn(t, e, a) {
|
|
2013
|
+
const n = a?.trim();
|
|
2014
|
+
return n ? {
|
|
2015
|
+
destinationType: "portal-group",
|
|
2016
|
+
groupId: n,
|
|
2017
|
+
...e.hash ? { hash: e.hash } : {},
|
|
2018
|
+
...e.queryParams ? { queryParams: e.queryParams } : {},
|
|
2019
|
+
...t ? { buttonLabel: t } : {}
|
|
2020
|
+
} : void 0;
|
|
2021
|
+
}
|
|
2022
|
+
async function on(t, e) {
|
|
2023
|
+
if (!t || !e || !rn(t))
|
|
2024
|
+
return t;
|
|
2025
|
+
const a = await Ha(e);
|
|
2026
|
+
if (!a.period && !a.startTime && !a.endTime)
|
|
2027
|
+
return t;
|
|
2028
|
+
const n = {
|
|
2029
|
+
...t.queryParams ?? {},
|
|
2030
|
+
...a.period ? { period: a.period } : {},
|
|
2031
|
+
...a.startTime ? { startTime: a.startTime } : {},
|
|
2032
|
+
...a.endTime ? { endTime: a.endTime } : {}
|
|
2033
|
+
};
|
|
2034
|
+
return { ...t, queryParams: n };
|
|
2035
|
+
}
|
|
2036
|
+
function rn(t) {
|
|
2037
|
+
return t.destinationType === "portal-org" && t.hash === "status";
|
|
2038
|
+
}
|
|
2039
|
+
function sn(t, e) {
|
|
2040
|
+
return !e || !!e[t.destinationType];
|
|
2041
|
+
}
|
|
2042
|
+
function he(t) {
|
|
2043
|
+
return t.match(/\b[a-f0-9]{32}\b/iu)?.[0];
|
|
2044
|
+
}
|
|
2045
|
+
const fe = "navigation", ye = "provideGroupId", cn = async (t, e) => {
|
|
2046
|
+
if (t.outputMessage || t.status === "failed")
|
|
2047
|
+
return {};
|
|
2048
|
+
const a = t.targets.find(({ capability: s }) => t.chosenCapabilityIds.includes(s.id)) ?? t.targets[0];
|
|
2049
|
+
if (!a)
|
|
2050
|
+
return {
|
|
2051
|
+
outputMessage: "I couldn't find a matching Portal page. Try asking to open your content, groups, or organization settings.",
|
|
2052
|
+
sharedStatePatch: { navLastAnsweredRequest: { value: we(t) } },
|
|
2053
|
+
status: "success",
|
|
2054
|
+
summary: "Navigation could not find a matching capability; route another agent if appropriate."
|
|
2055
|
+
};
|
|
2056
|
+
const n = we(t), o = ln(a.capability.resolutions.navigate, n, e), r = await an(
|
|
2057
|
+
a.capability.id,
|
|
2058
|
+
void 0,
|
|
2059
|
+
n,
|
|
2060
|
+
o
|
|
2061
|
+
);
|
|
2062
|
+
return r ? (await p({ text: "Preparing navigation...", agentName: "navigation" }, e), await O(r.target, e), {
|
|
2063
|
+
outputMessage: t.chosenCapabilityIds.length ? a.capability.description : `The closest place to start is ${a.capability.title}. Click the button below to open it.`,
|
|
2064
|
+
status: "success",
|
|
2065
|
+
summary: `Navigation suggested ${a.capability.id}${t.retrievalDegraded ? " using keyword-only retrieval" : ""}.`,
|
|
2066
|
+
sharedStatePatch: { navLastAnsweredRequest: { value: n } }
|
|
2067
|
+
}) : (console.warn(`Navigation capability ${a.capability.id} was not found in the resolver.`), {
|
|
2068
|
+
outputMessage: "I found a possible destination, but couldn't resolve a valid Portal navigation target. Try asking to open your content, groups, or organization settings.",
|
|
2069
|
+
status: "success",
|
|
2070
|
+
summary: `Navigation resolver could not map ${a.capability.id}.`,
|
|
2071
|
+
sharedStatePatch: { navLastAnsweredRequest: { value: n } }
|
|
2072
|
+
});
|
|
2073
|
+
};
|
|
2074
|
+
function we(t) {
|
|
2075
|
+
return v(t.agentExecutionContext.messages) || t.agentExecutionContext.userRequest;
|
|
2076
|
+
}
|
|
2077
|
+
function ln(t, e, a) {
|
|
2078
|
+
if (t.routeKey !== "group")
|
|
2079
|
+
return;
|
|
2080
|
+
const n = he(e);
|
|
2081
|
+
if (n)
|
|
2082
|
+
return n;
|
|
2083
|
+
const o = un(a);
|
|
2084
|
+
if (o?.agentId === fe && o.id === ye) {
|
|
2085
|
+
const s = typeof o.payload == "string" ? he(o.payload) : void 0;
|
|
2086
|
+
if (s)
|
|
2087
|
+
return s;
|
|
2088
|
+
}
|
|
2089
|
+
const r = {
|
|
2090
|
+
agentId: fe,
|
|
2091
|
+
id: ye,
|
|
2092
|
+
kind: "textInput",
|
|
2093
|
+
message: "Enter the group ID to open."
|
|
2094
|
+
};
|
|
2095
|
+
throw new _(r);
|
|
2096
|
+
}
|
|
2097
|
+
function un(t) {
|
|
2098
|
+
const e = t?.configurable;
|
|
2099
|
+
if (!e || typeof e != "object" || !("hitlResponse" in e))
|
|
2100
|
+
return;
|
|
2101
|
+
const a = e.hitlResponse;
|
|
2102
|
+
if (!a || typeof a != "object" || !("agentId" in a) || !("id" in a) || !("payload" in a))
|
|
2103
|
+
return;
|
|
2104
|
+
const { agentId: n, id: o, payload: r } = a;
|
|
2105
|
+
return typeof n == "string" && typeof o == "string" ? { agentId: n, id: o, payload: r } : void 0;
|
|
2106
|
+
}
|
|
2107
|
+
async function Oe(t) {
|
|
2108
|
+
return t.length === 0 ? [] : (await ct.getDefault().load(), await st(t));
|
|
2109
|
+
}
|
|
2110
|
+
const dn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
2111
|
+
__proto__: null,
|
|
2112
|
+
generateEmbeddings: Oe
|
|
2113
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
2114
|
+
function pn(t) {
|
|
2115
|
+
const e = [], a = `${t.title}. ${t.description}`;
|
|
2116
|
+
a.trim().length > 0 && e.push({ field: "summary", text: a });
|
|
2117
|
+
const n = t.hints;
|
|
2118
|
+
if (Array.isArray(n))
|
|
2119
|
+
for (const o of n)
|
|
2120
|
+
typeof o == "string" && o.trim().length > 0 && e.push({ field: "hint", text: o });
|
|
2121
|
+
return e;
|
|
2122
|
+
}
|
|
2123
|
+
let D, ee, $ = 0;
|
|
2124
|
+
async function mn(t = {}) {
|
|
2125
|
+
const e = $;
|
|
2126
|
+
return D ??= hn(t.embed ?? fn).then((a) => (e === $ && (ee = a), a)).catch((a) => {
|
|
2127
|
+
throw e === $ && (D = void 0), a;
|
|
2128
|
+
}), await D;
|
|
2129
|
+
}
|
|
2130
|
+
function gn() {
|
|
2131
|
+
return ee;
|
|
2132
|
+
}
|
|
2133
|
+
function be() {
|
|
2134
|
+
$ += 1, ee = void 0, D = void 0;
|
|
2135
|
+
}
|
|
2136
|
+
async function hn(t) {
|
|
2137
|
+
const e = yn(), a = await t(e.map((n) => n.text));
|
|
2138
|
+
if (a.length !== e.length)
|
|
2139
|
+
throw new Error(`Expected ${e.length} vectors, got ${a.length}`);
|
|
2140
|
+
return e.map((n, o) => ({
|
|
2141
|
+
...n,
|
|
2142
|
+
vector: a[o]
|
|
2143
|
+
}));
|
|
2144
|
+
}
|
|
2145
|
+
async function fn(t) {
|
|
2146
|
+
const { generateEmbeddings: e } = await Promise.resolve().then(() => dn);
|
|
2147
|
+
return await e(t);
|
|
2148
|
+
}
|
|
2149
|
+
function yn() {
|
|
2150
|
+
return S().flatMap(
|
|
2151
|
+
(t) => pn(t).map(({ field: e, text: a }) => ({
|
|
2152
|
+
capabilityId: t.id,
|
|
2153
|
+
field: e,
|
|
2154
|
+
text: a
|
|
2155
|
+
}))
|
|
2156
|
+
);
|
|
2157
|
+
}
|
|
2158
|
+
const ve = 1.2, Ie = 0.75, wn = 60, bn = 0.65, V = {
|
|
2159
|
+
description: 1,
|
|
2160
|
+
hint: 2,
|
|
2161
|
+
title: 3
|
|
2162
|
+
};
|
|
2163
|
+
let J;
|
|
2164
|
+
function vn() {
|
|
2165
|
+
J = void 0;
|
|
2166
|
+
}
|
|
2167
|
+
async function In(t, e = {}) {
|
|
2168
|
+
const a = Mn(Le(t));
|
|
2169
|
+
let n = [], o = !1, r;
|
|
2170
|
+
if (t.trim()) {
|
|
2171
|
+
const s = e.loadEmbeddings, c = gn();
|
|
2172
|
+
if (!s && !c)
|
|
2173
|
+
o = !0, r = "Capability embeddings are still loading.";
|
|
2174
|
+
else
|
|
2175
|
+
try {
|
|
2176
|
+
if (s) {
|
|
2177
|
+
const [l, d] = await Promise.all([
|
|
2178
|
+
(e.embedQuery ?? xe)(t),
|
|
2179
|
+
s()
|
|
2180
|
+
]);
|
|
2181
|
+
n = Se(l, d);
|
|
2182
|
+
} else if (c) {
|
|
2183
|
+
const l = await (e.embedQuery ?? xe)(t);
|
|
2184
|
+
n = Se(l, c);
|
|
2185
|
+
}
|
|
2186
|
+
} catch {
|
|
2187
|
+
o = !0, r = "Semantic search is unavailable.";
|
|
2188
|
+
}
|
|
2189
|
+
}
|
|
2190
|
+
return {
|
|
2191
|
+
degraded: o,
|
|
2192
|
+
...r ? { degradedReason: r } : {},
|
|
2193
|
+
// RRF combines ranks rather than raw scores because BM25 and cosine
|
|
2194
|
+
// similarity are on different scales.
|
|
2195
|
+
matches: An(a, n, e.topN ?? 5)
|
|
2196
|
+
};
|
|
2197
|
+
}
|
|
2198
|
+
function Sn() {
|
|
2199
|
+
return J ??= xn(S()), J;
|
|
2200
|
+
}
|
|
2201
|
+
function xn(t) {
|
|
2202
|
+
const e = /* @__PURE__ */ new Map(), a = t.map((n) => {
|
|
2203
|
+
const o = /* @__PURE__ */ new Map();
|
|
2204
|
+
B(o, n.title, V.title), B(o, n.description, V.description);
|
|
2205
|
+
for (const r of n.hints)
|
|
2206
|
+
B(o, r, V.hint);
|
|
2207
|
+
for (const r of o.keys())
|
|
2208
|
+
e.set(r, (e.get(r) ?? 0) + 1);
|
|
2209
|
+
return {
|
|
2210
|
+
capability: n,
|
|
2211
|
+
length: Cn(o),
|
|
2212
|
+
termFrequencies: o
|
|
2213
|
+
};
|
|
2214
|
+
});
|
|
2215
|
+
return {
|
|
2216
|
+
averageDocumentLength: a.length ? a.reduce((n, o) => n + o.length, 0) / a.length : 0,
|
|
2217
|
+
documentFrequency: e,
|
|
2218
|
+
documents: a
|
|
2219
|
+
};
|
|
2220
|
+
}
|
|
2221
|
+
function B(t, e, a) {
|
|
2222
|
+
for (const n of Le(e))
|
|
2223
|
+
t.set(n, (t.get(n) ?? 0) + a);
|
|
2224
|
+
}
|
|
2225
|
+
function Cn(t) {
|
|
2226
|
+
return [...t.values()].reduce((e, a) => e + a, 0);
|
|
2227
|
+
}
|
|
2228
|
+
function Le(t) {
|
|
2229
|
+
return t.toLowerCase().split(/[^a-z0-9]+/u).filter(Boolean);
|
|
2230
|
+
}
|
|
2231
|
+
function Mn(t) {
|
|
2232
|
+
const e = Sn(), a = new Set(t), n = e.documents.length;
|
|
2233
|
+
return e.documents.map(({ capability: o, length: r, termFrequencies: s }) => {
|
|
2234
|
+
let c = 0;
|
|
2235
|
+
for (const l of a) {
|
|
2236
|
+
const d = s.get(l), u = e.documentFrequency.get(l);
|
|
2237
|
+
if (!d || !u)
|
|
2238
|
+
continue;
|
|
2239
|
+
const m = Math.log(1 + (n - u + 0.5) / (u + 0.5)), g = ve * (1 - Ie + Ie * (r / e.averageDocumentLength));
|
|
2240
|
+
c += m * (d * (ve + 1) / (d + g));
|
|
2241
|
+
}
|
|
2242
|
+
return { capability: o, score: c };
|
|
2243
|
+
}).filter(({ score: o }) => o > 0).sort(je);
|
|
2244
|
+
}
|
|
2245
|
+
function Se(t, e) {
|
|
2246
|
+
const a = /* @__PURE__ */ new Map();
|
|
2247
|
+
for (const o of e) {
|
|
2248
|
+
const r = Tn(t, o.vector);
|
|
2249
|
+
if (r === void 0)
|
|
2250
|
+
continue;
|
|
2251
|
+
const s = a.get(o.capabilityId);
|
|
2252
|
+
(s === void 0 || r > s) && a.set(o.capabilityId, r);
|
|
2253
|
+
}
|
|
2254
|
+
const n = new Map(S().map((o) => [o.id, o]));
|
|
2255
|
+
return [...a.entries()].flatMap(([o, r]) => {
|
|
2256
|
+
const s = n.get(o);
|
|
2257
|
+
return s && r >= bn ? [{ capability: s, score: r }] : [];
|
|
2258
|
+
}).sort(je);
|
|
2259
|
+
}
|
|
2260
|
+
function Tn(t, e) {
|
|
2261
|
+
if (t.length === 0 || t.length !== e.length)
|
|
2262
|
+
return;
|
|
2263
|
+
let a = 0, n = 0, o = 0;
|
|
2264
|
+
for (let s = 0; s < t.length; s += 1)
|
|
2265
|
+
a += t[s] * e[s], n += t[s] ** 2, o += e[s] ** 2;
|
|
2266
|
+
const r = Math.sqrt(n) * Math.sqrt(o);
|
|
2267
|
+
return r === 0 ? void 0 : a / r;
|
|
2268
|
+
}
|
|
2269
|
+
async function xe(t) {
|
|
2270
|
+
const [e] = await Oe([t]);
|
|
2271
|
+
if (!e)
|
|
2272
|
+
throw new Error("Expected one query embedding.");
|
|
2273
|
+
return e;
|
|
2274
|
+
}
|
|
2275
|
+
function An(t, e, a) {
|
|
2276
|
+
const n = /* @__PURE__ */ new Map();
|
|
2277
|
+
return Ce(n, t, "keyword"), Ce(n, e, "semantic"), [...n.values()].sort((o, r) => r.score !== o.score ? r.score - o.score : (r.semanticScore ?? 0) !== (o.semanticScore ?? 0) ? (r.semanticScore ?? 0) - (o.semanticScore ?? 0) : (r.keywordScore ?? 0) !== (o.keywordScore ?? 0) ? (r.keywordScore ?? 0) - (o.keywordScore ?? 0) : o.capability.id.localeCompare(r.capability.id)).slice(0, Math.max(0, a));
|
|
2278
|
+
}
|
|
2279
|
+
function Ce(t, e, a) {
|
|
2280
|
+
for (const [n, { capability: o, score: r }] of e.entries()) {
|
|
2281
|
+
const s = n + 1, c = t.get(o.id) ?? { capability: o, score: 0 };
|
|
2282
|
+
c.score += 1 / (wn + s), a === "keyword" ? (c.keywordRank = s, c.keywordScore = r) : (c.semanticRank = s, c.semanticScore = r), t.set(o.id, c);
|
|
2283
|
+
}
|
|
2284
|
+
}
|
|
2285
|
+
function je(t, e) {
|
|
2286
|
+
return e.score - t.score || t.capability.id.localeCompare(e.capability.id);
|
|
2287
|
+
}
|
|
2288
|
+
const Nn = async (t, e) => {
|
|
2289
|
+
await p({ text: "Finding a place to navigate...", agentName: "navigation" }, e);
|
|
2290
|
+
const a = v(t.agentExecutionContext.messages).trim();
|
|
2291
|
+
try {
|
|
2292
|
+
const n = await In(a, { topN: 5 });
|
|
2293
|
+
return await p(
|
|
2294
|
+
{
|
|
2295
|
+
text: `Navigation candidates: ${Gn(n.matches)}`,
|
|
2296
|
+
agentName: "navigation"
|
|
2297
|
+
},
|
|
2298
|
+
e
|
|
2299
|
+
), console.table(
|
|
2300
|
+
n.matches.map(({ capability: o, keywordRank: r, keywordScore: s, semanticRank: c, semanticScore: l, score: d }) => ({
|
|
2301
|
+
capability: o.title,
|
|
2302
|
+
fusedScore: d,
|
|
2303
|
+
keywordRank: r,
|
|
2304
|
+
keywordScore: s,
|
|
2305
|
+
semanticRank: c,
|
|
2306
|
+
semanticScore: l
|
|
2307
|
+
}))
|
|
2308
|
+
), n.degradedReason && console.info("[arcgis-portal-ai-assistant] navigation semantic search:", n.degradedReason), {
|
|
2309
|
+
chosenCapabilityIds: [],
|
|
2310
|
+
retrievalDegraded: n.degradedReason ?? "",
|
|
2311
|
+
targets: Pn(a, n.matches)
|
|
2312
|
+
};
|
|
2313
|
+
} catch {
|
|
2314
|
+
return {
|
|
2315
|
+
chosenCapabilityIds: [],
|
|
2316
|
+
outputMessage: "I couldn't look up a Portal page right now. Please try again.",
|
|
2317
|
+
status: "failed",
|
|
2318
|
+
targets: []
|
|
2319
|
+
};
|
|
2320
|
+
}
|
|
2321
|
+
};
|
|
2322
|
+
function Pn(t, e) {
|
|
2323
|
+
const a = U(t), n = e.filter(
|
|
2324
|
+
({ capability: r }) => [r.title, ...r.hints].some(
|
|
2325
|
+
(s) => U(s) === a
|
|
2326
|
+
)
|
|
2327
|
+
);
|
|
2328
|
+
if (n.length !== 1)
|
|
2329
|
+
return e;
|
|
2330
|
+
const [o] = n;
|
|
2331
|
+
return [o, ...e.filter((r) => r !== o)];
|
|
2332
|
+
}
|
|
2333
|
+
function Gn(t) {
|
|
2334
|
+
return t.map(
|
|
2335
|
+
({ capability: e, keywordScore: a, semanticScore: n }) => `${e.title} (keyword: ${Me(a)}, semantic: ${Me(n)})`
|
|
2336
|
+
).join("; ") || "none";
|
|
2337
|
+
}
|
|
2338
|
+
function Me(t) {
|
|
2339
|
+
return t?.toFixed(3) ?? "none";
|
|
2340
|
+
}
|
|
2341
|
+
const Q = (t, e) => e ?? t, Ke = h.Root({
|
|
2342
|
+
...q(),
|
|
2343
|
+
chosenCapabilityIds: h({ reducer: Q, default: () => [] }),
|
|
2344
|
+
// Empty when hybrid keyword-and-semantic retrieval succeeds; otherwise
|
|
2345
|
+
// contains the semantic-search failure reason for response diagnostics.
|
|
2346
|
+
retrievalDegraded: h({ reducer: Q, default: () => "" }),
|
|
2347
|
+
targets: h({ reducer: Q, default: () => [] })
|
|
2348
|
+
}), qn = () => new P(Ke).addNode("retrieveNavigationTargets", Nn).addNode("chooseNavigationTargets", Wa).addNode("respondWithNavigation", cn).addEdge(G, "retrieveNavigationTargets").addEdge("retrieveNavigationTargets", "chooseNavigationTargets").addEdge("chooseNavigationTargets", "respondWithNavigation").addEdge("respondWithNavigation", w);
|
|
2349
|
+
function kn() {
|
|
2350
|
+
return String.raw`- **Navigation** — Takes the user to the portal page or app that fulfills their request. Presenting the button COMPLETES the request — no follow-up step is needed.
|
|
2351
|
+
|
|
2352
|
+
Route here for **navigation intent** ("take me to the map viewer", "open content", "where is X?") and for **action intent** ("publish a scene layer", "create a web map", "share this item") — for an action, Navigation takes the user to the page where that workflow starts. Navigation searches the capability registry itself, so don't rule it out because a page isn't named here.
|
|
2353
|
+
|
|
2354
|
+
If Navigation just asked the user for a missing value (such as an item id), route the user's short follow-up answer — often just an id like "797f6c0d300a4ddc87a8ae14cd2eeb8e" — back here so it can finish.
|
|
2355
|
+
|
|
2356
|
+
Do NOT route here for:
|
|
2357
|
+
- An action another agent actually performs — e.g. "create group" is EXECUTED by group agent. Route it here only when the user explicitly asks to navigate ("take me to create group")
|
|
2358
|
+
- Requests that mix navigation with a question or explanation ("take me there and explain how") → use Help
|
|
2359
|
+
|
|
2360
|
+
Do not dispatch Navigation again for the same request in the same turn: once it has responded, the task is done.`;
|
|
2361
|
+
}
|
|
2362
|
+
const En = {
|
|
2363
|
+
id: "navigation",
|
|
2364
|
+
name: "Portal Navigation",
|
|
2365
|
+
get description() {
|
|
2366
|
+
return kn();
|
|
2367
|
+
},
|
|
2368
|
+
createGraph: qn,
|
|
2369
|
+
workspace: Ke
|
|
2370
|
+
}, zn = We`:host{height:100%;border-width:1px;border-style:solid;border-color:var(--calcite-color-border-3);display:block;width:100%;--tw-shadow: 0 1px 6px -1px rgba(0, 0, 0, .16), 0 1px 2px -1px rgba(0, 0, 0, .08);--tw-shadow-colored: 0 1px 6px -1px var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.chat-entry{display:flex;flex-direction:column;gap:.75rem;width:100%}.chat-actions{display:flex;justify-content:flex-end;gap:.5rem}.header-actions{display:flex;gap:.5rem;padding-inline-start:.75rem}.navigation-block{display:flex;flex-direction:column;align-items:stretch;gap:.35rem;margin-top:.5rem}.navigation-button{width:100%;margin-block:.25rem}.navigation-block-description{font-size:.75rem;color:var(--calcite-color-text-3)}`;
|
|
2371
|
+
function Rn(t, e) {
|
|
2372
|
+
if (!e)
|
|
2373
|
+
return;
|
|
2374
|
+
const { destinationType: a } = t;
|
|
2375
|
+
switch (a) {
|
|
1053
2376
|
case "portal-content":
|
|
2377
|
+
return e[a]?.(t.hash, t.queryParams);
|
|
1054
2378
|
case "portal-groups":
|
|
1055
|
-
return
|
|
2379
|
+
return e[a]?.(t.hash);
|
|
2380
|
+
case "portal-org":
|
|
2381
|
+
return e[a]?.(t.hash, t.queryParams);
|
|
2382
|
+
case "portal-gallery":
|
|
2383
|
+
return e[a];
|
|
2384
|
+
case "portal-map-viewer":
|
|
2385
|
+
case "portal-notebooks":
|
|
2386
|
+
case "portal-scene-viewer":
|
|
2387
|
+
return e[a];
|
|
1056
2388
|
case "portal-item":
|
|
1057
|
-
return
|
|
2389
|
+
return e[a]?.(t.itemId);
|
|
1058
2390
|
case "portal-group":
|
|
1059
|
-
return
|
|
2391
|
+
return e[a]?.(t.groupId, t.hash, t.queryParams);
|
|
1060
2392
|
default:
|
|
1061
|
-
return
|
|
2393
|
+
return F(a);
|
|
1062
2394
|
}
|
|
1063
2395
|
}
|
|
1064
|
-
function
|
|
1065
|
-
const
|
|
1066
|
-
return
|
|
2396
|
+
function Dn(t) {
|
|
2397
|
+
const e = kt.safeParse(t);
|
|
2398
|
+
return e.success ? e.data : void 0;
|
|
2399
|
+
}
|
|
2400
|
+
function $n(t, e) {
|
|
2401
|
+
const a = e.navigation;
|
|
2402
|
+
switch (t.destinationType) {
|
|
2403
|
+
case "portal-content":
|
|
2404
|
+
switch (t.hash) {
|
|
2405
|
+
case "favorites":
|
|
2406
|
+
return a.openContentFavorites;
|
|
2407
|
+
case "group":
|
|
2408
|
+
return a.openContentGroup;
|
|
2409
|
+
case "living-atlas":
|
|
2410
|
+
return a.openContentLivingAtlas;
|
|
2411
|
+
case "org":
|
|
2412
|
+
return a.openContentOrganization;
|
|
2413
|
+
default:
|
|
2414
|
+
return a.openContent;
|
|
2415
|
+
}
|
|
2416
|
+
case "portal-gallery":
|
|
2417
|
+
return a.openGallery;
|
|
2418
|
+
case "portal-groups":
|
|
2419
|
+
switch (t.hash) {
|
|
2420
|
+
case "featured":
|
|
2421
|
+
return a.openGroupsFeatured;
|
|
2422
|
+
case "my":
|
|
2423
|
+
return a.openGroupsMy;
|
|
2424
|
+
case "organization":
|
|
2425
|
+
return a.openGroupsOrganization;
|
|
2426
|
+
default:
|
|
2427
|
+
return a.openGroups;
|
|
2428
|
+
}
|
|
2429
|
+
case "portal-map-viewer":
|
|
2430
|
+
return a.openMapViewer;
|
|
2431
|
+
case "portal-notebooks":
|
|
2432
|
+
return a.openNotebooks;
|
|
2433
|
+
case "portal-scene-viewer":
|
|
2434
|
+
return a.openSceneViewer;
|
|
2435
|
+
case "portal-org":
|
|
2436
|
+
return a.openOrgSettings;
|
|
2437
|
+
case "portal-item":
|
|
2438
|
+
return a.openItem;
|
|
2439
|
+
case "portal-group":
|
|
2440
|
+
return a.openGroup;
|
|
2441
|
+
default:
|
|
2442
|
+
return F(t);
|
|
2443
|
+
}
|
|
1067
2444
|
}
|
|
1068
|
-
class
|
|
2445
|
+
class Un extends Be {
|
|
1069
2446
|
constructor() {
|
|
1070
|
-
super(
|
|
1071
|
-
const
|
|
1072
|
-
if (!
|
|
2447
|
+
super(), this.t9n = _e({ blocking: !0 }), this.assistantEl = E(), this.formEl = E(), this.voiceInputEl = E(), this.inputEl = E(), this.navigationSlotElements = /* @__PURE__ */ new Map(), this.handleSlottableRequest = (e) => {
|
|
2448
|
+
const a = e.detail, n = a.data?.block;
|
|
2449
|
+
if (!n)
|
|
1073
2450
|
return;
|
|
1074
|
-
const
|
|
1075
|
-
|
|
1076
|
-
}, this.inputText = "", this.showVoiceInput = !0, this.isListening = !1, this.isVoiceInputDisabled = !1, this.
|
|
2451
|
+
const o = this.getNavigationAction(n);
|
|
2452
|
+
o && this.upsertNavigationSlotElement(a.slotName, o);
|
|
2453
|
+
}, this.inputText = "", this.showVoiceInput = !0, this.isListening = !1, this.isVoiceInputDisabled = !1, this.autoDestroyDisabled = !1, this.defaultClosed = !1, this.useProdDocAssistant = !1, this.arcgisPortalNavigationRequest = Qe(), S();
|
|
1077
2454
|
}
|
|
1078
2455
|
static {
|
|
1079
|
-
this.properties = { inputText: 16, showVoiceInput: 16, isListening: 16, isVoiceInputDisabled: 16,
|
|
2456
|
+
this.properties = { inputText: 16, showVoiceInput: 16, isListening: 16, isVoiceInputDisabled: 16, autoDestroyDisabled: 5, portal: 0, user: 0, config: 0, navigationTargetMap: 0, disabledAgents: 0, defaultClosed: 5, navigationCapabilities: 0, useProdDocAssistant: 5 };
|
|
1080
2457
|
}
|
|
1081
2458
|
static {
|
|
1082
|
-
this.styles =
|
|
2459
|
+
this.styles = zn;
|
|
2460
|
+
}
|
|
2461
|
+
async load() {
|
|
2462
|
+
await this.refreshCapabilityEmbeddings();
|
|
1083
2463
|
}
|
|
1084
|
-
|
|
1085
|
-
|
|
2464
|
+
willUpdate(e) {
|
|
2465
|
+
!this.hasUpdated || !e.has("navigationCapabilities") || this.refreshCapabilityEmbeddings();
|
|
2466
|
+
}
|
|
2467
|
+
async clearEmbeddingsCache() {
|
|
2468
|
+
be();
|
|
2469
|
+
}
|
|
2470
|
+
isAgentEnabled(e) {
|
|
2471
|
+
return !this.disabledAgents?.[e];
|
|
2472
|
+
}
|
|
2473
|
+
async refreshCapabilityEmbeddings() {
|
|
2474
|
+
try {
|
|
2475
|
+
S(this.navigationCapabilities), vn(), be(), await mn();
|
|
2476
|
+
} catch (e) {
|
|
2477
|
+
console.warn("[arcgis-portal-ai-assistant] embeddings warm-up failed:", e);
|
|
2478
|
+
}
|
|
2479
|
+
}
|
|
2480
|
+
getNavigationAction(e) {
|
|
2481
|
+
if (e?.type !== Ne)
|
|
1086
2482
|
return;
|
|
1087
|
-
const
|
|
1088
|
-
if (!
|
|
2483
|
+
const a = e.data, n = Dn(a);
|
|
2484
|
+
if (!n)
|
|
1089
2485
|
return;
|
|
1090
|
-
const
|
|
1091
|
-
if (
|
|
1092
|
-
return {
|
|
2486
|
+
const o = Rn(a, this.navigationTargetMap);
|
|
2487
|
+
if (o)
|
|
2488
|
+
return {
|
|
2489
|
+
href: o,
|
|
2490
|
+
targetDetail: a,
|
|
2491
|
+
label: a?.buttonLabel || $n(n, this.t9n)
|
|
2492
|
+
};
|
|
1093
2493
|
}
|
|
1094
|
-
upsertNavigationSlotElement(
|
|
1095
|
-
const
|
|
1096
|
-
if (!
|
|
2494
|
+
upsertNavigationSlotElement(e, a) {
|
|
2495
|
+
const n = this.assistantEl.value;
|
|
2496
|
+
if (!n)
|
|
1097
2497
|
return;
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
2498
|
+
const o = `navigation:${e}`;
|
|
2499
|
+
let r = this.navigationSlotElements.get(o);
|
|
2500
|
+
r || (r = document.createElement("div"), r.slot = e, this.navigationSlotElements.set(o, r), n.append(r)), Je(I`<div><calcite-button class="navigation-button" appearance=outline width=full .href=${a.href} icon-end=launch @click=${(s) => {
|
|
2501
|
+
s.preventDefault(), this.arcgisPortalNavigationRequest.emit({
|
|
2502
|
+
href: a.href,
|
|
2503
|
+
targetDetail: a.targetDetail
|
|
1103
2504
|
});
|
|
1104
|
-
}}>${
|
|
1105
|
-
}
|
|
1106
|
-
getNavigationText(t) {
|
|
1107
|
-
const s = this.t9n.navigation;
|
|
1108
|
-
switch (t) {
|
|
1109
|
-
case "portal-content":
|
|
1110
|
-
return s.openContent;
|
|
1111
|
-
case "portal-groups":
|
|
1112
|
-
return s.openGroups;
|
|
1113
|
-
case "portal-item":
|
|
1114
|
-
return s.openItem;
|
|
1115
|
-
case "portal-group":
|
|
1116
|
-
return s.openGroup;
|
|
1117
|
-
default:
|
|
1118
|
-
return T(t);
|
|
1119
|
-
}
|
|
2505
|
+
}}>${a.label}</calcite-button>${a.description ? I`<div class="navigation-block-description">${a.description}</div>` : null}</div>`, r);
|
|
1120
2506
|
}
|
|
1121
2507
|
render() {
|
|
1122
|
-
const { t9n:
|
|
1123
|
-
return
|
|
1124
|
-
this.
|
|
1125
|
-
}} @arcgisInterruptCancel=${() => {
|
|
1126
|
-
this.interrupt = null;
|
|
1127
|
-
}} @arcgisInterruptSubmit=${() => {
|
|
1128
|
-
this.interrupt = null;
|
|
1129
|
-
}} @arcgisPromptSelect=${({ detail: n }) => {
|
|
1130
|
-
this.inputText = n.prompt, requestAnimationFrame(() => {
|
|
2508
|
+
const { t9n: e, inputText: a, portal: n, user: o, navigationTargetMap: r, showVoiceInput: s, isListening: c, isVoiceInputDisabled: l, useProdDocAssistant: d } = this;
|
|
2509
|
+
return I`<arcgis-assistant log-enabled keep-suggested-prompts .heading=${e.heading} .entryMessage=${e.entryMessage} @arcgisSlottableRequest=${this.handleSlottableRequest} @arcgisPromptSelect=${({ detail: u }) => {
|
|
2510
|
+
this.inputText = u.prompt, requestAnimationFrame(() => {
|
|
1131
2511
|
this.inputEl.value?.focusTextArea();
|
|
1132
2512
|
});
|
|
1133
|
-
}} ${
|
|
1134
|
-
|
|
1135
|
-
const m =
|
|
2513
|
+
}} ${z(this.assistantEl)}><div slot=header-actions-start class="header-actions"><calcite-icon icon=effects></calcite-icon></div><form slot=chat-entry class="chat-entry" @submit=${(u) => {
|
|
2514
|
+
u.preventDefault();
|
|
2515
|
+
const m = a.trim();
|
|
1136
2516
|
m && (this.assistantEl.value?.submitMessage(m), this.inputText = "");
|
|
1137
|
-
}} ${
|
|
1138
|
-
|
|
1139
|
-
}} @arcgisUserMentionableTextAreaChange=${({ detail:
|
|
1140
|
-
this.inputText =
|
|
1141
|
-
}} ${
|
|
2517
|
+
}} ${z(this.formEl)}><arcgis-portal-mentionable-text-area .portal=${n} .user=${o} rows=3 .popoverListLabel=${e.mentionEntities} .placeholder=${e.placeholder} .value=${a} @arcgisUserMentionableTextAreaKeyDown=${({ detail: u }) => {
|
|
2518
|
+
u.key === "Enter" && !u.shiftKey && (u.preventDefault(), this.formEl.value?.requestSubmit());
|
|
2519
|
+
}} @arcgisUserMentionableTextAreaChange=${({ detail: u }) => {
|
|
2520
|
+
this.inputText = u ?? "";
|
|
2521
|
+
}} ${z(this.inputEl)}></arcgis-portal-mentionable-text-area><div class="chat-actions"><arcgis-portal-voice-input @arcgisVoiceInputStart=${() => {
|
|
1142
2522
|
this.isListening = !0, this.isVoiceInputDisabled = !1;
|
|
1143
2523
|
}} @arcgisVoiceInputStop=${() => {
|
|
1144
2524
|
this.isListening = !1, this.isVoiceInputDisabled = !1;
|
|
1145
|
-
}} @arcgisVoiceInputError=${(
|
|
1146
|
-
|
|
1147
|
-
}} @arcgisVoiceInputInterimTranscription=${(
|
|
1148
|
-
this.inputText =
|
|
1149
|
-
}} ${
|
|
2525
|
+
}} @arcgisVoiceInputError=${(u) => {
|
|
2526
|
+
u.detail.errorCode === "not-supported" && (this.showVoiceInput = !1);
|
|
2527
|
+
}} @arcgisVoiceInputInterimTranscription=${(u) => {
|
|
2528
|
+
this.inputText = u.detail.text;
|
|
2529
|
+
}} ${z(this.voiceInputEl)}></arcgis-portal-voice-input>${s && I`<calcite-button icon-start=microphone .label=${e.voiceInput} round .disabled=${l} .appearance=${c ? "solid" : "outline-fill"} @click=${async () => {
|
|
1150
2530
|
this.isVoiceInputDisabled = !0;
|
|
1151
|
-
const
|
|
1152
|
-
|
|
1153
|
-
}}></calcite-button>` || ""}<calcite-button type=submit icon-start=send round .disabled=${!
|
|
1154
|
-
this.assistantEl.value?.submitInterrupt(n);
|
|
1155
|
-
}} @arcgisCancel=${() => {
|
|
1156
|
-
this.assistantEl.value?.cancelInterrupt();
|
|
1157
|
-
}}></arcgis-portal-ai-assistant-interrupt>` || ""}</arcgis-assistant>`;
|
|
2531
|
+
const u = this.voiceInputEl.value;
|
|
2532
|
+
c ? await u?.stopListening() : await u?.startListening();
|
|
2533
|
+
}}></calcite-button>` || ""}<calcite-button type=submit icon-start=send round .disabled=${!a.trim()} .label=${e.send}>${e.send}</calcite-button></div></form>${this.isAgentEnabled("itemAnalytics") && I`<arcgis-assistant-agent .agent=${Ka} .context=${{ portal: n, user: o, navigationTargetMap: r }}></arcgis-assistant-agent>` || ""}${this.isAgentEnabled("groupCreation") && I`<arcgis-assistant-agent .agent=${Dt} .context=${{ portal: n, user: o, navigationTargetMap: r }}></arcgis-assistant-agent>` || ""}${this.isAgentEnabled("docAssistant") && I`<arcgis-assistant-agent .agent=${la} .context=${{ portal: n, user: o, navigationTargetMap: r, useProdDocAssistant: d }}></arcgis-assistant-agent>` || ""}${this.isAgentEnabled("groupAnalytics") && I`<arcgis-assistant-agent .agent=${qa} .context=${{ portal: n, user: o, navigationTargetMap: r }}></arcgis-assistant-agent>` || ""}${this.isAgentEnabled("navigation") && I`<arcgis-assistant-agent .agent=${En} .context=${{ portal: n, user: o, navigationTargetMap: r }}></arcgis-assistant-agent>` || ""}</arcgis-assistant>`;
|
|
1158
2534
|
}
|
|
1159
2535
|
}
|
|
1160
|
-
|
|
2536
|
+
Ve("arcgis-portal-ai-assistant", Un);
|
|
1161
2537
|
export {
|
|
1162
|
-
|
|
2538
|
+
Un as ArcgisPortalAiAssistant
|
|
1163
2539
|
};
|