@prih/mcp-graph-memory 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +512 -0
  3. package/dist/api/index.js +473 -0
  4. package/dist/api/rest/code.js +78 -0
  5. package/dist/api/rest/docs.js +80 -0
  6. package/dist/api/rest/files.js +64 -0
  7. package/dist/api/rest/graph.js +56 -0
  8. package/dist/api/rest/index.js +117 -0
  9. package/dist/api/rest/knowledge.js +238 -0
  10. package/dist/api/rest/skills.js +284 -0
  11. package/dist/api/rest/tasks.js +272 -0
  12. package/dist/api/rest/tools.js +126 -0
  13. package/dist/api/rest/validation.js +191 -0
  14. package/dist/api/rest/websocket.js +65 -0
  15. package/dist/api/tools/code/get-file-symbols.js +30 -0
  16. package/dist/api/tools/code/get-symbol.js +22 -0
  17. package/dist/api/tools/code/list-files.js +18 -0
  18. package/dist/api/tools/code/search-code.js +27 -0
  19. package/dist/api/tools/code/search-files.js +22 -0
  20. package/dist/api/tools/context/get-context.js +19 -0
  21. package/dist/api/tools/docs/cross-references.js +76 -0
  22. package/dist/api/tools/docs/explain-symbol.js +55 -0
  23. package/dist/api/tools/docs/find-examples.js +52 -0
  24. package/dist/api/tools/docs/get-node.js +24 -0
  25. package/dist/api/tools/docs/get-toc.js +22 -0
  26. package/dist/api/tools/docs/list-snippets.js +46 -0
  27. package/dist/api/tools/docs/list-topics.js +18 -0
  28. package/dist/api/tools/docs/search-files.js +22 -0
  29. package/dist/api/tools/docs/search-snippets.js +43 -0
  30. package/dist/api/tools/docs/search.js +27 -0
  31. package/dist/api/tools/file-index/get-file-info.js +21 -0
  32. package/dist/api/tools/file-index/list-all-files.js +28 -0
  33. package/dist/api/tools/file-index/search-all-files.js +24 -0
  34. package/dist/api/tools/knowledge/add-attachment.js +31 -0
  35. package/dist/api/tools/knowledge/create-note.js +20 -0
  36. package/dist/api/tools/knowledge/create-relation.js +29 -0
  37. package/dist/api/tools/knowledge/delete-note.js +19 -0
  38. package/dist/api/tools/knowledge/delete-relation.js +23 -0
  39. package/dist/api/tools/knowledge/find-linked-notes.js +25 -0
  40. package/dist/api/tools/knowledge/get-note.js +20 -0
  41. package/dist/api/tools/knowledge/list-notes.js +18 -0
  42. package/dist/api/tools/knowledge/list-relations.js +17 -0
  43. package/dist/api/tools/knowledge/remove-attachment.js +19 -0
  44. package/dist/api/tools/knowledge/search-notes.js +25 -0
  45. package/dist/api/tools/knowledge/update-note.js +34 -0
  46. package/dist/api/tools/skills/add-attachment.js +31 -0
  47. package/dist/api/tools/skills/bump-usage.js +19 -0
  48. package/dist/api/tools/skills/create-skill-link.js +25 -0
  49. package/dist/api/tools/skills/create-skill.js +26 -0
  50. package/dist/api/tools/skills/delete-skill-link.js +23 -0
  51. package/dist/api/tools/skills/delete-skill.js +20 -0
  52. package/dist/api/tools/skills/find-linked-skills.js +25 -0
  53. package/dist/api/tools/skills/get-skill.js +21 -0
  54. package/dist/api/tools/skills/link-skill.js +23 -0
  55. package/dist/api/tools/skills/list-skills.js +20 -0
  56. package/dist/api/tools/skills/recall-skills.js +18 -0
  57. package/dist/api/tools/skills/remove-attachment.js +19 -0
  58. package/dist/api/tools/skills/search-skills.js +25 -0
  59. package/dist/api/tools/skills/update-skill.js +58 -0
  60. package/dist/api/tools/tasks/add-attachment.js +31 -0
  61. package/dist/api/tools/tasks/create-task-link.js +25 -0
  62. package/dist/api/tools/tasks/create-task.js +25 -0
  63. package/dist/api/tools/tasks/delete-task-link.js +23 -0
  64. package/dist/api/tools/tasks/delete-task.js +20 -0
  65. package/dist/api/tools/tasks/find-linked-tasks.js +25 -0
  66. package/dist/api/tools/tasks/get-task.js +20 -0
  67. package/dist/api/tools/tasks/link-task.js +23 -0
  68. package/dist/api/tools/tasks/list-tasks.js +24 -0
  69. package/dist/api/tools/tasks/move-task.js +38 -0
  70. package/dist/api/tools/tasks/remove-attachment.js +19 -0
  71. package/dist/api/tools/tasks/search-tasks.js +25 -0
  72. package/dist/api/tools/tasks/update-task.js +55 -0
  73. package/dist/cli/index.js +451 -0
  74. package/dist/cli/indexer.js +277 -0
  75. package/dist/graphs/attachment-types.js +74 -0
  76. package/dist/graphs/code-types.js +10 -0
  77. package/dist/graphs/code.js +172 -0
  78. package/dist/graphs/docs.js +198 -0
  79. package/dist/graphs/file-index-types.js +10 -0
  80. package/dist/graphs/file-index.js +310 -0
  81. package/dist/graphs/file-lang.js +119 -0
  82. package/dist/graphs/knowledge-types.js +32 -0
  83. package/dist/graphs/knowledge.js +764 -0
  84. package/dist/graphs/manager-types.js +87 -0
  85. package/dist/graphs/skill-types.js +10 -0
  86. package/dist/graphs/skill.js +1013 -0
  87. package/dist/graphs/task-types.js +17 -0
  88. package/dist/graphs/task.js +960 -0
  89. package/dist/lib/embedder.js +101 -0
  90. package/dist/lib/events-log.js +400 -0
  91. package/dist/lib/file-import.js +327 -0
  92. package/dist/lib/file-mirror.js +446 -0
  93. package/dist/lib/frontmatter.js +17 -0
  94. package/dist/lib/mirror-watcher.js +637 -0
  95. package/dist/lib/multi-config.js +254 -0
  96. package/dist/lib/parsers/code.js +246 -0
  97. package/dist/lib/parsers/codeblock.js +66 -0
  98. package/dist/lib/parsers/docs.js +196 -0
  99. package/dist/lib/project-manager.js +418 -0
  100. package/dist/lib/promise-queue.js +22 -0
  101. package/dist/lib/search/bm25.js +167 -0
  102. package/dist/lib/search/code.js +103 -0
  103. package/dist/lib/search/docs.js +108 -0
  104. package/dist/lib/search/file-index.js +31 -0
  105. package/dist/lib/search/files.js +61 -0
  106. package/dist/lib/search/knowledge.js +101 -0
  107. package/dist/lib/search/skills.js +104 -0
  108. package/dist/lib/search/tasks.js +103 -0
  109. package/dist/lib/watcher.js +67 -0
  110. package/package.json +83 -0
  111. package/ui/README.md +54 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionConflictError = void 0;
4
+ exports.noopContext = noopContext;
5
+ exports.resolveExternalGraph = resolveExternalGraph;
6
+ exports.findIncomingCrossLinks = findIncomingCrossLinks;
7
+ /** Thrown when an update specifies an expectedVersion that doesn't match the current node version. */
8
+ class VersionConflictError extends Error {
9
+ current;
10
+ expected;
11
+ constructor(current, expected) {
12
+ super(`Version conflict: expected ${expected}, current is ${current}`);
13
+ this.current = current;
14
+ this.expected = expected;
15
+ this.name = 'VersionConflictError';
16
+ }
17
+ }
18
+ exports.VersionConflictError = VersionConflictError;
19
+ /** No-op context for tests and single-project stdio mode. */
20
+ function noopContext(projectId = '') {
21
+ return {
22
+ markDirty: () => { },
23
+ emit: () => { },
24
+ projectId,
25
+ author: '',
26
+ };
27
+ }
28
+ /**
29
+ * Resolve a targetGraph string to the actual graph instance.
30
+ * When projectId is given (workspace mode), per-project graphs are checked first.
31
+ */
32
+ function resolveExternalGraph(ext, targetGraph, projectId) {
33
+ // In workspace mode, resolve per-project indexed graphs first
34
+ if (projectId && ext.projectGraphs) {
35
+ const pg = ext.projectGraphs.get(projectId);
36
+ if (pg) {
37
+ switch (targetGraph) {
38
+ case 'docs': return pg.docGraph;
39
+ case 'code': return pg.codeGraph;
40
+ case 'files': return pg.fileIndexGraph;
41
+ }
42
+ }
43
+ }
44
+ switch (targetGraph) {
45
+ case 'docs': return ext.docGraph;
46
+ case 'code': return ext.codeGraph;
47
+ case 'files': return ext.fileIndexGraph;
48
+ case 'knowledge': return ext.knowledgeGraph;
49
+ case 'tasks': return ext.taskGraph;
50
+ case 'skills': return ext.skillGraph;
51
+ default: return undefined;
52
+ }
53
+ }
54
+ /**
55
+ * Find all cross-graph links that point to `nodeId` in `graphName`
56
+ * by scanning proxy nodes in Knowledge, Task, and Skill graphs.
57
+ * Checks both legacy (`@graph::nodeId`) and project-scoped (`@graph::projectId::nodeId`) proxies.
58
+ */
59
+ function findIncomingCrossLinks(ext, graphName, nodeId, projectId) {
60
+ const results = [];
61
+ // Candidate proxy IDs: legacy format + project-scoped format
62
+ const candidates = [`@${graphName}::${nodeId}`];
63
+ if (projectId)
64
+ candidates.push(`@${graphName}::${projectId}::${nodeId}`);
65
+ function scanGraph(graph, sourceGraphName) {
66
+ if (!graph)
67
+ return;
68
+ for (const pId of candidates) {
69
+ if (!graph.hasNode(pId))
70
+ continue;
71
+ graph.forEachInEdge(pId, (_edge, attrs, source) => {
72
+ const sourceAttrs = graph.getNodeAttributes(source);
73
+ if (sourceAttrs.proxyFor)
74
+ return; // skip proxy-to-proxy
75
+ results.push({
76
+ sourceId: source,
77
+ sourceGraph: sourceGraphName,
78
+ kind: attrs.kind,
79
+ });
80
+ });
81
+ }
82
+ }
83
+ scanGraph(ext.knowledgeGraph, 'knowledge');
84
+ scanGraph(ext.taskGraph, 'tasks');
85
+ scanGraph(ext.skillGraph, 'skills');
86
+ return results;
87
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSkillGraph = createSkillGraph;
4
+ const graphology_1 = require("graphology");
5
+ function createSkillGraph() {
6
+ return new graphology_1.DirectedGraph({
7
+ multi: false,
8
+ allowSelfLoops: false,
9
+ });
10
+ }