brains-mcp 1.61.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -0
- package/dist/access/projectShares.d.ts +48 -0
- package/dist/access/projectShares.d.ts.map +1 -0
- package/dist/access/projectShares.js +203 -0
- package/dist/access/projectShares.js.map +1 -0
- package/dist/access/sharedInstructionsNote.d.ts +37 -0
- package/dist/access/sharedInstructionsNote.d.ts.map +1 -0
- package/dist/access/sharedInstructionsNote.js +76 -0
- package/dist/access/sharedInstructionsNote.js.map +1 -0
- package/dist/admin/seedUsers.d.ts +23 -0
- package/dist/admin/seedUsers.d.ts.map +1 -0
- package/dist/admin/seedUsers.js +168 -0
- package/dist/admin/seedUsers.js.map +1 -0
- package/dist/api/openapi.d.ts +2 -0
- package/dist/api/openapi.d.ts.map +1 -0
- package/dist/api/openapi.js +942 -0
- package/dist/api/openapi.js.map +1 -0
- package/dist/auth/clientStore.d.ts +43 -0
- package/dist/auth/clientStore.d.ts.map +1 -0
- package/dist/auth/clientStore.js +168 -0
- package/dist/auth/clientStore.js.map +1 -0
- package/dist/auth/deleteAccount.d.ts +34 -0
- package/dist/auth/deleteAccount.d.ts.map +1 -0
- package/dist/auth/deleteAccount.js +203 -0
- package/dist/auth/deleteAccount.js.map +1 -0
- package/dist/auth/oauth.d.ts +118 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +491 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/patStore.d.ts +87 -0
- package/dist/auth/patStore.d.ts.map +1 -0
- package/dist/auth/patStore.js +308 -0
- package/dist/auth/patStore.js.map +1 -0
- package/dist/auth/supabase.d.ts +15 -0
- package/dist/auth/supabase.d.ts.map +1 -0
- package/dist/auth/supabase.js +66 -0
- package/dist/auth/supabase.js.map +1 -0
- package/dist/auth/tokenStore.d.ts +73 -0
- package/dist/auth/tokenStore.d.ts.map +1 -0
- package/dist/auth/tokenStore.js +261 -0
- package/dist/auth/tokenStore.js.map +1 -0
- package/dist/backup/drive.d.ts +24 -0
- package/dist/backup/drive.d.ts.map +1 -0
- package/dist/backup/drive.js +70 -0
- package/dist/backup/drive.js.map +1 -0
- package/dist/billing/tierStore.d.ts +59 -0
- package/dist/billing/tierStore.d.ts.map +1 -0
- package/dist/billing/tierStore.js +152 -0
- package/dist/billing/tierStore.js.map +1 -0
- package/dist/digest/activityDigest.d.ts +32 -0
- package/dist/digest/activityDigest.d.ts.map +1 -0
- package/dist/digest/activityDigest.js +299 -0
- package/dist/digest/activityDigest.js.map +1 -0
- package/dist/digest/digestCron.d.ts +40 -0
- package/dist/digest/digestCron.d.ts.map +1 -0
- package/dist/digest/digestCron.js +146 -0
- package/dist/digest/digestCron.js.map +1 -0
- package/dist/digest/digestPreferences.d.ts +25 -0
- package/dist/digest/digestPreferences.d.ts.map +1 -0
- package/dist/digest/digestPreferences.js +79 -0
- package/dist/digest/digestPreferences.js.map +1 -0
- package/dist/digest/emailSender.d.ts +20 -0
- package/dist/digest/emailSender.d.ts.map +1 -0
- package/dist/digest/emailSender.js +35 -0
- package/dist/digest/emailSender.js.map +1 -0
- package/dist/drive/client.d.ts +43 -0
- package/dist/drive/client.d.ts.map +1 -0
- package/dist/drive/client.js +282 -0
- package/dist/drive/client.js.map +1 -0
- package/dist/drive/errors.d.ts +27 -0
- package/dist/drive/errors.d.ts.map +1 -0
- package/dist/drive/errors.js +51 -0
- package/dist/drive/errors.js.map +1 -0
- package/dist/drive/fileCache.d.ts +22 -0
- package/dist/drive/fileCache.d.ts.map +1 -0
- package/dist/drive/fileCache.js +57 -0
- package/dist/drive/fileCache.js.map +1 -0
- package/dist/governance/accessControl.d.ts +87 -0
- package/dist/governance/accessControl.d.ts.map +1 -0
- package/dist/governance/accessControl.js +179 -0
- package/dist/governance/accessControl.js.map +1 -0
- package/dist/html/components.d.ts +8 -0
- package/dist/html/components.d.ts.map +1 -0
- package/dist/html/components.js +19 -0
- package/dist/html/components.js.map +1 -0
- package/dist/html/layout.d.ts +7 -0
- package/dist/html/layout.d.ts.map +1 -0
- package/dist/html/layout.js +24 -0
- package/dist/html/layout.js.map +1 -0
- package/dist/html/metricsUi.d.ts +8 -0
- package/dist/html/metricsUi.d.ts.map +1 -0
- package/dist/html/metricsUi.js +271 -0
- package/dist/html/metricsUi.js.map +1 -0
- package/dist/httpServer.d.ts +19 -0
- package/dist/httpServer.d.ts.map +1 -0
- package/dist/httpServer.js +3913 -0
- package/dist/httpServer.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/asyncJobRegistry.d.ts +30 -0
- package/dist/jobs/asyncJobRegistry.d.ts.map +1 -0
- package/dist/jobs/asyncJobRegistry.js +70 -0
- package/dist/jobs/asyncJobRegistry.js.map +1 -0
- package/dist/observability/metricsQuery.d.ts +41 -0
- package/dist/observability/metricsQuery.d.ts.map +1 -0
- package/dist/observability/metricsQuery.js +106 -0
- package/dist/observability/metricsQuery.js.map +1 -0
- package/dist/observability/relevanceSignal.d.ts +26 -0
- package/dist/observability/relevanceSignal.d.ts.map +1 -0
- package/dist/observability/relevanceSignal.js +95 -0
- package/dist/observability/relevanceSignal.js.map +1 -0
- package/dist/observability/requestEvents.d.ts +31 -0
- package/dist/observability/requestEvents.d.ts.map +1 -0
- package/dist/observability/requestEvents.js +54 -0
- package/dist/observability/requestEvents.js.map +1 -0
- package/dist/observability/slowQueryAlert.d.ts +25 -0
- package/dist/observability/slowQueryAlert.d.ts.map +1 -0
- package/dist/observability/slowQueryAlert.js +67 -0
- package/dist/observability/slowQueryAlert.js.map +1 -0
- package/dist/observability/zeroResultTriage.d.ts +22 -0
- package/dist/observability/zeroResultTriage.d.ts.map +1 -0
- package/dist/observability/zeroResultTriage.js +116 -0
- package/dist/observability/zeroResultTriage.js.map +1 -0
- package/dist/search/embeddings.d.ts +31 -0
- package/dist/search/embeddings.d.ts.map +1 -0
- package/dist/search/embeddings.js +91 -0
- package/dist/search/embeddings.js.map +1 -0
- package/dist/search/fileWatcher.d.ts +28 -0
- package/dist/search/fileWatcher.d.ts.map +1 -0
- package/dist/search/fileWatcher.js +103 -0
- package/dist/search/fileWatcher.js.map +1 -0
- package/dist/search/hotQueryCache.d.ts +31 -0
- package/dist/search/hotQueryCache.d.ts.map +1 -0
- package/dist/search/hotQueryCache.js +103 -0
- package/dist/search/hotQueryCache.js.map +1 -0
- package/dist/search/postgresIndex.d.ts +439 -0
- package/dist/search/postgresIndex.d.ts.map +1 -0
- package/dist/search/postgresIndex.js +1610 -0
- package/dist/search/postgresIndex.js.map +1 -0
- package/dist/search/sqliteIndex.d.ts +66 -0
- package/dist/search/sqliteIndex.d.ts.map +1 -0
- package/dist/search/sqliteIndex.js +342 -0
- package/dist/search/sqliteIndex.js.map +1 -0
- package/dist/server.d.ts +43 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +532 -0
- package/dist/server.js.map +1 -0
- package/dist/session/bundle.d.ts +53 -0
- package/dist/session/bundle.d.ts.map +1 -0
- package/dist/session/bundle.js +97 -0
- package/dist/session/bundle.js.map +1 -0
- package/dist/storage/client.d.ts +157 -0
- package/dist/storage/client.d.ts.map +1 -0
- package/dist/storage/client.js +825 -0
- package/dist/storage/client.js.map +1 -0
- package/dist/tools/addWebhookPattern.d.ts +15 -0
- package/dist/tools/addWebhookPattern.d.ts.map +1 -0
- package/dist/tools/addWebhookPattern.js +15 -0
- package/dist/tools/addWebhookPattern.js.map +1 -0
- package/dist/tools/appendLog.d.ts +18 -0
- package/dist/tools/appendLog.d.ts.map +1 -0
- package/dist/tools/appendLog.js +18 -0
- package/dist/tools/appendLog.js.map +1 -0
- package/dist/tools/auditIndex.d.ts +15 -0
- package/dist/tools/auditIndex.d.ts.map +1 -0
- package/dist/tools/auditIndex.js +165 -0
- package/dist/tools/auditIndex.js.map +1 -0
- package/dist/tools/batchDeletePages.d.ts +18 -0
- package/dist/tools/batchDeletePages.d.ts.map +1 -0
- package/dist/tools/batchDeletePages.js +143 -0
- package/dist/tools/batchDeletePages.js.map +1 -0
- package/dist/tools/coerce.d.ts +3 -0
- package/dist/tools/coerce.d.ts.map +1 -0
- package/dist/tools/coerce.js +12 -0
- package/dist/tools/coerce.js.map +1 -0
- package/dist/tools/createPage.d.ts +24 -0
- package/dist/tools/createPage.d.ts.map +1 -0
- package/dist/tools/createPage.js +99 -0
- package/dist/tools/createPage.js.map +1 -0
- package/dist/tools/createPages.d.ts +51 -0
- package/dist/tools/createPages.d.ts.map +1 -0
- package/dist/tools/createPages.js +91 -0
- package/dist/tools/createPages.js.map +1 -0
- package/dist/tools/deletePage.d.ts +19 -0
- package/dist/tools/deletePage.d.ts.map +1 -0
- package/dist/tools/deletePage.js +127 -0
- package/dist/tools/deletePage.js.map +1 -0
- package/dist/tools/exportWiki.d.ts +48 -0
- package/dist/tools/exportWiki.d.ts.map +1 -0
- package/dist/tools/exportWiki.js +233 -0
- package/dist/tools/exportWiki.js.map +1 -0
- package/dist/tools/extractLinks.d.ts +14 -0
- package/dist/tools/extractLinks.d.ts.map +1 -0
- package/dist/tools/extractLinks.js +25 -0
- package/dist/tools/extractLinks.js.map +1 -0
- package/dist/tools/generateClaudeInstructions.d.ts +27 -0
- package/dist/tools/generateClaudeInstructions.d.ts.map +1 -0
- package/dist/tools/generateClaudeInstructions.js +263 -0
- package/dist/tools/generateClaudeInstructions.js.map +1 -0
- package/dist/tools/generateGptInstructions.d.ts +27 -0
- package/dist/tools/generateGptInstructions.d.ts.map +1 -0
- package/dist/tools/generateGptInstructions.js +208 -0
- package/dist/tools/generateGptInstructions.js.map +1 -0
- package/dist/tools/getBacklinks.d.ts +12 -0
- package/dist/tools/getBacklinks.d.ts.map +1 -0
- package/dist/tools/getBacklinks.js +13 -0
- package/dist/tools/getBacklinks.js.map +1 -0
- package/dist/tools/getRelated.d.ts +12 -0
- package/dist/tools/getRelated.d.ts.map +1 -0
- package/dist/tools/getRelated.js +13 -0
- package/dist/tools/getRelated.js.map +1 -0
- package/dist/tools/healthCheck.d.ts +5 -0
- package/dist/tools/healthCheck.d.ts.map +1 -0
- package/dist/tools/healthCheck.js +167 -0
- package/dist/tools/healthCheck.js.map +1 -0
- package/dist/tools/importBrainSource.d.ts +36 -0
- package/dist/tools/importBrainSource.d.ts.map +1 -0
- package/dist/tools/importBrainSource.js +314 -0
- package/dist/tools/importBrainSource.js.map +1 -0
- package/dist/tools/importWikiZip.d.ts +60 -0
- package/dist/tools/importWikiZip.d.ts.map +1 -0
- package/dist/tools/importWikiZip.js +379 -0
- package/dist/tools/importWikiZip.js.map +1 -0
- package/dist/tools/initProject.d.ts +34 -0
- package/dist/tools/initProject.d.ts.map +1 -0
- package/dist/tools/initProject.js +443 -0
- package/dist/tools/initProject.js.map +1 -0
- package/dist/tools/instructionContext.d.ts +60 -0
- package/dist/tools/instructionContext.d.ts.map +1 -0
- package/dist/tools/instructionContext.js +210 -0
- package/dist/tools/instructionContext.js.map +1 -0
- package/dist/tools/listArchivedPages.d.ts +17 -0
- package/dist/tools/listArchivedPages.d.ts.map +1 -0
- package/dist/tools/listArchivedPages.js +51 -0
- package/dist/tools/listArchivedPages.js.map +1 -0
- package/dist/tools/listPages.d.ts +28 -0
- package/dist/tools/listPages.d.ts.map +1 -0
- package/dist/tools/listPages.js +166 -0
- package/dist/tools/listPages.js.map +1 -0
- package/dist/tools/listWebhooks.d.ts +7 -0
- package/dist/tools/listWebhooks.d.ts.map +1 -0
- package/dist/tools/listWebhooks.js +10 -0
- package/dist/tools/listWebhooks.js.map +1 -0
- package/dist/tools/movePage.d.ts +18 -0
- package/dist/tools/movePage.d.ts.map +1 -0
- package/dist/tools/movePage.js +182 -0
- package/dist/tools/movePage.js.map +1 -0
- package/dist/tools/pageHistory.d.ts +36 -0
- package/dist/tools/pageHistory.d.ts.map +1 -0
- package/dist/tools/pageHistory.js +60 -0
- package/dist/tools/pageHistory.js.map +1 -0
- package/dist/tools/patchPage.d.ts +141 -0
- package/dist/tools/patchPage.d.ts.map +1 -0
- package/dist/tools/patchPage.js +287 -0
- package/dist/tools/patchPage.js.map +1 -0
- package/dist/tools/pullSessionBundle.d.ts +34 -0
- package/dist/tools/pullSessionBundle.d.ts.map +1 -0
- package/dist/tools/pullSessionBundle.js +432 -0
- package/dist/tools/pullSessionBundle.js.map +1 -0
- package/dist/tools/purgeWiki.d.ts +23 -0
- package/dist/tools/purgeWiki.d.ts.map +1 -0
- package/dist/tools/purgeWiki.js +113 -0
- package/dist/tools/purgeWiki.js.map +1 -0
- package/dist/tools/pushSessionBundle.d.ts +139 -0
- package/dist/tools/pushSessionBundle.d.ts.map +1 -0
- package/dist/tools/pushSessionBundle.js +282 -0
- package/dist/tools/pushSessionBundle.js.map +1 -0
- package/dist/tools/readGovernanceAudit.d.ts +17 -0
- package/dist/tools/readGovernanceAudit.d.ts.map +1 -0
- package/dist/tools/readGovernanceAudit.js +21 -0
- package/dist/tools/readGovernanceAudit.js.map +1 -0
- package/dist/tools/readPage.d.ts +13 -0
- package/dist/tools/readPage.d.ts.map +1 -0
- package/dist/tools/readPage.js +46 -0
- package/dist/tools/readPage.js.map +1 -0
- package/dist/tools/removeWebhook.d.ts +14 -0
- package/dist/tools/removeWebhook.d.ts.map +1 -0
- package/dist/tools/removeWebhook.js +12 -0
- package/dist/tools/removeWebhook.js.map +1 -0
- package/dist/tools/resolveProject.d.ts +58 -0
- package/dist/tools/resolveProject.d.ts.map +1 -0
- package/dist/tools/resolveProject.js +175 -0
- package/dist/tools/resolveProject.js.map +1 -0
- package/dist/tools/restorePage.d.ts +47 -0
- package/dist/tools/restorePage.d.ts.map +1 -0
- package/dist/tools/restorePage.js +111 -0
- package/dist/tools/restorePage.js.map +1 -0
- package/dist/tools/searchPages.d.ts +28 -0
- package/dist/tools/searchPages.d.ts.map +1 -0
- package/dist/tools/searchPages.js +372 -0
- package/dist/tools/searchPages.js.map +1 -0
- package/dist/tools/setWebhook.d.ts +30 -0
- package/dist/tools/setWebhook.d.ts.map +1 -0
- package/dist/tools/setWebhook.js +30 -0
- package/dist/tools/setWebhook.js.map +1 -0
- package/dist/tools/shareProject.d.ts +25 -0
- package/dist/tools/shareProject.d.ts.map +1 -0
- package/dist/tools/shareProject.js +56 -0
- package/dist/tools/shareProject.js.map +1 -0
- package/dist/tools/suggestLinks.d.ts +29 -0
- package/dist/tools/suggestLinks.d.ts.map +1 -0
- package/dist/tools/suggestLinks.js +214 -0
- package/dist/tools/suggestLinks.js.map +1 -0
- package/dist/tools/updatePage.d.ts +27 -0
- package/dist/tools/updatePage.d.ts.map +1 -0
- package/dist/tools/updatePage.js +118 -0
- package/dist/tools/updatePage.js.map +1 -0
- package/dist/webhooks/dispatch.d.ts +49 -0
- package/dist/webhooks/dispatch.d.ts.map +1 -0
- package/dist/webhooks/dispatch.js +159 -0
- package/dist/webhooks/dispatch.js.map +1 -0
- package/dist/webhooks/webhookRules.d.ts +34 -0
- package/dist/webhooks/webhookRules.d.ts.map +1 -0
- package/dist/webhooks/webhookRules.js +129 -0
- package/dist/webhooks/webhookRules.js.map +1 -0
- package/dist/wiki/frontmatter.d.ts +45 -0
- package/dist/wiki/frontmatter.d.ts.map +1 -0
- package/dist/wiki/frontmatter.js +68 -0
- package/dist/wiki/frontmatter.js.map +1 -0
- package/dist/wiki/index.d.ts +22 -0
- package/dist/wiki/index.d.ts.map +1 -0
- package/dist/wiki/index.js +203 -0
- package/dist/wiki/index.js.map +1 -0
- package/dist/wiki/ingestPolicy.d.ts +18 -0
- package/dist/wiki/ingestPolicy.d.ts.map +1 -0
- package/dist/wiki/ingestPolicy.js +64 -0
- package/dist/wiki/ingestPolicy.js.map +1 -0
- package/dist/wiki/layoutLint.d.ts +51 -0
- package/dist/wiki/layoutLint.d.ts.map +1 -0
- package/dist/wiki/layoutLint.js +146 -0
- package/dist/wiki/layoutLint.js.map +1 -0
- package/dist/wiki/links.d.ts +6 -0
- package/dist/wiki/links.d.ts.map +1 -0
- package/dist/wiki/links.js +45 -0
- package/dist/wiki/links.js.map +1 -0
- package/dist/wiki/log.d.ts +58 -0
- package/dist/wiki/log.d.ts.map +1 -0
- package/dist/wiki/log.js +126 -0
- package/dist/wiki/log.js.map +1 -0
- package/dist/wiki/path.d.ts +8 -0
- package/dist/wiki/path.d.ts.map +1 -0
- package/dist/wiki/path.js +25 -0
- package/dist/wiki/path.js.map +1 -0
- package/dist/wiki/storageLimits.d.ts +163 -0
- package/dist/wiki/storageLimits.d.ts.map +1 -0
- package/dist/wiki/storageLimits.js +281 -0
- package/dist/wiki/storageLimits.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type StorageClient } from "../storage/client.js";
|
|
3
|
+
export declare const pushSessionBundleJsonSchema: z.ZodObject<{
|
|
4
|
+
bundle: z.ZodOptional<z.ZodString>;
|
|
5
|
+
manifest: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
6
|
+
name: z.ZodString;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
name: string;
|
|
9
|
+
}, {
|
|
10
|
+
name: string;
|
|
11
|
+
}>, "many">, {
|
|
12
|
+
name: string;
|
|
13
|
+
}[], unknown>>;
|
|
14
|
+
pages: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
15
|
+
name: z.ZodString;
|
|
16
|
+
content: z.ZodString;
|
|
17
|
+
revision: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
name: string;
|
|
20
|
+
content: string;
|
|
21
|
+
revision?: string | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
name: string;
|
|
24
|
+
content: string;
|
|
25
|
+
revision?: string | undefined;
|
|
26
|
+
}>, "many">, {
|
|
27
|
+
name: string;
|
|
28
|
+
content: string;
|
|
29
|
+
revision?: string | undefined;
|
|
30
|
+
}[], unknown>>;
|
|
31
|
+
conflictStrategy: z.ZodDefault<z.ZodEnum<["overwrite", "skip", "error"]>>;
|
|
32
|
+
includeSystem: z.ZodDefault<z.ZodBoolean>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
includeSystem: boolean;
|
|
35
|
+
conflictStrategy: "error" | "skip" | "overwrite";
|
|
36
|
+
pages?: {
|
|
37
|
+
name: string;
|
|
38
|
+
content: string;
|
|
39
|
+
revision?: string | undefined;
|
|
40
|
+
}[] | undefined;
|
|
41
|
+
bundle?: string | undefined;
|
|
42
|
+
manifest?: {
|
|
43
|
+
name: string;
|
|
44
|
+
}[] | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
pages?: unknown;
|
|
47
|
+
includeSystem?: boolean | undefined;
|
|
48
|
+
conflictStrategy?: "error" | "skip" | "overwrite" | undefined;
|
|
49
|
+
bundle?: string | undefined;
|
|
50
|
+
manifest?: unknown;
|
|
51
|
+
}>;
|
|
52
|
+
export declare const pushSessionBundleInputSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
53
|
+
bundle: z.ZodOptional<z.ZodString>;
|
|
54
|
+
manifest: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
55
|
+
name: z.ZodString;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
name: string;
|
|
58
|
+
}, {
|
|
59
|
+
name: string;
|
|
60
|
+
}>, "many">, {
|
|
61
|
+
name: string;
|
|
62
|
+
}[], unknown>>;
|
|
63
|
+
pages: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
|
|
64
|
+
name: z.ZodString;
|
|
65
|
+
content: z.ZodString;
|
|
66
|
+
revision: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
name: string;
|
|
69
|
+
content: string;
|
|
70
|
+
revision?: string | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
name: string;
|
|
73
|
+
content: string;
|
|
74
|
+
revision?: string | undefined;
|
|
75
|
+
}>, "many">, {
|
|
76
|
+
name: string;
|
|
77
|
+
content: string;
|
|
78
|
+
revision?: string | undefined;
|
|
79
|
+
}[], unknown>>;
|
|
80
|
+
conflictStrategy: z.ZodDefault<z.ZodEnum<["overwrite", "skip", "error"]>>;
|
|
81
|
+
includeSystem: z.ZodDefault<z.ZodBoolean>;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
includeSystem: boolean;
|
|
84
|
+
conflictStrategy: "error" | "skip" | "overwrite";
|
|
85
|
+
pages?: {
|
|
86
|
+
name: string;
|
|
87
|
+
content: string;
|
|
88
|
+
revision?: string | undefined;
|
|
89
|
+
}[] | undefined;
|
|
90
|
+
bundle?: string | undefined;
|
|
91
|
+
manifest?: {
|
|
92
|
+
name: string;
|
|
93
|
+
}[] | undefined;
|
|
94
|
+
}, {
|
|
95
|
+
pages?: unknown;
|
|
96
|
+
includeSystem?: boolean | undefined;
|
|
97
|
+
conflictStrategy?: "error" | "skip" | "overwrite" | undefined;
|
|
98
|
+
bundle?: string | undefined;
|
|
99
|
+
manifest?: unknown;
|
|
100
|
+
}>, {
|
|
101
|
+
includeSystem: boolean;
|
|
102
|
+
conflictStrategy: "error" | "skip" | "overwrite";
|
|
103
|
+
pages?: {
|
|
104
|
+
name: string;
|
|
105
|
+
content: string;
|
|
106
|
+
revision?: string | undefined;
|
|
107
|
+
}[] | undefined;
|
|
108
|
+
bundle?: string | undefined;
|
|
109
|
+
manifest?: {
|
|
110
|
+
name: string;
|
|
111
|
+
}[] | undefined;
|
|
112
|
+
}, {
|
|
113
|
+
pages?: unknown;
|
|
114
|
+
includeSystem?: boolean | undefined;
|
|
115
|
+
conflictStrategy?: "error" | "skip" | "overwrite" | undefined;
|
|
116
|
+
bundle?: string | undefined;
|
|
117
|
+
manifest?: unknown;
|
|
118
|
+
}>, {
|
|
119
|
+
includeSystem: boolean;
|
|
120
|
+
conflictStrategy: "error" | "skip" | "overwrite";
|
|
121
|
+
pages?: {
|
|
122
|
+
name: string;
|
|
123
|
+
content: string;
|
|
124
|
+
revision?: string | undefined;
|
|
125
|
+
}[] | undefined;
|
|
126
|
+
bundle?: string | undefined;
|
|
127
|
+
manifest?: {
|
|
128
|
+
name: string;
|
|
129
|
+
}[] | undefined;
|
|
130
|
+
}, {
|
|
131
|
+
pages?: unknown;
|
|
132
|
+
includeSystem?: boolean | undefined;
|
|
133
|
+
conflictStrategy?: "error" | "skip" | "overwrite" | undefined;
|
|
134
|
+
bundle?: string | undefined;
|
|
135
|
+
manifest?: unknown;
|
|
136
|
+
}>;
|
|
137
|
+
export type PushSessionBundleInput = z.infer<typeof pushSessionBundleInputSchema>;
|
|
138
|
+
export declare function pushSessionBundle(drive: StorageClient, input: PushSessionBundleInput, userId?: string): Promise<object>;
|
|
139
|
+
//# sourceMappingURL=pushSessionBundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushSessionBundle.d.ts","sourceRoot":"","sources":["../../src/tools/pushSessionBundle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAiEpF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAEzE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtC,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA+ClF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,sBAAsB,EAC7B,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CA0LjB"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import crypto from "crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { resolveIndexOwnerSubject } from "../storage/client.js";
|
|
4
|
+
import { DriveNotFoundError } from "../drive/errors.js";
|
|
5
|
+
import { tryParseJson } from "./coerce.js";
|
|
6
|
+
import { resolvePageLimitContext, PageLimitError } from "../wiki/storageLimits.js";
|
|
7
|
+
import { parsePage } from "../wiki/frontmatter.js";
|
|
8
|
+
import { dispatchBundleWebhooks } from "../webhooks/dispatch.js";
|
|
9
|
+
import { getPostgresSearchIndex } from "../search/postgresIndex.js";
|
|
10
|
+
import { lintLayoutMany } from "../wiki/layoutLint.js";
|
|
11
|
+
const SYSTEM_FILES = new Set(["index.md", "log.md"]);
|
|
12
|
+
const manifestEntrySchema = z.object({
|
|
13
|
+
name: z.string().min(1),
|
|
14
|
+
});
|
|
15
|
+
const pageEntrySchema = z.object({
|
|
16
|
+
name: z.string().min(1).describe("Wiki path of the page (e.g. 'projects/foo/bar.md')."),
|
|
17
|
+
content: z.string().describe("Full page content to write."),
|
|
18
|
+
revision: z
|
|
19
|
+
.string()
|
|
20
|
+
.optional()
|
|
21
|
+
.describe("Revision of this page from your last pull_session_bundle/read_page call. When provided and the " +
|
|
22
|
+
"page has since been changed by someone else, the write is rejected as a conflict instead of " +
|
|
23
|
+
"overwriting their change. Omit to fall back to conflictStrategy-only behavior."),
|
|
24
|
+
});
|
|
25
|
+
const pushSessionBundleObjectSchema = z
|
|
26
|
+
.object({
|
|
27
|
+
// Bundle mode (legacy): full bundle string + manifest ordering
|
|
28
|
+
bundle: z
|
|
29
|
+
.string()
|
|
30
|
+
.min(1)
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("The (possibly edited) bundle text as returned by pull_session_bundle. " +
|
|
33
|
+
"Use only for small bundles (<20 KB). For larger edits use the 'pages' parameter instead."),
|
|
34
|
+
manifest: z
|
|
35
|
+
.preprocess(tryParseJson, z.array(manifestEntrySchema))
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Names in the same order they appear in the bundle. Required when 'bundle' is provided."),
|
|
38
|
+
// Pages mode (preferred): structured array of {name, content} pairs
|
|
39
|
+
pages: z
|
|
40
|
+
.preprocess(tryParseJson, z.array(pageEntrySchema))
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Preferred alternative to bundle+manifest. Pass only the pages you want to write, " +
|
|
43
|
+
"each as {name, content}. Avoids token-limit issues with large bundles. " +
|
|
44
|
+
"Cannot be combined with 'bundle'."),
|
|
45
|
+
conflictStrategy: z
|
|
46
|
+
.enum(["overwrite", "skip", "error"])
|
|
47
|
+
.default("overwrite")
|
|
48
|
+
.describe("How to handle pages that already exist: 'overwrite' replaces them, 'skip' leaves them unchanged, 'error' returns an error per conflict."),
|
|
49
|
+
includeSystem: z
|
|
50
|
+
.boolean()
|
|
51
|
+
.default(false)
|
|
52
|
+
.describe("If true, allows writing system files (index.md, log.md) when present in the manifest. When false, system file entries are silently skipped."),
|
|
53
|
+
});
|
|
54
|
+
// Exported as the bare ZodObject so zodToJsonSchema emits a top-level
|
|
55
|
+
// `type: "object"` (ZodEffects from .refine() would suppress it and break MCP clients).
|
|
56
|
+
// Runtime cross-field validation lives in pushSessionBundleInputSchema below.
|
|
57
|
+
export const pushSessionBundleJsonSchema = pushSessionBundleObjectSchema;
|
|
58
|
+
export const pushSessionBundleInputSchema = pushSessionBundleObjectSchema
|
|
59
|
+
.refine((data) => {
|
|
60
|
+
const hasBundleMode = data.bundle !== undefined && data.manifest !== undefined;
|
|
61
|
+
const hasPagesMode = data.pages !== undefined && data.pages.length > 0;
|
|
62
|
+
return hasBundleMode || hasPagesMode;
|
|
63
|
+
}, { message: "Provide either (bundle + manifest) or pages — not neither." })
|
|
64
|
+
.refine((data) => !(data.bundle !== undefined && data.pages !== undefined), { message: "bundle and pages are mutually exclusive — use one or the other." });
|
|
65
|
+
const WIKI_PATH_RE = /^[a-zA-Z0-9_/.-]+\.md$/;
|
|
66
|
+
function splitBundleByManifest(bundle, manifest) {
|
|
67
|
+
const result = new Map();
|
|
68
|
+
for (let i = 0; i < manifest.length; i++) {
|
|
69
|
+
const name = manifest[i].name;
|
|
70
|
+
const delimiter = `===PAGE: ${name}===\n`;
|
|
71
|
+
const startIdx = bundle.indexOf(delimiter);
|
|
72
|
+
if (startIdx === -1) {
|
|
73
|
+
return { error: `manifest/bundle mismatch at index ${i}: delimiter for '${name}' not found in bundle` };
|
|
74
|
+
}
|
|
75
|
+
// Verify order: start must be after the end of the previous page's content
|
|
76
|
+
if (i > 0) {
|
|
77
|
+
const prevName = manifest[i - 1].name;
|
|
78
|
+
const prevDelimiter = `===PAGE: ${prevName}===\n`;
|
|
79
|
+
const prevStart = bundle.indexOf(prevDelimiter);
|
|
80
|
+
if (startIdx <= prevStart) {
|
|
81
|
+
return { error: `manifest/bundle mismatch at index ${i}: '${name}' appears before '${prevName}' in bundle` };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const contentStart = startIdx + delimiter.length;
|
|
85
|
+
// Content ends at the next delimiter (or end of bundle)
|
|
86
|
+
let contentEnd = bundle.length;
|
|
87
|
+
if (i + 1 < manifest.length) {
|
|
88
|
+
const nextName = manifest[i + 1].name;
|
|
89
|
+
const nextDelimiter = `\n===PAGE: ${nextName}===\n`;
|
|
90
|
+
const nextIdx = bundle.indexOf(nextDelimiter, contentStart);
|
|
91
|
+
if (nextIdx !== -1) {
|
|
92
|
+
contentEnd = nextIdx;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
result.set(name, bundle.slice(contentStart, contentEnd).trim());
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
export async function pushSessionBundle(drive, input, userId = "") {
|
|
100
|
+
let pageMap;
|
|
101
|
+
let orderedNames;
|
|
102
|
+
const revisionMap = new Map();
|
|
103
|
+
if (input.pages !== undefined) {
|
|
104
|
+
// Pages mode: structured array, no bundle parsing needed
|
|
105
|
+
pageMap = new Map();
|
|
106
|
+
orderedNames = [];
|
|
107
|
+
for (let i = 0; i < input.pages.length; i++) {
|
|
108
|
+
const { name, content, revision } = input.pages[i];
|
|
109
|
+
if (!WIKI_PATH_RE.test(name)) {
|
|
110
|
+
return { ok: false, error: `pages entry ${i} has invalid wiki path: '${name}'` };
|
|
111
|
+
}
|
|
112
|
+
pageMap.set(name, content);
|
|
113
|
+
orderedNames.push(name);
|
|
114
|
+
if (revision !== undefined)
|
|
115
|
+
revisionMap.set(name, revision);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Bundle mode: validate manifest paths, then split bundle by manifest order
|
|
120
|
+
const manifest = input.manifest;
|
|
121
|
+
for (let i = 0; i < manifest.length; i++) {
|
|
122
|
+
const { name } = manifest[i];
|
|
123
|
+
if (!WIKI_PATH_RE.test(name)) {
|
|
124
|
+
return { ok: false, error: `manifest entry ${i} has invalid wiki path: '${name}'` };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const splitResult = splitBundleByManifest(input.bundle, manifest);
|
|
128
|
+
if ("error" in splitResult) {
|
|
129
|
+
return { ok: false, error: splitResult.error };
|
|
130
|
+
}
|
|
131
|
+
pageMap = splitResult;
|
|
132
|
+
orderedNames = manifest.map((e) => e.name);
|
|
133
|
+
}
|
|
134
|
+
// Resolve page limit once for this call. The check is deferred to each new-page create so
|
|
135
|
+
// that updates to existing pages never consume quota.
|
|
136
|
+
const { currentCount: baseCount, limit: subjectLimit } = await resolvePageLimitContext(userId);
|
|
137
|
+
let newCreates = 0;
|
|
138
|
+
let created = 0;
|
|
139
|
+
// Only newly created pages are linted. An update to an existing page cannot
|
|
140
|
+
// invent a path, so linting those would warn on every edit of a legacy-located
|
|
141
|
+
// page — noise that teaches an agent to ignore the field.
|
|
142
|
+
const createdNames = [];
|
|
143
|
+
let updated = 0;
|
|
144
|
+
let skipped = 0;
|
|
145
|
+
const errors = [];
|
|
146
|
+
const conflicts = [];
|
|
147
|
+
const webhookPages = [];
|
|
148
|
+
const pgIndex = getPostgresSearchIndex();
|
|
149
|
+
for (const name of orderedNames) {
|
|
150
|
+
// Skip system files unless includeSystem is set
|
|
151
|
+
if (!input.includeSystem && SYSTEM_FILES.has(name)) {
|
|
152
|
+
skipped++;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const incomingContent = pageMap.get(name);
|
|
156
|
+
if (incomingContent === undefined)
|
|
157
|
+
continue;
|
|
158
|
+
// Cross-account sharing (BRA-381): the authoritative Postgres row is indexed
|
|
159
|
+
// under the true storage owner, not the raw actor — resolve that first so
|
|
160
|
+
// grant-shared pages actually hit the hot path (and the conflict/revision
|
|
161
|
+
// check below) instead of silently falling back to a stale Storage mirror.
|
|
162
|
+
const indexOwner = resolveIndexOwnerSubject(drive, name, userId);
|
|
163
|
+
try {
|
|
164
|
+
// Existence check: DB-primary path checks Postgres first (avoids a Storage
|
|
165
|
+
// round-trip when pgIndex is configured), then falls back to Storage.
|
|
166
|
+
const dbRow = pgIndex.isConfigured()
|
|
167
|
+
? await pgIndex.fetchPageRow(name, indexOwner).catch(() => null)
|
|
168
|
+
: null;
|
|
169
|
+
const storageRow = dbRow
|
|
170
|
+
? null
|
|
171
|
+
: await drive
|
|
172
|
+
.readFile(name)
|
|
173
|
+
.catch((err) => (err instanceof DriveNotFoundError ? null : Promise.reject(err)));
|
|
174
|
+
const existing = dbRow ?? storageRow;
|
|
175
|
+
if (!existing) {
|
|
176
|
+
if (subjectLimit !== null && baseCount + newCreates + 1 > subjectLimit) {
|
|
177
|
+
throw new PageLimitError(baseCount, subjectLimit);
|
|
178
|
+
}
|
|
179
|
+
const parsed = parsePage(incomingContent);
|
|
180
|
+
const revision = crypto
|
|
181
|
+
.createHash("sha256")
|
|
182
|
+
.update(incomingContent, "utf8")
|
|
183
|
+
.digest("hex")
|
|
184
|
+
.slice(0, 16);
|
|
185
|
+
const modifiedTime = new Date().toISOString();
|
|
186
|
+
if (pgIndex.isConfigured()) {
|
|
187
|
+
// DB-primary: Postgres sync so read_page sees the new content immediately;
|
|
188
|
+
// Storage is written behind (fire-and-forget) matching the patchPage pattern.
|
|
189
|
+
await pgIndex.upsertPage(name, parsed.frontmatter, incomingContent, revision, modifiedTime, indexOwner);
|
|
190
|
+
drive.createFile(name, incomingContent).catch((err) => {
|
|
191
|
+
console.warn(`[write-behind] Storage create failed for '${name}':`, err instanceof Error ? err.message : err);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// Storage-primary fallback: Storage sync, Postgres best-effort.
|
|
196
|
+
await drive.createFile(name, incomingContent);
|
|
197
|
+
pgIndex.upsertPage(name, parsed.frontmatter, incomingContent, revision, modifiedTime, indexOwner).catch(() => { });
|
|
198
|
+
}
|
|
199
|
+
created++;
|
|
200
|
+
createdNames.push(name);
|
|
201
|
+
newCreates++;
|
|
202
|
+
webhookPages.push({
|
|
203
|
+
name,
|
|
204
|
+
event: "create",
|
|
205
|
+
title: String(parsed.frontmatter.title ?? name),
|
|
206
|
+
tags: parsed.frontmatter.tags ?? [],
|
|
207
|
+
summary: String(parsed.frontmatter.summary ?? ""),
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
else if (existing.content.trim() === incomingContent) {
|
|
211
|
+
skipped++;
|
|
212
|
+
}
|
|
213
|
+
else if (revisionMap.has(name) && existing.revision !== revisionMap.get(name)) {
|
|
214
|
+
// Someone else wrote this page after our caller last read it (pull_session_bundle
|
|
215
|
+
// or read_page) and before this push — do not blindly overwrite their change.
|
|
216
|
+
conflicts.push({
|
|
217
|
+
path: name,
|
|
218
|
+
reason: "Page was modified by someone else since your last read. Call read_page to see the current content, then re-push with the new revision or a merged version.",
|
|
219
|
+
yourRevision: revisionMap.get(name),
|
|
220
|
+
currentRevision: existing.revision,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
else if (input.conflictStrategy === "skip") {
|
|
224
|
+
skipped++;
|
|
225
|
+
}
|
|
226
|
+
else if (input.conflictStrategy === "error") {
|
|
227
|
+
errors.push({ path: name, reason: "File already exists and conflictStrategy is 'error'" });
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// overwrite
|
|
231
|
+
const parsed = parsePage(incomingContent);
|
|
232
|
+
const revision = crypto
|
|
233
|
+
.createHash("sha256")
|
|
234
|
+
.update(incomingContent, "utf8")
|
|
235
|
+
.digest("hex")
|
|
236
|
+
.slice(0, 16);
|
|
237
|
+
const modifiedTime = new Date().toISOString();
|
|
238
|
+
if (pgIndex.isConfigured()) {
|
|
239
|
+
// DB-primary: Postgres sync, Storage write-behind.
|
|
240
|
+
await pgIndex.upsertPage(name, parsed.frontmatter, incomingContent, revision, modifiedTime, indexOwner);
|
|
241
|
+
drive.updateFile(existing.fileId, incomingContent, "").catch((err) => {
|
|
242
|
+
console.warn(`[write-behind] Storage update failed for '${name}':`, err instanceof Error ? err.message : err);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Storage-primary fallback: Storage sync, Postgres best-effort.
|
|
247
|
+
await drive.updateFile(existing.fileId, incomingContent, existing.revision);
|
|
248
|
+
pgIndex.upsertPage(name, parsed.frontmatter, incomingContent, revision, modifiedTime, indexOwner).catch(() => { });
|
|
249
|
+
}
|
|
250
|
+
updated++;
|
|
251
|
+
webhookPages.push({
|
|
252
|
+
name,
|
|
253
|
+
event: "update",
|
|
254
|
+
title: String(parsed.frontmatter.title ?? name),
|
|
255
|
+
tags: parsed.frontmatter.tags ?? [],
|
|
256
|
+
summary: String(parsed.frontmatter.summary ?? ""),
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
errors.push({
|
|
262
|
+
path: name,
|
|
263
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Dispatch outbound webhooks — fire-and-forget, one POST per matching rule
|
|
268
|
+
if (webhookPages.length > 0) {
|
|
269
|
+
dispatchBundleWebhooks(userId, webhookPages);
|
|
270
|
+
}
|
|
271
|
+
const layoutWarnings = lintLayoutMany(createdNames);
|
|
272
|
+
return {
|
|
273
|
+
ok: errors.length === 0 && conflicts.length === 0,
|
|
274
|
+
created,
|
|
275
|
+
updated,
|
|
276
|
+
skipped,
|
|
277
|
+
errors,
|
|
278
|
+
...(conflicts.length > 0 ? { conflicts } : {}),
|
|
279
|
+
...(layoutWarnings.length > 0 ? { layoutWarnings } : {}),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=pushSessionBundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pushSessionBundle.js","sourceRoot":"","sources":["../../src/tools/pushSessionBundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const readGovernanceAuditInputSchema: z.ZodObject<{
|
|
3
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
limit: number;
|
|
6
|
+
}, {
|
|
7
|
+
limit?: number | undefined;
|
|
8
|
+
}>;
|
|
9
|
+
export type ReadGovernanceAuditInput = z.infer<typeof readGovernanceAuditInputSchema>;
|
|
10
|
+
/**
|
|
11
|
+
* Read governance audit log entries.
|
|
12
|
+
*
|
|
13
|
+
* Returns filtered-content audit events for classification review.
|
|
14
|
+
* Only accessible to exec+ users (access_level ≥ 4) when Hive mode is enabled.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readGovernanceAudit(input: ReadGovernanceAuditInput, userId: string): Promise<object>;
|
|
17
|
+
//# sourceMappingURL=readGovernanceAudit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readGovernanceAudit.d.ts","sourceRoot":"","sources":["../../src/tools/readGovernanceAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B;;;;;;EAQzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,EAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { readGovernanceAuditLog } from "../governance/accessControl.js";
|
|
3
|
+
export const readGovernanceAuditInputSchema = z.object({
|
|
4
|
+
limit: z
|
|
5
|
+
.number()
|
|
6
|
+
.int()
|
|
7
|
+
.min(1)
|
|
8
|
+
.max(500)
|
|
9
|
+
.default(100)
|
|
10
|
+
.describe("Maximum number of audit log entries to return (1–500). Ordered newest-first."),
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Read governance audit log entries.
|
|
14
|
+
*
|
|
15
|
+
* Returns filtered-content audit events for classification review.
|
|
16
|
+
* Only accessible to exec+ users (access_level ≥ 4) when Hive mode is enabled.
|
|
17
|
+
*/
|
|
18
|
+
export async function readGovernanceAudit(input, userId) {
|
|
19
|
+
return readGovernanceAuditLog(userId, input.limit);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=readGovernanceAudit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readGovernanceAudit.js","sourceRoot":"","sources":["../../src/tools/readGovernanceAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,GAAG,CAAC;SACZ,QAAQ,CAAC,8EAA8E,CAAC;CAC5F,CAAC,CAAC;AAIH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA+B,EAC/B,MAAc;IAEd,OAAO,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type StorageClient } from "../storage/client.js";
|
|
3
|
+
import { type AccessContext } from "../governance/accessControl.js";
|
|
4
|
+
export declare const readPageInputSchema: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
name: string;
|
|
8
|
+
}, {
|
|
9
|
+
name: string;
|
|
10
|
+
}>;
|
|
11
|
+
export type ReadPageInput = z.infer<typeof readPageInputSchema>;
|
|
12
|
+
export declare function readPage(drive: StorageClient, input: ReadPageInput, userId?: string, accessCtx?: AccessContext): Promise<object>;
|
|
13
|
+
//# sourceMappingURL=readPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readPage.d.ts","sourceRoot":"","sources":["../../src/tools/readPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAKpF,OAAO,EACL,KAAK,aAAa,EAOnB,MAAM,gCAAgC,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,aAAa,EACpB,MAAM,SAAK,EACX,SAAS,GAAE,aAAsC,GAChD,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { resolveIndexOwnerSubject } from "../storage/client.js";
|
|
3
|
+
import { parsePage } from "../wiki/frontmatter.js";
|
|
4
|
+
import { DrivePermissionError } from "../drive/errors.js";
|
|
5
|
+
import { getPostgresSearchIndex } from "../search/postgresIndex.js";
|
|
6
|
+
import { extractWikiLinks } from "../wiki/links.js";
|
|
7
|
+
import { DEFAULT_ACCESS_CONTEXT, isHiveModeEnabled, parseAccessLevel, parseAudience, pagePassesFilter, writeGovernanceAuditEntry, } from "../governance/accessControl.js";
|
|
8
|
+
export const readPageInputSchema = z.object({
|
|
9
|
+
name: z.string().describe("Relative path of the page to read (e.g. 'projects/topic.md')"),
|
|
10
|
+
});
|
|
11
|
+
export async function readPage(drive, input, userId = "", accessCtx = DEFAULT_ACCESS_CONTEXT) {
|
|
12
|
+
const name = input.name.endsWith(".md") ? input.name : `${input.name}.md`;
|
|
13
|
+
// Hot path: serve from DB row (skips Supabase Storage round-trip).
|
|
14
|
+
// Falls back to Storage when not configured or row not found.
|
|
15
|
+
const pgIndex = getPostgresSearchIndex();
|
|
16
|
+
// Cross-account sharing (BRA-381): the DB row (if any) is indexed under the
|
|
17
|
+
// true storage owner, not the raw authenticated actor — resolve that first
|
|
18
|
+
// so the hot path actually hits for shared content instead of silently
|
|
19
|
+
// falling back to a Storage read every time.
|
|
20
|
+
const indexOwner = resolveIndexOwnerSubject(drive, name, userId);
|
|
21
|
+
const dbRow = await pgIndex.fetchPageRow(name, indexOwner).catch(() => null);
|
|
22
|
+
const file = dbRow ?? await drive.readFile(name);
|
|
23
|
+
const { frontmatter, content, warnings } = parsePage(file.content);
|
|
24
|
+
const outboundLinkCount = pgIndex.isConfigured()
|
|
25
|
+
? await pgIndex.getOutboundLinkCount(name, indexOwner).catch(() => extractWikiLinks(name, content).length)
|
|
26
|
+
: extractWikiLinks(name, content).length;
|
|
27
|
+
if (isHiveModeEnabled()) {
|
|
28
|
+
const pageLevel = parseAccessLevel(frontmatter.access_level);
|
|
29
|
+
const pageAudience = parseAudience(frontmatter.audience);
|
|
30
|
+
if (!pagePassesFilter(pageLevel, pageAudience, accessCtx.userAccessLevel, accessCtx.sessionAudience)) {
|
|
31
|
+
writeGovernanceAuditEntry(userId, name, pageLevel, accessCtx.userAccessLevel, accessCtx.sessionAudience, pageLevel > accessCtx.userAccessLevel ? "access_level_exceeded" : "audience_mismatch");
|
|
32
|
+
throw new DrivePermissionError(`Page '${name}' requires access level ${pageLevel}; your level is ${accessCtx.userAccessLevel}.`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
name: file.name,
|
|
37
|
+
fileId: file.fileId,
|
|
38
|
+
revision: file.revision,
|
|
39
|
+
frontmatter,
|
|
40
|
+
content,
|
|
41
|
+
outbound_link_count: outboundLinkCount,
|
|
42
|
+
modifiedTime: file.modifiedTime,
|
|
43
|
+
warnings: warnings.map((w) => ({ field: w.field, message: w.message })),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=readPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readPage.js","sourceRoot":"","sources":["../../src/tools/readPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const removeWebhookInputSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
id: string;
|
|
6
|
+
}, {
|
|
7
|
+
id: string;
|
|
8
|
+
}>;
|
|
9
|
+
export type RemoveWebhookInput = z.infer<typeof removeWebhookInputSchema>;
|
|
10
|
+
export declare function removeWebhook(input: RemoveWebhookInput, userId: string): Promise<{
|
|
11
|
+
deleted: boolean;
|
|
12
|
+
id: string;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=removeWebhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeWebhook.d.ts","sourceRoot":"","sources":["../../src/tools/removeWebhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAIxH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { deleteWebhookRule } from "../webhooks/webhookRules.js";
|
|
3
|
+
export const removeWebhookInputSchema = z.object({
|
|
4
|
+
id: z.string().uuid().describe("ID of the webhook rule to delete"),
|
|
5
|
+
});
|
|
6
|
+
export async function removeWebhook(input, userId) {
|
|
7
|
+
if (!userId)
|
|
8
|
+
throw new Error("userId is required to manage webhook rules");
|
|
9
|
+
const deleted = await deleteWebhookRule(input.id, userId);
|
|
10
|
+
return { deleted, id: input.id };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=removeWebhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeWebhook.js","sourceRoot":"","sources":["../../src/tools/removeWebhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACnE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB,EAAE,MAAc;IAC3E,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACnC,CAAC"}
|