brains-mcp 1.74.2 → 1.74.3
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/dist/tools/hydrateWiki.d.ts +11 -0
- package/dist/tools/hydrateWiki.d.ts.map +1 -1
- package/dist/tools/hydrateWiki.js +18 -6
- package/dist/tools/hydrateWiki.js.map +1 -1
- package/dist/tools/pushWiki.d.ts +5 -0
- package/dist/tools/pushWiki.d.ts.map +1 -1
- package/dist/tools/pushWiki.js +9 -5
- package/dist/tools/pushWiki.js.map +1 -1
- package/package.json +1 -1
|
@@ -31,6 +31,15 @@ export interface JobStatus {
|
|
|
31
31
|
fileName: string;
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* "bearer" (default) sends `Authorization: Bearer <apiKey>` — the header a
|
|
36
|
+
* user's own PAT authenticates against (GH #748: `x-api-key` only matches
|
|
37
|
+
* the server's own `BRAINS_API_KEY`, never a per-user PAT). "instance-key"
|
|
38
|
+
* sends `x-api-key` instead, for the operator use case of authenticating
|
|
39
|
+
* with the instance's shared secret.
|
|
40
|
+
*/
|
|
41
|
+
export type AuthMode = "bearer" | "instance-key";
|
|
42
|
+
export declare function buildAuthHeaders(apiKey: string, authMode?: AuthMode): Record<string, string>;
|
|
34
43
|
export interface FetchExportOptions {
|
|
35
44
|
baseUrl: string;
|
|
36
45
|
apiKey: string;
|
|
@@ -38,6 +47,8 @@ export interface FetchExportOptions {
|
|
|
38
47
|
tags?: string[];
|
|
39
48
|
since?: string;
|
|
40
49
|
includeSystem?: boolean;
|
|
50
|
+
/** Defaults to "bearer" — a real user has a PAT, not the instance's shared key. */
|
|
51
|
+
authMode?: AuthMode;
|
|
41
52
|
/** Injectable for tests; defaults to the global fetch. */
|
|
42
53
|
fetchImpl?: typeof fetch;
|
|
43
54
|
pollIntervalMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrateWiki.d.ts","sourceRoot":"","sources":["../../src/tools/hydrateWiki.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAE3F;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"hydrateWiki.d.ts","sourceRoot":"","sources":["../../src/tools/hydrateWiki.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,18 @@ import AdmZip from "adm-zip";
|
|
|
2
2
|
import { LocalClient } from "../storage/client.js";
|
|
3
3
|
import { runImportFromBuffer, isValidWikiFilename } from "./importWikiZip.js";
|
|
4
4
|
import { getSqliteSearchIndex } from "../search/sqliteIndex.js";
|
|
5
|
+
export function buildAuthHeaders(apiKey, authMode = "bearer") {
|
|
6
|
+
return authMode === "instance-key" ? { "x-api-key": apiKey } : { Authorization: `Bearer ${apiKey}` };
|
|
7
|
+
}
|
|
8
|
+
/** Human-readable name of the auth mode, for error messages (GH #748 AC3). */
|
|
9
|
+
function authModeLabel(authMode) {
|
|
10
|
+
return authMode === "instance-key" ? "instance key (x-api-key)" : "bearer token (Authorization: Bearer)";
|
|
11
|
+
}
|
|
5
12
|
export async function fetchExportZip(opts) {
|
|
6
13
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
7
14
|
const baseUrl = opts.baseUrl.replace(/\/$/, "");
|
|
15
|
+
const authMode = opts.authMode ?? "bearer";
|
|
16
|
+
const authHeaders = buildAuthHeaders(opts.apiKey, authMode);
|
|
8
17
|
const params = new URLSearchParams();
|
|
9
18
|
if (opts.folder)
|
|
10
19
|
params.set("folder", opts.folder);
|
|
@@ -15,11 +24,12 @@ export async function fetchExportZip(opts) {
|
|
|
15
24
|
if (opts.includeSystem)
|
|
16
25
|
params.set("includeSystem", "true");
|
|
17
26
|
const createRes = await fetchImpl(`${baseUrl}/api/v1/export/download?${params}`, {
|
|
18
|
-
headers:
|
|
27
|
+
headers: authHeaders,
|
|
19
28
|
});
|
|
20
29
|
const created = (await createRes.json());
|
|
21
30
|
if (!createRes.ok || !created.ok) {
|
|
22
|
-
|
|
31
|
+
const authNote = createRes.status === 401 ? ` (auth attempted: ${authModeLabel(authMode)})` : "";
|
|
32
|
+
throw new Error(`hydrateWiki: export create failed: ${createRes.status} ${created.error ?? JSON.stringify(created)}${authNote}`);
|
|
23
33
|
}
|
|
24
34
|
const timeoutMs = opts.timeoutMs ?? 15 * 60_000;
|
|
25
35
|
const pollIntervalMs = opts.pollIntervalMs ?? 2000;
|
|
@@ -30,11 +40,12 @@ export async function fetchExportZip(opts) {
|
|
|
30
40
|
throw new Error("hydrateWiki: export job timed out");
|
|
31
41
|
}
|
|
32
42
|
const pollRes = await fetchImpl(`${baseUrl}/api/v1/jobs/${created.jobId}`, {
|
|
33
|
-
headers:
|
|
43
|
+
headers: authHeaders,
|
|
34
44
|
});
|
|
35
45
|
const body = (await pollRes.json());
|
|
36
46
|
if (!pollRes.ok || !body.ok) {
|
|
37
|
-
|
|
47
|
+
const authNote = pollRes.status === 401 ? ` (auth attempted: ${authModeLabel(authMode)})` : "";
|
|
48
|
+
throw new Error(`hydrateWiki: job poll failed: ${pollRes.status}${authNote}`);
|
|
38
49
|
}
|
|
39
50
|
job = body.job;
|
|
40
51
|
if (job.status === "done")
|
|
@@ -48,10 +59,11 @@ export async function fetchExportZip(opts) {
|
|
|
48
59
|
throw new Error("hydrateWiki: export job reported done with no result");
|
|
49
60
|
}
|
|
50
61
|
const downloadRes = await fetchImpl(`${baseUrl}${job.result.downloadUrl}`, {
|
|
51
|
-
headers:
|
|
62
|
+
headers: authHeaders,
|
|
52
63
|
});
|
|
53
64
|
if (!downloadRes.ok) {
|
|
54
|
-
|
|
65
|
+
const authNote = downloadRes.status === 401 ? ` (auth attempted: ${authModeLabel(authMode)})` : "";
|
|
66
|
+
throw new Error(`hydrateWiki: export download failed: ${downloadRes.status}${authNote}`);
|
|
55
67
|
}
|
|
56
68
|
const arrayBuffer = await downloadRes.arrayBuffer();
|
|
57
69
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrateWiki.js","sourceRoot":"","sources":["../../src/tools/hydrateWiki.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"hydrateWiki.js","sourceRoot":"","sources":["../../src/tools/hydrateWiki.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/pushWiki.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CheckoutManifest } from "./checkoutWiki.js";
|
|
2
|
+
import { type AuthMode } from "./hydrateWiki.js";
|
|
2
3
|
export interface BuildPushZipOptions {
|
|
3
4
|
includeSystem?: boolean;
|
|
4
5
|
}
|
|
@@ -6,6 +7,8 @@ export declare function buildZipFromLocalWiki(wikiDir: string, manifest: Checkou
|
|
|
6
7
|
export interface StalenessCheckOptions {
|
|
7
8
|
baseUrl: string;
|
|
8
9
|
apiKey: string;
|
|
10
|
+
/** Defaults to "bearer" — a real user has a PAT, not the instance's shared key (GH #748). */
|
|
11
|
+
authMode?: AuthMode;
|
|
9
12
|
fetchImpl?: typeof fetch;
|
|
10
13
|
}
|
|
11
14
|
export interface StalenessResult {
|
|
@@ -29,6 +32,8 @@ export interface JobResult {
|
|
|
29
32
|
export interface PushRunOptions {
|
|
30
33
|
baseUrl: string;
|
|
31
34
|
apiKey: string;
|
|
35
|
+
/** Defaults to "bearer" — a real user has a PAT, not the instance's shared key (GH #748). */
|
|
36
|
+
authMode?: AuthMode;
|
|
32
37
|
execute: boolean;
|
|
33
38
|
confirmWholeWiki?: boolean;
|
|
34
39
|
includeSystem?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushWiki.d.ts","sourceRoot":"","sources":["../../src/tools/pushWiki.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pushWiki.d.ts","sourceRoot":"","sources":["../../src/tools/pushWiki.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiBnF,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAe1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6C9G"}
|
package/dist/tools/pushWiki.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import AdmZip from "adm-zip";
|
|
2
2
|
import { LocalClient } from "../storage/client.js";
|
|
3
|
-
import { fetchExportZip } from "./hydrateWiki.js";
|
|
3
|
+
import { fetchExportZip, buildAuthHeaders } from "./hydrateWiki.js";
|
|
4
4
|
/**
|
|
5
5
|
* GH #738 (local-first phase 4 follow-up): `push` — mirror a local checkout
|
|
6
6
|
* back to the cloud instance it came from. Builds a ZIP from `WIKI_DIR`,
|
|
@@ -51,6 +51,7 @@ export async function checkStaleSinceCheckout(manifest, opts) {
|
|
|
51
51
|
const zip = await fetchExportZip({
|
|
52
52
|
baseUrl: opts.baseUrl,
|
|
53
53
|
apiKey: opts.apiKey,
|
|
54
|
+
authMode: opts.authMode,
|
|
54
55
|
folder: manifest.folder,
|
|
55
56
|
tags: manifest.tags,
|
|
56
57
|
since: manifest.exportedAt,
|
|
@@ -65,6 +66,9 @@ export async function checkStaleSinceCheckout(manifest, opts) {
|
|
|
65
66
|
export async function pushZipToCloud(zipBuffer, opts) {
|
|
66
67
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
67
68
|
const baseUrl = opts.baseUrl.replace(/\/$/, "");
|
|
69
|
+
const authMode = opts.authMode ?? "bearer";
|
|
70
|
+
const authHeaders = buildAuthHeaders(opts.apiKey, authMode);
|
|
71
|
+
const authNote = (status) => (status === 401 ? ` (auth attempted: ${authMode === "instance-key" ? "instance key (x-api-key)" : "bearer token (Authorization: Bearer)"})` : "");
|
|
68
72
|
const params = new URLSearchParams();
|
|
69
73
|
params.set("mode", "replace");
|
|
70
74
|
params.set("execute", String(opts.execute));
|
|
@@ -74,12 +78,12 @@ export async function pushZipToCloud(zipBuffer, opts) {
|
|
|
74
78
|
params.set("confirmWholeWiki", "true");
|
|
75
79
|
const createRes = await fetchImpl(`${baseUrl}/api/v1/import-zip/upload?${params}`, {
|
|
76
80
|
method: "POST",
|
|
77
|
-
headers: {
|
|
81
|
+
headers: { ...authHeaders, "Content-Type": "application/zip" },
|
|
78
82
|
body: zipBuffer,
|
|
79
83
|
});
|
|
80
84
|
const created = (await createRes.json());
|
|
81
85
|
if (!createRes.ok || !created.ok || !created.jobId) {
|
|
82
|
-
throw new Error(`pushWiki: import upload failed: ${createRes.status} ${created.error ?? JSON.stringify(created)}`);
|
|
86
|
+
throw new Error(`pushWiki: import upload failed: ${createRes.status} ${created.error ?? JSON.stringify(created)}${authNote(createRes.status)}`);
|
|
83
87
|
}
|
|
84
88
|
const timeoutMs = opts.timeoutMs ?? 15 * 60_000;
|
|
85
89
|
const pollIntervalMs = opts.pollIntervalMs ?? 2000;
|
|
@@ -89,11 +93,11 @@ export async function pushZipToCloud(zipBuffer, opts) {
|
|
|
89
93
|
throw new Error("pushWiki: import job timed out");
|
|
90
94
|
}
|
|
91
95
|
const pollRes = await fetchImpl(`${baseUrl}/api/v1/jobs/${created.jobId}`, {
|
|
92
|
-
headers:
|
|
96
|
+
headers: authHeaders,
|
|
93
97
|
});
|
|
94
98
|
const body = (await pollRes.json());
|
|
95
99
|
if (!pollRes.ok || !body.ok) {
|
|
96
|
-
throw new Error(`pushWiki: job poll failed: ${pollRes.status}`);
|
|
100
|
+
throw new Error(`pushWiki: job poll failed: ${pollRes.status}${authNote(pollRes.status)}`);
|
|
97
101
|
}
|
|
98
102
|
if (body.job.status === "done") {
|
|
99
103
|
if (!body.job.result)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushWiki.js","sourceRoot":"","sources":["../../src/tools/pushWiki.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pushWiki.js","sourceRoot":"","sources":["../../src/tools/pushWiki.ts"],"names":[],"mappings":"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"}
|