@hiai-gg/docsmint 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -19
- package/dist/backend/index.js +31 -24
- package/dist/mcp-cli.js +1 -1
- package/dist/mcp-server.js +1 -1
- package/package.json +3 -3
- package/packages/cli/src/index.ts +1 -1
- package/server.json +8 -8
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Write and organize notes, guides, and project documentation in one workspace.
|
|
|
6
6
|
Find answers with search that understands related concepts, then give your
|
|
7
7
|
agents access to the same documents through MCP, REST, the SDK, or CLI.
|
|
8
8
|
|
|
9
|
-
**[
|
|
9
|
+
**[Connect DocsMint Cloud](https://docsmint.com/mcp/connect?source=github_mcp)** to get started without
|
|
10
10
|
operating the stack, or **[self-host with Docker](#quickstart)** to run the
|
|
11
11
|
Apache-2.0 application on your own infrastructure.
|
|
12
12
|
|
|
@@ -32,6 +32,32 @@ Apache-2.0 application on your own infrastructure.
|
|
|
32
32
|
|
|
33
33
|
<img width="1920" height="974" alt="DocsMint installable document workspace" src="https://github.com/user-attachments/assets/94701d01-a361-4ca1-b16d-de2a0c64d684" />
|
|
34
34
|
|
|
35
|
+
## Connect your AI agent
|
|
36
|
+
|
|
37
|
+
Connect DocsMint Cloud instantly or use your own self-hosted deployment. Search,
|
|
38
|
+
read, create, organize and update persistent knowledge through MCP with hybrid
|
|
39
|
+
retrieval, reranking and GraphRAG.
|
|
40
|
+
|
|
41
|
+
**Recommended: [DocsMint Cloud setup](https://docsmint.com/mcp/connect?source=github_mcp).**
|
|
42
|
+
No server installation is required. Sign up or log in, choose your workspace,
|
|
43
|
+
create an MCP/API credential in the authenticated browser UI, follow your client's
|
|
44
|
+
instructions, and verify the connection. Hosted MCP follows your plan and
|
|
45
|
+
workspace permissions. Prefer workspace-bound or category-scoped credentials.
|
|
46
|
+
|
|
47
|
+
The Cloud endpoint is `https://docsmint.com/mcp` (Streamable HTTP). OAuth-capable
|
|
48
|
+
clients discover authorization and open DocsMint login and consent in the browser.
|
|
49
|
+
Choose your workspace and explicit scopes; the authorization code uses PKCE S256.
|
|
50
|
+
Access tokens expire after one hour; reconnect through browser authorization when
|
|
51
|
+
they expire (no refresh tokens). API-key clients
|
|
52
|
+
send `Authorization: Bearer <key>`. Credentials cannot create or elevate other
|
|
53
|
+
credentials; lifecycle management belongs to the signed-in browser session.
|
|
54
|
+
|
|
55
|
+
**Self-hosted alternative:** run [DocsMint with Docker](#quickstart), create an API
|
|
56
|
+
key in its browser UI, and configure `HIAI_DOCS_URL` and `HIAI_DOCS_API_KEY` for
|
|
57
|
+
`npx --yes --package @hiai-gg/docsmint docsmint-mcp`. The npm package is a stdio
|
|
58
|
+
bridge to your running deployment, not a server installer. See the
|
|
59
|
+
[MCP guide](packages/mcp-server/README.md) for client configuration.
|
|
60
|
+
|
|
35
61
|
## Why DocsMint?
|
|
36
62
|
|
|
37
63
|
- **Keep knowledge easy to edit.** Use a rich visual editor or Markdown;
|
|
@@ -47,25 +73,26 @@ Apache-2.0 application on your own infrastructure.
|
|
|
47
73
|
- **Choose how you run it.** Use [managed DocsMint](https://docsmint.com) or
|
|
48
74
|
self-host the application, database, search, queues, and files.
|
|
49
75
|
|
|
50
|
-
## What's new in 0.8.
|
|
76
|
+
## What's new in 0.8.4?
|
|
51
77
|
|
|
52
|
-
|
|
78
|
+
MCP discovery now explains both supported deployment choices:
|
|
53
79
|
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
80
|
+
- DocsMint Cloud is the recommended route for connecting without running a server.
|
|
81
|
+
- Self-hosted DocsMint remains the complete Apache-2.0 alternative with the same
|
|
82
|
+
npm/stdio bridge, tools, prompts, resources and public contracts.
|
|
83
|
+
- Registry, LobeHub and npm descriptions include hybrid search, reranking,
|
|
84
|
+
GraphRAG and scoped document access, with source-aware onboarding links.
|
|
85
|
+
- The MCP guide explains Cloud browser authorization for OAuth-capable clients,
|
|
86
|
+
existing API-key configuration and the separate self-hosted setup.
|
|
87
|
+
- Release checks now verify built public exports and MCP binaries before packaging.
|
|
88
|
+
- Authorization regression coverage includes mixed category scopes, external tenant
|
|
89
|
+
assertions, scoped attachment deletion, workspace tags and partial category updates.
|
|
90
|
+
- A deterministic offline retrieval baseline makes evaluation repeatable without
|
|
91
|
+
claiming a change to live retrieval quality.
|
|
65
92
|
|
|
66
|
-
No
|
|
67
|
-
|
|
68
|
-
|
|
93
|
+
No database migration, tool redesign or SDK contract change is added. Hosted
|
|
94
|
+
OAuth is a DocsMint Cloud capability; this OSS release documents how to connect
|
|
95
|
+
and does not embed Cloud accounts, billing or analytics in self-hosted installs.
|
|
69
96
|
|
|
70
97
|
Read the complete release history in the [changelog](CHANGELOG.md) or
|
|
71
98
|
[GitHub Releases](https://github.com/HiAi-gg/docsmint/releases). See the
|
|
@@ -121,7 +148,7 @@ docker pull vgalibov/docsmint:web-latest
|
|
|
121
148
|
docker pull vgalibov/docsmint:caddy-latest
|
|
122
149
|
```
|
|
123
150
|
|
|
124
|
-
Use versioned tags `api-v0.8.
|
|
151
|
+
Use versioned tags `api-v0.8.4`, `web-v0.8.4`, and `caddy-v0.8.4` for
|
|
125
152
|
reproducible deploys. The quickstart still builds the Compose stack from this repository so PostgreSQL,
|
|
126
153
|
Redis, and SeaweedFS start together with the application.
|
|
127
154
|
|
|
@@ -227,7 +254,7 @@ Run the published stdio bridge against your own DocsMint API:
|
|
|
227
254
|
"mcpServers": {
|
|
228
255
|
"docsmint": {
|
|
229
256
|
"command": "npx",
|
|
230
|
-
"args": ["
|
|
257
|
+
"args": ["--yes", "--package", "@hiai-gg/docsmint", "docsmint-mcp"],
|
|
231
258
|
"env": {
|
|
232
259
|
"HIAI_DOCS_URL": "http://localhost:50700",
|
|
233
260
|
"HIAI_DOCS_API_KEY": "your-global-or-category-key"
|
package/dist/backend/index.js
CHANGED
|
@@ -197081,6 +197081,9 @@ function canAccessContent(access, action) {
|
|
|
197081
197081
|
function canManageCategories(access) {
|
|
197082
197082
|
return !access.restricted && canAccessContent(access, "write");
|
|
197083
197083
|
}
|
|
197084
|
+
function canManageWorkspaceTags(access) {
|
|
197085
|
+
return canManageCategories(access);
|
|
197086
|
+
}
|
|
197084
197087
|
function isAuthorizedCategory(access, categoryId) {
|
|
197085
197088
|
if (access.externalRole && !access.restricted)
|
|
197086
197089
|
return true;
|
|
@@ -200601,26 +200604,8 @@ var authRoutes = new Elysia({ prefix: "/api/auth" }).all("/*", async ({ request,
|
|
|
200601
200604
|
init_schema2();
|
|
200602
200605
|
init_drizzle_orm();
|
|
200603
200606
|
init_zod();
|
|
200604
|
-
|
|
200605
|
-
|
|
200606
|
-
name: exports_external2.string().trim().min(1).max(255),
|
|
200607
|
-
apiMode: exports_external2.enum(["unavailable", "global", "category"]).optional(),
|
|
200608
|
-
apiPermissionRead: exports_external2.boolean().optional(),
|
|
200609
|
-
apiPermissionEdit: exports_external2.boolean().optional(),
|
|
200610
|
-
apiPermissionWrite: exports_external2.boolean().optional()
|
|
200611
|
-
});
|
|
200612
|
-
var updateCategorySchema = exports_external2.object({
|
|
200613
|
-
name: exports_external2.string().trim().min(1).max(255).optional(),
|
|
200614
|
-
order: exports_external2.number().int().nonnegative().optional(),
|
|
200615
|
-
apiMode: exports_external2.enum(["unavailable", "global", "category"]).optional(),
|
|
200616
|
-
apiPermissionRead: exports_external2.boolean().optional(),
|
|
200617
|
-
apiPermissionEdit: exports_external2.boolean().optional(),
|
|
200618
|
-
apiPermissionWrite: exports_external2.boolean().optional()
|
|
200619
|
-
});
|
|
200620
|
-
var listQuerySchema = exports_external2.object({
|
|
200621
|
-
page: exports_external2.coerce.number().int().min(1).default(1),
|
|
200622
|
-
limit: exports_external2.coerce.number().int().min(1).max(100).default(20)
|
|
200623
|
-
});
|
|
200607
|
+
|
|
200608
|
+
// ../../backend/src/lib/category-api-access.ts
|
|
200624
200609
|
function normalizeApiMode(apiMode) {
|
|
200625
200610
|
if (apiMode === "category")
|
|
200626
200611
|
return "category";
|
|
@@ -200654,6 +200639,28 @@ function buildApiAccessValues(input) {
|
|
|
200654
200639
|
apiPermissionWrite
|
|
200655
200640
|
};
|
|
200656
200641
|
}
|
|
200642
|
+
|
|
200643
|
+
// ../../backend/src/api/routes/categories.ts
|
|
200644
|
+
init_logger3();
|
|
200645
|
+
var createCategorySchema = exports_external2.object({
|
|
200646
|
+
name: exports_external2.string().trim().min(1).max(255),
|
|
200647
|
+
apiMode: exports_external2.enum(["unavailable", "global", "category"]).optional(),
|
|
200648
|
+
apiPermissionRead: exports_external2.boolean().optional(),
|
|
200649
|
+
apiPermissionEdit: exports_external2.boolean().optional(),
|
|
200650
|
+
apiPermissionWrite: exports_external2.boolean().optional()
|
|
200651
|
+
});
|
|
200652
|
+
var updateCategorySchema = exports_external2.object({
|
|
200653
|
+
name: exports_external2.string().trim().min(1).max(255).optional(),
|
|
200654
|
+
order: exports_external2.number().int().nonnegative().optional(),
|
|
200655
|
+
apiMode: exports_external2.enum(["unavailable", "global", "category"]).optional(),
|
|
200656
|
+
apiPermissionRead: exports_external2.boolean().optional(),
|
|
200657
|
+
apiPermissionEdit: exports_external2.boolean().optional(),
|
|
200658
|
+
apiPermissionWrite: exports_external2.boolean().optional()
|
|
200659
|
+
});
|
|
200660
|
+
var listQuerySchema = exports_external2.object({
|
|
200661
|
+
page: exports_external2.coerce.number().int().min(1).default(1),
|
|
200662
|
+
limit: exports_external2.coerce.number().int().min(1).max(100).default(20)
|
|
200663
|
+
});
|
|
200657
200664
|
var categoryRoutes = new Elysia({ prefix: "/api" }).get("/categories", async ({ set: set2, request }) => {
|
|
200658
200665
|
const access = await resolveContentAccess(request);
|
|
200659
200666
|
const ctx = access.ctx;
|
|
@@ -235042,7 +235049,7 @@ var tagRoutes = new Elysia({ prefix: "/api" }).get("/tags", async ({ set: set2,
|
|
|
235042
235049
|
set2.status = 401;
|
|
235043
235050
|
return { error: "Unauthorized" };
|
|
235044
235051
|
}
|
|
235045
|
-
if (
|
|
235052
|
+
if (!canManageWorkspaceTags(access)) {
|
|
235046
235053
|
set2.status = 403;
|
|
235047
235054
|
return { error: "Full workspace write access required" };
|
|
235048
235055
|
}
|
|
@@ -235092,7 +235099,7 @@ var tagRoutes = new Elysia({ prefix: "/api" }).get("/tags", async ({ set: set2,
|
|
|
235092
235099
|
set2.status = 401;
|
|
235093
235100
|
return { error: "Unauthorized" };
|
|
235094
235101
|
}
|
|
235095
|
-
if (
|
|
235102
|
+
if (!canManageWorkspaceTags(access)) {
|
|
235096
235103
|
set2.status = 403;
|
|
235097
235104
|
return { error: "Full workspace write access required" };
|
|
235098
235105
|
}
|
|
@@ -235142,7 +235149,7 @@ var tagRoutes = new Elysia({ prefix: "/api" }).get("/tags", async ({ set: set2,
|
|
|
235142
235149
|
set2.status = 401;
|
|
235143
235150
|
return { error: "Unauthorized" };
|
|
235144
235151
|
}
|
|
235145
|
-
if (
|
|
235152
|
+
if (!canManageWorkspaceTags(access)) {
|
|
235146
235153
|
set2.status = 403;
|
|
235147
235154
|
return { error: "Full workspace write access required" };
|
|
235148
235155
|
}
|
|
@@ -238391,7 +238398,7 @@ var swaggerConfig = {
|
|
|
238391
238398
|
},
|
|
238392
238399
|
info: {
|
|
238393
238400
|
title: "DocsMint API",
|
|
238394
|
-
version: "0.8.
|
|
238401
|
+
version: "0.8.4",
|
|
238395
238402
|
description: "Self-hosted AI-native knowledge workspace and installable PWA with hybrid search, GraphRAG, REST, SDK, CLI, and MCP access for people and AI agents.",
|
|
238396
238403
|
contact: { name: "HiAi-gg", url: "https://github.com/HiAi-gg/docsmint" },
|
|
238397
238404
|
license: {
|
package/dist/mcp-cli.js
CHANGED
|
@@ -1052,7 +1052,7 @@ function registerDocsmintMcpCapabilities(server, client2) {
|
|
|
1052
1052
|
registerExtendedCapabilities(server, client2, (handler11) => wrapHandler("extended", handler11));
|
|
1053
1053
|
}
|
|
1054
1054
|
function createDocsmintMcpServer(options = {}) {
|
|
1055
|
-
const server = new McpServer({ name: "docsmint", version: "0.8.
|
|
1055
|
+
const server = new McpServer({ name: "docsmint", version: "0.8.4" });
|
|
1056
1056
|
const client2 = options.docsClient ? createMcpDocsClient(options.docsClient, options.requestContext) : options.client ?? createMcpDocsClient(createDefaultDocsClient(), options.requestContext);
|
|
1057
1057
|
registerDocsmintMcpCapabilities(server, client2);
|
|
1058
1058
|
return server;
|
package/dist/mcp-server.js
CHANGED
|
@@ -1048,7 +1048,7 @@ function registerDocsmintMcpCapabilities(server, client2) {
|
|
|
1048
1048
|
registerExtendedCapabilities(server, client2, (handler11) => wrapHandler("extended", handler11));
|
|
1049
1049
|
}
|
|
1050
1050
|
function createDocsmintMcpServer(options = {}) {
|
|
1051
|
-
const server = new McpServer({ name: "docsmint", version: "0.8.
|
|
1051
|
+
const server = new McpServer({ name: "docsmint", version: "0.8.4" });
|
|
1052
1052
|
const client2 = options.docsClient ? createMcpDocsClient(options.docsClient, options.requestContext) : options.client ?? createMcpDocsClient(createDefaultDocsClient(), options.requestContext);
|
|
1053
1053
|
registerDocsmintMcpCapabilities(server, client2);
|
|
1054
1054
|
return server;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hiai-gg/docsmint",
|
|
3
3
|
"mcpName": "io.github.HiAi-gg/docsmint",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"browser": {
|
|
7
7
|
"./dist/backend-launcher.js": false,
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"./dist/backend-account-runtime-cleanup.js": false
|
|
16
16
|
},
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
|
-
"description": "
|
|
18
|
+
"description": "Managed or self-hosted knowledge workspace for AI agents with hybrid search, reranking, GraphRAG, and scoped document tools.",
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
21
21
|
"url": "https://github.com/HiAi-gg/docsmint"
|
|
22
22
|
},
|
|
23
|
-
"homepage": "https://
|
|
23
|
+
"homepage": "https://docsmint.com/mcp/connect?source=npm_mcp",
|
|
24
24
|
"bugs": {
|
|
25
25
|
"url": "https://github.com/hiai-gg/docsmint/issues"
|
|
26
26
|
},
|
|
@@ -25,7 +25,7 @@ import { registerSearch } from './commands/search.js';
|
|
|
25
25
|
import { registerSnapshot } from './commands/snapshot.js';
|
|
26
26
|
import { registerUpdate } from './commands/update.js';
|
|
27
27
|
|
|
28
|
-
const VERSION = '0.8.
|
|
28
|
+
const VERSION = '0.8.4';
|
|
29
29
|
|
|
30
30
|
const program = new Command();
|
|
31
31
|
program.name('docsmint').description('CLI for the DocsMint knowledge workspace').version(VERSION);
|
package/server.json
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.HiAi-gg/docsmint",
|
|
4
4
|
"title": "DocsMint",
|
|
5
|
-
"description": "
|
|
6
|
-
"websiteUrl": "https://docsmint.com/
|
|
5
|
+
"description": "Cloud or self-hosted knowledge for AI agents: hybrid search, reranking, GraphRAG, scoped MCP tools.",
|
|
6
|
+
"websiteUrl": "https://docsmint.com/mcp/connect?source=mcp_registry",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/HiAi-gg/docsmint",
|
|
9
9
|
"source": "github",
|
|
10
10
|
"id": "1249550690",
|
|
11
11
|
"subfolder": "packages/mcp-server"
|
|
12
12
|
},
|
|
13
|
-
"version": "0.8.
|
|
13
|
+
"version": "0.8.4",
|
|
14
14
|
"icons": [
|
|
15
15
|
{
|
|
16
16
|
"src": "https://raw.githubusercontent.com/HiAi-gg/docsmint/main/frontend/static/logo-dark.png",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"registryType": "npm",
|
|
31
31
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
32
32
|
"identifier": "@hiai-gg/docsmint",
|
|
33
|
-
"version": "0.8.
|
|
33
|
+
"version": "0.8.4",
|
|
34
34
|
"runtimeHint": "npx",
|
|
35
35
|
"transport": {
|
|
36
36
|
"type": "stdio"
|
|
@@ -44,12 +44,12 @@
|
|
|
44
44
|
"environmentVariables": [
|
|
45
45
|
{
|
|
46
46
|
"name": "HIAI_DOCS_URL",
|
|
47
|
-
"description": "Base URL of
|
|
47
|
+
"description": "Base URL of your running self-hosted DocsMint API. For managed Cloud use https://docsmint.com/mcp.",
|
|
48
48
|
"default": "http://localhost:50700"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"name": "HIAI_DOCS_API_KEY",
|
|
52
|
-
"description": "
|
|
52
|
+
"description": "Create an API key in your self-hosted DocsMint browser UI. Prefer workspace-bound or category-scoped credentials.",
|
|
53
53
|
"isRequired": true,
|
|
54
54
|
"isSecret": true
|
|
55
55
|
}
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"headers": [
|
|
64
64
|
{
|
|
65
65
|
"name": "Authorization",
|
|
66
|
-
"description": "
|
|
66
|
+
"description": "DocsMint Cloud: no self-hosting required. OAuth-capable clients use browser authorization discovered at the hosted endpoint. API-key clients: sign up or log in at https://docsmint.com/mcp/connect?source=mcp_registry and create a workspace-bound or category-scoped MCP/API credential in the authenticated browser UI. Enter Bearer <key>. Credential management requires a browser session; MCP cannot create or elevate credentials. Self-hosted users should use the stdio package.",
|
|
67
67
|
"isRequired": true,
|
|
68
68
|
"isSecret": true
|
|
69
69
|
},
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"license": "Apache-2.0",
|
|
82
82
|
"licenseUrl": "https://www.apache.org/licenses/LICENSE-2.0",
|
|
83
83
|
"licenseFile": "https://github.com/HiAi-gg/docsmint/blob/main/LICENSE",
|
|
84
|
-
"documentationUrl": "https://docsmint.com/
|
|
84
|
+
"documentationUrl": "https://docsmint.com/mcp/connect?source=mcp_registry",
|
|
85
85
|
"catalog": {
|
|
86
86
|
"tools": 17,
|
|
87
87
|
"prompts": 2,
|