@arcgis/ai-agents 5.1.0-next.60 → 5.1.0-next.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/arcgisKnowledge/state/arcgisKnowledgeState.d.ts +2 -2
- package/dist/agents/dataExploration/state/dataExplorationState.d.ts +2 -2
- package/dist/agents/dataExploration/tools/filterTools/setFeatureEffect/adapter.d.ts +4 -0
- package/dist/agents/dataExploration/tools/filterTools/setFeatureEffect/core.d.ts +1 -0
- package/dist/agents/dataExploration/tools/filterTools/setFeatureFilter/adapter.d.ts +4 -0
- package/dist/agents/dataExploration/tools/filterTools/setFeatureFilter/core.d.ts +1 -0
- package/dist/agents/dataExploration/tools/index.d.ts +3 -0
- package/dist/agents/help/state/helpState.d.ts +2 -2
- package/dist/agents/layerStyling/state/layerStylingState.d.ts +2 -2
- package/dist/agents/navigation/state/navigationState.d.ts +2 -2
- package/dist/{data_explore_filter_prompt-BPOAIqs_.js → data_explore_filter_prompt-DoHzvzv1.js} +27 -27
- package/dist/{data_explore_query_prompt-CuTod2tk.js → data_explore_query_prompt-q72F4eFI.js} +17 -3
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1401 -2179
- package/dist/utils/reducers.d.ts +2 -0
- package/package.json +2 -2
- package/dist/agents/layerFilter/context/getLayerFilterContext.d.ts +0 -3
- package/dist/agents/layerFilter/context/layerFilterContext.d.ts +0 -9
- package/dist/agents/layerFilter/graph/layerFilterGraph.d.ts +0 -8
- package/dist/agents/layerFilter/index.d.ts +0 -2
- package/dist/agents/layerFilter/nodes/fieldStatistics.d.ts +0 -3
- package/dist/agents/layerFilter/nodes/layerFilterExit.d.ts +0 -3
- package/dist/agents/layerFilter/nodes/layerFilterLLM.d.ts +0 -3
- package/dist/agents/layerFilter/nodes/layerFilterToolCalling.d.ts +0 -3
- package/dist/agents/layerFilter/nodes/requireLayerFilterServices.d.ts +0 -7
- package/dist/agents/layerFilter/nodes/vectorSearchFields.d.ts +0 -3
- package/dist/agents/layerFilter/nodes/vectorSearchLayers.d.ts +0 -3
- package/dist/agents/layerFilter/state/layerFilterState.d.ts +0 -10
- package/dist/agents/layerFilter/tools/index.d.ts +0 -87
- package/dist/agents/layerFilter/tools/setDefinitionExpression/adapter.d.ts +0 -16
- package/dist/agents/layerFilter/tools/setDefinitionExpression/core.d.ts +0 -2
- package/dist/agents/layerFilter/tools/setDefinitionExpression/index.d.ts +0 -1
- package/dist/agents/layerFilter/tools/setFeatureEffect/adapter.d.ts +0 -64
- package/dist/agents/layerFilter/tools/setFeatureEffect/core.d.ts +0 -6
- package/dist/agents/layerFilter/tools/setFeatureEffect/index.d.ts +0 -1
- package/dist/agents/layerFilter/tools/setFeatureFilter/adapter.d.ts +0 -56
- package/dist/agents/layerFilter/tools/setFeatureFilter/core.d.ts +0 -6
- package/dist/agents/layerFilter/tools/setFeatureFilter/index.d.ts +0 -1
- package/dist/agents/layerFilter/types/types.d.ts +0 -17
- package/dist/agents/layerFilter/utils/getGeometryForFilter.d.ts +0 -14
- package/dist/agents/layerFilter/utils/zoomToWhereClause.d.ts +0 -2
- package/dist/agents/layerQuery/context/getLayerQueryContext.d.ts +0 -3
- package/dist/agents/layerQuery/context/layerQueryContext.d.ts +0 -9
- package/dist/agents/layerQuery/graph/layerQueryGraph.d.ts +0 -8
- package/dist/agents/layerQuery/index.d.ts +0 -2
- package/dist/agents/layerQuery/nodes/fieldStatistics.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/layerQueryExit.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/layerQueryLLM.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/layerQueryToolCalling.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/requireLayerQueryServices.d.ts +0 -7
- package/dist/agents/layerQuery/nodes/summarizeQueryResponseLLM.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/vectorSearchFields.d.ts +0 -3
- package/dist/agents/layerQuery/nodes/vectorSearchLayers.d.ts +0 -3
- package/dist/agents/layerQuery/state/layerQueryState.d.ts +0 -12
- package/dist/agents/layerQuery/tools/getAttribute/adapter.d.ts +0 -28
- package/dist/agents/layerQuery/tools/getAttribute/core.d.ts +0 -5
- package/dist/agents/layerQuery/tools/getAttribute/index.d.ts +0 -1
- package/dist/agents/layerQuery/tools/getStatistics/adapter.d.ts +0 -65
- package/dist/agents/layerQuery/tools/getStatistics/core.d.ts +0 -15
- package/dist/agents/layerQuery/tools/getStatistics/index.d.ts +0 -1
- package/dist/agents/layerQuery/tools/getTopFeatures/adapter.d.ts +0 -79
- package/dist/agents/layerQuery/tools/getTopFeatures/core.d.ts +0 -15
- package/dist/agents/layerQuery/tools/getTopFeatures/index.d.ts +0 -1
- package/dist/agents/layerQuery/tools/index.d.ts +0 -177
- package/dist/agents/layerQuery/tools/queryFeatures/adapter.d.ts +0 -59
- package/dist/agents/layerQuery/tools/queryFeatures/core.d.ts +0 -8
- package/dist/agents/layerQuery/tools/queryFeatures/index.d.ts +0 -1
- package/dist/agents/layerQuery/types/types.d.ts +0 -22
- package/dist/agents/layerQuery/utils/getGeometryForQuery.d.ts +0 -8
- package/dist/data_query_prompt-N4YzctpM.js +0 -61
- package/dist/layer_filter_prompt-0ujK87_y.js +0 -4
- package/dist/summarize_query_response_prompt-DBJy1AAu.js +0 -30
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgentExecutionContext } from '@arcgis/ai-orchestrator';
|
|
2
2
|
export declare const arcgisKnowledgeState: import('@langchain/langgraph/web').AnnotationRoot<{
|
|
3
|
-
|
|
3
|
+
agentExecutionContext: import('@langchain/langgraph/web').BaseChannel<AgentExecutionContext, AgentExecutionContext | import('@langchain/langgraph/web').OverwriteValue<AgentExecutionContext>, unknown>;
|
|
4
4
|
outputMessage: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
5
5
|
intent: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
6
6
|
}>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgentExecutionContext, VectorSearchFieldResults } from '@arcgis/ai-orchestrator';
|
|
2
2
|
import { QueryResponse } from '../types/types';
|
|
3
3
|
import { LayerFieldInfo } from '../../../types/types';
|
|
4
4
|
export declare const DataExplorationState: import('@langchain/langgraph/web').AnnotationRoot<{
|
|
5
|
-
|
|
5
|
+
agentExecutionContext: import('@langchain/langgraph/web').BaseChannel<AgentExecutionContext, AgentExecutionContext | import('@langchain/langgraph/web').OverwriteValue<AgentExecutionContext>, unknown>;
|
|
6
6
|
outputMessage: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
7
7
|
vectorSearchLayerIds: import('@langchain/langgraph/web').LastValue<string[]>;
|
|
8
8
|
vectorSearchFieldResults: import('@langchain/langgraph/web').LastValue<VectorSearchFieldResults>;
|
|
@@ -5,6 +5,7 @@ export declare const setFeatureEffectWrapper: ({ targetLayer, geometryFilter, us
|
|
|
5
5
|
targetLayer: {
|
|
6
6
|
layerId: string;
|
|
7
7
|
where: string;
|
|
8
|
+
objectIds?: number[];
|
|
8
9
|
};
|
|
9
10
|
geometryFilter?: GeometryConfig;
|
|
10
11
|
useCurrentExtent?: boolean;
|
|
@@ -15,6 +16,7 @@ export declare const setFeatureEffectTool: import('@langchain/core/tools').Dynam
|
|
|
15
16
|
targetLayer: z.ZodObject<{
|
|
16
17
|
layerId: z.ZodString;
|
|
17
18
|
where: z.ZodString;
|
|
19
|
+
objectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
18
20
|
}, z.core.$strip>;
|
|
19
21
|
geometryFilter: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
20
22
|
layerId: z.ZodString;
|
|
@@ -53,6 +55,7 @@ export declare const setFeatureEffectTool: import('@langchain/core/tools').Dynam
|
|
|
53
55
|
targetLayer: {
|
|
54
56
|
layerId: string;
|
|
55
57
|
where: string;
|
|
58
|
+
objectIds?: number[] | undefined;
|
|
56
59
|
};
|
|
57
60
|
includedEffect: string;
|
|
58
61
|
excludedEffect: string;
|
|
@@ -77,6 +80,7 @@ export declare const setFeatureEffectTool: import('@langchain/core/tools').Dynam
|
|
|
77
80
|
targetLayer: {
|
|
78
81
|
layerId: string;
|
|
79
82
|
where: string;
|
|
83
|
+
objectIds?: number[] | undefined;
|
|
80
84
|
};
|
|
81
85
|
geometryFilter?: {
|
|
82
86
|
layerId: string;
|
|
@@ -3,4 +3,5 @@ import { default as MapView } from '@arcgis/core/views/MapView.js';
|
|
|
3
3
|
export declare const setFeatureEffect: (targetLayer: {
|
|
4
4
|
layerId: string;
|
|
5
5
|
where: string;
|
|
6
|
+
objectIds?: number[];
|
|
6
7
|
}, arcgisMapView: MapView, includedEffect: string, excludedEffect: string, geometryFilter?: GeometryConfig, useCurrentExtent?: boolean) => Promise<string>;
|
|
@@ -5,6 +5,7 @@ export declare const setFeatureFilterWrapper: ({ targetLayer, geometryFilter, }:
|
|
|
5
5
|
targetLayer: {
|
|
6
6
|
layerId: string;
|
|
7
7
|
where: string;
|
|
8
|
+
objectIds?: number[];
|
|
8
9
|
};
|
|
9
10
|
geometryFilter?: GeometryConfig;
|
|
10
11
|
}, config?: RunnableConfig) => Promise<string>;
|
|
@@ -12,6 +13,7 @@ export declare const setFeatureFilterTool: import('@langchain/core/tools').Dynam
|
|
|
12
13
|
targetLayer: z.ZodObject<{
|
|
13
14
|
layerId: z.ZodString;
|
|
14
15
|
where: z.ZodString;
|
|
16
|
+
objectIds: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
15
17
|
}, z.core.$strip>;
|
|
16
18
|
geometryFilter: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
17
19
|
layerId: z.ZodString;
|
|
@@ -47,6 +49,7 @@ export declare const setFeatureFilterTool: import('@langchain/core/tools').Dynam
|
|
|
47
49
|
targetLayer: {
|
|
48
50
|
layerId: string;
|
|
49
51
|
where: string;
|
|
52
|
+
objectIds?: number[] | undefined;
|
|
50
53
|
};
|
|
51
54
|
geometryFilter?: {
|
|
52
55
|
layerId: string;
|
|
@@ -68,6 +71,7 @@ export declare const setFeatureFilterTool: import('@langchain/core/tools').Dynam
|
|
|
68
71
|
targetLayer: {
|
|
69
72
|
layerId: string;
|
|
70
73
|
where: string;
|
|
74
|
+
objectIds?: number[] | undefined;
|
|
71
75
|
};
|
|
72
76
|
geometryFilter?: {
|
|
73
77
|
layerId: string;
|
|
@@ -301,6 +301,7 @@ export declare const filterTools: (import('@langchain/core/tools').DynamicStruct
|
|
|
301
301
|
targetLayer: import('zod').ZodObject<{
|
|
302
302
|
layerId: import('zod').ZodString;
|
|
303
303
|
where: import('zod').ZodString;
|
|
304
|
+
objectIds: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodNumber>>;
|
|
304
305
|
}, import('zod/v4/core').$strip>;
|
|
305
306
|
geometryFilter: import('zod').ZodOptional<import('zod').ZodUnion<readonly [import('zod').ZodObject<{
|
|
306
307
|
layerId: import('zod').ZodString;
|
|
@@ -339,6 +340,7 @@ export declare const filterTools: (import('@langchain/core/tools').DynamicStruct
|
|
|
339
340
|
targetLayer: {
|
|
340
341
|
layerId: string;
|
|
341
342
|
where: string;
|
|
343
|
+
objectIds?: number[] | undefined;
|
|
342
344
|
};
|
|
343
345
|
includedEffect: string;
|
|
344
346
|
excludedEffect: string;
|
|
@@ -363,6 +365,7 @@ export declare const filterTools: (import('@langchain/core/tools').DynamicStruct
|
|
|
363
365
|
targetLayer: {
|
|
364
366
|
layerId: string;
|
|
365
367
|
where: string;
|
|
368
|
+
objectIds?: number[] | undefined;
|
|
366
369
|
};
|
|
367
370
|
geometryFilter?: {
|
|
368
371
|
layerId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgentExecutionContext } from '@arcgis/ai-orchestrator';
|
|
2
2
|
export declare const HelpState: import('@langchain/langgraph/web').AnnotationRoot<{
|
|
3
|
-
|
|
3
|
+
agentExecutionContext: import('@langchain/langgraph/web').BaseChannel<AgentExecutionContext, AgentExecutionContext | import('@langchain/langgraph/web').OverwriteValue<AgentExecutionContext>, unknown>;
|
|
4
4
|
outputMessage: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
5
5
|
}>;
|
|
6
6
|
export type HelpGraphStateType = typeof HelpState.State;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgentExecutionContext, VectorSearchFieldResults } from '@arcgis/ai-orchestrator';
|
|
2
2
|
import { LayerFieldInfo } from '../../../types/types';
|
|
3
3
|
export declare const LayerStylingState: import('@langchain/langgraph/web').AnnotationRoot<{
|
|
4
|
-
|
|
4
|
+
agentExecutionContext: import('@langchain/langgraph/web').BaseChannel<AgentExecutionContext, AgentExecutionContext | import('@langchain/langgraph/web').OverwriteValue<AgentExecutionContext>, unknown>;
|
|
5
5
|
outputMessage: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
6
6
|
vectorSearchLayerIds: import('@langchain/langgraph/web').LastValue<string[]>;
|
|
7
7
|
vectorSearchFieldResults: import('@langchain/langgraph/web').LastValue<VectorSearchFieldResults>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VectorSearchFieldResults, AgentExecutionContext } from '@arcgis/ai-orchestrator';
|
|
2
2
|
export declare const NavigationState: import('@langchain/langgraph/web').AnnotationRoot<{
|
|
3
|
-
|
|
3
|
+
agentExecutionContext: import('@langchain/langgraph/web').BaseChannel<AgentExecutionContext, AgentExecutionContext | import('@langchain/langgraph/web').OverwriteValue<AgentExecutionContext>, unknown>;
|
|
4
4
|
outputMessage: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
5
5
|
intent: import('@langchain/langgraph/web').BaseChannel<string, string | import('@langchain/langgraph/web').OverwriteValue<string>, unknown>;
|
|
6
6
|
vectorSearchLayerResults: import('@langchain/langgraph/web').BaseChannel<{
|
package/dist/{data_explore_filter_prompt-BPOAIqs_.js → data_explore_filter_prompt-DoHzvzv1.js}
RENAMED
|
@@ -22,22 +22,31 @@ This is what the query tool returned:
|
|
|
22
22
|
|
|
23
23
|
## Your task
|
|
24
24
|
|
|
25
|
-
1.
|
|
26
|
-
2.
|
|
27
|
-
3. Select the most appropriate tool
|
|
25
|
+
1. Decide whether a tool call is needed (see "When to call a tool" below).
|
|
26
|
+
2. If needed, determine \`targetLayer\` using the priority rules below.
|
|
27
|
+
3. Select the most appropriate tool.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
## How to determine targetLayer (follow in order)
|
|
30
|
+
|
|
31
|
+
Use the FIRST rule that matches:
|
|
32
|
+
|
|
33
|
+
1. **queryResponse includes \`objectIds\` and \`objectIdField\`** → pass them as \`targetLayer.objectIds\` array and set \`where\` to \`"1=1"\`. Do NOT construct a WHERE clause with IN(...).
|
|
34
|
+
|
|
35
|
+
2. **queryResponse includes a \`where\` clause** → copy that exact \`where\` string and the \`layerId\` into \`targetLayer\`. Do NOT regenerate, rephrase, or simplify it.
|
|
36
|
+
|
|
37
|
+
3. **User explicitly asks for a DIFFERENT set of features** than what the query returned (e.g., query found declined apps but user says "now highlight the approved ones"), OR the user asks to clear/reset filters → generate a new WHERE clause using the rules in "Generating new WHERE clauses" below.
|
|
38
|
+
|
|
39
|
+
### Also forward geometryFilter and useCurrentExtent
|
|
40
|
+
|
|
41
|
+
If the query tool call in the message history used a \`geometryFilter\` (spatial/proximity query) or \`useCurrentExtent: true\`, include the same parameters in your tool call. Without them, the filter would apply to the entire layer instead of just the spatially scoped features.
|
|
30
42
|
|
|
31
43
|
## When to call a tool
|
|
32
44
|
|
|
33
|
-
ALWAYS call a tool
|
|
45
|
+
ALWAYS call a tool when:
|
|
34
46
|
|
|
35
47
|
- The user asked to "show", "find", "locate", or "where is" something
|
|
36
48
|
- The user asked a question that identifies specific features (e.g., "which has the highest...?", "find all X that are Y")
|
|
37
|
-
- The user wants to clear or
|
|
38
|
-
|
|
39
|
-
The purpose is to visually emphasize the relevant features on the map so the user can
|
|
40
|
-
see them.
|
|
49
|
+
- The user wants to clear or reset filters of the map
|
|
41
50
|
|
|
42
51
|
### No tool call
|
|
43
52
|
|
|
@@ -47,27 +56,20 @@ Make no tool call when:
|
|
|
47
56
|
- The user asked a pure aggregate/statistical question (e.g., "what is the average?", "how many total?")
|
|
48
57
|
- No meaningful filter can be generated
|
|
49
58
|
- The user's question was fully answered by the query step with no need for map interaction
|
|
59
|
+
- Even if objectIds are available in the query response, do not highlight features unless the user explicitly asked to see, show, highlight or emphasize them
|
|
60
|
+
|
|
61
|
+
## Generating new WHERE clauses (exception case only)
|
|
50
62
|
|
|
51
|
-
|
|
63
|
+
Only use these rules when rule 3 above applies — i.e., the user explicitly asked for a different feature set.
|
|
52
64
|
|
|
53
|
-
- Use only the field
|
|
54
|
-
- Use
|
|
55
|
-
- Use field \`type\` to choose appropriate operators:
|
|
65
|
+
- Use only the field's **\`name\`** in the expression — not the alias.
|
|
66
|
+
- Use field \`type\` to choose operators:
|
|
56
67
|
- **String** → \`LIKE '%value%'\`, \`=\`, \`IN (...)\`
|
|
57
68
|
- **Number/Date** → \`=\`, \`<\`, \`>\`, \`BETWEEN\`, etc.
|
|
58
|
-
-
|
|
59
|
-
-
|
|
69
|
+
- **Coded-value domain fields** → use the numeric/string **code**, never the domain name.
|
|
70
|
+
- **Range domain fields** → use the listed min/max as valid bounds.
|
|
71
|
+
- DO NOT use subqueries or \`SELECT\`.
|
|
60
72
|
- Combine conditions with \`AND\`, \`OR\`, or \`NOT\` as appropriate.
|
|
61
|
-
- **Coded-value domain fields** → Always use the numeric/string **code** in WHERE clauses, never the domain name. Domain values are listed under each field as \`code=name\` pairs
|
|
62
|
-
- **Range domain fields** → Use the listed min/max as valid bounds for comparisons.
|
|
63
|
-
- If no meaningful layer filter can be generated, do not call a tool.
|
|
64
|
-
|
|
65
|
-
## Top N / Ranked queries
|
|
66
|
-
|
|
67
|
-
When the query response includes \`objectIds\` and \`objectIdField\`, use them:
|
|
68
|
-
{{objectIdField}} IN (id1, id2, id3, ...)
|
|
69
|
-
|
|
70
|
-
This ensures ONLY the exact features from the query get the effect.
|
|
71
73
|
|
|
72
74
|
## SQL-92 Date/Time Syntax
|
|
73
75
|
|
|
@@ -96,12 +98,10 @@ Examples:
|
|
|
96
98
|
Q: "Is well P132_1873 within 300m from a protected area?"
|
|
97
99
|
Target: Protected Areas (what we want to find)
|
|
98
100
|
Geometry: Well (where="ID = 'P132_1873'" - single point)
|
|
99
|
-
Result: Returns which protected areas are nearby
|
|
100
101
|
|
|
101
102
|
Q: "Find roads within 500m of park X"
|
|
102
103
|
Target: Roads (what we want to find)
|
|
103
104
|
Geometry: Park X (specific location)
|
|
104
|
-
Result: Returns which roads are nearby
|
|
105
105
|
|
|
106
106
|
Key principle: The geometry layer should be the SIMPLER geometry (ideally a single feature or small set),
|
|
107
107
|
not a large collection that requires union operations.
|
package/dist/{data_explore_query_prompt-CuTod2tk.js → data_explore_query_prompt-q72F4eFI.js}
RENAMED
|
@@ -26,11 +26,15 @@ Validator: Before producing output, verify every field used exists in the listed
|
|
|
26
26
|
|
|
27
27
|
## Input
|
|
28
28
|
|
|
29
|
-
Use the most recent relevant user question from the chat history.
|
|
29
|
+
Use the most recent relevant user question from the chat history.
|
|
30
30
|
|
|
31
|
-
###
|
|
31
|
+
### Fresh WHERE clause rule
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Start with a fresh WHERE clause for each new question. Do not inherit filters from previous questions UNLESS the user explicitly references previous results (see "Referencing Previously Identified Features" below).
|
|
34
|
+
|
|
35
|
+
### Rules for generating WHERE clause SQL expressions:
|
|
36
|
+
|
|
37
|
+
- Use only the field's **\`name\`** in the output expression.
|
|
34
38
|
- Use metadata (\`alias\`, \`description\`, \`statistics\`) only to help understand the user's meaning — not in the syntax.
|
|
35
39
|
- Use field \`type\` to choose appropriate operators:
|
|
36
40
|
- **String** → \`LIKE '%value%'\`, \`=\`, \`IN (...)\` (prefer \`LIKE\` over \`=\`)
|
|
@@ -42,6 +46,16 @@ Use the most recent relevant user question from the chat history. The question w
|
|
|
42
46
|
- **Range domain fields** → Use the listed min/max as valid bounds for comparisons.
|
|
43
47
|
- If no meaningful layer filter can be generated, do not call a tool.
|
|
44
48
|
|
|
49
|
+
## Referencing Previously Identified Features
|
|
50
|
+
|
|
51
|
+
This is an exception to the "fresh WHERE clause" rule above.
|
|
52
|
+
|
|
53
|
+
When the user uses words like "these", "those", "them", "the same ones" referring to features from a previous turn:
|
|
54
|
+
|
|
55
|
+
- If the previous query used useCurrentExtent: true → use useCurrentExtent: true with where: "1=1"
|
|
56
|
+
- If the previous assistant response mentions specific objectIds or feature IDs → use {{objectIdField}} IN (id1, id2, ...) to scope to those features
|
|
57
|
+
- If neither is available, use the same WHERE clause and layer from the previous query turn to re-select the same features
|
|
58
|
+
|
|
45
59
|
### Mixed Questions
|
|
46
60
|
|
|
47
61
|
If a question has both aggregate and display components (e.g., "How many wells have depth > 100? Show them"):
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export * from './agents/navigation';
|
|
2
2
|
export * from './agents/dataExploration';
|
|
3
|
-
export * from './agents/layerFilter';
|
|
4
|
-
export * from './agents/layerQuery';
|
|
5
3
|
export * from './agents/layerStyling';
|
|
6
4
|
export * from './agents/help';
|
|
7
5
|
export * from './agents/arcgisKnowledge';
|