@arcgis/ai-components 5.2.0-next.104 → 5.2.0-next.106

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 (176) hide show
  1. package/dist/agent-utils/LLMAgent.js +41 -40
  2. package/dist/agent-utils/middlewares/trace.js +5 -5
  3. package/dist/agents/runtime/skill/createSkillAgent.d.ts +31 -0
  4. package/dist/agents/runtime/skill/createSkillAgent.js +262 -0
  5. package/dist/agents/runtime/skill/loadAgentSkills.d.ts +16 -0
  6. package/dist/agents/runtime/skill/types.d.ts +28 -0
  7. package/dist/agents/runtime/skill/types.js +2 -0
  8. package/dist/agents/tools/filter/setFeatureEffect/adapter.js +20 -19
  9. package/dist/agents/tools/query/getStatistics/adapter.js +4 -3
  10. package/dist/agents/tools/query/getTopFeatures/adapter.js +4 -3
  11. package/dist/agents/tools/query/queryFeatures/adapter.js +4 -3
  12. package/dist/agents/tools/shared/resolveToolArtifact.d.ts +22 -0
  13. package/dist/agents/tools/shared/resolveToolArtifact.js +20 -0
  14. package/dist/agents/tools/shared/types.d.ts +22 -0
  15. package/dist/agents/tools/shared/types.js +6 -0
  16. package/dist/cdn/23C34FEU.js +2 -0
  17. package/dist/cdn/{NZSOJ726.js → 2AMUOR7X.js} +1 -1
  18. package/dist/cdn/2OHRNRNT.js +2 -0
  19. package/dist/cdn/2OUIRKTV.js +2 -0
  20. package/dist/cdn/2S6L3P4Q.js +2 -0
  21. package/dist/cdn/{C4FEETBZ.js → 2W7LK4HA.js} +1 -1
  22. package/dist/cdn/3IOP64NG.js +2 -0
  23. package/dist/cdn/3OH35VXS.js +2 -0
  24. package/dist/cdn/{5K5ZY267.js → 3SD47V7G.js} +1 -1
  25. package/dist/cdn/{7VAQUCBU.js → 3VCPN2KW.js} +1 -1
  26. package/dist/cdn/{LLUGJKAQ.js → 3XDT7MWI.js} +1 -1
  27. package/dist/cdn/{Y7XD7ZRD.js → 4ALF2CJY.js} +1 -1
  28. package/dist/cdn/{HAEFC2SJ.js → 5LMYUEK7.js} +1 -1
  29. package/dist/cdn/{655YIKL3.js → 6GODC6RU.js} +2 -2
  30. package/dist/cdn/{7VUSIGEM.js → 6RAWG2KQ.js} +1 -1
  31. package/dist/cdn/{GCVB5VG4.js → 6YZGKVYB.js} +1 -1
  32. package/dist/cdn/{VLLZ2FFU.js → 725MBCQF.js} +1 -1
  33. package/dist/cdn/74CVYM72.js +19 -0
  34. package/dist/cdn/{CP5BVGJU.js → 7EOS4SGJ.js} +1 -1
  35. package/dist/cdn/{5WYRJMBW.js → 7QIX4PZR.js} +1 -1
  36. package/dist/cdn/7UF3WRLO.js +72 -0
  37. package/dist/cdn/A7BKHIMA.js +2 -0
  38. package/dist/cdn/AFSBL4ZP.js +2 -0
  39. package/dist/cdn/{FG647IP6.js → AGQ5ADFU.js} +1 -1
  40. package/dist/cdn/{5ZFUGNRN.js → BQYF37UD.js} +1 -1
  41. package/dist/cdn/{4RDNI22D.js → BTTBKTFM.js} +4 -4
  42. package/dist/cdn/BVSK2GWP.js +2 -0
  43. package/dist/cdn/CFAC4FN3.js +2 -0
  44. package/dist/cdn/{HDACNIZF.js → D5EKX26R.js} +1 -1
  45. package/dist/cdn/EGN5BCHV.js +2 -0
  46. package/dist/cdn/{BXQ4I5HB.js → EJJFG5DE.js} +2 -2
  47. package/dist/cdn/{ZDV4K4WG.js → EOD5PNOL.js} +1 -1
  48. package/dist/cdn/{OE3GW5LE.js → ES6D4UD6.js} +1 -1
  49. package/dist/cdn/{K2R6XVK3.js → HB72YIII.js} +1 -1
  50. package/dist/cdn/{G2EGT3CF.js → HHBNLCJP.js} +1 -1
  51. package/dist/cdn/HLN5675C.js +2 -0
  52. package/dist/cdn/IFFOSSNB.js +2 -0
  53. package/dist/cdn/IO7DYFL2.js +2 -0
  54. package/dist/cdn/{IBZ2NEAO.js → IRSJXHRN.js} +1 -1
  55. package/dist/cdn/JD2TB7H4.js +2 -0
  56. package/dist/cdn/{ANRQWYU2.js → JKKU4K4C.js} +1 -1
  57. package/dist/cdn/{FUF3NAU7.js → JMNHFKGL.js} +1 -1
  58. package/dist/cdn/{22KHSDJI.js → JWZD3D5E.js} +1 -1
  59. package/dist/cdn/{HKOGIZDQ.js → KJLLN4P4.js} +18 -18
  60. package/dist/cdn/KZ73TZOB.js +2 -0
  61. package/dist/cdn/LEO3USHH.js +2 -0
  62. package/dist/cdn/LNIMGXB4.js +2 -0
  63. package/dist/cdn/MG2W2ZF3.js +2 -0
  64. package/dist/cdn/{NYJYRCGA.js → MSXMHRI7.js} +1 -1
  65. package/dist/cdn/MXAZE2VM.js +179 -0
  66. package/dist/cdn/{EWLXNGKH.js → OL7QBAGS.js} +15 -15
  67. package/dist/cdn/OMF6ITSG.js +2 -0
  68. package/dist/cdn/{Z5W4V7RC.js → OOGADOKQ.js} +1 -1
  69. package/dist/cdn/{KITIP6J2.js → OZ2CM3J2.js} +1 -1
  70. package/dist/cdn/{6YYPVU7H.js → P4GFYBBO.js} +1 -1
  71. package/dist/cdn/PK5KI2XF.js +2 -0
  72. package/dist/cdn/PWFUEBTT.js +2 -0
  73. package/dist/cdn/{HHUQXL3R.js → PYGX4HN7.js} +1 -1
  74. package/dist/cdn/RFVZ7KCG.js +66 -0
  75. package/dist/cdn/{YEZ3AMNX.js → RLB6TK6B.js} +1 -1
  76. package/dist/cdn/{WKTQVBFJ.js → RN6WMVZX.js} +1 -1
  77. package/dist/cdn/{WJXXOKGA.js → ROQGPAR5.js} +1 -1
  78. package/dist/cdn/RSJSRETN.js +2 -0
  79. package/dist/cdn/RSR66KB4.js +2 -0
  80. package/dist/cdn/{7SRLZQVC.js → RZIXMISL.js} +1 -1
  81. package/dist/cdn/{VOKXKU7M.js → S4LELUBK.js} +9 -9
  82. package/dist/cdn/{AI6DYOKR.js → S627D4K7.js} +1 -1
  83. package/dist/cdn/SL4Y7IRG.js +2 -0
  84. package/dist/cdn/STUBN3L5.js +2 -0
  85. package/dist/cdn/T2OYKP3V.js +2 -0
  86. package/dist/cdn/{C4JT4S5E.js → TBYDZN4H.js} +1 -1
  87. package/dist/cdn/{HHFNQR6Z.js → TEI6WXW7.js} +1 -1
  88. package/dist/cdn/{WGO5SER7.js → TFRWUAB6.js} +1 -1
  89. package/dist/cdn/U3ETGDT7.js +2 -0
  90. package/dist/cdn/{KWD2ECTM.js → UAG6GDUG.js} +1 -1
  91. package/dist/cdn/UHICISBZ.js +2 -0
  92. package/dist/cdn/{NNXISHCA.js → VMZZR7MY.js} +2 -2
  93. package/dist/cdn/WW4BEFDF.js +2 -0
  94. package/dist/cdn/XGCQS3N4.js +2 -0
  95. package/dist/cdn/{R2PQVY4O.js → XKH37FLY.js} +1 -1
  96. package/dist/cdn/XQ3NBBQ3.js +2 -0
  97. package/dist/cdn/{7BCQMK6D.js → XTCLJEID.js} +1 -1
  98. package/dist/cdn/{J6SZIQJA.js → Y7LGFSHO.js} +1 -1
  99. package/dist/cdn/ZFOG3KXV.js +2 -0
  100. package/dist/cdn/ZZZB3GES.js +14 -0
  101. package/dist/cdn/agent-utils/index.js +1 -1
  102. package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +1 -1
  103. package/dist/cdn/agent-utils/middlewares/middleware.js +1 -1
  104. package/dist/cdn/agent-utils/middlewares/trace.js +1 -1
  105. package/dist/cdn/index.js +1 -1
  106. package/dist/chunks/SKILL.js +5 -0
  107. package/dist/chunks/SKILL2.js +5 -0
  108. package/dist/chunks/SKILL3.js +22 -0
  109. package/dist/chunks/SKILL4.js +5 -0
  110. package/dist/chunks/adapter.js +137 -140
  111. package/dist/chunks/aiFactory.js +94 -0
  112. package/dist/chunks/arcgisKnowledgeGraph.js +14 -13
  113. package/dist/chunks/baseAgentState.js +2 -2
  114. package/dist/chunks/dataExplorationAgent.js +30 -0
  115. package/dist/chunks/generateLayerDescriptions.js +181 -268
  116. package/dist/chunks/helpAgent.js +37 -0
  117. package/dist/chunks/layerStylingGraph.js +91 -76
  118. package/dist/chunks/navigationAgent.js +40 -0
  119. package/dist/chunks/orchestrator.js +13 -12
  120. package/dist/chunks/requireAgentServices.js +11 -0
  121. package/dist/chunks/resolvePointGeometryFilter.js +11 -11
  122. package/dist/components/arcgis-assistant/customElement.d.ts +23 -3
  123. package/dist/components/arcgis-assistant-data-exploration-agent/customElement.js +17 -6
  124. package/dist/components/arcgis-assistant-help-agent/customElement.js +3 -1
  125. package/dist/components/arcgis-assistant-knowledge-agent/customElement.js +1 -0
  126. package/dist/components/arcgis-assistant-layer-styling-agent/customElement.js +1 -0
  127. package/dist/components/arcgis-assistant-navigation-agent/customElement.js +18 -7
  128. package/dist/docs/api.json +1 -1
  129. package/dist/docs/docs.json +1 -1
  130. package/dist/docs/vscode.html-custom-data.json +1 -1
  131. package/dist/docs/web-types.json +1 -1
  132. package/dist/orchestrator/models/types.d.ts +1 -0
  133. package/dist/orchestrator/providers/arcgis/aiFactory.d.ts +15 -0
  134. package/dist/orchestrator/registry/agentRegistry.d.ts +33 -0
  135. package/dist/orchestrator/types/types.d.ts +17 -0
  136. package/dist/utils/index.d.ts +13 -3
  137. package/dist/utils/index.js +706 -82
  138. package/package.json +10 -6
  139. package/dist/cdn/2EY3BQQX.js +0 -2
  140. package/dist/cdn/2NDBI2VA.js +0 -156
  141. package/dist/cdn/4OGR5QKS.js +0 -2
  142. package/dist/cdn/5FL5BTTX.js +0 -66
  143. package/dist/cdn/5X7EG7D2.js +0 -2
  144. package/dist/cdn/6FCU2KJP.js +0 -2
  145. package/dist/cdn/7BJ4JKLG.js +0 -2
  146. package/dist/cdn/7HS5KX3J.js +0 -2
  147. package/dist/cdn/7UUYJTKT.js +0 -2
  148. package/dist/cdn/7V6OSTFC.js +0 -2
  149. package/dist/cdn/7VYYQ7BT.js +0 -2
  150. package/dist/cdn/ACJTJLZN.js +0 -2
  151. package/dist/cdn/AKD5UOVX.js +0 -2
  152. package/dist/cdn/C7LGDNB3.js +0 -14
  153. package/dist/cdn/CGJINV7H.js +0 -2
  154. package/dist/cdn/CJMUJXPL.js +0 -2
  155. package/dist/cdn/D2SS763Z.js +0 -2
  156. package/dist/cdn/FJO4KNOZ.js +0 -2
  157. package/dist/cdn/G3SF6U2U.js +0 -2
  158. package/dist/cdn/G6CR7JVM.js +0 -22
  159. package/dist/cdn/GL7BPKBN.js +0 -2
  160. package/dist/cdn/JO5ETMPS.js +0 -2
  161. package/dist/cdn/PUHRBGKB.js +0 -2
  162. package/dist/cdn/Q57QWN5W.js +0 -2
  163. package/dist/cdn/QUKNPVAF.js +0 -2
  164. package/dist/cdn/RBE55SWR.js +0 -2
  165. package/dist/cdn/SWH6ZHD4.js +0 -18
  166. package/dist/cdn/SZ2QSSB3.js +0 -2
  167. package/dist/cdn/T4RIGOXB.js +0 -2
  168. package/dist/cdn/W4JQDITQ.js +0 -36
  169. package/dist/cdn/XX6GHMNR.js +0 -2
  170. package/dist/cdn/YLVJA4ZE.js +0 -2
  171. package/dist/cdn/ZOEMBHRF.js +0 -2
  172. package/dist/cdn/ZRVZMPFN.js +0 -2
  173. package/dist/chunks/dataExplorationGraph.js +0 -254
  174. package/dist/chunks/helpGraph.js +0 -133
  175. package/dist/chunks/navigationGraph.js +0 -290
  176. package/dist/chunks/toolCallResponse.js +0 -33
@@ -1,14 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import c from"./SZ2QSSB3.js";import b from"./2NDBI2VA.js";import{a as g}from"./FDOMMK2M.js";import a from"./HKOGIZDQ.js";import{a as s}from"./7VAQUCBU.js";import{Ya as S,a as u,b as p,s as f}from"./EWLXNGKH.js";export default $arcgis.t(([,,,,,,{p:x},{a:w,c:E,e:I,j:v,k:L,l:F,m:$,n:C,o:N,p:R,q:T,r:b,s:A,t:_,u:h},q])=>{var V=.7,z=10,D=async(a,t)=>{try{await s({text:"Similarity search to find fields"},t);let e=g(t,"fieldSearch"),n=g(t,"layersAndFieldsRegistry"),o=g(t,"embeddingCache"),r=await e.searchFields({text:a.agentExecutionContext.assignedTask,layerIds:a.vectorSearchLayerIds,minScore:V,topResults:z,embeddingCache:o}),m=r.map(({layerId:d,results:c})=>{let y=c.map(i=>` - ${i.name} (${i.score.toFixed(2)})`).join(`
3
- `);return`${n.get(d)?.layerItem.name??d}:
4
- ${y}`}).join(`
5
- `),l;return r.length>0?l=`Vector search completed. Matching layers and fields with scores:
6
- ${m}`:l=`No vector search results found for score over ${V}.`,await s({text:l},t),{...a,vectorSearchFieldResults:r}}catch(e){throw await s({text:`Error during vector search: ${e instanceof Error?e.message:String(e)}`},t),new Error(`Vector search failed: ${e instanceof Error?e.message:String(e)}`)}},G=.7,H=async(a,t)=>{try{await s({text:`Similarity search to find layers: ${a.agentExecutionContext.assignedTask}`},t);let e=g(t,"layerSearch"),n=g(t,"layersAndFieldsRegistry"),o=await e.searchLayers({text:a.agentExecutionContext.assignedTask,minScore:G}),r=o.map(d=>d.id),m=o.map(({id:d,score:c})=>`${n.get(d)?.layerItem.name??d} (${c.toFixed(2)})`).join(`
7
- `),l;return r.length>0?l=`Vector search completed. Matching layers with scores:
8
- ${m}`:l="Vector search completed. No matching layers found.",await s({text:l},t),{...a,vectorSearchLayerIds:r}}catch(e){throw await s({text:`Error during vector search: ${e instanceof Error?e.message:String(e)}`},t),new Error(`Vector search failed: ${e instanceof Error?e.message:String(e)}`)}},k=[v,L,F,$,C,N,R,T,b,A,_],M=(a,t=3)=>{let e=a.map((o,r)=>o.type==="human"?r:-1).filter(o=>o!==-1);if(e.length===0)return[];let n=e.length>t?e[e.length-t]:e[0];return a.slice(n)},P=async(a,t)=>{await s({text:"Requesting LLM for layer query results"},t);let e=await E("navigation_intent_prompt");if(!t?.configurable)throw new Error("config.configurable is required for layer query tools");let n={layerFieldInfo:a.layerFieldInfo},o=await x({promptText:e,modelTier:"advanced",config:t,messages:M(a.agentExecutionContext.messages),inputVariables:n,tools:k});return await q(o,t),{...a,agentExecutionContext:{...a.agentExecutionContext,messages:[...a.agentExecutionContext.messages,o]}}};async function B(a,t){let e=await new w(k,{handleToolErrors:!1}).invoke({messages:M(a.agentExecutionContext.messages)},t),n=e.messages.map(r=>r.text).join(`
9
- `);await s({text:`Finished executing layer filter tool: ${n}`},t);let o=e.messages.map(r=>r.text).join(`
10
- `);return{...a,outputMessage:o}}var U=async(a,t)=>(await s({text:"Exiting Layer Styling agent"},t),a),J=async(a,t)=>{try{await s({text:"Populating layer and field info"},t);let e=[];for(let n of a.vectorSearchFieldResults){let o=function(y){let i=l.get(y)?.layerItem;return i?[i.name&&`Name: ${i.name}`,i.title&&`Title: ${i.title}`,i.description&&`Description: ${i.description}`].filter(Boolean).join(" | "):y},{layerId:r,results:m}=n,l=g(t,"layersAndFieldsRegistry"),d=l.get(r)?.fieldRegistry;if(!d)continue;let c=e.find(y=>y.layerId===r);c||(c={layerId:r,layerSummary:o(r),fieldInfos:[]},e.push(c));for(let y of m){let i=d.get(y.name);i&&c.fieldInfos.push(i)}}return await s({text:"Populated layerFieldInfo"},t),{...a,layerFieldInfo:e}}catch(e){throw await s({text:"Error populating layerFieldInfo"},t),new Error(`Error populating layerFieldInfo: ${e instanceof Error?e.message:String(e)}`)}},K=(a,t)=>{let e=a.vectorSearchLayerIds??[];if(e.length<=1)return{...a,selectedLayerId:a.vectorSearchLayerIds[0]};let{hitlResponse:n}=t.configurable;if(n?.agentId!==j.id||n.id!=="reviewLayerSelection"){let r={agentId:j.id,id:"reviewLayerSelection",kind:"singleSelection",message:"Choose a layer to apply the styles.",metadata:[...e]};throw new f(r)}let o=null;return Array.isArray(n.payload)&&n.payload.length>0&&(o=n.payload[0]),{...a,selectedLayerId:o??a.vectorSearchLayerIds[0]}},O=(a,t)=>I(["layerSearch","fieldSearch","layersAndFieldsRegistry"],"Layer Styling Agent")(a,t),Q=()=>new S(h).addNode("requireLayerStylingServices",O).addNode("vectorSearchLayers",H).addNode("layerSelectionHITL",K).addNode("vectorSearchFields",D).addNode("populateLayerFieldInfo",J).addNode("agent",P).addNode("tools",B).addNode("earlyExit",U).addEdge(u,"requireLayerStylingServices").addEdge("requireLayerStylingServices","vectorSearchLayers").addConditionalEdges("layerSelectionHITL",a=>a.vectorSearchLayerIds.length?"vectorSearchFields":"earlyExit").addConditionalEdges("vectorSearchFields",a=>a.vectorSearchFieldResults.length?"populateLayerFieldInfo":"earlyExit").addEdge("populateLayerFieldInfo","agent").addEdge("agent","tools").addEdge("tools",p).addEdge("earlyExit",p),W=String.raw`- **layerStyling** — User wants to change how features are drawn or styled on the map based on their data, such as applying color, size, transparency, symbols, or charts according to field values.
11
- _Example: “Color points by sales amount”_
12
- _Example: “Show population density with a color gradient”_
13
- _Example: “Create a relationship map between height and depth”_
14
- _Example: “Vary circle sizes according to population”_`,j={id:"layerStyling",name:"Layer Styling Agent",description:W,createGraph:Q,workspace:h};return j},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer",a,b,c)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import w from"./4RDNI22D.js";import v from"./C7LGDNB3.js";import t from"./W4JQDITQ.js";import s from"./SWH6ZHD4.js";import r from"./G6CR7JVM.js";import q from"./SZ2QSSB3.js";import p from"./2NDBI2VA.js";import o from"./KITIP6J2.js";import"./Z5W4V7RC.js";import n from"./RHYNE5OE.js";import m from"./KWD2ECTM.js";import l from"./NNXISHCA.js";import k from"./5K5ZY267.js";import j from"./655YIKL3.js";import i from"./CCC6LBMY.js";import"./34O57OGV.js";import"./7SRLZQVC.js";import"./FDOMMK2M.js";import f from"./C4JT4S5E.js";import"./Y7XD7ZRD.js";import"./VLLZ2FFU.js";import e from"./5ZFUGNRN.js";import"./LLUGJKAQ.js";import"./WKTQVBFJ.js";import"./K2R6XVK3.js";import d from"./BXQ4I5HB.js";import c from"./HKOGIZDQ.js";import{e as g,f as h}from"./G2EGT3CF.js";import"./5WYRJMBW.js";import"./YEZ3AMNX.js";import b from"./22KHSDJI.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import"./R74ZHFA6.js";import{a as y,b as u}from"./7VAQUCBU.js";import"./VOKXKU7M.js";import"./EWLXNGKH.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([C,I,,,{d:w,g:v,h:A,i:b,j:S,k:d,l:f,m:M,n:E,o:P,p:T,q:x,r:D},{a:p,b:V},,,,,,,,,,,,W,R,O,L,k])=>{var U=async e=>{let a=e.allLayers.toArray(),o=[],r=new Map;for(let t of a)if(t instanceof C){let i=(async()=>{let n=await x(t),s=await D(t,n);r.set(t.id,{layerItem:s,fieldRegistry:n})})();o.push(i)}return await Promise.all(o),r},q=async e=>{await I.whenOnce(()=>e.ready);let a=await U(e.map),{layers:o}=await z(a),r={schemaVersion:v,modified:Date.now(),embeddings:{modelProvider:b,model:S,dimensions:A,templates:{layer:d,field:f}},layers:o},t=M.safeParse(r);if(!t.success)throw console.error("Schema Mismatch:",t.error.format()),new Error("Webmap embedding generation failed validation.");return t.data},z=async e=>{let a=[],o=[];for(let[i,{fieldRegistry:n,layerItem:s}]of e.entries()){let l=H(d,{name:s.name,title:s.title,description:s.description});a.push(l);let m={id:i,name:s.name??"",title:s.title,description:s.description,vector:[],fields:[]};for(let[,c]of n.entries()){let N=H(f,{name:c.name,alias:c.alias,description:c.description});a.push(N),m.fields.push({name:c.name,alias:c.alias,description:c.description,vector:[]})}o.push(m)}let r=await p(a),t=0;return{layers:o.map(i=>(i.vector=r[t++],i.fields.forEach(n=>{n.vector=r[t++]}),i))}},H=(e,a)=>e.replace(/\{(\w+)\}/gu,(o,r)=>a[r]??""),F=(e,a)=>{if(e.length!==a.length)throw new Error("Vectors must be the same length");let o=0,r=0,t=0;for(let s=0;s<e.length;++s){let l=e[s],m=a[s];o+=l*m,r+=l*l,t+=m*m}let i=Math.sqrt(r*t);if(i===0)return 0;let n=o/i;return Math.max(-1,Math.min(1,n))},ee=E,ae=P,te=T,se=y,re=p,oe=F,ie=O,ne=L,me=R,ce=W,le=k,de=q,fe=()=>g(),pe=()=>h(),ge=async(e,a)=>await u(e,a),he=async({modelTier:e="default",config:a}={})=>await w({modelTier:e,config:a});return{ArcgisKnowledgeAgent:le,DataExplorationAgent:me,HelpAgent:ce,LayerStylingAgent:ne,NavigationAgent:ie,Orchestrator:V,cosineSimilarity:oe,createAgentRuntimeState:fe,createAgentRuntimeStateWithSharedState:pe,createChatModel:he,createWebmapEmbeddings:de,getEmbeddings:re,invokeStructuredPrompt:ae,invokeTextPrompt:ee,invokeToolPrompt:te,sendTraceMessage:se,sendUXSuggestion:ge}},"layers/FeatureLayer","core/reactiveUtils",a,b,c,d,e,f,i,j,k,l,m,n,o,p,q,r,s,t,v,w)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./7SRLZQVC.js";import"./FDOMMK2M.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as listLayerFieldsTool};
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import s from"./SWH6ZHD4.js";import q from"./SZ2QSSB3.js";import p from"./2NDBI2VA.js";import{a as o,c as a}from"./V6HOUZPZ.js";import n from"./KITIP6J2.js";import"./Z5W4V7RC.js";import m from"./RHYNE5OE.js";import l from"./KWD2ECTM.js";import k from"./NNXISHCA.js";import j from"./5K5ZY267.js";import h from"./655YIKL3.js";import g from"./CCC6LBMY.js";import"./34O57OGV.js";import"./7SRLZQVC.js";import"./FDOMMK2M.js";import f from"./C4JT4S5E.js";import"./Y7XD7ZRD.js";import"./VLLZ2FFU.js";import e from"./5ZFUGNRN.js";import"./LLUGJKAQ.js";import"./WKTQVBFJ.js";import"./K2R6XVK3.js";import"./3UEKINYC.js";import"./RLEHNAIA.js";import d from"./HKOGIZDQ.js";import"./G2EGT3CF.js";import"./5WYRJMBW.js";import"./YEZ3AMNX.js";import c from"./22KHSDJI.js";import b from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import{v as i,z as r}from"./COH3QXWG.js";import"./R74ZHFA6.js";import"./7VAQUCBU.js";import"./VOKXKU7M.js";import"./EWLXNGKH.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,,,,,,,,,,,,,,,,,,,,,s])=>{var t=class extends i{constructor(){super(...arguments),this.agent=s}static{this.properties={referenceElement:1}}#t;#i;getContext(){if(!this.#t)throw new Error("arcgis-assistant-data-exploration-agent requires a mapView");return{mapView:this.#t}}load(){this.#t=o(this,"arcgis-assistant-data-exploration-agent"),this.#i=a(this)}disconnectedCallback(){this.#i?.unregister(this.agent.id),super.disconnectedCallback()}};r("arcgis-assistant-data-exploration-agent",t);return t},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer","rest/knowledgeGraphService",b,c,d,e,f,g,h,j,k,l,m,n,p,q,s)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import b from"./22KHSDJI.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,a])=>{return a},a,b)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import c from"./655YIKL3.js";import b from"./CCC6LBMY.js";import"./34O57OGV.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,,a])=>{return a},a,b,c)
@@ -1,22 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import d from"./SZ2QSSB3.js";import b from"./2NDBI2VA.js";import{a as h}from"./7SRLZQVC.js";import{a as m}from"./FDOMMK2M.js";import a from"./HKOGIZDQ.js";import{a as p}from"./7VAQUCBU.js";import{Ya as c,a as u,b as n}from"./EWLXNGKH.js";export default $arcgis.t(([,,,,,,{p:g},{a:f,c:y,d:x,e:E,v:d},S])=>{var _=[h],v=e=>{if(!e||e.size===0)return"No layers available in this map.";let t=Array.from(e.values()).map(({layerItem:r,fieldRegistry:s},o)=>{let a=Array.from(s.values()).map(i=>i.name).slice(0,10).join(", "),l=s.size>10?` (and ${s.size-10} more)`:"";return`${o+1}. "${r.title}". Description: ${r.description}
3
- Fields: ${a}${l}`}).join(`
4
-
5
- `);return`This map contains ${e.size} layer(s):
6
-
7
- ${t}`},w=e=>{let t=e?.list()??[];return t.length?t.map(r=>`- ${r.agent.name}: ${r.agent.description}`).join(`
8
- `):"No agents currently available."};async function $(e,t){let r=await y("help_prompt"),s=m(t,"layersAndFieldsRegistry"),o=m(t,"agentRegistry");try{let a=await g({promptText:r,modelTier:"default",config:t,tools:_,inputVariables:{layerSummary:v(s),agents:w(o),assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps}});await S(a,t);let l=(a.tool_calls?.length??0)>0,i=typeof a.text=="string"?a.text.trim():"";return{...e,helpInternalState:{...e.helpInternalState,toolCallMessage:l?a:void 0},outputMessage:l?e.outputMessage:i,summary:l?"Prepared help tool call from assigned task.":"Provided map-related help based on the assigned task.",status:l?e.status:"success"}}catch(a){let l=a instanceof Error?a.message:String(a);return{...e,outputMessage:`Error invoking help agent: ${l}`,summary:"Help agent execution failed.",status:"failed"}}}var b=(e,t)=>E(["agentRegistry"],"Help Agent")(e,t);async function k(e,t){let r=new f(_,{handleToolErrors:!1});try{let s=e.helpInternalState.toolCallMessage;if(!s)throw new Error("helpToolCalling: missing helpInternalState.toolCallMessage");let o=(await r.invoke({messages:[s]},t)).messages.map(a=>a.text).join(`
9
- `);return await p({text:`Finished executing help tool: ${o}`},t),{...e,outputMessage:o,status:"success",summary:o?x(o):"Help executed.",helpInternalState:{...e.helpInternalState,toolCallMessage:void 0}}}catch(s){let o=s instanceof Error?s.message:String(s);return await p({text:`Help tool execution failed: ${o}`},t),{...e,outputMessage:`Help tool execution failed: ${o}`,status:"failed",summary:`Help tool execution failed: ${o}`,helpInternalState:{...e.helpInternalState,toolCallMessage:void 0}}}}var C=()=>new c(d).addNode("requireHelpServices",b).addNode("agent",$).addNode("tools",k).addEdge(u,"requireHelpServices").addEdge("requireHelpServices","agent").addConditionalEdges("agent",e=>e.helpInternalState.toolCallMessage?"tools":n).addEdge("tools",n),H=String.raw`- **help** — Enables users to ask questions about the map, layers, fields, and it's capabilities.
10
-
11
- _Example: “Tell me about this map”_
12
- _Example: “List all layers in this map”_
13
- _Example: “List fields in protected areas layer”_
14
- _Example: “What agents are available to me?”_
15
- _Example: “What can you do?”_
16
- _Example: “What can I ask”_
17
-
18
- If the user asks unrelated queries like "What are the vowels in English alphabet" or "How to cook", call this agent so it can politely refuse and redirect to map-related questions.
19
-
20
- IF the user asks map related queries, but those that are not performed by any of the agents, call this agent so we can respond that the requested action is not supported.
21
- _Example: "Create a chart"_
22
- _Example: "Create a table"_`,K={id:"help",name:"Help Agent",description:H,createGraph:C,workspace:d};return K},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer",a,b,d)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import q from"./C7LGDNB3.js";import p from"./SZ2QSSB3.js";import n from"./2NDBI2VA.js";import{a as o,c as m}from"./V6HOUZPZ.js";import l from"./KITIP6J2.js";import"./Z5W4V7RC.js";import k from"./KWD2ECTM.js";import j from"./NNXISHCA.js";import h from"./5K5ZY267.js";import g from"./655YIKL3.js";import f from"./CCC6LBMY.js";import"./34O57OGV.js";import"./7SRLZQVC.js";import"./FDOMMK2M.js";import e from"./C4JT4S5E.js";import"./Y7XD7ZRD.js";import"./VLLZ2FFU.js";import d from"./5ZFUGNRN.js";import"./LLUGJKAQ.js";import"./WKTQVBFJ.js";import"./K2R6XVK3.js";import"./3UEKINYC.js";import"./RLEHNAIA.js";import c from"./HKOGIZDQ.js";import"./G2EGT3CF.js";import"./5WYRJMBW.js";import"./YEZ3AMNX.js";import b from"./22KHSDJI.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import{v as i,z as r}from"./COH3QXWG.js";import"./R74ZHFA6.js";import"./7VAQUCBU.js";import"./VOKXKU7M.js";import"./EWLXNGKH.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,,,,,,,,,,,,,,,,,,,,,,,p])=>{var t=class extends i{constructor(){super(...arguments),this.agent=p}static{this.properties={referenceElement:1}}#t;#i;getContext(){if(!this.#t)throw new Error("arcgis-assistant-layer-styling-agent requires a mapView");return{mapView:this.#t}}load(){this.#t=o(this,"arcgis-assistant-layer-styling-agent"),this.#i=m(this)}disconnectedCallback(){this.#i?.unregister(this.agent.id),super.disconnectedCallback()}};r("arcgis-assistant-layer-styling-agent",t);return t},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer","intl","smartMapping/statistics/summaryStatistics","smartMapping/statistics/uniqueValues","rest/knowledgeGraphService",a,b,c,d,e,f,g,h,j,k,l,n,p,q)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./LLUGJKAQ.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as goToHomeExtentTool};
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./Z5W4V7RC.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as goToZoomTool};
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./WKTQVBFJ.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as goToLayerTool};
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import a from"./C4JT4S5E.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([a])=>{return a},a)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./5WYRJMBW.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as clearFiltersTool};
@@ -1,18 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import f from"./SZ2QSSB3.js";import e from"./2NDBI2VA.js";import d from"./RHYNE5OE.js";import c from"./CCC6LBMY.js";import{a as g}from"./FDOMMK2M.js";import a from"./HKOGIZDQ.js";import{a as b}from"./ONQ6JSBJ.js";import{a as s}from"./7VAQUCBU.js";import{Ya as R,a as q,b as p}from"./EWLXNGKH.js";import{ea as M}from"./AI6DYOKR.js";export default $arcgis.t(([,,,,,,{n:L,p:y},{a:x},F,{a:_,c:f,d:E,e:C,f:w,g:k,h:S,i:N},v])=>{var I=async(e,t)=>(await s({text:"Exiting Data Exploration agent"},t),e),z=async(e,t)=>{await s({text:"Requesting LLM for layer filter results"},t);let a=await f("data_explore_filter_prompt");if(!t?.configurable)throw new Error("config.configurable is required for layer filter tools");let{userTimezone:l,userTimezoneOffset:o}=x(),i={layerFieldInfo:e.layerFieldInfo,userTimezone:l,userTimezoneOffset:o,queryResponse:e.queryResponse,assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps},n=await y({promptText:a,modelTier:"default",config:t,messages:e.dataExplorationMessages,inputVariables:i,tools:S}),r=[...e.dataExplorationMessages,n];if(!((n.tool_calls?.length??0)>0))return await s({text:"LLM determined no filter changes needed"},t),{...e,dataExplorationMessages:r};let d=r,c=n.text;return await v(n,t),{...e,dataExplorationMessages:d,outputMessage:c}},D=async(e,t)=>{await s({text:"Requesting LLM for layer query results"},t);let a=await f("data_explore_query_prompt");if(!t?.configurable)throw new Error("config.configurable is required for layer query tools");let{userTimezone:l,userTimezoneOffset:o}=x(),i=e.agentExecutionContext.sharedState,n=i.lastNavigatedFeatures?.value,r=i.lastResolvedLocation?.value,d="none";if(n!=null)try{d=JSON.stringify(n)}catch{d="none"}let c="none";if(r!=null)try{c=JSON.stringify({address:r.address,location:r.location})}catch{c="none"}let u={layerFieldInfo:e.layerFieldInfo,userTimezone:l,userTimezoneOffset:o,assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps,lastNavigatedFeatures:d,lastResolvedLocation:c},m=await y({promptText:a,modelTier:"default",config:t,messages:e.dataExplorationMessages,inputVariables:u,tools:k}),T=(m.tool_calls?.length??0)>0,h=m.text;return await v(m,t),{...e,dataExplorationMessages:[...e.dataExplorationMessages,m],...T?{}:{outputMessage:h},status:"success",summary:h&&!T?E(h):"Query planning completed."}},V=async(e,t)=>{try{await s({text:"Requesting LLM for summary on query results"},t);let a=await f("summarize_query_response_prompt"),l={queryResponse:e.queryResponse,assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps},o=await L({promptText:a,modelTier:"fast",config:t,messages:e.dataExplorationMessages,inputVariables:l}),i=typeof o=="string"?o:o.content,n=new M(i);await s({text:`Received response from LLM: ${i}`},t);let r=i;return{...e,outputMessage:r,status:"success",summary:r?E(r):"Summary generated.",dataExplorationMessages:[...e.dataExplorationMessages,n]}}catch(a){throw await s({text:"Error during filter LLM request"},t),new Error(`Error during filter LLM request: ${a instanceof Error?a.message:String(a)}`)}};async function O(e,t){if((e.queryResponse??[]).some(l=>{let o=l.details;return typeof o=="object"&&o!==null&&"error"in o}))return await s({text:"Skipping layer filter tool because query response contains an error."},t),{...e};let a=await new _(S,{handleToolErrors:!1}).invoke({messages:e.dataExplorationMessages},t);return await s({text:`Finished executing layer filter tool: ${a.messages.map(l=>l.content).join(", ")}`},t),{...e}}var $=/\b(average|avg|mean|median|max(?:imum)?|min(?:imum)?|sum|total|count|std(?:dev|\s*deviation)|variance|null\s*count|missing\s*values?|range)\b/iu;function j(e,t){return $.test(e)||$.test(t)}var Q=async(e,t)=>{try{await s({text:"Preparing field information for vector search results"},t);let a=g(t,"layersAndFieldsRegistry"),{mapView:l}=b(t,["mapView"]),{assignedTask:o,userRequest:i}=e.agentExecutionContext,n=j(o,i),{layerFieldInfo:r,didFetchStatistics:d,fieldStatisticsFetchStatus:c}=await F(e.vectorSearchFieldResults,a,l,n);d?await s({text:"Statistics fetched"},t):await s({text:"Statistics skipped"},t);for(let u of c)await s({text:` - ${u.fieldName} - stats ${u.didFetchStatistics?"fetched":"skipped"}`},t);return await s({text:"Field information prepared"},t),{...e,layerFieldInfo:r}}catch(a){throw await s({text:"Error during fetching statistics"},t),new Error(`Error during fetching statistics: ${a instanceof Error?a.message:String(a)}`)}},A=.7,G=10,W=async(e,t)=>{try{await s({text:"Similarity search to find fields"},t);let a=g(t,"fieldSearch"),l=g(t,"layersAndFieldsRegistry"),o=g(t,"embeddingCache"),i=await a.searchFields({text:e.agentExecutionContext.assignedTask,layerIds:e.vectorSearchLayerIds,minScore:A,topResults:G,embeddingCache:o}),n=i.map(({layerId:d,results:c})=>{let u=c.map(m=>` - ${m.name} (${m.score.toFixed(2)})`).join(`
3
- `);return`${l.get(d)?.layerItem.name??d}:
4
- ${u}`}).join(`
5
- `),r;return i.length>0?r=`Vector search completed. Matching layers and fields with scores:
6
- ${n}`:r=`No vector search results found for score over ${A}.`,await s({text:r},t),{...e,vectorSearchFieldResults:i}}catch(a){throw await s({text:`Error during vector search: ${a instanceof Error?a.message:String(a)}`},t),new Error(`Vector search failed: ${a instanceof Error?a.message:String(a)}`)}},H=.7,J=async(e,t)=>{try{await s({text:`Similarity search to find layers: ${e.agentExecutionContext.assignedTask}`},t);let a=g(t,"layerSearch"),l=g(t,"layersAndFieldsRegistry"),o=g(t,"embeddingCache"),i=await a.searchLayers({text:e.agentExecutionContext.assignedTask,minScore:H,embeddingCache:o}),n=i.map(c=>c.id),r=i.map(({id:c,score:u})=>`${l.get(c)?.layerItem.name??c} (${u.toFixed(2)})`).join(`
7
- `),d;return n.length>0?d=`Vector search completed. Matching layers with scores:
8
- ${r}`:d="Vector search completed. No matching layers found.",await s({text:d},t),{...e,vectorSearchLayerIds:n}}catch(a){throw await s({text:`Error during vector search: ${a instanceof Error?a.message:String(a)}`},t),new Error(`Vector search failed: ${a instanceof Error?a.message:String(a)}`)}},B=(e,t)=>C(["layerSearch","fieldSearch","layersAndFieldsRegistry"],"Data Exploration Agent")(e,t),P=()=>new R(w).addNode("requireDataExplorationServices",B).addNode("vectorSearchLayers",J).addNode("vectorSearchFields",W).addNode("fieldStatistics",Q).addNode("queryAgent",D).addNode("queryTools",N).addNode("summarizeQueryResponseLLM",V).addNode("filterAgent",z).addNode("filterTools",O).addNode("earlyExit",I).addEdge(q,"requireDataExplorationServices").addEdge("requireDataExplorationServices","vectorSearchLayers").addConditionalEdges("vectorSearchLayers",e=>e.vectorSearchLayerIds.length?"vectorSearchFields":"earlyExit").addConditionalEdges("vectorSearchFields",e=>e.vectorSearchFieldResults.length?"fieldStatistics":"earlyExit").addEdge("fieldStatistics","queryAgent").addConditionalEdges("queryAgent",e=>(e.dataExplorationMessages[e.dataExplorationMessages.length-1]?.tool_calls?.length??0)>0?"queryTools":"filterAgent").addConditionalEdges("queryTools",e=>e.queryResponse.length?"summarizeQueryResponseLLM":"filterAgent").addEdge("summarizeQueryResponseLLM","filterAgent").addConditionalEdges("filterAgent",e=>(e.dataExplorationMessages[e.dataExplorationMessages.length-1]?.tool_calls?.length??0)>0?"filterTools":p).addEdge("filterTools",p).addEdge("earlyExit",p),U=String.raw`- **data exploration** — User is asking about the feature layer’s data (e.g. counts, summaries, statistics, field values), either for all features, a subset based on a condition, or for a subset based on the current view. And/Or user wants to include or exclude features based on field values, or visually style features differently (e.g., highlight or deemphasize them).
9
- The Data Exploration Agent will automatically zoom to the affected features for action taken by this agent. In this case, no need to call navigation tool separately.
10
- _Example: “Only show stations where Brand is Shell”_
11
- _Example: “Make Shell stations stand out on the map”_
12
- _Example: “Gray out all stations that aren’t Shell”_
13
- This also includes questions that ask which feature meets a given condition or where a particular feature in the data is located (e.g., “Where is the spring with the highest elevation?”). However, this agent does not handle addresses.
14
- _Example: “How many features are there?”_
15
- _Example: “What’s the average population?”_
16
- _Example: “Which values are in the status field?”_
17
-
18
- This agent does NOT handle help/metadata requests such as listing available layers, listing field names/columns/attributes for a layer, or capability guidance.`,he={id:"dataExploration",name:"Data Exploration Agent",description:U,createGraph:P,workspace:w};return he},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer",a,c,d,e,f)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a as t}from"./7VAQUCBU.js";export default $arcgis.t(([])=>{var d=async(o,i)=>{let r=o.tool_calls??[];if(r.length===0){await t({text:`LLM did not request any tool calls: ${String(o?.content)}`},i);return}await Promise.all(r.map(async a=>await t({text:`LLM invoked ${a.name} tool with arguments: ${JSON.stringify(a.args,null,2)}`},i)))};return d},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer")
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{a}from"./YEZ3AMNX.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export{a as resetMapTool};
@@ -1,36 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import f from"./SZ2QSSB3.js";import e from"./2NDBI2VA.js";import d from"./KITIP6J2.js";import{a as M}from"./Z5W4V7RC.js";import{a as u}from"./FDOMMK2M.js";import c from"./C4JT4S5E.js";import{a as F}from"./Y7XD7ZRD.js";import{a as C}from"./VLLZ2FFU.js";import b from"./5ZFUGNRN.js";import{a as L}from"./LLUGJKAQ.js";import{a as _}from"./WKTQVBFJ.js";import{a as I}from"./K2R6XVK3.js";import a from"./HKOGIZDQ.js";import{a as x}from"./ONQ6JSBJ.js";import{a as g}from"./7VAQUCBU.js";import{Ya as E,a as w,b as k}from"./EWLXNGKH.js";import{a as y}from"./VXFQANGJ.js";export default $arcgis.t(([,,,,,,{o:$,p:N},R,b,A,{a:Z,b:v,c:S,d:q,e:V},j])=>{var T=[b,F,C,R,L,_,I,A,M];async function B(e,t){let a=await S("navigation_tool_prompt"),{mapView:n}=x(t,["mapView"]),m=n.map.bookmarks?.map(p=>p.name).filter(Boolean)??[],s=e.vectorSearchLayerResults?.length>0?e.vectorSearchLayerResults.map((p,G)=>`${G+1}. layerId=${p.id} | title=${p.title??""} | name=${p.name??""} | score=${p.score.toFixed(2)}`).join(`
3
- `):"",c=e.vectorSearchFieldResults?.length>0?JSON.stringify(e.vectorSearchFieldResults,null,2):"",r=e.intent==="goToBookmark"&&m.length?`Available bookmarks:
4
- ${m.map(p=>`- ${p}`).join(`
5
- `)}`:"",i=(e.intent==="goToLayer"||e.intent==="goToFeatures")&&e.vectorSearchLayerResults?.length?`Candidate layers:
6
- ${s}`:"",l=e.intent==="goToFeatures"&&e.vectorSearchFieldResults?.length?`Candidate fields:
7
- ${c}`:"",h={intent:e.intent,bookmarksSection:r,layersSection:i,fieldsSection:l,currentZoom:n.zoom,assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps},o=await N({promptText:a,modelTier:"fast",config:t,inputVariables:h,tools:T});await j(o,t);let d=(o.tool_calls?.length??0)>0,f=typeof o.text=="string"?o.text.trim():"",z=f.length>0;return{...e,navigationInternalState:{...e.navigationInternalState,toolCallMessage:d?o:void 0},outputMessage:d?e.outputMessage:f,status:d?e.status:z?"success":"failed"}}var D=e=>{let t=typeof e=="string"?e:String(e);try{let a=JSON.parse(t);if(a&&typeof a=="object"&&typeof a.text=="string")return a}catch{console.warn("Failed to parse tool response as JSON:",t)}return{text:t}};async function J(e,t){let a=new Z(T,{handleToolErrors:!1});try{let n=e.navigationInternalState.toolCallMessage;if(!n)throw new Error("navigationToolCalling: missing navigationInternalState.toolCallMessage");let{messages:m}=await a.invoke({messages:[n]},t),s="",c,r;for(let i of m){let l=D(i.content),h=i.artifact;l.text&&(s+=`${l.text}
8
- `);let o=h?.sharedStatePatch??l.sharedStatePatch;o&&(c={...c,...o}),h?.sharedResourceAdditions&&(r=[...r??[],...h.sharedResourceAdditions])}return await g({text:`Finished executing navigation tool: ${s}`},t),{...e,outputMessage:s,sharedStatePatch:c,sharedResourceAdditions:r,status:"success",summary:s?q(s):"Navigation executed.",navigationInternalState:{...e.navigationInternalState,toolCallMessage:void 0}}}catch(n){let m=n instanceof Error?n.message:String(n);return await g({text:`Navigation tool execution failed: ${m}`},t),{...e,outputMessage:`Navigation tool execution failed: ${m}`,status:"failed",summary:`Navigation tool execution failed: ${m}`,navigationInternalState:{...e.navigationInternalState,toolCallMessage:void 0}}}}async function P(e,t){let a=await S("navigation_intent_prompt"),{mapView:n}=x(t,["mapView"]),m=T.map(o=>({name:o.name,description:o.description,schema:o.schema})),s=n.map.bookmarks?.map(o=>o.name).filter(Boolean)??[],c=s.length?`Available bookmarks:
9
- ${s.map(o=>`- ${o}`).join(`
10
- `)}`:"No bookmarks are available in this map.",r={tools:m.map(({name:o,description:d,schema:f})=>`${o}: ${d}, ${JSON.stringify(f)}`).join(`
11
- `),bookmarks:c,assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps},i=y.object({intent:y.string()}),l=await $({promptText:a,config:t,inputVariables:r,schema:i,modelTier:"fast"}),h=typeof l.intent=="string"?l.intent.trim().replace(/^"|"$/gu,""):"";return{...e,intent:h||""}}var H=.7,W=async(e,t)=>{try{await g({text:`Similarity search to find layers: ${e.agentExecutionContext.assignedTask}`},t);let a=u(t,"layerSearch"),n=u(t,"layersAndFieldsRegistry"),m=u(t,"embeddingCache"),s=(await a.searchLayers({text:e.agentExecutionContext.assignedTask,minScore:H,embeddingCache:m})).map(({id:r,score:i})=>{let l=n.get(r)?.layerItem;return{id:r,title:l?.title,name:l?.name??void 0,score:i}}),c;return s.length>0?c=`Vector search completed. Matching layers:
12
- ${s.map(r=>`- layerId=${r.id} | title=${r.title??""} | name=${r.name??""} | score=${r.score.toFixed(2)}`).join(`
13
- `)}`:c="Vector search completed. No matching layers found.",await g({text:c},t),{...e,vectorSearchLayerResults:s}}catch(a){throw await g({text:`Error during vector search layers: ${a instanceof Error?a.message:String(a)}`},t),a}},O=.7,K=10,Q=async(e,t)=>{try{await g({text:`Similarity search to find fields: ${e.agentExecutionContext.assignedTask}`},t);let a=u(t,"fieldSearch"),n=u(t,"layersAndFieldsRegistry"),m=u(t,"embeddingCache"),s=e.vectorSearchLayerResults?.map(i=>i.id)??[];if(s.length===0)return await g({text:"No candidate layers for field search"},t),e;let c=(await a.searchFields({text:e.agentExecutionContext.assignedTask,layerIds:s,minScore:O,topResults:K,embeddingCache:m})).map(({layerId:i,results:l})=>{let h=n.get(i)?.fieldRegistry;return{layerId:i,layerName:n.get(i)?.layerItem.name,results:l.map(o=>{let d=h?.get(o.name);return{name:o.name,score:o.score,type:d?.type,alias:d?.alias,description:d?.description,statistics:d?.statistics,domain:d?.domain}})}}),r;return c.length>0?r=`Vector search completed. Matching layers and fields:
14
- ${c.map(i=>`${i.layerName??i.layerId}:
15
- ${i.results.map(l=>` - ${l.name} (${l.score.toFixed(2)})`).join(`
16
- `)}`).join(`
17
- `)}`:r=`No vector search field results found for score over ${O}.`,await g({text:r},t),{...e,vectorSearchFieldResults:c}}catch(a){throw await g({text:`Error during vector search fields: ${a instanceof Error?a.message:String(a)}`},t),a}},U=(e,t)=>V(["layerSearch","layersAndFieldsRegistry"],"Navigation Agent")(e,t),X=()=>new E(v).addNode("requireNavigationServices",U).addNode("intentLLM",P).addNode("vectorSearchLayers",W).addNode("vectorSearchFields",Q).addNode("agent",B).addNode("tools",J).addEdge(w,"requireNavigationServices").addEdge("requireNavigationServices","intentLLM").addConditionalEdges("intentLLM",e=>e.intent==="goToLayer"||e.intent==="goToFeatures"?"vectorSearchLayers":"agent",{vectorSearchLayers:"vectorSearchLayers",agent:"agent"}).addConditionalEdges("vectorSearchLayers",e=>e.intent==="goToFeatures"?"vectorSearchFields":"agent",{vectorSearchFields:"vectorSearchFields",agent:"agent"}).addEdge("vectorSearchFields","agent").addEdge("agent","tools").addEdge("tools",k),Y=String.raw`- **navigation** — Enables users to interact with the map by navigating to specific locations, layers, features, or extents.
18
- This includes zooming, panning, centering, or geocoding based on user input. The agent is designed to handle explicit map movement requests. NOTE: DO NOT call this agent if the user asks "show me...", that is meant to be handled by another agent. If the query is about where a certain address is, call this agent.
19
-
20
- Supported actions:
21
- - **Zooming**: Adjust the map's zoom level (e.g., "Zoom to level 10", "Zoom in").
22
- - **Viewpoints**: Navigate to a specific center point with optional zoom or scale (e.g., "Center the map on San Francisco at zoom level 16").
23
- - **Scales**: Set the map to a specific scale (e.g., "Set the map scale to 1:50,000").
24
- - **Layers**: Zoom to the full extent of a specific layer (e.g., "Go to the water mains layer"). For the purposes of link charts, if the user requests to go to the extent of a link chart or the entities/nodes within it, that should be treated as a request to use the goToLayer tool on the link chart layer
25
- - **Features**: Zoom to features in a layer that match a filter (e.g., "Zoom to all schools in the city").
26
- - **Bookmarks**: Navigate to a predefined bookmark extent (e.g., "Go to the Downtown bookmark").
27
- - **Extents**: Reset to the initial web map extent or zoom to the full world extent (e.g., "Reset the map", "Zoom to the full world extent").
28
- - **Addresses**: Zoom to an address or place name (e.g., "Zoom to 1600 Pennsylvania Ave").
29
-
30
- _Example: “Zoom to Texas”_
31
- _Example: “Go to the water mains layer”_
32
- _Example: “Zoom to to the extent of my link chart”_
33
- _Example: “Center the map on San Francisco at scale 50000”_
34
- _Example: “Zoom to the features in the schools layer where city = 'Austin'”_
35
- _Example: “Go to the Downtown bookmark”_
36
- _Example: “Where is Mount Rainier?”_`,Ce={id:"navigation",name:"Navigation Agent",description:Y,createGraph:X,workspace:v};return Ce},"identity/IdentityManager","portal/Portal","request","config","core/reactiveUtils","layers/FeatureLayer",a,b,c,d,e,f)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import b from"./NNXISHCA.js";import"./34O57OGV.js";import"./FDOMMK2M.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,a])=>{return a},a,b)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import a from"./5ZFUGNRN.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([a])=>{return a},a)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import a from"./KITIP6J2.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([a])=>{return a},a)
@@ -1,2 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import c from"./5K5ZY267.js";import b from"./CCC6LBMY.js";import"./34O57OGV.js";import a from"./AKD5UOVX.js";import"./ONQ6JSBJ.js";import"./AI6DYOKR.js";import"./VXFQANGJ.js";import"./MWYBF3F3.js";import"./UZLQALHY.js";export default $arcgis.t(([,,a])=>{return a},a,b,c)
@@ -1,254 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { StateGraph as R, START as F, END as y } from "@langchain/langgraph/web";
3
- import { g as x, j as w, t as v, k as C, r as N, D as T, l as b } from "./adapter.js";
4
- import "@arcgis/core/identity/IdentityManager.js";
5
- import "@arcgis/core/portal/Portal.js";
6
- import "@arcgis/core/request.js";
7
- import "@arcgis/toolkit/string";
8
- import { h as M, e as A } from "./generateLayerDescriptions.js";
9
- import { AIMessage as _ } from "@langchain/core/messages";
10
- import { s } from "./index.js";
11
- import "@langchain/core/callbacks/base";
12
- import "@langchain/openai";
13
- import "@arcgis/core/config.js";
14
- import "@arcgis/core/core/reactiveUtils.js";
15
- import "@arcgis/core/layers/FeatureLayer.js";
16
- import "@langchain/core/prompts";
17
- import { h as L } from "./toolCallResponse.js";
18
- import { b as q } from "./formatFeatureAttributes.js";
19
- import { ToolNode as k } from "@langchain/langgraph/prebuilt";
20
- import { b as $ } from "./fieldStatistics.js";
21
- import { f as D } from "./fetchAgentContext.js";
22
- import { f as m } from "./fetchService.js";
23
- const I = async (t, e) => (await s({ text: "Exiting Data Exploration agent" }, e), t), z = async (t, e) => {
24
- await s({ text: "Requesting LLM for layer filter results" }, e);
25
- const l = await x("data_explore_filter_prompt");
26
- if (!e?.configurable)
27
- throw new Error("config.configurable is required for layer filter tools");
28
- const { userTimezone: d, userTimezoneOffset: r } = q(), o = {
29
- layerFieldInfo: t.layerFieldInfo,
30
- userTimezone: d,
31
- userTimezoneOffset: r,
32
- queryResponse: t.queryResponse,
33
- assignedTask: t.agentExecutionContext.assignedTask,
34
- userRequest: t.agentExecutionContext.userRequest,
35
- priorSteps: t.agentExecutionContext.priorSteps
36
- }, n = await M({
37
- promptText: l,
38
- modelTier: "default",
39
- config: e,
40
- messages: t.dataExplorationMessages,
41
- inputVariables: o,
42
- tools: w
43
- }), i = [...t.dataExplorationMessages, n];
44
- if (!((n.tool_calls?.length ?? 0) > 0))
45
- return await s({ text: "LLM determined no filter changes needed" }, e), {
46
- ...t,
47
- dataExplorationMessages: i
48
- // Don't overwrite outputMessage if query already set it
49
- };
50
- const u = i, p = n.text;
51
- return await L(n, e), { ...t, dataExplorationMessages: u, outputMessage: p };
52
- }, Q = async (t, e) => {
53
- await s({ text: "Requesting LLM for layer query results" }, e);
54
- const l = await x("data_explore_query_prompt");
55
- if (!e?.configurable)
56
- throw new Error("config.configurable is required for layer query tools");
57
- const { userTimezone: d, userTimezoneOffset: r } = q(), o = t.agentExecutionContext.sharedState, n = o.lastNavigatedFeatures?.value, i = o.lastResolvedLocation?.value;
58
- let c = "none";
59
- if (n != null)
60
- try {
61
- c = JSON.stringify(n);
62
- } catch {
63
- c = "none";
64
- }
65
- let u = "none";
66
- if (i != null)
67
- try {
68
- u = JSON.stringify({
69
- address: i.address,
70
- location: i.location
71
- });
72
- } catch {
73
- u = "none";
74
- }
75
- const p = {
76
- layerFieldInfo: t.layerFieldInfo,
77
- userTimezone: d,
78
- userTimezoneOffset: r,
79
- assignedTask: t.agentExecutionContext.assignedTask,
80
- userRequest: t.agentExecutionContext.userRequest,
81
- priorSteps: t.agentExecutionContext.priorSteps,
82
- lastNavigatedFeatures: c,
83
- lastResolvedLocation: u
84
- }, g = await M({
85
- promptText: l,
86
- modelTier: "default",
87
- config: e,
88
- messages: t.dataExplorationMessages,
89
- inputVariables: p,
90
- tools: C
91
- }), f = (g.tool_calls?.length ?? 0) > 0, h = g.text;
92
- return await L(g, e), {
93
- ...t,
94
- dataExplorationMessages: [...t.dataExplorationMessages, g],
95
- // Only emit output here when no tools are being called.
96
- // For tool-calling flows, downstream summarizer nodes provide the final user-facing message.
97
- ...f ? {} : { outputMessage: h },
98
- status: "success",
99
- summary: h && !f ? v(h) : "Query planning completed."
100
- };
101
- }, V = async (t, e) => {
102
- try {
103
- await s({ text: "Requesting LLM for summary on query results" }, e);
104
- const l = await x("summarize_query_response_prompt"), d = {
105
- queryResponse: t.queryResponse,
106
- assignedTask: t.agentExecutionContext.assignedTask,
107
- userRequest: t.agentExecutionContext.userRequest,
108
- priorSteps: t.agentExecutionContext.priorSteps
109
- }, r = await A({
110
- promptText: l,
111
- modelTier: "fast",
112
- config: e,
113
- messages: t.dataExplorationMessages,
114
- inputVariables: d
115
- }), o = typeof r == "string" ? r : r.content, n = new _(o);
116
- await s({ text: `Received response from LLM: ${o}` }, e);
117
- const i = o;
118
- return {
119
- ...t,
120
- outputMessage: i,
121
- status: "success",
122
- summary: i ? v(i) : "Summary generated.",
123
- dataExplorationMessages: [...t.dataExplorationMessages, n]
124
- };
125
- } catch (a) {
126
- throw await s({ text: "Error during filter LLM request" }, e), new Error(`Error during filter LLM request: ${a instanceof Error ? a.message : String(a)}`);
127
- }
128
- };
129
- async function O(t, e) {
130
- if ((t.queryResponse ?? []).some((r) => {
131
- const o = r.details;
132
- return typeof o == "object" && o !== null && "error" in o;
133
- }))
134
- return await s({ text: "Skipping layer filter tool because query response contains an error." }, e), { ...t };
135
- const d = await new k(w, { handleToolErrors: !1 }).invoke(
136
- {
137
- messages: t.dataExplorationMessages
138
- },
139
- e
140
- );
141
- return await s(
142
- { text: `Finished executing layer filter tool: ${d.messages.map((r) => r.content).join(", ")}` },
143
- e
144
- ), { ...t };
145
- }
146
- const E = /\b(average|avg|mean|median|max(?:imum)?|min(?:imum)?|sum|total|count|std(?:dev|\s*deviation)|variance|null\s*count|missing\s*values?|range)\b/iu;
147
- function P(t, e) {
148
- return E.test(t) || E.test(e);
149
- }
150
- const j = async (t, e) => {
151
- try {
152
- await s({ text: "Preparing field information for vector search results" }, e);
153
- const a = m(e, "layersAndFieldsRegistry"), { mapView: l } = D(e, ["mapView"]), { assignedTask: d, userRequest: r } = t.agentExecutionContext, o = P(d, r), { layerFieldInfo: n, didFetchStatistics: i, fieldStatisticsFetchStatus: c } = await $(
154
- t.vectorSearchFieldResults,
155
- a,
156
- l,
157
- o
158
- );
159
- i ? await s({ text: "Statistics fetched" }, e) : await s({ text: "Statistics skipped" }, e);
160
- for (const u of c)
161
- await s(
162
- {
163
- text: ` - ${u.fieldName} - stats ${u.didFetchStatistics ? "fetched" : "skipped"}`
164
- },
165
- e
166
- );
167
- return await s({ text: "Field information prepared" }, e), { ...t, layerFieldInfo: n };
168
- } catch (a) {
169
- throw await s({ text: "Error during fetching statistics" }, e), new Error(`Error during fetching statistics: ${a instanceof Error ? a.message : String(a)}`);
170
- }
171
- }, S = 0.7, G = 10, W = async (t, e) => {
172
- try {
173
- await s({ text: "Similarity search to find fields" }, e);
174
- const a = m(e, "fieldSearch"), l = m(e, "layersAndFieldsRegistry"), d = m(e, "embeddingCache"), r = await a.searchFields({
175
- text: t.agentExecutionContext.assignedTask,
176
- layerIds: t.vectorSearchLayerIds,
177
- minScore: S,
178
- topResults: G,
179
- embeddingCache: d
180
- }), o = r.map(({ layerId: i, results: c }) => {
181
- const u = c.map((p) => ` - ${p.name} (${p.score.toFixed(2)})`).join(`
182
- `);
183
- return `${l.get(i)?.layerItem.name ?? i}:
184
- ${u}`;
185
- }).join(`
186
- `);
187
- let n;
188
- return r.length > 0 ? n = `Vector search completed. Matching layers and fields with scores:
189
- ${o}` : n = `No vector search results found for score over ${S}.`, await s({ text: n }, e), {
190
- ...t,
191
- vectorSearchFieldResults: r
192
- };
193
- } catch (a) {
194
- throw await s(
195
- { text: `Error during vector search: ${a instanceof Error ? a.message : String(a)}` },
196
- e
197
- ), new Error(`Vector search failed: ${a instanceof Error ? a.message : String(a)}`);
198
- }
199
- }, H = 0.7, J = async (t, e) => {
200
- try {
201
- await s(
202
- { text: `Similarity search to find layers: ${t.agentExecutionContext.assignedTask}` },
203
- e
204
- );
205
- const a = m(e, "layerSearch"), l = m(e, "layersAndFieldsRegistry"), d = m(e, "embeddingCache"), r = await a.searchLayers({
206
- text: t.agentExecutionContext.assignedTask,
207
- minScore: H,
208
- embeddingCache: d
209
- }), o = r.map((c) => c.id), n = r.map(({ id: c, score: u }) => `${l.get(c)?.layerItem.name ?? c} (${u.toFixed(2)})`).join(`
210
- `);
211
- let i;
212
- return o.length > 0 ? i = `Vector search completed. Matching layers with scores:
213
- ${n}` : i = "Vector search completed. No matching layers found.", await s({ text: i }, e), {
214
- ...t,
215
- vectorSearchLayerIds: o
216
- };
217
- } catch (a) {
218
- throw await s(
219
- { text: `Error during vector search: ${a instanceof Error ? a.message : String(a)}` },
220
- e
221
- ), new Error(`Vector search failed: ${a instanceof Error ? a.message : String(a)}`);
222
- }
223
- }, U = (t, e) => N(["layerSearch", "fieldSearch", "layersAndFieldsRegistry"], "Data Exploration Agent")(
224
- t,
225
- e
226
- ), B = () => new R(T).addNode("requireDataExplorationServices", U).addNode("vectorSearchLayers", J).addNode("vectorSearchFields", W).addNode("fieldStatistics", j).addNode("queryAgent", Q).addNode("queryTools", b).addNode("summarizeQueryResponseLLM", V).addNode("filterAgent", z).addNode("filterTools", O).addNode("earlyExit", I).addEdge(F, "requireDataExplorationServices").addEdge("requireDataExplorationServices", "vectorSearchLayers").addConditionalEdges(
227
- "vectorSearchLayers",
228
- (e) => e.vectorSearchLayerIds.length ? "vectorSearchFields" : "earlyExit"
229
- ).addConditionalEdges(
230
- "vectorSearchFields",
231
- (e) => e.vectorSearchFieldResults.length ? "fieldStatistics" : "earlyExit"
232
- ).addEdge("fieldStatistics", "queryAgent").addConditionalEdges("queryAgent", (e) => (e.dataExplorationMessages[e.dataExplorationMessages.length - 1]?.tool_calls?.length ?? 0) > 0 ? "queryTools" : "filterAgent").addConditionalEdges(
233
- "queryTools",
234
- (e) => e.queryResponse.length ? "summarizeQueryResponseLLM" : "filterAgent"
235
- ).addEdge("summarizeQueryResponseLLM", "filterAgent").addConditionalEdges("filterAgent", (e) => (e.dataExplorationMessages[e.dataExplorationMessages.length - 1]?.tool_calls?.length ?? 0) > 0 ? "filterTools" : y).addEdge("filterTools", y).addEdge("earlyExit", y), K = String.raw`- **data exploration** — User is asking about the feature layer’s data (e.g. counts, summaries, statistics, field values), either for all features, a subset based on a condition, or for a subset based on the current view. And/Or user wants to include or exclude features based on field values, or visually style features differently (e.g., highlight or deemphasize them).
236
- The Data Exploration Agent will automatically zoom to the affected features for action taken by this agent. In this case, no need to call navigation tool separately.
237
- _Example: “Only show stations where Brand is Shell”_
238
- _Example: “Make Shell stations stand out on the map”_
239
- _Example: “Gray out all stations that aren’t Shell”_
240
- This also includes questions that ask which feature meets a given condition or where a particular feature in the data is located (e.g., “Where is the spring with the highest elevation?”). However, this agent does not handle addresses.
241
- _Example: “How many features are there?”_
242
- _Example: “What’s the average population?”_
243
- _Example: “Which values are in the status field?”_
244
-
245
- This agent does NOT handle help/metadata requests such as listing available layers, listing field names/columns/attributes for a layer, or capability guidance.`, fe = {
246
- id: "dataExploration",
247
- name: "Data Exploration Agent",
248
- description: K,
249
- createGraph: B,
250
- workspace: T
251
- };
252
- export {
253
- fe as D
254
- };
@@ -1,133 +0,0 @@
1
- /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { StateGraph as d, START as g, END as i } from "@langchain/langgraph/web";
3
- import { g as h, r as f, t as x, H as u } from "./adapter.js";
4
- import "@arcgis/core/identity/IdentityManager.js";
5
- import "@arcgis/core/portal/Portal.js";
6
- import "@arcgis/core/request.js";
7
- import "@arcgis/toolkit/string";
8
- import { h as y } from "./generateLayerDescriptions.js";
9
- import "@langchain/core/messages";
10
- import "@langchain/core/callbacks/dispatch/web";
11
- import "@langchain/core/callbacks/base";
12
- import "@langchain/openai";
13
- import "@arcgis/core/config.js";
14
- import "@arcgis/core/core/reactiveUtils.js";
15
- import "@arcgis/core/layers/FeatureLayer.js";
16
- import { f as p } from "./fetchService.js";
17
- import { listLayerFieldsTool as S } from "../agents/tools/help/listFields/adapter.js";
18
- import { h as E } from "./toolCallResponse.js";
19
- import { ToolNode as T } from "@langchain/langgraph/prebuilt";
20
- import { s as m } from "./index.js";
21
- import "@langchain/core/prompts";
22
- const c = [S], v = (e) => {
23
- if (!e || e.size === 0)
24
- return "No layers available in this map.";
25
- const t = Array.from(e.values()).map(({ layerItem: r, fieldRegistry: s }, l) => {
26
- const a = Array.from(s.values()).map((n) => n.name).slice(0, 10).join(", "), o = s.size > 10 ? ` (and ${s.size - 10} more)` : "";
27
- return `${l + 1}. "${r.title}". Description: ${r.description}
28
- Fields: ${a}${o}`;
29
- }).join(`
30
-
31
- `);
32
- return `This map contains ${e.size} layer(s):
33
-
34
- ${t}`;
35
- }, C = (e) => {
36
- const t = e?.list() ?? [];
37
- return t.length ? t.map((r) => `- ${r.agent.name}: ${r.agent.description}`).join(`
38
- `) : "No agents currently available.";
39
- };
40
- async function _(e, t) {
41
- const r = await h("help_prompt"), s = p(t, "layersAndFieldsRegistry"), l = p(t, "agentRegistry");
42
- try {
43
- const a = await y({
44
- promptText: r,
45
- modelTier: "default",
46
- config: t,
47
- tools: c,
48
- inputVariables: {
49
- layerSummary: v(s),
50
- agents: C(l),
51
- assignedTask: e.agentExecutionContext.assignedTask,
52
- userRequest: e.agentExecutionContext.userRequest,
53
- priorSteps: e.agentExecutionContext.priorSteps
54
- }
55
- });
56
- await E(a, t);
57
- const o = (a.tool_calls?.length ?? 0) > 0, n = typeof a.text == "string" ? a.text.trim() : "";
58
- return {
59
- ...e,
60
- helpInternalState: {
61
- ...e.helpInternalState,
62
- toolCallMessage: o ? a : void 0
63
- },
64
- outputMessage: o ? e.outputMessage : n,
65
- summary: o ? "Prepared help tool call from assigned task." : "Provided map-related help based on the assigned task.",
66
- status: o ? e.status : "success"
67
- };
68
- } catch (a) {
69
- const o = a instanceof Error ? a.message : String(a);
70
- return {
71
- ...e,
72
- outputMessage: `Error invoking help agent: ${o}`,
73
- summary: "Help agent execution failed.",
74
- status: "failed"
75
- };
76
- }
77
- }
78
- const H = (e, t) => f(["agentRegistry"], "Help Agent")(e, t);
79
- async function b(e, t) {
80
- const r = new T(c, { handleToolErrors: !1 });
81
- try {
82
- const s = e.helpInternalState.toolCallMessage;
83
- if (!s)
84
- throw new Error("helpToolCalling: missing helpInternalState.toolCallMessage");
85
- const a = (await r.invoke({ messages: [s] }, t)).messages.map((o) => o.text).join(`
86
- `);
87
- return await m({ text: `Finished executing help tool: ${a}` }, t), {
88
- ...e,
89
- outputMessage: a,
90
- status: "success",
91
- summary: a ? x(a) : "Help executed.",
92
- helpInternalState: {
93
- ...e.helpInternalState,
94
- toolCallMessage: void 0
95
- }
96
- };
97
- } catch (s) {
98
- const l = s instanceof Error ? s.message : String(s);
99
- return await m({ text: `Help tool execution failed: ${l}` }, t), {
100
- ...e,
101
- outputMessage: `Help tool execution failed: ${l}`,
102
- status: "failed",
103
- summary: `Help tool execution failed: ${l}`,
104
- helpInternalState: {
105
- ...e.helpInternalState,
106
- toolCallMessage: void 0
107
- }
108
- };
109
- }
110
- }
111
- const M = () => new d(u).addNode("requireHelpServices", H).addNode("agent", _).addNode("tools", b).addEdge(g, "requireHelpServices").addEdge("requireHelpServices", "agent").addConditionalEdges("agent", (t) => t.helpInternalState.toolCallMessage ? "tools" : i).addEdge("tools", i), k = String.raw`- **help** — Enables users to ask questions about the map, layers, fields, and it's capabilities.
112
-
113
- _Example: “Tell me about this map”_
114
- _Example: “List all layers in this map”_
115
- _Example: “List fields in protected areas layer”_
116
- _Example: “What agents are available to me?”_
117
- _Example: “What can you do?”_
118
- _Example: “What can I ask”_
119
-
120
- If the user asks unrelated queries like "What are the vowels in English alphabet" or "How to cook", call this agent so it can politely refuse and redirect to map-related questions.
121
-
122
- IF the user asks map related queries, but those that are not performed by any of the agents, call this agent so we can respond that the requested action is not supported.
123
- _Example: "Create a chart"_
124
- _Example: "Create a table"_`, Q = {
125
- id: "help",
126
- name: "Help Agent",
127
- description: k,
128
- createGraph: M,
129
- workspace: u
130
- };
131
- export {
132
- Q as H
133
- };