@cogitator-ai/neuro-symbolic 0.1.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/LICENSE +21 -0
- package/README.md +494 -0
- package/dist/constraints/dsl.d.ts +68 -0
- package/dist/constraints/dsl.d.ts.map +1 -0
- package/dist/constraints/dsl.js +419 -0
- package/dist/constraints/dsl.js.map +1 -0
- package/dist/constraints/index.d.ts +7 -0
- package/dist/constraints/index.d.ts.map +1 -0
- package/dist/constraints/index.js +18 -0
- package/dist/constraints/index.js.map +1 -0
- package/dist/constraints/prompts.d.ts +44 -0
- package/dist/constraints/prompts.d.ts.map +1 -0
- package/dist/constraints/prompts.js +175 -0
- package/dist/constraints/prompts.js.map +1 -0
- package/dist/constraints/simple-sat-solver.d.ts +21 -0
- package/dist/constraints/simple-sat-solver.d.ts.map +1 -0
- package/dist/constraints/simple-sat-solver.js +378 -0
- package/dist/constraints/simple-sat-solver.js.map +1 -0
- package/dist/constraints/z3-wasm-solver.d.ts +20 -0
- package/dist/constraints/z3-wasm-solver.d.ts.map +1 -0
- package/dist/constraints/z3-wasm-solver.js +286 -0
- package/dist/constraints/z3-wasm-solver.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +5 -0
- package/dist/knowledge-graph/index.d.ts.map +1 -0
- package/dist/knowledge-graph/index.js +5 -0
- package/dist/knowledge-graph/index.js.map +1 -0
- package/dist/knowledge-graph/natural-language-query.d.ts +42 -0
- package/dist/knowledge-graph/natural-language-query.d.ts.map +1 -0
- package/dist/knowledge-graph/natural-language-query.js +271 -0
- package/dist/knowledge-graph/natural-language-query.js.map +1 -0
- package/dist/knowledge-graph/prompts.d.ts +56 -0
- package/dist/knowledge-graph/prompts.d.ts.map +1 -0
- package/dist/knowledge-graph/prompts.js +198 -0
- package/dist/knowledge-graph/prompts.js.map +1 -0
- package/dist/knowledge-graph/query-language.d.ts +43 -0
- package/dist/knowledge-graph/query-language.d.ts.map +1 -0
- package/dist/knowledge-graph/query-language.js +569 -0
- package/dist/knowledge-graph/query-language.js.map +1 -0
- package/dist/knowledge-graph/reasoning-engine.d.ts +53 -0
- package/dist/knowledge-graph/reasoning-engine.d.ts.map +1 -0
- package/dist/knowledge-graph/reasoning-engine.js +337 -0
- package/dist/knowledge-graph/reasoning-engine.js.map +1 -0
- package/dist/logic/builtins.d.ts +10 -0
- package/dist/logic/builtins.d.ts.map +1 -0
- package/dist/logic/builtins.js +527 -0
- package/dist/logic/builtins.js.map +1 -0
- package/dist/logic/index.d.ts +8 -0
- package/dist/logic/index.d.ts.map +1 -0
- package/dist/logic/index.js +8 -0
- package/dist/logic/index.js.map +1 -0
- package/dist/logic/knowledge-base.d.ts +38 -0
- package/dist/logic/knowledge-base.d.ts.map +1 -0
- package/dist/logic/knowledge-base.js +205 -0
- package/dist/logic/knowledge-base.js.map +1 -0
- package/dist/logic/parser.d.ts +19 -0
- package/dist/logic/parser.d.ts.map +1 -0
- package/dist/logic/parser.js +466 -0
- package/dist/logic/parser.js.map +1 -0
- package/dist/logic/prompts.d.ts +55 -0
- package/dist/logic/prompts.d.ts.map +1 -0
- package/dist/logic/prompts.js +230 -0
- package/dist/logic/prompts.js.map +1 -0
- package/dist/logic/proof-tree.d.ts +30 -0
- package/dist/logic/proof-tree.d.ts.map +1 -0
- package/dist/logic/proof-tree.js +281 -0
- package/dist/logic/proof-tree.js.map +1 -0
- package/dist/logic/resolver.d.ts +16 -0
- package/dist/logic/resolver.d.ts.map +1 -0
- package/dist/logic/resolver.js +382 -0
- package/dist/logic/resolver.js.map +1 -0
- package/dist/logic/unification.d.ts +17 -0
- package/dist/logic/unification.d.ts.map +1 -0
- package/dist/logic/unification.js +257 -0
- package/dist/logic/unification.js.map +1 -0
- package/dist/orchestrator.d.ts +57 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +293 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/planning/action-schema.d.ts +48 -0
- package/dist/planning/action-schema.d.ts.map +1 -0
- package/dist/planning/action-schema.js +358 -0
- package/dist/planning/action-schema.js.map +1 -0
- package/dist/planning/index.d.ts +6 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +6 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/invariant-checker.d.ts +39 -0
- package/dist/planning/invariant-checker.d.ts.map +1 -0
- package/dist/planning/invariant-checker.js +293 -0
- package/dist/planning/invariant-checker.js.map +1 -0
- package/dist/planning/plan-repair.d.ts +38 -0
- package/dist/planning/plan-repair.d.ts.map +1 -0
- package/dist/planning/plan-repair.js +366 -0
- package/dist/planning/plan-repair.js.map +1 -0
- package/dist/planning/plan-validator.d.ts +31 -0
- package/dist/planning/plan-validator.d.ts.map +1 -0
- package/dist/planning/plan-validator.js +379 -0
- package/dist/planning/plan-validator.js.map +1 -0
- package/dist/planning/prompts.d.ts +50 -0
- package/dist/planning/prompts.d.ts.map +1 -0
- package/dist/planning/prompts.js +186 -0
- package/dist/planning/prompts.js.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { executeQuery, GraphQueryBuilder, variable } from './query-language';
|
|
2
|
+
export function analyzeNLQuery(question) {
|
|
3
|
+
const lower = question.toLowerCase();
|
|
4
|
+
const analysis = {
|
|
5
|
+
intent: 'find',
|
|
6
|
+
entities: [],
|
|
7
|
+
relations: [],
|
|
8
|
+
constraints: [],
|
|
9
|
+
variables: [],
|
|
10
|
+
};
|
|
11
|
+
if (lower.startsWith('is ') ||
|
|
12
|
+
lower.startsWith('are ') ||
|
|
13
|
+
lower.startsWith('does ') ||
|
|
14
|
+
lower.startsWith('do ')) {
|
|
15
|
+
analysis.intent = 'check';
|
|
16
|
+
}
|
|
17
|
+
else if (lower.startsWith('how many') || lower.includes('count')) {
|
|
18
|
+
analysis.intent = 'count';
|
|
19
|
+
}
|
|
20
|
+
else if (lower.startsWith('what is') ||
|
|
21
|
+
lower.startsWith('describe') ||
|
|
22
|
+
lower.startsWith('tell me about')) {
|
|
23
|
+
analysis.intent = 'describe';
|
|
24
|
+
}
|
|
25
|
+
else if (lower.includes('compare') || lower.includes('difference between')) {
|
|
26
|
+
analysis.intent = 'compare';
|
|
27
|
+
}
|
|
28
|
+
const quotedPattern = /"([^"]+)"/g;
|
|
29
|
+
let match;
|
|
30
|
+
while ((match = quotedPattern.exec(question)) !== null) {
|
|
31
|
+
analysis.entities.push(match[1]);
|
|
32
|
+
}
|
|
33
|
+
const capitalizedPattern = /\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)*)\b/g;
|
|
34
|
+
while ((match = capitalizedPattern.exec(question)) !== null) {
|
|
35
|
+
const word = match[1];
|
|
36
|
+
if (!['Who', 'What', 'Where', 'When', 'How', 'Why', 'Is', 'Are', 'Does', 'Do'].includes(word)) {
|
|
37
|
+
analysis.entities.push(word);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const relationKeywords = [
|
|
41
|
+
'works at',
|
|
42
|
+
'works for',
|
|
43
|
+
'employed by',
|
|
44
|
+
'knows',
|
|
45
|
+
'friends with',
|
|
46
|
+
'related to',
|
|
47
|
+
'located in',
|
|
48
|
+
'lives in',
|
|
49
|
+
'based in',
|
|
50
|
+
'part of',
|
|
51
|
+
'belongs to',
|
|
52
|
+
'member of',
|
|
53
|
+
'created by',
|
|
54
|
+
'made by',
|
|
55
|
+
'built by',
|
|
56
|
+
'connected to',
|
|
57
|
+
'linked to',
|
|
58
|
+
'associated with',
|
|
59
|
+
];
|
|
60
|
+
for (const keyword of relationKeywords) {
|
|
61
|
+
if (lower.includes(keyword)) {
|
|
62
|
+
analysis.relations.push(keyword.replace(/\s+/g, '_'));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (lower.includes('who')) {
|
|
66
|
+
analysis.variables.push('person');
|
|
67
|
+
}
|
|
68
|
+
if (lower.includes('what')) {
|
|
69
|
+
analysis.variables.push('thing');
|
|
70
|
+
}
|
|
71
|
+
if (lower.includes('where')) {
|
|
72
|
+
analysis.variables.push('location');
|
|
73
|
+
}
|
|
74
|
+
if (lower.includes('when')) {
|
|
75
|
+
analysis.variables.push('time');
|
|
76
|
+
}
|
|
77
|
+
return analysis;
|
|
78
|
+
}
|
|
79
|
+
export function buildQueryFromAnalysis(analysis) {
|
|
80
|
+
const builder = analysis.intent === 'check' ? GraphQueryBuilder.ask() : GraphQueryBuilder.select();
|
|
81
|
+
if (analysis.intent === 'count') {
|
|
82
|
+
builder.count('X', 'count');
|
|
83
|
+
}
|
|
84
|
+
if (analysis.entities.length >= 2 && analysis.relations.length > 0) {
|
|
85
|
+
builder.where(analysis.entities[0], analysis.relations[0], analysis.entities[1]);
|
|
86
|
+
}
|
|
87
|
+
else if (analysis.entities.length === 1 && analysis.relations.length > 0) {
|
|
88
|
+
builder.where(variable('X'), analysis.relations[0], analysis.entities[0]);
|
|
89
|
+
}
|
|
90
|
+
else if (analysis.entities.length === 1) {
|
|
91
|
+
builder.where(variable('X'), variable('relation'), analysis.entities[0]);
|
|
92
|
+
builder.where(analysis.entities[0], variable('relation2'), variable('Y'));
|
|
93
|
+
}
|
|
94
|
+
else if (analysis.variables.length > 0) {
|
|
95
|
+
builder.where(variable('X'), variable('relation'), variable('Y'));
|
|
96
|
+
}
|
|
97
|
+
if (analysis.intent !== 'count') {
|
|
98
|
+
builder.limit(20);
|
|
99
|
+
}
|
|
100
|
+
return builder.build();
|
|
101
|
+
}
|
|
102
|
+
export function createNLToGraphQueryPrompt(ctx) {
|
|
103
|
+
return `You are a knowledge graph query expert. Convert the natural language question into a structured graph query.
|
|
104
|
+
|
|
105
|
+
Available entity types: ${ctx.availableEntityTypes.join(', ')}
|
|
106
|
+
Available relation types: ${ctx.availableRelationTypes.join(', ')}
|
|
107
|
+
${ctx.sampleEntities ? `Sample entities: ${ctx.sampleEntities.slice(0, 10).join(', ')}` : ''}
|
|
108
|
+
${ctx.sampleRelations ? `Sample relations: ${ctx.sampleRelations.slice(0, 10).join(', ')}` : ''}
|
|
109
|
+
|
|
110
|
+
Question: "${ctx.question}"
|
|
111
|
+
|
|
112
|
+
Respond with a JSON object containing:
|
|
113
|
+
{
|
|
114
|
+
"type": "select" | "ask" | "count",
|
|
115
|
+
"patterns": [
|
|
116
|
+
{
|
|
117
|
+
"subject": "entity name or ?variable",
|
|
118
|
+
"predicate": "relation type",
|
|
119
|
+
"object": "entity name or ?variable"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"filters": [
|
|
123
|
+
{
|
|
124
|
+
"field": "variable.property",
|
|
125
|
+
"operator": "eq" | "contains" | "gt" | "lt",
|
|
126
|
+
"value": "the value"
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"limit": number
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
Query JSON:`;
|
|
133
|
+
}
|
|
134
|
+
export function parseNLQueryResponse(response) {
|
|
135
|
+
try {
|
|
136
|
+
const jsonMatch = /\{[\s\S]*\}/.exec(response);
|
|
137
|
+
if (!jsonMatch)
|
|
138
|
+
return null;
|
|
139
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
140
|
+
const query = {
|
|
141
|
+
type: parsed.type || 'select',
|
|
142
|
+
patterns: [],
|
|
143
|
+
};
|
|
144
|
+
if (Array.isArray(parsed.patterns)) {
|
|
145
|
+
for (const p of parsed.patterns) {
|
|
146
|
+
query.patterns.push({
|
|
147
|
+
subject: p.subject?.startsWith('?') ? { name: p.subject.substring(1) } : p.subject,
|
|
148
|
+
predicate: p.predicate?.startsWith('?')
|
|
149
|
+
? { name: p.predicate.substring(1) }
|
|
150
|
+
: p.predicate,
|
|
151
|
+
object: p.object?.startsWith('?') ? { name: p.object.substring(1) } : p.object,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (Array.isArray(parsed.filters)) {
|
|
156
|
+
query.filters = parsed.filters;
|
|
157
|
+
}
|
|
158
|
+
if (parsed.limit) {
|
|
159
|
+
query.limit = parsed.limit;
|
|
160
|
+
}
|
|
161
|
+
if (parsed.orderBy) {
|
|
162
|
+
query.orderBy = parsed.orderBy;
|
|
163
|
+
}
|
|
164
|
+
return query;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export async function executeNLQuery(question, ctx) {
|
|
171
|
+
const analysis = analyzeNLQuery(question);
|
|
172
|
+
const query = buildQueryFromAnalysis(analysis);
|
|
173
|
+
const result = await executeQuery(query, {
|
|
174
|
+
adapter: ctx.adapter,
|
|
175
|
+
agentId: ctx.agentId,
|
|
176
|
+
variables: new Map(),
|
|
177
|
+
});
|
|
178
|
+
const naturalLanguageResponse = formatResultAsNaturalLanguage(question, analysis, result);
|
|
179
|
+
const confidence = calculateConfidence(analysis, result);
|
|
180
|
+
return {
|
|
181
|
+
query,
|
|
182
|
+
results: result,
|
|
183
|
+
naturalLanguageResponse,
|
|
184
|
+
confidence,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function formatResultAsNaturalLanguage(question, analysis, result) {
|
|
188
|
+
if (result.count === 0) {
|
|
189
|
+
return `I couldn't find any information to answer: "${question}"`;
|
|
190
|
+
}
|
|
191
|
+
if (analysis.intent === 'check') {
|
|
192
|
+
return result.count > 0 ? 'Yes.' : 'No.';
|
|
193
|
+
}
|
|
194
|
+
if (analysis.intent === 'count') {
|
|
195
|
+
const countValue = result.bindings[0]?.count;
|
|
196
|
+
return `The count is ${countValue}.`;
|
|
197
|
+
}
|
|
198
|
+
const responses = [];
|
|
199
|
+
for (const binding of result.bindings.slice(0, 5)) {
|
|
200
|
+
const parts = [];
|
|
201
|
+
for (const [key, value] of Object.entries(binding)) {
|
|
202
|
+
if (typeof value === 'object' && value !== null && 'name' in value) {
|
|
203
|
+
parts.push(`${key}: ${value.name}`);
|
|
204
|
+
}
|
|
205
|
+
else if (typeof value === 'object' && value !== null && 'type' in value) {
|
|
206
|
+
const edge = value;
|
|
207
|
+
parts.push(`${key}: ${edge.label || edge.type}`);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
parts.push(`${key}: ${value}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
responses.push(parts.join(', '));
|
|
214
|
+
}
|
|
215
|
+
if (result.count > 5) {
|
|
216
|
+
responses.push(`... and ${result.count - 5} more results.`);
|
|
217
|
+
}
|
|
218
|
+
return responses.join('\n');
|
|
219
|
+
}
|
|
220
|
+
function calculateConfidence(analysis, result) {
|
|
221
|
+
let confidence = 0.5;
|
|
222
|
+
if (analysis.entities.length > 0) {
|
|
223
|
+
confidence += 0.2;
|
|
224
|
+
}
|
|
225
|
+
if (analysis.relations.length > 0) {
|
|
226
|
+
confidence += 0.2;
|
|
227
|
+
}
|
|
228
|
+
if (result.count > 0) {
|
|
229
|
+
confidence += 0.1;
|
|
230
|
+
}
|
|
231
|
+
if (result.count > 10) {
|
|
232
|
+
confidence -= 0.1;
|
|
233
|
+
}
|
|
234
|
+
return Math.max(0, Math.min(1, confidence));
|
|
235
|
+
}
|
|
236
|
+
export function suggestQuestions(nodes, edges) {
|
|
237
|
+
const suggestions = [];
|
|
238
|
+
const entityTypes = new Set(nodes.map((n) => n.type));
|
|
239
|
+
const relationTypes = new Set(edges.map((e) => e.type));
|
|
240
|
+
for (const type of entityTypes) {
|
|
241
|
+
suggestions.push(`What ${type}s are in the graph?`);
|
|
242
|
+
}
|
|
243
|
+
for (const relType of relationTypes) {
|
|
244
|
+
suggestions.push(`Who ${relType.replace(/_/g, ' ')} whom?`);
|
|
245
|
+
}
|
|
246
|
+
if (nodes.length > 0) {
|
|
247
|
+
const sampleNode = nodes[0];
|
|
248
|
+
suggestions.push(`Tell me about ${sampleNode.name}`);
|
|
249
|
+
suggestions.push(`What is connected to ${sampleNode.name}?`);
|
|
250
|
+
}
|
|
251
|
+
return suggestions.slice(0, 10);
|
|
252
|
+
}
|
|
253
|
+
export function generateClarifications(_question, analysis, availableEntities, availableRelations) {
|
|
254
|
+
const clarifications = [];
|
|
255
|
+
if (analysis.entities.length === 0 && analysis.variables.length === 0) {
|
|
256
|
+
clarifications.push({
|
|
257
|
+
type: 'ambiguous_entity',
|
|
258
|
+
message: "I'm not sure what entity you're asking about. Could you specify?",
|
|
259
|
+
options: availableEntities.slice(0, 5),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
if (analysis.relations.length === 0 && analysis.intent !== 'describe') {
|
|
263
|
+
clarifications.push({
|
|
264
|
+
type: 'missing_relation',
|
|
265
|
+
message: 'What relationship are you interested in?',
|
|
266
|
+
options: availableRelations.slice(0, 5),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
return clarifications;
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=natural-language-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natural-language-query.js","sourceRoot":"","sources":["../../src/knowledge-graph/natural-language-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { GraphNode, GraphEdge, GraphPath, GraphQuery, GraphQueryResult, EntityType, RelationType } from '@cogitator-ai/types';
|
|
2
|
+
export interface GraphContextForPrompt {
|
|
3
|
+
nodes: GraphNode[];
|
|
4
|
+
edges: GraphEdge[];
|
|
5
|
+
question?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createGraphContextPrompt(ctx: GraphContextForPrompt): string;
|
|
8
|
+
export interface QueryToNLContext {
|
|
9
|
+
query: GraphQuery;
|
|
10
|
+
result: GraphQueryResult;
|
|
11
|
+
}
|
|
12
|
+
export declare function createQueryExplanationPrompt(ctx: QueryToNLContext): string;
|
|
13
|
+
export interface PathExplanationContext {
|
|
14
|
+
path: GraphPath;
|
|
15
|
+
question?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function createPathExplanationPrompt(ctx: PathExplanationContext): string;
|
|
18
|
+
export interface EntityExtractionContext {
|
|
19
|
+
text: string;
|
|
20
|
+
existingTypes?: EntityType[];
|
|
21
|
+
existingRelations?: RelationType[];
|
|
22
|
+
}
|
|
23
|
+
export declare function createEntityExtractionPrompt(ctx: EntityExtractionContext): string;
|
|
24
|
+
export interface ReasoningExplanationContext {
|
|
25
|
+
startNode: string;
|
|
26
|
+
endNode: string;
|
|
27
|
+
paths: GraphPath[];
|
|
28
|
+
question?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function createReasoningExplanationPrompt(ctx: ReasoningExplanationContext): string;
|
|
31
|
+
export interface GraphSummaryContext {
|
|
32
|
+
nodeCount: number;
|
|
33
|
+
edgeCount: number;
|
|
34
|
+
nodesByType: Record<string, number>;
|
|
35
|
+
edgesByType: Record<string, number>;
|
|
36
|
+
topNodes: GraphNode[];
|
|
37
|
+
}
|
|
38
|
+
export declare function createGraphSummaryPrompt(ctx: GraphSummaryContext): string;
|
|
39
|
+
export declare function parseEntityExtractionResponse(response: string): {
|
|
40
|
+
entities: Array<{
|
|
41
|
+
name: string;
|
|
42
|
+
type: EntityType;
|
|
43
|
+
description?: string;
|
|
44
|
+
confidence: number;
|
|
45
|
+
}>;
|
|
46
|
+
relations: Array<{
|
|
47
|
+
source: string;
|
|
48
|
+
target: string;
|
|
49
|
+
type: RelationType;
|
|
50
|
+
confidence: number;
|
|
51
|
+
}>;
|
|
52
|
+
} | null;
|
|
53
|
+
export declare function formatNodeForPrompt(node: GraphNode): string;
|
|
54
|
+
export declare function formatEdgeForPrompt(edge: GraphEdge, sourceNode?: GraphNode, targetNode?: GraphNode): string;
|
|
55
|
+
export declare function formatPathForPrompt(path: GraphPath): string;
|
|
56
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAsB3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAoB1E;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAqB/E;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC;CACpC;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAsCjF;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAwBzF;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CA2BzE;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAC/D,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,SAAS,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,YAAY,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ,GAAG,IAAI,CAwBP;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAM3D;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,UAAU,CAAC,EAAE,SAAS,EACtB,UAAU,CAAC,EAAE,SAAS,GACrB,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAgB3D"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export function createGraphContextPrompt(ctx) {
|
|
2
|
+
const nodeDescriptions = ctx.nodes
|
|
3
|
+
.map((n) => `- ${n.name} (${n.type}): ${n.description || 'No description'}`)
|
|
4
|
+
.join('\n');
|
|
5
|
+
const edgeDescriptions = ctx.edges
|
|
6
|
+
.map((e) => {
|
|
7
|
+
const sourceNode = ctx.nodes.find((n) => n.id === e.sourceNodeId);
|
|
8
|
+
const targetNode = ctx.nodes.find((n) => n.id === e.targetNodeId);
|
|
9
|
+
return `- ${sourceNode?.name || e.sourceNodeId} --[${e.label || e.type}]--> ${targetNode?.name || e.targetNodeId}`;
|
|
10
|
+
})
|
|
11
|
+
.join('\n');
|
|
12
|
+
return `Knowledge Graph Context:
|
|
13
|
+
|
|
14
|
+
Entities:
|
|
15
|
+
${nodeDescriptions || 'No entities.'}
|
|
16
|
+
|
|
17
|
+
Relationships:
|
|
18
|
+
${edgeDescriptions || 'No relationships.'}
|
|
19
|
+
|
|
20
|
+
${ctx.question ? `\nQuestion: ${ctx.question}` : ''}`;
|
|
21
|
+
}
|
|
22
|
+
export function createQueryExplanationPrompt(ctx) {
|
|
23
|
+
const patterns = ctx.query.patterns
|
|
24
|
+
.map((p) => {
|
|
25
|
+
const subj = typeof p.subject === 'string' ? p.subject : `?${p.subject?.name}`;
|
|
26
|
+
const pred = typeof p.predicate === 'string' ? p.predicate : `?${p.predicate?.name}`;
|
|
27
|
+
const obj = typeof p.object === 'string' ? p.object : `?${p.object?.name}`;
|
|
28
|
+
return ` (${subj}, ${pred}, ${obj})`;
|
|
29
|
+
})
|
|
30
|
+
.join('\n');
|
|
31
|
+
return `Explain the following graph query results in natural language.
|
|
32
|
+
|
|
33
|
+
Query type: ${ctx.query.type}
|
|
34
|
+
Patterns:
|
|
35
|
+
${patterns}
|
|
36
|
+
|
|
37
|
+
Number of results: ${ctx.result.count}
|
|
38
|
+
Execution time: ${ctx.result.executionTime}ms
|
|
39
|
+
|
|
40
|
+
Provide a clear, concise explanation of what was queried and what was found.`;
|
|
41
|
+
}
|
|
42
|
+
export function createPathExplanationPrompt(ctx) {
|
|
43
|
+
const steps = [];
|
|
44
|
+
for (let i = 0; i < ctx.path.edges.length; i++) {
|
|
45
|
+
const edge = ctx.path.edges[i];
|
|
46
|
+
const fromNode = ctx.path.nodes[i];
|
|
47
|
+
const toNode = ctx.path.nodes[i + 1];
|
|
48
|
+
steps.push(`${i + 1}. ${fromNode.name} --[${edge.label || edge.type}]--> ${toNode.name}`);
|
|
49
|
+
}
|
|
50
|
+
return `Explain the following path through a knowledge graph:
|
|
51
|
+
|
|
52
|
+
Path (${ctx.path.length} steps):
|
|
53
|
+
${steps.join('\n')}
|
|
54
|
+
|
|
55
|
+
Total weight: ${ctx.path.totalWeight.toFixed(3)}
|
|
56
|
+
|
|
57
|
+
${ctx.question ? `Original question: ${ctx.question}` : ''}
|
|
58
|
+
|
|
59
|
+
Provide a natural language explanation of how these entities are connected.`;
|
|
60
|
+
}
|
|
61
|
+
export function createEntityExtractionPrompt(ctx) {
|
|
62
|
+
const typesList = ctx.existingTypes?.length
|
|
63
|
+
? `Available entity types: ${ctx.existingTypes.join(', ')}`
|
|
64
|
+
: 'Entity types: person, organization, location, concept, event, object';
|
|
65
|
+
const relationsList = ctx.existingRelations?.length
|
|
66
|
+
? `Available relation types: ${ctx.existingRelations.join(', ')}`
|
|
67
|
+
: 'Relation types: knows, works_at, located_in, part_of, related_to, created_by, belongs_to, associated_with';
|
|
68
|
+
return `Extract entities and relationships from the following text.
|
|
69
|
+
|
|
70
|
+
${typesList}
|
|
71
|
+
${relationsList}
|
|
72
|
+
|
|
73
|
+
Text:
|
|
74
|
+
"${ctx.text}"
|
|
75
|
+
|
|
76
|
+
Respond with a JSON object:
|
|
77
|
+
{
|
|
78
|
+
"entities": [
|
|
79
|
+
{
|
|
80
|
+
"name": "Entity Name",
|
|
81
|
+
"type": "entity_type",
|
|
82
|
+
"description": "Brief description",
|
|
83
|
+
"confidence": 0.0-1.0
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"relations": [
|
|
87
|
+
{
|
|
88
|
+
"source": "Source Entity Name",
|
|
89
|
+
"target": "Target Entity Name",
|
|
90
|
+
"type": "relation_type",
|
|
91
|
+
"confidence": 0.0-1.0
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
JSON:`;
|
|
97
|
+
}
|
|
98
|
+
export function createReasoningExplanationPrompt(ctx) {
|
|
99
|
+
const pathDescriptions = ctx.paths
|
|
100
|
+
.map((path, i) => {
|
|
101
|
+
const steps = [];
|
|
102
|
+
for (let j = 0; j < path.edges.length; j++) {
|
|
103
|
+
const edge = path.edges[j];
|
|
104
|
+
const fromNode = path.nodes[j];
|
|
105
|
+
const toNode = path.nodes[j + 1];
|
|
106
|
+
steps.push(`${fromNode.name} --[${edge.label || edge.type}]--> ${toNode.name}`);
|
|
107
|
+
}
|
|
108
|
+
return `Path ${i + 1} (confidence: ${(path.totalWeight * 100).toFixed(1)}%):\n ${steps.join(' → ')}`;
|
|
109
|
+
})
|
|
110
|
+
.join('\n\n');
|
|
111
|
+
return `Explain the reasoning paths between two entities in the knowledge graph.
|
|
112
|
+
|
|
113
|
+
From: ${ctx.startNode}
|
|
114
|
+
To: ${ctx.endNode}
|
|
115
|
+
|
|
116
|
+
${ctx.paths.length > 0 ? `Found ${ctx.paths.length} path(s):\n\n${pathDescriptions}` : 'No paths found.'}
|
|
117
|
+
|
|
118
|
+
${ctx.question ? `Question: ${ctx.question}` : ''}
|
|
119
|
+
|
|
120
|
+
Explain how these entities are connected and what the relationships mean.`;
|
|
121
|
+
}
|
|
122
|
+
export function createGraphSummaryPrompt(ctx) {
|
|
123
|
+
const nodeTypeSummary = Object.entries(ctx.nodesByType)
|
|
124
|
+
.map(([type, count]) => ` - ${type}: ${count}`)
|
|
125
|
+
.join('\n');
|
|
126
|
+
const edgeTypeSummary = Object.entries(ctx.edgesByType)
|
|
127
|
+
.map(([type, count]) => ` - ${type}: ${count}`)
|
|
128
|
+
.join('\n');
|
|
129
|
+
const topNodesSummary = ctx.topNodes.map((n) => ` - ${n.name} (${n.type})`).join('\n');
|
|
130
|
+
return `Summarize the following knowledge graph in natural language.
|
|
131
|
+
|
|
132
|
+
Statistics:
|
|
133
|
+
- Total entities: ${ctx.nodeCount}
|
|
134
|
+
- Total relationships: ${ctx.edgeCount}
|
|
135
|
+
|
|
136
|
+
Entities by type:
|
|
137
|
+
${nodeTypeSummary}
|
|
138
|
+
|
|
139
|
+
Relationships by type:
|
|
140
|
+
${edgeTypeSummary}
|
|
141
|
+
|
|
142
|
+
Most connected entities:
|
|
143
|
+
${topNodesSummary}
|
|
144
|
+
|
|
145
|
+
Provide a concise summary of what this knowledge graph contains.`;
|
|
146
|
+
}
|
|
147
|
+
export function parseEntityExtractionResponse(response) {
|
|
148
|
+
try {
|
|
149
|
+
const jsonMatch = /\{[\s\S]*\}/.exec(response);
|
|
150
|
+
if (!jsonMatch)
|
|
151
|
+
return null;
|
|
152
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
153
|
+
return {
|
|
154
|
+
entities: (parsed.entities || []).map((e) => ({
|
|
155
|
+
name: String(e.name || ''),
|
|
156
|
+
type: e.type || 'custom',
|
|
157
|
+
description: e.description ? String(e.description) : undefined,
|
|
158
|
+
confidence: typeof e.confidence === 'number' ? e.confidence : 0.5,
|
|
159
|
+
})),
|
|
160
|
+
relations: (parsed.relations || []).map((r) => ({
|
|
161
|
+
source: String(r.source || ''),
|
|
162
|
+
target: String(r.target || ''),
|
|
163
|
+
type: r.type || 'related_to',
|
|
164
|
+
confidence: typeof r.confidence === 'number' ? r.confidence : 0.5,
|
|
165
|
+
})),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export function formatNodeForPrompt(node) {
|
|
173
|
+
const props = Object.entries(node.properties)
|
|
174
|
+
.map(([k, v]) => `${k}: ${v}`)
|
|
175
|
+
.join(', ');
|
|
176
|
+
return `${node.name} (${node.type})${node.description ? `: ${node.description}` : ''}${props ? ` [${props}]` : ''}`;
|
|
177
|
+
}
|
|
178
|
+
export function formatEdgeForPrompt(edge, sourceNode, targetNode) {
|
|
179
|
+
const source = sourceNode?.name || edge.sourceNodeId;
|
|
180
|
+
const target = targetNode?.name || edge.targetNodeId;
|
|
181
|
+
const label = edge.label || edge.type;
|
|
182
|
+
return `${source} --[${label}]--> ${target}`;
|
|
183
|
+
}
|
|
184
|
+
export function formatPathForPrompt(path) {
|
|
185
|
+
const steps = [];
|
|
186
|
+
for (let i = 0; i < path.edges.length; i++) {
|
|
187
|
+
const edge = path.edges[i];
|
|
188
|
+
const fromNode = path.nodes[i];
|
|
189
|
+
const toNode = path.nodes[i + 1];
|
|
190
|
+
if (i === 0) {
|
|
191
|
+
steps.push(fromNode.name);
|
|
192
|
+
}
|
|
193
|
+
steps.push(`--[${edge.label || edge.type}]-->`);
|
|
194
|
+
steps.push(toNode.name);
|
|
195
|
+
}
|
|
196
|
+
return steps.join(' ');
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/knowledge-graph/prompts.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,wBAAwB,CAAC,GAA0B;IACjE,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC;SAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC;QAClE,OAAO,KAAK,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,QAAQ,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;IACrH,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;EAGP,gBAAgB,IAAI,cAAc;;;EAGlC,gBAAgB,IAAI,mBAAmB;;EAEvC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,CAAC;AAOD,MAAM,UAAU,4BAA4B,CAAC,GAAqB;IAChE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QACrF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QAC3E,OAAO,MAAM,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC;IACxC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;cAEK,GAAG,CAAC,KAAK,CAAC,IAAI;;EAE1B,QAAQ;;qBAEW,GAAG,CAAC,MAAM,CAAC,KAAK;kBACnB,GAAG,CAAC,MAAM,CAAC,aAAa;;6EAEmC,CAAC;AAC9E,CAAC;AAOD,MAAM,UAAU,2BAA2B,CAAC,GAA2B;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAErC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO;;QAED,GAAG,CAAC,IAAI,CAAC,MAAM;EACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;gBAEF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;;EAE7C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;;4EAEkB,CAAC;AAC7E,CAAC;AAQD,MAAM,UAAU,4BAA4B,CAAC,GAA4B;IACvE,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,EAAE,MAAM;QACzC,CAAC,CAAC,2BAA2B,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC3D,CAAC,CAAC,sEAAsE,CAAC;IAE3E,MAAM,aAAa,GAAG,GAAG,CAAC,iBAAiB,EAAE,MAAM;QACjD,CAAC,CAAC,6BAA6B,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjE,CAAC,CAAC,2GAA2G,CAAC;IAEhH,OAAO;;EAEP,SAAS;EACT,aAAa;;;GAGZ,GAAG,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;MAsBL,CAAC;AACP,CAAC;AASD,MAAM,UAAU,gCAAgC,CAAC,GAAgC;IAC/E,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK;SAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACxG,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;;QAED,GAAG,CAAC,SAAS;MACf,GAAG,CAAC,OAAO;;EAEf,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,MAAM,gBAAgB,gBAAgB,EAAE,CAAC,CAAC,CAAC,iBAAiB;;EAEtG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;;0EAEyB,CAAC;AAC3E,CAAC;AAUD,MAAM,UAAU,wBAAwB,CAAC,GAAwB;IAC/D,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExF,OAAO;;;oBAGW,GAAG,CAAC,SAAS;yBACR,GAAG,CAAC,SAAS;;;EAGpC,eAAe;;;EAGf,eAAe;;;EAGf,eAAe;;iEAEgD,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAgB;IAc5D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAExC,OAAO;YACL,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gBACrE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC1B,IAAI,EAAG,CAAC,CAAC,IAAmB,IAAI,QAAQ;gBACxC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;aAClE,CAAC,CAAC;YACH,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;gBACvE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,IAAI,EAAG,CAAC,CAAC,IAAqB,IAAI,YAAY;gBAC9C,UAAU,EAAE,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;aAClE,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACtH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAe,EACf,UAAsB,EACtB,UAAsB;IAEtB,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;IACrD,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;IAEtC,OAAO,GAAG,MAAM,OAAO,KAAK,QAAQ,MAAM,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { GraphQuery, GraphQueryResult, QueryPattern, QueryCondition, QueryVariable, QueryOperator, GraphAdapter } from '@cogitator-ai/types';
|
|
2
|
+
export interface QueryExecutionContext {
|
|
3
|
+
adapter: GraphAdapter;
|
|
4
|
+
agentId: string;
|
|
5
|
+
variables: Map<string, unknown>;
|
|
6
|
+
timeout?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ParsedPattern {
|
|
9
|
+
subjectVar: string | null;
|
|
10
|
+
subjectValue: string | null;
|
|
11
|
+
predicateVar: string | null;
|
|
12
|
+
predicateValue: string | null;
|
|
13
|
+
objectVar: string | null;
|
|
14
|
+
objectValue: string | null;
|
|
15
|
+
conditions: QueryCondition[];
|
|
16
|
+
}
|
|
17
|
+
export declare function executeQuery(query: GraphQuery, ctx: QueryExecutionContext): Promise<GraphQueryResult>;
|
|
18
|
+
export declare class GraphQueryBuilder {
|
|
19
|
+
private query;
|
|
20
|
+
constructor(type?: GraphQuery['type']);
|
|
21
|
+
static select(): GraphQueryBuilder;
|
|
22
|
+
static ask(): GraphQueryBuilder;
|
|
23
|
+
static construct(): GraphQueryBuilder;
|
|
24
|
+
static describe(): GraphQueryBuilder;
|
|
25
|
+
where(subject: string | QueryVariable, predicate: string | QueryVariable, object: string | QueryVariable): this;
|
|
26
|
+
pattern(pattern: QueryPattern): this;
|
|
27
|
+
filter(field: string, operator: QueryOperator, value: unknown): this;
|
|
28
|
+
orderBy(field: string, direction?: 'asc' | 'desc'): this;
|
|
29
|
+
limit(n: number): this;
|
|
30
|
+
offset(n: number): this;
|
|
31
|
+
count(field: string, alias: string): this;
|
|
32
|
+
sum(field: string, alias: string): this;
|
|
33
|
+
avg(field: string, alias: string): this;
|
|
34
|
+
min(field: string, alias: string): this;
|
|
35
|
+
max(field: string, alias: string): this;
|
|
36
|
+
groupBy(...fields: string[]): this;
|
|
37
|
+
build(): GraphQuery;
|
|
38
|
+
execute(ctx: QueryExecutionContext): Promise<GraphQueryResult>;
|
|
39
|
+
}
|
|
40
|
+
export declare function variable(name: string, type?: 'node' | 'edge' | 'value'): QueryVariable;
|
|
41
|
+
export declare function parseQueryString(queryString: string): GraphQuery;
|
|
42
|
+
export declare function formatQueryResult(result: GraphQueryResult): string;
|
|
43
|
+
//# sourceMappingURL=query-language.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-language.d.ts","sourceRoot":"","sources":["../../src/knowledge-graph/query-language.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,cAAc,EAEd,aAAa,EACb,aAAa,EAIb,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AA0XD,wBAAsB,YAAY,CAChC,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAa;gBAEd,IAAI,GAAE,UAAU,CAAC,MAAM,CAAY;IAO/C,MAAM,CAAC,MAAM,IAAI,iBAAiB;IAIlC,MAAM,CAAC,GAAG,IAAI,iBAAiB;IAI/B,MAAM,CAAC,SAAS,IAAI,iBAAiB;IAIrC,MAAM,CAAC,QAAQ,IAAI,iBAAiB;IAIpC,KAAK,CACH,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,MAAM,EAAE,MAAM,GAAG,aAAa,GAC7B,IAAI;IAKP,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAKpC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAQpE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAQ/D,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQvC,OAAO,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlC,KAAK,IAAI,UAAU;IAIb,OAAO,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGrE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAEtF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CA8DhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAyClE"}
|