@graphmemory/server 1.1.0 → 1.3.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.
Files changed (104) hide show
  1. package/LICENSE +84 -12
  2. package/README.md +66 -101
  3. package/dist/api/index.js +279 -169
  4. package/dist/api/rest/index.js +36 -16
  5. package/dist/api/rest/tools.js +8 -1
  6. package/dist/api/rest/websocket.js +22 -1
  7. package/dist/api/tools/code/search-code.js +12 -9
  8. package/dist/api/tools/code/search-files.js +1 -1
  9. package/dist/api/tools/docs/cross-references.js +3 -2
  10. package/dist/api/tools/docs/explain-symbol.js +2 -1
  11. package/dist/api/tools/docs/find-examples.js +2 -1
  12. package/dist/api/tools/docs/search-files.js +1 -1
  13. package/dist/api/tools/docs/search-snippets.js +1 -1
  14. package/dist/api/tools/docs/search.js +5 -4
  15. package/dist/api/tools/file-index/search-all-files.js +1 -1
  16. package/dist/api/tools/knowledge/add-attachment.js +14 -3
  17. package/dist/api/tools/knowledge/create-relation.js +2 -2
  18. package/dist/api/tools/knowledge/delete-relation.js +2 -2
  19. package/dist/api/tools/knowledge/find-linked-notes.js +1 -1
  20. package/dist/api/tools/knowledge/remove-attachment.js +5 -1
  21. package/dist/api/tools/knowledge/search-notes.js +5 -4
  22. package/dist/api/tools/skills/add-attachment.js +14 -3
  23. package/dist/api/tools/skills/recall-skills.js +1 -1
  24. package/dist/api/tools/skills/remove-attachment.js +5 -1
  25. package/dist/api/tools/skills/search-skills.js +6 -5
  26. package/dist/api/tools/tasks/add-attachment.js +14 -3
  27. package/dist/api/tools/tasks/create-task-link.js +1 -1
  28. package/dist/api/tools/tasks/delete-task-link.js +1 -1
  29. package/dist/api/tools/tasks/find-linked-tasks.js +1 -1
  30. package/dist/api/tools/tasks/remove-attachment.js +5 -1
  31. package/dist/api/tools/tasks/search-tasks.js +5 -4
  32. package/dist/cli/index.js +69 -311
  33. package/dist/cli/indexer.js +61 -29
  34. package/dist/graphs/code.js +70 -7
  35. package/dist/graphs/docs.js +15 -2
  36. package/dist/graphs/file-index.js +20 -6
  37. package/dist/graphs/file-lang.js +1 -1
  38. package/dist/graphs/knowledge.js +20 -3
  39. package/dist/graphs/manager-types.js +1 -1
  40. package/dist/graphs/skill.js +23 -4
  41. package/dist/graphs/task.js +23 -4
  42. package/dist/lib/embedding-codec.js +65 -0
  43. package/dist/lib/file-mirror.js +7 -7
  44. package/dist/lib/frontmatter.js +3 -2
  45. package/dist/lib/jwt.js +4 -4
  46. package/dist/lib/mirror-watcher.js +5 -4
  47. package/dist/lib/multi-config.js +60 -1
  48. package/dist/lib/parsers/code.js +158 -31
  49. package/dist/lib/parsers/codeblock.js +11 -6
  50. package/dist/lib/parsers/docs.js +59 -31
  51. package/dist/lib/parsers/languages/registry.js +10 -4
  52. package/dist/lib/parsers/languages/typescript.js +195 -48
  53. package/dist/lib/project-manager.js +14 -10
  54. package/dist/lib/search/bm25.js +18 -1
  55. package/dist/lib/search/code.js +12 -3
  56. package/dist/lib/watcher.js +17 -9
  57. package/dist/ui/assets/NoteForm-aZX9f6-3.js +1 -0
  58. package/dist/ui/assets/SkillForm-KYa3o92l.js +1 -0
  59. package/dist/ui/assets/TaskForm-Bl5nkybO.js +1 -0
  60. package/dist/ui/assets/_articleId_-DjbCByxM.js +1 -0
  61. package/dist/ui/assets/_docId_-hdCDjclV.js +1 -0
  62. package/dist/ui/assets/_filePath_-CpG836v4.js +1 -0
  63. package/dist/ui/assets/_noteId_-C1enaQd1.js +1 -0
  64. package/dist/ui/assets/_skillId_-hPoCet7J.js +1 -0
  65. package/dist/ui/assets/_taskId_-DSB3dLVz.js +1 -0
  66. package/dist/ui/assets/_toolName_-3SmCfxZy.js +2 -0
  67. package/dist/ui/assets/api-BMnBjMMf.js +1 -0
  68. package/dist/ui/assets/api-BlFF6gX-.js +1 -0
  69. package/dist/ui/assets/api-CrGJOcaN.js +1 -0
  70. package/dist/ui/assets/api-DuX-0a_X.js +1 -0
  71. package/dist/ui/assets/attachments-CEQ-2nMo.js +1 -0
  72. package/dist/ui/assets/client-Bq88u7gN.js +1 -0
  73. package/dist/ui/assets/docs-CrXsRcOG.js +1 -0
  74. package/dist/ui/assets/edit-BYiy1FZy.js +1 -0
  75. package/dist/ui/assets/edit-TUIIpUMF.js +1 -0
  76. package/dist/ui/assets/edit-hc-ZWz3y.js +1 -0
  77. package/dist/ui/assets/esm-BWiKNcBW.js +1 -0
  78. package/dist/ui/assets/files-0bPg6NH9.js +1 -0
  79. package/dist/ui/assets/graph-DXGud_wF.js +1 -0
  80. package/dist/ui/assets/help-CEMQqZUR.js +891 -0
  81. package/dist/ui/assets/help-DJ52_fxN.js +1 -0
  82. package/dist/ui/assets/index-BCZDAYZi.js +2 -0
  83. package/dist/ui/assets/index-D6zSNtzo.css +1 -0
  84. package/dist/ui/assets/knowledge-DeygeGGH.js +1 -0
  85. package/dist/ui/assets/new-CpD7hOBA.js +1 -0
  86. package/dist/ui/assets/new-DHTg3Dqq.js +1 -0
  87. package/dist/ui/assets/new-s8c0M75X.js +1 -0
  88. package/dist/ui/assets/prompts-BgOmdxgM.js +295 -0
  89. package/dist/ui/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  90. package/dist/ui/assets/search-EpJhdP2a.js +1 -0
  91. package/dist/ui/assets/skill-y9pizyqE.js +1 -0
  92. package/dist/ui/assets/skills-Cga9iUZN.js +1 -0
  93. package/dist/ui/assets/tasks-CobouTKV.js +1 -0
  94. package/dist/ui/assets/tools-JxKH5BDF.js +1 -0
  95. package/dist/ui/assets/vendor-graph-BWpSgpMe.js +321 -0
  96. package/dist/ui/assets/vendor-markdown-CT8ZVEPu.js +50 -0
  97. package/dist/ui/assets/vendor-md-editor-DmWafJvr.js +44 -0
  98. package/dist/ui/assets/{index-kKd4mVrh.css → vendor-md-editor-HrwGbQou.css} +1 -1
  99. package/dist/ui/assets/vendor-mui-BPj7d3Sw.js +139 -0
  100. package/dist/ui/assets/vendor-mui-icons-B196sG3f.js +1 -0
  101. package/dist/ui/assets/vendor-react-CHUjhoxh.js +11 -0
  102. package/dist/ui/index.html +11 -3
  103. package/package.json +2 -2
  104. package/dist/ui/assets/index-D6oxrVF7.js +0 -1759
package/LICENSE CHANGED
@@ -1,15 +1,87 @@
1
- ISC License
1
+ Copyright (c) 2025-2026 Graph Memory Team
2
2
 
3
- Copyright (c) 2026 prih
3
+ Elastic License 2.0 (ELv2)
4
4
 
5
- Permission to use, copy, modify, and/or distribute this software for any
6
- purpose with or without fee is hereby granted, provided that the above
7
- copyright notice and this permission notice appear in all copies.
5
+ URL: https://www.elastic.co/licensing/elastic-license
8
6
 
9
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- PERFORMANCE OF THIS SOFTWARE.
7
+ ## Acceptance
8
+
9
+ By using the software, you agree to all of the terms and conditions below.
10
+
11
+ ## Copyright License
12
+
13
+ The licensor grants you a non-exclusive, royalty-free, worldwide,
14
+ non-sublicensable, non-transferable license to use, copy, distribute, make
15
+ available, and prepare derivative works of the software, in each case subject
16
+ to the limitations and conditions below.
17
+
18
+ ## Limitations
19
+
20
+ You may not provide the software to third parties as a hosted or managed
21
+ service, where the service provides users with access to any substantial set
22
+ of the features or functionality of the software.
23
+
24
+ You may not move, change, disable, or circumvent the license key functionality
25
+ in the software, and you may not remove or obscure any functionality in the
26
+ software that is protected by the license key.
27
+
28
+ You may not alter, remove, or obscure any licensing, copyright, or other
29
+ notices of the licensor in the software. Any use of the licensor's trademarks
30
+ is subject to applicable law.
31
+
32
+ ## Patents
33
+
34
+ The licensor grants you a license, under any patent claims the licensor can
35
+ license, or becomes able to license, to make, have made, use, sell, offer for
36
+ sale, import and have imported the software, in each case subject to the
37
+ limitations and conditions in this license. This license does not cover any
38
+ patent claims that you cause to be infringed by modifications or additions to
39
+ the software. If you or your company make any written claim that the software
40
+ infringes or contributes to infringement of any patent, your patent license
41
+ for the software granted under these terms ends immediately. If your company
42
+ makes such a claim, your patent license ends immediately for work on behalf
43
+ of your company.
44
+
45
+ ## Notices
46
+
47
+ You must ensure that anyone who gets a copy of any part of the software from
48
+ you also gets a copy of these terms.
49
+
50
+ If you modify the software, you must include in any modified copies of the
51
+ software prominent notices stating that you have modified the software.
52
+
53
+ ## No Other Rights
54
+
55
+ These terms do not imply any licenses other than those expressly granted in
56
+ these terms.
57
+
58
+ ## Termination
59
+
60
+ If you use the software in violation of these terms, such use is not licensed,
61
+ and your licenses will automatically terminate. If the licensor provides you
62
+ with a notice of your violation, and you cease all violation of this license
63
+ no later than 30 days after you receive that notice, your licenses will be
64
+ reinstated retroactively. However, if you violate these terms after such
65
+ reinstatement, any additional violation of these terms will cause your
66
+ licenses to terminate automatically and permanently.
67
+
68
+ ## No Liability
69
+
70
+ *As far as the law allows, the software comes as is, without any warranty or
71
+ condition, and the licensor will not be liable to you for any damages arising
72
+ out of these terms or the use or nature of the software, under any kind of
73
+ legal claim.*
74
+
75
+ ## Definitions
76
+
77
+ The **licensor** is the entity offering these terms, and the **software** is
78
+ the software the licensor makes available under these terms, including any
79
+ portion of it.
80
+
81
+ **you** refers to the individual or entity agreeing to these terms.
82
+
83
+ **your company** is any legal entity, sole proprietorship, or other kind of
84
+ organization that you work for, plus all organizations that have control over,
85
+ are under the control of, or are under common control with that organization.
86
+ **control** means ownership of substantially all the assets of an entity, or
87
+ the power to direct the management and policies of an entity.
package/README.md CHANGED
@@ -6,86 +6,90 @@ then exposes them as **58 MCP tools** + **REST API** + **Web UI**.
6
6
 
7
7
  ## Quick start
8
8
 
9
- ### Docker (recommended)
10
-
11
9
  ```bash
12
- # 1. Create graph-memory.yaml
13
- cat > graph-memory.yaml << 'EOF'
14
- server:
15
- host: "0.0.0.0"
16
- port: 3000
17
- modelsDir: "/data/models"
10
+ npm install -g @graphmemory/server
11
+ cd /path/to/my-project
12
+ graphmemory serve
13
+ ```
18
14
 
19
- projects:
20
- my-app:
21
- projectDir: "/data/projects/my-app"
22
- EOF
15
+ That's it. No config file needed — the current directory becomes your project. Open http://localhost:3000 for the web UI.
23
16
 
24
- # 2. Run
25
- docker run -d \
26
- --name graph-memory \
27
- -p 3000:3000 \
28
- -v $(pwd)/graph-memory.yaml:/data/config/graph-memory.yaml:ro \
29
- -v /path/to/my-app:/data/projects/my-app:ro \
30
- -v graph-memory-models:/data/models \
31
- ghcr.io/graph-memory/graphmemory-server
32
- ```
17
+ The embedding model (~560 MB) downloads on first startup and is cached at `~/.graph-memory/models/`.
33
18
 
34
- Open http://localhost:3000 the web UI is ready. The embedding model (~560 MB) downloads on first startup.
19
+ ### Connect an MCP client
35
20
 
36
- ### npm
21
+ **Claude Code:**
37
22
 
38
23
  ```bash
39
- npm install -g @graphmemory/server
40
- graphmemory serve --config graph-memory.yaml
24
+ claude mcp add --transport http --scope project graph-memory http://localhost:3000/mcp/my-project
41
25
  ```
42
26
 
43
- ### From source
27
+ **Claude Desktop** — add via **Settings > Connectors**, enter the URL:
44
28
 
45
- ```bash
46
- git clone https://github.com/graph-memory/graphmemory.git
47
- cd graphmemory
48
- npm install && cd ui && npm install && cd ..
49
- npm run build
50
- node dist/cli/index.js serve --config graph-memory.yaml
29
+ ```
30
+ http://localhost:3000/mcp/my-project
51
31
  ```
52
32
 
53
- ## Connect an MCP client
33
+ **Cursor / Windsurf / other clients** — enter the URL directly in settings:
34
+
35
+ ```
36
+ http://localhost:3000/mcp/my-project
37
+ ```
38
+
39
+ The project ID is your directory name. Multiple clients can connect simultaneously.
54
40
 
55
- Start the server, then connect MCP clients to `http://localhost:3000/mcp/{projectId}`.
41
+ ### With a config file
56
42
 
57
- **Claude Desktop** add via **Settings > Connectors** in the app, enter the URL:
43
+ For multi-project setups, custom embedding models, auth, or workspaces create `graph-memory.yaml`:
58
44
 
45
+ ```yaml
46
+ projects:
47
+ my-app:
48
+ projectDir: "/path/to/my-app"
49
+ docs-site:
50
+ projectDir: "/path/to/docs"
51
+ graphs:
52
+ code:
53
+ enabled: false
59
54
  ```
60
- http://localhost:3000/mcp/my-app
55
+
56
+ ```bash
57
+ graphmemory serve --config graph-memory.yaml
61
58
  ```
62
59
 
63
- **Claude Code** run in your project directory:
60
+ See [docs/configuration.md](docs/configuration.md) for full reference and [graph-memory.yaml.example](graph-memory.yaml.example) for all options.
61
+
62
+ ### Docker
64
63
 
65
64
  ```bash
66
- claude mcp add --transport http --scope project graph-memory http://localhost:3000/mcp/my-app
65
+ docker run -d \
66
+ --name graph-memory \
67
+ -p 3000:3000 \
68
+ -v $(pwd)/graph-memory.yaml:/data/config/graph-memory.yaml:ro \
69
+ -v /path/to/my-app:/data/projects/my-app:ro \
70
+ -v graph-memory-models:/data/models \
71
+ ghcr.io/graph-memory/graphmemory-server
67
72
  ```
68
73
 
69
- Or add to `.mcp.json` manually:
70
-
71
- ```json
72
- {
73
- "mcpServers": {
74
- "graph-memory": {
75
- "type": "http",
76
- "url": "http://localhost:3000/mcp/my-app"
77
- }
78
- }
79
- }
80
- ```
74
+ Docker Compose:
81
75
 
82
- **Cursor / Windsurf / other clients** — enter the URL directly in settings:
76
+ ```yaml
77
+ services:
78
+ graph-memory:
79
+ image: ghcr.io/graph-memory/graphmemory-server
80
+ ports:
81
+ - "3000:3000"
82
+ volumes:
83
+ - ./graph-memory.yaml:/data/config/graph-memory.yaml:ro
84
+ - /path/to/my-app:/data/projects/my-app
85
+ - models:/data/models
86
+ restart: unless-stopped
83
87
 
84
- ```
85
- http://localhost:3000/mcp/my-app
88
+ volumes:
89
+ models:
86
90
  ```
87
91
 
88
- See [docs/cli.md](docs/cli.md) for stdio transport and other connection options.
92
+ See [docs/docker.md](docs/docker.md) for details.
89
93
 
90
94
  ## What it does
91
95
 
@@ -99,7 +103,7 @@ See [docs/cli.md](docs/cli.md) for stdio transport and other connection options.
99
103
  | **Skills** | Reusable recipes with steps, triggers, and usage tracking |
100
104
  | **Hybrid search** | BM25 keyword + vector cosine similarity with BFS graph expansion |
101
105
  | **Real-time** | File watching + WebSocket push to UI |
102
- | **Multi-project** | One process manages multiple projects with YAML hot-reload |
106
+ | **Multi-project** | One process manages multiple projects from a single config |
103
107
  | **Workspaces** | Share knowledge/tasks/skills across related projects |
104
108
  | **Auth & ACL** | Password login (JWT), API keys, 4-level access control |
105
109
 
@@ -125,31 +129,6 @@ Graph (Cytoscape.js visualization), Tools (MCP explorer), Help.
125
129
 
126
130
  Light/dark theme. Real-time WebSocket updates. Login page when auth is configured.
127
131
 
128
- ## Configuration
129
-
130
- All configuration via `graph-memory.yaml`. Only `projects.<id>.projectDir` is required:
131
-
132
- ```yaml
133
- server:
134
- host: "127.0.0.1"
135
- port: 3000
136
- embedding:
137
- model: "Xenova/bge-m3"
138
-
139
- projects:
140
- my-app:
141
- projectDir: "/path/to/my-app"
142
- graphs:
143
- docs:
144
- include: "**/*.md" # default
145
- code:
146
- include: "**/*.{js,ts,jsx,tsx}" # default
147
- skills:
148
- enabled: false
149
- ```
150
-
151
- See [docs/configuration.md](docs/configuration.md) for full reference and [graph-memory.yaml.example](graph-memory.yaml.example) for all options.
152
-
153
132
  ## Authentication
154
133
 
155
134
  ```yaml
@@ -171,26 +150,6 @@ server:
171
150
 
172
151
  See [docs/authentication.md](docs/authentication.md).
173
152
 
174
- ## Docker Compose
175
-
176
- ```yaml
177
- services:
178
- graph-memory:
179
- image: ghcr.io/graph-memory/graphmemory-server
180
- ports:
181
- - "3000:3000"
182
- volumes:
183
- - ./graph-memory.yaml:/data/config/graph-memory.yaml:ro
184
- - /path/to/my-app:/data/projects/my-app
185
- - models:/data/models
186
- restart: unless-stopped
187
-
188
- volumes:
189
- models:
190
- ```
191
-
192
- See [docs/docker.md](docs/docker.md).
193
-
194
153
  ## Development
195
154
 
196
155
  ```bash
@@ -211,6 +170,12 @@ Full documentation is in [docs/](docs/README.md):
211
170
  - **UI**: [architecture](docs/ui-architecture.md), [features](docs/ui-features.md), [patterns](docs/ui-patterns.md)
212
171
  - **Development**: [testing](docs/testing.md), [API patterns](docs/api-patterns.md)
213
172
 
173
+ ## Contributing
174
+
175
+ Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
176
+
177
+ For security vulnerabilities, see [SECURITY.md](SECURITY.md).
178
+
214
179
  ## License
215
180
 
216
- ISC
181
+ [Elastic License 2.0 (ELv2)](LICENSE) — free to use, modify, and self-host. Not permitted to offer as a managed/hosted service.