keywordgraph-mcp-server 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +629 -0
  3. package/bin/infranodus-mcp-server.js +8 -0
  4. package/bin/keywordgraph-mcp-server.js +8 -0
  5. package/bin/mcp-server.js +56 -0
  6. package/dist/api/client.d.ts +3 -0
  7. package/dist/api/client.d.ts.map +1 -0
  8. package/dist/api/client.js +30 -0
  9. package/dist/api/client.js.map +1 -0
  10. package/dist/api/config-store.d.ts +4 -0
  11. package/dist/api/config-store.d.ts.map +1 -0
  12. package/dist/api/config-store.js +12 -0
  13. package/dist/api/config-store.js.map +1 -0
  14. package/dist/auth/oauth-provider.d.ts +56 -0
  15. package/dist/auth/oauth-provider.d.ts.map +1 -0
  16. package/dist/auth/oauth-provider.js +295 -0
  17. package/dist/auth/oauth-provider.js.map +1 -0
  18. package/dist/auth/types.d.ts +93 -0
  19. package/dist/auth/types.d.ts.map +1 -0
  20. package/dist/auth/types.js +5 -0
  21. package/dist/auth/types.js.map +1 -0
  22. package/dist/config/brand.d.ts +58 -0
  23. package/dist/config/brand.d.ts.map +1 -0
  24. package/dist/config/brand.js +97 -0
  25. package/dist/config/brand.js.map +1 -0
  26. package/dist/config/index.d.ts +26 -0
  27. package/dist/config/index.d.ts.map +1 -0
  28. package/dist/config/index.js +20 -0
  29. package/dist/config/index.js.map +1 -0
  30. package/dist/http-server.d.ts +6 -0
  31. package/dist/http-server.d.ts.map +1 -0
  32. package/dist/http-server.js +907 -0
  33. package/dist/http-server.js.map +1 -0
  34. package/dist/index.d.ts +29 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +136 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/instructions.d.ts +11 -0
  39. package/dist/instructions.d.ts.map +1 -0
  40. package/dist/instructions.js +38 -0
  41. package/dist/instructions.js.map +1 -0
  42. package/dist/prompts/index.d.ts +24 -0
  43. package/dist/prompts/index.d.ts.map +1 -0
  44. package/dist/prompts/index.js +394 -0
  45. package/dist/prompts/index.js.map +1 -0
  46. package/dist/resources/about.d.ts +17 -0
  47. package/dist/resources/about.d.ts.map +1 -0
  48. package/dist/resources/about.js +64 -0
  49. package/dist/resources/about.js.map +1 -0
  50. package/dist/resources/llms-txt.d.ts +33 -0
  51. package/dist/resources/llms-txt.d.ts.map +1 -0
  52. package/dist/resources/llms-txt.js +65 -0
  53. package/dist/resources/llms-txt.js.map +1 -0
  54. package/dist/schemas/index.d.ts +1178 -0
  55. package/dist/schemas/index.d.ts.map +1 -0
  56. package/dist/schemas/index.js +1121 -0
  57. package/dist/schemas/index.js.map +1 -0
  58. package/dist/tools/addMemory.d.ts +36 -0
  59. package/dist/tools/addMemory.d.ts.map +1 -0
  60. package/dist/tools/addMemory.js +82 -0
  61. package/dist/tools/addMemory.js.map +1 -0
  62. package/dist/tools/analyzeExistingGraph.d.ts +37 -0
  63. package/dist/tools/analyzeExistingGraph.d.ts.map +1 -0
  64. package/dist/tools/analyzeExistingGraph.js +85 -0
  65. package/dist/tools/analyzeExistingGraph.js.map +1 -0
  66. package/dist/tools/analyzeLlmResults.d.ts +37 -0
  67. package/dist/tools/analyzeLlmResults.d.ts.map +1 -0
  68. package/dist/tools/analyzeLlmResults.js +165 -0
  69. package/dist/tools/analyzeLlmResults.js.map +1 -0
  70. package/dist/tools/analyzeText.d.ts +36 -0
  71. package/dist/tools/analyzeText.d.ts.map +1 -0
  72. package/dist/tools/analyzeText.js +97 -0
  73. package/dist/tools/analyzeText.js.map +1 -0
  74. package/dist/tools/createKnowledgeGraph.d.ts +36 -0
  75. package/dist/tools/createKnowledgeGraph.d.ts.map +1 -0
  76. package/dist/tools/createKnowledgeGraph.js +105 -0
  77. package/dist/tools/createKnowledgeGraph.js.map +1 -0
  78. package/dist/tools/developConceptualBridges.d.ts +34 -0
  79. package/dist/tools/developConceptualBridges.d.ts.map +1 -0
  80. package/dist/tools/developConceptualBridges.js +107 -0
  81. package/dist/tools/developConceptualBridges.js.map +1 -0
  82. package/dist/tools/developLatentConcepts copy.d.ts +27 -0
  83. package/dist/tools/developLatentConcepts copy.d.ts.map +1 -0
  84. package/dist/tools/developLatentConcepts copy.js +68 -0
  85. package/dist/tools/developLatentConcepts copy.js.map +1 -0
  86. package/dist/tools/developLatentConcepts.d.ts +27 -0
  87. package/dist/tools/developLatentConcepts.d.ts.map +1 -0
  88. package/dist/tools/developLatentConcepts.js +68 -0
  89. package/dist/tools/developLatentConcepts.js.map +1 -0
  90. package/dist/tools/developLatentTopics.d.ts +34 -0
  91. package/dist/tools/developLatentTopics.d.ts.map +1 -0
  92. package/dist/tools/developLatentTopics.js +107 -0
  93. package/dist/tools/developLatentTopics.js.map +1 -0
  94. package/dist/tools/developTextTool.d.ts +39 -0
  95. package/dist/tools/developTextTool.d.ts.map +1 -0
  96. package/dist/tools/developTextTool.js +210 -0
  97. package/dist/tools/developTextTool.js.map +1 -0
  98. package/dist/tools/generateContentGaps.d.ts +32 -0
  99. package/dist/tools/generateContentGaps.d.ts.map +1 -0
  100. package/dist/tools/generateContentGaps.js +96 -0
  101. package/dist/tools/generateContentGaps.js.map +1 -0
  102. package/dist/tools/generateContextualHint.d.ts +33 -0
  103. package/dist/tools/generateContextualHint.d.ts.map +1 -0
  104. package/dist/tools/generateContextualHint.js +99 -0
  105. package/dist/tools/generateContextualHint.js.map +1 -0
  106. package/dist/tools/generateDifferenceGraphFromTexts.d.ts +52 -0
  107. package/dist/tools/generateDifferenceGraphFromTexts.d.ts.map +1 -0
  108. package/dist/tools/generateDifferenceGraphFromTexts.js +160 -0
  109. package/dist/tools/generateDifferenceGraphFromTexts.js.map +1 -0
  110. package/dist/tools/generateGoogleResultsVsQueriesGraph.d.ts +37 -0
  111. package/dist/tools/generateGoogleResultsVsQueriesGraph.d.ts.map +1 -0
  112. package/dist/tools/generateGoogleResultsVsQueriesGraph.js +84 -0
  113. package/dist/tools/generateGoogleResultsVsQueriesGraph.js.map +1 -0
  114. package/dist/tools/generateGoogleSearchQueriesGraph.d.ts +39 -0
  115. package/dist/tools/generateGoogleSearchQueriesGraph.d.ts.map +1 -0
  116. package/dist/tools/generateGoogleSearchQueriesGraph.js +88 -0
  117. package/dist/tools/generateGoogleSearchQueriesGraph.js.map +1 -0
  118. package/dist/tools/generateGoogleSearchResultsGraph.d.ts +38 -0
  119. package/dist/tools/generateGoogleSearchResultsGraph.d.ts.map +1 -0
  120. package/dist/tools/generateGoogleSearchResultsGraph.js +88 -0
  121. package/dist/tools/generateGoogleSearchResultsGraph.js.map +1 -0
  122. package/dist/tools/generateKnowledgeGraph.d.ts +35 -0
  123. package/dist/tools/generateKnowledgeGraph.d.ts.map +1 -0
  124. package/dist/tools/generateKnowledgeGraph.js +105 -0
  125. package/dist/tools/generateKnowledgeGraph.js.map +1 -0
  126. package/dist/tools/generateMergedGraphFromTexts.d.ts +52 -0
  127. package/dist/tools/generateMergedGraphFromTexts.d.ts.map +1 -0
  128. package/dist/tools/generateMergedGraphFromTexts.js +160 -0
  129. package/dist/tools/generateMergedGraphFromTexts.js.map +1 -0
  130. package/dist/tools/generateOntologyGraph.d.ts +36 -0
  131. package/dist/tools/generateOntologyGraph.d.ts.map +1 -0
  132. package/dist/tools/generateOntologyGraph.js +171 -0
  133. package/dist/tools/generateOntologyGraph.js.map +1 -0
  134. package/dist/tools/generateOverlapGraphFromTexts.d.ts +52 -0
  135. package/dist/tools/generateOverlapGraphFromTexts.d.ts.map +1 -0
  136. package/dist/tools/generateOverlapGraphFromTexts.js +159 -0
  137. package/dist/tools/generateOverlapGraphFromTexts.js.map +1 -0
  138. package/dist/tools/generateResearchIdeas.d.ts +39 -0
  139. package/dist/tools/generateResearchIdeas.d.ts.map +1 -0
  140. package/dist/tools/generateResearchIdeas.js +117 -0
  141. package/dist/tools/generateResearchIdeas.js.map +1 -0
  142. package/dist/tools/generateResearchQuestions.d.ts +37 -0
  143. package/dist/tools/generateResearchQuestions.d.ts.map +1 -0
  144. package/dist/tools/generateResearchQuestions.js +111 -0
  145. package/dist/tools/generateResearchQuestions.js.map +1 -0
  146. package/dist/tools/generateResearchQuestionsFromGraph.d.ts +34 -0
  147. package/dist/tools/generateResearchQuestionsFromGraph.d.ts.map +1 -0
  148. package/dist/tools/generateResearchQuestionsFromGraph.js +75 -0
  149. package/dist/tools/generateResearchQuestionsFromGraph.js.map +1 -0
  150. package/dist/tools/generateResponses.d.ts +35 -0
  151. package/dist/tools/generateResponses.d.ts.map +1 -0
  152. package/dist/tools/generateResponses.js +112 -0
  153. package/dist/tools/generateResponses.js.map +1 -0
  154. package/dist/tools/generateResponsesFromGraph.d.ts +33 -0
  155. package/dist/tools/generateResponsesFromGraph.d.ts.map +1 -0
  156. package/dist/tools/generateResponsesFromGraph.js +74 -0
  157. package/dist/tools/generateResponsesFromGraph.js.map +1 -0
  158. package/dist/tools/generateSEOGraphTool.d.ts +39 -0
  159. package/dist/tools/generateSEOGraphTool.d.ts.map +1 -0
  160. package/dist/tools/generateSEOGraphTool.js +235 -0
  161. package/dist/tools/generateSEOGraphTool.js.map +1 -0
  162. package/dist/tools/generateTextOverview.d.ts +31 -0
  163. package/dist/tools/generateTextOverview.d.ts.map +1 -0
  164. package/dist/tools/generateTextOverview.js +68 -0
  165. package/dist/tools/generateTextOverview.js.map +1 -0
  166. package/dist/tools/generateTopicalClusters.d.ts +34 -0
  167. package/dist/tools/generateTopicalClusters.d.ts.map +1 -0
  168. package/dist/tools/generateTopicalClusters.js +134 -0
  169. package/dist/tools/generateTopicalClusters.js.map +1 -0
  170. package/dist/tools/getMemory.d.ts +32 -0
  171. package/dist/tools/getMemory.d.ts.map +1 -0
  172. package/dist/tools/getMemory.js +121 -0
  173. package/dist/tools/getMemory.js.map +1 -0
  174. package/dist/tools/index.d.ts +30 -0
  175. package/dist/tools/index.d.ts.map +1 -0
  176. package/dist/tools/index.js +30 -0
  177. package/dist/tools/index.js.map +1 -0
  178. package/dist/tools/listGraphs.d.ts +37 -0
  179. package/dist/tools/listGraphs.d.ts.map +1 -0
  180. package/dist/tools/listGraphs.js +127 -0
  181. package/dist/tools/listGraphs.js.map +1 -0
  182. package/dist/tools/optimizeTextStructure.d.ts +34 -0
  183. package/dist/tools/optimizeTextStructure.d.ts.map +1 -0
  184. package/dist/tools/optimizeTextStructure.js +108 -0
  185. package/dist/tools/optimizeTextStructure.js.map +1 -0
  186. package/dist/tools/retrieveContextForPromptFromGraph.d.ts +37 -0
  187. package/dist/tools/retrieveContextForPromptFromGraph.d.ts.map +1 -0
  188. package/dist/tools/retrieveContextForPromptFromGraph.js +80 -0
  189. package/dist/tools/retrieveContextForPromptFromGraph.js.map +1 -0
  190. package/dist/tools/searchGraph.d.ts +27 -0
  191. package/dist/tools/searchGraph.d.ts.map +1 -0
  192. package/dist/tools/searchGraph.js +57 -0
  193. package/dist/tools/searchGraph.js.map +1 -0
  194. package/dist/tools/searchGraphs.d.ts +33 -0
  195. package/dist/tools/searchGraphs.d.ts.map +1 -0
  196. package/dist/tools/searchGraphs.js +67 -0
  197. package/dist/tools/searchGraphs.js.map +1 -0
  198. package/dist/tools/searchGraphsFetch.d.ts +31 -0
  199. package/dist/tools/searchGraphsFetch.d.ts.map +1 -0
  200. package/dist/tools/searchGraphsFetch.js +78 -0
  201. package/dist/tools/searchGraphsFetch.js.map +1 -0
  202. package/dist/tools/sequentialThinking.d.ts +71 -0
  203. package/dist/tools/sequentialThinking.d.ts.map +1 -0
  204. package/dist/tools/sequentialThinking.js +218 -0
  205. package/dist/tools/sequentialThinking.js.map +1 -0
  206. package/dist/types/index.d.ts +378 -0
  207. package/dist/types/index.d.ts.map +1 -0
  208. package/dist/types/index.js +2 -0
  209. package/dist/types/index.js.map +1 -0
  210. package/dist/utils/progress.d.ts +21 -0
  211. package/dist/utils/progress.d.ts.map +1 -0
  212. package/dist/utils/progress.js +50 -0
  213. package/dist/utils/progress.js.map +1 -0
  214. package/dist/utils/transformers.d.ts +31 -0
  215. package/dist/utils/transformers.d.ts.map +1 -0
  216. package/dist/utils/transformers.js +484 -0
  217. package/dist/utils/transformers.js.map +1 -0
  218. package/dist/utils/urlContent.d.ts +35 -0
  219. package/dist/utils/urlContent.d.ts.map +1 -0
  220. package/dist/utils/urlContent.js +87 -0
  221. package/dist/utils/urlContent.js.map +1 -0
  222. package/llms-full.infranodus.txt +469 -0
  223. package/llms-full.keywordgraph.txt +469 -0
  224. package/llms-full.txt +469 -0
  225. package/llms.infranodus.txt +64 -0
  226. package/llms.keywordgraph.txt +64 -0
  227. package/llms.txt +64 -0
  228. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developLatentTopics.d.ts","sourceRoot":"","sources":["../../src/tools/developLatentTopics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,2BAA2B,EAE3B,MAAM,qBAAqB,CAAC;AAc7B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;sBAaX,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC;;;;;;;;;;;;CA0FnE,CAAC"}
@@ -0,0 +1,107 @@
1
+ import { DevelopLatentConceptsSchemaBase, } from "../schemas/index.js";
2
+ import { makeInfraNodusRequest } from "../api/client.js";
3
+ import { fetchUrlContentAsText } from "../utils/urlContent.js";
4
+ import { extractLatentTopicsIdeas } from "../utils/transformers.js";
5
+ function errorContent(message) {
6
+ return {
7
+ content: [
8
+ { type: "text", text: JSON.stringify({ error: message }) },
9
+ ],
10
+ isError: true,
11
+ };
12
+ }
13
+ export const developLatentTopicsTool = {
14
+ name: "develop_latent_topics",
15
+ definition: {
16
+ title: "Develop Latent Topics in Text or Graph",
17
+ description: "Analyze text or an existing graph, extract underdeveloped topics and get an idea on how to develop them. Provide either text, url, or graphName.",
18
+ inputSchema: DevelopLatentConceptsSchemaBase.shape,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ idempotentHint: true,
22
+ destructiveHint: false,
23
+ },
24
+ },
25
+ handler: async (params) => {
26
+ try {
27
+ const queryParams = new URLSearchParams({
28
+ doNotSave: "true",
29
+ addStats: "true",
30
+ optimize: "latent",
31
+ includeStatements: "false",
32
+ includeGraphSummary: "false",
33
+ extendedGraphSummary: "true",
34
+ includeGraph: "false",
35
+ aiTopics: "true",
36
+ });
37
+ const endpoint = `/graphAndAdvice?${queryParams.toString()}`;
38
+ let requestBody;
39
+ if (params.graphName?.trim()) {
40
+ requestBody = {
41
+ name: params.graphName,
42
+ aiTopics: "true",
43
+ requestMode: params.requestMode ?? "transcend",
44
+ modelToUse: params.modelToUse ?? "gpt-4o",
45
+ };
46
+ }
47
+ else {
48
+ let contentText;
49
+ if (params.url) {
50
+ const result = await fetchUrlContentAsText(params.url);
51
+ if (!result.ok)
52
+ return errorContent(result.error);
53
+ contentText = result.contentText;
54
+ if (!contentText?.trim())
55
+ return errorContent("URL did not return any text content");
56
+ }
57
+ else if (params.text?.trim()) {
58
+ contentText = params.text;
59
+ }
60
+ else {
61
+ return errorContent("Provide either text, url, or graphName for analysis");
62
+ }
63
+ requestBody = {
64
+ text: contentText,
65
+ aiTopics: "true",
66
+ requestMode: params.requestMode ?? "transcend",
67
+ modelToUse: params.modelToUse ?? "gpt-4o",
68
+ };
69
+ }
70
+ const response = await makeInfraNodusRequest(endpoint, requestBody);
71
+ const latentConceptsIdeas = extractLatentTopicsIdeas(response);
72
+ if (response.error) {
73
+ return {
74
+ content: [
75
+ {
76
+ type: "text",
77
+ text: `Error: ${response.error}`,
78
+ },
79
+ ],
80
+ isError: true,
81
+ };
82
+ }
83
+ return {
84
+ content: [
85
+ {
86
+ type: "text",
87
+ text: JSON.stringify(latentConceptsIdeas, null, 2),
88
+ },
89
+ ],
90
+ };
91
+ }
92
+ catch (error) {
93
+ return {
94
+ content: [
95
+ {
96
+ type: "text",
97
+ text: JSON.stringify({
98
+ error: error instanceof Error ? error.message : String(error),
99
+ }),
100
+ },
101
+ ],
102
+ isError: true,
103
+ };
104
+ }
105
+ },
106
+ };
107
+ //# sourceMappingURL=developLatentTopics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developLatentTopics.js","sourceRoot":"","sources":["../../src/tools/developLatentTopics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { z } from "zod";
2
+ import { DevelopTextToolSchema } from "../schemas/index.js";
3
+ export declare const developTextTool: {
4
+ name: string;
5
+ definition: {
6
+ title: string;
7
+ description: string;
8
+ inputSchema: {
9
+ text: z.ZodOptional<z.ZodString>;
10
+ url: z.ZodOptional<z.ZodString>;
11
+ graphName: z.ZodOptional<z.ZodString>;
12
+ useSeveralGaps: z.ZodDefault<z.ZodBoolean>;
13
+ gapDepth: z.ZodDefault<z.ZodNumber>;
14
+ transcendDiscourse: z.ZodDefault<z.ZodBoolean>;
15
+ modelToUse: z.ZodDefault<z.ZodEnum<["claude-opus-4.6", "claude-sonnet-4.6", "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite", "grok-4.1-fast-non-reasoning", "grok-4.1-fast-reasoning", "gpt-4o", "gpt-4o-mini", "gpt-5.4", "gpt-5.4-mini"]>>;
16
+ };
17
+ annotations: {
18
+ readOnlyHint: boolean;
19
+ idempotentHint: boolean;
20
+ destructiveHint: boolean;
21
+ };
22
+ };
23
+ handler: (params: z.infer<typeof DevelopTextToolSchema>, context?: {
24
+ progressToken?: string;
25
+ sendNotification?: (notification: any) => void;
26
+ }) => Promise<{
27
+ content: {
28
+ type: "text";
29
+ text: string;
30
+ }[];
31
+ isError: boolean;
32
+ } | {
33
+ content: {
34
+ type: "text";
35
+ text: string;
36
+ }[];
37
+ }>;
38
+ };
39
+ //# sourceMappingURL=developTextTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developTextTool.d.ts","sourceRoot":"","sources":["../../src/tools/developTextTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,qBAAqB,EAErB,MAAM,qBAAqB,CAAC;AAmB7B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;sBAclB,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,YACnC;QACT,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/C;;;;;;;;;;;;CAqPF,CAAC"}
@@ -0,0 +1,210 @@
1
+ import { DevelopTextToolSchemaBase, } from "../schemas/index.js";
2
+ import { makeInfraNodusRequest } from "../api/client.js";
3
+ import { fetchUrlContentAsText } from "../utils/urlContent.js";
4
+ import { generateResearchQuestions, extractLatentTopicsIdeas, generateGaps, extractLatentConceptsIdeas, } from "../utils/transformers.js";
5
+ function errorContent(message) {
6
+ return {
7
+ content: [
8
+ { type: "text", text: JSON.stringify({ error: message }) },
9
+ ],
10
+ isError: true,
11
+ };
12
+ }
13
+ export const developTextTool = {
14
+ name: "develop_text_tool",
15
+ definition: {
16
+ title: "Develop a Text Based on Content Gaps and Latent Topics",
17
+ description: "Analyze text or an existing graph to extract research questions, develop latent topics, and identify content gaps in a single workflow with progress tracking. Provide either text, url, or graphName.",
18
+ inputSchema: DevelopTextToolSchemaBase.shape,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ idempotentHint: true,
22
+ destructiveHint: false,
23
+ },
24
+ },
25
+ handler: async (params, context) => {
26
+ try {
27
+ const useGraph = params.graphName?.trim();
28
+ let contentText;
29
+ if (!useGraph) {
30
+ if (params.url) {
31
+ const result = await fetchUrlContentAsText(params.url);
32
+ if (!result.ok)
33
+ return errorContent(result.error);
34
+ contentText = result.contentText;
35
+ if (!contentText?.trim())
36
+ return errorContent("URL did not return any text content");
37
+ }
38
+ else if (params.text?.trim()) {
39
+ contentText = params.text;
40
+ }
41
+ else {
42
+ return errorContent("Provide either text, url, or graphName for analysis");
43
+ }
44
+ }
45
+ // Create progress helper
46
+ const progress = {
47
+ report: async (percentage, message) => {
48
+ if (context?.progressToken && context?.sendNotification) {
49
+ await context.sendNotification({
50
+ method: "notifications/progress",
51
+ params: {
52
+ progressToken: context.progressToken,
53
+ progress: percentage,
54
+ total: 100,
55
+ message,
56
+ },
57
+ });
58
+ }
59
+ },
60
+ };
61
+ // Step 1: Generate Research Questions
62
+ await progress.report(10, "🔍 Generating research questions and topical gaps from text based on its structure...");
63
+ const queryParamsResearch = new URLSearchParams({
64
+ doNotSave: "true",
65
+ addStats: "true",
66
+ optimize: "optimize",
67
+ includeStatements: "false",
68
+ includeGraphSummary: "false",
69
+ extendedGraphSummary: "true",
70
+ includeGraph: "false",
71
+ aiTopics: "true",
72
+ extendedAdvice: params.useSeveralGaps ? "true" : "false",
73
+ gapDepth: params.gapDepth ? params.gapDepth.toString() : "0",
74
+ });
75
+ const endpointResearch = `/graphAndAdvice?${queryParamsResearch.toString()}`;
76
+ const requestBodyResearch = useGraph
77
+ ? {
78
+ name: params.graphName,
79
+ aiTopics: "true",
80
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
81
+ modelToUse: params.modelToUse ?? "gpt-4o",
82
+ }
83
+ : {
84
+ text: contentText,
85
+ aiTopics: "true",
86
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
87
+ modelToUse: params.modelToUse ?? "gpt-4o",
88
+ };
89
+ const researchResponse = await makeInfraNodusRequest(endpointResearch, requestBodyResearch);
90
+ // Extract content gaps and AI advice from research questions response
91
+ const researchQuestions = generateResearchQuestions(researchResponse);
92
+ const contentGaps = generateGaps(researchResponse);
93
+ await progress.report(40, `✅ Generated ${researchQuestions.questions?.length || 0} research questions`);
94
+ // Step 2: Develop Latent Topics
95
+ await progress.report(40, "🎯 Analyzing text for latent topics...");
96
+ const queryParamsLatent = new URLSearchParams({
97
+ doNotSave: "true",
98
+ addStats: "true",
99
+ optimize: "latent",
100
+ includeStatements: "false",
101
+ includeGraphSummary: "false",
102
+ extendedGraphSummary: "true",
103
+ includeGraph: "false",
104
+ aiTopics: "true",
105
+ });
106
+ const endpointLatent = `/graphAndAdvice?${queryParamsLatent.toString()}`;
107
+ const requestBodyLatent = useGraph
108
+ ? {
109
+ name: params.graphName,
110
+ aiTopics: "true",
111
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
112
+ modelToUse: params.modelToUse ?? "gpt-4o",
113
+ }
114
+ : {
115
+ text: contentText,
116
+ aiTopics: "true",
117
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
118
+ modelToUse: params.modelToUse ?? "gpt-4o",
119
+ };
120
+ const latentResponse = await makeInfraNodusRequest(endpointLatent, requestBodyLatent);
121
+ const latentTopics = extractLatentTopicsIdeas(latentResponse);
122
+ await progress.report(60, `✅ Identified ${latentTopics.latentTopicsToDevelop?.length || 0} latent topics to develop`);
123
+ // Step 3: Generate Content Gaps
124
+ await progress.report(70, "🔎 Identifying conceptual bridges in the text...");
125
+ const queryParamsBridges = new URLSearchParams({
126
+ doNotSave: "true",
127
+ addStats: "true",
128
+ optimize: "imagine",
129
+ includeStatements: "false",
130
+ includeGraphSummary: "false",
131
+ extendedGraphSummary: "true",
132
+ includeGraph: "false",
133
+ aiTopics: "true",
134
+ });
135
+ const endpointBridges = `/graphAndAdvice?${queryParamsBridges.toString()}`;
136
+ const requestBodyBridges = useGraph
137
+ ? {
138
+ name: params.graphName,
139
+ aiTopics: "true",
140
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
141
+ modelToUse: params.modelToUse ?? "gpt-4o",
142
+ }
143
+ : {
144
+ text: contentText,
145
+ aiTopics: "true",
146
+ requestMode: params.transcendDiscourse ? "transcend" : "question",
147
+ modelToUse: params.modelToUse ?? "gpt-4o",
148
+ };
149
+ const conceptualBridgesResponse = await makeInfraNodusRequest(endpointBridges, requestBodyBridges);
150
+ const conceptualBridges = extractLatentConceptsIdeas(conceptualBridgesResponse);
151
+ await progress.report(90, `✅ Identified ${conceptualBridges.latentConceptsToDevelop?.length || 0} conceptual bridges to develop`);
152
+ // Compile final results
153
+ const results = {
154
+ contentGapIdeas: researchQuestions.questions || [],
155
+ latentTopicsIdeas: latentTopics.ideas || [],
156
+ conceptualBridgesIdeas: conceptualBridges.ideas || [],
157
+ contentGaps: contentGaps.contentGaps || [],
158
+ conceptualBridges: conceptualBridges.latentConceptsToDevelop || [],
159
+ latentTopics: latentTopics.latentTopicsToDevelop || [],
160
+ mainTopics: latentTopics.mainTopics || [],
161
+ };
162
+ await progress.report(100, "🎉 Analysis complete!");
163
+ // Handle errors from any of the responses
164
+ if (researchResponse.error ||
165
+ latentResponse.error ||
166
+ conceptualBridgesResponse.error) {
167
+ const errors = [
168
+ researchResponse.error &&
169
+ `Research Questions: ${researchResponse.error}`,
170
+ latentResponse.error && `Latent Topics: ${latentResponse.error}`,
171
+ conceptualBridgesResponse.error &&
172
+ `Conceptual Gaps: ${conceptualBridgesResponse.error}`,
173
+ ]
174
+ .filter(Boolean)
175
+ .join("\n");
176
+ return {
177
+ content: [
178
+ {
179
+ type: "text",
180
+ text: `Errors encountered:\n${errors}`,
181
+ },
182
+ ],
183
+ isError: true,
184
+ };
185
+ }
186
+ return {
187
+ content: [
188
+ {
189
+ type: "text",
190
+ text: JSON.stringify(results, null, 2),
191
+ },
192
+ ],
193
+ };
194
+ }
195
+ catch (error) {
196
+ return {
197
+ content: [
198
+ {
199
+ type: "text",
200
+ text: JSON.stringify({
201
+ error: error instanceof Error ? error.message : String(error),
202
+ }),
203
+ },
204
+ ],
205
+ isError: true,
206
+ };
207
+ }
208
+ },
209
+ };
210
+ //# sourceMappingURL=developTextTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developTextTool.js","sourceRoot":"","sources":["../../src/tools/developTextTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { GenerateContentGapsSchema } from "../schemas/index.js";
3
+ export declare const generateContentGapsTool: {
4
+ name: string;
5
+ definition: {
6
+ title: string;
7
+ description: string;
8
+ inputSchema: {
9
+ text: z.ZodOptional<z.ZodString>;
10
+ url: z.ZodOptional<z.ZodString>;
11
+ graphName: z.ZodOptional<z.ZodString>;
12
+ };
13
+ annotations: {
14
+ readOnlyHint: boolean;
15
+ idempotentHint: boolean;
16
+ destructiveHint: boolean;
17
+ };
18
+ };
19
+ handler: (params: z.infer<typeof GenerateContentGapsSchema>) => Promise<{
20
+ content: {
21
+ type: "text";
22
+ text: string;
23
+ }[];
24
+ isError: boolean;
25
+ } | {
26
+ content: {
27
+ type: "text";
28
+ text: string;
29
+ }[];
30
+ }>;
31
+ };
32
+ //# sourceMappingURL=generateContentGaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateContentGaps.d.ts","sourceRoot":"","sources":["../../src/tools/generateContentGaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,yBAAyB,EAEzB,MAAM,qBAAqB,CAAC;AAc7B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;sBAaX,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC;;;;;;;;;;;;CAyEjE,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { GenerateContentGapsSchemaBase, } from "../schemas/index.js";
2
+ import { makeInfraNodusRequest } from "../api/client.js";
3
+ import { fetchUrlContentAsText } from "../utils/urlContent.js";
4
+ import { generateGaps } from "../utils/transformers.js";
5
+ function errorContent(message) {
6
+ return {
7
+ content: [
8
+ { type: "text", text: JSON.stringify({ error: message }) },
9
+ ],
10
+ isError: true,
11
+ };
12
+ }
13
+ export const generateContentGapsTool = {
14
+ name: "generate_content_gaps",
15
+ definition: {
16
+ title: "Generate Content Gaps",
17
+ description: "Generate content gaps from text, URL, or an existing graph using knowledge graph analysis.",
18
+ inputSchema: GenerateContentGapsSchemaBase.shape,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ idempotentHint: true,
22
+ destructiveHint: false,
23
+ },
24
+ },
25
+ handler: async (params) => {
26
+ try {
27
+ const queryParams = new URLSearchParams({
28
+ doNotSave: "true",
29
+ addStats: "true",
30
+ includeGraphSummary: "false",
31
+ extendedGraphSummary: "true",
32
+ includeGraph: "false",
33
+ includeStatements: "false",
34
+ aiTopics: "true",
35
+ });
36
+ const endpoint = `/graphAndStatements?${queryParams.toString()}`;
37
+ let requestBody;
38
+ if (params.graphName?.trim()) {
39
+ requestBody = { name: params.graphName };
40
+ }
41
+ else {
42
+ let contentText;
43
+ if (params.url) {
44
+ const result = await fetchUrlContentAsText(params.url);
45
+ if (!result.ok)
46
+ return errorContent(result.error);
47
+ contentText = result.contentText;
48
+ if (!contentText?.trim())
49
+ return errorContent("URL did not return any text content");
50
+ }
51
+ else if (params.text?.trim()) {
52
+ contentText = params.text;
53
+ }
54
+ else {
55
+ return errorContent("Provide either text, url, or graphName for analysis");
56
+ }
57
+ requestBody = { text: contentText };
58
+ }
59
+ const response = await makeInfraNodusRequest(endpoint, requestBody);
60
+ if (response.error) {
61
+ return {
62
+ content: [
63
+ {
64
+ type: "text",
65
+ text: JSON.stringify({ error: response.error }),
66
+ },
67
+ ],
68
+ isError: true,
69
+ };
70
+ }
71
+ const insights = generateGaps(response);
72
+ return {
73
+ content: [
74
+ {
75
+ type: "text",
76
+ text: JSON.stringify(insights, null, 2),
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ catch (error) {
82
+ return {
83
+ content: [
84
+ {
85
+ type: "text",
86
+ text: JSON.stringify({
87
+ error: error instanceof Error ? error.message : String(error),
88
+ }),
89
+ },
90
+ ],
91
+ isError: true,
92
+ };
93
+ }
94
+ },
95
+ };
96
+ //# sourceMappingURL=generateContentGaps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateContentGaps.js","sourceRoot":"","sources":["../../src/tools/generateContentGaps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { generateContextualHintSchema } from "../schemas/index.js";
3
+ export declare const generateContextualHintTool: {
4
+ name: string;
5
+ definition: {
6
+ title: string;
7
+ description: string;
8
+ inputSchema: {
9
+ text: z.ZodOptional<z.ZodString>;
10
+ url: z.ZodOptional<z.ZodString>;
11
+ graphName: z.ZodOptional<z.ZodString>;
12
+ userName: z.ZodOptional<z.ZodString>;
13
+ };
14
+ annotations: {
15
+ readOnlyHint: boolean;
16
+ idempotentHint: boolean;
17
+ destructiveHint: boolean;
18
+ };
19
+ };
20
+ handler: (params: z.infer<typeof generateContextualHintSchema>) => Promise<{
21
+ content: {
22
+ type: "text";
23
+ text: string;
24
+ }[];
25
+ isError: boolean;
26
+ } | {
27
+ content: {
28
+ type: "text";
29
+ text: string;
30
+ }[];
31
+ }>;
32
+ };
33
+ //# sourceMappingURL=generateContextualHint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateContextualHint.d.ts","sourceRoot":"","sources":["../../src/tools/generateContextualHint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACN,4BAA4B,EAE5B,MAAM,qBAAqB,CAAC;AAc7B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;sBAad,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC;;;;;;;;;;;;CA4EpE,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { generateContextualHintSchemaBase, } from "../schemas/index.js";
2
+ import { makeInfraNodusRequest } from "../api/client.js";
3
+ import { fetchUrlContentAsText } from "../utils/urlContent.js";
4
+ import { generateContextualHint } from "../utils/transformers.js";
5
+ function errorContent(message) {
6
+ return {
7
+ content: [
8
+ { type: "text", text: JSON.stringify({ error: message }) },
9
+ ],
10
+ isError: true,
11
+ };
12
+ }
13
+ export const generateContextualHintTool = {
14
+ name: "generate_contextual_hint",
15
+ definition: {
16
+ title: "Generate Contextual Hint for Text or Graph",
17
+ description: "Generate information about the main topics and concepts in a text to augment RAG retrieval and text analysis.",
18
+ inputSchema: generateContextualHintSchemaBase.shape,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ idempotentHint: true,
22
+ destructiveHint: false,
23
+ },
24
+ },
25
+ handler: async (params) => {
26
+ try {
27
+ const queryParams = new URLSearchParams({
28
+ doNotSave: "true",
29
+ addStats: "true",
30
+ includeGraphSummary: "true",
31
+ extendedGraphSummary: "false",
32
+ includeGraph: "false",
33
+ includeStatements: "false",
34
+ aiTopics: "true",
35
+ });
36
+ const endpoint = `/graphAndStatements?${queryParams.toString()}`;
37
+ let requestBody;
38
+ if (params.graphName?.trim()) {
39
+ requestBody = {
40
+ name: params.graphName,
41
+ userName: params.userName ?? "",
42
+ };
43
+ }
44
+ else {
45
+ let contentText;
46
+ if (params.url) {
47
+ const result = await fetchUrlContentAsText(params.url);
48
+ if (!result.ok)
49
+ return errorContent(result.error);
50
+ contentText = result.contentText;
51
+ if (!contentText?.trim())
52
+ return errorContent("URL did not return any text content");
53
+ }
54
+ else if (params.text?.trim()) {
55
+ contentText = params.text;
56
+ }
57
+ else {
58
+ return errorContent("Provide either text, url, or graphName for analysis");
59
+ }
60
+ requestBody = { text: contentText };
61
+ }
62
+ const response = await makeInfraNodusRequest(endpoint, requestBody);
63
+ if (response.error) {
64
+ return {
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: JSON.stringify({ error: response.error }),
69
+ },
70
+ ],
71
+ isError: true,
72
+ };
73
+ }
74
+ const textOverview = generateContextualHint(response);
75
+ return {
76
+ content: [
77
+ {
78
+ type: "text",
79
+ text: JSON.stringify(textOverview, null, 2),
80
+ },
81
+ ],
82
+ };
83
+ }
84
+ catch (error) {
85
+ return {
86
+ content: [
87
+ {
88
+ type: "text",
89
+ text: JSON.stringify({
90
+ error: error instanceof Error ? error.message : String(error),
91
+ }),
92
+ },
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ },
98
+ };
99
+ //# sourceMappingURL=generateContextualHint.js.map