brains-mcp 1.80.2 → 1.81.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.
- package/dist/access/projectShares.d.ts +21 -5
- package/dist/access/projectShares.d.ts.map +1 -1
- package/dist/access/projectShares.js +34 -9
- package/dist/access/projectShares.js.map +1 -1
- package/dist/access/sharedInstructionsNote.d.ts +6 -1
- package/dist/access/sharedInstructionsNote.d.ts.map +1 -1
- package/dist/access/sharedInstructionsNote.js +11 -5
- package/dist/access/sharedInstructionsNote.js.map +1 -1
- package/dist/httpServer.js +1 -1
- package/dist/httpServer.js.map +1 -1
- package/dist/storage/client.d.ts +13 -6
- package/dist/storage/client.d.ts.map +1 -1
- package/dist/storage/client.js +10 -6
- package/dist/storage/client.js.map +1 -1
- package/dist/tools/shareProject.d.ts +10 -5
- package/dist/tools/shareProject.d.ts.map +1 -1
- package/dist/tools/shareProject.js +14 -6
- package/dist/tools/shareProject.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,9 +8,19 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Table: scripts/project-shares.sql
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* Grant levels for project_shares.permissions (GH #798 / BRA-5160, successor
|
|
13
|
+
* to #499/BRA-5128). 'read_write' is the historical default and the only
|
|
14
|
+
* value that ever existed before this change.
|
|
15
|
+
*/
|
|
16
|
+
export declare const PROJECT_SHARE_PERMISSIONS: readonly ["read_write", "read_only"];
|
|
17
|
+
export type ProjectSharePermission = (typeof PROJECT_SHARE_PERMISSIONS)[number];
|
|
18
|
+
export declare function isProjectSharePermission(value: unknown): value is ProjectSharePermission;
|
|
11
19
|
export interface ProjectShareGrant {
|
|
12
20
|
owner_subject: string;
|
|
13
21
|
project_path: string;
|
|
22
|
+
/** Absent only for rows predating this column's enforcement — treat as 'read_write'. */
|
|
23
|
+
permissions?: ProjectSharePermission;
|
|
14
24
|
}
|
|
15
25
|
/**
|
|
16
26
|
* Master toggle for cross-account project sharing (BRA-3611 / GH #685).
|
|
@@ -67,17 +77,23 @@ export declare function upsertProjectShare(params: {
|
|
|
67
77
|
project_path: string;
|
|
68
78
|
grantee_subject: string;
|
|
69
79
|
enabled: boolean;
|
|
80
|
+
permissions?: ProjectSharePermission;
|
|
70
81
|
}): Promise<void>;
|
|
71
82
|
/** Drop cached grants for one grantee, or all of them when called bare. */
|
|
72
83
|
export declare function invalidateGrantCache(granteeSubject?: string): void;
|
|
73
84
|
export declare function listActiveGrantsForGrantee(granteeSubject: string): Promise<ProjectShareGrant[]>;
|
|
85
|
+
export interface ActiveGrantee {
|
|
86
|
+
subject: string;
|
|
87
|
+
permissions: ProjectSharePermission;
|
|
88
|
+
}
|
|
74
89
|
/**
|
|
75
|
-
* Returns
|
|
76
|
-
*
|
|
77
|
-
* Workspace" note in project instructions whenever a grant is created
|
|
78
|
-
* revoked (BRA-388)
|
|
90
|
+
* Returns everyone who currently holds an active (non-revoked) grant on the
|
|
91
|
+
* given owner+project_path, with their grant level. Used to re-render the
|
|
92
|
+
* "Shared Workspace" note in project instructions whenever a grant is created
|
|
93
|
+
* or revoked (BRA-388), so the note can name a grant read-only (GH #798 /
|
|
94
|
+
* BRA-5160) rather than implying every collaborator has read+write.
|
|
79
95
|
*/
|
|
80
|
-
export declare function listActiveGranteesForProject(ownerSubject: string, projectPath: string): Promise<
|
|
96
|
+
export declare function listActiveGranteesForProject(ownerSubject: string, projectPath: string): Promise<ActiveGrantee[]>;
|
|
81
97
|
/**
|
|
82
98
|
* Best-effort reverse lookup of a Supabase user's email from their subject/UUID.
|
|
83
99
|
* Returns null if unavailable — callers should fall back to the raw subject.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectShares.d.ts","sourceRoot":"","sources":["../../src/access/projectShares.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"projectShares.d.ts","sourceRoot":"","sources":["../../src/access/projectShares.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,sCAAuC,CAAC;AAC9E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAmBD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,GAAG,IAAI,CAEvD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;AAE5E,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED,yEAAyE;AACzE,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD;AAkBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BjF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ChB;AAwBD,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED,wBAAsB,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA+CrG;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,EAAE,CAAC,CAmB1B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASjF"}
|
|
@@ -8,6 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Table: scripts/project-shares.sql
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* Grant levels for project_shares.permissions (GH #798 / BRA-5160, successor
|
|
13
|
+
* to #499/BRA-5128). 'read_write' is the historical default and the only
|
|
14
|
+
* value that ever existed before this change.
|
|
15
|
+
*/
|
|
16
|
+
export const PROJECT_SHARE_PERMISSIONS = ["read_write", "read_only"];
|
|
17
|
+
const DEFAULT_PROJECT_SHARE_PERMISSION = "read_write";
|
|
18
|
+
export function isProjectSharePermission(value) {
|
|
19
|
+
return typeof value === "string" && PROJECT_SHARE_PERMISSIONS.includes(value);
|
|
20
|
+
}
|
|
11
21
|
/**
|
|
12
22
|
* Master toggle for cross-account project sharing (BRA-3611 / GH #685).
|
|
13
23
|
* Default off. Table presence used to be the de facto flag — creating
|
|
@@ -146,10 +156,14 @@ export async function upsertProjectShare(params) {
|
|
|
146
156
|
if (!isProjectSharingEnabled()) {
|
|
147
157
|
throw new Error("Project sharing is disabled (ENABLE_PROJECT_SHARING is not set to 'true')");
|
|
148
158
|
}
|
|
159
|
+
if (params.permissions !== undefined && !isProjectSharePermission(params.permissions)) {
|
|
160
|
+
throw new Error(`Invalid permissions '${params.permissions}' — must be one of: ${PROJECT_SHARE_PERMISSIONS.join(", ")}`);
|
|
161
|
+
}
|
|
149
162
|
const cfg = config();
|
|
150
163
|
if (!cfg)
|
|
151
164
|
throw new Error("share_project requires Supabase to be configured");
|
|
152
165
|
const { supabaseUrl, serviceRoleKey } = cfg;
|
|
166
|
+
const id = `${params.owner_subject}:${params.project_path}:${params.grantee_subject}`;
|
|
153
167
|
const now = new Date().toISOString();
|
|
154
168
|
const url = `${supabaseUrl}/rest/v1/project_shares` +
|
|
155
169
|
`?on_conflict=owner_subject,project_path,grantee_subject`;
|
|
@@ -157,11 +171,16 @@ export async function upsertProjectShare(params) {
|
|
|
157
171
|
method: "POST",
|
|
158
172
|
headers: headers(serviceRoleKey, { prefer: "resolution=merge-duplicates,return=minimal" }),
|
|
159
173
|
body: JSON.stringify({
|
|
160
|
-
id
|
|
174
|
+
id,
|
|
161
175
|
owner_subject: params.owner_subject,
|
|
162
176
|
project_path: params.project_path,
|
|
163
177
|
grantee_subject: params.grantee_subject,
|
|
164
|
-
|
|
178
|
+
// Omitted (rather than defaulted) when the caller didn't pass a level:
|
|
179
|
+
// PostgREST's merge-duplicates upsert only touches columns present in
|
|
180
|
+
// the body, so an existing row's permissions survive a revoke/re-grant
|
|
181
|
+
// that doesn't explicitly change them, and a brand-new row still gets
|
|
182
|
+
// the table's 'read_write' DEFAULT on insert.
|
|
183
|
+
...(params.permissions !== undefined ? { permissions: params.permissions } : {}),
|
|
165
184
|
revoked_at: params.enabled ? null : now,
|
|
166
185
|
updated_at: now,
|
|
167
186
|
}),
|
|
@@ -222,7 +241,7 @@ export async function listActiveGrantsForGrantee(granteeSubject) {
|
|
|
222
241
|
const { supabaseUrl, serviceRoleKey } = cfg;
|
|
223
242
|
const url = `${supabaseUrl}/rest/v1/project_shares` +
|
|
224
243
|
`?grantee_subject=eq.${encodeURIComponent(granteeSubject)}&revoked_at=is.null` +
|
|
225
|
-
`&select=owner_subject,project_path`;
|
|
244
|
+
`&select=owner_subject,project_path,permissions`;
|
|
226
245
|
const res = await fetch(url, { headers: headers(serviceRoleKey) });
|
|
227
246
|
if (!res.ok) {
|
|
228
247
|
const body = await res.text().catch(() => "");
|
|
@@ -248,10 +267,11 @@ export async function listActiveGrantsForGrantee(granteeSubject) {
|
|
|
248
267
|
return grants;
|
|
249
268
|
}
|
|
250
269
|
/**
|
|
251
|
-
* Returns
|
|
252
|
-
*
|
|
253
|
-
* Workspace" note in project instructions whenever a grant is created
|
|
254
|
-
* revoked (BRA-388)
|
|
270
|
+
* Returns everyone who currently holds an active (non-revoked) grant on the
|
|
271
|
+
* given owner+project_path, with their grant level. Used to re-render the
|
|
272
|
+
* "Shared Workspace" note in project instructions whenever a grant is created
|
|
273
|
+
* or revoked (BRA-388), so the note can name a grant read-only (GH #798 /
|
|
274
|
+
* BRA-5160) rather than implying every collaborator has read+write.
|
|
255
275
|
*/
|
|
256
276
|
export async function listActiveGranteesForProject(ownerSubject, projectPath) {
|
|
257
277
|
if (!isProjectSharingEnabled())
|
|
@@ -263,12 +283,17 @@ export async function listActiveGranteesForProject(ownerSubject, projectPath) {
|
|
|
263
283
|
const url = `${supabaseUrl}/rest/v1/project_shares` +
|
|
264
284
|
`?owner_subject=eq.${encodeURIComponent(ownerSubject)}` +
|
|
265
285
|
`&project_path=eq.${encodeURIComponent(projectPath)}&revoked_at=is.null` +
|
|
266
|
-
`&select=grantee_subject`;
|
|
286
|
+
`&select=grantee_subject,permissions`;
|
|
267
287
|
const res = await fetch(url, { headers: headers(serviceRoleKey) });
|
|
268
288
|
if (!res.ok)
|
|
269
289
|
return [];
|
|
270
290
|
const rows = (await res.json().catch(() => []));
|
|
271
|
-
|
|
291
|
+
if (!Array.isArray(rows))
|
|
292
|
+
return [];
|
|
293
|
+
return rows.map((r) => ({
|
|
294
|
+
subject: r.grantee_subject,
|
|
295
|
+
permissions: isProjectSharePermission(r.permissions) ? r.permissions : DEFAULT_PROJECT_SHARE_PERMISSION,
|
|
296
|
+
}));
|
|
272
297
|
}
|
|
273
298
|
/**
|
|
274
299
|
* Best-effort reverse lookup of a Supabase user's email from their subject/UUID.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectShares.js","sourceRoot":"","sources":["../../src/access/projectShares.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"projectShares.js","sourceRoot":"","sources":["../../src/access/projectShares.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,16 @@
|
|
|
14
14
|
* When no active collaborators remain, the note is removed entirely.
|
|
15
15
|
*/
|
|
16
16
|
import type { StorageClient } from "../storage/client.js";
|
|
17
|
+
interface CollaboratorLine {
|
|
18
|
+
label: string;
|
|
19
|
+
permissions: "read_write" | "read_only";
|
|
20
|
+
}
|
|
17
21
|
/**
|
|
18
22
|
* Returns updated markdown with the Shared Workspace note applied: replaced
|
|
19
23
|
* in place if present, appended if not, or removed entirely if there are no
|
|
20
24
|
* active collaborators.
|
|
21
25
|
*/
|
|
22
|
-
export declare function applySharedWorkspaceSection(content: string, projectSlug: string, collaborators:
|
|
26
|
+
export declare function applySharedWorkspaceSection(content: string, projectSlug: string, collaborators: CollaboratorLine[]): string;
|
|
23
27
|
export interface SyncSharedInstructionsResult {
|
|
24
28
|
collaborators: string[];
|
|
25
29
|
updated: string[];
|
|
@@ -34,4 +38,5 @@ export interface SyncSharedInstructionsResult {
|
|
|
34
38
|
* operation.
|
|
35
39
|
*/
|
|
36
40
|
export declare function syncSharedInstructionsNote(drive: StorageClient, ownerSubject: string, projectPath: string): Promise<SyncSharedInstructionsResult>;
|
|
41
|
+
export {};
|
|
37
42
|
//# sourceMappingURL=sharedInstructionsNote.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedInstructionsNote.d.ts","sourceRoot":"","sources":["../../src/access/sharedInstructionsNote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sharedInstructionsNote.d.ts","sourceRoot":"","sources":["../../src/access/sharedInstructionsNote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAoB1D,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,YAAY,GAAG,WAAW,CAAC;CACzC;AA4BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,gBAAgB,EAAE,GAChC,MAAM,CAOR;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,4BAA4B,CAAC,CAiCvC"}
|
|
@@ -9,13 +9,15 @@ function projectSlugFromPath(projectPath) {
|
|
|
9
9
|
}
|
|
10
10
|
function buildSection(projectSlug, collaborators) {
|
|
11
11
|
const collaboratorList = collaborators.length
|
|
12
|
-
? collaborators
|
|
12
|
+
? collaborators
|
|
13
|
+
.map((c) => `- ${c.label}${c.permissions === "read_only" ? " (read-only)" : ""}`)
|
|
14
|
+
.join("\n")
|
|
13
15
|
: "- (no active collaborators)";
|
|
14
16
|
return [
|
|
15
17
|
SECTION_START,
|
|
16
18
|
"## Shared Workspace",
|
|
17
19
|
"",
|
|
18
|
-
`This project (\`projects/${projectSlug}/\`) is shared. Active collaborators with
|
|
20
|
+
`This project (\`projects/${projectSlug}/\`) is shared. Active collaborators with access to everything under this folder (read+write unless marked read-only):`,
|
|
19
21
|
"",
|
|
20
22
|
collaboratorList,
|
|
21
23
|
"",
|
|
@@ -52,8 +54,12 @@ export function applySharedWorkspaceSection(content, projectSlug, collaborators)
|
|
|
52
54
|
*/
|
|
53
55
|
export async function syncSharedInstructionsNote(drive, ownerSubject, projectPath) {
|
|
54
56
|
const projectSlug = projectSlugFromPath(projectPath);
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
+
const activeGrantees = await listActiveGranteesForProject(ownerSubject, projectPath);
|
|
58
|
+
const collaboratorLines = await Promise.all(activeGrantees.map(async (g) => ({
|
|
59
|
+
label: (await resolveSubjectEmail(g.subject)) ?? g.subject,
|
|
60
|
+
permissions: g.permissions,
|
|
61
|
+
})));
|
|
62
|
+
const collaborators = collaboratorLines.map((c) => c.label);
|
|
57
63
|
const updated = [];
|
|
58
64
|
const skipped = [];
|
|
59
65
|
for (const platform of INSTRUCTION_PLATFORMS) {
|
|
@@ -63,7 +69,7 @@ export async function syncSharedInstructionsNote(drive, ownerSubject, projectPat
|
|
|
63
69
|
skipped.push(filePath);
|
|
64
70
|
continue;
|
|
65
71
|
}
|
|
66
|
-
const nextContent = applySharedWorkspaceSection(existing.content, projectSlug,
|
|
72
|
+
const nextContent = applySharedWorkspaceSection(existing.content, projectSlug, collaboratorLines);
|
|
67
73
|
if (nextContent === existing.content) {
|
|
68
74
|
skipped.push(filePath);
|
|
69
75
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedInstructionsNote.js","sourceRoot":"","sources":["../../src/access/sharedInstructionsNote.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,aAAa,GAAG,iCAAiC,CAAC;AACxD,MAAM,WAAW,GAAG,+BAA+B,CAAC;AACpD,MAAM,eAAe,GAAG,IAAI,MAAM,CAChC,OAAO,aAAa,aAAa,WAAW,MAAM,EAClD,GAAG,CACJ,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAU,CAAC;AAEzD,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,OAAO,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"sharedInstructionsNote.js","sourceRoot":"","sources":["../../src/access/sharedInstructionsNote.ts"],"names":[],"mappings":"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"}
|
package/dist/httpServer.js
CHANGED
|
@@ -1755,7 +1755,7 @@ export async function startHttpServer(drive, port) {
|
|
|
1755
1755
|
const routes = await Promise.all(grants.map(async (g) => {
|
|
1756
1756
|
const ownerKey = sanitizeSubjectForPath(g.owner_subject);
|
|
1757
1757
|
const ownerScoped = await getOrCreateScopedClient(ownerKey, g.owner_subject);
|
|
1758
|
-
return { prefix: g.project_path, client: ownerScoped, ownerSubject: g.owner_subject };
|
|
1758
|
+
return { prefix: g.project_path, client: ownerScoped, ownerSubject: g.owner_subject, permissions: g.permissions };
|
|
1759
1759
|
}));
|
|
1760
1760
|
return new GrantAwareStorageClient(ownScoped, routes, auth.subject);
|
|
1761
1761
|
}
|