brains-mcp 1.65.1 → 1.65.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.
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Bounded-retry helper for fire-and-forget write-behind flushes (GH #547).
3
+ * Mirrors the maxAttempts=3 exponential-backoff shape of drive/client.ts's
4
+ * withRetry, but generic and with an injectable sleep for tests.
5
+ */
6
+ export declare const STORAGE_WRITE_BEHIND_FAILED = "STORAGE_WRITE_BEHIND_FAILED";
7
+ export interface BoundedRetryOptions {
8
+ maxAttempts?: number;
9
+ baseDelayMs?: number;
10
+ sleep?: (ms: number) => Promise<void>;
11
+ }
12
+ /**
13
+ * Retry `fn` up to `maxAttempts` times with bounded exponential backoff
14
+ * (baseDelayMs * 2^attempt between attempts). Rethrows the last error once
15
+ * attempts are exhausted.
16
+ */
17
+ export declare function withBoundedRetry<T>(fn: () => Promise<T>, options?: BoundedRetryOptions): Promise<T>;
18
+ /**
19
+ * Fire-and-forget write-behind flush with bounded retry. Never rejects: on
20
+ * exhaustion it emits a terminal, greppable STORAGE_WRITE_BEHIND_FAILED log
21
+ * (page name + attempt count) instead of leaving the drift silent.
22
+ */
23
+ export declare function flushWithRetry(fn: () => Promise<unknown>, pageName: string, options?: BoundedRetryOptions): Promise<void>;
24
+ //# sourceMappingURL=writeBehindRetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeBehindRetry.d.ts","sourceRoot":"","sources":["../../src/storage/writeBehindRetry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,2BAA2B,gCAAgC,CAAC;AASzE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Bounded-retry helper for fire-and-forget write-behind flushes (GH #547).
3
+ * Mirrors the maxAttempts=3 exponential-backoff shape of drive/client.ts's
4
+ * withRetry, but generic and with an injectable sleep for tests.
5
+ */
6
+ export const STORAGE_WRITE_BEHIND_FAILED = "STORAGE_WRITE_BEHIND_FAILED";
7
+ const DEFAULT_MAX_ATTEMPTS = 3;
8
+ const DEFAULT_BASE_DELAY_MS = 500;
9
+ function defaultSleep(ms) {
10
+ return new Promise((resolve) => setTimeout(resolve, ms));
11
+ }
12
+ /**
13
+ * Retry `fn` up to `maxAttempts` times with bounded exponential backoff
14
+ * (baseDelayMs * 2^attempt between attempts). Rethrows the last error once
15
+ * attempts are exhausted.
16
+ */
17
+ export async function withBoundedRetry(fn, options = {}) {
18
+ const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
19
+ const baseDelayMs = options.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
20
+ const sleep = options.sleep ?? defaultSleep;
21
+ let lastError;
22
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
23
+ try {
24
+ return await fn();
25
+ }
26
+ catch (err) {
27
+ lastError = err;
28
+ if (attempt < maxAttempts) {
29
+ await sleep(baseDelayMs * 2 ** (attempt - 1));
30
+ }
31
+ }
32
+ }
33
+ throw lastError;
34
+ }
35
+ /**
36
+ * Fire-and-forget write-behind flush with bounded retry. Never rejects: on
37
+ * exhaustion it emits a terminal, greppable STORAGE_WRITE_BEHIND_FAILED log
38
+ * (page name + attempt count) instead of leaving the drift silent.
39
+ */
40
+ export async function flushWithRetry(fn, pageName, options = {}) {
41
+ const maxAttempts = options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS;
42
+ try {
43
+ await withBoundedRetry(fn, options);
44
+ }
45
+ catch (err) {
46
+ console.error(`[${STORAGE_WRITE_BEHIND_FAILED}] page=${pageName} attempts=${maxAttempts}:`, err instanceof Error ? err.message : err);
47
+ }
48
+ }
49
+ //# sourceMappingURL=writeBehindRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeBehindRetry.js","sourceRoot":"","sources":["../../src/storage/writeBehindRetry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAoB,EACpB,UAA+B,EAAE;IAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAE5C,IAAI,SAAkB,CAAC;IACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAChB,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAA0B,EAC1B,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,IAAI,2BAA2B,UAAU,QAAQ,aAAa,WAAW,GAAG,EAC5E,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createPage.d.ts","sourceRoot":"","sources":["../../src/tools/createPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAWpF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAqFjB"}
1
+ {"version":3,"file":"createPage.d.ts","sourceRoot":"","sources":["../../src/tools/createPage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAapF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAqIjB"}
@@ -1,3 +1,4 @@
1
+ import crypto from "crypto";
1
2
  import { z } from "zod";
2
3
  import { resolveIndexOwnerSubject } from "../storage/client.js";
3
4
  import { buildNewPage, parsePage } from "../wiki/frontmatter.js";
@@ -9,6 +10,8 @@ import { appendLogEntry } from "../wiki/log.js";
9
10
  import { getPostgresSearchIndex } from "../search/postgresIndex.js";
10
11
  import { assertWithinLimits, assertPageLimit, assertPageSize } from "../wiki/storageLimits.js";
11
12
  import { dispatchPageWebhook } from "../webhooks/dispatch.js";
13
+ import { flushWithRetry } from "../storage/writeBehindRetry.js";
14
+ import { DrivePermissionError } from "../drive/errors.js";
12
15
  export const createPageInputSchema = z.object({
13
16
  name: z
14
17
  .string()
@@ -34,16 +37,52 @@ export async function createPage(drive, input, userId = "") {
34
37
  tags: input.tags,
35
38
  body: input.body,
36
39
  });
37
- const writeResult = await drive.createFile(normalizedName, content);
38
40
  const pgIndex = getPostgresSearchIndex();
39
41
  // Cross-account sharing (BRA-381): attribute index/webhook writes to the
40
42
  // true storage owner, not the raw authenticated actor — otherwise a grant
41
43
  // owner never sees a grantee's contributions via list_pages/search_pages.
42
44
  const indexOwner = resolveIndexOwnerSubject(drive, normalizedName, userId);
43
- // Update Postgres index — best-effort. Stores the FULL serialized content
44
- // (frontmatter included), matching patchPage.ts's DB-primary convention —
45
- // read_page/patch_page read this column back as the complete file.
46
- pgIndex.upsertPage(normalizedName, parsedFrontmatter, content, writeResult.revision, writeResult.modifiedTime, indexOwner).catch(() => { });
45
+ let writeResult;
46
+ if (pgIndex.isConfigured()) {
47
+ // DB-primary write (GH #548), matching patch_page/update_page's
48
+ // convention: Postgres is what read_page/search actually read from, so
49
+ // it must be the write of record, with Storage as an eventually
50
+ // consistent write-behind mirror. casInsertPage is a conditional insert
51
+ // (INSERT ... ON CONFLICT DO NOTHING) — it reports false rather than
52
+ // clobbering a row a concurrent create already landed, which is the
53
+ // DB-primary analogue of Storage's exclusive-create ("wx" flag) check
54
+ // that this write path no longer performs synchronously.
55
+ const revision = crypto.createHash("sha256").update(content, "utf8").digest("hex").slice(0, 16);
56
+ const modifiedTime = new Date().toISOString();
57
+ const casApplied = await pgIndex.casInsertPage(normalizedName, parsedFrontmatter, content, revision, modifiedTime, indexOwner);
58
+ if (!casApplied) {
59
+ throw new DrivePermissionError(`File '${normalizedName}' already exists. Use update_page instead.`);
60
+ }
61
+ writeResult = { fileId: normalizedName, revision, modifiedTime };
62
+ // Write-behind: keep the Storage mirror eventually consistent
63
+ // (non-blocking). Retries transient failures with bounded backoff off
64
+ // this synchronous path; on exhaustion it logs a terminal
65
+ // STORAGE_WRITE_BEHIND_FAILED signal instead of letting the mirror
66
+ // silently drift (GH #547).
67
+ //
68
+ // The DB row is what "already exists" means now, so casInsertPage above
69
+ // can win even when Storage already has an unindexed object at this path
70
+ // (a legacy write audit_index hasn't reconciled yet). A bare createFile
71
+ // there throws EEXIST forever and the mirror never converges — fall back
72
+ // to an overwrite so the DB row (source of truth) wins.
73
+ flushWithRetry(() => drive.createFile(normalizedName, content).catch((err) => {
74
+ if (err instanceof DrivePermissionError) {
75
+ return drive.updateFile(normalizedName, content, "");
76
+ }
77
+ throw err;
78
+ }), normalizedName);
79
+ }
80
+ else {
81
+ // Storage-primary fallback when Postgres isn't configured.
82
+ const storageResult = await drive.createFile(normalizedName, content);
83
+ writeResult = storageResult;
84
+ pgIndex.upsertPage(normalizedName, parsedFrontmatter, content, storageResult.revision, storageResult.modifiedTime, indexOwner).catch(() => { });
85
+ }
47
86
  // Fire-and-forget: the link graph is a derived index, and nothing in this
48
87
  // response depends on it. Awaiting it put three sequential Supabase round
49
88
  // trips (~350-525ms) on the caller's critical path purely to decide whether
@@ -1 +1 @@
1
- {"version":3,"file":"createPage.js","sourceRoot":"","sources":["../../src/tools/createPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createPage.js","sourceRoot":"","sources":["../../src/tools/createPage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"patchPage.d.ts","sourceRoot":"","sources":["../../src/tools/patchPage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AA6CpF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,wBAAsB,SAAS,CAC7B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,cAAc,EACrB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CA6JjB"}
1
+ {"version":3,"file":"patchPage.d.ts","sourceRoot":"","sources":["../../src/tools/patchPage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AA8CpF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,wBAAsB,SAAS,CAC7B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,cAAc,EACrB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAiKjB"}
@@ -10,6 +10,7 @@ import { normalizeWikiPath } from "../wiki/path.js";
10
10
  import { DriveConflictError } from "../drive/errors.js";
11
11
  import { dispatchPageWebhook } from "../webhooks/dispatch.js";
12
12
  import { snapshotPage } from "./pageHistory.js";
13
+ import { flushWithRetry } from "../storage/writeBehindRetry.js";
13
14
  const patchOperationSchema = z.discriminatedUnion("type", [
14
15
  z.object({
15
16
  type: z.literal("insert_after"),
@@ -137,10 +138,11 @@ export async function patchPage(drive, input, userId = "") {
137
138
  }
138
139
  // Version snapshot — fire-and-forget, off the synchronous path
139
140
  snapshotPage(drive, normalizedName, existing.content).catch(() => { });
140
- // Write-behind: keep Storage mirror eventually consistent (non-blocking)
141
- drive.updateFile(normalizedName, nextContent, "").catch((err) => {
142
- console.warn(`[write-behind] Storage flush failed for '${normalizedName}':`, err instanceof Error ? err.message : err);
143
- });
141
+ // Write-behind: keep Storage mirror eventually consistent (non-blocking).
142
+ // Retries transient failures with bounded backoff off this synchronous
143
+ // path; on exhaustion it logs a terminal STORAGE_WRITE_BEHIND_FAILED
144
+ // signal instead of letting the mirror silently drift (GH #547).
145
+ flushWithRetry(() => drive.updateFile(normalizedName, nextContent, ""), normalizedName);
144
146
  }
145
147
  else {
146
148
  const result = applyOperations(existing.content, input.operations);
@@ -1 +1 @@
1
- {"version":3,"file":"patchPage.js","sourceRoot":"","sources":["../../src/tools/patchPage.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsB,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,oBAAoB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACnD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACnD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAChC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACxB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CAAC,4EAA4E,CAAC;KAC1F,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;IAC1G,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CACP,4UAA4U,CAC7U;IACH,cAAc,EAAE,CAAC;SACd,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;QACpB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IACE,UAAU,KAAK,MAAM;YACrB,UAAU,KAAK,mBAAmB;YAClC,UAAU,KAAK,mBAAmB;YAClC,UAAU,KAAK,WAAW;YAC1B,UAAU,KAAK,WAAW,EAC1B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SACnB,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,gIAAgI,CAAC;IAC7I,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;CAC/D,CAAC,CAAC;AAKH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAoB,EACpB,KAAqB,EACrB,MAAM,GAAG,EAAE;IAEX,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACzC,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAE3E,iEAAiE;QACjE,2EAA2E;QAC3E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE/D,IAAI,WAAoB,CAAC;QACzB,IAAI,OAAgD,CAAC;QACrD,IAAI,MAAqC,CAAC;QAC1C,IAAI,QAAiB,CAAC;QACtB,IAAI,YAAqB,CAAC;QAE1B,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YAC3B,mEAAmE;YACnE,mEAAmE;YACnE,sEAAsE;YACtE,qEAAqE;YACrE,sDAAsD;YACtD,EAAE;YACF,sEAAsE;YACtE,iEAAiE;YACjE,sEAAsE;YACtE,6DAA6D;YAC7D,qEAAqE;YACrE,mEAAmE;YACnE,IAAI,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;YACtC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,MAAM,WAAW,GAAG,CAAC,CAAC;YAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBACjE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC7B,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBACzB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;gBACpD,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;gBAChC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9F,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAExC,UAAU,GAAG,UAAU;oBACrB,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CACzB,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,EAC/C,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CACxD;oBACH,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,CACzB,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,EAC/C,QAAQ,EAAE,YAAY,EAAE,UAAU,CACnC,CAAC;gBACN,IAAI,UAAU;oBAAE,MAAM;gBAEtB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvF,IAAI,CAAC,KAAK;oBAAE,MAAM;gBAClB,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC/B,UAAU,GAAG,KAAK,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,+IAA+I;oBACvJ,YAAY,EAAE,KAAK,EAAE,QAAQ,IAAI,EAAE;oBACnC,eAAe,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE;iBAC5C,CAAC;YACJ,CAAC;YAED,+DAA+D;YAC/D,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;YACvF,yEAAyE;YACzE,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9D,OAAO,CAAC,IAAI,CAAC,4CAA4C,cAAc,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACnE,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACpD,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YAEhC,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;YAEvF,oDAAoD;YACpD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5F,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YAChC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YACxC,2DAA2D;YAC3D,OAAO,CAAC,UAAU,CAChB,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAClD,QAAQ,EAAE,YAAY,EAAE,UAAU,CACnC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,sEAAsE;QACtE,0DAA0D;QAC1D,OAAO;aACJ,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC;aACzD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,4BAA4B,cAAc,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxG,CAAC,CAAC,CAAC;QAEL,gBAAgB,CAAC,KAAK,EAAE;YACtB,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,cAAc,CAAC;YACzD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;YAClE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAC/C,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;QAEpC,cAAc,CAAC,KAAK,EAAE;YACpB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,cAAc,CAAC;YACzD,MAAM,EAAE,WAAW,cAAc,EAAE;SACpC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3B,+DAA+D;YAC/D,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,uEAAuE;QACvE,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE;YACxC,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,cAAc,CAAC;YACzD,IAAI,EAAG,MAAM,CAAC,WAAW,CAAC,IAA6B,IAAI,EAAE;YAC7D,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;YAClE,EAAE,EAAE,YAAY;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ;YACR,YAAY;YACZ,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC;YACpD,OAAO;SACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,YAAY,kBAAkB,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,MAAM,aAAa,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,OAAe,EACf,UAA4B;IAE5B,IAAI,OAAO,GAAG,OAAO,CAAC;IACtB,MAAM,OAAO,GAA2C,EAAE,CAAC;IAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,qCAAqC,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1G,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,sCAAsC,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,wCAAwC,CAAC,CAAC;gBAC/F,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1C,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,mCAAmC,CAAC,CAAC;YAC1F,CAAC;YACD,OAAO,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAChC,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,MAAc,EAAE,UAAkB;IAC1E,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,IAAY,EACZ,cAAsB;IAEtB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,kCAAkC,cAAc,gCAAgC,CACjF,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,kCAAkC,cAAc,gBAAgB,SAAS,IAAI,OAAO,qBAAqB,KAAK,CAAC,MAAM,GAAG,CACzH,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"patchPage.js","sourceRoot":"","sources":["../../src/tools/patchPage.ts"],"names":[],"mappings":"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"}
@@ -2,23 +2,23 @@ import { z } from "zod";
2
2
  import { type StorageClient } from "../storage/client.js";
3
3
  export declare const updatePageInputSchema: z.ZodObject<{
4
4
  name: z.ZodString;
5
- fileId: z.ZodString;
5
+ fileId: z.ZodOptional<z.ZodString>;
6
6
  revision: z.ZodString;
7
7
  body: z.ZodString;
8
8
  frontmatterPatch: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, unknown>, unknown>>;
9
9
  summary: z.ZodOptional<z.ZodString>;
10
10
  }, "strip", z.ZodTypeAny, {
11
- fileId: string;
12
11
  body: string;
13
12
  name: string;
14
13
  revision: string;
14
+ fileId?: string | undefined;
15
15
  summary?: string | undefined;
16
16
  frontmatterPatch?: Record<string, unknown> | undefined;
17
17
  }, {
18
- fileId: string;
19
18
  body: string;
20
19
  name: string;
21
20
  revision: string;
21
+ fileId?: string | undefined;
22
22
  summary?: string | undefined;
23
23
  frontmatterPatch?: unknown;
24
24
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"updatePage.d.ts","sourceRoot":"","sources":["../../src/tools/updatePage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAYpF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAYhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAoHjB"}
1
+ {"version":3,"file":"updatePage.d.ts","sourceRoot":"","sources":["../../src/tools/updatePage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,aAAa,EAA4B,MAAM,sBAAsB,CAAC;AAapF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAiBhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAsB,UAAU,CAC9B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,SAAK,GACV,OAAO,CAAC,MAAM,CAAC,CAiLjB"}
@@ -1,3 +1,4 @@
1
+ import crypto from "crypto";
1
2
  import { z } from "zod";
2
3
  import { resolveIndexOwnerSubject } from "../storage/client.js";
3
4
  import { parsePage, serializePage } from "../wiki/frontmatter.js";
@@ -10,9 +11,13 @@ import { assertPageSize } from "../wiki/storageLimits.js";
10
11
  import { tryParseJson } from "./coerce.js";
11
12
  import { dispatchPageWebhook } from "../webhooks/dispatch.js";
12
13
  import { snapshotPage } from "./pageHistory.js";
14
+ import { flushWithRetry } from "../storage/writeBehindRetry.js";
13
15
  export const updatePageInputSchema = z.object({
14
16
  name: z.string().describe("Relative path of the page to update (e.g. 'projects/my-topic.md')"),
15
- fileId: z.string().describe("Drive file ID — must match the file you read"),
17
+ fileId: z
18
+ .string()
19
+ .optional()
20
+ .describe("Optional integrity check: when supplied, validated against the file ID on the row you read. Omit if you don't have it."),
16
21
  revision: z
17
22
  .string()
18
23
  .describe("Revision from your last read_page call — used for conflict detection"),
@@ -46,6 +51,23 @@ export async function updatePage(drive, input, userId = "") {
46
51
  currentRevision: dbRow.revision,
47
52
  };
48
53
  }
54
+ // fileId is optional and, when supplied, is validated against the DB row
55
+ // rather than trusted (GH #548). A row with no fileId recorded (Postgres
56
+ // not configured, or no row yet) has nothing to validate against — skip
57
+ // rather than block a legitimate write. A mismatch means the caller read a
58
+ // different file than the one it's about to overwrite; that's exactly the
59
+ // corruption this parameter exists to catch, so refuse with a structured
60
+ // error rather than throwing or silently proceeding.
61
+ if (input.fileId !== undefined && dbRow && dbRow.fileId !== input.fileId) {
62
+ return {
63
+ success: false,
64
+ fileIdMismatch: true,
65
+ name: normalizedName,
66
+ reason: "Supplied fileId does not match the file this page's current DB row points to. Call read_page again and retry with the fileId (or omit it) from the fresh read.",
67
+ yourFileId: input.fileId,
68
+ currentFileId: dbRow.fileId,
69
+ };
70
+ }
49
71
  const { frontmatter } = parsePage(existing.content);
50
72
  const mergedFrontmatter = {
51
73
  ...frontmatter,
@@ -64,16 +86,47 @@ export async function updatePage(drive, input, userId = "") {
64
86
  // will see afterward (GH #464).
65
87
  const { warnings } = parsePage(newContent);
66
88
  await snapshotPage(drive, normalizedName, existing.content);
67
- const writeResult = await drive.updateFile(input.fileId, newContent, input.revision);
68
- // Update Postgres index — awaited. Stores the FULL serialized content
69
- // (frontmatter included), matching patchPage.ts's DB-primary convention
70
- // read_page/patch_page read this column back as the complete file. Postgres
71
- // is the row callers actually read from (dbRow above), so this must land
72
- // before we report success a fire-and-forget here let read_page serve
73
- // stale pre-update content immediately after a "successful" write (GH #532).
74
- await pgIndex.upsertPage(normalizedName, mergedFrontmatter, newContent, writeResult.revision, writeResult.modifiedTime, indexOwner).catch((err) => {
75
- console.warn(`[index] upsert failed for '${normalizedName}':`, err instanceof Error ? err.message : err);
76
- });
89
+ let writeResult;
90
+ if (pgIndex.isConfigured()) {
91
+ // DB-primary write (GH #548), matching patch_page's convention: Postgres
92
+ // is what read_page/patch_page actually read from, so it must be the
93
+ // write of record. The revision check above is only an optimistic
94
+ // pre-check with a window for a concurrent writer to land in between —
95
+ // this compare-and-swap is what actually enforces it atomically. No
96
+ // retry-with-reapply loop like patch_page's: input.body is a full
97
+ // replacement the caller already decided on, so a losing CAS is reported
98
+ // as a conflict rather than blindly retried against fresh content.
99
+ const newRevision = crypto.createHash("sha256").update(newContent, "utf8").digest("hex").slice(0, 16);
100
+ const modifiedTime = new Date().toISOString();
101
+ const casApplied = dbRow
102
+ ? await pgIndex.casUpdatePage(normalizedName, mergedFrontmatter, newContent, dbRow.revision, newRevision, modifiedTime, indexOwner)
103
+ : await pgIndex.casInsertPage(normalizedName, mergedFrontmatter, newContent, newRevision, modifiedTime, indexOwner);
104
+ if (!casApplied) {
105
+ return {
106
+ success: false,
107
+ conflict: true,
108
+ name: normalizedName,
109
+ reason: "Page was modified by someone else while this update was being applied. Call read_page again to see the current content, then retry with the new revision.",
110
+ yourRevision: input.revision,
111
+ currentRevision: (await pgIndex.fetchPageRow(normalizedName, indexOwner).catch(() => null))?.revision ?? "",
112
+ };
113
+ }
114
+ writeResult = { fileId: normalizedName, revision: newRevision, modifiedTime };
115
+ // Write-behind: keep the Storage mirror eventually consistent
116
+ // (non-blocking). Retries transient failures with bounded backoff off
117
+ // this synchronous path; on exhaustion it logs a terminal
118
+ // STORAGE_WRITE_BEHIND_FAILED signal instead of letting the mirror
119
+ // silently drift (GH #547). The page already exists in Storage (this is
120
+ // an update, not a create), so updateFile — not createFile — is correct
121
+ // here even on the "no DB row yet" branch above.
122
+ flushWithRetry(() => drive.updateFile(normalizedName, newContent, ""), normalizedName);
123
+ }
124
+ else {
125
+ // Storage-primary fallback when Postgres isn't configured.
126
+ const storageResult = await drive.updateFile(input.fileId ?? normalizedName, newContent, input.revision);
127
+ writeResult = storageResult;
128
+ pgIndex.upsertPage(normalizedName, mergedFrontmatter, newContent, storageResult.revision, storageResult.modifiedTime, indexOwner).catch(() => { });
129
+ }
77
130
  // Fire-and-forget: the link graph is a derived index, and nothing in this
78
131
  // response depends on it. Awaiting it put three sequential Supabase round
79
132
  // trips (~350-525ms) on the caller's critical path purely to decide whether
@@ -1 +1 @@
1
- {"version":3,"file":"updatePage.js","sourceRoot":"","sources":["../../src/tools/updatePage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updatePage.js","sourceRoot":"","sources":["../../src/tools/updatePage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "brains-mcp",
3
3
  "mcpName": "io.github.spacecowboyian/brains",
4
- "version": "1.65.1",
4
+ "version": "1.65.3",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/spacecowboyian/brains.git"