@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 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;AAU9C,eAAO,MAAM,aAAa,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK;;;;;;;;;;;;;;EA+EtE,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 { AvailableAgents, getMCPDescription } from '../mcps/utilities.js';
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
- selectedAgent: z.enum([END, ...AvailableAgents]),
9
- reasoning: z.string().describe('Why this agent was chosen'),
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 agentDescriptions = AvailableAgents.map((agent) => `- ${agent}: ${getMCPDescription(agent)}`).join('\n');
15
- const systemPrompt = `You are a supervisor that routes requests to specialized agents.
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 agents:
18
- ${agentDescriptions}
20
+ Available categories:
21
+ ${categoryDescriptions}
19
22
 
20
23
  Instructions:
21
- - Analyze the user's request
22
- - If the user's original request has been COMPLETED by a previous agent response, choose "__end__"
23
- - If a previous agent has already provided a complete answer or completed the requested action, choose "__end__"
24
- - Only choose a specialized agent if the request is NEW or INCOMPLETE
25
- - If no agent can handle the request, choose "__end__"
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
- IMPORTANT: Look at the conversation history. If an agent has already successfully completed the user's request (like creating an account, providing information, etc.), you MUST choose "__end__" to stop the conversation.
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: `Conversation history:\n${conversationHistory}\n\nOriginal user request: "${state.messages[0].content}"\n\nCurrent message: "${userInput}"\n\nHas the original request been completed? If yes, choose "__end__".`,
42
+ content: `User request: "${userInput}"\n\nWhich category should handle this request?`,
47
43
  },
48
44
  ]);
49
- logger.error(`Routing decision`, {
50
- selectedAgent: response.selectedAgent,
45
+ logger.info(`Selector routing decision`, {
46
+ selectedCategory: response.selectedCategory,
51
47
  reasoning: response.reasoning,
52
48
  });
53
- const isInitialRequest = state.messages.length === 1;
54
- const isNoAgentFound = response.selectedAgent === END;
55
- if (isInitialRequest && isNoAgentFound) {
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 specialized agent to handle this request: "${userInput}"\n\nPlease try rephrasing your request or use one of the available capabilities. You can ask "help" to see what I can do.`,
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
- routingInfo: {
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":"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"}
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;AAiC9C,eAAO,MAAM,eAAe,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK;;EAkFxE,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/utilities.js';
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.error(`Loaded ${tools.length} MCP tools: ${tools
24
+ logger.info(`Loaded ${tools.length} MCP tools: ${tools
16
25
  .map((tool) => tool.name)
17
26
  .join(', ')}`, {});
18
- const llm = createLLM(env);
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.error('Agent response with tools completed', {
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":"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"}
1
+ {"version":3,"file":"specialized.js","sourceRoot":"","sources":["../../../src/graph/agents/specialized.ts"],"names":[],"mappings":"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"}
@@ -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 routingFunction: (state: typeof GraphAnnotation.State) => Promise<"__end__" | "specialized">;
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;AAItD,eAAO,MAAM,eAAe;;;;;oBAaZ,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;EASpB,CAAC;AAEH,eAAO,MAAM,eAAe,GAAU,OAAO,OAAO,eAAe,CAAC,KAAK,uCAExE,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;oBAhBF,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;;;;;;oBADN,MAAM;oBACN,MAAM;;oBADN,MAAM;oBACN,MAAM;;;;;;;;;;;;;;;;;;;;;;EAqByB,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"}
@@ -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 routingFunction = async (state) => {
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', routingFunction)
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
@@ -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;AAG1D,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,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,aAAa,EAAE,eAAe,CAAC;KACvC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC;KAC1B,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"}
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"}
@@ -12,4 +12,4 @@ export declare const getMCPPromptInfo: (serverName: string) => {
12
12
  tools: string[];
13
13
  description: string;
14
14
  };
15
- //# sourceMappingURL=utilities.d.ts.map
15
+ //# sourceMappingURL=mcpUtils.d.ts.map
@@ -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"}
@@ -75,4 +75,4 @@ export const getMCPPromptInfo = (serverName) => {
75
75
  description: serverInfo.description,
76
76
  };
77
77
  };
78
- //# sourceMappingURL=utilities.js.map
78
+ //# sourceMappingURL=mcpUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpUtils.js","sourceRoot":"","sources":["../../../src/graph/mcps/mcpUtils.ts"],"names":[],"mappings":"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"}
@@ -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;AAIlC,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"}
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/utilities.js';
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
- server.tool(tool.name, tool.description, tool.schema.shape, async (input, extra) => {
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: [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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": ["vesu_deposit_earn", "vesu_withdraw_earn"]
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 assistance and Starknet general knowledge via Cairo Coder API",
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": "Cairo smart contract development, Starknet technical documentation, ecosystem knowledge, and recent Starknet news",
447
- "tools": ["assist_with_cairo", "starknet_general_knowledge"]
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.4",
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": "^0.3.27",
36
- "@langchain/community": "^0.3.55",
37
- "@langchain/core": "^0.3.72",
38
- "@langchain/google-genai": "^0.2.18",
39
- "@langchain/langgraph": "^0.4.9",
40
- "@langchain/mcp-adapters": "^0.6.0",
41
- "@langchain/openai": "^0.6.11",
42
- "@modelcontextprotocol/sdk": "^1.7.0",
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": "4212f968456c2a170aac99306a899ae43458e23c"
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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"}