brainhub-mcp 0.1.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/LICENSE +201 -0
- package/README.md +84 -0
- package/dist/adapters/claude.d.ts +2 -0
- package/dist/adapters/claude.js +50 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +2 -0
- package/dist/adapters/codex.js +52 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/content.d.ts +6 -0
- package/dist/adapters/content.js +68 -0
- package/dist/adapters/content.js.map +1 -0
- package/dist/adapters/grok.d.ts +2 -0
- package/dist/adapters/grok.js +44 -0
- package/dist/adapters/grok.js.map +1 -0
- package/dist/adapters/index.d.ts +31 -0
- package/dist/adapters/index.js +111 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/jsonl.d.ts +6 -0
- package/dist/adapters/jsonl.js +26 -0
- package/dist/adapters/jsonl.js.map +1 -0
- package/dist/adapters/types.d.ts +10 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/auth/account-status.d.ts +50 -0
- package/dist/auth/account-status.js +59 -0
- package/dist/auth/account-status.js.map +1 -0
- package/dist/auth/google-account.d.ts +21 -0
- package/dist/auth/google-account.js +45 -0
- package/dist/auth/google-account.js.map +1 -0
- package/dist/auth/google-oauth.d.ts +35 -0
- package/dist/auth/google-oauth.js +191 -0
- package/dist/auth/google-oauth.js.map +1 -0
- package/dist/auth/oauth-loopback.d.ts +10 -0
- package/dist/auth/oauth-loopback.js +81 -0
- package/dist/auth/oauth-loopback.js.map +1 -0
- package/dist/auth/official-oauth-client.d.ts +5 -0
- package/dist/auth/official-oauth-client.js +6 -0
- package/dist/auth/official-oauth-client.js.map +1 -0
- package/dist/auth/platform-secrets.d.ts +14 -0
- package/dist/auth/platform-secrets.js +81 -0
- package/dist/auth/platform-secrets.js.map +1 -0
- package/dist/auth/secret-store-factory.d.ts +11 -0
- package/dist/auth/secret-store-factory.js +37 -0
- package/dist/auth/secret-store-factory.js.map +1 -0
- package/dist/auth/secret-store.d.ts +13 -0
- package/dist/auth/secret-store.js +40 -0
- package/dist/auth/secret-store.js.map +1 -0
- package/dist/capture/images.d.ts +11 -0
- package/dist/capture/images.js +27 -0
- package/dist/capture/images.js.map +1 -0
- package/dist/capture/normalize.d.ts +11 -0
- package/dist/capture/normalize.js +43 -0
- package/dist/capture/normalize.js.map +1 -0
- package/dist/capture/redact.d.ts +10 -0
- package/dist/capture/redact.js +60 -0
- package/dist/capture/redact.js.map +1 -0
- package/dist/cli/index.d.ts +20 -0
- package/dist/cli/index.js +781 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/clients/registry.d.ts +24 -0
- package/dist/clients/registry.js +105 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/domain/config-io.d.ts +15 -0
- package/dist/domain/config-io.js +168 -0
- package/dist/domain/config-io.js.map +1 -0
- package/dist/domain/config.d.ts +74 -0
- package/dist/domain/config.js +130 -0
- package/dist/domain/config.js.map +1 -0
- package/dist/domain/errors.d.ts +6 -0
- package/dist/domain/errors.js +11 -0
- package/dist/domain/errors.js.map +1 -0
- package/dist/domain/session.d.ts +62 -0
- package/dist/domain/session.js +47 -0
- package/dist/domain/session.js.map +1 -0
- package/dist/drive/drive-port.d.ts +51 -0
- package/dist/drive/drive-port.js +2 -0
- package/dist/drive/drive-port.js.map +1 -0
- package/dist/drive/google-drive.d.ts +28 -0
- package/dist/drive/google-drive.js +501 -0
- package/dist/drive/google-drive.js.map +1 -0
- package/dist/drive/memory-drive.d.ts +19 -0
- package/dist/drive/memory-drive.js +148 -0
- package/dist/drive/memory-drive.js.map +1 -0
- package/dist/drive/scoped-drive.d.ts +17 -0
- package/dist/drive/scoped-drive.js +115 -0
- package/dist/drive/scoped-drive.js.map +1 -0
- package/dist/mcp/server.d.ts +55 -0
- package/dist/mcp/server.js +133 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/portrait/obsidian.d.ts +7 -0
- package/dist/portrait/obsidian.js +16 -0
- package/dist/portrait/obsidian.js.map +1 -0
- package/dist/portrait/portrait-service.d.ts +12 -0
- package/dist/portrait/portrait-service.js +18 -0
- package/dist/portrait/portrait-service.js.map +1 -0
- package/dist/portrait/portrait-sync-service.d.ts +21 -0
- package/dist/portrait/portrait-sync-service.js +43 -0
- package/dist/portrait/portrait-sync-service.js.map +1 -0
- package/dist/runtime/command.d.ts +4 -0
- package/dist/runtime/command.js +2 -0
- package/dist/runtime/command.js.map +1 -0
- package/dist/runtime/container.d.ts +72 -0
- package/dist/runtime/container.js +361 -0
- package/dist/runtime/container.js.map +1 -0
- package/dist/scheduler/jobs.d.ts +2 -0
- package/dist/scheduler/jobs.js +7 -0
- package/dist/scheduler/jobs.js.map +1 -0
- package/dist/scheduler/launchd.d.ts +7 -0
- package/dist/scheduler/launchd.js +40 -0
- package/dist/scheduler/launchd.js.map +1 -0
- package/dist/scheduler/manager.d.ts +26 -0
- package/dist/scheduler/manager.js +113 -0
- package/dist/scheduler/manager.js.map +1 -0
- package/dist/search/chunk-text.d.ts +11 -0
- package/dist/search/chunk-text.js +40 -0
- package/dist/search/chunk-text.js.map +1 -0
- package/dist/search/e5-embedder.d.ts +19 -0
- package/dist/search/e5-embedder.js +71 -0
- package/dist/search/e5-embedder.js.map +1 -0
- package/dist/search/embedder.d.ts +8 -0
- package/dist/search/embedder.js +5 -0
- package/dist/search/embedder.js.map +1 -0
- package/dist/search/model-cache.d.ts +7 -0
- package/dist/search/model-cache.js +38 -0
- package/dist/search/model-cache.js.map +1 -0
- package/dist/search/search-service.d.ts +46 -0
- package/dist/search/search-service.js +319 -0
- package/dist/search/search-service.js.map +1 -0
- package/dist/setup/backfill-service.d.ts +33 -0
- package/dist/setup/backfill-service.js +47 -0
- package/dist/setup/backfill-service.js.map +1 -0
- package/dist/setup/setup-service.d.ts +65 -0
- package/dist/setup/setup-service.js +90 -0
- package/dist/setup/setup-service.js.map +1 -0
- package/dist/setup/uninstall-service.d.ts +34 -0
- package/dist/setup/uninstall-service.js +91 -0
- package/dist/setup/uninstall-service.js.map +1 -0
- package/dist/state/sqlite-store.d.ts +19 -0
- package/dist/state/sqlite-store.js +299 -0
- package/dist/state/sqlite-store.js.map +1 -0
- package/dist/state/store.d.ts +52 -0
- package/dist/state/store.js +2 -0
- package/dist/state/store.js.map +1 -0
- package/dist/status/status-service.d.ts +38 -0
- package/dist/status/status-service.js +93 -0
- package/dist/status/status-service.js.map +1 -0
- package/dist/update/update-check-service.d.ts +38 -0
- package/dist/update/update-check-service.js +105 -0
- package/dist/update/update-check-service.js.map +1 -0
- package/dist/upload/lock.d.ts +7 -0
- package/dist/upload/lock.js +68 -0
- package/dist/upload/lock.js.map +1 -0
- package/dist/upload/upload-service.d.ts +36 -0
- package/dist/upload/upload-service.js +360 -0
- package/dist/upload/upload-service.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CommandSpec } from "../runtime/command.js";
|
|
2
|
+
export type ClientName = "claude" | "codex" | "grok";
|
|
3
|
+
export type ClientAction = "install" | "uninstall";
|
|
4
|
+
export declare function launchWithConfig(launch: CommandSpec, configFile: string): CommandSpec;
|
|
5
|
+
export declare function clientMutation(client: ClientName, action: ClientAction, launch: CommandSpec): {
|
|
6
|
+
command: string;
|
|
7
|
+
args: string[];
|
|
8
|
+
};
|
|
9
|
+
type Runner = (command: string, args: string[]) => Promise<{
|
|
10
|
+
stdout: string;
|
|
11
|
+
exitCode: number;
|
|
12
|
+
}>;
|
|
13
|
+
export declare class ClientRegistry {
|
|
14
|
+
readonly launch: CommandSpec;
|
|
15
|
+
readonly run: Runner;
|
|
16
|
+
constructor(launch: CommandSpec, run?: Runner);
|
|
17
|
+
mutate(client: ClientName, action: ClientAction): Promise<void>;
|
|
18
|
+
status(client: ClientName): Promise<{
|
|
19
|
+
available: boolean;
|
|
20
|
+
registered: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
export declare function mergeClaudeDesktopConfig(path: string, launch: CommandSpec): Promise<string>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { BrainHubError } from "../domain/errors.js";
|
|
5
|
+
export function launchWithConfig(launch, configFile) {
|
|
6
|
+
return {
|
|
7
|
+
command: launch.command,
|
|
8
|
+
args: [...launch.args, "--config", configFile],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function clientMutation(client, action, launch) {
|
|
12
|
+
if (action === "install") {
|
|
13
|
+
const prefix = client === "codex"
|
|
14
|
+
? ["mcp", "add", "brain-hub", "--"]
|
|
15
|
+
: ["mcp", "add", "--scope", "user", "brain-hub", "--"];
|
|
16
|
+
return {
|
|
17
|
+
command: client,
|
|
18
|
+
args: [...prefix, launch.command, ...launch.args, "serve"],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return client === "claude"
|
|
22
|
+
? {
|
|
23
|
+
command: client,
|
|
24
|
+
args: ["mcp", "remove", "--scope", "user", "brain-hub"],
|
|
25
|
+
}
|
|
26
|
+
: { command: client, args: ["mcp", "remove", "brain-hub"] };
|
|
27
|
+
}
|
|
28
|
+
const defaultRunner = async (command, args) => new Promise((resolve, reject) => {
|
|
29
|
+
const child = spawn(command, args, { stdio: ["ignore", "pipe", "ignore"] });
|
|
30
|
+
const output = [];
|
|
31
|
+
child.stdout.on("data", (chunk) => output.push(chunk));
|
|
32
|
+
child.on("error", reject);
|
|
33
|
+
child.on("close", (exitCode) => resolve({
|
|
34
|
+
stdout: Buffer.concat(output).toString("utf8"),
|
|
35
|
+
exitCode: exitCode ?? 1,
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
export class ClientRegistry {
|
|
39
|
+
launch;
|
|
40
|
+
run;
|
|
41
|
+
constructor(launch, run = defaultRunner) {
|
|
42
|
+
this.launch = launch;
|
|
43
|
+
this.run = run;
|
|
44
|
+
}
|
|
45
|
+
async mutate(client, action) {
|
|
46
|
+
if (action === "install") {
|
|
47
|
+
const help = await this.run(client, ["mcp", "add", "--help"]);
|
|
48
|
+
if (help.exitCode !== 0 || !help.stdout.includes("--")) {
|
|
49
|
+
throw new BrainHubError("CLIENT_VERSION_UNSUPPORTED", `${client} does not support the required MCP syntax`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const mutation = clientMutation(client, action, this.launch);
|
|
53
|
+
const result = await this.run(mutation.command, mutation.args);
|
|
54
|
+
if (result.exitCode !== 0)
|
|
55
|
+
throw new Error(`${client} MCP ${action} failed`);
|
|
56
|
+
}
|
|
57
|
+
async status(client) {
|
|
58
|
+
try {
|
|
59
|
+
const result = await this.run(client, ["mcp", "list"]);
|
|
60
|
+
return {
|
|
61
|
+
available: result.exitCode === 0,
|
|
62
|
+
registered: result.stdout.includes("brain-hub"),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return { available: false, registered: false };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function mergeClaudeDesktopConfig(path, launch) {
|
|
71
|
+
let config = {};
|
|
72
|
+
let source = null;
|
|
73
|
+
try {
|
|
74
|
+
source = await readFile(path, "utf8");
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.code !== "ENOENT")
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
if (source !== null) {
|
|
81
|
+
const parsed = JSON.parse(source);
|
|
82
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
83
|
+
throw new TypeError("Claude Desktop configuration must be a JSON object");
|
|
84
|
+
}
|
|
85
|
+
config = parsed;
|
|
86
|
+
const backup = `${path}.backup-${new Date().toISOString().replace(/[:.]/gu, "-")}`;
|
|
87
|
+
await copyFile(path, backup);
|
|
88
|
+
}
|
|
89
|
+
const servers = config.mcpServers && typeof config.mcpServers === "object"
|
|
90
|
+
? config.mcpServers
|
|
91
|
+
: {};
|
|
92
|
+
config.mcpServers = {
|
|
93
|
+
...servers,
|
|
94
|
+
"brain-hub": {
|
|
95
|
+
command: launch.command,
|
|
96
|
+
args: [...launch.args, "serve"],
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
await mkdir(dirname(path), { recursive: true });
|
|
100
|
+
await writeFile(path, `${JSON.stringify(config, null, 2)}\n`, {
|
|
101
|
+
mode: 0o600,
|
|
102
|
+
});
|
|
103
|
+
return path;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/clients/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type BrainHubConfig, type ConfigLayer, type PlatformPaths } from "./config.js";
|
|
2
|
+
export interface LoadedConfig {
|
|
3
|
+
config: BrainHubConfig;
|
|
4
|
+
paths: PlatformPaths;
|
|
5
|
+
configFile: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadConfig(options: {
|
|
8
|
+
homeDir: string;
|
|
9
|
+
hostname: string;
|
|
10
|
+
platform: NodeJS.Platform;
|
|
11
|
+
env?: NodeJS.ProcessEnv;
|
|
12
|
+
configFile?: string;
|
|
13
|
+
cli?: ConfigLayer;
|
|
14
|
+
}): Promise<LoadedConfig>;
|
|
15
|
+
export declare function writeConfig(path: string, config: BrainHubConfig): Promise<void>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { lstat, mkdir, readFile, readlink, rename, rm, writeFile, } from "node:fs/promises";
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { delimiter, dirname, join, resolve } from "node:path";
|
|
4
|
+
import TOML from "@iarna/toml";
|
|
5
|
+
import { createDefaultConfig, mergeConfigLayers, platformPaths, } from "./config.js";
|
|
6
|
+
function camelKey(value) {
|
|
7
|
+
return value.replace(/_([a-z])/gu, (_match, letter) => letter.toUpperCase());
|
|
8
|
+
}
|
|
9
|
+
function snakeKey(value) {
|
|
10
|
+
return value.replace(/[A-Z]/gu, (letter) => `_${letter.toLowerCase()}`);
|
|
11
|
+
}
|
|
12
|
+
function mapKeys(value, keyMapper) {
|
|
13
|
+
if (Array.isArray(value))
|
|
14
|
+
return value.map((item) => mapKeys(item, keyMapper));
|
|
15
|
+
if (!value || typeof value !== "object")
|
|
16
|
+
return value;
|
|
17
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [
|
|
18
|
+
keyMapper(key),
|
|
19
|
+
mapKeys(child, keyMapper),
|
|
20
|
+
]));
|
|
21
|
+
}
|
|
22
|
+
function booleanEnv(value) {
|
|
23
|
+
if (value === undefined)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (["1", "true", "yes"].includes(value.toLowerCase()))
|
|
26
|
+
return true;
|
|
27
|
+
if (["0", "false", "no"].includes(value.toLowerCase()))
|
|
28
|
+
return false;
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
function numberEnv(value) {
|
|
32
|
+
if (value === undefined)
|
|
33
|
+
return undefined;
|
|
34
|
+
const number = Number(value);
|
|
35
|
+
return Number.isFinite(number) ? number : undefined;
|
|
36
|
+
}
|
|
37
|
+
function compact(value) {
|
|
38
|
+
if (Array.isArray(value))
|
|
39
|
+
return value.map(compact);
|
|
40
|
+
if (!value || typeof value !== "object")
|
|
41
|
+
return value;
|
|
42
|
+
return Object.fromEntries(Object.entries(value)
|
|
43
|
+
.filter(([, child]) => child !== undefined)
|
|
44
|
+
.map(([key, child]) => [key, compact(child)]));
|
|
45
|
+
}
|
|
46
|
+
function environmentLayer(env) {
|
|
47
|
+
return compact({
|
|
48
|
+
device: { name: env.BRAINHUB_DEVICE_NAME },
|
|
49
|
+
drive: {
|
|
50
|
+
rootFolderId: env.BRAINHUB_DRIVE_ROOT_ID,
|
|
51
|
+
oauthClientFile: env.BRAINHUB_GOOGLE_OAUTH_CLIENT_FILE,
|
|
52
|
+
},
|
|
53
|
+
capture: {
|
|
54
|
+
claudePaths: env.BRAINHUB_CLAUDE_PATHS?.split(delimiter),
|
|
55
|
+
codexPaths: env.BRAINHUB_CODEX_PATHS?.split(delimiter),
|
|
56
|
+
grokPaths: env.BRAINHUB_GROK_PATHS?.split(delimiter),
|
|
57
|
+
includeSubagents: booleanEnv(env.BRAINHUB_INCLUDE_SUBAGENTS),
|
|
58
|
+
},
|
|
59
|
+
publish: { fallbackPath: env.BRAINHUB_PUBLISH_FALLBACK_PATH },
|
|
60
|
+
upload: {
|
|
61
|
+
batchSize: numberEnv(env.BRAINHUB_UPLOAD_BATCH_SIZE),
|
|
62
|
+
concurrency: numberEnv(env.BRAINHUB_UPLOAD_CONCURRENCY),
|
|
63
|
+
},
|
|
64
|
+
scheduler: {
|
|
65
|
+
at: env.BRAINHUB_SCHEDULE_AT,
|
|
66
|
+
syncAt: env.BRAINHUB_SYNC_AT,
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function expandHome(value, homeDir) {
|
|
71
|
+
return value === "~"
|
|
72
|
+
? homeDir
|
|
73
|
+
: value.startsWith("~/")
|
|
74
|
+
? join(homeDir, value.slice(2))
|
|
75
|
+
: value;
|
|
76
|
+
}
|
|
77
|
+
async function resolveConfigWritePath(path, visited = new Set()) {
|
|
78
|
+
let metadata;
|
|
79
|
+
try {
|
|
80
|
+
metadata = await lstat(path);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.code === "ENOENT")
|
|
84
|
+
return path;
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
if (!metadata.isSymbolicLink())
|
|
88
|
+
return path;
|
|
89
|
+
const identity = resolve(path);
|
|
90
|
+
if (visited.has(identity))
|
|
91
|
+
throw new Error("Config symlink cycle detected");
|
|
92
|
+
visited.add(identity);
|
|
93
|
+
const target = await readlink(path);
|
|
94
|
+
return resolveConfigWritePath(resolve(dirname(path), target), visited);
|
|
95
|
+
}
|
|
96
|
+
export async function loadConfig(options) {
|
|
97
|
+
const env = options.env ?? process.env;
|
|
98
|
+
const basePaths = platformPaths({
|
|
99
|
+
platform: options.platform,
|
|
100
|
+
homeDir: options.homeDir,
|
|
101
|
+
...(env.XDG_CONFIG_HOME ? { xdgConfigHome: env.XDG_CONFIG_HOME } : {}),
|
|
102
|
+
...(env.XDG_STATE_HOME ? { xdgStateHome: env.XDG_STATE_HOME } : {}),
|
|
103
|
+
...(env.XDG_CACHE_HOME ? { xdgCacheHome: env.XDG_CACHE_HOME } : {}),
|
|
104
|
+
});
|
|
105
|
+
const configFile = options.configFile ?? env.BRAINHUB_CONFIG ?? basePaths.configFile;
|
|
106
|
+
let file;
|
|
107
|
+
try {
|
|
108
|
+
file = mapKeys(TOML.parse(await readFile(configFile, "utf8")), camelKey);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error.code !== "ENOENT")
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
const config = mergeConfigLayers(createDefaultConfig({
|
|
115
|
+
hostname: options.hostname,
|
|
116
|
+
homeDir: options.homeDir,
|
|
117
|
+
platform: options.platform,
|
|
118
|
+
}), {
|
|
119
|
+
...(file ? { file } : {}),
|
|
120
|
+
env: environmentLayer(env),
|
|
121
|
+
...(options.cli ? { cli: options.cli } : {}),
|
|
122
|
+
});
|
|
123
|
+
config.capture.claudePaths = config.capture.claudePaths.map((path) => expandHome(path, options.homeDir));
|
|
124
|
+
config.capture.codexPaths = config.capture.codexPaths.map((path) => expandHome(path, options.homeDir));
|
|
125
|
+
config.capture.grokPaths = config.capture.grokPaths.map((path) => expandHome(path, options.homeDir));
|
|
126
|
+
config.drive.oauthClientFile = expandHome(config.drive.oauthClientFile, options.homeDir);
|
|
127
|
+
config.publish.fallbackPath = expandHome(config.publish.fallbackPath, options.homeDir);
|
|
128
|
+
const accountIdentity = JSON.stringify([
|
|
129
|
+
config.drive.accountPermissionId || "unbound-account",
|
|
130
|
+
config.drive.rootFolderId || "unbound-root",
|
|
131
|
+
]);
|
|
132
|
+
const accountKey = createHash("sha256")
|
|
133
|
+
.update(accountIdentity)
|
|
134
|
+
.digest("hex")
|
|
135
|
+
.slice(0, 24);
|
|
136
|
+
const accountStateDirectory = join(dirname(basePaths.stateFile), "accounts", accountKey);
|
|
137
|
+
return {
|
|
138
|
+
config,
|
|
139
|
+
configFile,
|
|
140
|
+
paths: {
|
|
141
|
+
...basePaths,
|
|
142
|
+
legacyStateFile: basePaths.stateFile,
|
|
143
|
+
stateFile: join(accountStateDirectory, "state.sqlite"),
|
|
144
|
+
searchIndexFile: join(accountStateDirectory, "search-index.sqlite"),
|
|
145
|
+
...(env.BRAINHUB_MODEL_CACHE
|
|
146
|
+
? { modelCache: expandHome(env.BRAINHUB_MODEL_CACHE, options.homeDir) }
|
|
147
|
+
: {}),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
export async function writeConfig(path, config) {
|
|
152
|
+
await mkdir(dirname(path), { recursive: true });
|
|
153
|
+
const writePath = await resolveConfigWritePath(path);
|
|
154
|
+
await mkdir(dirname(writePath), { recursive: true });
|
|
155
|
+
const serializable = mapKeys(config, snakeKey);
|
|
156
|
+
const temporaryPath = `${writePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
157
|
+
try {
|
|
158
|
+
await writeFile(temporaryPath, TOML.stringify(serializable), {
|
|
159
|
+
mode: 0o600,
|
|
160
|
+
});
|
|
161
|
+
await rename(temporaryPath, writePath);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
await rm(temporaryPath, { force: true }).catch(() => undefined);
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=config-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-io.js","sourceRoot":"","sources":["../../src/domain/config-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
3
|
+
version: z.ZodLiteral<1>;
|
|
4
|
+
device: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
drive: z.ZodObject<{
|
|
8
|
+
rootFolderId: z.ZodString;
|
|
9
|
+
rootFolderName: z.ZodString;
|
|
10
|
+
oauthClientFile: z.ZodString;
|
|
11
|
+
accountEmail: z.ZodString;
|
|
12
|
+
accountDisplayName: z.ZodString;
|
|
13
|
+
accountPermissionId: z.ZodString;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
capture: z.ZodObject<{
|
|
16
|
+
claudePaths: z.ZodArray<z.ZodString>;
|
|
17
|
+
codexPaths: z.ZodArray<z.ZodString>;
|
|
18
|
+
grokPaths: z.ZodArray<z.ZodString>;
|
|
19
|
+
includeSubagents: z.ZodBoolean;
|
|
20
|
+
internalDomains: z.ZodArray<z.ZodString>;
|
|
21
|
+
internalCidrs: z.ZodArray<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
publish: z.ZodObject<{
|
|
24
|
+
fallbackPath: z.ZodString;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
upload: z.ZodObject<{
|
|
27
|
+
batchSize: z.ZodInt;
|
|
28
|
+
concurrency: z.ZodInt;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
search: z.ZodObject<{
|
|
31
|
+
model: z.ZodString;
|
|
32
|
+
modelRevision: z.ZodString;
|
|
33
|
+
dimensions: z.ZodInt;
|
|
34
|
+
chunkTokens: z.ZodInt;
|
|
35
|
+
chunkOverlap: z.ZodInt;
|
|
36
|
+
defaultLimit: z.ZodInt;
|
|
37
|
+
maxLimit: z.ZodInt;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
scheduler: z.ZodObject<{
|
|
40
|
+
at: z.ZodString;
|
|
41
|
+
syncAt: z.ZodString;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export type BrainHubConfig = z.infer<typeof ConfigSchema>;
|
|
45
|
+
export interface PlatformPathOptions {
|
|
46
|
+
platform: NodeJS.Platform;
|
|
47
|
+
homeDir: string;
|
|
48
|
+
xdgConfigHome?: string;
|
|
49
|
+
xdgStateHome?: string;
|
|
50
|
+
xdgCacheHome?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface PlatformPaths {
|
|
53
|
+
configFile: string;
|
|
54
|
+
stateFile: string;
|
|
55
|
+
legacyStateFile?: string;
|
|
56
|
+
searchIndexFile: string;
|
|
57
|
+
modelCache: string;
|
|
58
|
+
}
|
|
59
|
+
export declare function platformPaths(options: PlatformPathOptions): PlatformPaths;
|
|
60
|
+
export declare function createDefaultConfig(options: {
|
|
61
|
+
hostname: string;
|
|
62
|
+
homeDir: string;
|
|
63
|
+
platform: NodeJS.Platform;
|
|
64
|
+
}): BrainHubConfig;
|
|
65
|
+
type DeepPartial<T> = T extends readonly (infer Item)[] ? DeepPartial<Item>[] : T extends object ? {
|
|
66
|
+
[Key in keyof T]?: DeepPartial<T[Key]>;
|
|
67
|
+
} : T;
|
|
68
|
+
export type ConfigLayer = DeepPartial<BrainHubConfig>;
|
|
69
|
+
export declare function mergeConfigLayers(defaults: BrainHubConfig, layers: {
|
|
70
|
+
file?: ConfigLayer;
|
|
71
|
+
env?: ConfigLayer;
|
|
72
|
+
cli?: ConfigLayer;
|
|
73
|
+
}): BrainHubConfig;
|
|
74
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const ScheduleSchema = z.string().regex(/^(?:[01]\d|2[0-3]):[0-5]\d$/);
|
|
4
|
+
export const ConfigSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
version: z.literal(1),
|
|
7
|
+
device: z.object({ name: z.string().min(1) }),
|
|
8
|
+
drive: z.object({
|
|
9
|
+
rootFolderId: z.string(),
|
|
10
|
+
rootFolderName: z.string().min(1),
|
|
11
|
+
oauthClientFile: z.string(),
|
|
12
|
+
accountEmail: z.string(),
|
|
13
|
+
accountDisplayName: z.string(),
|
|
14
|
+
accountPermissionId: z.string(),
|
|
15
|
+
}),
|
|
16
|
+
capture: z.object({
|
|
17
|
+
claudePaths: z.array(z.string().min(1)).min(1),
|
|
18
|
+
codexPaths: z.array(z.string().min(1)).min(1),
|
|
19
|
+
grokPaths: z.array(z.string().min(1)).min(1),
|
|
20
|
+
includeSubagents: z.boolean(),
|
|
21
|
+
internalDomains: z.array(z.string().min(1)),
|
|
22
|
+
internalCidrs: z.array(z.string().min(1)),
|
|
23
|
+
}),
|
|
24
|
+
publish: z.object({ fallbackPath: z.string() }),
|
|
25
|
+
upload: z.object({
|
|
26
|
+
batchSize: z.int().positive().max(10_000),
|
|
27
|
+
concurrency: z.int().positive().max(32),
|
|
28
|
+
}),
|
|
29
|
+
search: z.object({
|
|
30
|
+
model: z.string().min(1),
|
|
31
|
+
modelRevision: z.string().min(1),
|
|
32
|
+
dimensions: z.int().positive(),
|
|
33
|
+
chunkTokens: z.int().positive().max(512),
|
|
34
|
+
chunkOverlap: z.int().nonnegative(),
|
|
35
|
+
defaultLimit: z.int().positive(),
|
|
36
|
+
maxLimit: z.int().positive().max(50),
|
|
37
|
+
}),
|
|
38
|
+
scheduler: z.object({ at: ScheduleSchema, syncAt: ScheduleSchema }),
|
|
39
|
+
})
|
|
40
|
+
.superRefine((config, context) => {
|
|
41
|
+
if (config.search.defaultLimit > config.search.maxLimit) {
|
|
42
|
+
context.addIssue({
|
|
43
|
+
code: "custom",
|
|
44
|
+
message: "defaultLimit must not exceed maxLimit",
|
|
45
|
+
path: ["search", "defaultLimit"],
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (config.search.chunkOverlap >= config.search.chunkTokens) {
|
|
49
|
+
context.addIssue({
|
|
50
|
+
code: "custom",
|
|
51
|
+
message: "chunkOverlap must be smaller than chunkTokens",
|
|
52
|
+
path: ["search", "chunkOverlap"],
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
export function platformPaths(options) {
|
|
57
|
+
if (options.platform === "darwin") {
|
|
58
|
+
const applicationSupport = join(options.homeDir, "Library", "Application Support", "BrainHub");
|
|
59
|
+
return {
|
|
60
|
+
configFile: join(applicationSupport, "config.toml"),
|
|
61
|
+
stateFile: join(applicationSupport, "state.sqlite"),
|
|
62
|
+
searchIndexFile: join(applicationSupport, "search-index.sqlite"),
|
|
63
|
+
modelCache: join(options.homeDir, "Library", "Caches", "BrainHub", "models"),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
configFile: join(options.xdgConfigHome ?? join(options.homeDir, ".config"), "brainhub-mcp", "config.toml"),
|
|
68
|
+
stateFile: join(options.xdgStateHome ?? join(options.homeDir, ".local", "state"), "brainhub-mcp", "state.sqlite"),
|
|
69
|
+
searchIndexFile: join(options.xdgStateHome ?? join(options.homeDir, ".local", "state"), "brainhub-mcp", "search-index.sqlite"),
|
|
70
|
+
modelCache: join(options.xdgCacheHome ?? join(options.homeDir, ".cache"), "brainhub-mcp", "models"),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function createDefaultConfig(options) {
|
|
74
|
+
return ConfigSchema.parse({
|
|
75
|
+
version: 1,
|
|
76
|
+
device: { name: options.hostname },
|
|
77
|
+
drive: {
|
|
78
|
+
rootFolderId: "",
|
|
79
|
+
rootFolderName: "brain-hub",
|
|
80
|
+
oauthClientFile: "",
|
|
81
|
+
accountEmail: "",
|
|
82
|
+
accountDisplayName: "",
|
|
83
|
+
accountPermissionId: "",
|
|
84
|
+
},
|
|
85
|
+
capture: {
|
|
86
|
+
claudePaths: [join(options.homeDir, ".claude", "projects")],
|
|
87
|
+
codexPaths: [join(options.homeDir, ".codex", "sessions")],
|
|
88
|
+
grokPaths: [join(options.homeDir, ".grok", "sessions")],
|
|
89
|
+
includeSubagents: false,
|
|
90
|
+
internalDomains: [],
|
|
91
|
+
internalCidrs: [],
|
|
92
|
+
},
|
|
93
|
+
publish: { fallbackPath: "" },
|
|
94
|
+
upload: { batchSize: 100, concurrency: 4 },
|
|
95
|
+
search: {
|
|
96
|
+
model: "Xenova/multilingual-e5-small",
|
|
97
|
+
modelRevision: "ae61bf0193ce3851dc8a45147e459b04ed783d8a",
|
|
98
|
+
dimensions: 384,
|
|
99
|
+
chunkTokens: 448,
|
|
100
|
+
chunkOverlap: 64,
|
|
101
|
+
defaultLimit: 10,
|
|
102
|
+
maxLimit: 50,
|
|
103
|
+
},
|
|
104
|
+
scheduler: { at: "02:00", syncAt: "06:00" },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function isPlainObject(value) {
|
|
108
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
109
|
+
}
|
|
110
|
+
function deepMerge(base, patch) {
|
|
111
|
+
if (!isPlainObject(base) || !isPlainObject(patch)) {
|
|
112
|
+
return patch;
|
|
113
|
+
}
|
|
114
|
+
const merged = { ...base };
|
|
115
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
116
|
+
if (value === undefined)
|
|
117
|
+
continue;
|
|
118
|
+
const current = merged[key];
|
|
119
|
+
merged[key] =
|
|
120
|
+
isPlainObject(current) && isPlainObject(value)
|
|
121
|
+
? deepMerge(current, value)
|
|
122
|
+
: value;
|
|
123
|
+
}
|
|
124
|
+
return merged;
|
|
125
|
+
}
|
|
126
|
+
export function mergeConfigLayers(defaults, layers) {
|
|
127
|
+
const merged = [layers.file, layers.env, layers.cli].reduce((config, layer) => (layer ? deepMerge(config, layer) : config), defaults);
|
|
128
|
+
return ConfigSchema.parse(merged);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/domain/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type BrainHubErrorCode = "AUTH_REQUIRED" | "AUTH_ACCOUNT_UNAVAILABLE" | "DRIVE_ROOT_REQUIRED" | "DRIVE_ROOT_CONFLICT" | "PUBLISH_PATH_REQUIRED" | "SOURCE_UNAVAILABLE" | "SESSION_NOT_FOUND" | "PLATFORM_UNSUPPORTED" | "CONFIRMATION_REQUIRED" | "INDEX_STALE" | "UPLOAD_BUSY" | "INVALID_INPUT" | "UPLOAD_FAILED" | "CLIENT_VERSION_UNSUPPORTED";
|
|
2
|
+
export declare class BrainHubError extends Error {
|
|
3
|
+
readonly code: BrainHubErrorCode;
|
|
4
|
+
readonly retryable: boolean;
|
|
5
|
+
constructor(code: BrainHubErrorCode, message: string, retryable?: boolean);
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class BrainHubError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
retryable;
|
|
4
|
+
constructor(code, message, retryable = false) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.retryable = retryable;
|
|
8
|
+
this.name = "BrainHubError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAE3B;IAEA;IAHX,YACW,IAAuB,EAChC,OAAe,EACN,YAAY,KAAK;QAE1B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,SAAI,GAAJ,IAAI,CAAmB;QAEvB,cAAS,GAAT,SAAS,CAAQ;QAG1B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|