@hebbianvault/mcp 0.2.1 → 0.4.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/README.md +66 -15
- package/dist/absorb/cli.d.ts.map +1 -1
- package/dist/absorb/cli.js +1 -1
- package/dist/absorb/cli.js.map +1 -1
- package/dist/client.d.ts +20 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -28
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -6
- package/dist/index.js.map +1 -1
- package/dist/package_info.d.ts +2 -0
- package/dist/package_info.d.ts.map +1 -0
- package/dist/package_info.js +6 -0
- package/dist/package_info.js.map +1 -0
- package/dist/server_info.d.ts +3 -0
- package/dist/server_info.d.ts.map +1 -0
- package/dist/server_info.js +4 -0
- package/dist/server_info.js.map +1 -0
- package/dist/server_startup.d.ts +11 -0
- package/dist/server_startup.d.ts.map +1 -0
- package/dist/server_startup.js +11 -0
- package/dist/server_startup.js.map +1 -0
- package/dist/startup_health.d.ts +12 -0
- package/dist/startup_health.d.ts.map +1 -0
- package/dist/startup_health.js +45 -0
- package/dist/startup_health.js.map +1 -0
- package/dist/tools/ask.d.ts.map +1 -1
- package/dist/tools/ask.js +4 -2
- package/dist/tools/ask.js.map +1 -1
- package/dist/tools/audit_log.d.ts +15 -0
- package/dist/tools/audit_log.d.ts.map +1 -0
- package/dist/tools/audit_log.js +44 -0
- package/dist/tools/audit_log.js.map +1 -0
- package/dist/tools/capture.d.ts +5 -1
- package/dist/tools/capture.d.ts.map +1 -1
- package/dist/tools/capture.js +87 -8
- package/dist/tools/capture.js.map +1 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +4 -2
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/export.d.ts +10 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +31 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/graph_helpers.d.ts +14 -1
- package/dist/tools/graph_helpers.d.ts.map +1 -1
- package/dist/tools/graph_helpers.js +108 -2
- package/dist/tools/graph_helpers.js.map +1 -1
- package/dist/tools/index.d.ts +5 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/provenance.d.ts.map +1 -1
- package/dist/tools/provenance.js +9 -4
- package/dist/tools/provenance.js.map +1 -1
- package/dist/tools/read_node.d.ts.map +1 -1
- package/dist/tools/read_node.js +4 -2
- package/dist/tools/read_node.js.map +1 -1
- package/dist/tools/recent_activity.d.ts.map +1 -1
- package/dist/tools/recent_activity.js +4 -2
- package/dist/tools/recent_activity.js.map +1 -1
- package/dist/tools/salience.d.ts.map +1 -1
- package/dist/tools/salience.js +4 -2
- package/dist/tools/salience.js.map +1 -1
- package/dist/tools/search.d.ts +3 -4
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +54 -19
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/traverse.d.ts.map +1 -1
- package/dist/tools/traverse.js +9 -4
- package/dist/tools/traverse.js.map +1 -1
- package/dist/tools/untrusted_content.d.ts +20 -0
- package/dist/tools/untrusted_content.d.ts.map +1 -0
- package/dist/tools/untrusted_content.js +60 -0
- package/dist/tools/untrusted_content.js.map +1 -0
- package/dist/tools/usage.d.ts +15 -0
- package/dist/tools/usage.d.ts.map +1 -0
- package/dist/tools/usage.js +45 -0
- package/dist/tools/usage.js.map +1 -0
- package/dist/tools/whoami.d.ts +11 -0
- package/dist/tools/whoami.d.ts.map +1 -0
- package/dist/tools/whoami.js +31 -0
- package/dist/tools/whoami.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# @hebbianvault/mcp
|
|
6
6
|
|
|
7
|
-
Connect Claude Code, Claude Desktop, Cursor, and any MCP-compatible agent to your Hebbian workspace.
|
|
7
|
+
Connect Claude Code, Codex, Gemini CLI, Claude Desktop, Cowork, Cursor, and any MCP-compatible agent to your Hebbian workspace.
|
|
8
8
|
|
|
9
9
|
One package, configured with a single token. Install in your MCP host, paste a token issued from your Hebbian integrations page (AI Tools tab), and your agent can read from and write to your workspace. This package is a thin client — all the intelligence and access control lives in the Hebbian service.
|
|
10
10
|
|
|
@@ -17,14 +17,35 @@ npm install -g @hebbianvault/mcp
|
|
|
17
17
|
|
|
18
18
|
Generate a token from your Hebbian integrations page (AI Tools tab → Generate token).
|
|
19
19
|
|
|
20
|
+
Use the configuration for your host below. Replace `your_token_here` with the token you generated.
|
|
21
|
+
|
|
20
22
|
## Configuration
|
|
21
23
|
|
|
22
|
-
### Claude Code
|
|
24
|
+
### Claude Code
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
claude mcp add hebbian -e HEBBIAN_API_TOKEN=your_token_here -- npx -y @hebbianvault/mcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Codex (CLI + Desktop app)
|
|
23
31
|
|
|
24
32
|
```bash
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
codex mcp add hebbian --env HEBBIAN_API_TOKEN=your_token_here -- npx -y @hebbianvault/mcp
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For the Codex desktop app, add this to `~/.codex/config.toml`, or use Settings → MCP servers:
|
|
37
|
+
|
|
38
|
+
```toml
|
|
39
|
+
[mcp_servers.hebbian]
|
|
40
|
+
command = "npx"
|
|
41
|
+
args = ["-y", "@hebbianvault/mcp"]
|
|
42
|
+
env = { HEBBIAN_API_TOKEN = "your_token_here" }
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Gemini CLI
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
gemini mcp add hebbian -e HEBBIAN_API_TOKEN=your_token_here npx -y @hebbianvault/mcp
|
|
28
49
|
```
|
|
29
50
|
|
|
30
51
|
### Claude Desktop
|
|
@@ -37,9 +58,21 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
37
58
|
"hebbian": {
|
|
38
59
|
"command": "npx",
|
|
39
60
|
"args": ["-y", "@hebbianvault/mcp"],
|
|
40
|
-
"env": {
|
|
41
|
-
|
|
42
|
-
|
|
61
|
+
"env": { "HEBBIAN_API_TOKEN": "your_token_here" }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Cowork
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"mcpServers": {
|
|
72
|
+
"hebbian": {
|
|
73
|
+
"command": "npx",
|
|
74
|
+
"args": ["-y", "@hebbianvault/mcp"],
|
|
75
|
+
"env": { "HEBBIAN_API_TOKEN": "your_token_here" }
|
|
43
76
|
}
|
|
44
77
|
}
|
|
45
78
|
}
|
|
@@ -55,14 +88,27 @@ Add to `.cursor/mcp.json`:
|
|
|
55
88
|
"hebbian": {
|
|
56
89
|
"command": "npx",
|
|
57
90
|
"args": ["-y", "@hebbianvault/mcp"],
|
|
58
|
-
"env": {
|
|
59
|
-
"HEBBIAN_API_TOKEN": "your_token_here"
|
|
60
|
-
}
|
|
91
|
+
"env": { "HEBBIAN_API_TOKEN": "your_token_here" }
|
|
61
92
|
}
|
|
62
93
|
}
|
|
63
94
|
}
|
|
64
95
|
```
|
|
65
96
|
|
|
97
|
+
### Generic Agent
|
|
98
|
+
|
|
99
|
+
For an MCP-compatible agent that accepts a standard input/output command:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
HEBBIAN_API_TOKEN=your_token_here npx -y @hebbianvault/mcp
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Or use the Python package:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# pip install hebbianvault-mcp (or: uv add hebbianvault-mcp)
|
|
109
|
+
HEBBIAN_API_TOKEN=your_token_here hebbian-mcp
|
|
110
|
+
```
|
|
111
|
+
|
|
66
112
|
### Config file (alternative to env var)
|
|
67
113
|
|
|
68
114
|
Write `~/.config/hebbian/mcp-tenant.json`:
|
|
@@ -78,24 +124,29 @@ Write `~/.config/hebbian/mcp-tenant.json`:
|
|
|
78
124
|
| `HEBBIAN_API_TOKEN` | Your token (required). `HEBBIAN_TOKEN` is also accepted. |
|
|
79
125
|
| `HEBBIAN_API_URL` | Override the API base URL (Enterprise self-host). Defaults to the Hebbian SaaS API. |
|
|
80
126
|
| `HEBBIAN_TENANT` | Optional workspace slug — only needed if your account belongs to more than one workspace. |
|
|
127
|
+
| `HEBBIAN_GRAPH_PAGINATION` | Opt in to paginated workspace graph retrieval (`1`, `true`, `yes`, or `on`). |
|
|
81
128
|
|
|
82
129
|
## Token scope
|
|
83
130
|
|
|
84
|
-
Your token decides what the adapter can see and do — a personal-workspace token gives access to your own knowledge; a company-workspace token gives access to the shared company workspace (where your role allows). Scope is decided by the Hebbian service.
|
|
131
|
+
Your token decides what the adapter can see and do — a personal-workspace token gives access to your own knowledge; a company-workspace token gives access to the shared company workspace (where your role allows). Scope is decided by the Hebbian service. Search uses server-side full-text retrieval for employee-scope tokens. Traverse and provenance route company-scoped tokens to the company graph and other tokens to the workspace graph; search retains that company-graph path until an org-wide search endpoint is available. If the advisory scope probe fails, the adapter caches the employee fallback for its process lifetime; restarting the MCP process clears that cached fallback.
|
|
85
132
|
|
|
86
133
|
## Tools
|
|
87
134
|
|
|
88
135
|
| Tool | What it does |
|
|
89
136
|
|---|---|
|
|
90
137
|
| `hebbian_read_node` | Read a single node by UUID (content, metadata, connected edges) |
|
|
91
|
-
| `hebbian_search` |
|
|
138
|
+
| `hebbian_search` | Full-text search nodes by title, summary, and note body |
|
|
92
139
|
| `hebbian_ask` | Ask a question and get an answer backed by source quotes |
|
|
93
140
|
| `hebbian_context` | Describe a task and a token budget, get back a salience-ranked context pack that fits |
|
|
94
|
-
| `hebbian_capture` | Write
|
|
141
|
+
| `hebbian_capture` | Write one note, or batch-capture up to 25 notes, into your workspace |
|
|
95
142
|
| `hebbian_traverse` | Explore nodes connected to a starting node |
|
|
96
143
|
| `hebbian_provenance` | See where a node's knowledge came from |
|
|
97
144
|
| `hebbian_salience` | See a node's recent activity over time |
|
|
98
145
|
| `hebbian_recent_activity` | Catch up on recent changes in your workspace |
|
|
146
|
+
| `hebbian_whoami` | Show the tenant, role, scope, and principal for your token |
|
|
147
|
+
| `hebbian_usage` | Show your usage and spend-meter summary; optionally view company usage |
|
|
148
|
+
| `hebbian_gdpr_export` | Export tenant data for a GDPR access request (owner access required) |
|
|
149
|
+
| `hebbian_audit_log` | Retrieve tenant audit-log `items[]` (empty if no data), with optional limit and offset |
|
|
99
150
|
|
|
100
151
|
Results only ever include what your token is allowed to see.
|
|
101
152
|
|
|
@@ -140,7 +191,7 @@ Every run prints a summary of how many files were skipped and how many strings w
|
|
|
140
191
|
|
|
141
192
|
## Python
|
|
142
193
|
|
|
143
|
-
A Python sibling package is available as `hebbianvault-mcp` on PyPI. Same
|
|
194
|
+
A Python sibling package is available as `hebbianvault-mcp` on PyPI. Same 13 tools, same configuration.
|
|
144
195
|
|
|
145
196
|
## Development
|
|
146
197
|
|
package/dist/absorb/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/absorb/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6FH;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/absorb/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA6FH;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsE/D"}
|
package/dist/absorb/cli.js
CHANGED
|
@@ -110,7 +110,7 @@ export async function runAbsorb(argv) {
|
|
|
110
110
|
return 0;
|
|
111
111
|
}
|
|
112
112
|
const config = loadConfig();
|
|
113
|
-
const client = new HebbianClient(config.apiUrl, config.token, config.tenant);
|
|
113
|
+
const client = new HebbianClient(config.apiUrl, config.token, config.tenant, config.graphPagination);
|
|
114
114
|
let accepted = 0;
|
|
115
115
|
let duplicates = 0;
|
|
116
116
|
let errors = 0;
|
package/dist/absorb/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/absorb/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/absorb/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -8,20 +8,30 @@
|
|
|
8
8
|
* - No business logic — thin transport wrapper over fetch.
|
|
9
9
|
* - All tool call implementations live in src/tools/*.ts.
|
|
10
10
|
*/
|
|
11
|
+
export declare const DEFAULT_TIMEOUT_MS = 30000;
|
|
11
12
|
/** Structured API error returned by the Hebbian API (RFC 7807 variant). */
|
|
12
13
|
export declare class HebbianApiError extends Error {
|
|
13
|
-
readonly statusCode: number;
|
|
14
|
+
readonly statusCode: number | null;
|
|
14
15
|
readonly errorCode: string;
|
|
15
16
|
readonly detail?: unknown | undefined;
|
|
16
|
-
constructor(statusCode: number, errorCode: string, message: string, detail?: unknown | undefined);
|
|
17
|
+
constructor(statusCode: number | null, errorCode: string, message: string, detail?: unknown | undefined, options?: ErrorOptions);
|
|
17
18
|
/** Human-readable string for MCP tool error responses. */
|
|
18
19
|
toToolError(): string;
|
|
19
20
|
}
|
|
21
|
+
/** Raised when an API request exceeds the configured client-side deadline. */
|
|
22
|
+
export declare class HebbianTimeoutError extends HebbianApiError {
|
|
23
|
+
readonly timeoutMs: number;
|
|
24
|
+
constructor(timeoutMs: number, cause?: unknown);
|
|
25
|
+
toToolError(): string;
|
|
26
|
+
}
|
|
20
27
|
export declare class HebbianClient {
|
|
21
28
|
private readonly apiUrl;
|
|
22
29
|
private readonly token;
|
|
23
30
|
private readonly tenant?;
|
|
24
|
-
|
|
31
|
+
private readonly timeoutMs;
|
|
32
|
+
/** Whether graph-derived tools should request UUID-keyset paginated graphs. */
|
|
33
|
+
readonly graphPagination: boolean;
|
|
34
|
+
constructor(apiUrl: string, token: string, tenant?: string, graphPagination?: boolean);
|
|
25
35
|
/**
|
|
26
36
|
* Execute a GET request against the Hebbian API.
|
|
27
37
|
* @param path Path relative to apiUrl (must start with "/")
|
|
@@ -34,10 +44,15 @@ export declare class HebbianClient {
|
|
|
34
44
|
* @param body Request body (serialised to JSON)
|
|
35
45
|
*/
|
|
36
46
|
post(path: string, body: Record<string, unknown>): Promise<unknown>;
|
|
47
|
+
/**
|
|
48
|
+
* Make a timed API request. Only GETs may retry: once after a network error
|
|
49
|
+
* with no response, or once after a 5xx response.
|
|
50
|
+
*/
|
|
51
|
+
private request;
|
|
52
|
+
private fetchWithTimeout;
|
|
37
53
|
/** Build an absolute URL from path + optional query params. */
|
|
38
|
-
private buildUrl;
|
|
39
|
-
/** Standard request headers including bearer auth. */
|
|
40
54
|
private headers;
|
|
55
|
+
private buildUrl;
|
|
41
56
|
/**
|
|
42
57
|
* Parse and validate a fetch response.
|
|
43
58
|
* Throws HebbianApiError on non-2xx status codes.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,2EAA2E;AAC3E,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,UAAU,EAAE,MAAM,GAAG,IAAI;aACzB,SAAS,EAAE,MAAM;aAEjB,MAAM,CAAC,EAAE,OAAO;gBAHhB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,OAAO,YAAA,EAChC,OAAO,CAAC,EAAE,YAAY;IAMxB,0DAA0D;IAC1D,WAAW,IAAI,MAAM;CAsBtB;AAED,8EAA8E;AAC9E,qBAAa,mBAAoB,SAAQ,eAAe;aAC1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAKrD,WAAW,IAAI,MAAM;CAI/B;AA6BD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,+EAA+E;IAC/E,SAAgB,eAAe,EAAE,OAAO,CAAC;gBAE7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,UAAQ;IASnF;;;;OAIG;IACG,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC5D,OAAO,CAAC,OAAO,CAAC;IAQnB;;;;OAIG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IAYnB;;;OAGG;YACW,OAAO;YAuBP,gBAAgB;IAe9B,+DAA+D;IAC/D,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,QAAQ;IAehB;;;OAGG;YACW,cAAc;CAiC7B"}
|
package/dist/client.js
CHANGED
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
* - No business logic — thin transport wrapper over fetch.
|
|
9
9
|
* - All tool call implementations live in src/tools/*.ts.
|
|
10
10
|
*/
|
|
11
|
+
import { PACKAGE_VERSION } from "./package_info.js";
|
|
12
|
+
export const DEFAULT_TIMEOUT_MS = 30_000;
|
|
11
13
|
/** Structured API error returned by the Hebbian API (RFC 7807 variant). */
|
|
12
14
|
export class HebbianApiError extends Error {
|
|
13
15
|
statusCode;
|
|
14
16
|
errorCode;
|
|
15
17
|
detail;
|
|
16
|
-
constructor(statusCode, errorCode, message, detail) {
|
|
17
|
-
super(message);
|
|
18
|
+
constructor(statusCode, errorCode, message, detail, options) {
|
|
19
|
+
super(message, options);
|
|
18
20
|
this.statusCode = statusCode;
|
|
19
21
|
this.errorCode = errorCode;
|
|
20
22
|
this.detail = detail;
|
|
@@ -22,14 +24,20 @@ export class HebbianApiError extends Error {
|
|
|
22
24
|
}
|
|
23
25
|
/** Human-readable string for MCP tool error responses. */
|
|
24
26
|
toToolError() {
|
|
27
|
+
const serverReason = detailReason(this.detail);
|
|
28
|
+
const message = serverReason ?? this.message;
|
|
25
29
|
if (this.statusCode === 401) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
const toolError = `Authentication failed (${this.errorCode}): ${message}.`;
|
|
31
|
+
if (serverReason)
|
|
32
|
+
return toolError;
|
|
33
|
+
return `${toolError} Your token may be expired or revoked. ` +
|
|
34
|
+
"Generate a new token from the AI Tools tab in your Hebbian integrations page.";
|
|
29
35
|
}
|
|
30
36
|
if (this.statusCode === 403) {
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
const toolError = `Permission denied (${this.errorCode}): ${message}.`;
|
|
38
|
+
if (serverReason)
|
|
39
|
+
return toolError;
|
|
40
|
+
return `${toolError} Check that your token scope (employee/company) matches the operation.`;
|
|
33
41
|
}
|
|
34
42
|
if (this.statusCode === 404) {
|
|
35
43
|
return `Not found (${this.errorCode}): ${this.message}`;
|
|
@@ -40,15 +48,50 @@ export class HebbianApiError extends Error {
|
|
|
40
48
|
return `API error ${this.statusCode} (${this.errorCode}): ${this.message}`;
|
|
41
49
|
}
|
|
42
50
|
}
|
|
51
|
+
/** Raised when an API request exceeds the configured client-side deadline. */
|
|
52
|
+
export class HebbianTimeoutError extends HebbianApiError {
|
|
53
|
+
timeoutMs;
|
|
54
|
+
constructor(timeoutMs, cause) {
|
|
55
|
+
super(null, "request_timeout", `Request timed out after ${timeoutMs}ms.`, undefined, { cause });
|
|
56
|
+
this.timeoutMs = timeoutMs;
|
|
57
|
+
this.name = "HebbianTimeoutError";
|
|
58
|
+
}
|
|
59
|
+
toToolError() {
|
|
60
|
+
return `Request timed out after ${this.timeoutMs}ms. ` +
|
|
61
|
+
"Set HEBBIAN_TIMEOUT_MS to a larger value if needed.";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Extract the actionable reason from structured API and FastAPI detail bodies. */
|
|
65
|
+
function detailReason(detail) {
|
|
66
|
+
if (typeof detail === "string") {
|
|
67
|
+
return detail.trim() || undefined;
|
|
68
|
+
}
|
|
69
|
+
if (!detail || typeof detail !== "object" || Array.isArray(detail)) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const values = detail;
|
|
73
|
+
for (const field of ["reason", "message", "error", "msg"]) {
|
|
74
|
+
const value = values[field];
|
|
75
|
+
if (typeof value === "string" && value.trim()) {
|
|
76
|
+
return value.trim();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
43
81
|
export class HebbianClient {
|
|
44
82
|
apiUrl;
|
|
45
83
|
token;
|
|
46
84
|
tenant;
|
|
47
|
-
|
|
85
|
+
timeoutMs;
|
|
86
|
+
/** Whether graph-derived tools should request UUID-keyset paginated graphs. */
|
|
87
|
+
graphPagination;
|
|
88
|
+
constructor(apiUrl, token, tenant, graphPagination = false) {
|
|
48
89
|
// Normalise: strip trailing slash
|
|
49
90
|
this.apiUrl = apiUrl.replace(/\/+$/, "");
|
|
50
91
|
this.token = token;
|
|
51
92
|
this.tenant = tenant && tenant.trim().length > 0 ? tenant.trim() : undefined;
|
|
93
|
+
this.timeoutMs = timeoutMsFromEnv();
|
|
94
|
+
this.graphPagination = graphPagination;
|
|
52
95
|
}
|
|
53
96
|
/**
|
|
54
97
|
* Execute a GET request against the Hebbian API.
|
|
@@ -57,11 +100,10 @@ export class HebbianClient {
|
|
|
57
100
|
*/
|
|
58
101
|
async get(path, query) {
|
|
59
102
|
const url = this.buildUrl(path, query);
|
|
60
|
-
|
|
103
|
+
return this.request("GET", url.toString(), {
|
|
61
104
|
method: "GET",
|
|
62
105
|
headers: this.headers(),
|
|
63
106
|
});
|
|
64
|
-
return this.handleResponse(response);
|
|
65
107
|
}
|
|
66
108
|
/**
|
|
67
109
|
* Execute a POST request against the Hebbian API.
|
|
@@ -70,7 +112,7 @@ export class HebbianClient {
|
|
|
70
112
|
*/
|
|
71
113
|
async post(path, body) {
|
|
72
114
|
const url = this.buildUrl(path);
|
|
73
|
-
|
|
115
|
+
return this.request("POST", url.toString(), {
|
|
74
116
|
method: "POST",
|
|
75
117
|
headers: {
|
|
76
118
|
...this.headers(),
|
|
@@ -78,9 +120,57 @@ export class HebbianClient {
|
|
|
78
120
|
},
|
|
79
121
|
body: JSON.stringify(body),
|
|
80
122
|
});
|
|
81
|
-
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Make a timed API request. Only GETs may retry: once after a network error
|
|
126
|
+
* with no response, or once after a 5xx response.
|
|
127
|
+
*/
|
|
128
|
+
async request(method, url, init) {
|
|
129
|
+
const maxAttempts = method === "GET" ? 2 : 1;
|
|
130
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
131
|
+
let response;
|
|
132
|
+
try {
|
|
133
|
+
response = await this.fetchWithTimeout(url, init);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (attempt + 1 < maxAttempts)
|
|
137
|
+
continue;
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
if (response.status >= 500 && response.status <= 599 && attempt + 1 < maxAttempts) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
return this.handleResponse(response);
|
|
144
|
+
}
|
|
145
|
+
// The loop always returns or throws. This keeps TypeScript's control-flow
|
|
146
|
+
// analysis satisfied should the retry policy change in the future.
|
|
147
|
+
throw new Error("Request retry loop exited unexpectedly");
|
|
148
|
+
}
|
|
149
|
+
async fetchWithTimeout(url, init) {
|
|
150
|
+
const controller = new AbortController();
|
|
151
|
+
const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
152
|
+
try {
|
|
153
|
+
return await fetch(url, { ...init, signal: controller.signal });
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (controller.signal.aborted) {
|
|
157
|
+
throw new HebbianTimeoutError(this.timeoutMs, error);
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
clearTimeout(timeout);
|
|
163
|
+
}
|
|
82
164
|
}
|
|
83
165
|
/** Build an absolute URL from path + optional query params. */
|
|
166
|
+
headers() {
|
|
167
|
+
return {
|
|
168
|
+
Authorization: `Bearer ${this.token}`,
|
|
169
|
+
"User-Agent": `@hebbianvault/mcp/${PACKAGE_VERSION}`,
|
|
170
|
+
Accept: "application/json",
|
|
171
|
+
...(this.tenant && { "X-Hebbian-Tenant": this.tenant }),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
84
174
|
buildUrl(path, query) {
|
|
85
175
|
const url = new URL(`${this.apiUrl}${path}`);
|
|
86
176
|
if (query) {
|
|
@@ -92,20 +182,6 @@ export class HebbianClient {
|
|
|
92
182
|
}
|
|
93
183
|
return url;
|
|
94
184
|
}
|
|
95
|
-
/** Standard request headers including bearer auth. */
|
|
96
|
-
headers() {
|
|
97
|
-
const h = {
|
|
98
|
-
Authorization: `Bearer ${this.token}`,
|
|
99
|
-
Accept: "application/json",
|
|
100
|
-
"User-Agent": "@hebbianvault/mcp/0.2.0",
|
|
101
|
-
};
|
|
102
|
-
// Only sent when the caller's account belongs to more than one workspace.
|
|
103
|
-
// The API resolves the single-membership case from the token alone.
|
|
104
|
-
if (this.tenant) {
|
|
105
|
-
h["X-Hebbian-Tenant"] = this.tenant;
|
|
106
|
-
}
|
|
107
|
-
return h;
|
|
108
|
-
}
|
|
109
185
|
/**
|
|
110
186
|
* Parse and validate a fetch response.
|
|
111
187
|
* Throws HebbianApiError on non-2xx status codes.
|
|
@@ -126,10 +202,18 @@ export class HebbianClient {
|
|
|
126
202
|
errBody = { message: rawText || response.statusText };
|
|
127
203
|
}
|
|
128
204
|
const errorCode = errBody.code ?? errBody.error ?? `HTTP_${response.status}`;
|
|
129
|
-
const message = errBody.
|
|
130
|
-
errBody.
|
|
205
|
+
const message = detailReason(errBody.detail) ||
|
|
206
|
+
errBody.message ||
|
|
207
|
+
errBody.error ||
|
|
131
208
|
`Request failed with status ${response.status}`;
|
|
132
209
|
throw new HebbianApiError(response.status, errorCode, message, errBody.detail);
|
|
133
210
|
}
|
|
134
211
|
}
|
|
212
|
+
function timeoutMsFromEnv() {
|
|
213
|
+
const value = process.env.HEBBIAN_TIMEOUT_MS?.trim();
|
|
214
|
+
if (!value || !/^\d+$/.test(value))
|
|
215
|
+
return DEFAULT_TIMEOUT_MS;
|
|
216
|
+
const timeoutMs = Number(value);
|
|
217
|
+
return Number.isSafeInteger(timeoutMs) && timeoutMs > 0 ? timeoutMs : DEFAULT_TIMEOUT_MS;
|
|
218
|
+
}
|
|
135
219
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,2EAA2E;AAC3E,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAEtB;IACA;IAEA;IAJlB,YACkB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export interface HebbianConfig {
|
|
|
21
21
|
* knows which workspace you are acting in. Single-workspace accounts can omit.
|
|
22
22
|
*/
|
|
23
23
|
tenant?: string;
|
|
24
|
+
/** Opt in to UUID-keyset pagination when retrieving the workspace graph. */
|
|
25
|
+
graphPagination: boolean;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
28
|
* Load configuration from environment variables and optional config file.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,eAAe,EAAE,OAAO,CAAC;CAC1B;AAQD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,IAAI,aAAa,CAoC1C"}
|
package/dist/config.js
CHANGED
|
@@ -29,10 +29,12 @@ export function loadConfig() {
|
|
|
29
29
|
const apiUrl = process.env.HEBBIAN_API_URL ?? DEFAULT_API_URL;
|
|
30
30
|
// ── Tenant (optional) ────────────────────────────────────────────────────────
|
|
31
31
|
const envTenant = process.env.HEBBIAN_TENANT?.trim() || undefined;
|
|
32
|
+
// ── Graph pagination (opt-in) ─────────────────────────────────────────────
|
|
33
|
+
const graphPagination = isTruthy(process.env.HEBBIAN_GRAPH_PAGINATION);
|
|
32
34
|
// ── Token (env first) ──────────────────────────────────────────────────────
|
|
33
35
|
const envToken = process.env.HEBBIAN_API_TOKEN ?? process.env.HEBBIAN_TOKEN;
|
|
34
36
|
if (envToken && envToken.length > 0) {
|
|
35
|
-
return { apiUrl, token: envToken, tenant: envTenant };
|
|
37
|
+
return { apiUrl, token: envToken, tenant: envTenant, graphPagination };
|
|
36
38
|
}
|
|
37
39
|
// ── Token (config file) ────────────────────────────────────────────────────
|
|
38
40
|
const configPath = resolveConfigPath();
|
|
@@ -43,6 +45,7 @@ export function loadConfig() {
|
|
|
43
45
|
apiUrl: file.api_url ?? apiUrl,
|
|
44
46
|
token: file.token,
|
|
45
47
|
tenant: envTenant ?? file.tenant,
|
|
48
|
+
graphPagination,
|
|
46
49
|
};
|
|
47
50
|
}
|
|
48
51
|
}
|
|
@@ -51,6 +54,10 @@ export function loadConfig() {
|
|
|
51
54
|
"or write your token to ~/.config/hebbian/mcp-tenant.json as { \"token\": \"...\" }. " +
|
|
52
55
|
"Generate a token from the AI Tools tab in your Hebbian integrations page.");
|
|
53
56
|
}
|
|
57
|
+
/** Accept the conventional env-var spellings for an enabled boolean flag. */
|
|
58
|
+
function isTruthy(value) {
|
|
59
|
+
return value !== undefined && ["1", "true", "yes", "on"].includes(value.trim().toLowerCase());
|
|
60
|
+
}
|
|
54
61
|
/** Resolve config file path — explicit env var or default location. */
|
|
55
62
|
function resolveConfigPath() {
|
|
56
63
|
const explicit = process.env.HEBBIAN_CONFIG_PATH;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,kFAAkF;AAClF,MAAM,eAAe,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Auth: set HEBBIAN_API_TOKEN (or HEBBIAN_TOKEN) env var, or write a config
|
|
10
10
|
* file at ~/.config/hebbian/mcp-tenant.json with { "token": "hbn_..." }.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* 13 tools:
|
|
13
13
|
* hebbian_read_node — fetch a node by UUID
|
|
14
14
|
* hebbian_search — search the workspace for matching nodes
|
|
15
15
|
* hebbian_ask — synthesis Q&A returned with source quotes
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
* hebbian_provenance — source trail for a node
|
|
20
20
|
* hebbian_salience — salience/activity history for a node
|
|
21
21
|
* hebbian_recent_activity — recent workspace activity timeline
|
|
22
|
+
* hebbian_whoami — token identity, tenant, role, and scope
|
|
23
|
+
* hebbian_usage — usage and spend-meter summary
|
|
24
|
+
* hebbian_gdpr_export — owner-authorized tenant data export
|
|
25
|
+
* hebbian_audit_log — tenant audit-log entries
|
|
22
26
|
*
|
|
23
27
|
* All access control is enforced server-side by the API. What a token can
|
|
24
28
|
* read and write is determined by its scope; this package is a thin client.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
|