@arcgis/ai-components 5.2.0-next.1 → 5.2.0-next.100

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 (325) hide show
  1. package/LICENSE.md +4 -2
  2. package/README.md +2 -2
  3. package/dist/agent-utils/FunctionAgent.d.ts +2 -2
  4. package/dist/agent-utils/LLMAgent.d.ts +7 -4
  5. package/dist/agent-utils/LLMAgent.js +26 -24
  6. package/dist/agent-utils/WorkflowAgent.d.ts +2 -2
  7. package/dist/agent-utils/WorkflowAgent.js +14 -15
  8. package/dist/agent-utils/index.d.ts +177 -0
  9. package/dist/agent-utils/index.js +167 -0
  10. package/dist/agent-utils/middlewares/trace.d.ts +2 -0
  11. package/dist/agent-utils/middlewares/trace.js +25 -33
  12. package/dist/agent-utils/tools/FunctionTool.d.ts +2 -2
  13. package/dist/agent-utils/types.d.ts +37 -8
  14. package/dist/agent-utils/workflows/ConditionalWorkflow.d.ts +2 -2
  15. package/dist/agent-utils/workflows/LoopWorkflow.d.ts +2 -2
  16. package/dist/agent-utils/workflows/ParallelWorkflow.d.ts +2 -2
  17. package/dist/agent-utils/workflows/RouterWorkflow.d.ts +2 -2
  18. package/dist/agent-utils/workflows/SequentialWorkflow.d.ts +2 -2
  19. package/dist/agent-utils/workflows/SwitchWorkflow.d.ts +2 -2
  20. package/dist/agentic-workflow/AgenticWorkflowRuntime.d.ts +24 -0
  21. package/dist/agentic-workflow/Edge.d.ts +16 -0
  22. package/dist/agentic-workflow/WebAgent.d.ts +39 -0
  23. package/dist/agentic-workflow/jsonTypes.d.ts +189 -0
  24. package/dist/agentic-workflow/nodes/AgentNode.d.ts +28 -0
  25. package/dist/agentic-workflow/nodes/BaseNode.d.ts +35 -0
  26. package/dist/agentic-workflow/nodes/EndMessageNode.d.ts +25 -0
  27. package/dist/agentic-workflow/nodes/StartNode.d.ts +21 -0
  28. package/dist/agentic-workflow/nodes/tools/ArcgisTool.d.ts +21 -0
  29. package/dist/agentic-workflow/types.d.ts +29 -0
  30. package/dist/agents/tools/filter/clearFilters/adapter.d.ts +8 -0
  31. package/dist/agents/tools/filter/clearFilters/adapter.js +22 -0
  32. package/dist/agents/tools/filter/resetMap/adapter.d.ts +8 -0
  33. package/dist/agents/tools/filter/resetMap/adapter.js +22 -0
  34. package/dist/agents/tools/filter/setFeatureEffect/adapter.d.ts +8 -0
  35. package/dist/agents/tools/filter/setFeatureEffect/adapter.js +121 -0
  36. package/dist/agents/tools/help/listFields/adapter.d.ts +11 -0
  37. package/dist/agents/tools/help/listFields/adapter.js +30 -0
  38. package/dist/agents/tools/navigation/goToAddress/adapter.d.ts +10 -0
  39. package/dist/agents/tools/navigation/goToAddress/adapter.js +60 -0
  40. package/dist/agents/tools/navigation/goToBookmark/adapter.d.ts +8 -0
  41. package/dist/agents/tools/navigation/goToBookmark/adapter.js +30 -0
  42. package/dist/agents/tools/navigation/goToFeatures/adapter.d.ts +8 -0
  43. package/dist/agents/tools/navigation/goToFeatures/adapter.js +50 -0
  44. package/dist/agents/tools/navigation/goToFullExtent/adapter.d.ts +8 -0
  45. package/dist/agents/tools/navigation/goToFullExtent/adapter.js +27 -0
  46. package/dist/agents/tools/navigation/goToHomeExtent/adapter.d.ts +8 -0
  47. package/dist/agents/tools/navigation/goToHomeExtent/adapter.js +24 -0
  48. package/dist/agents/tools/navigation/goToLayer/adapter.d.ts +8 -0
  49. package/dist/agents/tools/navigation/goToLayer/adapter.js +26 -0
  50. package/dist/agents/tools/navigation/goToScale/adapter.d.ts +8 -0
  51. package/dist/agents/tools/navigation/goToScale/adapter.js +21 -0
  52. package/dist/agents/tools/navigation/goToViewpoint/adapter.d.ts +8 -0
  53. package/dist/agents/tools/navigation/goToViewpoint/adapter.js +42 -0
  54. package/dist/agents/tools/navigation/goToZoom/adapter.d.ts +8 -0
  55. package/dist/agents/tools/navigation/goToZoom/adapter.js +21 -0
  56. package/dist/agents/tools/query/getAttribute/adapter.d.ts +8 -0
  57. package/dist/agents/tools/query/getAttribute/adapter.js +40 -0
  58. package/dist/agents/tools/query/getStatistics/adapter.d.ts +8 -0
  59. package/dist/agents/tools/query/getStatistics/adapter.js +157 -0
  60. package/dist/agents/tools/query/getTopFeatures/adapter.d.ts +8 -0
  61. package/dist/agents/tools/query/getTopFeatures/adapter.js +144 -0
  62. package/dist/agents/tools/query/queryFeatures/adapter.d.ts +8 -0
  63. package/dist/agents/tools/query/queryFeatures/adapter.js +130 -0
  64. package/dist/agents/tools/search/findRelevantFields/adapter.d.ts +8 -0
  65. package/dist/agents/tools/search/findRelevantFields/adapter.js +57 -0
  66. package/dist/agents/tools/search/findRelevantLayers/adapter.d.ts +8 -0
  67. package/dist/agents/tools/search/findRelevantLayers/adapter.js +38 -0
  68. package/dist/cdn/22KHSDJI.js +2 -0
  69. package/dist/cdn/2EY3BQQX.js +2 -0
  70. package/dist/cdn/2O4DON37.js +2 -0
  71. package/dist/cdn/34O57OGV.js +2 -0
  72. package/dist/cdn/{AMP6IALT.js → 3UEKINYC.js} +1 -1
  73. package/dist/cdn/434TAA3J.js +2 -0
  74. package/dist/cdn/4OGR5QKS.js +2 -0
  75. package/dist/cdn/5FL5BTTX.js +66 -0
  76. package/dist/cdn/5HBAJ57P.js +2 -0
  77. package/dist/cdn/5K5ZY267.js +2 -0
  78. package/dist/cdn/5MK44FNO.js +2 -0
  79. package/dist/cdn/5WYRJMBW.js +2 -0
  80. package/dist/cdn/5X7EG7D2.js +2 -0
  81. package/dist/cdn/5XZLS7UO.js +2 -0
  82. package/dist/cdn/5ZFUGNRN.js +2 -0
  83. package/dist/cdn/655YIKL3.js +11 -0
  84. package/dist/cdn/6ECRQVHY.js +2 -0
  85. package/dist/cdn/6OOZSZRJ.js +2 -0
  86. package/dist/cdn/{3PKJWIC3.js → 6P44KOKX.js} +1 -1
  87. package/dist/cdn/6YYPVU7H.js +3 -0
  88. package/dist/cdn/7BCQMK6D.js +2 -0
  89. package/dist/cdn/7SRLZQVC.js +5 -0
  90. package/dist/cdn/7V6OSTFC.js +2 -0
  91. package/dist/cdn/7VAQUCBU.js +9 -0
  92. package/dist/cdn/7VUSIGEM.js +2 -0
  93. package/dist/cdn/ACJTJLZN.js +2 -0
  94. package/dist/cdn/AI6DYOKR.js +181 -0
  95. package/dist/cdn/AKD5UOVX.js +2 -0
  96. package/dist/cdn/ANRQWYU2.js +2 -0
  97. package/dist/cdn/{ZS2TZ6BF.js → AOVJ34QE.js} +1 -1
  98. package/dist/cdn/APFZY4PI.js +2 -0
  99. package/dist/cdn/B2JDVLA6.js +2 -0
  100. package/dist/cdn/BE7BRJZD.js +2 -0
  101. package/dist/cdn/{FL4W4VYN.js → BL273EGZ.js} +17 -1
  102. package/dist/cdn/C4FEETBZ.js +2 -0
  103. package/dist/cdn/C4JT4S5E.js +2 -0
  104. package/dist/cdn/CCC6LBMY.js +2 -0
  105. package/dist/cdn/{5ZZGKP7N.js → CEKOEHB3.js} +1 -1
  106. package/dist/cdn/CJMUJXPL.js +2 -0
  107. package/dist/cdn/COH3QXWG.js +4 -0
  108. package/dist/cdn/CP5BVGJU.js +2 -0
  109. package/dist/cdn/D5UFYQHN.js +44 -0
  110. package/dist/cdn/EWLXNGKH.js +208 -0
  111. package/dist/cdn/EYOWRGDP.js +2 -0
  112. package/dist/cdn/F5NIRETW.js +2 -0
  113. package/dist/cdn/FDOMMK2M.js +2 -0
  114. package/dist/cdn/FG647IP6.js +2 -0
  115. package/dist/cdn/FJO4KNOZ.js +2 -0
  116. package/dist/cdn/FUF3NAU7.js +2 -0
  117. package/dist/cdn/FXP5UIQU.js +156 -0
  118. package/dist/cdn/{ZLXN7NMF.js → FYZATVB3.js} +10 -8
  119. package/dist/cdn/G2EGT3CF.js +6 -0
  120. package/dist/cdn/G3SF6U2U.js +2 -0
  121. package/dist/cdn/G7OMHU2B.js +2 -0
  122. package/dist/cdn/HAEFC2SJ.js +2 -0
  123. package/dist/cdn/HDACNIZF.js +2 -0
  124. package/dist/cdn/HHFNQR6Z.js +2 -0
  125. package/dist/cdn/HHUQXL3R.js +2 -0
  126. package/dist/cdn/IBZ2NEAO.js +2 -0
  127. package/dist/cdn/{FX7UOGHP.js → ICBIUFK7.js} +1 -1
  128. package/dist/cdn/ICQCK5D3.js +2 -0
  129. package/dist/cdn/IHP25JWI.js +99 -0
  130. package/dist/cdn/IJVMUS2L.js +14 -0
  131. package/dist/cdn/J6A4AS7E.js +22 -0
  132. package/dist/cdn/J6SZIQJA.js +2 -0
  133. package/dist/cdn/JCOA24UH.js +3 -0
  134. package/dist/cdn/{NE7E52YR.js → JEBRN3EU.js} +9 -3
  135. package/dist/cdn/JO5ETMPS.js +2 -0
  136. package/dist/cdn/K2R6XVK3.js +2 -0
  137. package/dist/cdn/KITIP6J2.js +2 -0
  138. package/dist/cdn/KWD2ECTM.js +2 -0
  139. package/dist/cdn/{4HU7735A.js → LAYVGCPL.js} +6 -4
  140. package/dist/cdn/{7RCQFLPP.js → LK7ZIQW6.js} +1 -1
  141. package/dist/cdn/LLUGJKAQ.js +2 -0
  142. package/dist/cdn/MWYBF3F3.js +66 -0
  143. package/dist/cdn/{V2P4AIGG.js → MXTXJKFE.js} +1 -1
  144. package/dist/cdn/MY47B3CE.js +3 -0
  145. package/dist/cdn/NEV6OZN3.js +71 -0
  146. package/dist/cdn/NNXISHCA.js +14 -0
  147. package/dist/cdn/NZSOJ726.js +2 -0
  148. package/dist/cdn/O4NVW75A.js +2 -0
  149. package/dist/cdn/OE3GW5LE.js +2 -0
  150. package/dist/cdn/{23EQTPO3.js → OKVLGJAG.js} +1 -1
  151. package/dist/cdn/ONQ6JSBJ.js +2 -0
  152. package/dist/cdn/OX64WOEL.js +22 -0
  153. package/dist/cdn/{LQ6R5YRN.js → PQ2DPOFM.js} +1 -1
  154. package/dist/cdn/PUHRBGKB.js +2 -0
  155. package/dist/cdn/Q57QWN5W.js +2 -0
  156. package/dist/cdn/QUKNPVAF.js +2 -0
  157. package/dist/cdn/R2PQVY4O.js +2 -0
  158. package/dist/cdn/R74ZHFA6.js +2 -0
  159. package/dist/cdn/RBE55SWR.js +2 -0
  160. package/dist/cdn/RHYNE5OE.js +2 -0
  161. package/dist/cdn/RLEHNAIA.js +2 -0
  162. package/dist/cdn/RVSTAUQS.js +2 -0
  163. package/dist/cdn/{X2ZDYHCG.js → SDWWUWAF.js} +10 -5
  164. package/dist/cdn/SXM4NUT5.js +2 -0
  165. package/dist/cdn/SZ2QSSB3.js +2 -0
  166. package/dist/cdn/T4RIGOXB.js +2 -0
  167. package/dist/cdn/TCH5I5LS.js +2 -0
  168. package/dist/cdn/TEPP7YPR.js +2 -0
  169. package/dist/cdn/TMVF2W5N.js +36 -0
  170. package/dist/cdn/TPULIO6I.js +34 -0
  171. package/dist/cdn/UDRKUVZP.js +2 -0
  172. package/dist/cdn/{6YMR4QSD.js → UHEYPSOR.js} +1 -1
  173. package/dist/cdn/UHNVDALX.js +18 -0
  174. package/dist/cdn/UZLQALHY.js +2 -0
  175. package/dist/cdn/V6HOUZPZ.js +2 -0
  176. package/dist/cdn/VAXH6RUQ.js +134 -0
  177. package/dist/cdn/VLLZ2FFU.js +2 -0
  178. package/dist/cdn/VOKXKU7M.js +56 -0
  179. package/dist/cdn/VXFQANGJ.js +2 -0
  180. package/dist/cdn/WGO5SER7.js +6 -0
  181. package/dist/cdn/WJXXOKGA.js +9 -0
  182. package/dist/cdn/WKTQVBFJ.js +2 -0
  183. package/dist/cdn/{DHOVCT6R.js → WSWB3B7B.js} +1 -1
  184. package/dist/cdn/XX6GHMNR.js +2 -0
  185. package/dist/cdn/Y7XD7ZRD.js +2 -0
  186. package/dist/cdn/YEZ3AMNX.js +2 -0
  187. package/dist/cdn/YLVJA4ZE.js +2 -0
  188. package/dist/cdn/Z5HWPSZN.js +2 -0
  189. package/dist/cdn/Z5W4V7RC.js +2 -0
  190. package/dist/cdn/ZDV4K4WG.js +2 -0
  191. package/dist/cdn/ZOEMBHRF.js +2 -0
  192. package/dist/cdn/ZRVZMPFN.js +2 -0
  193. package/dist/cdn/{ZTBA5PM7.js → ZU2FHVNK.js} +1 -1
  194. package/dist/cdn/agent-utils/index.js +2 -0
  195. package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +3 -0
  196. package/dist/cdn/agent-utils/middlewares/middleware.js +2 -0
  197. package/dist/cdn/agent-utils/middlewares/trace.js +2 -0
  198. package/dist/cdn/assets/assistant/t9n/messages.en.json +1 -1
  199. package/dist/cdn/assets/assistant-interrupt/t9n/messages.en.json +1 -1
  200. package/dist/cdn/assets/assistant-interrupt-preview/t9n/messages.en.json +1 -0
  201. package/dist/cdn/assets/assistant-message/t9n/messages.en.json +1 -0
  202. package/dist/cdn/assets/assistant-message-loading/t9n/messages.en.json +1 -0
  203. package/dist/cdn/index.js +1 -1
  204. package/dist/cdn/main.css +1 -1
  205. package/dist/chunks/adapter.js +1299 -2113
  206. package/dist/chunks/arcgisKnowledgeGraph.js +128 -72
  207. package/dist/chunks/arcgis_knowledge_current_lc_context.js +19 -2
  208. package/dist/chunks/arcgis_knowledge_current_map_context.js +31 -2
  209. package/dist/chunks/arcgis_knowledge_cypher_query_prompt.js +102 -0
  210. package/dist/chunks/arcgis_knowledge_summarize_result_prompt.js +116 -27
  211. package/dist/chunks/baseAgentState.js +58 -0
  212. package/dist/chunks/converterUtils.js +66 -41
  213. package/dist/chunks/dataExplorationGraph.js +135 -179
  214. package/dist/chunks/data_explore_query_prompt.js +9 -4
  215. package/dist/chunks/fetchAgentContext.js +13 -0
  216. package/dist/chunks/fetchService.js +10 -0
  217. package/dist/chunks/fieldStatistics.js +79 -0
  218. package/dist/chunks/formatFeatureAttributes.js +132 -0
  219. package/dist/chunks/generateLayerDescriptions.js +250 -246
  220. package/dist/chunks/helpGraph.js +35 -25
  221. package/dist/chunks/help_prompt.js +34 -17
  222. package/dist/chunks/index.js +11 -0
  223. package/dist/chunks/intent_prompt.js +16 -0
  224. package/dist/chunks/layerStylingGraph.js +37 -31
  225. package/dist/chunks/mergeWhereClauses.js +15 -0
  226. package/dist/chunks/navigationGraph.js +135 -111
  227. package/dist/chunks/navigation_intent_prompt.js +8 -2
  228. package/dist/chunks/orchestrator.js +530 -280
  229. package/dist/chunks/resolvePointGeometryFilter.js +92 -0
  230. package/dist/chunks/slottableRequestUtils.js +3 -7
  231. package/dist/chunks/state.js +21 -27
  232. package/dist/chunks/summarize_query_response_prompt.js +9 -7
  233. package/dist/chunks/toolCallResponse.js +14 -10
  234. package/dist/chunks/utils2.js +11 -11
  235. package/dist/components/arcgis-assistant/customElement.d.ts +96 -0
  236. package/dist/components/arcgis-assistant/customElement.js +398 -149
  237. package/dist/components/arcgis-assistant/index.js +2 -3
  238. package/dist/components/arcgis-assistant/types.d.ts +14 -1
  239. package/dist/components/arcgis-assistant-agent/customElement.d.ts +13 -1
  240. package/dist/components/arcgis-assistant-agent/customElement.js +614 -10
  241. package/dist/components/arcgis-assistant-chat/customElement.d.ts +8 -2
  242. package/dist/components/arcgis-assistant-chat/customElement.js +23 -18
  243. package/dist/components/arcgis-assistant-chat-entry/customElement.d.ts +4 -1
  244. package/dist/components/arcgis-assistant-chat-entry/customElement.js +25 -18
  245. package/dist/components/arcgis-assistant-data-exploration-agent/customElement.js +20 -4
  246. package/dist/components/arcgis-assistant-help-agent/customElement.js +29 -7
  247. package/dist/components/arcgis-assistant-interrupt/customElement.d.ts +8 -1
  248. package/dist/components/arcgis-assistant-interrupt/customElement.js +17 -14
  249. package/dist/components/arcgis-assistant-interrupt-preview/customElement.js +24 -0
  250. package/dist/components/arcgis-assistant-interrupt-preview/index.js +2 -0
  251. package/dist/components/arcgis-assistant-knowledge-agent/customElement.d.ts +7 -7
  252. package/dist/components/arcgis-assistant-knowledge-agent/customElement.js +40 -16
  253. package/dist/components/arcgis-assistant-layer-styling-agent/customElement.js +30 -7
  254. package/dist/components/arcgis-assistant-message/customElement.d.ts +26 -0
  255. package/dist/components/arcgis-assistant-message/customElement.js +29 -26
  256. package/dist/components/arcgis-assistant-message/index.d.ts +1 -0
  257. package/dist/components/arcgis-assistant-message/index.js +2 -0
  258. package/dist/components/arcgis-assistant-message-block/customElement.d.ts +1 -1
  259. package/dist/components/arcgis-assistant-message-block/customElement.js +18 -11
  260. package/dist/components/arcgis-assistant-message-block/index.js +1 -0
  261. package/dist/components/arcgis-assistant-message-feedback/customElement.d.ts +4 -1
  262. package/dist/components/arcgis-assistant-message-footer/customElement.d.ts +4 -1
  263. package/dist/components/arcgis-assistant-message-loading/customElement.d.ts +11 -1
  264. package/dist/components/arcgis-assistant-message-loading/customElement.js +8 -7
  265. package/dist/components/arcgis-assistant-message-loading/index.js +1 -0
  266. package/dist/components/arcgis-assistant-message-log/customElement.d.ts +4 -1
  267. package/dist/components/arcgis-assistant-message-read-aloud/customElement.d.ts +4 -1
  268. package/dist/components/arcgis-assistant-message-text/customElement.d.ts +5 -1
  269. package/dist/components/arcgis-assistant-message-text/customElement.js +12 -12
  270. package/dist/components/arcgis-assistant-navigation-agent/customElement.js +18 -4
  271. package/dist/components/arcgis-assistant-speech-input/customElement.d.ts +6 -1
  272. package/dist/components/arcgis-assistant-speech-input/customElement.js +34 -52
  273. package/dist/components/arcgis-assistant-suggested-prompts/customElement.d.ts +4 -1
  274. package/dist/components/arcgis-assistant-suggested-prompts/customElement.js +8 -8
  275. package/dist/components/arcgis-assistant-user-message/customElement.d.ts +6 -1
  276. package/dist/components/arcgis-assistant-user-message/customElement.js +15 -10
  277. package/dist/docs/api.json +1 -1
  278. package/dist/docs/docs.json +1 -1
  279. package/dist/docs/vscode.html-custom-data.json +1 -1
  280. package/dist/docs/web-types.json +1 -1
  281. package/dist/index.d.ts +4 -0
  282. package/dist/loader.js +9 -8
  283. package/dist/oauth-callback.html +1 -1
  284. package/dist/orchestrator/orchestrator/orchestratorEvents.d.ts +78 -0
  285. package/dist/types/lumina.d.ts +14 -7
  286. package/dist/types/preact.d.ts +15 -7
  287. package/dist/types/react.d.ts +16 -7
  288. package/dist/types/stencil.d.ts +16 -9
  289. package/dist/utils/index.d.ts +135 -65
  290. package/dist/utils/index.js +55 -50
  291. package/package.json +32 -12
  292. package/dist/cdn/2AXF774U.js +0 -2
  293. package/dist/cdn/462JBSEV.js +0 -422
  294. package/dist/cdn/5QAHYX7Y.js +0 -5
  295. package/dist/cdn/7BCR6TUO.js +0 -2
  296. package/dist/cdn/7GH7VSB2.js +0 -2
  297. package/dist/cdn/7PLV4QH6.js +0 -2
  298. package/dist/cdn/AO7BQHKC.js +0 -2
  299. package/dist/cdn/AXDZBBNL.js +0 -45
  300. package/dist/cdn/DDLZOMUY.js +0 -2
  301. package/dist/cdn/F2AHA4GB.js +0 -54
  302. package/dist/cdn/FHVXO2WG.js +0 -166
  303. package/dist/cdn/FX5JFRDL.js +0 -2
  304. package/dist/cdn/GSEPHN3A.js +0 -106
  305. package/dist/cdn/H7422XUG.js +0 -2
  306. package/dist/cdn/HB5A5R2E.js +0 -2
  307. package/dist/cdn/JY6LLOUJ.js +0 -22
  308. package/dist/cdn/KMQ3SP4I.js +0 -5
  309. package/dist/cdn/MDVYQQUG.js +0 -14
  310. package/dist/cdn/MH5RPXHM.js +0 -2
  311. package/dist/cdn/NAUXSHIE.js +0 -72
  312. package/dist/cdn/NVI3I46B.js +0 -2
  313. package/dist/cdn/OAVEHGB6.js +0 -2
  314. package/dist/cdn/OH64RMOR.js +0 -4
  315. package/dist/cdn/ON2V5XI2.js +0 -3
  316. package/dist/cdn/P6OPJQMC.js +0 -3
  317. package/dist/cdn/QR54T33D.js +0 -2
  318. package/dist/cdn/RVOAPUBN.js +0 -2
  319. package/dist/cdn/S6W6HV4T.js +0 -36
  320. package/dist/cdn/SXDLXCIM.js +0 -2
  321. package/dist/cdn/USMDJUFS.js +0 -2
  322. package/dist/cdn/V5YEZSRY.js +0 -16
  323. package/dist/cdn/Y333DGV6.js +0 -2
  324. package/dist/cdn/YIMNOUTF.js +0 -2
  325. package/dist/cdn/YY2SBO3V.js +0 -2
@@ -1,35 +1,171 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as $ } from "../../chunks/runtime.js";
3
- import { css as k, html as a } from "lit";
4
- import S from "@arcgis/core/core/Collection.js";
5
- import { whenOnce as C, watch as L, when as I } from "@arcgis/core/core/reactiveUtils.js";
6
- import P from "@arcgis/core/portal/Portal.js";
7
- import { LitElement as R, createEvent as o, nothing as b } from "@arcgis/lumina";
8
- import { rethrowError as x } from "@arcgis/toolkit/log";
9
- import { createRef as f, ref as y } from "lit/directives/ref.js";
10
- import { u as M } from "../../chunks/useT9n.js";
11
- import { O } from "../../chunks/orchestrator.js";
2
+ import { c as x } from "../../chunks/runtime.js";
3
+ import { css as L, html as g } from "lit";
4
+ import T from "@arcgis/core/core/Collection.js";
5
+ import { whenOnce as R, watch as D, when as M } from "@arcgis/core/core/reactiveUtils.js";
6
+ import O from "@arcgis/core/portal/Portal.js";
7
+ import { LitElement as U, createEvent as d, nothing as _ } from "@arcgis/lumina";
8
+ import * as B from "@arcgis/toolkit/log";
9
+ import { rethrowError as z } from "@arcgis/toolkit/log";
10
+ import { createRef as w, ref as k } from "lit/directives/ref.js";
11
+ import { u as q } from "../../chunks/useT9n.js";
12
+ import { O as N } from "../../chunks/orchestrator.js";
12
13
  import "@langchain/core/callbacks/dispatch/web";
13
14
  import "@langchain/core/prompts";
14
15
  import "@langchain/openai";
15
- import "@arcgis/core/identity/IdentityManager.js";
16
+ import "@arcgis/core/request.js";
17
+ import V from "@arcgis/core/identity/IdentityManager.js";
18
+ import "@arcgis/toolkit/string";
19
+ import "@arcgis/core/config.js";
16
20
  import "@langchain/core/messages";
17
21
  import "@arcgis/core/layers/FeatureLayer.js";
18
22
  import "../../chunks/generateLayerDescriptions.js";
19
23
  import "@langchain/langgraph/web";
20
- import A from "@arcgis/core/core/Accessor.js";
21
- import { property as u, subclass as q } from "@arcgis/core/core/accessorSupport/decorators.js";
22
- import { g as z } from "../../chunks/utils3.js";
23
- import { g as v, a as _ } from "../../chunks/slottableRequestUtils.js";
24
- const V = k`:host{display:block;width:var(--arcgis-internal-panel-width, 100%);height:var(--arcgis-internal-expand-max-height, 100%)}.footer-container{display:flex;flex-direction:column;flex:1 1 0;gap:var(--calcite-spacing-md)}.content-container{display:flex;flex-direction:column;flex:1 1 0;min-height:0;position:relative;overflow:auto}.suggested-prompts-container{display:flex;justify-content:center;width:100%}.suggested-prompts{display:block;padding:var(--calcite-spacing-md);max-width:100%;box-sizing:border-box}.error-notice{padding:var(--calcite-spacing-sm)}`;
25
- var N = Object.defineProperty, j = Object.getOwnPropertyDescriptor, h = (p, t, e, i) => {
26
- for (var s = i > 1 ? void 0 : i ? j(t, e) : t, r = p.length - 1, n; r >= 0; r--)
27
- (n = p[r]) && (s = (i ? n(t, e, s) : n(s)) || s);
28
- return i && s && N(t, e, s), s;
24
+ import F from "@arcgis/core/core/Accessor.js";
25
+ import { property as b, subclass as j } from "@arcgis/core/core/accessorSupport/decorators.js";
26
+ import { marked as $ } from "marked";
27
+ import { g as H } from "../../chunks/utils3.js";
28
+ import { g as I } from "../../chunks/slottableRequestUtils.js";
29
+ const W = L`:host{display:block;width:var(--arcgis-internal-panel-width, 100%);height:var(--arcgis-internal-expand-max-height, 100%);--calcite-panel-content-bottom-space: 0}.footer-container{display:flex;flex-direction:column;flex:1 1 0;gap:var(--calcite-spacing-md)}.content-container{display:flex;flex-direction:column;flex:1 1 0;min-height:0;position:relative;overflow:auto}.suggested-prompts-container{display:flex;justify-content:center;width:100%;background:var(--calcite-panel-background-color, var(--calcite-color-background))}.suggested-prompts{display:block;padding:var(--calcite-spacing-md);max-width:100%;box-sizing:border-box}.error-notice{padding:var(--calcite-spacing-sm)}.interrupt-waiting-message{font-style:italic;color:var(--calcite-color-text-2)}`;
30
+ function E(o) {
31
+ return o.trim() ? $.lexer(o).filter((t) => t.type !== "space").map((t) => $.parser([t])) : [];
32
+ }
33
+ class A {
34
+ constructor() {
35
+ this._stableParts = [], this._stableText = "", this._rawText = "";
36
+ }
37
+ // full streamed markdown so far
38
+ // Add one chunk and return all current segments.
39
+ push(t) {
40
+ return this._rawText += t, this._advanceStableBoundary(), this.getParts();
41
+ }
42
+ // Parse the remaining live tail. Call once at stream end.
43
+ finalize() {
44
+ const t = this._rawText.slice(this._stableText.length);
45
+ return t.trim() && (this._stableParts.push(...E(t)), this._stableText = this._rawText), this._stableParts;
46
+ }
47
+ // Get full output: stable segments + current live tail.
48
+ getParts() {
49
+ const t = this._trimIncompleteTail(this._rawText.slice(this._stableText.length)), e = t.trim() ? E(t) : [];
50
+ return [...this._stableParts, ...e];
51
+ }
52
+ reset() {
53
+ this._stableParts = [], this._stableText = "", this._rawText = "";
54
+ }
55
+ // Move parse-safe content from live tail into stable content.
56
+ _advanceStableBoundary() {
57
+ const t = this._rawText.slice(this._stableText.length), e = this._lastSafeBoundary(t);
58
+ if (e <= 0)
59
+ return;
60
+ const i = t.slice(0, e);
61
+ this._stableParts.push(...E(i)), this._stableText += i;
62
+ }
63
+ /**
64
+ * Find the last blank-line boundary that is outside code fences.
65
+ * Returns 0 if no safe boundary is available yet.
66
+ */
67
+ _lastSafeBoundary(t) {
68
+ const e = t.split(`
69
+ `);
70
+ let i = !1, r = 0, s = 0;
71
+ for (const l of e)
72
+ /^\s*(```|~~~)/u.test(l) && (i = !i), s += l.length + 1, l.trim() === "" && !i && (r = s);
73
+ return r < t.length ? r : 0;
74
+ }
75
+ /**
76
+ * Remove incomplete syntax at the end so we do not render partial markup.
77
+ * Handles:
78
+ * - open HTML tags without closing '>'
79
+ * - HTML elements missing closing tags
80
+ * - markdown links missing closing ')'
81
+ */
82
+ _trimIncompleteTail(t) {
83
+ const e = t.lastIndexOf("<");
84
+ if (e !== -1 && !t.includes(">", e))
85
+ return t.slice(0, e);
86
+ const i = this._earliestUnclosedTag(t);
87
+ if (i !== -1)
88
+ return t.slice(0, i);
89
+ const r = t.lastIndexOf("[");
90
+ if (r !== -1) {
91
+ const s = t.slice(r);
92
+ if (!/\[[^\]]*\]\([^)]*\)/u.test(s))
93
+ return t.slice(0, r);
94
+ }
95
+ return t;
96
+ }
97
+ /**
98
+ * Return the index of the earliest unclosed opening tag, or -1.
99
+ * Ignores void elements (img, br, input, etc.) and self-closing tags.
100
+ */
101
+ _earliestUnclosedTag(t) {
102
+ const e = /* @__PURE__ */ new Set([
103
+ "br",
104
+ "img",
105
+ "hr",
106
+ "input",
107
+ "meta",
108
+ "link",
109
+ "area",
110
+ "base",
111
+ "col",
112
+ "embed",
113
+ "source",
114
+ "track",
115
+ "wbr"
116
+ ]), i = /<(\/?)([a-zA-Z][\w-]*)\b[^>]*?(\/?)>/gu, r = [];
117
+ for (let s = i.exec(t); s; s = i.exec(t)) {
118
+ const [, l, a, n] = s, c = a.toLowerCase();
119
+ if (!(e.has(c) || n === "/"))
120
+ if (l === "/") {
121
+ for (let h = r.length - 1; h >= 0; h--)
122
+ if (r[h].name === c) {
123
+ r.splice(h);
124
+ break;
125
+ }
126
+ } else
127
+ r.push({ name: c, index: s.index });
128
+ }
129
+ return r.length ? r[0].index : -1;
130
+ }
131
+ }
132
+ function G(o) {
133
+ const t = new A();
134
+ return t.push(o), t.finalize();
135
+ }
136
+ const Z = async (o) => await new Promise((t) => setTimeout(t, o));
137
+ async function* J(o, { chunkSize: t = 15, delay: e = 50 } = {}) {
138
+ const i = new A();
139
+ for (let r = 0; r < o.length; r += t)
140
+ yield i.push(o.slice(r, r + t)), await Z(e);
141
+ yield i.finalize();
142
+ }
143
+ var K = Object.defineProperty, Q = Object.getOwnPropertyDescriptor, m = (o, t, e, i) => {
144
+ for (var r = i > 1 ? void 0 : i ? Q(t, e) : t, s = o.length - 1, l; s >= 0; s--)
145
+ (l = o[s]) && (r = (i ? l(t, e, r) : l(r)) || r);
146
+ return i && r && K(t, e, r), r;
29
147
  };
30
- let l = class extends A {
31
- constructor(p) {
32
- super(p), this.view = null, this.loading = !1, this.processing = !1, this.processingStep = "";
148
+ const S = (o) => !o || typeof o != "object" ? !1 : o.name === "AbortError";
149
+ async function* C(o, t, e, i, r = !1) {
150
+ if (r) {
151
+ if (i?.aborted) {
152
+ yield { type: "cancelled", log: e, runId: t };
153
+ return;
154
+ }
155
+ yield { type: "block-data", blockType: "text", data: { parts: G(o) }, runId: t };
156
+ return;
157
+ }
158
+ for await (const s of J(o)) {
159
+ if (i?.aborted) {
160
+ yield { type: "cancelled", log: e, runId: t };
161
+ return;
162
+ }
163
+ yield { type: "block-data", blockType: "text", data: { parts: s }, runId: t };
164
+ }
165
+ }
166
+ let p = class extends F {
167
+ constructor(o) {
168
+ super(o), this.view = null, this.streamingDisabled = !1, this.runtimeEventsEnabled = !1, this.loading = !1, this.processing = !1, this.processingStep = "";
33
169
  }
34
170
  async load() {
35
171
  this._set("loading", !0);
@@ -43,14 +179,15 @@ let l = class extends A {
43
179
  this.orchestrator?.dispose(), super.destroy();
44
180
  }
45
181
  async _initialize() {
46
- this.removeHandles(), await Promise.all([this.portal.load(), this.view?.when()]), this.view && await C(() => !this.view.updating), this._set(
182
+ this.removeHandles(), await Promise.all([this.portal.load(), this.view?.when()]), this.view && await R(() => !this.view.updating), this._set(
47
183
  "orchestrator",
48
- await O.init({
184
+ await N.init({
49
185
  agents: [...this.agents],
186
+ runtimeEventsEnabled: this.runtimeEventsEnabled,
50
187
  view: this.view ?? void 0
51
188
  })
52
189
  ), this.addHandles([
53
- L(
190
+ D(
54
191
  () => [this.view, this.agents],
55
192
  () => {
56
193
  this._initialize();
@@ -61,110 +198,140 @@ let l = class extends A {
61
198
  clearChatHistory() {
62
199
  this.orchestrator?.newConversation();
63
200
  }
64
- async *ask(p, t) {
201
+ async *ask(o, t, e) {
65
202
  if (!this.orchestrator)
66
203
  throw new Error("Orchestrator not initialized yet.");
67
204
  this._set("processing", !0), this._set("processingStep", "");
68
- const e = [];
69
- let i;
205
+ const i = [];
206
+ let r, s = "pending";
70
207
  try {
71
- const s = this.orchestrator.ask(p);
72
- for await (const r of s) {
73
- const n = r.runId;
74
- if (t?.aborted) {
75
- yield { type: "cancelled", runId: n };
76
- break;
77
- }
78
- switch (r.type) {
208
+ const l = this.orchestrator.ask(o, t);
209
+ for await (const a of l)
210
+ switch (s = a.runId, a.type) {
211
+ case "runtime": {
212
+ yield { type: "runtime", event: a, runId: s };
213
+ break;
214
+ }
79
215
  case "trace": {
80
- this._set("processingStep", r.data.text), e.push(r.data.text);
216
+ this._set("processingStep", a.data.text), i.push(a.data.text);
81
217
  break;
82
218
  }
83
219
  case "completed": {
84
- const c = r.result, g = !!c.content.length, m = !!i?.length;
85
- if (!g && !m) {
86
- yield { type: "completed", error: "Could not process the request.", log: e, runId: n };
220
+ this._set("processing", !1), this._set("processingStep", "");
221
+ const n = a.result, c = !!n.content.length, h = !!r?.length;
222
+ if (!c && !h) {
223
+ yield { type: "completed", error: "No response received.", log: i, runId: s };
87
224
  return;
88
225
  }
89
- const d = c.content;
90
- this._set("processingStep", ""), yield { type: "completed", response: d, blocks: i, log: e, runId: n };
226
+ const u = n.content;
227
+ if (yield { type: "block-start", blockType: "text", runId: s }, yield* C(u, s, i, e, this.streamingDisabled), yield { type: "block-end", blockType: "text", runId: s }, h)
228
+ for (const y of r) {
229
+ if (e?.aborted) {
230
+ yield { type: "cancelled", log: i, runId: s };
231
+ return;
232
+ }
233
+ const { type: f, data: v } = y;
234
+ if (yield { type: "block-start", blockType: f, runId: s }, f === "text") {
235
+ const P = typeof v?.content == "string" ? v.content : "";
236
+ yield* C(P, s, i, e, this.streamingDisabled);
237
+ } else
238
+ yield { type: "block-data", blockType: f, data: v, runId: s };
239
+ yield { type: "block-end", blockType: f, runId: s };
240
+ }
241
+ yield { type: "completed", response: u, blocks: r, log: i, runId: s };
91
242
  return;
92
243
  }
93
244
  case "ux-suggestion": {
94
- const c = r.suggestion;
95
- i = i ? [...i, c] : [c];
245
+ const n = a.suggestion;
246
+ r = r ? [...r, n] : [n];
96
247
  break;
97
248
  }
98
249
  case "interrupt": {
99
- const { kind: c, message: g, metadata: m } = r.interrupt, d = Array.isArray(m) ? m.filter((E) => typeof E == "string") : [], w = (() => {
100
- switch (c) {
250
+ const { kind: n, message: c, metadata: h } = a.interrupt, u = Array.isArray(h) ? h.filter((f) => typeof f == "string") : [], y = (() => {
251
+ switch (n) {
101
252
  case "booleanChoice":
102
- return { type: "boolean-choice", message: g, options: d };
253
+ return { type: "boolean-choice", message: c, options: u };
103
254
  case "singleSelection":
104
- return { type: "single-select", message: g, options: d };
255
+ return { type: "single-select", message: c, options: u };
105
256
  case "multipleSelection":
106
- return { type: "multi-select", message: g, options: d };
257
+ return { type: "multi-select", message: c, options: u };
107
258
  case "textInput":
108
- return { type: "text-input", message: g };
259
+ return { type: "text-input", message: c };
109
260
  default:
110
- return { type: c, message: g, options: d };
261
+ return { type: n, message: c, options: u };
111
262
  }
112
263
  })();
113
- this._set("processingStep", "Waiting for user input..."), yield { type: "interrupt", payload: w, runId: n };
264
+ this._set("processingStep", "Waiting for user input..."), yield { type: "interrupt", payload: y, runId: s };
114
265
  break;
115
266
  }
116
267
  case "cancelled": {
117
- yield { type: "cancelled", runId: n };
268
+ yield { type: "cancelled", log: i, runId: s };
118
269
  return;
119
270
  }
120
271
  case "error": {
121
- yield { type: "completed", error: r.error.message, log: e, runId: n };
272
+ if (e?.aborted || S(a.error)) {
273
+ yield { type: "cancelled", log: i, runId: s };
274
+ return;
275
+ }
276
+ yield { type: "completed", error: a.error.message, log: i, runId: s };
122
277
  return;
123
278
  }
124
279
  default: {
125
- console.warn("Unknown event type:", r);
280
+ console.warn("Unknown event type:", a);
126
281
  break;
127
282
  }
128
283
  }
284
+ } catch (l) {
285
+ if (e?.aborted || S(l)) {
286
+ yield { type: "cancelled", log: i, runId: s };
287
+ return;
129
288
  }
130
- } catch (s) {
131
- console.warn("Error during message processing:", s), yield { type: "completed", error: "An error occurred during message processing.", log: e, runId: "error" };
289
+ console.warn("Error during message processing:", l), yield { type: "completed", error: "An error occurred during message processing.", log: i, runId: "error" };
132
290
  return;
133
291
  } finally {
134
292
  this._set("processing", !1);
135
293
  }
136
294
  }
295
+ cancel() {
296
+ this.orchestrator?.cancel();
297
+ }
137
298
  };
138
- h([
139
- u({ readOnly: !0 })
140
- ], l.prototype, "orchestrator", 2);
141
- h([
142
- u()
143
- ], l.prototype, "agents", 2);
144
- h([
145
- u()
146
- ], l.prototype, "portal", 2);
147
- h([
148
- u()
149
- ], l.prototype, "view", 2);
150
- h([
151
- u({ readOnly: !0 })
152
- ], l.prototype, "loading", 2);
153
- h([
154
- u({ readOnly: !0 })
155
- ], l.prototype, "processing", 2);
156
- h([
157
- u({ readOnly: !0 })
158
- ], l.prototype, "processingStep", 2);
159
- l = h([
160
- q("OrchestratorController")
161
- ], l);
162
- const B = "Embeddings resource 'embeddings-v01.json' not found in the webmap portal item.", H = "Embeddings not found for this web map.", D = "https://developers.arcgis.com/javascript/latest/agentic-apps/ai-webmap-setup/#embeddings";
163
- class F extends R {
299
+ m([
300
+ b({ readOnly: !0 })
301
+ ], p.prototype, "orchestrator", 2);
302
+ m([
303
+ b()
304
+ ], p.prototype, "agents", 2);
305
+ m([
306
+ b()
307
+ ], p.prototype, "portal", 2);
308
+ m([
309
+ b()
310
+ ], p.prototype, "view", 2);
311
+ m([
312
+ b()
313
+ ], p.prototype, "streamingDisabled", 2);
314
+ m([
315
+ b()
316
+ ], p.prototype, "runtimeEventsEnabled", 2);
317
+ m([
318
+ b({ readOnly: !0 })
319
+ ], p.prototype, "loading", 2);
320
+ m([
321
+ b({ readOnly: !0 })
322
+ ], p.prototype, "processing", 2);
323
+ m([
324
+ b({ readOnly: !0 })
325
+ ], p.prototype, "processingStep", 2);
326
+ p = m([
327
+ j("OrchestratorController")
328
+ ], p);
329
+ const X = "Embeddings resource 'embeddings-v01.json' not found in the webmap portal item.", Y = "Embeddings not found for this web map.", tt = "https://developers.arcgis.com/javascript/latest/agentic-apps/ai-webmap-setup/#embeddings";
330
+ class et extends U {
164
331
  constructor() {
165
- super(...arguments), this._messages = M({ blocking: !0 }), this.#t = f(), this.#n = f(), this.#e = f(), this.#s = null, this.#o = /* @__PURE__ */ new Map(), this.#r = P.getDefault(), this.#i = (t) => {
332
+ super(...arguments), this._messages = q({ blocking: !0 }), this.#t = w(), this.#o = w(), this.#s = w(), this.#e = null, this.#r = /* @__PURE__ */ new Map(), this.#i = O.getDefault(), this.#a = (t) => {
166
333
  t.stopPropagation(), this.cancelInterrupt();
167
- }, this.#a = (t) => {
334
+ }, this.#n = (t) => {
168
335
  t.stopPropagation();
169
336
  const e = t.detail;
170
337
  this.submitInterrupt(e);
@@ -173,58 +340,47 @@ class F extends R {
173
340
  const e = t.detail;
174
341
  this._inputValue = "", this.arcgisSubmit.emit(e), this.submitMessage(e);
175
342
  }, this.#c = (t) => {
176
- if (t.stopPropagation(), this.arcgisCancel.emit(), this._interrupt) {
343
+ if (this._canceling = !0, t.stopPropagation(), this.arcgisCancel.emit(), this._interrupt) {
177
344
  this.orchestrator?.cancelInterrupt(), this._interrupt = null;
178
345
  return;
179
346
  }
180
- this.#s?.abort();
347
+ this._orchestratorController?.cancel(), this.#e?.abort(), this.#e = null;
181
348
  }, this.#h = (t) => {
182
349
  t.stopPropagation();
183
350
  const e = t.detail;
184
351
  this.arcgisFeedback.emit(e);
185
- }, this.#p = (t) => {
352
+ }, this.#g = (t) => {
186
353
  t.stopPropagation();
187
354
  const e = t.detail;
188
355
  this._inputValue = e.prompt, this.arcgisPromptSelect.emit(e);
189
- }, this.#g = (t) => {
356
+ }, this.#u = (t) => {
190
357
  this.arcgisSlottableRequest.emit(t.detail);
191
- }, this._orchestratorController = null, this._interrupt = null, this._error = null, this._inputValue = "", this.messages = new S([]), this.referenceElement = null, this.suggestedPrompts = [], this.feedbackEnabled = !1, this.keepSuggestedPrompts = !1, this.logEnabled = !1, this.copyEnabled = !1, this.voiceInputEnabled = !1, this.readAloudEnabled = !1, this.arcgisCancel = o(), this.arcgisError = o(), this.arcgisFeedback = o(), this.arcgisInterrupt = o(), this.arcgisInterruptCancel = o(), this.arcgisInterruptSubmit = o(), this.arcgisPromptSelect = o(), this.arcgisReady = o(), this.arcgisSubmit = o(), this.arcgisSlottableRequest = o({ bubbles: !1, composed: !1 });
358
+ }, this._orchestratorController = null, this._interrupt = null, this._interruptDetails = [], this._error = null, this._inputValue = "", this._isAnswering = !1, this._canceling = !1, this.messages = new T([]), this.referenceElement = null, this.suggestedPrompts = [], this.feedbackEnabled = !1, this.keepSuggestedPrompts = !1, this.streamingDisabled = !1, this.runtimeEventsEnabled = !1, this.logEnabled = !1, this.copyEnabled = !1, this.voiceInputEnabled = !1, this.readAloudEnabled = !1, this.assistantAvatarEnabled = !1, this.userAvatarEnabled = !1, this.arcgisCancel = d(), this.arcgisError = d(), this.arcgisFeedback = d(), this.arcgisInterrupt = d(), this.arcgisInterruptCancel = d(), this.arcgisInterruptSubmit = d(), this.arcgisPromptSelect = d(), this.arcgisReady = d(), this.arcgisResponse = d(), this.arcgisRuntime = d({ bubbles: !1, composed: !1 }), this.arcgisSlottableRequest = d({ bubbles: !1, composed: !1 }), this.arcgisSubmit = d();
192
359
  }
193
360
  static {
194
- this.properties = { _orchestratorController: 16, _interrupt: 16, _error: 16, _inputValue: 16, _user: 16, awaitingResponse: 32, awaitingResponseStep: 32, interrupt: 32, messages: 0, orchestrator: 32, entryMessage: 1, heading: 1, description: 1, referenceElement: 1, suggestedPrompts: 0, feedbackEnabled: 5, keepSuggestedPrompts: 5, logEnabled: 5, copyEnabled: 5, voiceInputEnabled: 5, readAloudEnabled: 5 };
361
+ this.properties = { _orchestratorController: 16, _interrupt: 16, _interruptDetails: 16, _error: 16, _inputValue: 16, _isAnswering: 16, _signedInUserId: 16, _canceling: 16, _isSignedIn: 16, _user: 16, awaitingResponse: 32, awaitingResponseStep: 32, interrupt: 32, messages: 0, orchestrator: 32, entryMessage: 1, heading: 1, description: 1, referenceElement: 1, alwaysUseAgentId: 1, allowedAgentIds: 0, suggestedPrompts: 0, feedbackEnabled: 5, keepSuggestedPrompts: 5, streamingDisabled: 5, runtimeEventsEnabled: 5, logEnabled: 5, copyEnabled: 5, voiceInputEnabled: 5, readAloudEnabled: 5, assistantAvatarEnabled: 5, userAvatarEnabled: 5 };
195
362
  }
196
363
  static {
197
- this.styles = V;
364
+ this.styles = W;
198
365
  }
199
366
  #t;
200
- #n;
201
- #e;
202
- #s;
203
367
  #o;
368
+ #s;
369
+ #e;
204
370
  #r;
205
371
  #i;
206
372
  #a;
373
+ #n;
207
374
  #l;
208
375
  #c;
209
376
  #h;
210
- #p;
211
377
  #g;
212
- async #u() {
213
- try {
214
- const t = z(this.el, this.referenceElement);
215
- await t?.componentOnReady();
216
- const e = [...this.#o.values()];
217
- return e.length ? (this._orchestratorController = new l({
218
- agents: e,
219
- portal: this.#r,
220
- view: t?.view
221
- }), await this._orchestratorController.load(), !0) : (this._error = "No agents found.", !1);
222
- } catch (t) {
223
- return this._error = t?.message ?? "Error initializing orchestrator.", x(this)(t), !1;
224
- }
378
+ #u;
379
+ get _isSignedIn() {
380
+ return !!this.#i?.user || !!this._signedInUserId;
225
381
  }
226
382
  get _user() {
227
- return this.#r?.user?.fullName || this.#r?.user?.username;
383
+ return this.#i?.user?.fullName || this.#i?.user?.username;
228
384
  }
229
385
  get awaitingResponse() {
230
386
  return this._orchestratorController?.processing ?? !1;
@@ -238,14 +394,17 @@ class F extends R {
238
394
  get orchestrator() {
239
395
  return this._orchestratorController?.orchestrator;
240
396
  }
241
- async clearChatHistory() {
242
- this._reset(), this._orchestratorController?.clearChatHistory();
243
- }
244
397
  cancelInterrupt() {
245
398
  this.arcgisInterruptCancel.emit(), this.orchestrator?.cancelInterrupt(), this._interrupt = null;
246
399
  }
400
+ async clearChatHistory() {
401
+ this._reset(), this._orchestratorController?.clearChatHistory();
402
+ }
247
403
  register(t) {
248
- this.#o.set(t.agent.id, t);
404
+ this.#r.set(t.agent.id, t), this._orchestratorController && this.#d();
405
+ }
406
+ submitInterrupt(t) {
407
+ this.arcgisInterruptSubmit.emit(t), this._interrupt && (this._interruptDetails = [...this._interruptDetails, { interrupt: this._interrupt, response: t }]), this.orchestrator?.resumeInterrupt(t), this._interrupt = null;
249
408
  }
250
409
  async submitMessage(t) {
251
410
  const e = t.trim();
@@ -256,74 +415,164 @@ class F extends R {
256
415
  content: e
257
416
  }), !this._orchestratorController))
258
417
  return;
259
- const i = this._orchestratorController.ask(e, this.#s?.signal);
260
- for await (const s of i) {
261
- const r = s.runId;
418
+ this.#e = new AbortController(), this._orchestratorController.streamingDisabled = this.streamingDisabled;
419
+ const i = this.alwaysUseAgentId ? { routing: "direct", agentId: this.alwaysUseAgentId } : { routing: "auto", agentIds: this.allowedAgentIds }, r = this._orchestratorController.ask(e, i, this.#e?.signal);
420
+ for await (const s of r) {
421
+ const l = s.runId, a = this.messages.at(-1);
262
422
  switch (s.type) {
423
+ case "runtime":
424
+ this.arcgisRuntime.emit(s.event);
425
+ break;
426
+ case "block-start": {
427
+ this._isAnswering = !0;
428
+ const n = { type: s.blockType, isPending: !0 };
429
+ if (a?.role === "assistant" && a.id === l) {
430
+ const c = [...a.blocks ?? [], n];
431
+ this.messages.splice(-1, 1, { ...a, blocks: c });
432
+ } else
433
+ this.messages.push({
434
+ role: "assistant",
435
+ blocks: [n],
436
+ id: l,
437
+ isStreaming: !0,
438
+ interrupts: this._interruptDetails
439
+ }), this._interruptDetails = [];
440
+ break;
441
+ }
442
+ case "block-data": {
443
+ if (a?.role !== "assistant" || a?.id !== l)
444
+ break;
445
+ const n = [...a.blocks ?? []], c = n[n.length - 1], { blockType: h, data: u } = s;
446
+ if (c?.type !== h || !c.isPending)
447
+ break;
448
+ h === "text" ? n[n.length - 1] = {
449
+ ...c,
450
+ data: {
451
+ ...c.data,
452
+ parts: u?.parts
453
+ }
454
+ } : n[n.length - 1] = { ...c, data: { ...c.data, ...u ?? {} } }, this.messages.splice(-1, 1, { ...a, blocks: n });
455
+ break;
456
+ }
457
+ case "block-end": {
458
+ if (a?.role !== "assistant" || a?.id !== l)
459
+ break;
460
+ const n = [...a.blocks ?? []], c = n[n.length - 1];
461
+ if (c?.type !== s.blockType || !c.isPending)
462
+ break;
463
+ const h = c;
464
+ n[n.length - 1] = { ...h, data: { ...h.data }, isPending: !1 }, this.messages.splice(-1, 1, { ...a, blocks: n });
465
+ break;
466
+ }
263
467
  case "completed":
264
- this.messages.push({
468
+ s.error ? (this.messages.push({
265
469
  role: "assistant",
266
- content: s.response,
267
- blocks: s.blocks,
268
470
  log: s.log,
269
471
  error: s.error,
270
- id: r
271
- });
472
+ id: l,
473
+ interrupts: this._interruptDetails
474
+ }), this._interruptDetails = []) : a?.role === "assistant" && a.id === l && this.messages.splice(-1, 1, {
475
+ ...a,
476
+ content: s.response,
477
+ blocks: a.blocks?.map((n) => ({ ...n, data: { ...n.data }, isPending: !1 })) ?? [],
478
+ isStreaming: !1,
479
+ log: s.log
480
+ }), this._isAnswering = !1, this.#e = null, this._canceling = !1;
272
481
  break;
273
482
  case "interrupt":
274
- this._interrupt = { ...s.payload, id: r }, this.arcgisInterrupt.emit(this._interrupt);
483
+ this._interrupt = { ...s.payload, id: l }, this.arcgisInterrupt.emit(this._interrupt);
275
484
  break;
276
485
  case "cancelled":
277
- this.messages.push({
486
+ a?.role === "assistant" && a.id === l ? this.messages.splice(-1, 1, {
487
+ ...a,
488
+ blocks: a.blocks?.filter((n) => n.type === "text" || !n.isPending) ?? [],
489
+ isStreaming: !1,
490
+ log: s.log,
491
+ error: `(${this._messages.stoppedByUserLabel})`
492
+ }) : (this.messages.push({
278
493
  role: "assistant",
279
- error: "Request cancelled.",
280
- id: r
281
- });
494
+ log: s.log,
495
+ error: `(${this._messages.stoppedByUserLabel})`,
496
+ id: l,
497
+ interrupts: this._interruptDetails
498
+ }), this._interruptDetails = []), this._isAnswering = !1, this.#e = null, this._canceling = !1;
282
499
  break;
283
500
  }
284
501
  }
285
502
  }
286
- submitInterrupt(t) {
287
- this.arcgisInterruptSubmit.emit(t), this.orchestrator?.resumeInterrupt(t), this._interrupt = null;
503
+ unregister(t) {
504
+ this.#r.delete(t), this._orchestratorController && this.#d();
288
505
  }
289
506
  load() {
290
507
  this.manager.onLifecycle(this._reset.bind(this));
291
508
  }
292
509
  loaded() {
293
510
  this.manager.onLifecycle(() => {
294
- this.#t.value?.addEventListener("arcgisPromptSelect", this.#p), this.#t.value?.addEventListener("arcgisSubmit", this.#l), this.#t.value?.addEventListener("arcgisCancel", this.#c), this.#t.value?.addEventListener("arcgisFeedback", this.#h);
295
- const t = I(() => !!this._interrupt && !!this.#e.value, () => {
296
- const e = this.#e.value;
297
- e.removeEventListener("arcgisSubmit", this.#a), e.removeEventListener("arcgisCancel", this.#i), e.addEventListener("arcgisSubmit", this.#a, { once: !0 }), e.addEventListener("arcgisCancel", this.#i, { once: !0 });
511
+ this.#t.value?.addEventListener("arcgisPromptSelect", this.#g), this.#t.value?.addEventListener("arcgisSubmit", this.#l), this.#t.value?.addEventListener("arcgisCancel", this.#c), this.#t.value?.addEventListener("arcgisFeedback", this.#h);
512
+ const t = M(() => !!this._interrupt && !!this.#s.value, () => {
513
+ const i = this.#s.value;
514
+ i.removeEventListener("arcgisSubmit", this.#n), i.removeEventListener("arcgisCancel", this.#a), i.addEventListener("arcgisSubmit", this.#n, { once: !0 }), i.addEventListener("arcgisCancel", this.#a, { once: !0 });
515
+ }), e = this.messages.on("after-add", (i) => {
516
+ const r = i.item;
517
+ r.role === "assistant" && (r.error || r.content) && this.arcgisResponse.emit(r);
298
518
  });
299
519
  return queueMicrotask(() => {
300
- this.#u().then((e) => {
301
- e ? this.arcgisReady.emit() : this._error && this.arcgisError.emit(new Error(this._error));
302
- });
520
+ this.#p();
303
521
  }), () => {
304
- t.remove(), this.#t.value?.removeEventListener("arcgisPromptSelect", this.#p), this.#e.value?.removeEventListener("arcgisSubmit", this.#a), this.#e.value?.removeEventListener("arcgisCancel", this.#i), this.#t.value?.removeEventListener("arcgisSubmit", this.#l), this.#t.value?.removeEventListener("arcgisCancel", this.#c), this.#t.value?.removeEventListener("arcgisFeedback", this.#h), this._orchestratorController?.destroy(), this._orchestratorController = null;
522
+ t.remove(), e.remove(), this.#t.value?.removeEventListener("arcgisPromptSelect", this.#g), this.#s.value?.removeEventListener("arcgisSubmit", this.#n), this.#s.value?.removeEventListener("arcgisCancel", this.#a), this.#t.value?.removeEventListener("arcgisSubmit", this.#l), this.#t.value?.removeEventListener("arcgisCancel", this.#c), this.#t.value?.removeEventListener("arcgisFeedback", this.#h), this._orchestratorController?.destroy(), this._orchestratorController = null;
305
523
  };
306
524
  });
307
525
  }
526
+ willUpdate(t) {
527
+ this.hasUpdated && t.has("runtimeEventsEnabled") && this._orchestratorController && (this._orchestratorController.destroy(), this._orchestratorController = null, this.#p());
528
+ }
529
+ async #d() {
530
+ try {
531
+ this._error = null;
532
+ const t = H(this.el, this.referenceElement);
533
+ await t?.componentOnReady();
534
+ const e = [...this.#r.values()];
535
+ return e.length ? (this._orchestratorController?.destroy(), this._orchestratorController = new p({
536
+ agents: e,
537
+ portal: this.#i,
538
+ runtimeEventsEnabled: this.runtimeEventsEnabled,
539
+ streamingDisabled: this.streamingDisabled,
540
+ view: t?.view
541
+ }), await this._orchestratorController.load(), this.requestUpdate(), !0) : (this._error = this._messages.noAgentsFoundMessage, !1);
542
+ } catch (t) {
543
+ return this._error = t?.message ?? this._messages.orchestratorInitializationErrorMessage, z(this)(t), !1;
544
+ }
545
+ }
546
+ async #p() {
547
+ await this.#d() ? this.arcgisReady.emit() : this._error && this.arcgisError.emit(new Error(this._error));
548
+ }
308
549
  _reset() {
309
- this.#s?.abort(), this._interrupt = null, this.messages.removeAll(), this._error = null, this._inputValue = "";
550
+ this._orchestratorController?.cancel(), this.#e?.abort(), this._interrupt = null, this.messages.removeAll(), this._error = null, this._inputValue = "", this._signedInUserId = void 0;
310
551
  }
311
552
  _renderEntryMessage() {
312
- return this._interrupt ? a`<slot name=interrupt><arcgis-assistant-interrupt .type=${this._interrupt.type} .message=${this._interrupt.message} .options=${this._interrupt.options} ${y(this.#e)}></arcgis-assistant-interrupt></slot>` : this._error ? this._renderErrorNotice() : this.entryMessage ? this.messages.length > 0 ? null : a`<calcite-notice open kind=info closable icon width=full><div slot=message>${this.entryMessage}</div></calcite-notice>` : a`<slot name=entry-message></slot>`;
553
+ return this._isSignedIn ? this._error ? this._renderErrorNotice() : this.entryMessage ? this.messages.length > 0 ? null : g`<calcite-notice open kind=brand closable icon width=full><div slot=message>${this.entryMessage}</div></calcite-notice>` : g`<slot name=entry-message></slot>` : this._renderSignInNotice();
313
554
  }
314
- _renderErrorNotice() {
315
- return this._error ? a`<calcite-notice closable slot=entry-message open kind=danger icon width=full>${this._error === B ? a`<div slot=message>${H}</div><calcite-link slot=link .href=${D} target=_blank title="Learn about web map embeddings">Read more</calcite-link>` : a`<div slot=message>${this._error}</div>`}</calcite-notice>` : null;
555
+ _renderSignInNotice() {
556
+ const t = this.#i;
557
+ return g`<calcite-notice slot=entry-message open kind=brand icon width=full><div slot=message>${this._messages.signInRequiredMessage}</div>${t ? g`<calcite-link slot=link @click=${async () => {
558
+ try {
559
+ const e = await V.getCredential(`${t.url}/sharing`);
560
+ this._signedInUserId = e.userId, this._error = null, this.requestUpdate(), await this.#p();
561
+ } catch (e) {
562
+ this._error = e?.message ?? this._messages.signInErrorMessage, this.arcgisError.emit(new Error(this._error)), B.log("error", this, "Error signing in:", { detail: { error: e } });
563
+ }
564
+ }} target=_blank title=${this._messages.signInToArcGISOnlineLabel ?? _}>${this._messages.signInLabel}</calcite-link>` : g`<div slot=link>${this._messages.noPortalInformationMessage}</div>`}</calcite-notice>`;
316
565
  }
317
- _renderSuggestedPrompts() {
318
- return this.suggestedPrompts?.length ? a`<div class="suggested-prompts-container"><arcgis-assistant-suggested-prompts class="suggested-prompts" .prompts=${this.suggestedPrompts}></arcgis-assistant-suggested-prompts></div>` : null;
566
+ _renderErrorNotice() {
567
+ return this._error ? g`<calcite-notice slot=entry-message open kind=brand icon width=full>${this._error === X ? g`<div slot=message>${Y}</div><calcite-link slot=link .href=${tt} target=_blank title=${this._messages.learnAboutWebMapEmbeddingsLabel ?? _}>${this._messages.readMoreLabel}</calcite-link>` : g`<div slot=message>${this._error}</div>`}</calcite-notice>` : null;
319
568
  }
320
569
  render() {
321
- return a`<calcite-panel .loading=${!this._orchestratorController && !this._error || this._orchestratorController?.loading} .heading=${this.heading ?? this._messages.assistantLabel} .description=${this.description} ${y(this.#t)}><slot name=header-actions-start slot=header-actions-start></slot><slot name=header-actions-end slot=header-actions-end></slot><div class="content-container"><arcgis-assistant-chat .loading=${this.awaitingResponse} .messages=${this.messages}><slot name=message-starter slot=message-starter></slot><slot name=messages slot=messages>${this.messages.map((t) => t.role === "assistant" ? a`<arcgis-assistant-message .message=${t} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled} @arcgisSlottableRequest=${this.#g}><slot name=${v(t.id) ?? b} slot=${v(t.id) ?? b}>${t?.error ? a`<calcite-notice class="error-notice" open icon kind=warning width=full><div slot=message>${t.error}</div></calcite-notice>` : a`<arcgis-assistant-message-text .content=${t?.content}></arcgis-assistant-message-text>`}</slot>${t.blocks?.map((e, i) => a`<slot name=${_(t.id, i) ?? b} slot=${_(t.id, i) ?? b}><arcgis-assistant-message-block .block=${e}></arcgis-assistant-message-block></slot>`)}</arcgis-assistant-message>` : a`<arcgis-assistant-user-message .message=${t} .user=${this._user}></arcgis-assistant-user-message>`)}</slot><slot name=message-loading slot=message-loading><arcgis-assistant-message-loading .loading=${this.awaitingResponse} .loadingMessage=${this.awaitingResponseStep}></arcgis-assistant-message-loading></slot></arcgis-assistant-chat></div>${this._renderSuggestedPrompts()}<div class="footer-container" slot=footer>${this._renderEntryMessage()}<slot name=chat-entry><arcgis-assistant-chat-entry .awaitingResponse=${this.awaitingResponse} .inputValue=${this._inputValue} .messages=${this.messages} .voiceInputEnabled=${this.voiceInputEnabled} ${y(this.#n)}><slot name=entry-actions-start slot=entry-actions-start></slot><slot name=entry-actions-end slot=entry-actions-end><calcite-button .iconStart=${this.awaitingResponse ? "circle-stop" : "send"} @click=${() => {
322
- this.#n.value?.submitMessage();
323
- }} round>${this.awaitingResponse ? this._messages.stopButtonLabel : this._messages.askButtonLabel}</calcite-button></slot></arcgis-assistant-chat-entry></slot><slot name=footer-content></slot></div></calcite-panel>`;
570
+ return g`<calcite-panel .loading=${!this._orchestratorController && !this._error || this._orchestratorController?.loading} .heading=${this.heading ?? this._messages.assistantLabel} .description=${this.description} ${k(this.#t)}><slot name=header-actions-start slot=header-actions-start></slot><slot name=header-actions-end slot=header-actions-end></slot><div class="content-container"><arcgis-assistant-chat .loading=${this.awaitingResponse} .messages=${this.messages} .interrupt=${this._interrupt}><slot name=message-starter slot=message-starter></slot><slot name=messages slot=messages>${this.messages.map((t) => t.role === "assistant" ? g`<arcgis-assistant-message .message=${t} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled} @arcgisSlottableRequest=${this.#u} .assistantAvatarEnabled=${this.assistantAvatarEnabled}>${t.blocks?.map((e, i) => g`<slot name=${I(t.id, i) ?? _} slot=${I(t.id, i) ?? _}><arcgis-assistant-message-block .block=${e}></arcgis-assistant-message-block></slot>`)}</arcgis-assistant-message>` : g`<arcgis-assistant-user-message .message=${t} .user=${this._user} .userAvatarEnabled=${this.userAvatarEnabled}></arcgis-assistant-user-message>`)}</slot>${this._interrupt ? g`<div slot=message-loading><div class="interrupt-waiting-message">${this._messages.waitingForUserInputMessage}</div></div>` : g`<slot name=message-loading slot=message-loading><arcgis-assistant-message-loading .loading=${this.awaitingResponse} .loadingMessage=${this.awaitingResponseStep} .assistantAvatarEnabled=${this.assistantAvatarEnabled} .interrupts=${this._interruptDetails}></arcgis-assistant-message-loading></slot>`}</arcgis-assistant-chat></div>${this._interrupt ? g`<slot name=interrupt><arcgis-assistant-interrupt slot=content-bottom .type=${this._interrupt.type} .message=${this._interrupt.message} .options=${this._interrupt.options} ${k(this.#s)}></arcgis-assistant-interrupt></slot>` : this.suggestedPrompts?.length ? g`<div class="suggested-prompts-container" slot=content-bottom><arcgis-assistant-suggested-prompts class="suggested-prompts" .prompts=${this.suggestedPrompts}></arcgis-assistant-suggested-prompts></div>` : null}<div class="footer-container" slot=footer>${this._renderEntryMessage()}<slot name=chat-entry><arcgis-assistant-chat-entry .awaitingResponse=${this.awaitingResponse || this._isAnswering} .inputValue=${this._inputValue} .messages=${this.messages} .voiceInputEnabled=${this.voiceInputEnabled} .disabled=${this._canceling || !this._isSignedIn || !!this._interrupt || !!this._error} ${k(this.#o)}><slot name=entry-actions-start slot=entry-actions-start></slot><slot name=entry-actions-end slot=entry-actions-end><calcite-button .iconStart=${this.awaitingResponse || this._isAnswering ? "circle-stop" : "send"} @click=${() => {
571
+ this.#o.value?.submitMessage();
572
+ }} round>${this.awaitingResponse || this._isAnswering ? this._messages.stopButtonLabel : this._messages.askButtonLabel}</calcite-button></slot></arcgis-assistant-chat-entry></slot><slot name=footer-content></slot></div></calcite-panel>`;
324
573
  }
325
574
  }
326
- $("arcgis-assistant", F);
575
+ x("arcgis-assistant", et);
327
576
  export {
328
- F as ArcgisAssistant
577
+ et as ArcgisAssistant
329
578
  };