@arcgis/ai-components 5.2.0-next.11 → 5.2.0-next.111

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 (334) hide show
  1. package/LICENSE.md +4 -2
  2. package/README.md +2 -2
  3. package/dist/agent-utils/LLMAgent.d.ts +9 -7
  4. package/dist/agent-utils/LLMAgent.js +63 -60
  5. package/dist/agent-utils/WorkflowAgent.js +14 -15
  6. package/dist/agent-utils/index.d.ts +78 -0
  7. package/dist/agent-utils/index.js +116 -97
  8. package/dist/agent-utils/middlewares/trace.d.ts +2 -0
  9. package/dist/agent-utils/middlewares/trace.js +5 -5
  10. package/dist/agent-utils/types.d.ts +13 -13
  11. package/dist/agentic-workflow/AgenticWorkflowRuntime.d.ts +24 -0
  12. package/dist/agentic-workflow/Edge.d.ts +16 -0
  13. package/dist/agentic-workflow/WebAgent.d.ts +39 -0
  14. package/dist/agentic-workflow/jsonTypes.d.ts +229 -0
  15. package/dist/agentic-workflow/nodes/AgentNode.d.ts +28 -0
  16. package/dist/agentic-workflow/nodes/BaseNode.d.ts +35 -0
  17. package/dist/agentic-workflow/nodes/EndMessageNode.d.ts +25 -0
  18. package/dist/agentic-workflow/nodes/HumanInTheLoopNode.d.ts +37 -0
  19. package/dist/agentic-workflow/nodes/StartNode.d.ts +21 -0
  20. package/dist/agentic-workflow/nodes/tools/ArcgisTool.d.ts +21 -0
  21. package/dist/agentic-workflow/types.d.ts +29 -0
  22. package/dist/agents/runtime/skill/createSkillAgent.d.ts +30 -0
  23. package/dist/agents/runtime/skill/createSkillAgent.js +260 -0
  24. package/dist/agents/runtime/skill/loadAgentSkills.d.ts +16 -0
  25. package/dist/agents/runtime/skill/types.d.ts +20 -0
  26. package/dist/{cdn/WNS5ZUF5.js → agents/runtime/skill/types.js} +1 -1
  27. package/dist/agents/tools/filter/clearFilters/adapter.d.ts +8 -0
  28. package/dist/agents/tools/filter/clearFilters/adapter.js +22 -0
  29. package/dist/agents/tools/filter/resetMap/adapter.d.ts +8 -0
  30. package/dist/agents/tools/filter/resetMap/adapter.js +22 -0
  31. package/dist/agents/tools/filter/setFeatureEffect/adapter.d.ts +8 -0
  32. package/dist/agents/tools/filter/setFeatureEffect/adapter.js +122 -0
  33. package/dist/agents/tools/help/listFields/adapter.d.ts +11 -0
  34. package/dist/agents/tools/help/listFields/adapter.js +30 -0
  35. package/dist/agents/tools/navigation/goToAddress/adapter.d.ts +10 -0
  36. package/dist/agents/tools/navigation/goToAddress/adapter.js +60 -0
  37. package/dist/agents/tools/navigation/goToBookmark/adapter.d.ts +8 -0
  38. package/dist/agents/tools/navigation/goToBookmark/adapter.js +30 -0
  39. package/dist/agents/tools/navigation/goToFeatures/adapter.d.ts +8 -0
  40. package/dist/agents/tools/navigation/goToFeatures/adapter.js +50 -0
  41. package/dist/agents/tools/navigation/goToFullExtent/adapter.d.ts +8 -0
  42. package/dist/agents/tools/navigation/goToFullExtent/adapter.js +27 -0
  43. package/dist/agents/tools/navigation/goToHomeExtent/adapter.d.ts +8 -0
  44. package/dist/agents/tools/navigation/goToHomeExtent/adapter.js +24 -0
  45. package/dist/agents/tools/navigation/goToLayer/adapter.d.ts +8 -0
  46. package/dist/agents/tools/navigation/goToLayer/adapter.js +26 -0
  47. package/dist/agents/tools/navigation/goToScale/adapter.d.ts +8 -0
  48. package/dist/agents/tools/navigation/goToScale/adapter.js +21 -0
  49. package/dist/agents/tools/navigation/goToViewpoint/adapter.d.ts +8 -0
  50. package/dist/agents/tools/navigation/goToViewpoint/adapter.js +42 -0
  51. package/dist/agents/tools/navigation/goToZoom/adapter.d.ts +8 -0
  52. package/dist/agents/tools/navigation/goToZoom/adapter.js +21 -0
  53. package/dist/agents/tools/query/getAttribute/adapter.d.ts +8 -0
  54. package/dist/agents/tools/query/getAttribute/adapter.js +40 -0
  55. package/dist/agents/tools/query/getStatistics/adapter.d.ts +8 -0
  56. package/dist/agents/tools/query/getStatistics/adapter.js +158 -0
  57. package/dist/agents/tools/query/getTopFeatures/adapter.d.ts +8 -0
  58. package/dist/agents/tools/query/getTopFeatures/adapter.js +145 -0
  59. package/dist/agents/tools/query/queryFeatures/adapter.d.ts +8 -0
  60. package/dist/agents/tools/query/queryFeatures/adapter.js +131 -0
  61. package/dist/agents/tools/search/findRelevantFields/adapter.d.ts +8 -0
  62. package/dist/agents/tools/search/findRelevantFields/adapter.js +57 -0
  63. package/dist/agents/tools/search/findRelevantLayers/adapter.d.ts +8 -0
  64. package/dist/agents/tools/search/findRelevantLayers/adapter.js +38 -0
  65. package/dist/agents/tools/shared/resolveToolArtifact.d.ts +22 -0
  66. package/dist/agents/tools/shared/resolveToolArtifact.js +20 -0
  67. package/dist/agents/tools/shared/types.d.ts +22 -0
  68. package/dist/agents/tools/shared/types.js +6 -0
  69. package/dist/cdn/2BNQ6A6J.js +2 -0
  70. package/dist/cdn/2MWUBKWI.js +2 -0
  71. package/dist/cdn/{F6QHMKF5.js → 2O4DON37.js} +1 -1
  72. package/dist/cdn/2W7LK4HA.js +2 -0
  73. package/dist/cdn/33PB7ALY.js +2 -0
  74. package/dist/cdn/{5CV7R5IS.js → 33SFAZQG.js} +5 -5
  75. package/dist/cdn/34O57OGV.js +2 -0
  76. package/dist/cdn/{5W7S2RS4.js → 3UEKINYC.js} +1 -1
  77. package/dist/cdn/4IU63OWQ.js +2 -0
  78. package/dist/cdn/5A355PGH.js +14 -0
  79. package/dist/cdn/5HBAJ57P.js +2 -0
  80. package/dist/cdn/5MK44FNO.js +2 -0
  81. package/dist/cdn/5Q2XRQS6.js +2 -0
  82. package/dist/cdn/6ECRQVHY.js +2 -0
  83. package/dist/cdn/6OOZSZRJ.js +2 -0
  84. package/dist/cdn/6OUIUXAJ.js +2 -0
  85. package/dist/cdn/{UPEEHMSY.js → 6P44KOKX.js} +1 -1
  86. package/dist/cdn/73TMZQI5.js +2 -0
  87. package/dist/cdn/74CVYM72.js +19 -0
  88. package/dist/cdn/7EHOFQ2P.js +3 -0
  89. package/dist/cdn/7KSFIRXB.js +2 -0
  90. package/dist/cdn/AHCXG7XF.js +2 -0
  91. package/dist/cdn/{ZS2TZ6BF.js → AOVJ34QE.js} +1 -1
  92. package/dist/cdn/{Q7TL5Q5N.js → APFZY4PI.js} +1 -1
  93. package/dist/cdn/AVRS6UCQ.js +2 -0
  94. package/dist/cdn/AVZ5Y6BK.js +11 -0
  95. package/dist/cdn/AXTQU5YL.js +56 -0
  96. package/dist/cdn/BBPD2AS7.js +2 -0
  97. package/dist/cdn/BFZ5S7NF.js +2 -0
  98. package/dist/cdn/{6ZW7Z36F.js → BL273EGZ.js} +3 -3
  99. package/dist/cdn/C7JPWFZE.js +2 -0
  100. package/dist/cdn/CCC6LBMY.js +2 -0
  101. package/dist/cdn/{5ZZGKP7N.js → CEKOEHB3.js} +1 -1
  102. package/dist/cdn/CFAC4FN3.js +2 -0
  103. package/dist/cdn/COH3QXWG.js +4 -0
  104. package/dist/cdn/DB2TFPIO.js +2 -0
  105. package/dist/cdn/DE26DAW5.js +2 -0
  106. package/dist/cdn/DG27JEYG.js +50 -0
  107. package/dist/cdn/DKA6PSYN.js +2 -0
  108. package/dist/cdn/DQ2Z65UO.js +3 -0
  109. package/dist/cdn/DWH23NJN.js +2 -0
  110. package/dist/cdn/EDXTPEEU.js +2 -0
  111. package/dist/cdn/ENM3L4AC.js +2 -0
  112. package/dist/cdn/EVMIYZWD.js +2 -0
  113. package/dist/cdn/EYOWRGDP.js +2 -0
  114. package/dist/cdn/EYY367WR.js +2 -0
  115. package/dist/cdn/F5NIRETW.js +2 -0
  116. package/dist/cdn/FCI6M62J.js +2 -0
  117. package/dist/cdn/FDOMMK2M.js +2 -0
  118. package/dist/cdn/FS7GXTTQ.js +6 -0
  119. package/dist/cdn/{T537PKP4.js → FYZATVB3.js} +1 -1
  120. package/dist/cdn/H6P3WP5D.js +14 -0
  121. package/dist/cdn/HHP5YLUI.js +2 -0
  122. package/dist/cdn/HIAQARIQ.js +2 -0
  123. package/dist/cdn/HMIDFTEI.js +2 -0
  124. package/dist/cdn/HMNBUGH2.js +2 -0
  125. package/dist/cdn/HR6GWPKX.js +2 -0
  126. package/dist/cdn/{FX7UOGHP.js → ICBIUFK7.js} +1 -1
  127. package/dist/cdn/IH26MIYY.js +2 -0
  128. package/dist/cdn/IHP25JWI.js +99 -0
  129. package/dist/cdn/IYLFJCJ2.js +181 -0
  130. package/dist/cdn/J6A4AS7E.js +22 -0
  131. package/dist/cdn/{NE7E52YR.js → JEBRN3EU.js} +9 -3
  132. package/dist/cdn/JICNSK6Y.js +6 -0
  133. package/dist/cdn/JQYLMTDP.js +2 -0
  134. package/dist/cdn/K5JVB6FU.js +2 -0
  135. package/dist/cdn/K7XWGSLN.js +2 -0
  136. package/dist/cdn/K7YQIJFT.js +2 -0
  137. package/dist/cdn/KH4V4I3W.js +2 -0
  138. package/dist/cdn/KMLJS2VW.js +2 -0
  139. package/dist/cdn/LAVFUDUG.js +2 -0
  140. package/dist/cdn/{7RCQFLPP.js → LK7ZIQW6.js} +1 -1
  141. package/dist/cdn/LOQ2PKV5.js +208 -0
  142. package/dist/cdn/LXPGQNXQ.js +5 -0
  143. package/dist/cdn/MJSIYEWN.js +2 -0
  144. package/dist/cdn/{ZEYIBYSF.js → MWYBF3F3.js} +1 -1
  145. package/dist/cdn/{24QNMEFG.js → MXTXJKFE.js} +1 -1
  146. package/dist/cdn/NEV6OZN3.js +71 -0
  147. package/dist/cdn/O4NVW75A.js +2 -0
  148. package/dist/cdn/{23EQTPO3.js → OKVLGJAG.js} +1 -1
  149. package/dist/cdn/OMF6ITSG.js +2 -0
  150. package/dist/cdn/ONQ6JSBJ.js +2 -0
  151. package/dist/cdn/OZAZ277H.js +2 -0
  152. package/dist/cdn/P4GFYBBO.js +3 -0
  153. package/dist/cdn/P4XZMBU5.js +2 -0
  154. package/dist/cdn/POL6HKCG.js +72 -0
  155. package/dist/cdn/POZYDAU2.js +2 -0
  156. package/dist/cdn/{LQ6R5YRN.js → PQ2DPOFM.js} +1 -1
  157. package/dist/cdn/PYGX4HN7.js +2 -0
  158. package/dist/cdn/QNXI3WOF.js +179 -0
  159. package/dist/cdn/{DXVU45KM.js → QRMRID2M.js} +1 -1
  160. package/dist/cdn/R74ZHFA6.js +2 -0
  161. package/dist/cdn/RFVZ7KCG.js +66 -0
  162. package/dist/cdn/RHYNE5OE.js +2 -0
  163. package/dist/cdn/RLEHNAIA.js +2 -0
  164. package/dist/cdn/ROQGPAR5.js +9 -0
  165. package/dist/cdn/RXF2NUOL.js +2 -0
  166. package/dist/cdn/{X2ZDYHCG.js → SDWWUWAF.js} +10 -5
  167. package/dist/cdn/SHI76XUV.js +2 -0
  168. package/dist/cdn/SITY6L4S.js +2 -0
  169. package/dist/cdn/STHBRTTD.js +2 -0
  170. package/dist/cdn/{WAIFKDR3.js → SXM4NUT5.js} +1 -1
  171. package/dist/cdn/SZRJTQ54.js +2 -0
  172. package/dist/cdn/TO2NY7EA.js +2 -0
  173. package/dist/cdn/TPULIO6I.js +34 -0
  174. package/dist/cdn/TVEEQSMF.js +2 -0
  175. package/dist/cdn/TWU3QXAS.js +2 -0
  176. package/dist/cdn/TYATJUNF.js +2 -0
  177. package/dist/cdn/UCTC4JN4.js +3 -0
  178. package/dist/cdn/UDRKUVZP.js +2 -0
  179. package/dist/cdn/{6YMR4QSD.js → UHEYPSOR.js} +1 -1
  180. package/dist/cdn/UHICISBZ.js +2 -0
  181. package/dist/cdn/UO5PBOQR.js +2 -0
  182. package/dist/cdn/UZLQALHY.js +2 -0
  183. package/dist/cdn/V6HOUZPZ.js +2 -0
  184. package/dist/cdn/{P7DG5T3Z.js → V7Y22FRP.js} +1 -1
  185. package/dist/cdn/VAXH6RUQ.js +134 -0
  186. package/dist/cdn/VNLSYVPE.js +2 -0
  187. package/dist/cdn/VR3CF3ZY.js +2 -0
  188. package/dist/cdn/VWP2B4LB.js +2 -0
  189. package/dist/cdn/VXFQANGJ.js +2 -0
  190. package/dist/cdn/WKZHFSH3.js +2 -0
  191. package/dist/cdn/{AZGGTNA3.js → WSWB3B7B.js} +1 -1
  192. package/dist/cdn/WVP73XWD.js +2 -0
  193. package/dist/cdn/WXQ26G5Q.js +2 -0
  194. package/dist/cdn/XQ3NBBQ3.js +2 -0
  195. package/dist/cdn/{7CYGX4F4.js → YHWYTHID.js} +1 -1
  196. package/dist/cdn/YIZ7PR2G.js +2 -0
  197. package/dist/cdn/Z5XQLSYH.js +2 -0
  198. package/dist/cdn/ZFOG3KXV.js +2 -0
  199. package/dist/cdn/{ZTBA5PM7.js → ZU2FHVNK.js} +1 -1
  200. package/dist/cdn/agent-utils/index.js +1 -1
  201. package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +1 -2
  202. package/dist/cdn/agent-utils/middlewares/middleware.js +1 -1
  203. package/dist/cdn/agent-utils/middlewares/trace.js +1 -1
  204. package/dist/cdn/assets/assistant/t9n/messages.en.json +1 -1
  205. package/dist/cdn/assets/assistant-interrupt/t9n/messages.en.json +1 -1
  206. package/dist/cdn/assets/assistant-interrupt-preview/t9n/messages.en.json +1 -0
  207. package/dist/cdn/assets/assistant-message/t9n/messages.en.json +1 -0
  208. package/dist/cdn/assets/assistant-message-loading/t9n/messages.en.json +1 -0
  209. package/dist/cdn/index.js +1 -1
  210. package/dist/chunks/SKILL.js +5 -0
  211. package/dist/chunks/SKILL2.js +5 -0
  212. package/dist/chunks/SKILL3.js +22 -0
  213. package/dist/chunks/SKILL4.js +5 -0
  214. package/dist/chunks/adapter.js +1126 -2010
  215. package/dist/chunks/aiFactory.js +100 -0
  216. package/dist/chunks/arcgisKnowledgeGraph.js +96 -76
  217. package/dist/chunks/arcgisToolRegistry.js +88 -0
  218. package/dist/chunks/arcgis_knowledge_current_lc_context.js +19 -2
  219. package/dist/chunks/arcgis_knowledge_current_map_context.js +31 -2
  220. package/dist/chunks/arcgis_knowledge_cypher_query_prompt.js +102 -0
  221. package/dist/chunks/arcgis_knowledge_summarize_result_prompt.js +116 -27
  222. package/dist/chunks/baseAgentState.js +58 -0
  223. package/dist/chunks/converterUtils.js +66 -41
  224. package/dist/chunks/dataExplorationAgent.js +19 -0
  225. package/dist/chunks/data_explore_query_prompt.js +9 -4
  226. package/dist/chunks/fetchAgentContext.js +13 -0
  227. package/dist/chunks/fetchService.js +10 -0
  228. package/dist/chunks/fieldStatistics.js +79 -0
  229. package/dist/chunks/formatFeatureAttributes.js +132 -0
  230. package/dist/chunks/generateLayerDescriptions.js +183 -307
  231. package/dist/chunks/helpAgent.js +34 -0
  232. package/dist/chunks/help_prompt.js +34 -17
  233. package/dist/chunks/intent_prompt.js +2 -2
  234. package/dist/chunks/layerStylingGraph.js +101 -83
  235. package/dist/chunks/mergeWhereClauses.js +15 -0
  236. package/dist/chunks/navigationAgent.js +27 -0
  237. package/dist/chunks/navigation_intent_prompt.js +8 -2
  238. package/dist/chunks/orchestrator.js +445 -234
  239. package/dist/chunks/requireAgentServices.js +11 -0
  240. package/dist/chunks/resolvePointGeometryFilter.js +92 -0
  241. package/dist/chunks/state.js +39 -45
  242. package/dist/chunks/utils2.js +11 -11
  243. package/dist/components/arcgis-assistant/customElement.d.ts +102 -1
  244. package/dist/components/arcgis-assistant/customElement.js +331 -183
  245. package/dist/components/arcgis-assistant-agent/customElement.d.ts +13 -1
  246. package/dist/components/arcgis-assistant-agent/customElement.js +674 -10
  247. package/dist/components/arcgis-assistant-chat/customElement.js +22 -17
  248. package/dist/components/arcgis-assistant-data-exploration-agent/customElement.js +34 -8
  249. package/dist/components/arcgis-assistant-help-agent/customElement.js +31 -8
  250. package/dist/components/arcgis-assistant-interrupt/customElement.d.ts +4 -0
  251. package/dist/components/arcgis-assistant-interrupt/customElement.js +11 -12
  252. package/dist/components/arcgis-assistant-interrupt-preview/customElement.js +12 -8
  253. package/dist/components/arcgis-assistant-knowledge-agent/customElement.d.ts +1 -1
  254. package/dist/components/arcgis-assistant-knowledge-agent/customElement.js +40 -16
  255. package/dist/components/arcgis-assistant-layer-styling-agent/customElement.js +30 -7
  256. package/dist/components/arcgis-assistant-message/customElement.d.ts +3 -0
  257. package/dist/components/arcgis-assistant-message/customElement.js +9 -8
  258. package/dist/components/arcgis-assistant-message-block/customElement.js +1 -1
  259. package/dist/components/arcgis-assistant-message-loading/customElement.d.ts +3 -0
  260. package/dist/components/arcgis-assistant-message-loading/customElement.js +11 -10
  261. package/dist/components/arcgis-assistant-message-text/customElement.d.ts +1 -0
  262. package/dist/components/arcgis-assistant-message-text/customElement.js +12 -12
  263. package/dist/components/arcgis-assistant-navigation-agent/customElement.js +33 -9
  264. package/dist/components/arcgis-assistant-speech-input/customElement.js +34 -52
  265. package/dist/components/arcgis-assistant-user-message/customElement.d.ts +2 -0
  266. package/dist/components/arcgis-assistant-user-message/customElement.js +15 -10
  267. package/dist/docs/api.json +1 -1
  268. package/dist/docs/docs.json +1 -1
  269. package/dist/docs/vscode.html-custom-data.json +1 -1
  270. package/dist/docs/web-types.json +1 -1
  271. package/dist/loader.js +6 -6
  272. package/dist/oauth-callback.html +1 -1
  273. package/dist/orchestrator/models/types.d.ts +1 -0
  274. package/dist/orchestrator/orchestrator/orchestratorEvents.d.ts +78 -0
  275. package/dist/orchestrator/providers/arcgis/aiFactory.d.ts +15 -0
  276. package/dist/orchestrator/types/types.d.ts +17 -0
  277. package/dist/types/lumina.d.ts +5 -4
  278. package/dist/types/preact.d.ts +5 -4
  279. package/dist/types/react.d.ts +5 -4
  280. package/dist/types/stencil.d.ts +7 -6
  281. package/dist/utils/index.d.ts +75 -39
  282. package/dist/utils/index.js +707 -83
  283. package/package.json +35 -12
  284. package/dist/cdn/34SG44C3.js +0 -72
  285. package/dist/cdn/3JGWGKT6.js +0 -2
  286. package/dist/cdn/3NBDVZ2I.js +0 -2
  287. package/dist/cdn/3VOQD2MR.js +0 -2
  288. package/dist/cdn/53NTYC4I.js +0 -2
  289. package/dist/cdn/5QAHYX7Y.js +0 -5
  290. package/dist/cdn/AXDZBBNL.js +0 -45
  291. package/dist/cdn/B7WJFBOZ.js +0 -2
  292. package/dist/cdn/BX7FSMUU.js +0 -56
  293. package/dist/cdn/CHPQM77M.js +0 -181
  294. package/dist/cdn/DHKUXLU3.js +0 -179
  295. package/dist/cdn/DQSEBKOX.js +0 -2
  296. package/dist/cdn/DZ2QWNUA.js +0 -3
  297. package/dist/cdn/EBISDZ5H.js +0 -2
  298. package/dist/cdn/ERL2CB2Y.js +0 -14
  299. package/dist/cdn/F2AHA4GB.js +0 -54
  300. package/dist/cdn/FUIGPHBH.js +0 -2
  301. package/dist/cdn/H2CHHGGH.js +0 -2
  302. package/dist/cdn/HWKDNS4K.js +0 -4
  303. package/dist/cdn/IMQ4TVHF.js +0 -16
  304. package/dist/cdn/IOD3GDA7.js +0 -2
  305. package/dist/cdn/IR7PTESF.js +0 -2
  306. package/dist/cdn/IRZDTYO2.js +0 -2
  307. package/dist/cdn/JIWK6QK6.js +0 -2
  308. package/dist/cdn/JLKGS6Y5.js +0 -36
  309. package/dist/cdn/K3JCH4XW.js +0 -2
  310. package/dist/cdn/KHXUWZHB.js +0 -2
  311. package/dist/cdn/KMQ3SP4I.js +0 -5
  312. package/dist/cdn/LIFK3QSD.js +0 -2
  313. package/dist/cdn/NXKKG5TK.js +0 -2
  314. package/dist/cdn/O3EN27N5.js +0 -2
  315. package/dist/cdn/O3RFFPU3.js +0 -6
  316. package/dist/cdn/PBO6FZN6.js +0 -2
  317. package/dist/cdn/Q3ZW4FYA.js +0 -3
  318. package/dist/cdn/Q6LRANX6.js +0 -2
  319. package/dist/cdn/QCSN44H4.js +0 -2
  320. package/dist/cdn/R56X6ZKR.js +0 -161
  321. package/dist/cdn/RUURNLTP.js +0 -2
  322. package/dist/cdn/T43LEBBE.js +0 -47
  323. package/dist/cdn/TR4GFL7X.js +0 -2
  324. package/dist/cdn/X4XY5HIE.js +0 -2
  325. package/dist/cdn/XOH56EQ2.js +0 -2
  326. package/dist/cdn/XON27U6U.js +0 -2
  327. package/dist/cdn/YIMNOUTF.js +0 -2
  328. package/dist/cdn/YLN2BZ5J.js +0 -2
  329. package/dist/cdn/YUKR4AZW.js +0 -2
  330. package/dist/cdn/Z2G7MP5L.js +0 -22
  331. package/dist/chunks/dataExplorationGraph.js +0 -310
  332. package/dist/chunks/helpGraph.js +0 -126
  333. package/dist/chunks/navigationGraph.js +0 -270
  334. package/dist/chunks/toolCallResponse.js +0 -31
@@ -1,56 +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 C, html as l } from "lit";
4
- import I from "@arcgis/core/core/Collection.js";
5
- import { whenOnce as P, watch as A, when as x } from "@arcgis/core/core/reactiveUtils.js";
6
- import L from "@arcgis/core/portal/Portal.js";
7
- import { LitElement as R, createEvent as g, nothing as k } from "@arcgis/lumina";
8
- import { rethrowError as O } from "@arcgis/toolkit/log";
9
- import { createRef as _, ref as v } from "lit/directives/ref.js";
10
- import { u as M } from "../../chunks/useT9n.js";
11
- import { O as D } 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 T from "@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";
16
19
  import "@arcgis/core/config.js";
17
20
  import "@langchain/core/messages";
18
21
  import "@arcgis/core/layers/FeatureLayer.js";
19
22
  import "../../chunks/generateLayerDescriptions.js";
20
23
  import "@langchain/langgraph/web";
21
- import N from "@arcgis/core/core/Accessor.js";
22
- import { property as b, subclass as B } from "@arcgis/core/core/accessorSupport/decorators.js";
23
- import { g as V } from "../../chunks/utils3.js";
24
- import { g as w } from "../../chunks/slottableRequestUtils.js";
25
- const z = C`: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)}`;
26
- var H = Object.defineProperty, j = Object.getOwnPropertyDescriptor, m = (c, t, e, i) => {
27
- for (var r = i > 1 ? void 0 : i ? j(t, e) : t, n = c.length - 1, s; n >= 0; n--)
28
- (s = c[n]) && (r = (i ? s(t, e, r) : s(r)) || r);
29
- return i && r && H(t, e, r), r;
30
- };
31
- const q = async (c) => await new Promise((t) => setTimeout(t, c));
32
- async function* F(c, {
33
- chunkSize: t = 5,
34
- // chars per "token"
35
- delay: e = 20
36
- // ms between chunks
37
- } = {}) {
38
- let i = 0;
39
- for (; i < c.length; )
40
- yield c.slice(i, i + t), i += t, await q(e);
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])) : [];
41
32
  }
42
- async function* E(c, t, e, i) {
43
- for await (const r of F(c)) {
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;
147
+ };
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) {
44
151
  if (i?.aborted) {
45
152
  yield { type: "cancelled", log: e, runId: t };
46
153
  return;
47
154
  }
48
- yield { type: "block-data", blockType: "text", data: { content: r }, runId: t };
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 };
49
164
  }
50
165
  }
51
- let d = class extends N {
52
- constructor(c) {
53
- super(c), this.view = null, this.loading = !1, this.processing = !1, this.processingStep = "";
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 = "";
54
169
  }
55
170
  async load() {
56
171
  this._set("loading", !0);
@@ -64,14 +179,15 @@ let d = class extends N {
64
179
  this.orchestrator?.dispose(), super.destroy();
65
180
  }
66
181
  async _initialize() {
67
- this.removeHandles(), await Promise.all([this.portal.load(), this.view?.when()]), this.view && await P(() => !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(
68
183
  "orchestrator",
69
- await D.init({
184
+ await N.init({
70
185
  agents: [...this.agents],
186
+ runtimeEventsEnabled: this.runtimeEventsEnabled,
71
187
  view: this.view ?? void 0
72
188
  })
73
189
  ), this.addHandles([
74
- A(
190
+ D(
75
191
  () => [this.view, this.agents],
76
192
  () => {
77
193
  this._initialize();
@@ -82,85 +198,95 @@ let d = class extends N {
82
198
  clearChatHistory() {
83
199
  this.orchestrator?.newConversation();
84
200
  }
85
- async *ask(c, t) {
201
+ async *ask(o, t, e) {
86
202
  if (!this.orchestrator)
87
203
  throw new Error("Orchestrator not initialized yet.");
88
204
  this._set("processing", !0), this._set("processingStep", "");
89
- const e = [];
90
- let i;
205
+ const i = [];
206
+ let r, s = "pending";
91
207
  try {
92
- const r = this.orchestrator.ask(c);
93
- for await (const n of r) {
94
- const s = n.runId;
95
- switch (n.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
+ }
96
215
  case "trace": {
97
- this._set("processingStep", n.data.text), e.push(n.data.text);
216
+ this._set("processingStep", a.data.text), i.push(a.data.text);
98
217
  break;
99
218
  }
100
219
  case "completed": {
101
220
  this._set("processing", !1), this._set("processingStep", "");
102
- const a = n.result, o = !!a.content.length, h = !!i?.length;
103
- if (!o && !h) {
104
- yield { type: "completed", error: "No response received.", log: e, runId: s };
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 };
105
224
  return;
106
225
  }
107
- const p = a.content;
108
- if (yield { type: "block-start", blockType: "text", runId: s }, yield* E(p, s, e, t), yield { type: "block-end", blockType: "text", runId: s }, h)
109
- for (const f of i) {
110
- if (t?.aborted) {
111
- yield { type: "cancelled", log: e, runId: s };
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 };
112
231
  return;
113
232
  }
114
- const { type: u, data: y } = f;
115
- if (yield { type: "block-start", blockType: u, runId: s }, u === "text") {
116
- const S = typeof y?.content == "string" ? y.content : "";
117
- yield* E(S, s, e, t);
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);
118
237
  } else
119
- yield { type: "block-data", blockType: u, data: y, runId: s };
120
- yield { type: "block-end", blockType: u, runId: s };
238
+ yield { type: "block-data", blockType: f, data: v, runId: s };
239
+ yield { type: "block-end", blockType: f, runId: s };
121
240
  }
122
- yield { type: "completed", response: p, blocks: i, log: e, runId: s };
241
+ yield { type: "completed", response: u, blocks: r, log: i, runId: s };
123
242
  return;
124
243
  }
125
244
  case "ux-suggestion": {
126
- const a = n.suggestion;
127
- i = i ? [...i, a] : [a];
245
+ const n = a.suggestion;
246
+ r = r ? [...r, n] : [n];
128
247
  break;
129
248
  }
130
249
  case "interrupt": {
131
- const { kind: a, message: o, metadata: h } = n.interrupt, p = Array.isArray(h) ? h.filter((u) => typeof u == "string") : [], f = (() => {
132
- switch (a) {
250
+ const { kind: n, message: c, metadata: h } = a.interrupt, u = Array.isArray(h) ? h.filter((f) => typeof f == "string") : [], y = (() => {
251
+ switch (n) {
133
252
  case "booleanChoice":
134
- return { type: "boolean-choice", message: o, options: p };
253
+ return { type: "boolean-choice", message: c, options: u };
135
254
  case "singleSelection":
136
- return { type: "single-select", message: o, options: p };
255
+ return { type: "single-select", message: c, options: u };
137
256
  case "multipleSelection":
138
- return { type: "multi-select", message: o, options: p };
257
+ return { type: "multi-select", message: c, options: u };
139
258
  case "textInput":
140
- return { type: "text-input", message: o };
259
+ return { type: "text-input", message: c };
141
260
  default:
142
- return { type: a, message: o, options: p };
261
+ return { type: n, message: c, options: u };
143
262
  }
144
263
  })();
145
- this._set("processingStep", "Waiting for user input..."), yield { type: "interrupt", payload: f, runId: s };
264
+ this._set("processingStep", "Waiting for user input..."), yield { type: "interrupt", payload: y, runId: s };
146
265
  break;
147
266
  }
148
267
  case "cancelled": {
149
- yield { type: "cancelled", log: e, runId: s };
268
+ yield { type: "cancelled", log: i, runId: s };
150
269
  return;
151
270
  }
152
271
  case "error": {
153
- yield { type: "completed", error: n.error.message, log: e, runId: s };
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 };
154
277
  return;
155
278
  }
156
279
  default: {
157
- console.warn("Unknown event type:", n);
280
+ console.warn("Unknown event type:", a);
158
281
  break;
159
282
  }
160
283
  }
284
+ } catch (l) {
285
+ if (e?.aborted || S(l)) {
286
+ yield { type: "cancelled", log: i, runId: s };
287
+ return;
161
288
  }
162
- } catch (r) {
163
- console.warn("Error during message processing:", r), 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" };
164
290
  return;
165
291
  } finally {
166
292
  this._set("processing", !1);
@@ -172,34 +298,40 @@ let d = class extends N {
172
298
  };
173
299
  m([
174
300
  b({ readOnly: !0 })
175
- ], d.prototype, "orchestrator", 2);
301
+ ], p.prototype, "orchestrator", 2);
302
+ m([
303
+ b()
304
+ ], p.prototype, "agents", 2);
305
+ m([
306
+ b()
307
+ ], p.prototype, "portal", 2);
176
308
  m([
177
309
  b()
178
- ], d.prototype, "agents", 2);
310
+ ], p.prototype, "view", 2);
179
311
  m([
180
312
  b()
181
- ], d.prototype, "portal", 2);
313
+ ], p.prototype, "streamingDisabled", 2);
182
314
  m([
183
315
  b()
184
- ], d.prototype, "view", 2);
316
+ ], p.prototype, "runtimeEventsEnabled", 2);
185
317
  m([
186
318
  b({ readOnly: !0 })
187
- ], d.prototype, "loading", 2);
319
+ ], p.prototype, "loading", 2);
188
320
  m([
189
321
  b({ readOnly: !0 })
190
- ], d.prototype, "processing", 2);
322
+ ], p.prototype, "processing", 2);
191
323
  m([
192
324
  b({ readOnly: !0 })
193
- ], d.prototype, "processingStep", 2);
194
- d = m([
195
- B("OrchestratorController")
196
- ], d);
197
- const G = "Embeddings resource 'embeddings-v01.json' not found in the webmap portal item.", U = "Embeddings not found for this web map.", W = "https://developers.arcgis.com/javascript/latest/agentic-apps/ai-webmap-setup/#embeddings";
198
- class Y extends R {
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 {
199
331
  constructor() {
200
- super(...arguments), this._messages = M({ blocking: !0 }), this.#t = _(), this.#n = _(), this.#s = _(), this.#e = null, this.#o = /* @__PURE__ */ new Map(), this.#i = L.getDefault(), this.#r = (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) => {
201
333
  t.stopPropagation(), this.cancelInterrupt();
202
- }, this.#a = (t) => {
334
+ }, this.#n = (t) => {
203
335
  t.stopPropagation();
204
336
  const e = t.detail;
205
337
  this.submitInterrupt(e);
@@ -217,46 +349,35 @@ class Y extends R {
217
349
  t.stopPropagation();
218
350
  const e = t.detail;
219
351
  this.arcgisFeedback.emit(e);
220
- }, this.#p = (t) => {
352
+ }, this.#g = (t) => {
221
353
  t.stopPropagation();
222
354
  const e = t.detail;
223
355
  this._inputValue = e.prompt, this.arcgisPromptSelect.emit(e);
224
- }, this.#g = (t) => {
356
+ }, this.#u = (t) => {
225
357
  this.arcgisSlottableRequest.emit(t.detail);
226
- }, this._orchestratorController = null, this._interrupt = null, this._interruptDetails = [], this._error = null, this._inputValue = "", this._isAnswering = !1, this._canceling = !1, this.messages = new I([]), this.referenceElement = null, this.suggestedPrompts = [], this.feedbackEnabled = !1, this.keepSuggestedPrompts = !1, this.logEnabled = !1, this.copyEnabled = !1, this.voiceInputEnabled = !1, this.readAloudEnabled = !1, this.assistantAvatarEnabled = !1, this.arcgisCancel = g(), this.arcgisError = g(), this.arcgisFeedback = g(), this.arcgisInterrupt = g(), this.arcgisInterruptCancel = g(), this.arcgisInterruptSubmit = g(), this.arcgisPromptSelect = g(), this.arcgisReady = g(), this.arcgisSubmit = g(), this.arcgisSlottableRequest = g({ bubbles: !1, composed: !1 }), this.arcgisResponse = g();
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();
227
359
  }
228
360
  static {
229
- this.properties = { _orchestratorController: 16, _interrupt: 16, _interruptDetails: 16, _error: 16, _inputValue: 16, _isAnswering: 16, _canceling: 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, assistantAvatarEnabled: 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 };
230
362
  }
231
363
  static {
232
- this.styles = z;
364
+ this.styles = W;
233
365
  }
234
366
  #t;
235
- #n;
367
+ #o;
236
368
  #s;
237
369
  #e;
238
- #o;
239
- #i;
240
370
  #r;
371
+ #i;
241
372
  #a;
373
+ #n;
242
374
  #l;
243
375
  #c;
244
376
  #h;
245
- #p;
246
377
  #g;
247
- async #d() {
248
- try {
249
- const t = V(this.el, this.referenceElement);
250
- await t?.componentOnReady();
251
- const e = [...this.#o.values()];
252
- return e.length ? (this._orchestratorController = new d({
253
- agents: e,
254
- portal: this.#i,
255
- view: t?.view
256
- }), await this._orchestratorController.load(), !0) : (this._error = "No agents found.", !1);
257
- } catch (t) {
258
- return this._error = t?.message ?? "Error initializing orchestrator.", O(this)(t), !1;
259
- }
378
+ #u;
379
+ get _isSignedIn() {
380
+ return !!this.#i?.user || !!this._signedInUserId;
260
381
  }
261
382
  get _user() {
262
383
  return this.#i?.user?.fullName || this.#i?.user?.username;
@@ -273,14 +394,17 @@ class Y extends R {
273
394
  get orchestrator() {
274
395
  return this._orchestratorController?.orchestrator;
275
396
  }
276
- async clearChatHistory() {
277
- this._reset(), this._orchestratorController?.clearChatHistory();
278
- }
279
397
  cancelInterrupt() {
280
398
  this.arcgisInterruptCancel.emit(), this.orchestrator?.cancelInterrupt(), this._interrupt = null;
281
399
  }
400
+ async clearChatHistory() {
401
+ this._reset(), this._orchestratorController?.clearChatHistory();
402
+ }
282
403
  register(t) {
283
- 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;
284
408
  }
285
409
  async submitMessage(t) {
286
410
  const e = t.trim();
@@ -291,140 +415,164 @@ class Y extends R {
291
415
  content: e
292
416
  }), !this._orchestratorController))
293
417
  return;
294
- this.#e = new AbortController();
295
- const i = this._orchestratorController.ask(e, this.#e?.signal);
296
- for await (const r of i) {
297
- const n = r.runId, s = this.messages.at(-1);
298
- switch (r.type) {
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);
422
+ switch (s.type) {
423
+ case "runtime":
424
+ this.arcgisRuntime.emit(s.event);
425
+ break;
299
426
  case "block-start": {
300
427
  this._isAnswering = !0;
301
- const a = { type: r.blockType, isPending: !0 };
302
- if (s?.role === "assistant" && s.id === n) {
303
- const o = [...s.blocks ?? [], a];
304
- this.messages.splice(-1, 1, { ...s, blocks: o });
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 });
305
432
  } else
306
433
  this.messages.push({
307
434
  role: "assistant",
308
- blocks: [a],
309
- id: n,
435
+ blocks: [n],
436
+ id: l,
310
437
  isStreaming: !0,
311
438
  interrupts: this._interruptDetails
312
439
  }), this._interruptDetails = [];
313
440
  break;
314
441
  }
315
442
  case "block-data": {
316
- if (s?.role !== "assistant" || s?.id !== n)
443
+ if (a?.role !== "assistant" || a?.id !== l)
317
444
  break;
318
- const a = [...s.blocks ?? []], o = a[a.length - 1], { blockType: h, data: p } = r;
319
- if (o?.type !== h || !o.isPending)
445
+ const n = [...a.blocks ?? []], c = n[n.length - 1], { blockType: h, data: u } = s;
446
+ if (c?.type !== h || !c.isPending)
320
447
  break;
321
- if (h === "text") {
322
- const f = typeof o.data?.content == "string" ? o.data.content : "", u = typeof p?.content == "string" ? p.content : "";
323
- a[a.length - 1] = { ...o, data: { ...o.data, content: f + u } };
324
- } else
325
- a[a.length - 1] = { ...o, data: { ...o.data, ...p ?? {} } };
326
- this.messages.splice(-1, 1, { ...s, blocks: a });
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 });
327
455
  break;
328
456
  }
329
457
  case "block-end": {
330
- if (s?.role !== "assistant" || s?.id !== n)
458
+ if (a?.role !== "assistant" || a?.id !== l)
331
459
  break;
332
- const a = [...s.blocks ?? []], o = a[a.length - 1];
333
- if (o?.type !== r.blockType || !o.isPending)
460
+ const n = [...a.blocks ?? []], c = n[n.length - 1];
461
+ if (c?.type !== s.blockType || !c.isPending)
334
462
  break;
335
- const h = o;
336
- a[a.length - 1] = { ...h, data: { ...h.data }, isPending: !1 }, this.messages.splice(-1, 1, { ...s, blocks: a });
463
+ const h = c;
464
+ n[n.length - 1] = { ...h, data: { ...h.data }, isPending: !1 }, this.messages.splice(-1, 1, { ...a, blocks: n });
337
465
  break;
338
466
  }
339
467
  case "completed":
340
- r.error ? (this.messages.push({
468
+ s.error ? (this.messages.push({
341
469
  role: "assistant",
342
- log: r.log,
343
- error: r.error,
344
- id: n,
470
+ log: s.log,
471
+ error: s.error,
472
+ id: l,
345
473
  interrupts: this._interruptDetails
346
- }), this._interruptDetails = []) : s?.role === "assistant" && s.id === n && this.messages.splice(-1, 1, {
347
- ...s,
348
- content: r.response,
349
- blocks: s.blocks?.map((a) => ({ ...a, isPending: !1 })) ?? [],
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 })) ?? [],
350
478
  isStreaming: !1,
351
- log: r.log
479
+ log: s.log
352
480
  }), this._isAnswering = !1, this.#e = null, this._canceling = !1;
353
481
  break;
354
482
  case "interrupt":
355
- this._interrupt = { ...r.payload, id: n }, this.arcgisInterrupt.emit(this._interrupt);
483
+ this._interrupt = { ...s.payload, id: l }, this.arcgisInterrupt.emit(this._interrupt);
356
484
  break;
357
485
  case "cancelled":
358
- s?.role === "assistant" && s.id === n ? this.messages.splice(-1, 1, {
359
- ...s,
360
- blocks: s.blocks?.filter((a) => a.type === "text" || !a.isPending) ?? [],
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) ?? [],
361
489
  isStreaming: !1,
362
- log: r.log,
363
- error: "(Stopped by user)"
364
- // TODO: use strings from t9n
490
+ log: s.log,
491
+ error: `(${this._messages.stoppedByUserLabel})`
365
492
  }) : (this.messages.push({
366
493
  role: "assistant",
367
- log: r.log,
368
- error: "(Stopped by user)",
369
- // TODO: use strings from t9n
370
- id: n,
494
+ log: s.log,
495
+ error: `(${this._messages.stoppedByUserLabel})`,
496
+ id: l,
371
497
  interrupts: this._interruptDetails
372
498
  }), this._interruptDetails = []), this._isAnswering = !1, this.#e = null, this._canceling = !1;
373
499
  break;
374
500
  }
375
501
  }
376
502
  }
377
- submitInterrupt(t) {
378
- this.arcgisInterruptSubmit.emit(t), this._interrupt && (this._interruptDetails = [...this._interruptDetails, { interrupt: this._interrupt, response: t }]), this.orchestrator?.resumeInterrupt(t), this._interrupt = null;
503
+ unregister(t) {
504
+ this.#r.delete(t), this._orchestratorController && this.#d();
379
505
  }
380
506
  load() {
381
507
  this.manager.onLifecycle(this._reset.bind(this));
382
508
  }
383
509
  loaded() {
384
510
  this.manager.onLifecycle(() => {
385
- 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);
386
- const t = x(() => !!this._interrupt && !!this.#s.value, () => {
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, () => {
387
513
  const i = this.#s.value;
388
- i.removeEventListener("arcgisSubmit", this.#a), i.removeEventListener("arcgisCancel", this.#r), i.addEventListener("arcgisSubmit", this.#a, { once: !0 }), i.addEventListener("arcgisCancel", this.#r, { once: !0 });
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 });
389
515
  }), e = this.messages.on("after-add", (i) => {
390
516
  const r = i.item;
391
517
  r.role === "assistant" && (r.error || r.content) && this.arcgisResponse.emit(r);
392
518
  });
393
519
  return queueMicrotask(() => {
394
- this.#d().then((i) => {
395
- i ? this.arcgisReady.emit() : this._error && this.arcgisError.emit(new Error(this._error));
396
- });
520
+ this.#p();
397
521
  }), () => {
398
- t.remove(), e.remove(), this.#t.value?.removeEventListener("arcgisPromptSelect", this.#p), this.#s.value?.removeEventListener("arcgisSubmit", this.#a), this.#s.value?.removeEventListener("arcgisCancel", this.#r), 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;
399
523
  };
400
524
  });
401
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
+ }
402
549
  _reset() {
403
- this._orchestratorController?.cancel(), this.#e?.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;
404
551
  }
405
552
  _renderEntryMessage() {
406
- return !this._user ? this._renderSignInNotice() : this._error ? this._renderErrorNotice() : this.entryMessage ? this.messages.length > 0 ? null : l`<calcite-notice open kind=brand closable icon width=full><div slot=message>${this.entryMessage}</div></calcite-notice>` : l`<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();
407
554
  }
408
555
  _renderSignInNotice() {
409
556
  const t = this.#i;
410
- return l`<calcite-notice slot=entry-message open kind=brand icon width=full><div slot=message>You need to sign in to use the assistant chat.</div>${t ? l`<calcite-link slot=link @click=${async () => {
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 () => {
411
558
  try {
412
- await T.getCredential(t.url), this._error = null, await this.#d(), this.arcgisReady.emit();
559
+ const e = await V.getCredential(`${t.url}/sharing`);
560
+ this._signedInUserId = e.userId, this._error = null, this.requestUpdate(), await this.#p();
413
561
  } catch (e) {
414
- console.error("Error signing in:", 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 } });
415
563
  }
416
- }} target=_blank title="Sign in to ArcGIS Online">Sign in</calcite-link>` : l`<div slot=link>No portal information available</div>`}</calcite-notice>`;
564
+ }} target=_blank title=${this._messages.signInToArcGISOnlineLabel ?? _}>${this._messages.signInLabel}</calcite-link>` : g`<div slot=link>${this._messages.noPortalInformationMessage}</div>`}</calcite-notice>`;
417
565
  }
418
566
  _renderErrorNotice() {
419
- return this._error ? l`<calcite-notice slot=entry-message open kind=brand icon width=full>${this._error === G ? l`<div slot=message>${U}</div><calcite-link slot=link .href=${W} target=_blank title="Learn about web map embeddings">Read more</calcite-link>` : l`<div slot=message>${this._error}</div>`}</calcite-notice>` : null;
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;
420
568
  }
421
569
  render() {
422
- return l`<calcite-panel .loading=${!this._orchestratorController && !this._error || this._orchestratorController?.loading} .heading=${this.heading ?? this._messages.assistantLabel} .description=${this.description} ${v(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" ? l`<arcgis-assistant-message .message=${t} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled} @arcgisSlottableRequest=${this.#g} .assistantAvatarEnabled=${this.assistantAvatarEnabled}>${t.blocks?.map((e, i) => l`<slot name=${w(t.id, i) ?? k} slot=${w(t.id, i) ?? k}><arcgis-assistant-message-block .block=${e}></arcgis-assistant-message-block></slot>`)}</arcgis-assistant-message>` : l`<arcgis-assistant-user-message .message=${t} .user=${this._user}></arcgis-assistant-user-message>`)}</slot>${this._interrupt ? l`<div slot=message-loading><div class="interrupt-waiting-message">waiting for user input...</div> // TODO: use t9n strings</div>` : l`<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 ? l`<arcgis-assistant-interrupt slot=content-bottom .type=${this._interrupt.type} .message=${this._interrupt.message} .options=${this._interrupt.options} ${v(this.#s)}></arcgis-assistant-interrupt>` : this.suggestedPrompts?.length ? l`<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._user || !!this._interrupt} ${v(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 || this._isAnswering ? "circle-stop" : "send"} @click=${() => {
423
- this.#n.value?.submitMessage();
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();
424
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>`;
425
573
  }
426
574
  }
427
- $("arcgis-assistant", Y);
575
+ x("arcgis-assistant", et);
428
576
  export {
429
- Y as ArcgisAssistant
577
+ et as ArcgisAssistant
430
578
  };