@arcgis/portal-components 5.1.0-next.99 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +2 -2
  2. package/dist/cdn/3AFLX4RZ.js +31 -0
  3. package/dist/cdn/3XDKOO6K.js +2 -0
  4. package/dist/cdn/4ISLOZQ3.js +2 -0
  5. package/dist/cdn/{TTZBF4KI.js → 563BUCQX.js} +1 -1
  6. package/dist/cdn/{JOYFDD4B.js → 5BPXS3WU.js} +1 -1
  7. package/dist/cdn/65JPRIL4.js +98 -0
  8. package/dist/cdn/6K7GPATC.js +2 -0
  9. package/dist/cdn/6RA33SDH.js +34 -0
  10. package/dist/cdn/7IAAHGM2.js +2 -0
  11. package/dist/cdn/{SOPWLUP4.js → ABRHXRFP.js} +1 -1
  12. package/dist/cdn/BCUEYBNI.js +2 -0
  13. package/dist/cdn/CAQR2NSG.js +4 -0
  14. package/dist/cdn/D42PED2R.js +2 -0
  15. package/dist/cdn/DEHBTA5D.js +2 -0
  16. package/dist/cdn/EZ7YC5N5.js +99 -0
  17. package/dist/cdn/{SEZNHA2J.js → FK7QXBE2.js} +1 -1
  18. package/dist/cdn/IBYY5ORN.js +122 -0
  19. package/dist/cdn/ITFWXO7A.js +49 -0
  20. package/dist/cdn/JWUQZ52F.js +134 -0
  21. package/dist/cdn/KBYWRUKO.js +2 -0
  22. package/dist/cdn/KFH2OM2D.js +2 -0
  23. package/dist/cdn/{GPPEHGUO.js → LVUHKMSB.js} +1 -1
  24. package/dist/cdn/NDKFZPYE.js +2 -0
  25. package/dist/cdn/NX4L2LC2.js +2 -0
  26. package/dist/cdn/OYABHYVF.js +2 -0
  27. package/dist/cdn/{V5ZWDMLE.js → PIZFXU2N.js} +1 -1
  28. package/dist/cdn/QOCYNLQ7.js +71 -0
  29. package/dist/cdn/{ERNT74VA.js → QUYBZ3J7.js} +1 -1
  30. package/dist/cdn/R2XPTETT.js +22 -0
  31. package/dist/cdn/R53CO5LK.js +77 -0
  32. package/dist/cdn/{HQAGVE4P.js → RNRPTWHT.js} +17 -1
  33. package/dist/cdn/{32DRTMS4.js → SFKRR7GW.js} +1 -1
  34. package/dist/cdn/SQ54YADV.js +533 -0
  35. package/dist/cdn/SX4KDMYV.js +69 -0
  36. package/dist/cdn/TKQAFRBM.js +36 -0
  37. package/dist/cdn/TNDL67UN.js +2 -0
  38. package/dist/cdn/{LJUIMVQ2.js → W4RAJWHA.js} +1 -1
  39. package/dist/cdn/WHLL7DNC.js +146 -0
  40. package/dist/cdn/X3LZYQ4U.js +66 -0
  41. package/dist/cdn/XR4PMNYP.js +2 -0
  42. package/dist/cdn/YJK6JAPE.js +422 -0
  43. package/dist/cdn/{5WK4GJK2.js → Z5UVAVHJ.js} +1 -1
  44. package/dist/cdn/{3OTUKLZI.js → ZCL2V7W3.js} +1 -1
  45. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ar.json +1 -1
  46. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.bg.json +1 -1
  47. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.bs.json +1 -1
  48. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ca.json +1 -1
  49. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.cs.json +1 -1
  50. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.da.json +1 -1
  51. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.de.json +1 -1
  52. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.el.json +1 -1
  53. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.en.json +1 -1
  54. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.es.json +1 -1
  55. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.et.json +1 -1
  56. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.fi.json +1 -1
  57. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.fr.json +1 -1
  58. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.he.json +1 -1
  59. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.hr.json +1 -1
  60. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.hu.json +1 -1
  61. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.id.json +1 -1
  62. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.it.json +1 -1
  63. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ja.json +1 -1
  64. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ko.json +1 -1
  65. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.lt.json +1 -1
  66. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.lv.json +1 -1
  67. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.nl.json +1 -1
  68. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.no.json +1 -1
  69. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pl.json +1 -1
  70. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pt-BR.json +1 -1
  71. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.pt-PT.json +1 -1
  72. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ro.json +1 -1
  73. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.ru.json +1 -1
  74. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sk.json +1 -1
  75. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sl.json +1 -1
  76. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sr.json +1 -1
  77. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.sv.json +1 -1
  78. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.th.json +1 -1
  79. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.tr.json +1 -1
  80. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.uk.json +1 -1
  81. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.vi.json +1 -1
  82. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-CN.json +1 -1
  83. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-HK.json +1 -1
  84. package/dist/cdn/assets/portal-ai-assistant/t9n/messages.zh-TW.json +1 -1
  85. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ar.json +1 -0
  86. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.bg.json +1 -0
  87. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.bs.json +1 -0
  88. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ca.json +1 -0
  89. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.cs.json +1 -0
  90. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.da.json +1 -0
  91. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.de.json +1 -0
  92. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.el.json +1 -0
  93. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.en.json +1 -0
  94. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.es.json +1 -0
  95. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.et.json +1 -0
  96. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.fi.json +1 -0
  97. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.fr.json +1 -0
  98. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.he.json +1 -0
  99. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.hr.json +1 -0
  100. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.hu.json +1 -0
  101. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.id.json +1 -0
  102. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.it.json +1 -0
  103. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ja.json +1 -0
  104. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ko.json +1 -0
  105. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.lt.json +1 -0
  106. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.lv.json +1 -0
  107. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.nl.json +1 -0
  108. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.no.json +1 -0
  109. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pl.json +1 -0
  110. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pt-BR.json +1 -0
  111. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.pt-PT.json +1 -0
  112. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ro.json +1 -0
  113. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.ru.json +1 -0
  114. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sk.json +1 -0
  115. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sl.json +1 -0
  116. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sr.json +1 -0
  117. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.sv.json +1 -0
  118. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.th.json +1 -0
  119. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.tr.json +1 -0
  120. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.uk.json +1 -0
  121. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.vi.json +1 -0
  122. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-CN.json +1 -0
  123. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-HK.json +1 -0
  124. package/dist/cdn/assets/portal-ai-assistant-interrupt/t9n/messages.zh-TW.json +1 -0
  125. package/dist/cdn/assets/portal-item-type/t9n/messages.ar.json +1 -1
  126. package/dist/cdn/assets/portal-item-type/t9n/messages.bg.json +1 -1
  127. package/dist/cdn/assets/portal-item-type/t9n/messages.bs.json +1 -1
  128. package/dist/cdn/assets/portal-item-type/t9n/messages.ca.json +1 -1
  129. package/dist/cdn/assets/portal-item-type/t9n/messages.cs.json +1 -1
  130. package/dist/cdn/assets/portal-item-type/t9n/messages.da.json +1 -1
  131. package/dist/cdn/assets/portal-item-type/t9n/messages.de.json +1 -1
  132. package/dist/cdn/assets/portal-item-type/t9n/messages.el.json +1 -1
  133. package/dist/cdn/assets/portal-item-type/t9n/messages.es.json +1 -1
  134. package/dist/cdn/assets/portal-item-type/t9n/messages.et.json +1 -1
  135. package/dist/cdn/assets/portal-item-type/t9n/messages.fi.json +1 -1
  136. package/dist/cdn/assets/portal-item-type/t9n/messages.fr.json +1 -1
  137. package/dist/cdn/assets/portal-item-type/t9n/messages.he.json +1 -1
  138. package/dist/cdn/assets/portal-item-type/t9n/messages.hr.json +1 -1
  139. package/dist/cdn/assets/portal-item-type/t9n/messages.hu.json +1 -1
  140. package/dist/cdn/assets/portal-item-type/t9n/messages.id.json +1 -1
  141. package/dist/cdn/assets/portal-item-type/t9n/messages.it.json +1 -1
  142. package/dist/cdn/assets/portal-item-type/t9n/messages.ja.json +1 -1
  143. package/dist/cdn/assets/portal-item-type/t9n/messages.ko.json +1 -1
  144. package/dist/cdn/assets/portal-item-type/t9n/messages.lt.json +1 -1
  145. package/dist/cdn/assets/portal-item-type/t9n/messages.lv.json +1 -1
  146. package/dist/cdn/assets/portal-item-type/t9n/messages.nl.json +1 -1
  147. package/dist/cdn/assets/portal-item-type/t9n/messages.no.json +1 -1
  148. package/dist/cdn/assets/portal-item-type/t9n/messages.pl.json +1 -1
  149. package/dist/cdn/assets/portal-item-type/t9n/messages.pt-BR.json +1 -1
  150. package/dist/cdn/assets/portal-item-type/t9n/messages.pt-PT.json +1 -1
  151. package/dist/cdn/assets/portal-item-type/t9n/messages.ro.json +1 -1
  152. package/dist/cdn/assets/portal-item-type/t9n/messages.ru.json +1 -1
  153. package/dist/cdn/assets/portal-item-type/t9n/messages.sk.json +1 -1
  154. package/dist/cdn/assets/portal-item-type/t9n/messages.sl.json +1 -1
  155. package/dist/cdn/assets/portal-item-type/t9n/messages.sr.json +1 -1
  156. package/dist/cdn/assets/portal-item-type/t9n/messages.sv.json +1 -1
  157. package/dist/cdn/assets/portal-item-type/t9n/messages.th.json +1 -1
  158. package/dist/cdn/assets/portal-item-type/t9n/messages.tr.json +1 -1
  159. package/dist/cdn/assets/portal-item-type/t9n/messages.uk.json +1 -1
  160. package/dist/cdn/assets/portal-item-type/t9n/messages.vi.json +1 -1
  161. package/dist/cdn/assets/portal-item-type/t9n/messages.zh-CN.json +1 -1
  162. package/dist/cdn/assets/portal-item-type/t9n/messages.zh-HK.json +1 -1
  163. package/dist/cdn/assets/portal-item-type/t9n/messages.zh-TW.json +1 -1
  164. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ar.json +1 -1
  165. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.bg.json +1 -1
  166. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.bs.json +1 -1
  167. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ca.json +1 -1
  168. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.cs.json +1 -1
  169. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.da.json +1 -1
  170. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.de.json +1 -1
  171. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.el.json +1 -1
  172. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.en.json +1 -1
  173. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.es.json +1 -1
  174. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.et.json +1 -1
  175. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.fi.json +1 -1
  176. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.fr.json +1 -1
  177. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.he.json +1 -1
  178. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.hr.json +1 -1
  179. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.hu.json +1 -1
  180. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.id.json +1 -1
  181. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.it.json +1 -1
  182. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ja.json +1 -1
  183. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ko.json +1 -1
  184. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.lt.json +1 -1
  185. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.lv.json +1 -1
  186. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.nl.json +1 -1
  187. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.no.json +1 -1
  188. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.pl.json +1 -1
  189. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.pt-BR.json +1 -1
  190. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.pt-PT.json +1 -1
  191. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ro.json +1 -1
  192. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.ru.json +1 -1
  193. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sk.json +1 -1
  194. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sl.json +1 -1
  195. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sr.json +1 -1
  196. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.sv.json +1 -1
  197. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.th.json +1 -1
  198. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.tr.json +1 -1
  199. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.uk.json +1 -1
  200. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.vi.json +1 -1
  201. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.zh-CN.json +1 -1
  202. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.zh-HK.json +1 -1
  203. package/dist/cdn/assets/portal-replacement-item-redirect/t9n/messages.zh-TW.json +1 -1
  204. package/dist/cdn/index.js +1 -1
  205. package/dist/cdn/main.css +1 -1
  206. package/dist/chunks/fieldAddDelete.js +1 -1
  207. package/dist/chunks/functionalities.js +10 -0
  208. package/dist/chunks/groups.js +86 -0
  209. package/dist/chunks/item.js +124 -22
  210. package/dist/chunks/portal.js +48 -8
  211. package/dist/chunks/runtime.js +3 -3
  212. package/dist/chunks/user.js +4 -109
  213. package/dist/chunks/user2.js +113 -0
  214. package/dist/components/arcgis-portal-ai-assistant/agents/types.d.ts +7 -0
  215. package/dist/components/arcgis-portal-ai-assistant/customElement.d.ts +20 -6
  216. package/dist/components/arcgis-portal-ai-assistant/customElement.js +738 -124
  217. package/dist/components/arcgis-portal-ai-assistant/index.js +2 -1
  218. package/dist/components/arcgis-portal-ai-assistant-interrupt/customElement.d.ts +42 -0
  219. package/dist/components/arcgis-portal-ai-assistant-interrupt/customElement.js +51 -0
  220. package/dist/components/arcgis-portal-ai-assistant-interrupt/index.d.ts +1 -0
  221. package/dist/components/arcgis-portal-ai-assistant-interrupt/index.js +6 -0
  222. package/dist/components/arcgis-portal-classification-config/customElement.js +44 -37
  223. package/dist/components/arcgis-portal-item-type/customElement.js +1 -1
  224. package/dist/components/arcgis-portal-mentionable-text-area/customElement.d.ts +2 -1
  225. package/dist/components/arcgis-portal-mentionable-text-area/customElement.js +38 -41
  226. package/dist/components/arcgis-portal-mentionable-text-area/utils.d.ts +7 -0
  227. package/dist/components/arcgis-portal-replacement-item-redirect/customElement.d.ts +3 -3
  228. package/dist/components/arcgis-portal-replacement-item-redirect/customElement.js +131 -63
  229. package/dist/components/arcgis-portal-user-avatar/customElement.js +24 -27
  230. package/dist/components/arcgis-portal-voice-input/customElement.d.ts +1 -1
  231. package/dist/docs/api.json +1 -1
  232. package/dist/docs/docs.json +1 -1
  233. package/dist/docs/vscode.html-custom-data.json +1 -1
  234. package/dist/docs/web-types.json +1 -1
  235. package/dist/index.d.ts +16 -0
  236. package/dist/loader.js +3 -2
  237. package/dist/types/lumina.d.ts +9 -1
  238. package/dist/types/preact.d.ts +10 -1
  239. package/dist/types/react.d.ts +11 -1
  240. package/dist/types/stencil.d.ts +9 -1
  241. package/package.json +12 -10
  242. package/dist/cdn/2UAWM45V.js +0 -2
  243. package/dist/cdn/4XGP5S32.js +0 -2
  244. package/dist/cdn/AMCZ4UZQ.js +0 -2
  245. package/dist/cdn/CVTNZK7F.js +0 -2
  246. package/dist/cdn/DAD7LUKA.js +0 -2
  247. package/dist/cdn/F5QGCGHF.js +0 -2
  248. package/dist/cdn/HGOHRPAD.js +0 -2
  249. package/dist/cdn/IZQBJ5VK.js +0 -2
  250. package/dist/cdn/JFG6QVNF.js +0 -2
  251. package/dist/cdn/LCWXNCUX.js +0 -396
  252. package/dist/cdn/NJMHL2Y7.js +0 -4
  253. package/dist/cdn/OGQ2PD7M.js +0 -2
  254. package/dist/cdn/S2PHM4WZ.js +0 -2
  255. package/dist/cdn/ZAHK6WQT.js +0 -138
  256. package/dist/chunks/item2.js +0 -128
  257. /package/dist/cdn/{3OPKWSWR.js → 34BMNP6G.js} +0 -0
  258. /package/dist/cdn/{JQKWT7SI.js → FPAFR5IL.js} +0 -0
  259. /package/dist/cdn/{N5K4DR3J.js → FPKINYFN.js} +0 -0
@@ -1,59 +1,61 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import { c as $ } from "../../chunks/runtime.js";
3
- import { css as z, html as b } from "lit";
4
- import { LitElement as M } from "@arcgis/lumina";
5
- import { createRef as d, ref as p } from "lit/directives/ref.js";
6
- import { u as T } from "../../chunks/useT9n.js";
7
- import { Annotation as h, StateGraph as U, START as q, END as f } from "@langchain/langgraph/web";
8
- import { sendTraceMessage as y, invokeStructuredPrompt as x, sendUXSuggestion as P, createAgentRuntimeStateWithSharedState as k } from "@arcgis/ai-orchestrator";
2
+ import { c as Z } from "../../chunks/runtime.js";
3
+ import { LitElement as tt, createEvent as et } from "@arcgis/lumina";
4
+ import { css as st, render as at, html as w } from "lit";
5
+ import { createRef as M, ref as T } from "lit/directives/ref.js";
6
+ import { u as rt } from "../../chunks/useT9n.js";
7
+ import { a as P, t as ot } from "../../chunks/functionalities.js";
8
+ import { Annotation as h, StateGraph as $, START as G, END as y, NodeInterrupt as V } from "@langchain/langgraph/web";
9
+ import { sendTraceMessage as g, invokeStructuredPrompt as b, createChatModel as F, sendUXSuggestion as B, createAgentRuntimeStateWithSharedState as E } from "@arcgis/ai-components/utils/index.js";
9
10
  import n from "zod";
10
- import { g as V } from "../../chunks/item.js";
11
- const v = "portalItemAnalyticsSummaryMemory", D = () => ({ latestItemId: null, memory: {} }), w = (e) => {
12
- const t = e?.[v]?.value;
13
- if (!t || typeof t != "object")
14
- return D();
15
- const s = t, o = typeof s.latestItemId == "string" ? s.latestItemId : null, i = s.memory && typeof s.memory == "object" ? s.memory : {};
16
- return { latestItemId: o, memory: i };
17
- }, N = (e) => ({
18
- [v]: { value: e }
19
- }), L = n.object({
20
- intent: n.enum(["summarize", "followUp", "clarify"]),
21
- itemId: n.string().default(""),
22
- question: n.string().default("")
23
- }), R = n.object({ summary: n.string(), followUpQuestions: n.array(n.string()).default([]) }), F = n.object({ answer: n.string(), isRelevant: n.boolean() }), S = (e) => {
24
- for (let t = e.length - 1; t >= 0; t -= 1) {
25
- const s = e[t];
26
- if (s.type !== "human")
11
+ import { ChatPromptTemplate as L } from "@langchain/core/prompts";
12
+ import { createAgent as Q } from "langchain";
13
+ import { tool as K } from "@langchain/core/tools";
14
+ import { s as nt, g as it, a as lt, c as ct, q as ut } from "../../chunks/groups.js";
15
+ import mt from "@arcgis/core/identity/IdentityManager.js";
16
+ import k from "@arcgis/core/request.js";
17
+ import { Annotation as dt } from "@langchain/langgraph";
18
+ const x = (s) => {
19
+ for (let t = s.length - 1; t >= 0; t -= 1) {
20
+ const e = s[t];
21
+ if (e.type !== "human")
27
22
  continue;
28
- const o = s.content;
29
- if (typeof o == "string")
30
- return o;
31
- if (Array.isArray(o))
32
- return o.map(
33
- (i) => typeof i == "string" ? i : "text" in i && typeof i.text == "string" ? i.text : ""
23
+ const a = e.content;
24
+ if (typeof a == "string")
25
+ return a;
26
+ if (Array.isArray(a))
27
+ return a.map(
28
+ (r) => typeof r == "string" ? r : "text" in r && typeof r.text == "string" ? r.text : ""
34
29
  ).join(" ").trim();
35
30
  }
36
31
  return "";
37
- }, j = async (e, t) => {
38
- await y({ text: "Answering follow-up...", agentName: "analytics" }, t);
39
- const s = w(e.agentExecutionContext.sharedState), o = e.analyticsItemId ?? s.latestItemId, i = o ? s.memory[o] : void 0, r = e.analyticsQuestion || S(e.agentExecutionContext.messages);
40
- return i ? {
32
+ }, pt = () => ({ latestItemId: null, memory: {} }), N = (s) => {
33
+ const t = s?.agentExecutionContext.sharedState.portalItemAnalyticsSummaryMemory?.value;
34
+ return t ? { latestItemId: t.latestItemId, memory: t.memory } : pt();
35
+ }, gt = n.object({
36
+ intent: n.enum(["summarize", "followUp", "clarify"]),
37
+ itemId: n.string().default(""),
38
+ question: n.string().default("")
39
+ }), ht = n.object({ summary: n.string(), followUpQuestions: n.array(n.string()).default([]) }), ft = n.object({ answer: n.string(), isRelevant: n.boolean() }), yt = async (s, t) => {
40
+ await g({ text: "Answering follow-up...", agentName: "analytics" }, t);
41
+ const e = N(s), a = s.analyticsItemId ?? e.latestItemId, r = a ? e.memory[a] : void 0, l = s.analyticsQuestion || x(s.agentExecutionContext.messages);
42
+ return r ? {
41
43
  status: "success",
42
- outputMessage: (await x({
43
- promptText: G,
44
- schema: F,
44
+ outputMessage: (await b({
45
+ promptText: bt,
46
+ schema: ft,
45
47
  modelTier: "default",
46
48
  inputVariables: {
47
- summary: i.summary,
48
- question: r,
49
- fullContext: JSON.stringify(i.fullContext)
49
+ summary: r.summary,
50
+ question: l,
51
+ fullContext: JSON.stringify(r.fullContext)
50
52
  }
51
53
  })).answer
52
54
  } : {
53
55
  status: "success",
54
56
  outputMessage: "I don't have enough information yet. Please ask me to summarize the item first using summarize item <item id>."
55
57
  };
56
- }, G = `
58
+ }, bt = `
57
59
  You answer follow-up questions about an ArcGIS item.
58
60
 
59
61
  Ground your answer in the provided item context.
@@ -73,39 +75,69 @@ Item full context
73
75
 
74
76
  Question:
75
77
  {question}
76
- `, Q = async (e, t) => {
77
- await y({ text: "Analyzing intent...", agentName: "analytics" }, t);
78
- const s = S(e.agentExecutionContext.messages), o = !!w(e.agentExecutionContext.sharedState).latestItemId, i = await x({
79
- promptText: K,
80
- schema: L,
81
- inputVariables: {
82
- userMessage: s,
83
- hasSummaryContext: String(o)
84
- }
85
- }), { intent: r, itemId: l, question: u } = i, c = r === "clarify" || r === "summarize" && !l || r === "followUp" && !u;
78
+ `;
79
+ function I(s) {
80
+ const { portal: t, user: e } = s ?? {};
81
+ if (!s || !t || !e)
82
+ throw new Error("Invalid context: PortalAssistantContext with portal and user is required.");
83
+ }
84
+ const W = K(
85
+ async ({ itemTitle: s }, t) => {
86
+ const e = s.trim();
87
+ if (!e)
88
+ return null;
89
+ const a = t?.configurable?.context;
90
+ I(a);
91
+ const { result: r, error: l } = await nt(a.portal, e, { num: 1 });
92
+ return l && console.error("Error searching for portal item by title:", l), r?.results[0]?.id || null;
93
+ },
94
+ {
95
+ name: "resolvePortalItemIdByTitle",
96
+ 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.',
97
+ schema: n.object({
98
+ itemTitle: n.string().describe("The portal item title to resolve to an item id.")
99
+ })
100
+ }
101
+ ), It = async (s, t) => {
102
+ await g({ text: "Analyzing intent...", agentName: "analytics" }, t);
103
+ const e = x(s.agentExecutionContext.messages), a = !!N(s).latestItemId, r = await L.fromTemplate(wt).format({
104
+ userMessage: e,
105
+ hasSummaryContext: String(a)
106
+ }), c = await Q({
107
+ model: await F({ modelTier: "fast" }),
108
+ tools: [W],
109
+ systemPrompt: r,
110
+ responseFormat: gt,
111
+ checkpointer: !0
112
+ }).invoke({ messages: s.agentExecutionContext.messages }, t), { intent: i, itemId: o, question: u } = c.structuredResponse, m = i === "clarify" || i === "summarize" && !o || i === "followUp" && !u;
86
113
  return {
87
- agentExecutionContext: { ...e.agentExecutionContext },
88
- analyticsIntent: c ? "clarify" : r,
89
- analyticsItemId: l || null,
114
+ agentExecutionContext: { ...s.agentExecutionContext },
115
+ analyticsIntent: m ? "clarify" : i,
116
+ analyticsItemId: o || null,
90
117
  analyticsQuestion: u || "",
91
118
  status: "success",
92
- outputMessage: c ? "Please clarify with summarize item <item id> or ask a follow-up question about a summarized item." : ""
119
+ outputMessage: m ? 'Please clarify with summarize item <item id>, summarize item #<title>, or summarize item #"<title with spaces>".' : ""
93
120
  };
94
- }, K = `
121
+ }, wt = `
95
122
  Classify the user analytics request.
96
123
 
97
124
  Rules:
98
125
  - intent="summarize" only when the user explicitly asks to summarize/overview/recap an item.
99
126
  - intent="followUp" for analytical questions about item details, including schema/fields/attributes/layers.
100
127
  - intent="clarify" when neither summarize nor follow-up intent is clear.
101
- - Extract itemId only when explicit in the request.
128
+ - itemId must be the final resolved item id.
129
+ - If request has explicit item id, set itemId directly.
130
+ - If request references item title (for example #title, #"title with spaces", or plain quoted title), call resolvePortalItemIdByTitle and set itemId to the returned value.
131
+ - Never return item titles in output fields.
102
132
  - If intent is "followUp", set question to the user's full question/request text.
103
133
  - If intent is "summarize", set question="".
104
134
  - When user asks to show/list/explain fields, schema, attributes, columns, or layer details, classify as "followUp" unless they explicitly request a summary.
105
135
  - If hasSummaryContext is true, prefer "followUp" for detail-oriented requests that do not explicitly ask to summarize.
106
136
 
107
137
  Examples:
108
- - "Summarize item 0123456789abcdef0123456789abcdef" => summarize
138
+ - "Summarize item 0123456789abcdef0123456789abcdef" => summarize, itemId="0123456789abcdef0123456789abcdef"
139
+ - "Summarize item #california" => summarize, call resolvePortalItemIdByTitle("california") and set itemId to tool result
140
+ - "Summarize item #"california farmland"" => summarize, call resolvePortalItemIdByTitle("california farmland") and set itemId to tool result
109
141
  - "Show the layer's available fields" => followUp
110
142
  - "List attributes and explain what status means" => followUp
111
143
  - "What fields are available?" with hasSummaryContext=true => followUp
@@ -116,46 +148,40 @@ hasSummaryContext:
116
148
 
117
149
  User message:
118
150
  {userMessage}
119
- `;
120
- function W(e) {
121
- const { portal: t, user: s } = e ?? {};
122
- if (!e || !t || !s)
123
- throw new Error("Invalid context: PortalAssistantContext with portal and user is required.");
124
- }
125
- const Y = async (e, t) => {
126
- const s = e.analyticsItemId;
127
- if (!s)
151
+ `, xt = async (s, t) => {
152
+ const e = s.analyticsItemId;
153
+ if (!e)
128
154
  return {
129
155
  status: "success",
130
- outputMessage: "Please clarify with summarize item <item id>."
156
+ outputMessage: 'Please clarify with summarize item <item id>, summarize item #<title>, or summarize item #"<title with spaces>".'
131
157
  };
132
- await y({ text: `Summarizing item ${s}...`, agentName: "analytics" }, t);
133
- const o = t?.configurable?.context;
134
- W(o);
135
- const { portal: i, user: r } = o, { result: l, error: u } = await V(r, i, s);
136
- if (u || !l)
137
- return await y({ text: "Failed to get item context for summarization", agentName: "analytics" }, t), {
158
+ await g({ text: `Summarizing item ${e}...`, agentName: "analytics" }, t);
159
+ const a = t?.configurable?.context;
160
+ I(a);
161
+ const { portal: r, user: l } = a, { result: c, error: i } = await it(l, r, e);
162
+ if (i || !c)
163
+ return await g({ text: "Failed to get item context for summarization", agentName: "analytics" }, t), {
138
164
  status: "success",
139
165
  outputMessage: "Unable to retrieve item context for summarization."
140
166
  };
141
- const { context: a } = l, m = await x({
142
- promptText: J,
143
- schema: R,
167
+ const { context: o } = c, u = await b({
168
+ promptText: vt,
169
+ schema: ht,
144
170
  modelTier: "default",
145
- inputVariables: { context: JSON.stringify(a) }
146
- }), { followUpQuestions: c, summary: I } = m, C = w(e.agentExecutionContext.sharedState), E = {
147
- latestItemId: s,
171
+ inputVariables: { context: JSON.stringify(o) }
172
+ }), { followUpQuestions: d, summary: p } = u, m = N(s), f = {
173
+ latestItemId: e,
148
174
  memory: {
149
- ...C.memory,
150
- [s]: { summary: I, followUpQuestions: c, fullContext: a }
175
+ ...m.memory,
176
+ [e]: { summary: p, followUpQuestions: d, fullContext: o }
151
177
  }
152
178
  };
153
- return c.length && await P({ type: "suggested-prompts", data: { prompts: c } }, t), {
179
+ return d.length && await B({ type: "suggested-prompts", data: { prompts: d } }, t), {
154
180
  status: "success",
155
- outputMessage: I,
156
- sharedStatePatch: N(E)
181
+ outputMessage: p,
182
+ sharedStatePatch: { portalItemAnalyticsSummaryMemory: { value: f } }
157
183
  };
158
- }, J = `
184
+ }, vt = `
159
185
  You are a item summary tool for ArcGIS. Your job is to summarize an item's info based on the provided context.
160
186
  Summary rules:
161
187
  - The summary should be concise markdown, make sure to format the output nicely so it's easy to read.
@@ -170,71 +196,659 @@ Do not include internal identifiers.
170
196
  If the user asks for a detailed summary, you may expand the response up to 300 words.
171
197
  Item context:
172
198
  {context}
173
- `, g = (e, t) => t ?? e, A = h.Root({
174
- ...k(),
175
- // States shared across nodes in the graph
199
+ `, C = (s, t) => t ?? s, O = h.Root({
200
+ ...E(),
201
+ // States shared only across nodes in the graph, not between invocations
176
202
  analyticsIntent: h({
177
- reducer: g,
203
+ reducer: C,
178
204
  default: () => "clarify"
179
205
  }),
180
206
  analyticsItemId: h({
181
- reducer: g,
207
+ reducer: C,
182
208
  default: () => null
183
209
  }),
184
210
  analyticsQuestion: h({
185
- reducer: g,
211
+ reducer: C,
186
212
  default: () => ""
187
213
  })
188
- }), O = () => new U(A).addNode("detectAnalyticsIntent", Q).addNode("summarizePortalItem", Y).addNode("answerAnalyticsFollowUp", j).addEdge(q, "detectAnalyticsIntent").addConditionalEdges("detectAnalyticsIntent", (t) => t.analyticsIntent === "summarize" ? "summarizePortalItem" : t.analyticsIntent === "followUp" ? "answerAnalyticsFollowUp" : f).addEdge("summarizePortalItem", f).addEdge("answerAnalyticsFollowUp", f), B = String.raw`- **portal-item-analytics** - Portal item analytics assistant:
214
+ }), St = () => new $(O).addNode("detectAnalyticsIntent", It).addNode("summarizePortalItem", xt).addNode("answerAnalyticsFollowUp", yt).addEdge(G, "detectAnalyticsIntent").addConditionalEdges("detectAnalyticsIntent", (t) => t.analyticsIntent === "summarize" ? "summarizePortalItem" : t.analyticsIntent === "followUp" ? "answerAnalyticsFollowUp" : y).addEdge("summarizePortalItem", y).addEdge("answerAnalyticsFollowUp", y), Mt = String.raw`- **portal-item-analytics** - Portal item analytics assistant:
189
215
  - summarizes ArcGIS portal items from item context
190
216
  - suggests follow-up prompts grounded in the item
191
- `, X = {
217
+ `, Tt = {
192
218
  id: "portal-item-analytics",
193
219
  name: "Portal Item Analytics",
194
- description: B,
195
- createGraph: O,
196
- workspace: A
197
- }, H = z`: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}`;
198
- class Z extends M {
220
+ description: Mt,
221
+ createGraph: St,
222
+ workspace: O
223
+ }, Pt = (s) => s.map((t) => `"${t}"`).join(", "), At = n.object({
224
+ successMessage: n.string().default("")
225
+ }), q = "portal-group-creation", D = "approveAddMembers", Ct = async (s, t) => {
226
+ if (s.intentParams.intent !== "addMembers")
227
+ return {
228
+ status: "success",
229
+ outputMessage: "Use @mention usernames for the members you want to add."
230
+ };
231
+ const e = s.agentExecutionContext.sharedState.createdGroupId?.value;
232
+ if (!e)
233
+ return {
234
+ status: "success",
235
+ outputMessage: "Create a group first, then add members using @mention usernames."
236
+ };
237
+ const a = s.intentParams.memberInfo.memberIdentifiers.map((m) => m.trim()).filter(Boolean);
238
+ if (!a.length)
239
+ return {
240
+ status: "success",
241
+ outputMessage: "Use @mention usernames for the members you want to add."
242
+ };
243
+ const l = `The following member(s) will be added to the newly created group:
244
+
245
+ ${a.map((m) => `- **@${m}**`).join(`
246
+ `)}
247
+
248
+ Do you want to continue?`, { hitlResponse: c } = t?.configurable ?? {};
249
+ if (c?.agentId !== q || c.id !== D) {
250
+ const m = {
251
+ agentId: q,
252
+ id: D,
253
+ kind: "booleanChoice",
254
+ message: l,
255
+ metadata: {
256
+ action: "addMembers",
257
+ groupId: e,
258
+ members: [...a]
259
+ }
260
+ };
261
+ throw new V(m);
262
+ }
263
+ if (c.payload !== !0)
264
+ return {
265
+ status: "success",
266
+ outputMessage: "Okay, I cancelled adding members to the group."
267
+ };
268
+ await g(
269
+ { text: `Adding members ${Pt(a)}...`, agentName: "group-creation" },
270
+ t
271
+ );
272
+ const i = t?.configurable?.context;
273
+ I(i);
274
+ const { result: o, error: u } = await lt(i.portal, e, a);
275
+ if (u || !o)
276
+ return {
277
+ status: "success",
278
+ outputMessage: "I could not add members to that group. Please confirm group access and user accounts, then try again."
279
+ };
280
+ const { addedUsernames: d, notAddedUsers: p } = o;
281
+ try {
282
+ const f = (await b({
283
+ promptText: $t,
284
+ schema: At,
285
+ modelTier: "fast",
286
+ inputVariables: {
287
+ addedMembers: d.join(", "),
288
+ notAddedMembers: JSON.stringify(
289
+ p.map((v) => ({ username: v.username, reason: v.error.message }))
290
+ )
291
+ }
292
+ })).successMessage;
293
+ if (f)
294
+ return { status: "success", outputMessage: f };
295
+ } catch (m) {
296
+ console.error("Error generating add-members success message:", m);
297
+ }
298
+ return {};
299
+ }, $t = `
300
+ Write a concise, friendly success message for adding members to a group.
301
+
302
+ Rules:
303
+ - Keep it to 1-2 short sentences.
304
+ - Use plain text only.
305
+ - If there is no notAddedMembers, confirm that all requested members were added successfully.
306
+ - 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
307
+ - Make sure to bold the usernames
308
+
309
+ Added members:
310
+ {addedMembers}
311
+
312
+ Not added members:
313
+ {notAddedMembers}
314
+ `, R = "portal-group-creation", U = "approveCreateGroup", Gt = n.object({
315
+ successMessage: n.string().default("")
316
+ }), Et = n.object({
317
+ failureMessage: n.string().default("")
318
+ }), Nt = async (s, t) => {
319
+ if (s.intentParams.intent !== "create")
320
+ return {
321
+ status: "success",
322
+ outputMessage: "Tell me the group title you want to use."
323
+ };
324
+ const e = s.intentParams.title.trim();
325
+ if (!e)
326
+ return {
327
+ status: "success",
328
+ outputMessage: "What title would you like for the new group?"
329
+ };
330
+ const a = `A group with the title **${e}** will be created. Do you want to continue?`, { hitlResponse: r } = t?.configurable;
331
+ if (r?.agentId !== R || r.id !== U) {
332
+ const u = {
333
+ agentId: R,
334
+ id: U,
335
+ kind: "booleanChoice",
336
+ message: a,
337
+ metadata: {
338
+ action: "createGroup",
339
+ title: e,
340
+ access: "private"
341
+ }
342
+ };
343
+ throw new V(u);
344
+ }
345
+ if (r.payload !== !0)
346
+ return {
347
+ status: "success",
348
+ outputMessage: `Okay, I cancelled creating **${e}**.`
349
+ };
350
+ await g({ text: `Creating group "${e}"...`, agentName: "group-creation" }, t);
351
+ const l = t?.configurable?.context;
352
+ I(l);
353
+ const { result: c, error: i } = await ct(l.portal, {
354
+ title: e,
355
+ access: "private"
356
+ });
357
+ if (i || !c) {
358
+ const u = i?.message?.trim() || "No additional details were provided.";
359
+ try {
360
+ const p = (await b({
361
+ promptText: qt,
362
+ schema: Et,
363
+ modelTier: "fast",
364
+ inputVariables: {
365
+ groupTitle: e,
366
+ failureReason: u
367
+ }
368
+ })).failureMessage.trim();
369
+ if (p)
370
+ return {
371
+ status: "success",
372
+ outputMessage: p
373
+ };
374
+ } catch (d) {
375
+ console.error("Error generating create-group failure message:", d);
376
+ }
377
+ return {
378
+ status: "success",
379
+ outputMessage: "I could not create that group. Please confirm your permissions and try again with the group title."
380
+ };
381
+ }
382
+ const o = c.id;
383
+ try {
384
+ const d = (await b({
385
+ promptText: kt,
386
+ schema: Gt,
387
+ modelTier: "fast",
388
+ inputVariables: {
389
+ groupTitle: e
390
+ }
391
+ })).successMessage.trim();
392
+ if (d)
393
+ return {
394
+ status: "success",
395
+ outputMessage: d,
396
+ sharedStatePatch: { createdGroupId: { value: o } },
397
+ createdGroupId: o
398
+ };
399
+ } catch (u) {
400
+ console.error("Error generating create-group success message:", u);
401
+ }
402
+ return {};
403
+ }, kt = `
404
+ Write a concise, friendly success message after creating a portal group.
405
+
406
+ Rules:
407
+ - Mention that the group was created successfully.
408
+ - Mention that the user can add members by using @mention usernames.
409
+ - Keep it to 1-2 short sentences.
410
+ - Make sure to bold the group title in the message.
411
+
412
+ Group title:
413
+ {groupTitle}
414
+ `, qt = `
415
+ Write a concise, friendly failure message after an attempt to create a portal group.
416
+
417
+ Rules:
418
+ - Keep it to 1-2 short sentences.
419
+ - Use plain text only.
420
+ - Mention that group creation failed.
421
+ - Include the failure reason in user-friendly language.
422
+ - End with a clear next step the user can try.
423
+
424
+ Group title:
425
+ {groupTitle}
426
+
427
+ Failure reason:
428
+ {failureReason}
429
+ `, Dt = n.object({
430
+ intent: n.enum(["clarify", "create", "addMembers"]).default("clarify"),
431
+ title: n.string().default(""),
432
+ memberIdentifiers: n.array(n.string()).default([]),
433
+ clarifyMessage: n.string().default("")
434
+ }), Rt = async (s, t) => {
435
+ await g({ text: "Thinking about groups...", agentName: "group-creation" }, t);
436
+ const e = x(s.agentExecutionContext.messages).trim(), a = await b({
437
+ promptText: Ut,
438
+ schema: Dt,
439
+ modelTier: "default",
440
+ inputVariables: { userMessage: e }
441
+ }), r = a.title.trim(), l = a.memberIdentifiers.filter(Boolean), c = a.clarifyMessage.trim(), i = a.intent === "create" && !!r, o = a.intent === "addMembers" && l.length > 0;
442
+ return {
443
+ intentParams: i ? { intent: "create", title: r } : o ? { intent: "addMembers", memberInfo: { memberIdentifiers: l } } : { intent: "clarify" },
444
+ status: "success",
445
+ outputMessage: !i && !o ? c : ""
446
+ };
447
+ }, Ut = `
448
+ You classify whether a user is asking to create a new ArcGIS Portal group or add members to an existing group.
449
+
450
+ Rules:
451
+ - Set intent="create" when the user asks to create a group and a title can be identified.
452
+ - Set intent="addMembers" when the user asks to add one or more members to a group.
453
+ - Set intent="clarify" when required data is missing or the request is ambiguous.
454
+ - For create requests, extract title only.
455
+ - For add-members requests, extract memberIdentifiers as ArcGIS usernames only (no @ prefix), but if you're returning a hint text asking for missing members, include the @ prefix.
456
+ - If the user includes mentions like @jsmith, return "jsmith" in memberIdentifiers.
457
+ - Do not extract group ids or group titles; add-members is a follow-up action that targets the most recently created group.
458
+ - When intent="clarify", provide a concise clarifyMessage describing exactly what is missing.
459
+ - If the user gives the title in quotes, extract exactly that title.
460
+ - If the user says create group <title> without quotes, extract only the title text after the create-group wording.
461
+ - If the user message looks like only a potential title (short phrase, not a question), treat it as the title and set intent="create".
462
+ - Return only extracted values. Do not add helper text into title or memberIdentifiers.
463
+ - Make sure to match the user's tone and texting style
464
+
465
+ Examples:
466
+ - help me create a new group "<title>" => intent="create", title="<title>", memberIdentifiers=[]
467
+ - add @<username1> and @<username2> => intent="addMembers", memberIdentifiers=["<username1>","<username2>"]
468
+ - add <member> => intent="addMembers", memberIdentifiers=["<member>"]
469
+ - help me create a new group => intent="clarify" with a question for missing title
470
+
471
+ User message:
472
+ {userMessage}
473
+ `, zt = n.discriminatedUnion("destinationType", [
474
+ n.object({
475
+ destinationType: n.literal("portal-content")
476
+ }),
477
+ n.object({
478
+ destinationType: n.literal("portal-groups")
479
+ }),
480
+ n.object({
481
+ destinationType: n.literal("portal-item"),
482
+ itemId: n.string().trim().min(1)
483
+ }),
484
+ n.object({
485
+ destinationType: n.literal("portal-group"),
486
+ groupId: n.string().trim().min(1)
487
+ })
488
+ ]);
489
+ function jt(s) {
490
+ const t = zt.safeParse(s);
491
+ return t.success ? t.data : void 0;
492
+ }
493
+ const _ = "portal-navigation", J = async (s, t) => {
494
+ await B({ type: _, data: { ...s } }, t);
495
+ }, Vt = async (s, t) => {
496
+ const e = s.createdGroupId ?? s.agentExecutionContext.sharedState.createdGroupId?.value;
497
+ return e ? (await g({ text: "Preparing navigation...", agentName: "group-creation" }, t), await J({ destinationType: "portal-group", groupId: e }, t), {}) : {};
498
+ }, z = (s, t) => t ?? s, Y = h.Root({
499
+ ...E(),
500
+ // * Shared state between nodes (but not persisted to the agent execution context)
501
+ /** Parameters related to the user's intent for group creation actions */
502
+ intentParams: h({ reducer: z, default: () => ({ intent: "clarify" }) }),
503
+ /** The ID of the group that was created
504
+ * even though we already have this in the shared state
505
+ * we still need it here to also share between nodes
506
+ */
507
+ createdGroupId: h({ reducer: z, default: () => "" })
508
+ }), Ft = () => new $(Y).addNode("detectGroupCreationIntent", Rt).addNode("createPortalGroup", Nt).addNode("addMembersToPortalGroup", Ct).addNode("suggestCreatedGroupNavigation", Vt).addEdge(G, "detectGroupCreationIntent").addConditionalEdges("detectGroupCreationIntent", (t) => {
509
+ switch (t.intentParams.intent) {
510
+ case "create":
511
+ return "createPortalGroup";
512
+ case "addMembers":
513
+ return "addMembersToPortalGroup";
514
+ default:
515
+ return y;
516
+ }
517
+ }).addEdge("createPortalGroup", "suggestCreatedGroupNavigation").addEdge("addMembersToPortalGroup", "suggestCreatedGroupNavigation").addEdge("suggestCreatedGroupNavigation", y), Bt = String.raw`- **portal-group-creation** - Portal group creation assistant:
518
+ - creates a new ArcGIS Portal group for the signed-in user
519
+ - adds users to the newly created group using @mention usernames
520
+ `, Lt = {
521
+ id: "portal-group-creation",
522
+ name: "Portal Group Creation",
523
+ description: Bt,
524
+ createGraph: Ft,
525
+ workspace: Y
526
+ }, H = "portalDocAssistantMemory", Qt = () => ({ conversationId: "" }), Kt = (s) => {
527
+ const t = s?.[H]?.value;
528
+ if (!t || typeof t != "object")
529
+ return Qt();
530
+ const e = t;
531
+ return {
532
+ conversationId: typeof e.conversationId == "string" ? e.conversationId : ""
533
+ };
534
+ }, Wt = (s) => ({
535
+ [H]: { value: s }
536
+ });
537
+ async function Ot({
538
+ portal: s,
539
+ question: t,
540
+ persona: e,
541
+ previousConversationId: a,
542
+ signal: r,
543
+ skillId: l
544
+ }) {
545
+ l ??= "doc_ai_assistant";
546
+ const i = await _t({
547
+ portal: s,
548
+ skillId: l,
549
+ message: t,
550
+ options: { context: {
551
+ kind: "DocAIAssistantRequest",
552
+ filters: { persona: { persona: e } }
553
+ }, previousConversationId: a, signal: r }
554
+ });
555
+ return {
556
+ reply: Jt(i, l),
557
+ conversationId: i[0]?.conversationId ?? ""
558
+ };
559
+ }
560
+ async function _t({
561
+ portal: s,
562
+ skillId: t,
563
+ message: e,
564
+ options: a
565
+ }) {
566
+ const l = `${s.helperServices.aiAssistantServices.url}/skills/${t}/chat`, c = {
567
+ "Content-Type": "application/json",
568
+ token: mt.findCredential(s.url)?.token ?? ""
569
+ }, i = await k(l, {
570
+ method: "post",
571
+ body: JSON.stringify({
572
+ message: e,
573
+ context: a.context,
574
+ conversationId: a.previousConversationId
575
+ }),
576
+ headers: c,
577
+ signal: a.signal
578
+ });
579
+ if (i.httpStatus !== 200)
580
+ throw new Error(`Doc assistant chat failed (${i.httpStatus})`, {
581
+ cause: i.data
582
+ });
583
+ const o = i.data, u = [o], { conversationId: d, inquiryId: p } = o, m = async (f, v) => {
584
+ if (!v)
585
+ return;
586
+ await ot(1e3);
587
+ const S = await k(l, {
588
+ method: "post",
589
+ body: JSON.stringify({ conversationId: d, inquiryId: p, ackSequenceNumber: f }),
590
+ headers: c,
591
+ signal: a.signal
592
+ });
593
+ if (S.httpStatus !== 200)
594
+ throw new Error(`Doc assistant poll failed (${S.httpStatus})`, {
595
+ cause: S.data
596
+ });
597
+ const A = S.data;
598
+ u.push(A), await m(A.sequenceNumber, A.hasMore);
599
+ };
600
+ return o.hasMore && await m(o.sequenceNumber, o.hasMore), u;
601
+ }
602
+ function Jt(s, t) {
603
+ switch (t) {
604
+ case "doc_chat":
605
+ return s.find((e) => e.message != null)?.message ?? "";
606
+ case "doc_ai_assistant":
607
+ for (let e = s.length - 1; e >= 0; e -= 1) {
608
+ const a = s[e];
609
+ if (a.context?.kind === "DocAIAssistantContext") {
610
+ const r = a.context.results?.[0]?.reply;
611
+ if (r)
612
+ return r;
613
+ }
614
+ }
615
+ return "";
616
+ default:
617
+ return P(t);
618
+ }
619
+ }
620
+ const Yt = async (s, t) => {
621
+ await g({ text: "Asking documentation assistant...", agentName: "doc-assistant" }, t);
622
+ const e = x(s.agentExecutionContext.messages).trim();
623
+ if (!e)
624
+ return {
625
+ status: "success",
626
+ outputMessage: "Please share your question and I can help with ArcGIS and Portal documentation."
627
+ };
628
+ const a = t?.configurable?.context;
629
+ I(a);
630
+ const r = Kt(s.agentExecutionContext.sharedState), { reply: l, conversationId: c } = await Ot({
631
+ portal: a.portal,
632
+ question: e,
633
+ previousConversationId: r.conversationId || void 0,
634
+ skillId: "doc_ai_assistant",
635
+ persona: "developers"
636
+ });
637
+ return {
638
+ status: "success",
639
+ outputMessage: l.trim() || "I could not retrieve a response from the documentation assistant.",
640
+ sharedStatePatch: Wt({
641
+ conversationId: c || r.conversationId
642
+ })
643
+ };
644
+ }, Ht = K(
645
+ async ({ groupTitle: s }, t) => {
646
+ const e = s.trim();
647
+ if (!e)
648
+ return null;
649
+ const a = t?.configurable?.context;
650
+ I(a);
651
+ try {
652
+ return (await ut(a.portal, { query: `title:${e}`, num: 1 }))?.results[0]?.id || null;
653
+ } catch (r) {
654
+ return console.error("Error searching for portal group by title:", r), null;
655
+ }
656
+ },
657
+ {
658
+ name: "resolvePortalGroupIdByTitle",
659
+ 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.",
660
+ schema: n.object({
661
+ groupTitle: n.string().describe("The portal group title to resolve to a group id.")
662
+ })
663
+ }
664
+ ), j = n.object({
665
+ shouldSuggestNavigation: n.boolean().default(!1),
666
+ destinationType: n.enum(["none", "portal-content", "portal-item", "portal-groups", "portal-group"]).default("none"),
667
+ itemId: n.string().default(""),
668
+ groupId: n.string().default("")
669
+ }), Xt = async (s, t) => {
670
+ await g({ text: "Extracting navigation intent...", agentName: "doc-assistant" }, t);
671
+ const e = s.outputMessage.trim();
672
+ if (!e)
673
+ return {};
674
+ const a = x(s.agentExecutionContext.messages).trim(), r = await L.fromTemplate(te).format({
675
+ question: a,
676
+ response: e
677
+ }), c = await Q({
678
+ model: await F({ modelTier: "default" }),
679
+ tools: [W, Ht],
680
+ systemPrompt: r,
681
+ responseFormat: j,
682
+ checkpointer: !0
683
+ }).invoke({ messages: s.agentExecutionContext.messages }, t), i = j.parse(c.structuredResponse ?? {});
684
+ if (!i.shouldSuggestNavigation || i.destinationType === "none")
685
+ return {};
686
+ const o = Zt(i);
687
+ return o ? (await J(o, t), {}) : {};
688
+ };
689
+ function Zt({
690
+ destinationType: s,
691
+ itemId: t,
692
+ groupId: e
693
+ }) {
694
+ switch (s) {
695
+ case "portal-content":
696
+ return { destinationType: "portal-content" };
697
+ case "portal-groups":
698
+ return { destinationType: "portal-groups" };
699
+ case "portal-item":
700
+ return t ? { destinationType: "portal-item", itemId: t } : null;
701
+ case "portal-group":
702
+ return e ? { destinationType: "portal-group", groupId: e } : null;
703
+ case "none":
704
+ return null;
705
+ default:
706
+ return P(s);
707
+ }
708
+ }
709
+ const te = `
710
+ You decide whether the assistant response should include a navigation action to ArcGIS Portal.
711
+
712
+ Given the user question and assistant response:
713
+ - Decide if a navigation action would help the user complete the task.
714
+ - If yes, choose one destination type:
715
+ - portal-content: portal content page
716
+ - portal-groups: groups listing page
717
+ - portal-item: specific item page (requires itemId)
718
+ - portal-group: specific group page (requires groupId)
719
+
720
+ Rules:
721
+ - If no navigation is useful, set shouldSuggestNavigation=false and destinationType=none.
722
+ - If destinationType is portal-item and user references an item by title (for example #title, #"title with spaces", or plain quoted title), call resolvePortalItemIdByTitle and set itemId from the tool result.
723
+ - If destinationType is portal-group and user references a group by title (for example $title, $"title with spaces", or plain quoted group title), call resolvePortalGroupIdByTitle and set groupId from the tool result.
724
+ - Do not invent itemId.
725
+ - Do not invent groupId.
726
+ - Prefer destinationType=portal-content for generic "go to content" guidance.
727
+
728
+ User question:
729
+ {question}
730
+
731
+ Assistant response:
732
+ {response}
733
+ `, X = dt.Root({
734
+ ...E()
735
+ }), ee = () => new $(X).addNode("answerDocQuestion", Yt).addNode("extractNavigationIntent", Xt).addEdge(G, "answerDocQuestion").addEdge("answerDocQuestion", "extractNavigationIntent").addEdge("extractNavigationIntent", y), se = String.raw`- **portal-doc-assistant** - General ArcGIS documentation and Portal help assistant:
736
+ - answers general ArcGIS, Portal, Enterprise, and JavaScript SDK questions
737
+ - acts as a fallback when specialized agents are not applicable
738
+ `, ae = {
739
+ id: "portal-doc-assistant",
740
+ name: "Portal Doc Assistant",
741
+ description: se,
742
+ createGraph: ee,
743
+ workspace: X
744
+ }, re = st`: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)}`, oe = (s, t) => {
745
+ const { destinationType: e } = s, a = `${t.url}/home`;
746
+ switch (e) {
747
+ case "portal-content":
748
+ return `${a}/content.html`;
749
+ case "portal-groups":
750
+ return `${a}/groups.html`;
751
+ case "portal-item":
752
+ return `${a}/item.html?id=${s.itemId}`;
753
+ case "portal-group":
754
+ return `${a}/group.html?id=${s.groupId}`;
755
+ default:
756
+ return P(e);
757
+ }
758
+ };
759
+ class ne extends tt {
199
760
  constructor() {
200
- super(...arguments), this.t9n = T({ blocking: !0 }), this.assistantEl = d(), this.formEl = d(), this.voiceInputEl = d(), this.inputEl = d(), this.inputText = "", this.showVoiceInput = !0, this.isListening = !1, this.isVoiceInputDisabled = !1, this.autoDestroyDisabled = !1, this.defaultClosed = !1, this.openEntitiesInNewTab = !1;
761
+ super(...arguments), this.t9n = rt({ blocking: !0 }), this.assistantEl = M(), this.formEl = M(), this.voiceInputEl = M(), this.inputEl = M(), this.navigationSlotElements = /* @__PURE__ */ new Map(), this.handleSlottableRequest = (t) => {
762
+ const e = t.detail, a = e.data?.block;
763
+ if (!a)
764
+ return;
765
+ const r = this.getNavigationAction(a);
766
+ r && this.upsertNavigationSlotElement(e.slotName, r);
767
+ }, this.inputText = "", this.showVoiceInput = !0, this.isListening = !1, this.isVoiceInputDisabled = !1, this.interrupt = null, this.autoDestroyDisabled = !1, this.defaultClosed = !1, this.arcgisPortalNavigationRequest = et();
201
768
  }
202
769
  static {
203
- this.properties = { inputText: 16, showVoiceInput: 16, isListening: 16, isVoiceInputDisabled: 16, autoDestroyDisabled: 5, portal: 0, user: 0, config: 0, defaultClosed: 5, openEntitiesInNewTab: 5 };
770
+ this.properties = { inputText: 16, showVoiceInput: 16, isListening: 16, isVoiceInputDisabled: 16, interrupt: 16, autoDestroyDisabled: 5, portal: 0, user: 0, config: 0, defaultClosed: 5 };
204
771
  }
205
772
  static {
206
- this.styles = H;
773
+ this.styles = re;
774
+ }
775
+ getNavigationAction(t) {
776
+ if (t?.type !== _)
777
+ return;
778
+ const e = jt(t.data);
779
+ if (!e)
780
+ return;
781
+ const a = oe(e, this.portal);
782
+ if (a)
783
+ return { href: a, targetDetail: e, label: this.getNavigationText(e.destinationType) };
784
+ }
785
+ upsertNavigationSlotElement(t, e) {
786
+ const a = this.assistantEl.value;
787
+ if (!a)
788
+ return;
789
+ let r = this.navigationSlotElements.get(t);
790
+ r || (r = document.createElement("div"), r.slot = t, this.navigationSlotElements.set(t, r), a.append(r)), at(w`<div><calcite-button class="navigation-button" appearance=outline width=full .href=${e.href} icon-end=launch @click=${(l) => {
791
+ l.preventDefault(), this.arcgisPortalNavigationRequest.emit({
792
+ href: e.href,
793
+ targetDetail: e.targetDetail
794
+ });
795
+ }}>${e.label}</calcite-button>${e.description ? w`<div class="navigation-block-description">${e.description}</div>` : null}</div>`, r);
796
+ }
797
+ getNavigationText(t) {
798
+ const e = this.t9n.navigation;
799
+ switch (t) {
800
+ case "portal-content":
801
+ return e.openContent;
802
+ case "portal-groups":
803
+ return e.openGroups;
804
+ case "portal-item":
805
+ return e.openItem;
806
+ case "portal-group":
807
+ return e.openGroup;
808
+ default:
809
+ return P(t);
810
+ }
207
811
  }
208
812
  render() {
209
- const { t9n: t, inputText: s, portal: o, user: i, showVoiceInput: r, isListening: l, isVoiceInputDisabled: u } = this;
210
- return b`<arcgis-assistant keep-suggested-prompts .heading=${t.heading} .entryMessage=${t.entryMessage} @arcgisPromptSelect=${({ detail: a }) => {
211
- this.inputText = a.prompt, requestAnimationFrame(() => {
813
+ const { t9n: t, inputText: e, portal: a, user: r, showVoiceInput: l, isListening: c, isVoiceInputDisabled: i } = this;
814
+ return w`<arcgis-assistant log-enabled keep-suggested-prompts .heading=${t.heading} .entryMessage=${t.entryMessage} @arcgisSlottableRequest=${this.handleSlottableRequest} @arcgisInterrupt=${({ detail: o }) => {
815
+ this.interrupt = o;
816
+ }} @arcgisInterruptCancel=${() => {
817
+ this.interrupt = null;
818
+ }} @arcgisInterruptSubmit=${() => {
819
+ this.interrupt = null;
820
+ }} @arcgisPromptSelect=${({ detail: o }) => {
821
+ this.inputText = o.prompt, requestAnimationFrame(() => {
212
822
  this.inputEl.value?.focusTextArea();
213
823
  });
214
- }} ${p(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=${(a) => {
215
- a.preventDefault();
216
- const m = s.trim();
217
- m && (this.assistantEl.value?.submitMessage(m), this.inputText = "");
218
- }} ${p(this.formEl)}><arcgis-portal-mentionable-text-area .portal=${o} .user=${i} rows=3 .popoverListLabel=${t.mentionEntities} .placeholder=${t.placeholder} .value=${s} @arcgisUserMentionableTextAreaKeyDown=${({ detail: a }) => {
219
- a.key === "Enter" && !a.shiftKey && (a.preventDefault(), this.formEl.value?.requestSubmit());
220
- }} @arcgisUserMentionableTextAreaChange=${({ detail: a }) => {
221
- this.inputText = a ?? "";
222
- }} ${p(this.inputEl)}></arcgis-portal-mentionable-text-area><div class="chat-actions"><arcgis-portal-voice-input @arcgisVoiceInputStart=${() => {
824
+ }} ${T(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=${(o) => {
825
+ o.preventDefault();
826
+ const u = e.trim();
827
+ u && (this.assistantEl.value?.submitMessage(u), this.inputText = "");
828
+ }} ${T(this.formEl)}><arcgis-portal-mentionable-text-area .portal=${a} .user=${r} rows=3 .popoverListLabel=${t.mentionEntities} .placeholder=${t.placeholder} .value=${e} @arcgisUserMentionableTextAreaKeyDown=${({ detail: o }) => {
829
+ o.key === "Enter" && !o.shiftKey && (o.preventDefault(), this.formEl.value?.requestSubmit());
830
+ }} @arcgisUserMentionableTextAreaChange=${({ detail: o }) => {
831
+ this.inputText = o ?? "";
832
+ }} ${T(this.inputEl)}></arcgis-portal-mentionable-text-area><div class="chat-actions"><arcgis-portal-voice-input @arcgisVoiceInputStart=${() => {
223
833
  this.isListening = !0, this.isVoiceInputDisabled = !1;
224
834
  }} @arcgisVoiceInputStop=${() => {
225
835
  this.isListening = !1, this.isVoiceInputDisabled = !1;
226
- }} @arcgisVoiceInputError=${(a) => {
227
- a.detail.errorCode === "not-supported" && (this.showVoiceInput = !1);
228
- }} @arcgisVoiceInputInterimTranscription=${(a) => {
229
- this.inputText = a.detail.text;
230
- }} ${p(this.voiceInputEl)}></arcgis-portal-voice-input>${r && b`<calcite-button icon-start=microphone .label=${t.voiceInput} round .disabled=${u} .appearance=${l ? "solid" : "outline-fill"} @click=${async () => {
836
+ }} @arcgisVoiceInputError=${(o) => {
837
+ o.detail.errorCode === "not-supported" && (this.showVoiceInput = !1);
838
+ }} @arcgisVoiceInputInterimTranscription=${(o) => {
839
+ this.inputText = o.detail.text;
840
+ }} ${T(this.voiceInputEl)}></arcgis-portal-voice-input>${l && w`<calcite-button icon-start=microphone .label=${t.voiceInput} round .disabled=${i} .appearance=${c ? "solid" : "outline-fill"} @click=${async () => {
231
841
  this.isVoiceInputDisabled = !0;
232
- const a = this.voiceInputEl.value;
233
- l ? await a?.stopListening() : await a?.startListening();
234
- }}></calcite-button>` || ""}<calcite-button type=submit icon-start=send round .disabled=${!s.trim()} .label=${t.send}>${t.send}</calcite-button></div></form><arcgis-assistant-agent .agent=${X} .context=${{ portal: o, user: i }}></arcgis-assistant-agent></arcgis-assistant>`;
842
+ const o = this.voiceInputEl.value;
843
+ c ? await o?.stopListening() : await o?.startListening();
844
+ }}></calcite-button>` || ""}<calcite-button type=submit icon-start=send round .disabled=${!e.trim()} .label=${t.send}>${t.send}</calcite-button></div></form><arcgis-assistant-agent .agent=${Tt} .context=${{ portal: a, user: r }}></arcgis-assistant-agent><arcgis-assistant-agent .agent=${Lt} .context=${{ portal: a, user: r }}></arcgis-assistant-agent><arcgis-assistant-agent .agent=${ae} .context=${{ portal: a, user: r }}></arcgis-assistant-agent>${this.interrupt && w`<arcgis-portal-ai-assistant-interrupt slot=interrupt .type=${this.interrupt.type} .message=${this.interrupt.message} .options=${this.interrupt.options} @arcgisSubmit=${({ detail: o }) => {
845
+ this.assistantEl.value?.submitInterrupt(o);
846
+ }} @arcgisCancel=${() => {
847
+ this.assistantEl.value?.cancelInterrupt();
848
+ }}></arcgis-portal-ai-assistant-interrupt>` || ""}</arcgis-assistant>`;
235
849
  }
236
850
  }
237
- $("arcgis-portal-ai-assistant", Z);
851
+ Z("arcgis-portal-ai-assistant", ne);
238
852
  export {
239
- Z as ArcgisPortalAiAssistant
853
+ ne as ArcgisPortalAiAssistant
240
854
  };