@kasarlabs/ask-starknet-mcp 0.1.4 → 0.1.6
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/README.md +2 -0
- package/build/graph/agents/category.d.ts +11 -0
- package/build/graph/agents/category.d.ts.map +1 -0
- package/build/graph/agents/category.js +68 -0
- package/build/graph/agents/category.js.map +1 -0
- package/build/graph/agents/selector.d.ts +1 -8
- package/build/graph/agents/selector.d.ts.map +1 -1
- package/build/graph/agents/selector.js +28 -41
- package/build/graph/agents/selector.js.map +1 -1
- package/build/graph/agents/specialized.d.ts.map +1 -1
- package/build/graph/agents/specialized.js +13 -4
- package/build/graph/agents/specialized.js.map +1 -1
- package/build/graph/graph.d.ts +8 -6
- package/build/graph/graph.d.ts.map +1 -1
- package/build/graph/graph.js +8 -2
- package/build/graph/graph.js.map +1 -1
- package/build/graph/mcps/categoryUtils.d.ts +13 -0
- package/build/graph/mcps/categoryUtils.d.ts.map +1 -0
- package/build/graph/mcps/categoryUtils.js +48 -0
- package/build/graph/mcps/categoryUtils.js.map +1 -0
- package/build/graph/mcps/{utilities.d.ts → mcpUtils.d.ts} +1 -1
- package/build/graph/mcps/mcpUtils.d.ts.map +1 -0
- package/build/graph/mcps/{utilities.js → mcpUtils.js} +1 -1
- package/build/graph/mcps/mcpUtils.js.map +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +15 -2
- package/build/index.js.map +1 -1
- package/mcps.json +83 -5
- package/package.json +11 -14
- package/build/graph/mcps/utilities.d.ts.map +0 -1
- package/build/graph/mcps/utilities.js.map +0 -1
package/README.md
CHANGED
|
@@ -56,6 +56,8 @@ Used by: **Starknet RPC**
|
|
|
56
56
|
- `EXTENDED_API_KEY`: Your Extended API key
|
|
57
57
|
- `EXTENDED_API_URL`: Extended API endpoint
|
|
58
58
|
- `EXTENDED_PRIVATE_KEY`: Your Stark private key for Extended
|
|
59
|
+
- `EXTENDED_BUILDER_ID` (optional): Builder identifier for referral/fee sharing programs on Extended exchange
|
|
60
|
+
- `EXTENDED_BUILDER_FEE` (optional): Builder fee rate (in basis points) applied to trades when using a builder ID
|
|
59
61
|
|
|
60
62
|
Used by: **Extended**
|
|
61
63
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AIMessage } from '@langchain/core/messages';
|
|
2
|
+
import { GraphAnnotation } from '../graph.js';
|
|
3
|
+
export declare const categoryAgent: (state: typeof GraphAnnotation.State) => Promise<{
|
|
4
|
+
routingInfo: {
|
|
5
|
+
reasoning: any;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
};
|
|
8
|
+
messages?: AIMessage[] | undefined;
|
|
9
|
+
next: any;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=category.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category.d.ts","sourceRoot":"","sources":["../../../src/graph/agents/category.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAgB,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS9C,eAAO,MAAM,aAAa,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK;;;;;;;EAmEtE,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { END } from '@langchain/langgraph';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { AIMessage, HumanMessage } from '@langchain/core/messages';
|
|
4
|
+
import { getMCPsByCategory, getCategoryDescription, } from '../mcps/categoryUtils.js';
|
|
5
|
+
import { getMCPDescription } from '../mcps/mcpUtils.js';
|
|
6
|
+
import { logger } from '../../utils/logger.js';
|
|
7
|
+
import { createLLM } from '../../utils/llm.js';
|
|
8
|
+
export const categoryAgent = async (state) => {
|
|
9
|
+
const category = state.next;
|
|
10
|
+
const userMessage = state.messages.find((msg) => msg instanceof HumanMessage);
|
|
11
|
+
const userInput = userMessage?.content || '';
|
|
12
|
+
const categoryMcps = getMCPsByCategory(category);
|
|
13
|
+
const categoryDescription = getCategoryDescription(category);
|
|
14
|
+
const categoryOutputSchema = z.object({
|
|
15
|
+
selectedMcp: z.enum([END, ...categoryMcps]),
|
|
16
|
+
reasoning: z.string().describe('Why this MCP was chosen'),
|
|
17
|
+
});
|
|
18
|
+
const mcpDescriptions = categoryMcps
|
|
19
|
+
.map((mcp) => `- ${mcp}: ${getMCPDescription(mcp)}`)
|
|
20
|
+
.join('\n');
|
|
21
|
+
const systemPrompt = `You are a specialized MCP router for the "${category}" category on Starknet.
|
|
22
|
+
|
|
23
|
+
Category: ${category}
|
|
24
|
+
Description: ${categoryDescription}
|
|
25
|
+
|
|
26
|
+
Available MCPs in this category:
|
|
27
|
+
${mcpDescriptions}
|
|
28
|
+
|
|
29
|
+
Instructions:
|
|
30
|
+
- Carefully analyze the user's request and its specific requirements
|
|
31
|
+
- Read each MCP's description and understand its capabilities
|
|
32
|
+
- Select the MOST APPROPRIATE MCP that best matches the user's intent
|
|
33
|
+
- If the request mentions a specific protocol/service name, prioritize that MCP
|
|
34
|
+
- If no MCP in this category can handle the request, choose "__end__"
|
|
35
|
+
|
|
36
|
+
Be precise and choose the single best MCP for this request.
|
|
37
|
+
|
|
38
|
+
Respond with the exact name of the chosen MCP or "__end__".`;
|
|
39
|
+
const model = createLLM(state.mcpEnvironment);
|
|
40
|
+
const structuredModel = model.withStructuredOutput(categoryOutputSchema);
|
|
41
|
+
const response = await structuredModel.invoke([
|
|
42
|
+
{ role: 'system', content: systemPrompt },
|
|
43
|
+
{
|
|
44
|
+
role: 'user',
|
|
45
|
+
content: `User request: "${userInput}"\n\nWhich MCP should handle this request?`,
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
logger.info(`Category routing decision for "${category}"`, {
|
|
49
|
+
selectedMcp: response.selectedMcp,
|
|
50
|
+
reasoning: response.reasoning,
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
next: response.selectedMcp,
|
|
54
|
+
...(response.selectedMcp === END && {
|
|
55
|
+
messages: [
|
|
56
|
+
new AIMessage({
|
|
57
|
+
content: `I couldn't find an appropriate MCP in this category : "${category}" to handle this request: "${userInput}"\n\nPlease try rephrasing your request or ask "help" to see what I can do.`,
|
|
58
|
+
name: 'category-error',
|
|
59
|
+
}),
|
|
60
|
+
],
|
|
61
|
+
}),
|
|
62
|
+
routingInfo: {
|
|
63
|
+
reasoning: response.reasoning,
|
|
64
|
+
timestamp: new Date().toISOString(),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=category.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category.js","sourceRoot":"","sources":["../../../src/graph/agents/category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAE5B,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,YAAY,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;IAE7C,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAE7D,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;QACpC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,YAAY,CAA0B,CAAC;QACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,YAAY;SACjC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;SACnD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG,6CAA6C,QAAQ;;YAEhE,QAAQ;eACL,mBAAmB;;;EAGhC,eAAe;;;;;;;;;;;4DAW2C,CAAC;IAE3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;QAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,kBAAkB,SAAS,4CAA4C;SACjF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,GAAG,EAAE;QACzD,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,WAAW;QAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,GAAG,IAAI;YAClC,QAAQ,EAAE;gBACR,IAAI,SAAS,CAAC;oBACZ,OAAO,EAAE,0DAA0D,QAAQ,8BAA8B,SAAS,6EAA6E;oBAC/L,IAAI,EAAE,gBAAgB;iBACvB,CAAC;aACH;SACF,CAAC;QACF,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { AIMessage } from '@langchain/core/messages';
|
|
2
2
|
import { GraphAnnotation } from '../graph.js';
|
|
3
3
|
export declare const selectorAgent: (state: typeof GraphAnnotation.State) => Promise<{
|
|
4
|
-
next: string;
|
|
5
|
-
messages: AIMessage[];
|
|
6
4
|
routingInfo: {
|
|
7
5
|
reasoning: any;
|
|
8
6
|
timestamp: string;
|
|
9
7
|
};
|
|
10
|
-
|
|
8
|
+
messages?: AIMessage[] | undefined;
|
|
11
9
|
next: any;
|
|
12
|
-
routingInfo: {
|
|
13
|
-
reasoning: any;
|
|
14
|
-
timestamp: string;
|
|
15
|
-
};
|
|
16
|
-
messages?: undefined;
|
|
17
10
|
}>;
|
|
18
11
|
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../../src/graph/agents/selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../../src/graph/agents/selector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkB9C,eAAO,MAAM,aAAa,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK;;;;;;;EAyDtE,CAAC"}
|
|
@@ -1,74 +1,61 @@
|
|
|
1
1
|
import { END } from '@langchain/langgraph';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { AIMessage } from '@langchain/core/messages';
|
|
4
|
-
import {
|
|
4
|
+
import { getCategories, getCategoryDescription, } from '../mcps/categoryUtils.js';
|
|
5
5
|
import { logger } from '../../utils/logger.js';
|
|
6
6
|
import { createLLM } from '../../utils/llm.js';
|
|
7
|
+
const availableCategories = getCategories();
|
|
7
8
|
const selectorOutputSchema = z.object({
|
|
8
|
-
|
|
9
|
-
reasoning: z.string().describe('Why this
|
|
9
|
+
selectedCategory: z.enum([END, ...availableCategories]),
|
|
10
|
+
reasoning: z.string().describe('Why this category was chosen'),
|
|
10
11
|
});
|
|
11
12
|
export const selectorAgent = async (state) => {
|
|
12
13
|
const lastMessage = state.messages[state.messages.length - 1];
|
|
13
14
|
const userInput = lastMessage.content;
|
|
14
|
-
const
|
|
15
|
-
|
|
15
|
+
const categoryDescriptions = availableCategories
|
|
16
|
+
.map((category) => `- ${category}: ${getCategoryDescription(category)}`)
|
|
17
|
+
.join('\n');
|
|
18
|
+
const systemPrompt = `You are a category selector for Starknet blockchain operations.
|
|
16
19
|
|
|
17
|
-
Available
|
|
18
|
-
${
|
|
20
|
+
Available categories:
|
|
21
|
+
${categoryDescriptions}
|
|
19
22
|
|
|
20
23
|
Instructions:
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
24
|
+
- Carefully analyze the user's request
|
|
25
|
+
- Read each category's description and understand its scope
|
|
26
|
+
- **Context assumption**: All user requests should be interpreted within the Starknet ecosystem context by default
|
|
27
|
+
- Questions that could relate to Starknet (people, projects, protocols, concepts) should be routed to the appropriate category
|
|
28
|
+
- Select the MOST APPROPRIATE category that best matches the user's intent
|
|
29
|
+
- Choose "__end__" in two cases:
|
|
30
|
+
1. Requests clearly unrelated to Starknet (general conversation, greetings with no context, completely off-topic questions)
|
|
31
|
+
2. Starknet-related requests that none of the available categories can handle
|
|
26
32
|
|
|
33
|
+
Be precise and choose the single best category for this request.
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Respond with the exact name of the chosen agent or "__end__".`;
|
|
31
|
-
const conversationHistory = state.messages
|
|
32
|
-
.map((msg, idx) => {
|
|
33
|
-
const role = msg.name || (idx === 0 ? 'user' : 'assistant');
|
|
34
|
-
const content = typeof msg.content === 'string'
|
|
35
|
-
? msg.content.substring(0, 500)
|
|
36
|
-
: JSON.stringify(msg.content).substring(0, 500);
|
|
37
|
-
return `[${role}]: ${content}`;
|
|
38
|
-
})
|
|
39
|
-
.join('\n\n');
|
|
35
|
+
Respond with the exact name of the chosen category or "__end__".`;
|
|
40
36
|
const model = createLLM(state.mcpEnvironment);
|
|
41
37
|
const structuredModel = model.withStructuredOutput(selectorOutputSchema);
|
|
42
38
|
const response = await structuredModel.invoke([
|
|
43
39
|
{ role: 'system', content: systemPrompt },
|
|
44
40
|
{
|
|
45
41
|
role: 'user',
|
|
46
|
-
content: `
|
|
42
|
+
content: `User request: "${userInput}"\n\nWhich category should handle this request?`,
|
|
47
43
|
},
|
|
48
44
|
]);
|
|
49
|
-
logger.
|
|
50
|
-
|
|
45
|
+
logger.info(`Selector routing decision`, {
|
|
46
|
+
selectedCategory: response.selectedCategory,
|
|
51
47
|
reasoning: response.reasoning,
|
|
52
48
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
next: END,
|
|
49
|
+
return {
|
|
50
|
+
next: response.selectedCategory,
|
|
51
|
+
...(response.selectedCategory === END && {
|
|
58
52
|
messages: [
|
|
59
53
|
new AIMessage({
|
|
60
|
-
content: `I couldn't find an appropriate
|
|
54
|
+
content: `I couldn't find an appropriate category to handle this request: "${userInput}"\n\nPlease try rephrasing your request or ask "help" to see what I can do.`,
|
|
61
55
|
name: 'selector-error',
|
|
62
56
|
}),
|
|
63
57
|
],
|
|
64
|
-
|
|
65
|
-
reasoning: response.reasoning,
|
|
66
|
-
timestamp: new Date().toISOString(),
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
next: response.selectedAgent,
|
|
58
|
+
}),
|
|
72
59
|
routingInfo: {
|
|
73
60
|
reasoning: response.reasoning,
|
|
74
61
|
timestamp: new Date().toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../../src/graph/agents/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,
|
|
1
|
+
{"version":3,"file":"selector.js","sourceRoot":"","sources":["../../../src/graph/agents/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EACL,aAAa,EACb,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,mBAAmB,GAAG,aAAa,EAAE,CAAC;AAE5C,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAGpD,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IACzE,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;IAEtC,MAAM,oBAAoB,GAAG,mBAAmB;SAC7C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,QAAQ,KAAK,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;SACvE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,YAAY,GAAG;;;EAGrB,oBAAoB;;;;;;;;;;;;;;iEAc2C,CAAC;IAEhE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;QAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;QACzC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,kBAAkB,SAAS,iDAAiD;SACtF;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;QACvC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,SAAS,EAAE,QAAQ,CAAC,SAAS;KAC9B,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,gBAAgB;QAC/B,GAAG,CAAC,QAAQ,CAAC,gBAAgB,KAAK,GAAG,IAAI;YACvC,QAAQ,EAAE;gBACR,IAAI,SAAS,CAAC;oBACZ,OAAO,EAAE,oEAAoE,SAAS,6EAA6E;oBACnK,IAAI,EAAE,gBAAgB;iBACvB,CAAC;aACH;SACF,CAAC;QACF,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specialized.d.ts","sourceRoot":"","sources":["../../../src/graph/agents/specialized.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"specialized.d.ts","sourceRoot":"","sources":["../../../src/graph/agents/specialized.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAGb,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgD9C,eAAO,MAAM,eAAe,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK;;EAkFxE,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { MultiServerMCPClient } from '@langchain/mcp-adapters';
|
|
2
2
|
import { HumanMessage, SystemMessage, } from '@langchain/core/messages';
|
|
3
3
|
import { ToolNode } from '@langchain/langgraph/prebuilt';
|
|
4
|
-
import { getMCPClientConfig, getMCPPromptInfo } from '../mcps/
|
|
4
|
+
import { getMCPClientConfig, getMCPPromptInfo } from '../mcps/mcpUtils.js';
|
|
5
5
|
import { logger } from '../../utils/logger.js';
|
|
6
6
|
import { createLLM } from '../../utils/llm.js';
|
|
7
7
|
import { specializedPrompt } from './prompts.js';
|
|
8
|
+
const llmCache = new Map();
|
|
9
|
+
function getCachedLLM(env) {
|
|
10
|
+
const cacheKey = env.ANTHROPIC_API_KEY || env.GEMINI_API_KEY || env.OPENAI_API_KEY || '';
|
|
11
|
+
if (!llmCache.has(cacheKey)) {
|
|
12
|
+
const llm = createLLM(env);
|
|
13
|
+
llmCache.set(cacheKey, llm);
|
|
14
|
+
}
|
|
15
|
+
return llmCache.get(cacheKey);
|
|
16
|
+
}
|
|
8
17
|
async function specializedAgent(mcpServerName, env) {
|
|
9
18
|
const client = new MultiServerMCPClient({
|
|
10
19
|
mcpServers: {
|
|
@@ -12,10 +21,10 @@ async function specializedAgent(mcpServerName, env) {
|
|
|
12
21
|
},
|
|
13
22
|
});
|
|
14
23
|
const tools = await client.getTools();
|
|
15
|
-
logger.
|
|
24
|
+
logger.info(`Loaded ${tools.length} MCP tools: ${tools
|
|
16
25
|
.map((tool) => tool.name)
|
|
17
26
|
.join(', ')}`, {});
|
|
18
|
-
const llm =
|
|
27
|
+
const llm = getCachedLLM(env);
|
|
19
28
|
if (!llm.bindTools) {
|
|
20
29
|
throw new Error('The selected LLM model does not support tool binding');
|
|
21
30
|
}
|
|
@@ -46,7 +55,7 @@ export const specializedNode = async (state) => {
|
|
|
46
55
|
currentResponse,
|
|
47
56
|
...toolResults.messages,
|
|
48
57
|
]);
|
|
49
|
-
logger.
|
|
58
|
+
logger.info('Agent response with tools completed', {
|
|
50
59
|
agent: state.next,
|
|
51
60
|
toolCalls: currentResponse.tool_calls,
|
|
52
61
|
toolResults: toolResults,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specialized.js","sourceRoot":"","sources":["../../../src/graph/agents/specialized.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"specialized.js","sourceRoot":"","sources":["../../../src/graph/agents/specialized.ts"],"names":[],"mappings":"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"}
|
package/build/graph/graph.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export declare const GraphAnnotation: import("@langchain/langgraph").AnnotationR
|
|
|
13
13
|
}>;
|
|
14
14
|
rawTools: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
|
|
15
15
|
}>;
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const routingSelector: (state: typeof GraphAnnotation.State) => Promise<"__end__" | "category">;
|
|
17
|
+
export declare const routingCategory: (state: typeof GraphAnnotation.State) => Promise<"__end__" | "specialized">;
|
|
17
18
|
export declare const graph: import("@langchain/langgraph").CompiledStateGraph<{
|
|
18
19
|
messages: BaseMessage[];
|
|
19
20
|
next: string;
|
|
@@ -32,7 +33,7 @@ export declare const graph: import("@langchain/langgraph").CompiledStateGraph<{
|
|
|
32
33
|
timestamp?: string;
|
|
33
34
|
} | undefined;
|
|
34
35
|
rawTools?: boolean | undefined;
|
|
35
|
-
}, "__start__" | "selector" | "specialized", {
|
|
36
|
+
}, "category" | "__start__" | "selector" | "specialized", {
|
|
36
37
|
messages: import("@langchain/langgraph").BinaryOperatorAggregate<BaseMessage[], BaseMessage[]>;
|
|
37
38
|
next: import("@langchain/langgraph").BinaryOperatorAggregate<string, string>;
|
|
38
39
|
mcpEnvironment: import("@langchain/langgraph").BinaryOperatorAggregate<MCPEnvironment, MCPEnvironment>;
|
|
@@ -58,19 +59,20 @@ export declare const graph: import("@langchain/langgraph").CompiledStateGraph<{
|
|
|
58
59
|
rawTools: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
|
|
59
60
|
}, import("@langchain/langgraph").StateDefinition, {
|
|
60
61
|
selector: {
|
|
61
|
-
next: string;
|
|
62
|
-
messages: import("@langchain/core/messages").AIMessage[];
|
|
63
62
|
routingInfo: {
|
|
64
63
|
reasoning: any;
|
|
65
64
|
timestamp: string;
|
|
66
65
|
};
|
|
67
|
-
|
|
66
|
+
messages?: import("@langchain/core/messages").AIMessage[] | undefined;
|
|
68
67
|
next: any;
|
|
68
|
+
};
|
|
69
|
+
category: {
|
|
69
70
|
routingInfo: {
|
|
70
71
|
reasoning: any;
|
|
71
72
|
timestamp: string;
|
|
72
73
|
};
|
|
73
|
-
messages?: undefined;
|
|
74
|
+
messages?: import("@langchain/core/messages").AIMessage[] | undefined;
|
|
75
|
+
next: any;
|
|
74
76
|
};
|
|
75
77
|
specialized: {
|
|
76
78
|
messages: import("@langchain/core/messages").HumanMessage[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,eAAO,MAAM,eAAe;;;;;oBAaZ,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;EASpB,CAAC;AAEH,eAAO,MAAM,eAAe,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK,oCAExE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK,uCAExE,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;oBApBF,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;;;;;;;;;;;;;;;;;;;;;EA2ByB,CAAC"}
|
package/build/graph/graph.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StateGraph, MemorySaver, Annotation, START, END, messagesStateReducer, } from '@langchain/langgraph';
|
|
2
2
|
import { selectorAgent } from './agents/selector.js';
|
|
3
3
|
import { specializedNode } from './agents/specialized.js';
|
|
4
|
+
import { categoryAgent } from './agents/category.js';
|
|
4
5
|
export const GraphAnnotation = Annotation.Root({
|
|
5
6
|
messages: Annotation({
|
|
6
7
|
reducer: messagesStateReducer,
|
|
@@ -22,14 +23,19 @@ export const GraphAnnotation = Annotation.Root({
|
|
|
22
23
|
default: () => false,
|
|
23
24
|
}),
|
|
24
25
|
});
|
|
25
|
-
export const
|
|
26
|
+
export const routingSelector = async (state) => {
|
|
27
|
+
return state.next != END ? 'category' : END;
|
|
28
|
+
};
|
|
29
|
+
export const routingCategory = async (state) => {
|
|
26
30
|
return state.next != END ? 'specialized' : END;
|
|
27
31
|
};
|
|
28
32
|
export const graph = new StateGraph(GraphAnnotation)
|
|
29
33
|
.addNode('selector', selectorAgent)
|
|
34
|
+
.addNode('category', categoryAgent)
|
|
30
35
|
.addNode('specialized', specializedNode)
|
|
31
36
|
.addEdge(START, 'selector')
|
|
32
|
-
.addConditionalEdges('selector',
|
|
37
|
+
.addConditionalEdges('selector', routingSelector)
|
|
38
|
+
.addConditionalEdges('category', routingCategory)
|
|
33
39
|
.addEdge('specialized', END)
|
|
34
40
|
.compile({ checkpointer: new MemorySaver() });
|
|
35
41
|
//# sourceMappingURL=graph.js.map
|
package/build/graph/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,GAAG,EACH,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,GAAG,EACH,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC;IAC7C,QAAQ,EAAE,UAAU,CAAgB;QAClC,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IACF,IAAI,EAAE,UAAU,CAAY;QAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAgB;KAChC,CAAC;IACF,cAAc,EAAE,UAAU,CAAiB;QACzC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE,UAAU,CAGpB;QACD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,UAAU,CAAU;QAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK;KACrB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IAC3E,OAAO,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,KAAmC,EAAE,EAAE;IAC3E,OAAO,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC;KACjD,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC;KAClC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC;KAClC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;KACvC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;KAC1B,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC;KAChD,mBAAmB,CAAC,UAAU,EAAE,eAAe,CAAC;KAChD,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,WAAW,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface Category {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
mcps: string[];
|
|
5
|
+
}
|
|
6
|
+
type CategoriesConfig = Record<string, Category>;
|
|
7
|
+
export declare function getCategories(): string[];
|
|
8
|
+
export declare function getMCPsByCategory(category: string): string[];
|
|
9
|
+
export declare function getCategoryDescription(category: string): string;
|
|
10
|
+
export declare function getCategoryForMCP(mcpName: string): string | null;
|
|
11
|
+
export declare function getAllCategoriesConfig(): CategoriesConfig;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=categoryUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categoryUtils.d.ts","sourceRoot":"","sources":["../../../src/graph/mcps/categoryUtils.ts"],"names":[],"mappings":"AAOA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAsBjD,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAGxC;AAOD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAS5D;AAOD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS/D;AAOD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAMD,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = dirname(__filename);
|
|
6
|
+
let categoriesConfig = null;
|
|
7
|
+
function loadCategoriesConfig() {
|
|
8
|
+
if (categoriesConfig) {
|
|
9
|
+
return categoriesConfig;
|
|
10
|
+
}
|
|
11
|
+
const categoriesPath = join(__dirname, '../../../categories.json');
|
|
12
|
+
const rawData = readFileSync(categoriesPath, 'utf-8');
|
|
13
|
+
categoriesConfig = JSON.parse(rawData);
|
|
14
|
+
return categoriesConfig;
|
|
15
|
+
}
|
|
16
|
+
export function getCategories() {
|
|
17
|
+
const config = loadCategoriesConfig();
|
|
18
|
+
return Object.keys(config);
|
|
19
|
+
}
|
|
20
|
+
export function getMCPsByCategory(category) {
|
|
21
|
+
const config = loadCategoriesConfig();
|
|
22
|
+
const categoryConfig = config[category];
|
|
23
|
+
if (!categoryConfig) {
|
|
24
|
+
throw new Error(`Category "${category}" not found`);
|
|
25
|
+
}
|
|
26
|
+
return categoryConfig.mcps;
|
|
27
|
+
}
|
|
28
|
+
export function getCategoryDescription(category) {
|
|
29
|
+
const config = loadCategoriesConfig();
|
|
30
|
+
const categoryConfig = config[category];
|
|
31
|
+
if (!categoryConfig) {
|
|
32
|
+
throw new Error(`Category "${category}" not found`);
|
|
33
|
+
}
|
|
34
|
+
return categoryConfig.description;
|
|
35
|
+
}
|
|
36
|
+
export function getCategoryForMCP(mcpName) {
|
|
37
|
+
const config = loadCategoriesConfig();
|
|
38
|
+
for (const [categoryName, category] of Object.entries(config)) {
|
|
39
|
+
if (category.mcps.includes(mcpName)) {
|
|
40
|
+
return categoryName;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
export function getAllCategoriesConfig() {
|
|
46
|
+
return loadCategoriesConfig();
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=categoryUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"categoryUtils.js","sourceRoot":"","sources":["../../../src/graph/mcps/categoryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAUtC,IAAI,gBAAgB,GAA4B,IAAI,CAAC;AAKrD,SAAS,oBAAoB;IAC3B,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACtD,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,gBAAiB,CAAC;AAC3B,CAAC;AAMD,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;AAOD,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,cAAc,CAAC,WAAW,CAAC;AACpC,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IAEtC,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAMD,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpUtils.d.ts","sourceRoot":"","sources":["../../../src/graph/mcps/mcpUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAiCzB,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAGlE;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE7D;AAED,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAGtC;AAED,eAAO,MAAM,eAAe,UAAgB,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,MAAM,cAAc,KACnB,eAsBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,MAEtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,KACjB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CAiBrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpUtils.js","sourceRoot":"","sources":["../../../src/graph/mcps/mcpUtils.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAIL,WAAW,EACZ,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAIL,WAAW,EACZ,MAAM,0BAA0B,CAAC;AA4BlC,QAAA,MAAM,4BAA4B;;;;;;;;;EAGhC,CAAC;AACH,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAChF,KAAK,QAAQ,GAAG;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,KAAK,QAAQ,EACb,OAAO,2BAA2B;;;;;;;;;;;;EA4CnC,CAAC;AAEF,UAAU,WAAW,CAAC,CAAC,GAAG,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC;IACxB,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,eAAO,MAAM,aAAa,GAAI,qBAAqB,WAAW,EAAE,SAO/D,CAAC;AAOF,eAAO,MAAM,oBAAoB,GAAU,KAAK,QAAQ,kBAmCvD,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -8,7 +8,19 @@ import packageJson from '../package.json' with { type: 'json' };
|
|
|
8
8
|
import { graph } from './graph/graph.js';
|
|
9
9
|
import { logger } from './utils/logger.js';
|
|
10
10
|
import { AIMessage, AIMessageChunk, HumanMessage, ToolMessage, } from '@langchain/core/messages';
|
|
11
|
-
import { getAllMcpInfo } from './graph/mcps/
|
|
11
|
+
import { getAllMcpInfo } from './graph/mcps/mcpUtils.js';
|
|
12
|
+
const extractBaseSchema = (schema) => {
|
|
13
|
+
if (schema instanceof z.ZodObject) {
|
|
14
|
+
return schema;
|
|
15
|
+
}
|
|
16
|
+
if (schema instanceof z.ZodEffects) {
|
|
17
|
+
return extractBaseSchema(schema._def.schema);
|
|
18
|
+
}
|
|
19
|
+
if ('shape' in schema) {
|
|
20
|
+
return schema;
|
|
21
|
+
}
|
|
22
|
+
throw new Error('Unable to extract base schema from provided Zod schema');
|
|
23
|
+
};
|
|
12
24
|
const performStarknetActionsSchema = z.object({
|
|
13
25
|
userInput: z.string().describe('The actions that the user want to do'),
|
|
14
26
|
rawTools: z.boolean().optional().describe('Whether to use raw tools or not'),
|
|
@@ -81,7 +93,8 @@ export const RegisterToolInServer = async (env) => {
|
|
|
81
93
|
});
|
|
82
94
|
}
|
|
83
95
|
else {
|
|
84
|
-
|
|
96
|
+
const baseSchema = extractBaseSchema(tool.schema);
|
|
97
|
+
server.tool(tool.name, baseSchema.shape, async (input, extra) => {
|
|
85
98
|
const result = await tool.execute(env, input);
|
|
86
99
|
return {
|
|
87
100
|
content: [
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/mcps.json
CHANGED
|
@@ -332,7 +332,18 @@
|
|
|
332
332
|
"description": "Vesu protocol for deposit and withdrawal operations for earning positions",
|
|
333
333
|
"promptInfo": {
|
|
334
334
|
"expertise": "Vesu protocol yield farming",
|
|
335
|
-
"tools": [
|
|
335
|
+
"tools": [
|
|
336
|
+
"deposit_earn",
|
|
337
|
+
"withdraw_earn",
|
|
338
|
+
"deposit_multiply",
|
|
339
|
+
"withdraw_multiply",
|
|
340
|
+
"update_multiply",
|
|
341
|
+
"deposit_borrow",
|
|
342
|
+
"repay_borrow",
|
|
343
|
+
"get_pools",
|
|
344
|
+
"get_positions",
|
|
345
|
+
"get_tokens"
|
|
346
|
+
]
|
|
336
347
|
}
|
|
337
348
|
},
|
|
338
349
|
"ekubo": {
|
|
@@ -354,6 +365,7 @@
|
|
|
354
365
|
"get_pool_liquidity",
|
|
355
366
|
"get_pool_fees_per_liquidity",
|
|
356
367
|
"get_token_price",
|
|
368
|
+
"get_position",
|
|
357
369
|
"swap",
|
|
358
370
|
"create_position",
|
|
359
371
|
"add_liquidity",
|
|
@@ -370,7 +382,9 @@
|
|
|
370
382
|
"env": {
|
|
371
383
|
"EXTENDED_API_KEY": "",
|
|
372
384
|
"EXTENDED_API_URL": "",
|
|
373
|
-
"EXTENDED_PRIVATE_KEY": ""
|
|
385
|
+
"EXTENDED_PRIVATE_KEY": "",
|
|
386
|
+
"EXTENDED_BUILDER_ID": "",
|
|
387
|
+
"EXTENDED_BUILDER_FEE": ""
|
|
374
388
|
}
|
|
375
389
|
},
|
|
376
390
|
"description": "Extended high-performance perpetuals exchange on Starknet for trading derivatives with on-chain settlement",
|
|
@@ -441,10 +455,25 @@
|
|
|
441
455
|
"CAIRO_CODER_API_KEY": ""
|
|
442
456
|
}
|
|
443
457
|
},
|
|
444
|
-
"description": "AI-powered Cairo code
|
|
458
|
+
"description": "AI-powered Cairo code writing, generation, refactoring, debugging and implementation assistance. Use for: writing contracts, fixing compilation errors, implementing features, optimizing code, explaining Cairo syntax",
|
|
459
|
+
"promptInfo": {
|
|
460
|
+
"expertise": "Cairo smart contract code generation, refactoring, debugging, syntax, implementation patterns, and Cairo/Starknet programming best practices. NOT for general ecosystem questions",
|
|
461
|
+
"tools": ["assist_with_cairo"]
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"starknet-knowledge": {
|
|
465
|
+
"client": {
|
|
466
|
+
"command": "npx",
|
|
467
|
+
"args": ["-y", "@kasarlabs/starknet-knowledge-mcp@latest"],
|
|
468
|
+
"transport": "stdio",
|
|
469
|
+
"env": {
|
|
470
|
+
"CAIRO_CODER_API_KEY": ""
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
"description": "Starknet ecosystem general knowledge and documentation. Use for: learning about protocols (AVNU, Ekubo, etc.), understanding dApps, discovering ecosystem projects and community, getting protocol explanations, recent Starknet news. NOT for writing code",
|
|
445
474
|
"promptInfo": {
|
|
446
|
-
"expertise": "
|
|
447
|
-
"tools": ["
|
|
475
|
+
"expertise": "Starknet ecosystem protocols, community, dApps, services, technical concepts, architecture explanations, protocol comparisons, recent updates, and general non-coding knowledge. NOT for code generation",
|
|
476
|
+
"tools": ["starknet_general_knowledge"]
|
|
448
477
|
}
|
|
449
478
|
},
|
|
450
479
|
"mcp-doc": {
|
|
@@ -463,5 +492,54 @@
|
|
|
463
492
|
"mcp_doc_suggest_projects"
|
|
464
493
|
]
|
|
465
494
|
}
|
|
495
|
+
},
|
|
496
|
+
"starkgate": {
|
|
497
|
+
"client": {
|
|
498
|
+
"command": "npx",
|
|
499
|
+
"args": ["-y", "@kasarlabs/starkgate-mcp@latest"],
|
|
500
|
+
"transport": "stdio",
|
|
501
|
+
"env": {
|
|
502
|
+
"STARKNET_RPC_URL": "",
|
|
503
|
+
"STARKNET_ACCOUNT_ADDRESS": "",
|
|
504
|
+
"STARKNET_PRIVATE_KEY": "",
|
|
505
|
+
"ETHEREUM_RPC_URL": "",
|
|
506
|
+
"ETHEREUM_PRIVATE_KEY": ""
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
"description": "StarkGate bridge for transferring ETH and ERC20 tokens (USDC, USDT, WBTC, STRK) between Ethereum L1 and Starknet L2",
|
|
510
|
+
"promptInfo": {
|
|
511
|
+
"expertise": "Cross-layer bridging between Ethereum and Starknet",
|
|
512
|
+
"tools": ["bridge_l1_to_l2", "bridge_l2_to_l1"]
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"layerswap": {
|
|
516
|
+
"client": {
|
|
517
|
+
"command": "npx",
|
|
518
|
+
"args": ["-y", "@kasarlabs/layerswap-mcp@latest"],
|
|
519
|
+
"transport": "stdio",
|
|
520
|
+
"env": {
|
|
521
|
+
"LAYERSWAP_API_URL": "",
|
|
522
|
+
"STARKNET_RPC_URL": "",
|
|
523
|
+
"STARKNET_ACCOUNT_ADDRESS": "",
|
|
524
|
+
"STARKNET_PRIVATE_KEY": ""
|
|
525
|
+
}
|
|
526
|
+
},
|
|
527
|
+
"description": "Layerswap cross-chain bridge for transferring assets between different networks",
|
|
528
|
+
"promptInfo": {
|
|
529
|
+
"expertise": "Cross-chain asset transfers and bridge operations via Layerswap",
|
|
530
|
+
"tools": [
|
|
531
|
+
"get_networks",
|
|
532
|
+
"get_sources",
|
|
533
|
+
"get_destinations",
|
|
534
|
+
"get_swap_route_limits",
|
|
535
|
+
"get_quote",
|
|
536
|
+
"get_detailed_quote",
|
|
537
|
+
"get_transaction_status",
|
|
538
|
+
"get_swap_details",
|
|
539
|
+
"get_deposit_actions",
|
|
540
|
+
"get_all_swaps",
|
|
541
|
+
"create_swap"
|
|
542
|
+
]
|
|
543
|
+
}
|
|
466
544
|
}
|
|
467
545
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kasarlabs/ask-starknet-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,10 +10,7 @@
|
|
|
10
10
|
"build": "tsc && chmod 755 build/index.js",
|
|
11
11
|
"clean": "rm -rf build",
|
|
12
12
|
"clean:all": "rm -rf build node_modules",
|
|
13
|
-
"start": "node build/index.js"
|
|
14
|
-
"test:routing": "node routing-test.js",
|
|
15
|
-
"test": "node test-env-validation.js",
|
|
16
|
-
"test:integration": "node test-integration.js"
|
|
13
|
+
"start": "node build/index.js"
|
|
17
14
|
},
|
|
18
15
|
"files": [
|
|
19
16
|
"build",
|
|
@@ -32,14 +29,14 @@
|
|
|
32
29
|
"server"
|
|
33
30
|
],
|
|
34
31
|
"dependencies": {
|
|
35
|
-
"@langchain/anthropic": "
|
|
36
|
-
"@langchain/community": "
|
|
37
|
-
"@langchain/core": "
|
|
38
|
-
"@langchain/google-genai": "
|
|
39
|
-
"@langchain/langgraph": "
|
|
40
|
-
"@langchain/mcp-adapters": "
|
|
41
|
-
"@langchain/openai": "
|
|
42
|
-
"@modelcontextprotocol/sdk": "
|
|
32
|
+
"@langchain/anthropic": "0.3.27",
|
|
33
|
+
"@langchain/community": "0.3.55",
|
|
34
|
+
"@langchain/core": "0.3.72",
|
|
35
|
+
"@langchain/google-genai": "0.2.18",
|
|
36
|
+
"@langchain/langgraph": "0.4.9",
|
|
37
|
+
"@langchain/mcp-adapters": "0.6.0",
|
|
38
|
+
"@langchain/openai": "0.6.11",
|
|
39
|
+
"@modelcontextprotocol/sdk": "1.22.0",
|
|
43
40
|
"dotenv": "^16.4.7",
|
|
44
41
|
"zod": "^3.24.2"
|
|
45
42
|
},
|
|
@@ -53,5 +50,5 @@
|
|
|
53
50
|
"publishConfig": {
|
|
54
51
|
"access": "public"
|
|
55
52
|
},
|
|
56
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "bfb4d4b055bbfa15b8e745d414adf52ac5e158fb"
|
|
57
54
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/graph/mcps/utilities.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAiCzB,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAGlE;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAE7D;AAED,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAGtC;AAED,eAAO,MAAM,eAAe,UAAgB,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,MAAM,cAAc,KACnB,eAsBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,MAEtD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,KACjB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CAiBrB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../../../src/graph/mcps/utilities.ts"],"names":[],"mappings":"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"}
|