keywordgraph-mcp-server 1.6.1 → 1.7.0
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 +95 -89
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +2 -1
- package/dist/api/client.js.map +1 -1
- package/dist/config/brand.d.ts +13 -0
- package/dist/config/brand.d.ts.map +1 -1
- package/dist/config/brand.js +21 -0
- package/dist/config/brand.js.map +1 -1
- package/dist/http-server.js +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/resources/about.d.ts.map +1 -1
- package/dist/resources/about.js +7 -6
- package/dist/resources/about.js.map +1 -1
- package/dist/schemas/index.d.ts +46 -6
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +91 -20
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/analyzeLlmResults.d.ts +1 -1
- package/dist/tools/analyzeLlmResults.d.ts.map +1 -1
- package/dist/tools/analyzeLlmResults.js +46 -19
- package/dist/tools/analyzeLlmResults.js.map +1 -1
- package/dist/tools/generateOntologyGraph.d.ts +1 -1
- package/dist/tools/generateOntologyGraph.d.ts.map +1 -1
- package/dist/tools/generateOntologyGraph.js +44 -21
- package/dist/tools/generateOntologyGraph.js.map +1 -1
- package/dist/tools/generateYoutubeSearchResultsGraph.d.ts +42 -0
- package/dist/tools/generateYoutubeSearchResultsGraph.d.ts.map +1 -0
- package/dist/tools/generateYoutubeSearchResultsGraph.js +97 -0
- package/dist/tools/generateYoutubeSearchResultsGraph.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/utils/transformers.d.ts +1 -1
- package/dist/utils/transformers.d.ts.map +1 -1
- package/dist/utils/transformers.js +7 -1
- package/dist/utils/transformers.js.map +1 -1
- package/package.json +2 -1
|
@@ -2,7 +2,7 @@ import { AnalyzeLlmResultsSchema } from "../schemas/index.js";
|
|
|
2
2
|
import { makeInfraNodusRequest } from "../api/client.js";
|
|
3
3
|
import { getConfig } from "../api/config-store.js";
|
|
4
4
|
import { brand, brandApiBase } from "../config/brand.js";
|
|
5
|
-
import {
|
|
5
|
+
import { extractLineSeparatedStatements, transformToStructuredOutput, } from "../utils/transformers.js";
|
|
6
6
|
function errorContent(message) {
|
|
7
7
|
return {
|
|
8
8
|
content: [
|
|
@@ -23,10 +23,7 @@ function slugify(text) {
|
|
|
23
23
|
.slice(0, 30);
|
|
24
24
|
}
|
|
25
25
|
function defaultGraphName(prompt) {
|
|
26
|
-
const timestamp = new Date()
|
|
27
|
-
.toISOString()
|
|
28
|
-
.slice(2, 16)
|
|
29
|
-
.replace(/[-:T]/g, "");
|
|
26
|
+
const timestamp = new Date().toISOString().slice(2, 16).replace(/[-:T]/g, "");
|
|
30
27
|
const slug = slugify(prompt.split(" ").slice(0, 3).join(" "));
|
|
31
28
|
return slug ? `llm_view_${slug}_${timestamp}` : `llm_view_${timestamp}`;
|
|
32
29
|
}
|
|
@@ -34,7 +31,7 @@ export const analyzeLlmResultsTool = {
|
|
|
34
31
|
name: "analyze_llm_results",
|
|
35
32
|
definition: {
|
|
36
33
|
title: "Analyze How an LLM Sees a Topic",
|
|
37
|
-
description: "Ask an LLM to describe a topic, then turn its response into a knowledge graph that reveals how the model frames it — main concepts, clusters, content gaps, and the relations between them. Useful for probing model bias, surfacing the implicit structure of an LLM's view on a subject, or comparing how different models describe the same topic.
|
|
34
|
+
description: "Ask an LLM to describe a topic, then turn its response into a knowledge graph that reveals how the model frames it — main concepts, clusters, content gaps, and the relations between them. Useful for probing model bias, surfacing the implicit structure of an LLM's view on a subject, or comparing how different models describe the same topic. ",
|
|
38
35
|
inputSchema: AnalyzeLlmResultsSchema.shape,
|
|
39
36
|
annotations: {
|
|
40
37
|
readOnlyHint: false,
|
|
@@ -47,17 +44,17 @@ export const analyzeLlmResultsTool = {
|
|
|
47
44
|
const saveGraph = params.saveGraph !== false;
|
|
48
45
|
const includeGraph = params.includeGraph === true;
|
|
49
46
|
const includeAnalytics = params.includeAnalytics !== false;
|
|
50
|
-
const
|
|
47
|
+
const includeStatements = params.includeStatements !== false;
|
|
48
|
+
const modifyAnalyzedText = params.modifyAnalyzedText ?? "none";
|
|
51
49
|
const contextType = modifyAnalyzedText === "none" ? "STANDARD" : "WIKILINKS";
|
|
52
50
|
const graphName = params.graphName?.trim() || defaultGraphName(params.prompt);
|
|
53
51
|
const requestBody = {
|
|
54
52
|
saveToGraphAndRedirect: saveGraph,
|
|
55
53
|
contextName: graphName,
|
|
56
|
-
aiQueryType: "
|
|
54
|
+
aiQueryType: "llm graph",
|
|
57
55
|
mode: "gptchat",
|
|
58
56
|
modelToUse: params.modelToUse ?? "claude-opus-4.6",
|
|
59
57
|
prompt: [{ role: "user", content: params.prompt }],
|
|
60
|
-
numberOfResults: String(params.numberOfResults ?? 20),
|
|
61
58
|
modifyAnalyzedText,
|
|
62
59
|
contextType,
|
|
63
60
|
replaceEntities: false,
|
|
@@ -69,7 +66,15 @@ export const analyzeLlmResultsTool = {
|
|
|
69
66
|
? JSON.stringify(response.error)
|
|
70
67
|
: String(response.error));
|
|
71
68
|
}
|
|
72
|
-
|
|
69
|
+
// Raw completions are present in the /aiAdvice response only when NOT
|
|
70
|
+
// saving — saving returns a redirect instead. For the 'llm graph'
|
|
71
|
+
// query each completion is a newline-separated list of statements, so
|
|
72
|
+
// split on newlines the same way the host app does (convertGPTResponses
|
|
73
|
+
// ToArray). The graph builder (/graphAndStatements) returns the
|
|
74
|
+
// statements in their final, post-processing shape (entity detection
|
|
75
|
+
// applied, etc.), so those are preferred for llmStatements whenever the
|
|
76
|
+
// graph is built; these raw ones are the fallback.
|
|
77
|
+
const rawChoiceStatements = extractLineSeparatedStatements(response);
|
|
73
78
|
let output;
|
|
74
79
|
if (saveGraph) {
|
|
75
80
|
const redirectUrl = response.redirectUrl;
|
|
@@ -89,30 +94,36 @@ export const analyzeLlmResultsTool = {
|
|
|
89
94
|
else {
|
|
90
95
|
output = {
|
|
91
96
|
saved: false,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
? `LLM overview generated (not saved): ${llmStatements.length} completion(s) returned. Use saveGraph: true to persist it as a ${brand.name} graph.`
|
|
97
|
+
message: rawChoiceStatements.length > 0
|
|
98
|
+
? `LLM overview generated (not saved): ${rawChoiceStatements.length} statement(s) returned. Use saveGraph: true to persist it as a ${brand.name} graph.`
|
|
95
99
|
: "The LLM did not return any statements. Try a more specific prompt or a different model.",
|
|
96
100
|
};
|
|
97
101
|
}
|
|
98
|
-
|
|
102
|
+
// We hit the graph builder for analytics/graph, and also for the
|
|
103
|
+
// final-shape statements when the caller wants them — except in the
|
|
104
|
+
// non-saved, statements-only case, where the raw completions are
|
|
105
|
+
// already in hand and an extra build (plus its AI topics call) would
|
|
106
|
+
// be wasteful.
|
|
107
|
+
const needStatementsFromGraph = includeStatements && (saveGraph || includeGraph || includeAnalytics);
|
|
108
|
+
const aiTopics = includeAnalytics ? "true" : "false";
|
|
109
|
+
if (includeGraph || includeAnalytics || needStatementsFromGraph) {
|
|
99
110
|
const graphQuery = new URLSearchParams({
|
|
100
111
|
doNotSave: "true",
|
|
101
112
|
addStats: "true",
|
|
102
|
-
includeStatements: "false",
|
|
113
|
+
includeStatements: includeStatements ? "true" : "false",
|
|
103
114
|
includeGraphSummary: "false",
|
|
104
115
|
extendedGraphSummary: includeAnalytics ? "true" : "false",
|
|
105
116
|
includeGraph: includeGraph ? "true" : "false",
|
|
106
117
|
compactGraph: includeGraph ? "true" : "false",
|
|
107
|
-
aiTopics
|
|
118
|
+
aiTopics,
|
|
108
119
|
optimize: "develop",
|
|
109
120
|
});
|
|
110
121
|
const graphEndpoint = `/graphAndStatements?${graphQuery.toString()}`;
|
|
111
122
|
const graphRequestBody = saveGraph
|
|
112
|
-
? { name: graphName, aiTopics
|
|
123
|
+
? { name: graphName, aiTopics, userName: "" }
|
|
113
124
|
: {
|
|
114
|
-
text:
|
|
115
|
-
aiTopics
|
|
125
|
+
text: rawChoiceStatements.join("\n"),
|
|
126
|
+
aiTopics,
|
|
116
127
|
modifyAnalyzedText,
|
|
117
128
|
};
|
|
118
129
|
const graphResponse = await makeInfraNodusRequest(graphEndpoint, graphRequestBody);
|
|
@@ -136,8 +147,24 @@ export const analyzeLlmResultsTool = {
|
|
|
136
147
|
if (includeGraph) {
|
|
137
148
|
output.knowledgeGraph = structured.knowledgeGraph;
|
|
138
149
|
}
|
|
150
|
+
if (includeStatements && Array.isArray(graphResponse.statements)) {
|
|
151
|
+
const stmts = graphResponse.statements
|
|
152
|
+
.map((s) => (typeof s === "string" ? s : (s?.content ?? "")).trim())
|
|
153
|
+
.filter((s) => s.length > 0);
|
|
154
|
+
if (stmts.length > 0) {
|
|
155
|
+
output.llmStatements = stmts;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
139
158
|
}
|
|
140
159
|
}
|
|
160
|
+
// Fallback: if the builder's final-shape statements weren't obtained
|
|
161
|
+
// (no graph call ran, or it failed/returned none), surface the raw
|
|
162
|
+
// completions when we have them.
|
|
163
|
+
if (includeStatements &&
|
|
164
|
+
!output.llmStatements &&
|
|
165
|
+
rawChoiceStatements.length > 0) {
|
|
166
|
+
output.llmStatements = rawChoiceStatements;
|
|
167
|
+
}
|
|
141
168
|
return {
|
|
142
169
|
content: [
|
|
143
170
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeLlmResults.js","sourceRoot":"","sources":["../../src/tools/analyzeLlmResults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"analyzeLlmResults.js","sourceRoot":"","sources":["../../src/tools/analyzeLlmResults.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,10 @@ export declare const generateOntologyGraphTool: {
|
|
|
9
9
|
prompt: z.ZodString;
|
|
10
10
|
graphName: z.ZodOptional<z.ZodString>;
|
|
11
11
|
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"]>>;
|
|
12
|
-
numberOfResults: z.ZodDefault<z.ZodNumber>;
|
|
13
12
|
saveGraph: z.ZodDefault<z.ZodBoolean>;
|
|
14
13
|
includeGraph: z.ZodDefault<z.ZodBoolean>;
|
|
15
14
|
includeAnalytics: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
includeStatements: z.ZodDefault<z.ZodBoolean>;
|
|
16
16
|
};
|
|
17
17
|
annotations: {
|
|
18
18
|
readOnlyHint: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOntologyGraph.d.ts","sourceRoot":"","sources":["../../src/tools/generateOntologyGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateOntologyGraph.d.ts","sourceRoot":"","sources":["../../src/tools/generateOntologyGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAwClE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;sBAYb,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC;;;;;;;;;;;;CAsLnE,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { GenerateOntologyGraphSchema } from "../schemas/index.js";
|
|
|
2
2
|
import { makeInfraNodusRequest } from "../api/client.js";
|
|
3
3
|
import { getConfig } from "../api/config-store.js";
|
|
4
4
|
import { brand, brandApiBase } from "../config/brand.js";
|
|
5
|
-
import {
|
|
5
|
+
import { extractLineSeparatedStatements, transformToStructuredOutput, } from "../utils/transformers.js";
|
|
6
6
|
function errorContent(message) {
|
|
7
7
|
return {
|
|
8
8
|
content: [
|
|
@@ -25,10 +25,7 @@ function slugify(text) {
|
|
|
25
25
|
.slice(0, 30);
|
|
26
26
|
}
|
|
27
27
|
function defaultOntologyName(prompt) {
|
|
28
|
-
const timestamp = new Date()
|
|
29
|
-
.toISOString()
|
|
30
|
-
.slice(2, 16)
|
|
31
|
-
.replace(/[-:T]/g, "");
|
|
28
|
+
const timestamp = new Date().toISOString().slice(2, 16).replace(/[-:T]/g, "");
|
|
32
29
|
const slug = slugify(prompt.split(" ").slice(0, 3).join(" "));
|
|
33
30
|
return slug ? `ai_onto_${slug}_${timestamp}` : `ai_onto_${timestamp}`;
|
|
34
31
|
}
|
|
@@ -36,7 +33,7 @@ export const generateOntologyGraphTool = {
|
|
|
36
33
|
name: "generate_ontology_graph",
|
|
37
34
|
definition: {
|
|
38
35
|
title: "Generate an AI Ontology Graph from a Topic or Prompt",
|
|
39
|
-
description: `Use AI to generate a reasoning ontology knowledge graph (entities and the relations between them) for a topic, prompt, or text, and optionally save it as a ${brand.name} graph.
|
|
36
|
+
description: `Use AI to generate a reasoning ontology knowledge graph (entities and the relations between them) for a topic, prompt, or text, and optionally save it as a ${brand.name} graph. Use to get a rich overview or to produce a reasoning map of a topic for expert workflows.`,
|
|
40
37
|
inputSchema: GenerateOntologyGraphSchema.shape,
|
|
41
38
|
annotations: {
|
|
42
39
|
readOnlyHint: false,
|
|
@@ -47,8 +44,9 @@ export const generateOntologyGraphTool = {
|
|
|
47
44
|
handler: async (params) => {
|
|
48
45
|
try {
|
|
49
46
|
const saveGraph = params.saveGraph !== false;
|
|
50
|
-
const includeGraph = params.includeGraph
|
|
47
|
+
const includeGraph = params.includeGraph === true;
|
|
51
48
|
const includeAnalytics = params.includeAnalytics !== false;
|
|
49
|
+
const includeStatements = params.includeStatements !== false;
|
|
52
50
|
const graphName = params.graphName?.trim() || defaultOntologyName(params.prompt);
|
|
53
51
|
const requestBody = {
|
|
54
52
|
saveToGraphAndRedirect: saveGraph,
|
|
@@ -57,8 +55,7 @@ export const generateOntologyGraphTool = {
|
|
|
57
55
|
mode: "gptchat",
|
|
58
56
|
modelToUse: params.modelToUse ?? "claude-opus-4.6",
|
|
59
57
|
prompt: [{ role: "user", content: params.prompt }],
|
|
60
|
-
|
|
61
|
-
modifyAnalyzedText: "extractEntitiesOnly",
|
|
58
|
+
modifyAnalyzedText: "none",
|
|
62
59
|
contextType: "ONTOLOGY",
|
|
63
60
|
replaceEntities: false,
|
|
64
61
|
hideSearchTerms: true,
|
|
@@ -71,7 +68,14 @@ export const generateOntologyGraphTool = {
|
|
|
71
68
|
? JSON.stringify(response.error)
|
|
72
69
|
: String(response.error));
|
|
73
70
|
}
|
|
74
|
-
|
|
71
|
+
// Raw statements are present in the /aiAdvice response only when NOT
|
|
72
|
+
// saving — saving returns a redirect instead. Each completion is a
|
|
73
|
+
// newline-separated list of entity-relation statements, split the same
|
|
74
|
+
// way the host app does (convertGPTResponsesToArray). The graph builder
|
|
75
|
+
// (/graphAndStatements) returns the statements in their final,
|
|
76
|
+
// post-processing shape, so those are preferred for ontologyStatements
|
|
77
|
+
// whenever the graph is built; these raw ones are the fallback.
|
|
78
|
+
const rawOntologyStatements = extractLineSeparatedStatements(response);
|
|
75
79
|
let output;
|
|
76
80
|
if (saveGraph) {
|
|
77
81
|
const redirectUrl = response.redirectUrl;
|
|
@@ -92,32 +96,35 @@ export const generateOntologyGraphTool = {
|
|
|
92
96
|
else {
|
|
93
97
|
output = {
|
|
94
98
|
saved: false,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
? `Ontology generated (not saved). Use saveGraph: true to persist it as a ${brand.name} graph.`
|
|
99
|
+
message: rawOntologyStatements.length > 0
|
|
100
|
+
? `Ontology generated (not saved): ${rawOntologyStatements.length} statement(s) returned. Use saveGraph: true to persist it as a ${brand.name} graph.`
|
|
98
101
|
: "The AI did not return any ontology statements. Try a more specific prompt or a more capable model.",
|
|
99
102
|
};
|
|
100
103
|
}
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
+
// We hit the graph builder for analytics/graph, and also for the
|
|
105
|
+
// final-shape statements when the caller wants them — except in the
|
|
106
|
+
// non-saved, statements-only case, where the raw statements are already
|
|
107
|
+
// in hand and an extra build (plus its AI topics call) would be wasteful.
|
|
108
|
+
const needStatementsFromGraph = includeStatements && (saveGraph || includeGraph || includeAnalytics);
|
|
109
|
+
const aiTopics = includeAnalytics ? "true" : "false";
|
|
110
|
+
if (includeGraph || includeAnalytics || needStatementsFromGraph) {
|
|
104
111
|
const graphQuery = new URLSearchParams({
|
|
105
112
|
doNotSave: "true",
|
|
106
113
|
addStats: "true",
|
|
107
|
-
includeStatements: "false",
|
|
114
|
+
includeStatements: includeStatements ? "true" : "false",
|
|
108
115
|
includeGraphSummary: "false",
|
|
109
116
|
extendedGraphSummary: includeAnalytics ? "true" : "false",
|
|
110
117
|
includeGraph: includeGraph ? "true" : "false",
|
|
111
118
|
compactGraph: includeGraph ? "true" : "false",
|
|
112
|
-
aiTopics
|
|
119
|
+
aiTopics,
|
|
113
120
|
optimize: "develop",
|
|
114
121
|
});
|
|
115
122
|
const graphEndpoint = `/graphAndStatements?${graphQuery.toString()}`;
|
|
116
123
|
const graphRequestBody = saveGraph
|
|
117
|
-
? { name: graphName, aiTopics
|
|
124
|
+
? { name: graphName, aiTopics, userName: "" }
|
|
118
125
|
: {
|
|
119
|
-
text:
|
|
120
|
-
aiTopics
|
|
126
|
+
text: rawOntologyStatements.join("\n"),
|
|
127
|
+
aiTopics,
|
|
121
128
|
modifyAnalyzedText: "extractEntitiesOnly",
|
|
122
129
|
};
|
|
123
130
|
const graphResponse = await makeInfraNodusRequest(graphEndpoint, graphRequestBody);
|
|
@@ -142,8 +149,24 @@ export const generateOntologyGraphTool = {
|
|
|
142
149
|
if (includeGraph) {
|
|
143
150
|
output.knowledgeGraph = structured.knowledgeGraph;
|
|
144
151
|
}
|
|
152
|
+
if (includeStatements && Array.isArray(graphResponse.statements)) {
|
|
153
|
+
const stmts = graphResponse.statements
|
|
154
|
+
.map((s) => (typeof s === "string" ? s : (s?.content ?? "")).trim())
|
|
155
|
+
.filter((s) => s.length > 0);
|
|
156
|
+
if (stmts.length > 0) {
|
|
157
|
+
output.ontologyStatements = stmts;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
145
160
|
}
|
|
146
161
|
}
|
|
162
|
+
// Fallback: if the builder's final-shape statements weren't obtained
|
|
163
|
+
// (no graph call ran, or it failed/returned none), surface the raw
|
|
164
|
+
// statements when we have them.
|
|
165
|
+
if (includeStatements &&
|
|
166
|
+
!output.ontologyStatements &&
|
|
167
|
+
rawOntologyStatements.length > 0) {
|
|
168
|
+
output.ontologyStatements = rawOntologyStatements;
|
|
169
|
+
}
|
|
147
170
|
return {
|
|
148
171
|
content: [
|
|
149
172
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateOntologyGraph.js","sourceRoot":"","sources":["../../src/tools/generateOntologyGraph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"generateOntologyGraph.js","sourceRoot":"","sources":["../../src/tools/generateOntologyGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { GenerateYoutubeSearchResultsGraphSchema } from "../schemas/index.js";
|
|
3
|
+
export declare const generateYoutubeSearchResultsGraphTool: {
|
|
4
|
+
name: string;
|
|
5
|
+
definition: {
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: {
|
|
9
|
+
searchQuery: z.ZodString;
|
|
10
|
+
searchMode: z.ZodDefault<z.ZodEnum<["search", "comments", "channel", "playlist", "subtitles", "subtitlesChannel", "subtitlesPlaylist", "searchVideos"]>>;
|
|
11
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
sortBy: z.ZodDefault<z.ZodEnum<["Relevance", "Popular", "Latest"]>>;
|
|
13
|
+
excludeDescriptions: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
includeSearchResults: z.ZodDefault<z.ZodBoolean>;
|
|
15
|
+
includeGraph: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
+
showExtendedGraphInfo: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
includeSearchResultsOnly: z.ZodDefault<z.ZodBoolean>;
|
|
18
|
+
includeNodesAndEdges: z.ZodDefault<z.ZodBoolean>;
|
|
19
|
+
importLanguage: z.ZodDefault<z.ZodEnum<["EN", "DE", "FR", "ES", "IT", "PT", "RU", "CN", "JP", "NL", "TW", "KO", "AR", "HE"]>>;
|
|
20
|
+
importRegion: z.ZodDefault<z.ZodString>;
|
|
21
|
+
};
|
|
22
|
+
annotations: {
|
|
23
|
+
readOnlyHint: boolean;
|
|
24
|
+
idempotentHint: boolean;
|
|
25
|
+
destructiveHint: boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
handler: (params: z.infer<typeof GenerateYoutubeSearchResultsGraphSchema>) => Promise<{
|
|
29
|
+
content: {
|
|
30
|
+
type: "text";
|
|
31
|
+
text: string;
|
|
32
|
+
}[];
|
|
33
|
+
isError: boolean;
|
|
34
|
+
} | {
|
|
35
|
+
content: {
|
|
36
|
+
type: "text";
|
|
37
|
+
text: string;
|
|
38
|
+
}[];
|
|
39
|
+
isError?: undefined;
|
|
40
|
+
}>;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=generateYoutubeSearchResultsGraph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateYoutubeSearchResultsGraph.d.ts","sourceRoot":"","sources":["../../src/tools/generateYoutubeSearchResultsGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uCAAuC,EAAE,MAAM,qBAAqB,CAAC;AAI9E,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;sBAexC,CAAC,CAAC,KAAK,CAAC,OAAO,uCAAuC,CAAC;;;;;;;;;;;;;CA+FhE,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { GenerateYoutubeSearchResultsGraphSchema } from "../schemas/index.js";
|
|
2
|
+
import { makeInfraNodusRequest } from "../api/client.js";
|
|
3
|
+
import { transformToStructuredOutput } from "../utils/transformers.js";
|
|
4
|
+
export const generateYoutubeSearchResultsGraphTool = {
|
|
5
|
+
name: "analyze_youtube_results",
|
|
6
|
+
definition: {
|
|
7
|
+
title: "Analyze YouTube Search Results, Channels, Playlists, Videos, and Comments",
|
|
8
|
+
description: "Generate a knowledge graph and topical clusters from YouTube results — search results, a channel's or playlist's videos, video comments, or transcribed subtitles — to reveal the main topics, clusters, and content gaps in the discourse",
|
|
9
|
+
inputSchema: GenerateYoutubeSearchResultsGraphSchema.shape,
|
|
10
|
+
annotations: {
|
|
11
|
+
readOnlyHint: true,
|
|
12
|
+
idempotentHint: true,
|
|
13
|
+
destructiveHint: false,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
handler: async (params) => {
|
|
17
|
+
try {
|
|
18
|
+
const includeGraph = params.includeGraph ? true : false;
|
|
19
|
+
const includeStatements = params.includeSearchResults ? true : false;
|
|
20
|
+
const showExtendedGraphInfo = params.showExtendedGraphInfo ? true : false;
|
|
21
|
+
const includeNodesAndEdges = params.includeNodesAndEdges ? true : false;
|
|
22
|
+
const includeSearchResultsOnly = params.includeSearchResultsOnly
|
|
23
|
+
? true
|
|
24
|
+
: false;
|
|
25
|
+
const searchMode = params.searchMode || "search";
|
|
26
|
+
// 'searchVideos' analyzes the content of each video, so the result count
|
|
27
|
+
// is hard-capped to keep the request tractable.
|
|
28
|
+
const limit = searchMode === "searchVideos" ? 20 : (params.limit ?? 100);
|
|
29
|
+
// First generate the graph with focus on insights
|
|
30
|
+
const queryParams = new URLSearchParams({
|
|
31
|
+
doNotSave: "true",
|
|
32
|
+
addStats: "true",
|
|
33
|
+
includeGraphSummary: "true",
|
|
34
|
+
extendedGraphSummary: showExtendedGraphInfo ? "true" : "false",
|
|
35
|
+
includeGraph: includeGraph ? "true" : "false",
|
|
36
|
+
includeStatements: includeStatements || includeSearchResultsOnly ? "true" : "false",
|
|
37
|
+
compactGraph: "true",
|
|
38
|
+
compactStatements: "true",
|
|
39
|
+
aiTopics: "true",
|
|
40
|
+
});
|
|
41
|
+
const endpoint = `/import/youtubeSearchResultsGraph?${queryParams.toString()}`;
|
|
42
|
+
const response = await makeInfraNodusRequest(endpoint, {
|
|
43
|
+
searchQuery: params.searchQuery,
|
|
44
|
+
searchMode,
|
|
45
|
+
limit,
|
|
46
|
+
sortBy: params.sortBy || "Relevance",
|
|
47
|
+
includeReplies: "false",
|
|
48
|
+
excludeDescriptions: params.excludeDescriptions === false ? "false" : "true",
|
|
49
|
+
includeGraph: includeGraph ? "true" : "false",
|
|
50
|
+
aiTopics: "true",
|
|
51
|
+
includeSearchResultsOnly: includeSearchResultsOnly ? "true" : "false",
|
|
52
|
+
importLanguage: params.importLanguage || "EN",
|
|
53
|
+
importRegion: params.importRegion || "US",
|
|
54
|
+
});
|
|
55
|
+
if (response.error) {
|
|
56
|
+
return {
|
|
57
|
+
content: [
|
|
58
|
+
{
|
|
59
|
+
type: "text",
|
|
60
|
+
text: JSON.stringify({ error: response.error }),
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
isError: true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const textOverview = transformToStructuredOutput(response, includeGraph, includeNodesAndEdges);
|
|
67
|
+
if (!includeStatements && !includeSearchResultsOnly) {
|
|
68
|
+
delete textOverview.statements;
|
|
69
|
+
}
|
|
70
|
+
if (showExtendedGraphInfo || includeGraph) {
|
|
71
|
+
delete textOverview.graphSummary;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: "text",
|
|
77
|
+
text: JSON.stringify(textOverview, null, 2),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return {
|
|
84
|
+
content: [
|
|
85
|
+
{
|
|
86
|
+
type: "text",
|
|
87
|
+
text: JSON.stringify({
|
|
88
|
+
error: error instanceof Error ? error.message : String(error),
|
|
89
|
+
}),
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
isError: true,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=generateYoutubeSearchResultsGraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateYoutubeSearchResultsGraph.js","sourceRoot":"","sources":["../../src/tools/generateYoutubeSearchResultsGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { generateOverlapGraphFromTextsTool } from "./generateOverlapGraphFromTex
|
|
|
18
18
|
export { generateMergedGraphFromTextsTool } from "./generateMergedGraphFromTexts.js";
|
|
19
19
|
export { generateDifferenceGraphFromTextsTool } from "./generateDifferenceGraphFromTexts.js";
|
|
20
20
|
export { generateGoogleSearchResultsGraphTool } from "./generateGoogleSearchResultsGraph.js";
|
|
21
|
+
export { generateYoutubeSearchResultsGraphTool } from "./generateYoutubeSearchResultsGraph.js";
|
|
21
22
|
export { generateGoogleSearchQueriesGraphTool } from "./generateGoogleSearchQueriesGraph.js";
|
|
22
23
|
export { generateGoogleResultsVsQueriesGraphTool } from "./generateGoogleResultsVsQueriesGraph.js";
|
|
23
24
|
export { generateSEOGraphTool } from "./generateSEOGraphTool.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export { generateOverlapGraphFromTextsTool } from "./generateOverlapGraphFromTex
|
|
|
18
18
|
export { generateMergedGraphFromTextsTool } from "./generateMergedGraphFromTexts.js";
|
|
19
19
|
export { generateDifferenceGraphFromTextsTool } from "./generateDifferenceGraphFromTexts.js";
|
|
20
20
|
export { generateGoogleSearchResultsGraphTool } from "./generateGoogleSearchResultsGraph.js";
|
|
21
|
+
export { generateYoutubeSearchResultsGraphTool } from "./generateYoutubeSearchResultsGraph.js";
|
|
21
22
|
export { generateGoogleSearchQueriesGraphTool } from "./generateGoogleSearchQueriesGraph.js";
|
|
22
23
|
export { generateGoogleResultsVsQueriesGraphTool } from "./generateGoogleResultsVsQueriesGraph.js";
|
|
23
24
|
export { generateSEOGraphTool } from "./generateSEOGraphTool.js";
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC;AAC/F,OAAO,EAAE,oCAAoC,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,0CAA0C,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAC"}
|
|
@@ -9,7 +9,7 @@ export declare function transformToGraphRagOutput(params: {
|
|
|
9
9
|
}): GraphRagOutput;
|
|
10
10
|
export declare function generateGaps(data: GraphResponse): GapsOutput;
|
|
11
11
|
export declare function generateContextualHint(data: GraphResponse): GraphOverview;
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function extractLineSeparatedStatements(data: GraphResponse): string[];
|
|
13
13
|
export declare function extractAiChoiceTexts(data: GraphResponse): string[];
|
|
14
14
|
export declare function generateTopics(data: GraphResponse, summaryData?: GraphResponse): TopicsOutput;
|
|
15
15
|
export declare function generateSummaryFromTopicsAndGaps(data: GraphResponse): SummaryOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/utils/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,aAAa,EACnB,YAAY,GAAE,OAAe,EAC7B,oBAAoB,GAAE,OAAe,EACrC,qBAAqB,GAAE,OAAe,GACpC,oBAAoB,CA6FtB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;CAC9B,GAAG,cAAc,CA8DjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAQ5D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAQzE;
|
|
1
|
+
{"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/utils/transformers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,aAAa,EACnB,YAAY,GAAE,OAAe,EAC7B,oBAAoB,GAAE,OAAe,EACrC,qBAAqB,GAAE,OAAe,GACpC,oBAAoB,CA6FtB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;CAC9B,GAAG,cAAc,CA8DjB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAQ5D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAQzE;AAQD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAU5E;AAOD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CASlE;AAED,wBAAgB,cAAc,CAC7B,IAAI,EAAE,aAAa,EACnB,WAAW,CAAC,EAAE,aAAa,GACzB,YAAY,CAcd;AAED,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,aAAa,GACjB,aAAa,CAcf;AAED,wBAAgB,uCAAuC,CACtD,IAAI,EAAE,aAAa,GACjB,cAAc,CAchB;AAED,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,aAAa,GACjB,sBAAsB,CA4BxB;AAED,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,aAAa,GACjB,cAAc,CAQhB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,CAiBxE;AAED,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,aAAa,GACjB,uBAAuB,CAezB;AAED,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,aAAa,GACjB,mBAAmB,CAerB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,CAetE;AAED,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,aAAa,GACjB,kBAAkB,CAyBpB;AAED,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,aAAa,GACjB,oBAAoB,CAkBtB;AAED,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,aAAa,GACjB,kBAAkB,CAiBpB;AAED,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,GACX,YAAY,CAuBd;AAED,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,MAAM,GACX,WAAW,CAyBb;AAED,wBAAgB,kCAAkC,CACjD,IAAI,EAAE,aAAa,EACnB,iBAAiB,EAAE,MAAM,GACvB,sBAAsB,CAqBxB;AAED,wBAAgB,mCAAmC,CAClD,IAAI,EAAE,cAAc,GAClB,sBAAsB,CAkCxB;AAED,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GACjB,cAAc,CAkGhB"}
|
|
@@ -135,7 +135,13 @@ export function generateContextualHint(data) {
|
|
|
135
135
|
}
|
|
136
136
|
return graphOverview;
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
// For the 'ontology graph' / 'llm graph' aiQueryTypes, a single completion
|
|
139
|
+
// holds many statements, one per line. Mirror the host app's
|
|
140
|
+
// convertGPTResponsesToArray (routes/ai.js): split each choice on newlines and
|
|
141
|
+
// trim, rather than collapsing newlines into one statement the way
|
|
142
|
+
// extractAiChoiceTexts does. Shared by generate_ontology_graph and
|
|
143
|
+
// analyze_llm_results.
|
|
144
|
+
export function extractLineSeparatedStatements(data) {
|
|
139
145
|
if (!data.choices || !data.choices.length)
|
|
140
146
|
return [];
|
|
141
147
|
return data.choices
|