@hebbianvault/mcp 0.3.0 → 0.4.1

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 (72) hide show
  1. package/README.md +65 -15
  2. package/dist/absorb/cli.d.ts.map +1 -1
  3. package/dist/absorb/cli.js +7 -1
  4. package/dist/absorb/cli.js.map +1 -1
  5. package/dist/absorb/importers.d.ts +1 -0
  6. package/dist/absorb/importers.d.ts.map +1 -1
  7. package/dist/absorb/importers.js +11 -6
  8. package/dist/absorb/importers.js.map +1 -1
  9. package/dist/client.d.ts +16 -2
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +68 -6
  12. package/dist/client.js.map +1 -1
  13. package/dist/index.d.ts +5 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +26 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/server_startup.d.ts +11 -0
  18. package/dist/server_startup.d.ts.map +1 -0
  19. package/dist/server_startup.js +11 -0
  20. package/dist/server_startup.js.map +1 -0
  21. package/dist/startup_health.d.ts +12 -0
  22. package/dist/startup_health.d.ts.map +1 -0
  23. package/dist/startup_health.js +45 -0
  24. package/dist/startup_health.js.map +1 -0
  25. package/dist/tools/ask.d.ts.map +1 -1
  26. package/dist/tools/ask.js +1 -2
  27. package/dist/tools/ask.js.map +1 -1
  28. package/dist/tools/audit_log.d.ts +15 -0
  29. package/dist/tools/audit_log.d.ts.map +1 -0
  30. package/dist/tools/audit_log.js +44 -0
  31. package/dist/tools/audit_log.js.map +1 -0
  32. package/dist/tools/capture.d.ts +5 -1
  33. package/dist/tools/capture.d.ts.map +1 -1
  34. package/dist/tools/capture.js +87 -8
  35. package/dist/tools/capture.js.map +1 -1
  36. package/dist/tools/export.d.ts +10 -0
  37. package/dist/tools/export.d.ts.map +1 -0
  38. package/dist/tools/export.js +31 -0
  39. package/dist/tools/export.js.map +1 -0
  40. package/dist/tools/graph_helpers.d.ts +14 -2
  41. package/dist/tools/graph_helpers.d.ts.map +1 -1
  42. package/dist/tools/graph_helpers.js +109 -14
  43. package/dist/tools/graph_helpers.js.map +1 -1
  44. package/dist/tools/index.d.ts +5 -1
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +5 -1
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/provenance.d.ts.map +1 -1
  49. package/dist/tools/provenance.js +4 -1
  50. package/dist/tools/provenance.js.map +1 -1
  51. package/dist/tools/salience.d.ts.map +1 -1
  52. package/dist/tools/salience.js +4 -0
  53. package/dist/tools/salience.js.map +1 -1
  54. package/dist/tools/search.d.ts +3 -4
  55. package/dist/tools/search.d.ts.map +1 -1
  56. package/dist/tools/search.js +51 -18
  57. package/dist/tools/search.js.map +1 -1
  58. package/dist/tools/traverse.d.ts.map +1 -1
  59. package/dist/tools/traverse.js +4 -1
  60. package/dist/tools/traverse.js.map +1 -1
  61. package/dist/tools/untrusted_content.d.ts.map +1 -1
  62. package/dist/tools/untrusted_content.js +1 -0
  63. package/dist/tools/untrusted_content.js.map +1 -1
  64. package/dist/tools/usage.d.ts +15 -0
  65. package/dist/tools/usage.d.ts.map +1 -0
  66. package/dist/tools/usage.js +45 -0
  67. package/dist/tools/usage.js.map +1 -0
  68. package/dist/tools/whoami.d.ts +11 -0
  69. package/dist/tools/whoami.d.ts.map +1 -0
  70. package/dist/tools/whoami.js +31 -0
  71. package/dist/tools/whoami.js.map +1 -0
  72. 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 (recommended)
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
- claude mcp add hebbian \
26
- -e HEBBIAN_API_TOKEN=your_token_here \
27
- -- npx -y @hebbianvault/mcp
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
- "HEBBIAN_API_TOKEN": "your_token_here"
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`:
@@ -82,21 +128,25 @@ Write `~/.config/hebbian/mcp-tenant.json`:
82
128
 
83
129
  ## Token scope
84
130
 
85
- 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. The adapter just carries your token.
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.
86
132
 
87
133
  ## Tools
88
134
 
89
135
  | Tool | What it does |
90
136
  |---|---|
91
137
  | `hebbian_read_node` | Read a single node by UUID (content, metadata, connected edges) |
92
- | `hebbian_search` | Find nodes in your workspace matching a query |
138
+ | `hebbian_search` | Full-text search nodes by title, summary, and note body |
93
139
  | `hebbian_ask` | Ask a question and get an answer backed by source quotes |
94
140
  | `hebbian_context` | Describe a task and a token budget, get back a salience-ranked context pack that fits |
95
- | `hebbian_capture` | Write a note into your workspace |
141
+ | `hebbian_capture` | Write one note, or batch-capture up to 25 notes, into your workspace |
96
142
  | `hebbian_traverse` | Explore nodes connected to a starting node |
97
143
  | `hebbian_provenance` | See where a node's knowledge came from |
98
144
  | `hebbian_salience` | See a node's recent activity over time |
99
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 |
100
150
 
101
151
  Results only ever include what your token is allowed to see.
102
152
 
@@ -141,7 +191,7 @@ Every run prints a summary of how many files were skipped and how many strings w
141
191
 
142
192
  ## Python
143
193
 
144
- A Python sibling package is available as `hebbianvault-mcp` on PyPI. Same 9 tools, same configuration.
194
+ A Python sibling package is available as `hebbianvault-mcp` on PyPI. Same 13 tools, same configuration.
145
195
 
146
196
  ## Development
147
197
 
@@ -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,CAsE/D"}
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,CA4E/D"}
@@ -52,7 +52,7 @@ const USAGE = [
52
52
  " --dry-run walk and report; do not upload",
53
53
  "",
54
54
  "Auth: set HEBBIAN_API_TOKEN to the agent's token (or use the config file).",
55
- "Reads *.md files, skips credential-named files, redacts token-shaped strings,",
55
+ "Reads *.md files, skips credential-named files and symlinks, redacts token-shaped strings,",
56
56
  "then uploads each file as a review-lane seed attributed to the agent.",
57
57
  ].join("\n");
58
58
  /** Resolve + validate args. Returns null (after printing usage) on a usage error. */
@@ -93,12 +93,18 @@ export async function runAbsorb(argv) {
93
93
  process.stderr.write(`[absorb] store=${args.store} dir=${args.dir}: ` +
94
94
  `${scan.items.length} file(s) to absorb, ` +
95
95
  `skipped ${scan.skippedSecretFiles.length} credential-named file(s), ` +
96
+ `skipped ${scan.skippedSymlinks.length} symlink(s), ` +
96
97
  `redacted ${scan.redactedSecrets} token-shaped string(s) across ${scan.redactedItems} file(s)\n`);
97
98
  if (scan.skippedSecretFiles.length > 0) {
98
99
  for (const f of scan.skippedSecretFiles) {
99
100
  process.stderr.write(`[absorb] skipped (looks like secrets): ${f}\n`);
100
101
  }
101
102
  }
103
+ if (scan.skippedSymlinks.length > 0) {
104
+ for (const f of scan.skippedSymlinks) {
105
+ process.stderr.write(`[absorb] skipped (symlink): ${f}\n`);
106
+ }
107
+ }
102
108
  if (scan.items.length === 0) {
103
109
  process.stderr.write("[absorb] nothing to absorb.\n");
104
110
  return 0;
@@ -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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"}
@@ -33,6 +33,7 @@ export interface AbsorbItem {
33
33
  export interface ScanResult {
34
34
  items: AbsorbItem[];
35
35
  skippedSecretFiles: string[];
36
+ skippedSymlinks: string[];
36
37
  redactedItems: number;
37
38
  redactedSecrets: number;
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"importers.d.ts","sourceRoot":"","sources":["../../src/absorb/importers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAeD,QAAA,MAAM,gBAAgB,sCAAuC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAEhE;AAED,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AA4CD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAwCzE"}
1
+ {"version":3,"file":"importers.d.ts","sourceRoot":"","sources":["../../src/absorb/importers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAeD,QAAA,MAAM,gBAAgB,sCAAuC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAEhE;AAED,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AAiDD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAwCzE"}
@@ -15,7 +15,7 @@
15
15
  * handed back. Each importer reports skipped/redacted counts so the CLI can
16
16
  * print an honest summary.
17
17
  */
18
- import { readdirSync, readFileSync, statSync } from "node:fs";
18
+ import { lstatSync, readdirSync, readFileSync, statSync } from "node:fs";
19
19
  import { join, relative, sep } from "node:path";
20
20
  import { redactSecrets, shouldSkipFile } from "./secrets.js";
21
21
  /** Directories never descended into (noise + secret stores). */
@@ -37,9 +37,10 @@ export function isSupportedStore(kind) {
37
37
  export function supportedStores() {
38
38
  return SUPPORTED_STORES;
39
39
  }
40
- /** Recursively collect every *.md file under root (relative paths). */
40
+ /** Recursively collect every *.md file under root, skipping symlinks. */
41
41
  function collectMarkdownFiles(root) {
42
42
  const out = [];
43
+ const skippedSymlinks = [];
43
44
  const walk = (dir) => {
44
45
  let entries;
45
46
  try {
@@ -52,11 +53,15 @@ function collectMarkdownFiles(root) {
52
53
  const abs = join(dir, entry);
53
54
  let st;
54
55
  try {
55
- st = statSync(abs);
56
+ st = lstatSync(abs);
56
57
  }
57
58
  catch {
58
59
  continue;
59
60
  }
61
+ if (st.isSymbolicLink()) {
62
+ skippedSymlinks.push(relative(root, abs));
63
+ continue;
64
+ }
60
65
  if (st.isDirectory()) {
61
66
  if (!SKIP_DIRS.has(entry))
62
67
  walk(abs);
@@ -68,7 +73,7 @@ function collectMarkdownFiles(root) {
68
73
  }
69
74
  };
70
75
  walk(root);
71
- return out.sort();
76
+ return { files: out.sort(), skippedSymlinks: skippedSymlinks.sort() };
72
77
  }
73
78
  /** First markdown heading in the content, else the basename without extension. */
74
79
  function deriveTitle(content, relPath) {
@@ -90,7 +95,7 @@ function deriveTitle(content, relPath) {
90
95
  * is exactly what a Claude Code memory directory contains.
91
96
  */
92
97
  export function scanDirectory(root, storeKind) {
93
- const rel = collectMarkdownFiles(root);
98
+ const { files: rel, skippedSymlinks } = collectMarkdownFiles(root);
94
99
  const items = [];
95
100
  const skippedSecretFiles = [];
96
101
  let redactedItems = 0;
@@ -127,6 +132,6 @@ export function scanDirectory(root, storeKind) {
127
132
  updated_at: st.mtime?.toISOString?.(),
128
133
  });
129
134
  }
130
- return { items, skippedSecretFiles, redactedItems, redactedSecrets };
135
+ return { items, skippedSecretFiles, skippedSymlinks, redactedItems, redactedSecrets };
131
136
  }
132
137
  //# sourceMappingURL=importers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"importers.js","sourceRoot":"","sources":["../../src/absorb/importers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"importers.js","sourceRoot":"","sources":["../../src/absorb/importers.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -8,19 +8,27 @@
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?;
31
+ private readonly timeoutMs;
24
32
  /** Whether graph-derived tools should request UUID-keyset paginated graphs. */
25
33
  readonly graphPagination: boolean;
26
34
  constructor(apiUrl: string, token: string, tenant?: string, graphPagination?: boolean);
@@ -36,6 +44,12 @@ export declare class HebbianClient {
36
44
  * @param body Request body (serialised to JSON)
37
45
  */
38
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;
39
53
  /** Build an absolute URL from path + optional query params. */
40
54
  private headers;
41
55
  private buildUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,2EAA2E;AAC3E,qBAAa,eAAgB,SAAQ,KAAK;aAEtB,UAAU,EAAE,MAAM;aAClB,SAAS,EAAE,MAAM;aAEjB,MAAM,CAAC,EAAE,OAAO;gBAHhB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,OAAO,YAAA;IAMlC,0DAA0D;IAC1D,WAAW,IAAI,MAAM;CAsBtB;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,+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;IAQnF;;;;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;IASnB;;;;OAIG;IACG,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,OAAO,CAAC;IAanB,+DAA+D;IAC/D,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,QAAQ;IAehB;;;OAGG;YACW,cAAc;CAiC7B"}
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
@@ -9,13 +9,14 @@
9
9
  * - All tool call implementations live in src/tools/*.ts.
10
10
  */
11
11
  import { PACKAGE_VERSION } from "./package_info.js";
12
+ export const DEFAULT_TIMEOUT_MS = 30_000;
12
13
  /** Structured API error returned by the Hebbian API (RFC 7807 variant). */
13
14
  export class HebbianApiError extends Error {
14
15
  statusCode;
15
16
  errorCode;
16
17
  detail;
17
- constructor(statusCode, errorCode, message, detail) {
18
- super(message);
18
+ constructor(statusCode, errorCode, message, detail, options) {
19
+ super(message, options);
19
20
  this.statusCode = statusCode;
20
21
  this.errorCode = errorCode;
21
22
  this.detail = detail;
@@ -47,6 +48,19 @@ export class HebbianApiError extends Error {
47
48
  return `API error ${this.statusCode} (${this.errorCode}): ${this.message}`;
48
49
  }
49
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
+ }
50
64
  /** Extract the actionable reason from structured API and FastAPI detail bodies. */
51
65
  function detailReason(detail) {
52
66
  if (typeof detail === "string") {
@@ -68,6 +82,7 @@ export class HebbianClient {
68
82
  apiUrl;
69
83
  token;
70
84
  tenant;
85
+ timeoutMs;
71
86
  /** Whether graph-derived tools should request UUID-keyset paginated graphs. */
72
87
  graphPagination;
73
88
  constructor(apiUrl, token, tenant, graphPagination = false) {
@@ -75,6 +90,7 @@ export class HebbianClient {
75
90
  this.apiUrl = apiUrl.replace(/\/+$/, "");
76
91
  this.token = token;
77
92
  this.tenant = tenant && tenant.trim().length > 0 ? tenant.trim() : undefined;
93
+ this.timeoutMs = timeoutMsFromEnv();
78
94
  this.graphPagination = graphPagination;
79
95
  }
80
96
  /**
@@ -84,11 +100,10 @@ export class HebbianClient {
84
100
  */
85
101
  async get(path, query) {
86
102
  const url = this.buildUrl(path, query);
87
- const response = await fetch(url.toString(), {
103
+ return this.request("GET", url.toString(), {
88
104
  method: "GET",
89
105
  headers: this.headers(),
90
106
  });
91
- return this.handleResponse(response);
92
107
  }
93
108
  /**
94
109
  * Execute a POST request against the Hebbian API.
@@ -97,7 +112,7 @@ export class HebbianClient {
97
112
  */
98
113
  async post(path, body) {
99
114
  const url = this.buildUrl(path);
100
- const response = await fetch(url.toString(), {
115
+ return this.request("POST", url.toString(), {
101
116
  method: "POST",
102
117
  headers: {
103
118
  ...this.headers(),
@@ -105,7 +120,47 @@ export class HebbianClient {
105
120
  },
106
121
  body: JSON.stringify(body),
107
122
  });
108
- return this.handleResponse(response);
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
+ }
109
164
  }
110
165
  /** Build an absolute URL from path + optional query params. */
111
166
  headers() {
@@ -154,4 +209,11 @@ export class HebbianClient {
154
209
  throw new HebbianApiError(response.status, errorCode, message, errBody.detail);
155
210
  }
156
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
+ }
157
219
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.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
- * 9 tools:
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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
package/dist/index.js 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
- * 9 tools:
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.
@@ -31,7 +35,8 @@ import { HebbianClient } from "./client.js";
31
35
  import { SERVER_NAME, SERVER_VERSION } from "./server_info.js";
32
36
  import { printBanner } from "./banner.js";
33
37
  import { runAbsorb } from "./absorb/cli.js";
34
- import { HEBBIAN_READ_NODE, handleReadNode, HEBBIAN_SEARCH, handleSearch, HEBBIAN_ASK, handleAsk, HEBBIAN_CONTEXT, handleContext, HEBBIAN_CAPTURE, handleCapture, HEBBIAN_TRAVERSE, handleTraverse, HEBBIAN_PROVENANCE, handleProvenance, HEBBIAN_SALIENCE, handleSalience, HEBBIAN_RECENT_ACTIVITY, handleRecentActivity, } from "./tools/index.js";
38
+ import { startServingAfterHealthCheck } from "./server_startup.js";
39
+ import { HEBBIAN_READ_NODE, handleReadNode, HEBBIAN_SEARCH, handleSearch, HEBBIAN_ASK, handleAsk, HEBBIAN_CONTEXT, handleContext, HEBBIAN_CAPTURE, handleCapture, HEBBIAN_TRAVERSE, handleTraverse, HEBBIAN_PROVENANCE, handleProvenance, HEBBIAN_SALIENCE, handleSalience, HEBBIAN_RECENT_ACTIVITY, handleRecentActivity, HEBBIAN_WHOAMI, handleWhoami, HEBBIAN_USAGE, handleUsage, HEBBIAN_GDPR_EXPORT, handleGdprExport, HEBBIAN_AUDIT_LOG, handleAuditLog, } from "./tools/index.js";
35
40
  // ── Constants ──────────────────────────────────────────────────────────────────
36
41
  // ── All registered tools ───────────────────────────────────────────────────────
37
42
  const TOOLS = [
@@ -44,6 +49,10 @@ const TOOLS = [
44
49
  HEBBIAN_PROVENANCE,
45
50
  HEBBIAN_SALIENCE,
46
51
  HEBBIAN_RECENT_ACTIVITY,
52
+ HEBBIAN_WHOAMI,
53
+ HEBBIAN_USAGE,
54
+ HEBBIAN_GDPR_EXPORT,
55
+ HEBBIAN_AUDIT_LOG,
47
56
  ];
48
57
  // ── Boot ───────────────────────────────────────────────────────────────────────
49
58
  async function main() {
@@ -93,6 +102,18 @@ async function main() {
93
102
  case "hebbian_recent_activity":
94
103
  result = await handleRecentActivity(client, args);
95
104
  break;
105
+ case "hebbian_whoami":
106
+ result = await handleWhoami(client);
107
+ break;
108
+ case "hebbian_usage":
109
+ result = await handleUsage(client, args);
110
+ break;
111
+ case "hebbian_gdpr_export":
112
+ result = await handleGdprExport(client);
113
+ break;
114
+ case "hebbian_audit_log":
115
+ result = await handleAuditLog(client, args);
116
+ break;
96
117
  default:
97
118
  return {
98
119
  content: [{ type: "text", text: `Unknown tool: ${name}` }],
@@ -113,7 +134,9 @@ async function main() {
113
134
  });
114
135
  // ── Transport ──────────────────────────────────────────────────────────────
115
136
  const transport = new StdioServerTransport();
116
- await server.connect(transport);
137
+ // The probe is advisory: a transient API or credential problem must not stop
138
+ // a host from starting and surfacing the issue to its user.
139
+ await startServingAfterHealthCheck(client, () => server.connect(transport));
117
140
  // Log to stderr only (stdout is the MCP wire)
118
141
  process.stderr.write(`[hebbian-mcp] ${SERVER_NAME}@${SERVER_VERSION} started. ` +
119
142
  `API: ${config.apiUrl}\n`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EAAE,cAAc,EACjC,cAAc,EAAE,YAAY,EAC5B,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,aAAa,EAC9B,eAAe,EAAE,aAAa,EAC9B,gBAAgB,EAAE,cAAc,EAChC,kBAAkB,EAAE,gBAAgB,EACpC,gBAAgB,EAAE,cAAc,EAChC,uBAAuB,EAAE,oBAAoB,GAC9C,MAAM,kBAAkB,CAAC;AAE1B,kFAAkF;AAElF,kFAAkF;AAElF,MAAM,KAAK,GAAG;IACZ,iBAAiB;IACjB,cAAc;IACd,WAAW;IACX,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,uBAAuB;CACf,CAAC;AAEX,kFAAkF;AAElF,KAAK,UAAU,IAAI;IACjB,0DAA0D;IAC1D,oFAAoF;IACpF,WAAW,EAAE,CAAC;IAEd,gDAAgD;IAChD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAI,aAAa,CAC9B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,eAAe,CACvB,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,8EAA8E;IAC9E,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;QACtD,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;KAClB,CAAC,CAAC,CAAC;IAEJ,8EAA8E;IAC9E,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAChD,8DAA8D;QAC9D,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAwB,CAAC;QAEpD,IAAI,CAAC;YACH,IAAI,MAAc,CAAC;YAEnB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,mBAAmB;oBACtB,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAwB,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,gBAAgB;oBACnB,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAInC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,aAAa;oBAChB,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,IAA4B,CAAC,CAAC;oBAC/D,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAIpC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,iBAAiB;oBACpB,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,IAMpC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAGrC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,oBAAoB;oBACvB,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAwB,CAAC,CAAC;oBAClE,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,IAAwB,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,yBAAyB;oBAC5B,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,IAG3C,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;wBAC1D,OAAO,EAAE,IAAI;qBACd,CAAC;YACN,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,8CAA8C;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iBAAiB,WAAW,IAAI,cAAc,YAAY;QAC1D,QAAQ,MAAM,CAAC,MAAM,IAAI,CAC1B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;IAC5B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACpF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,CAAC;IACN,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC3F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}