pi-harness-runtime 0.10.26 → 0.10.27
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/CHANGELOG.md +22 -0
- package/package.json +1 -1
- package/packages/architecture-generator/dist/adr.d.ts +15 -0
- package/packages/architecture-generator/dist/adr.d.ts.map +1 -0
- package/packages/architecture-generator/dist/adr.js +42 -0
- package/packages/architecture-generator/dist/adr.js.map +1 -0
- package/packages/architecture-generator/dist/index.d.ts +9 -0
- package/packages/architecture-generator/dist/index.d.ts.map +1 -0
- package/packages/architecture-generator/dist/index.js +9 -0
- package/packages/architecture-generator/dist/index.js.map +1 -0
- package/packages/architecture-generator/dist/mermaid.d.ts +30 -0
- package/packages/architecture-generator/dist/mermaid.d.ts.map +1 -0
- package/packages/architecture-generator/dist/mermaid.js +58 -0
- package/packages/architecture-generator/dist/mermaid.js.map +1 -0
- package/packages/architecture-generator/dist/types.d.ts +30 -0
- package/packages/architecture-generator/dist/types.d.ts.map +1 -0
- package/packages/architecture-generator/dist/types.js +7 -0
- package/packages/architecture-generator/dist/types.js.map +1 -0
- package/packages/architecture-generator/src/adr.ts +51 -0
- package/packages/architecture-generator/src/index.ts +9 -0
- package/packages/architecture-generator/src/mermaid.ts +82 -0
- package/packages/architecture-generator/src/types.ts +30 -0
- package/packages/knowledge-graph/dist/graph-extractor.d.ts +27 -0
- package/packages/knowledge-graph/dist/graph-extractor.d.ts.map +1 -0
- package/packages/knowledge-graph/dist/graph-extractor.js +285 -0
- package/packages/knowledge-graph/dist/graph-extractor.js.map +1 -0
- package/packages/knowledge-graph/dist/index.d.ts +27 -0
- package/packages/knowledge-graph/dist/index.d.ts.map +1 -0
- package/packages/knowledge-graph/dist/index.js +27 -0
- package/packages/knowledge-graph/dist/index.js.map +1 -0
- package/packages/knowledge-graph/dist/mcp-client.d.ts +38 -0
- package/packages/knowledge-graph/dist/mcp-client.d.ts.map +1 -0
- package/packages/knowledge-graph/dist/mcp-client.js +157 -0
- package/packages/knowledge-graph/dist/mcp-client.js.map +1 -0
- package/packages/knowledge-graph/dist/provenance-linker.d.ts +19 -0
- package/packages/knowledge-graph/dist/provenance-linker.d.ts.map +1 -0
- package/packages/knowledge-graph/dist/provenance-linker.js +92 -0
- package/packages/knowledge-graph/dist/provenance-linker.js.map +1 -0
- package/packages/knowledge-graph/dist/types.d.ts +53 -0
- package/packages/knowledge-graph/dist/types.d.ts.map +1 -0
- package/packages/knowledge-graph/dist/types.js +7 -0
- package/packages/knowledge-graph/dist/types.js.map +1 -0
- package/packages/knowledge-graph/src/graph-extractor.ts +355 -0
- package/packages/knowledge-graph/src/index.ts +27 -0
- package/packages/knowledge-graph/src/mcp-client.ts +246 -0
- package/packages/knowledge-graph/src/provenance-linker.ts +105 -0
- package/packages/knowledge-graph/src/types.ts +86 -0
- package/packages/milestone-manager/dist/engine.d.ts +27 -0
- package/packages/milestone-manager/dist/engine.d.ts.map +1 -0
- package/packages/milestone-manager/dist/engine.js +80 -0
- package/packages/milestone-manager/dist/engine.js.map +1 -0
- package/packages/milestone-manager/dist/index.d.ts +6 -0
- package/packages/milestone-manager/dist/index.d.ts.map +1 -0
- package/packages/milestone-manager/dist/index.js +6 -0
- package/packages/milestone-manager/dist/index.js.map +1 -0
- package/packages/milestone-manager/dist/types.d.ts +25 -0
- package/packages/milestone-manager/dist/types.d.ts.map +1 -0
- package/packages/milestone-manager/dist/types.js +7 -0
- package/packages/milestone-manager/dist/types.js.map +1 -0
- package/packages/milestone-manager/src/engine.ts +113 -0
- package/packages/milestone-manager/src/index.ts +6 -0
- package/packages/milestone-manager/src/types.ts +28 -0
- package/packages/project-bootstrap/dist/bootstrap.d.ts +23 -0
- package/packages/project-bootstrap/dist/bootstrap.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/bootstrap.js +136 -0
- package/packages/project-bootstrap/dist/bootstrap.js.map +1 -0
- package/packages/project-bootstrap/dist/frappe.d.ts +8 -0
- package/packages/project-bootstrap/dist/frappe.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/frappe.js +82 -0
- package/packages/project-bootstrap/dist/frappe.js.map +1 -0
- package/packages/project-bootstrap/dist/index.d.ts +27 -0
- package/packages/project-bootstrap/dist/index.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/index.js +27 -0
- package/packages/project-bootstrap/dist/index.js.map +1 -0
- package/packages/project-bootstrap/dist/minimal.d.ts +8 -0
- package/packages/project-bootstrap/dist/minimal.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/minimal.js +35 -0
- package/packages/project-bootstrap/dist/minimal.js.map +1 -0
- package/packages/project-bootstrap/dist/types.d.ts +61 -0
- package/packages/project-bootstrap/dist/types.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/types.js +7 -0
- package/packages/project-bootstrap/dist/types.js.map +1 -0
- package/packages/project-bootstrap/dist/typescript.d.ts +8 -0
- package/packages/project-bootstrap/dist/typescript.d.ts.map +1 -0
- package/packages/project-bootstrap/dist/typescript.js +103 -0
- package/packages/project-bootstrap/dist/typescript.js.map +1 -0
- package/packages/project-bootstrap/src/bootstrap.ts +181 -0
- package/packages/project-bootstrap/src/frappe.ts +103 -0
- package/packages/project-bootstrap/src/index.ts +27 -0
- package/packages/project-bootstrap/src/minimal.ts +45 -0
- package/packages/project-bootstrap/src/types.ts +66 -0
- package/packages/project-bootstrap/src/typescript.ts +123 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* Extract nodes and edges from SKILL.md files.
|
|
5
|
+
*/
|
|
6
|
+
function parseSKILL(content) {
|
|
7
|
+
const sections = [];
|
|
8
|
+
const lines = content.split("\n");
|
|
9
|
+
let currentSection = { content: "" };
|
|
10
|
+
let inFrontmatter = false;
|
|
11
|
+
for (const line of lines) {
|
|
12
|
+
if (line.trim() === "---") {
|
|
13
|
+
inFrontmatter = !inFrontmatter;
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (inFrontmatter)
|
|
17
|
+
continue;
|
|
18
|
+
if (line.startsWith("## ")) {
|
|
19
|
+
if (currentSection.content) {
|
|
20
|
+
sections.push(currentSection);
|
|
21
|
+
}
|
|
22
|
+
currentSection = { title: line.slice(3), content: "" };
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
currentSection.content += (currentSection.content ? "\n" : "") + line;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (currentSection.content) {
|
|
29
|
+
sections.push(currentSection);
|
|
30
|
+
}
|
|
31
|
+
const titleMatch = content.match(/^#\s+(.+)$/m);
|
|
32
|
+
return { title: titleMatch?.[1], sections };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extract RFC references from content
|
|
36
|
+
*/
|
|
37
|
+
function extractRFCRefs(content) {
|
|
38
|
+
const rfcPattern = /RFC[- ]?(\d{4})/gi;
|
|
39
|
+
const matches = content.match(rfcPattern) || [];
|
|
40
|
+
return [
|
|
41
|
+
...new Set(matches.map((m) => {
|
|
42
|
+
const num = m.replace(/[^0-9]/g, "");
|
|
43
|
+
return `RFC-${num.padStart(4, "0")}`;
|
|
44
|
+
})),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extract wiki links from content (e.g., [[skill:xxx]])
|
|
49
|
+
*/
|
|
50
|
+
function extractWikiLinks(content) {
|
|
51
|
+
const linkPattern = /\[\[([^\]]+)\]\]/g;
|
|
52
|
+
const matches = content.match(linkPattern) || [];
|
|
53
|
+
return matches.map((m) => m.slice(2, -2).trim());
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract skill ID from file path
|
|
57
|
+
*/
|
|
58
|
+
function extractSkillId(filePath) {
|
|
59
|
+
// Path: .../skills/{skill-id}/SKILL.md
|
|
60
|
+
const match = filePath.match(/skills\/([^/]+)\/SKILL\.md$/i);
|
|
61
|
+
return match
|
|
62
|
+
? match[1]
|
|
63
|
+
: filePath.split("/").pop()?.replace(".md", "") || "unknown";
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse provenance from frontmatter
|
|
67
|
+
*/
|
|
68
|
+
function parseProvenance(frontmatter) {
|
|
69
|
+
return {
|
|
70
|
+
implements: frontmatter.provenance || undefined,
|
|
71
|
+
related_implementation: frontmatter.related_implementation || undefined,
|
|
72
|
+
author: frontmatter.author || undefined,
|
|
73
|
+
version: frontmatter.version || undefined,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract a knowledge node from a SKILL.md file
|
|
78
|
+
*/
|
|
79
|
+
export function extractSkillNode(filePath, content, frontmatter) {
|
|
80
|
+
const skillId = extractSkillId(filePath);
|
|
81
|
+
const provenance = parseProvenance(frontmatter);
|
|
82
|
+
const okf = parseSKILL(content);
|
|
83
|
+
return {
|
|
84
|
+
id: `skill:${skillId}`,
|
|
85
|
+
type: "skill",
|
|
86
|
+
data: {
|
|
87
|
+
title: frontmatter.title || okf.title || skillId,
|
|
88
|
+
description: okf.sections[0]?.content.slice(0, 200) || undefined,
|
|
89
|
+
tags: frontmatter.tags || [],
|
|
90
|
+
source: filePath,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Extract edges from a SKILL.md file
|
|
96
|
+
*/
|
|
97
|
+
export function extractSkillEdges(filePath, content, frontmatter) {
|
|
98
|
+
const skillId = extractSkillId(filePath);
|
|
99
|
+
const provenance = parseProvenance(frontmatter);
|
|
100
|
+
const edges = [];
|
|
101
|
+
// Provenance: implements RFC
|
|
102
|
+
if (provenance.implements) {
|
|
103
|
+
const rfcNum = provenance.implements
|
|
104
|
+
.replace(/RFC[- ]?/i, "")
|
|
105
|
+
.padStart(4, "0");
|
|
106
|
+
edges.push({
|
|
107
|
+
from: `skill:${skillId}`,
|
|
108
|
+
to: `rfc:RFC-${rfcNum}`,
|
|
109
|
+
type: "implements",
|
|
110
|
+
metadata: { source: "frontmatter:provenance.implements" },
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Provenance: documents implementation
|
|
114
|
+
if (provenance.related_implementation) {
|
|
115
|
+
edges.push({
|
|
116
|
+
from: `skill:${skillId}`,
|
|
117
|
+
to: `implementation:${provenance.related_implementation}`,
|
|
118
|
+
type: "documents",
|
|
119
|
+
metadata: { source: "frontmatter:related_implementation" },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// Content: RFC references
|
|
123
|
+
const rfcRefs = extractRFCRefs(content);
|
|
124
|
+
for (const rfc of rfcRefs) {
|
|
125
|
+
if (rfc !== provenance.implements) {
|
|
126
|
+
// Don't duplicate
|
|
127
|
+
edges.push({
|
|
128
|
+
from: `skill:${skillId}`,
|
|
129
|
+
to: rfc,
|
|
130
|
+
type: "references",
|
|
131
|
+
metadata: { source: "content:regex" },
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Content: wiki links
|
|
136
|
+
const wikiLinks = extractWikiLinks(content);
|
|
137
|
+
for (const link of wikiLinks) {
|
|
138
|
+
if (link.startsWith("skill:")) {
|
|
139
|
+
edges.push({
|
|
140
|
+
from: `skill:${skillId}`,
|
|
141
|
+
to: link,
|
|
142
|
+
type: "related_to",
|
|
143
|
+
metadata: { source: "content:wiki-link" },
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return edges;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Extract RFC nodes from RFC markdown files
|
|
151
|
+
*/
|
|
152
|
+
export function extractRFCNode(filePath, content, title) {
|
|
153
|
+
// Extract RFC number from filename: RFC-0106_KNOWLEDGE_GRAPH_PROVENANCE.md
|
|
154
|
+
const match = filePath.match(/RFC[- ]?(\d{4})/i);
|
|
155
|
+
const rfcNum = match ? match[1].padStart(4, "0") : "0000";
|
|
156
|
+
// Extract summary from first paragraph
|
|
157
|
+
const summaryMatch = content.match(/## Summary\n+([^\n]+)/i);
|
|
158
|
+
const summary = summaryMatch ? summaryMatch[1].slice(0, 200) : undefined;
|
|
159
|
+
// Extract tags from content
|
|
160
|
+
const tagMatches = content.match(/tag[s]?:?\s*\[([^\]]+)\]/i);
|
|
161
|
+
const tags = tagMatches
|
|
162
|
+
? tagMatches[1].split(",").map((t) => t.trim().toLowerCase())
|
|
163
|
+
: [];
|
|
164
|
+
return {
|
|
165
|
+
id: `rfc:RFC-${rfcNum}`,
|
|
166
|
+
type: "rfc",
|
|
167
|
+
data: {
|
|
168
|
+
title,
|
|
169
|
+
description: summary,
|
|
170
|
+
tags,
|
|
171
|
+
source: filePath,
|
|
172
|
+
url: `https://github.com/ManotLuijiu/pi-harness-runtime/blob/main/${filePath}`,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Extract edges between RFCs
|
|
178
|
+
*/
|
|
179
|
+
export function extractRFCEdges(filePath, content) {
|
|
180
|
+
const edges = [];
|
|
181
|
+
// RFC references other RFCs
|
|
182
|
+
const rfcRefs = extractRFCRefs(content);
|
|
183
|
+
const match = filePath.match(/RFC[- ]?(\d{4})/i);
|
|
184
|
+
const rfcNum = match ? `RFC-${match[1].padStart(4, "0")}` : "rfc:unknown";
|
|
185
|
+
for (const ref of rfcRefs) {
|
|
186
|
+
edges.push({
|
|
187
|
+
from: rfcNum,
|
|
188
|
+
to: ref,
|
|
189
|
+
type: "references",
|
|
190
|
+
metadata: { source: "content:regex" },
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
// Supersedes (e.g., "Supersedes RFC-0008")
|
|
194
|
+
const supersedesMatch = content.match(/supersedes\s+RFC[- ]?(\d{4})/gi);
|
|
195
|
+
if (supersedesMatch) {
|
|
196
|
+
for (const match of supersedesMatch) {
|
|
197
|
+
const numMatch = match.match(/\d{4}/);
|
|
198
|
+
if (numMatch) {
|
|
199
|
+
const superseded = `RFC-${numMatch[0].padStart(4, "0")}`;
|
|
200
|
+
edges.push({
|
|
201
|
+
from: rfcNum,
|
|
202
|
+
to: superseded,
|
|
203
|
+
type: "supersedes",
|
|
204
|
+
metadata: { source: "content:supersedes" },
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return edges;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Build complete knowledge graph from directory
|
|
213
|
+
*/
|
|
214
|
+
export async function extractKnowledgeGraph(skillsPath, rfcPath) {
|
|
215
|
+
const { readdir, readFile } = await import("fs/promises");
|
|
216
|
+
const { join } = await import("path");
|
|
217
|
+
const nodes = [];
|
|
218
|
+
const edges = [];
|
|
219
|
+
// Extract skill nodes and edges
|
|
220
|
+
try {
|
|
221
|
+
const skillDirs = await readdir(skillsPath, { withFileTypes: true });
|
|
222
|
+
for (const dir of skillDirs) {
|
|
223
|
+
if (!dir.isDirectory())
|
|
224
|
+
continue;
|
|
225
|
+
const skillPath = join(skillsPath, dir.name, "SKILL.md");
|
|
226
|
+
try {
|
|
227
|
+
const content = await readFile(skillPath, "utf-8");
|
|
228
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
229
|
+
const frontmatter = {};
|
|
230
|
+
if (frontmatterMatch) {
|
|
231
|
+
for (const line of frontmatterMatch[1].split("\n")) {
|
|
232
|
+
const [key, ...valueParts] = line.split(":");
|
|
233
|
+
if (key && valueParts.length) {
|
|
234
|
+
const value = valueParts.join(":").trim();
|
|
235
|
+
// Handle arrays
|
|
236
|
+
if (value.startsWith("[")) {
|
|
237
|
+
frontmatter[key.trim()] = value
|
|
238
|
+
.slice(1, -1)
|
|
239
|
+
.split(",")
|
|
240
|
+
.map((v) => v.trim().replace(/['"]/g, ""));
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
frontmatter[key.trim()] = value.replace(/['"]/g, "");
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const node = extractSkillNode(skillPath, content, frontmatter);
|
|
249
|
+
nodes.push(node);
|
|
250
|
+
const skillEdges = extractSkillEdges(skillPath, content, frontmatter);
|
|
251
|
+
edges.push(...skillEdges);
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
// Skip files that can't be read
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Skills directory might not exist
|
|
260
|
+
}
|
|
261
|
+
// Extract RFC nodes and edges
|
|
262
|
+
try {
|
|
263
|
+
const rfcFiles = await readdir(rfcPath);
|
|
264
|
+
for (const file of rfcFiles) {
|
|
265
|
+
if (!file.match(/^RFC[- ]?\d{4}_.*\.md$/i))
|
|
266
|
+
continue;
|
|
267
|
+
const filePath = join(rfcPath, file);
|
|
268
|
+
const content = await readFile(filePath, "utf-8");
|
|
269
|
+
// Extract title from first # heading
|
|
270
|
+
const titleMatch = content.match(/^#\s+(.+)$/m);
|
|
271
|
+
const title = titleMatch
|
|
272
|
+
? titleMatch[1].replace(/^RFC[-\d]+\s*[-–]\s*/, "")
|
|
273
|
+
: file;
|
|
274
|
+
const node = extractRFCNode(filePath, content, title);
|
|
275
|
+
nodes.push(node);
|
|
276
|
+
const rfcEdges = extractRFCEdges(filePath, content);
|
|
277
|
+
edges.push(...rfcEdges);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// RFC directory might not exist
|
|
282
|
+
}
|
|
283
|
+
return { nodes, edges };
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=graph-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-extractor.js","sourceRoot":"","sources":["../src/graph-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* Knowledge Graph extraction and provenance linking for SKILL.md files.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { extractKnowledgeGraph, completeGraph, syncGraphToKnowledgeService } from '@pi-harness/knowledge-graph';
|
|
9
|
+
*
|
|
10
|
+
* // Extract graph from skills directory
|
|
11
|
+
* const graph = await extractKnowledgeGraph(
|
|
12
|
+
* 'frappe-bench/.claude-plugins/moocoding-skills/skills',
|
|
13
|
+
* 'pi-harness-runtime/RFC'
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* // Complete with provenance edges
|
|
17
|
+
* const fullGraph = completeGraph(graph);
|
|
18
|
+
*
|
|
19
|
+
* // Sync to TencentDB Knowledge Service
|
|
20
|
+
* await syncGraphToKnowledgeService(fullGraph, config);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export * from "./types.js";
|
|
24
|
+
export * from "./graph-extractor.js";
|
|
25
|
+
export * from "./provenance-linker.js";
|
|
26
|
+
export * from "./mcp-client.js";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* Knowledge Graph extraction and provenance linking for SKILL.md files.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { extractKnowledgeGraph, completeGraph, syncGraphToKnowledgeService } from '@pi-harness/knowledge-graph';
|
|
9
|
+
*
|
|
10
|
+
* // Extract graph from skills directory
|
|
11
|
+
* const graph = await extractKnowledgeGraph(
|
|
12
|
+
* 'frappe-bench/.claude-plugins/moocoding-skills/skills',
|
|
13
|
+
* 'pi-harness-runtime/RFC'
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* // Complete with provenance edges
|
|
17
|
+
* const fullGraph = completeGraph(graph);
|
|
18
|
+
*
|
|
19
|
+
* // Sync to TencentDB Knowledge Service
|
|
20
|
+
* await syncGraphToKnowledgeService(fullGraph, config);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export * from "./types.js";
|
|
24
|
+
export * from "./graph-extractor.js";
|
|
25
|
+
export * from "./provenance-linker.js";
|
|
26
|
+
export * from "./mcp-client.js";
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for knowledge graph queries.
|
|
5
|
+
*/
|
|
6
|
+
import type { KnowledgeNode, KnowledgeEdge, KnowledgeGraph, SearchOptions, SearchResult, TencentDBConfig } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Sync graph to TencentDB Knowledge Service
|
|
9
|
+
*/
|
|
10
|
+
export declare function syncGraphToKnowledgeService(graph: KnowledgeGraph, config: TencentDBConfig): Promise<{
|
|
11
|
+
synced: number;
|
|
12
|
+
errors: string[];
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Search knowledge graph
|
|
16
|
+
*/
|
|
17
|
+
export declare function searchGraph(query: string, config: TencentDBConfig, options?: SearchOptions): Promise<SearchResult[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Query graph by relationship type
|
|
20
|
+
*/
|
|
21
|
+
export declare function queryRelationships(config: TencentDBConfig, options: {
|
|
22
|
+
type?: KnowledgeEdge["type"];
|
|
23
|
+
from?: string;
|
|
24
|
+
to?: string;
|
|
25
|
+
}): Promise<KnowledgeEdge[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Get a specific node by ID
|
|
28
|
+
*/
|
|
29
|
+
export declare function getNode(nodeId: string, config: TencentDBConfig): Promise<KnowledgeNode | null>;
|
|
30
|
+
/**
|
|
31
|
+
* Find skills that implement a specific RFC
|
|
32
|
+
*/
|
|
33
|
+
export declare function findByRFC(rfcId: string, config: TencentDBConfig): Promise<KnowledgeNode[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Find related skills
|
|
36
|
+
*/
|
|
37
|
+
export declare function findRelated(skillId: string, config: TencentDBConfig, maxResults?: number): Promise<KnowledgeNode[]>;
|
|
38
|
+
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA+B/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CAgDzB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE;IACR,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ,GACC,OAAO,CAAC,aAAa,EAAE,CAAC,CA+B1B;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAsC/B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,UAAU,SAAI,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAe1B"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for knowledge graph queries.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Sync graph to TencentDB Knowledge Service
|
|
8
|
+
*/
|
|
9
|
+
export async function syncGraphToKnowledgeService(graph, config) {
|
|
10
|
+
const response = await fetch(`${config.knowledgeUrl}/v3/knowledge/graph/sync`, {
|
|
11
|
+
method: "POST",
|
|
12
|
+
headers: {
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
"x-tdai-user-key": config.userKey,
|
|
15
|
+
"x-tdai-service-id": config.serviceId,
|
|
16
|
+
},
|
|
17
|
+
body: JSON.stringify({
|
|
18
|
+
nodes: graph.nodes.map((n) => ({
|
|
19
|
+
id: n.id,
|
|
20
|
+
type: n.type,
|
|
21
|
+
...n.data,
|
|
22
|
+
})),
|
|
23
|
+
edges: graph.edges.map((e) => ({
|
|
24
|
+
from: e.from,
|
|
25
|
+
to: e.to,
|
|
26
|
+
type: e.type,
|
|
27
|
+
})),
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
const error = await response.text();
|
|
32
|
+
return { synced: 0, errors: [error] };
|
|
33
|
+
}
|
|
34
|
+
return { synced: graph.nodes.length, errors: [] };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Search knowledge graph
|
|
38
|
+
*/
|
|
39
|
+
export async function searchGraph(query, config, options = {}) {
|
|
40
|
+
const limit = options.limit ?? 10;
|
|
41
|
+
const response = await fetch(`${config.knowledgeUrl}/v3/knowledge/graph/search`, {
|
|
42
|
+
method: "POST",
|
|
43
|
+
headers: {
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
"x-tdai-user-key": config.userKey,
|
|
46
|
+
"x-tdai-service-id": config.serviceId,
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({
|
|
49
|
+
query,
|
|
50
|
+
limit,
|
|
51
|
+
type: options.type,
|
|
52
|
+
tags: options.tags,
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
throw new Error(`Search failed: ${response.statusText}`);
|
|
57
|
+
}
|
|
58
|
+
const data = (await response.json());
|
|
59
|
+
return data.results.map((r) => ({
|
|
60
|
+
node: {
|
|
61
|
+
id: r.id,
|
|
62
|
+
type: r.type,
|
|
63
|
+
data: {
|
|
64
|
+
title: r.title,
|
|
65
|
+
description: r.description,
|
|
66
|
+
tags: r.tags,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
score: r.score,
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Query graph by relationship type
|
|
74
|
+
*/
|
|
75
|
+
export async function queryRelationships(config, options) {
|
|
76
|
+
const response = await fetch(`${config.knowledgeUrl}/v3/knowledge/graph/query`, {
|
|
77
|
+
method: "POST",
|
|
78
|
+
headers: {
|
|
79
|
+
"Content-Type": "application/json",
|
|
80
|
+
"x-tdai-user-key": config.userKey,
|
|
81
|
+
"x-tdai-service-id": config.serviceId,
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify(options),
|
|
84
|
+
});
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new Error(`Query failed: ${response.statusText}`);
|
|
87
|
+
}
|
|
88
|
+
const data = (await response.json());
|
|
89
|
+
return data.edges.map((e) => ({
|
|
90
|
+
from: e.from,
|
|
91
|
+
to: e.to,
|
|
92
|
+
type: e.type,
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get a specific node by ID
|
|
97
|
+
*/
|
|
98
|
+
export async function getNode(nodeId, config) {
|
|
99
|
+
const response = await fetch(`${config.knowledgeUrl}/v3/knowledge/graph/node/${encodeURIComponent(nodeId)}`, {
|
|
100
|
+
headers: {
|
|
101
|
+
"x-tdai-user-key": config.userKey,
|
|
102
|
+
"x-tdai-service-id": config.serviceId,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
if (response.status === 404) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
throw new Error(`Get node failed: ${response.statusText}`);
|
|
110
|
+
}
|
|
111
|
+
const data = (await response.json());
|
|
112
|
+
return {
|
|
113
|
+
id: data.id,
|
|
114
|
+
type: data.type,
|
|
115
|
+
data: {
|
|
116
|
+
title: data.title,
|
|
117
|
+
description: data.description,
|
|
118
|
+
tags: data.tags,
|
|
119
|
+
source: data.source,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Find skills that implement a specific RFC
|
|
125
|
+
*/
|
|
126
|
+
export async function findByRFC(rfcId, config) {
|
|
127
|
+
const edges = await queryRelationships(config, {
|
|
128
|
+
type: "implements",
|
|
129
|
+
to: rfcId.startsWith("rfc:") ? rfcId : `rfc:${rfcId}`,
|
|
130
|
+
});
|
|
131
|
+
const nodes = [];
|
|
132
|
+
for (const edge of edges) {
|
|
133
|
+
const node = await getNode(edge.from, config);
|
|
134
|
+
if (node) {
|
|
135
|
+
nodes.push(node);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return nodes;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Find related skills
|
|
142
|
+
*/
|
|
143
|
+
export async function findRelated(skillId, config, maxResults = 5) {
|
|
144
|
+
const edges = await queryRelationships(config, {
|
|
145
|
+
type: "related_to",
|
|
146
|
+
from: skillId.startsWith("skill:") ? skillId : `skill:${skillId}`,
|
|
147
|
+
});
|
|
148
|
+
const nodes = [];
|
|
149
|
+
for (const edge of edges.slice(0, maxResults)) {
|
|
150
|
+
const node = await getNode(edge.to, config);
|
|
151
|
+
if (node) {
|
|
152
|
+
nodes.push(node);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return nodes;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=mcp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Graph - RFC-0106
|
|
3
|
+
*
|
|
4
|
+
* Provenance linking between skills, RFCs, and implementations.
|
|
5
|
+
*/
|
|
6
|
+
import type { KnowledgeEdge, KnowledgeGraph } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Build provenance edges based on metadata
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildProvenanceEdges(graph: KnowledgeGraph): KnowledgeEdge[];
|
|
11
|
+
/**
|
|
12
|
+
* Infer additional edges from content analysis
|
|
13
|
+
*/
|
|
14
|
+
export declare function inferRelationships(graph: KnowledgeGraph): KnowledgeEdge[];
|
|
15
|
+
/**
|
|
16
|
+
* Complete graph with all provenance links
|
|
17
|
+
*/
|
|
18
|
+
export declare function completeGraph(graph: KnowledgeGraph): KnowledgeGraph;
|
|
19
|
+
//# sourceMappingURL=provenance-linker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provenance-linker.d.ts","sourceRoot":"","sources":["../src/provenance-linker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAiB,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,EAAE,CAiC3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,EAAE,CA0CzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAQnE"}
|